diff --git a/files/galaxy-re.grid.cesnet.cz/README b/files/galaxy-re.grid.cesnet.cz/README new file mode 100644 index 00000000..28b14e04 --- /dev/null +++ b/files/galaxy-re.grid.cesnet.cz/README @@ -0,0 +1,120 @@ +# usegalaxy + +Simple galaxy installation steps. + +On fresh install of ubuntu: +``` +sudo apt-get update +sudo apt-get upgrade -y +sudo apt update +sudo apt upgrade -y +sudo apt install -y software-properties-common +sudo apt-add-repository --yes --update ppa:ansible/ansible +sudo apt install -y ansible +``` + +Clone the repo and instal required galaxy roles. +``` +git clone https://github.com/CESNET/usegalaxy.git +cd usegalaxy +ansible-galaxy install -p roles -r requirements.yml +``` +Note that the roles are already present in this repo. + +After the instalation, you should configure your [inventory file](https://training.galaxyproject.org/training-material/topics/admin/tutorials/ansible/tutorial.html#inventory-file) ([hosts](https://github.com/CESNET/usegalaxy/blob/main/hosts)) and set up a vault: +``` +openssl rand -base64 24 > .vault-password.txt +ansible-vault create group_vars/secret.yml +``` +The second command opens an editor wherein you should define variables eg.: +``` +vault_id_secret: "a-long-random-value" +rabbitmq_users_password: + mqadmin: "a-long-random-value" + galaxy: "a-long-random-value" + galaxy_gpu: "a-long-random-value" +``` +The value should be a long random value, which can be obtained by command `openssl rand -base64 24`, though you should avoid having a `/` or `\` in your password as galaxy will interpret this as a path. + +Make sure you have these ports enabled on your machine: +``` +80(HTTP) +443(HTTPS) +4369(TCP) +5671(TCP) +15672(TCP) +25672(TCP) +``` + +Once everything have been installed and configured, the ansible playbook can be run as follows: +``` +ansible-playbook galaxy.yml +``` + +## Usegalaxy tools + +Install ephemeris for tool management: +``` +virtualenv -p python3 ~/ephemeris_venv +. ~/ephemeris_venv/bin/activate +pip install ephemeris +``` +To obtain the list of tools from the [usegalaxy.eu](https://usegalaxy.eu) use: +``` +get-tool-list -g "https://usegalaxy.eu" -o "eu_tool_list.yaml" +``` +and then to install them: +``` +shed-tools install -g https://your-galaxy -a -t eu_tool_list.yaml +``` +The api key can be found in the User -> Preferences -> Manage API Key in Galaxy menu. + +... + +Later we should use this [role](https://github.com/galaxyproject/ansible-galaxy-tools) to automate this, but there are too many tools to be installed and it is very inpractical for testing purposes. + +## Debian 11 + +### TUS + +On ubuntu < 22.04 and Debian < 12 the GLIBC version is incompatible with the ```galaxyproject.tusd``` GLIBC, therfore playbook ends in error. +- in `roles/galaxyproject.tusd/defaults/main.yml` you have to set the `tusd_version:` to 'v1.8.0' (tested, possibly higher) + +### Ansible + +On Debian 11 the default version of `ansible` is 2.10.08 which fails to extract binaries for TUSd. +- workaround: + - because of Puppet, we need to create dedicated sources.list file for ansible + - `sudo vim /etc/apt/sources.list.d/ansible_ubuntu_focal_main.list` add this line : `deb http://ppa.launchpad.net/ansible/ansible/ubuntu focal main` + - then `sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367` + - followed by `sudo apt-get update` and `sudo apt-get install ansible -y` +- Note that you might need to `sudo apt remove ansible` `sudo apt autoremove` before you try to install ansible. + +### Nginx Upload Module + +Our playbook makes use of `nginx-upload-module`, which is not included by default in any nginx-* distribution from `apt`. +This is a simple recipe for installing nginx with the upload-module. + +``` +sudo apt remove *nginx* -y && +sudo apt autoremove -y && + +wget http://nginx.org/download/nginx-1.24.0.tar.gz && +tar -xzf nginx-1.24.0.tar.gz && +cd nginx-1.24.0/ && +git clone https://github.com/hongzhidao/nginx-upload-module.git && +sudo apt-get install -y libpcre3 libpcre3-dev libssl-dev zlib1g-dev && +./configure --user=nginx --group=nginx --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf --sbin-path=/usr/sbin/nginx --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-compat --with-debug --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_sub_module --add-module=nginx-upload-module && +make && make install +``` + +Note that you might need to `sudo systemctl unmask nginx.service` and remove the `galaxy` and `redirect-ssl` from `/etc/nginx/sites-available and `/etc/nginx/sites-enabled` before running the playbook again. + +### Other issues + + +Use `sudo apt install python3-docker` before running the `usegalaxy.rabbitmqserver` role. + +For influxdb apt key error: https://www.influxdata.com/blog/linux-package-signing-key-rotation/ + +For proftpd add "LoadModule mod_tls.c" to roles/galaxyproject.proftpd/templates/tls.conf.j2 just before the TLSEngine diff --git a/files/galaxy-re.grid.cesnet.cz/all_tools.yml b/files/galaxy-re.grid.cesnet.cz/all_tools.yml new file mode 100644 index 00000000..cd10e148 --- /dev/null +++ b/files/galaxy-re.grid.cesnet.cz/all_tools.yml @@ -0,0 +1,128 @@ +# DEMON: This file is a copy from usegalaxy.cz, it wasn't adjusted to the needs of RE yet +name: Tools +type: generic +id: all_tools +items: +- sections: + - upload_file + - get_data + - data_source_tools + - send_data + - collection_operations + - expression_tools +- id: general_text_label + text: General Text Tools + type: label +- sections: + - text_manipulation + - filter_and_sort + - join__subtract_and_group + - convert + - convert_formats + - builtin_converters +- id: genomic_manip_label + text: Genomic File Manipulation + type: label +- sections: + - fasta_fastq + - fastq_quality_control + - quality_control + - sam_bam + - bed + - vcf_bcf + - nanopore + - lift_over + - extract_features + - operate_on_genomic_intervals + - fetch_sequences___alignments + - chromosome_conformation +- id: genomics_analysis_label + text: Genomics Analysis + type: label +- sections: + - assembly + - annotation + - mapping + - variant_calling + - rna_analysis + - multiple_alignments + - hgv + - evolution + - regional_variation + - biodiversity_data_exploration + - genome_diversity + - rna_seq + - peak_calling + - genome_editing + - epigenetics + - phylogenetics + - phenotype_association + - single_cell + - hca_single_cell + - hca-single_cell + - single-cell +- id: stats_viz + text: Statistics and Visualization + type: label +- sections: + - statistics + - machine_learning + - plots + - interactive_tools + - graph_display_data +- id: genomics_toolkits_label + text: Genomics Toolkits + type: label +- sections: + - mothur + - qiime + - qiime_2 + - picard + - deeptools + - emboss + - ncbi_blast + - mimodd + - scanpy + - hicexplorer + - gemini + - motif_tools + - gatk_tools + - rad_seq + - sanger_sequencing + - dna_metabarcoding + - apollo +- id: domain_tools_label + text: Domain Tools + type: label +- sections: + - virology + - metagenomic_analysis + - proteomics + - metabolomics + - muon_spectroscopy + - chemicaltoolbox + - astronomy + - imaging + - climate_analysis + - gis_data_handling + - spatial_omics + - ecoregionalization + - graphclust + - species_abundance + - data_and_metadata_management + - obo_ontology_manipulation + - ontology + - compute_indicators_for_satellite_remote_sensing + - compute_indicators_for_turnover_boulders_fields + - animal_detection_on_acoustic_recordings +# - id: other_tools_label +# text: Other Tools +# type: label +- sections: + - other_tools +# - id: testing_tools_label +# text: Testing Tools +# type: label +- sections: + - local_tools + - test_tools diff --git a/files/galaxy-re.grid.cesnet.cz/pulsar.pub b/files/galaxy-re.grid.cesnet.cz/pulsar.pub new file mode 100644 index 00000000..8e52ab8e --- /dev/null +++ b/files/galaxy-re.grid.cesnet.cz/pulsar.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPJ4pNj4pZBfm/hGSD04ZkuxtCbageNxwSD6EAZ+wyjQ galaxyelixir@galaxy-re.grid.cesnet.cz diff --git a/files/galaxy-re.grid.cesnet.cz/regalaxy_integrated_tool_panel.xml b/files/galaxy-re.grid.cesnet.cz/regalaxy_integrated_tool_panel.xml new file mode 100644 index 00000000..9190a82b --- /dev/null +++ b/files/galaxy-re.grid.cesnet.cz/regalaxy_integrated_tool_panel.xml @@ -0,0 +1,714 @@ + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + +
+ +
+ + + + + + + +
+ +
+ + + + + + + +
+ +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + +
+ +
diff --git a/files/galaxy-re.grid.cesnet.cz/regalaxy_tool_list.yaml b/files/galaxy-re.grid.cesnet.cz/regalaxy_tool_list.yaml new file mode 100644 index 00000000..d84cccf8 --- /dev/null +++ b/files/galaxy-re.grid.cesnet.cz/regalaxy_tool_list.yaml @@ -0,0 +1,373 @@ +tools: +- name: ncbi_datasets + owner: iuc + revisions: + - 198c75abbf55 + tool_panel_section_id: getext + tool_panel_section_label: Get Data + tool_shed_url: toolshed.g2.bx.psu.edu +- name: repeatexplorer2_testing + owner: petr-novak + revisions: + - 3d0ba5734776 + - 4308d3e572ee + - 792914356c37 + - 20ef42e81eeb + - 5cca2c9aa4ad + - a27646c27090 + tool_panel_section_id: repeatexplorer + tool_panel_section_label: RepeatExplorer + tool_shed_url: toolshed.g2.bx.psu.edu +- name: dante + owner: petr-novak + revisions: + - 8f2bd3cae2de + - f0663cdbae66 + - ae4cebdccf74 + tool_panel_section_id: dante + tool_panel_section_label: DANTE + tool_shed_url: toolshed.g2.bx.psu.edu +- name: dante_tir + owner: petr-novak + revisions: + - ce4d06c72092 + tool_panel_section_id: dante_tir + tool_panel_section_label: DANTE_TIR + tool_shed_url: toolshed.g2.bx.psu.edu +- name: dante_ltr + owner: petr-novak + revisions: + - e61f06df42b9 + - 08b5e23859ed + - 27e5f58763f2 + - 8224e3d7b03a + - d5508ce50c49 + tool_panel_section_id: dante_ltr + tool_panel_section_label: DANTE_LTR + tool_shed_url: toolshed.g2.bx.psu.edu +- name: tidecluster + owner: petr-novak + revisions: + - 440796be7576 + - a0f57cfa1bb7 + - 971dbc97e607 + - 30a8a954dd93 + tool_panel_section_id: tidecluster + tool_panel_section_label: TideCluster + tool_shed_url: toolshed.g2.bx.psu.edu +- name: repeat_annotation_pipeline3 + owner: petr-novak + revisions: + - 755a4d643184 + - 5366d5ea04bc + tool_panel_section_id: assembly_annotation_tools + tool_panel_section_label: Assembly annotation tools + tool_shed_url: toolshed.g2.bx.psu.edu +- name: re_utils + owner: petr-novak + revisions: + - 91996b991991 + tool_panel_section_id: repeatexplorer_utilities + tool_panel_section_label: RepeatExplorer utilities + tool_shed_url: toolshed.g2.bx.psu.edu +- name: long_reads_sampling + owner: petr-novak + revisions: + - 060fc04af21c + tool_panel_section_id: repeatexplorer_utilities + tool_panel_section_label: RepeatExplorer utilities + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fastqc + owner: devteam + revisions: + - 5ec9f6bceaee + tool_panel_section_id: ngs:_qc_and_manipulation + tool_panel_section_label: 'NGS: QC and manipulation' + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fastq_groomer + owner: devteam + revisions: + - 47e5dbc3e790 + tool_panel_section_id: ngs:_qc_and_manipulation + tool_panel_section_label: 'NGS: QC and manipulation' + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fastq_paired_end_splitter + owner: devteam + revisions: + - e39cc71d3ed6 + tool_panel_section_id: ngs:_qc_and_manipulation + tool_panel_section_label: 'NGS: QC and manipulation' + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fastq_stats + owner: devteam + revisions: + - f0e7deab6518 + tool_panel_section_id: ngs:_qc_and_manipulation + tool_panel_section_label: 'NGS: QC and manipulation' + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fastx_barcode_splitter + owner: devteam + revisions: + - 0b7ec11b3c7c + tool_panel_section_id: ngs:_qc_and_manipulation + tool_panel_section_label: 'NGS: QC and manipulation' + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fastx_artifacts_filter + owner: devteam + revisions: + - 529bccd5e4a1 + tool_panel_section_id: ngs:_qc_and_manipulation + tool_panel_section_label: 'NGS: QC and manipulation' + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fastx_nucleotides_distribution + owner: devteam + revisions: + - b6b54ba71bd8 + tool_panel_section_id: ngs:_qc_and_manipulation + tool_panel_section_label: 'NGS: QC and manipulation' + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fastx_quality_statistics + owner: devteam + revisions: + - cc0fd298cc17 + tool_panel_section_id: ngs:_qc_and_manipulation + tool_panel_section_label: 'NGS: QC and manipulation' + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fastq_quality_boxplot + owner: devteam + revisions: + - 867ab348287d + tool_panel_section_id: ngs:_qc_and_manipulation + tool_panel_section_label: 'NGS: QC and manipulation' + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fastq_quality_converter + owner: devteam + revisions: + - 045f0e1043f7 + tool_panel_section_id: ngs:_qc_and_manipulation + tool_panel_section_label: 'NGS: QC and manipulation' + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fastq_quality_filter + owner: devteam + revisions: + - 64e9a6afdd0c + tool_panel_section_id: ngs:_qc_and_manipulation + tool_panel_section_label: 'NGS: QC and manipulation' + tool_shed_url: toolshed.g2.bx.psu.edu +- name: multiqc + owner: iuc + revisions: + - abfd8a6544d7 + tool_panel_section_id: ngs:_qc_and_manipulation + tool_panel_section_label: 'NGS: QC and manipulation' + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fasta_compute_length + owner: devteam + revisions: + - 7d37cfda8e00 + tool_panel_section_id: fasta/fastq_manipulation + tool_panel_section_label: FASTA/FASTQ manipulation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fasta_to_tabular + owner: devteam + revisions: + - e7ed3c310b74 + tool_panel_section_id: fasta/fastq_manipulation + tool_panel_section_label: FASTA/FASTQ manipulation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fasta_formatter + owner: devteam + revisions: + - 516b97a23d7e + tool_panel_section_id: fasta/fastq_manipulation + tool_panel_section_label: FASTA/FASTQ manipulation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fastx_reverse_complement + owner: devteam + revisions: + - 177f0621c266 + tool_panel_section_id: fasta/fastq_manipulation + tool_panel_section_label: FASTA/FASTQ manipulation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fastx_trimmer + owner: devteam + revisions: + - 73194cdd4f57 + tool_panel_section_id: fasta/fastq_manipulation + tool_panel_section_label: FASTA/FASTQ manipulation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fastx_renamer + owner: devteam + revisions: + - f984bb114520 + tool_panel_section_id: fasta/fastq_manipulation + tool_panel_section_label: FASTA/FASTQ manipulation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: tabular_to_fasta + owner: devteam + revisions: + - 0a7799698fe5 + tool_panel_section_id: fasta/fastq_manipulation + tool_panel_section_label: FASTA/FASTQ manipulation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: tabular_to_fastq + owner: devteam + revisions: + - 2dcfbbf9071a + tool_panel_section_id: fasta/fastq_manipulation + tool_panel_section_label: FASTA/FASTQ manipulation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fastq_to_tabular + owner: devteam + revisions: + - 4b347702c4aa + tool_panel_section_id: fasta/fastq_manipulation + tool_panel_section_label: FASTA/FASTQ manipulation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fastqtofasta + owner: devteam + revisions: + - 297962e79f39 + tool_panel_section_id: fasta/fastq_manipulation + tool_panel_section_label: FASTA/FASTQ manipulation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fastq_paired_end_deinterlacer + owner: devteam + revisions: + - f3936d0632cb + tool_panel_section_id: fasta/fastq_manipulation + tool_panel_section_label: FASTA/FASTQ manipulation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fastq_paired_end_interlacer + owner: devteam + revisions: + - 2ccb8dcabddc + tool_panel_section_id: fasta/fastq_manipulation + tool_panel_section_label: FASTA/FASTQ manipulation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fasta_filter_by_length + owner: devteam + revisions: + - 8cacfcf96a52 + tool_panel_section_id: fasta/fastq_manipulation + tool_panel_section_label: FASTA/FASTQ manipulation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: ucsc_fasplit + owner: iuc + revisions: + - bf04bd405d5b + tool_panel_section_id: fasta/fastq_manipulation + tool_panel_section_label: FASTA/FASTQ manipulation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: trimmomatic + owner: pjbriggs + revisions: + - 32f1f56bd970 + tool_panel_section_id: fasta/fastq_manipulation + tool_panel_section_label: FASTA/FASTQ manipulation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: trim_galore + owner: bgruening + revisions: + - cd7e644cae1d + tool_panel_section_id: fasta/fastq_manipulation + tool_panel_section_label: FASTA/FASTQ manipulation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: seqkit_stats + owner: iuc + revisions: + - 54a954ee64d4 + tool_panel_section_id: fasta/fastq_manipulation + tool_panel_section_label: FASTA/FASTQ manipulation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: seqtk + owner: iuc + revisions: + - 4b494533146a + tool_panel_section_id: fasta/fastq_manipulation + tool_panel_section_label: FASTA/FASTQ manipulation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: various_galaxy_tools + owner: petr-novak + revisions: + - 1069776f7ae2 + tool_panel_section_id: genomic_file_utilities + tool_panel_section_label: Genomic file utilities + tool_shed_url: toolshed.g2.bx.psu.edu +- name: gffread + owner: devteam + revisions: + - 3e436657dcd0 + tool_panel_section_id: bed + tool_panel_section_label: BED + tool_shed_url: toolshed.g2.bx.psu.edu +- name: bedtools + owner: iuc + revisions: + - a1a923cd89e8 + tool_panel_section_id: bed + tool_panel_section_label: BED + tool_shed_url: toolshed.g2.bx.psu.edu +- name: jbrowse + owner: iuc + revisions: + - a6e57ff585c0 + tool_panel_section_id: jbrowse + tool_panel_section_label: Jbrowse + tool_shed_url: toolshed.g2.bx.psu.edu +- name: krona_text + owner: petr-novak + revisions: + - 04021cfd5170 + tool_panel_section_id: visualisation + tool_panel_section_label: Visualisation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: histogram + owner: devteam + revisions: + - 6f134426c2b0 + tool_panel_section_id: visualisation + tool_panel_section_label: Visualisation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: ggplot2_point + owner: iuc + revisions: + - 3b12bf9b4b87 + tool_panel_section_id: visualisation + tool_panel_section_label: Visualisation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: ggplot2_histogram + owner: iuc + revisions: + - b0d96516e6a5 + tool_panel_section_id: visualisation + tool_panel_section_label: Visualisation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: ggplot2_violin + owner: iuc + revisions: + - 0e7290688b50 + tool_panel_section_id: visualisation + tool_panel_section_label: Visualisation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: ggplot2_pca + owner: iuc + revisions: + - b1268b7544d3 + tool_panel_section_id: visualisation + tool_panel_section_label: Visualisation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: ggplot2_heatmap + owner: iuc + revisions: + - 10515715c940 + tool_panel_section_id: visualisation + tool_panel_section_label: Visualisation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: text_processing + owner: bgruening + revisions: + - d698c222f354 + tool_panel_section_id: text_manipulation + tool_panel_section_label: Text manipulation + tool_shed_url: toolshed.g2.bx.psu.edu diff --git a/files/galaxy-re.grid.cesnet.cz/tpv_rules_local.yml b/files/galaxy-re.grid.cesnet.cz/tpv_rules_local.yml new file mode 100644 index 00000000..dac311e5 --- /dev/null +++ b/files/galaxy-re.grid.cesnet.cz/tpv_rules_local.yml @@ -0,0 +1,235 @@ +tools: + # DEMON: All Novak's tools (except 2) are not properly containerized, therefore, they need conda to deal with dependences + .*/petr-novak/.*: + cores: 2 + mem: 10 + context: + scratch: 15 + scheduling: + require: + - conda + + # DANTE_TIR toolset: https://toolshed.g2.bx.psu.edu/repos/petr-novak/dante_tir + toolshed.g2.bx.psu.edu/repos/petr-novak/dante_tir/.*: + cores: 20 + mem: 32 + + # DANTE toolset: https://toolshed.g2.bx.psu.edu/repos/petr-novak/dante + toolshed.g2.bx.psu.edu/repos/petr-novak/dante/domains_filter/.*: + mem: 25 + toolshed.g2.bx.psu.edu/repos/petr-novak/dante/gff_to_tabular/.*: + mem: 25 + toolshed.g2.bx.psu.edu/repos/petr-novak/dante/gff_summary/.*: + mem: 25 + toolshed.g2.bx.psu.edu/repos/petr-novak/dante/domains_extract/.*: + mem: 25 + toolshed.g2.bx.psu.edu/repos/petr-novak/dante/dante/.*: + cores: 32 + mem: 25 + context: + walltime: 336 + + # TideCluster tools http://toolshed.g2.bx.psu.edu/repos/petr-novak/tidecluster + toolshed.g2.bx.psu.edu/repos/petr-novak/tidecluster/tidecluster_annotation/.*: + cores: 16 + mem: 24 + toolshed.g2.bx.psu.edu/repos/petr-novak/tidecluster/tc_reannotate/.*: + cores: 32 + mem: 50 + context: + walltime: 96 + toolshed.g2.bx.psu.edu/repos/petr-novak/tidecluster/tidecluster/.*: + cores: 16 + mem: 64 + context: + scratch: 150 + walltime: 336 + + # repeat_annotation_pipeline tools http://toolshed.g2.bx.psu.edu/repos/petr-novak/repeat_annotation_pipeline3 +# toolshed.g2.bx.psu.edu/repos/petr-novak/repeat_annotation_pipeline3/extract_re_contigs/.*: +# cores: 2 +# mem: 10 +# context: +# scratch: 15 +# toolshed.g2.bx.psu.edu/repos/petr-novak/repeat_annotation_pipeline3/compare_gff/.*: +# cores: 2 +# mem: 10 +# context: +# scratch: 15 +# toolshed.g2.bx.psu.edu/repos/petr-novak/repeat_annotation_pipeline3/summarize_gff_by_attribute/.*: +# cores: 2 +# mem: 10 +# context: +# scratch: 15 +# toolshed.g2.bx.psu.edu/repos/petr-novak/repeat_annotation_pipeline3/annotate_contigs/.*: +# cores: 2 +# mem: 10 +# context: +# scratch: 15 + toolshed.g2.bx.psu.edu/repos/petr-novak/repeat_annotation_pipeline3/repeat_annotate/.*: + cores: 32 + mem: 50 + context: + scratch: 50 + walltime: 96 + + # re_utils tools https://toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils + toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/RMsearch2/.*: + cores: 16 + mem: 32 + context: + scratch: 50 + walltime: 96 + toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/chip_seq_ratio_1/.*: + cores: 16 + mem: 32 + context: + scratch: 50 + walltime: 48 + toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/rename_sequences/.*: + context: + scratch: 50 + toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/pairScan/.*: + context: + scratch: 50 + walltime: 48 + toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/single_fastq_filtering/.*: + cores: 6 + context: + scratch: 50 + walltime: 24 + toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/fasta_affixer/.*: + context: + scratch: 50 +# toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/sampler/.*: +# context: +# scratch: 15 +# toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/plot_comparative/.*: +# context: +# scratch: 15 + toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/extract_var_files_from_re/.*: + context: + scratch: 50 + toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/summarize_annotation/.*: + context: + scratch: 50 + toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/names_affixer/.*: + context: + scratch: 50 + toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/cluster_table2krona_format/.*: + context: + scratch: 50 + toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/fasta_input/.*: + context: + scratch: 50 + toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/fasta_interlacer/.*: + context: + scratch: 50 + toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/paired_fastq_filtering/.*: +# mem: 10 #DEMON: old setting but there was job which used 78GB; the best would be to scale to input size + mem: 50 + context: + scratch: 50 +# walltime: 24 #DEMON: used to be 24h but if input is very big it could take more time, would be great to scale it to input size + walltime: 48 + + # DANTE_ltr tools http://toolshed.g2.bx.psu.edu/repos/petr-novak/dante_ltr +# toolshed.g2.bx.psu.edu/repos/petr-novak/dante_ltr/dante_ltr_summary/.*: +# cores: 2 +# mem: 10 +# context: +# scratch: 15 + toolshed.g2.bx.psu.edu/repos/petr-novak/dante_ltr/clean_dante_ltr/.*: + cores: 32 + mem: 64 + context: + scratch: 64 + walltime: 168 + toolshed.g2.bx.psu.edu/repos/petr-novak/dante_ltr/dante_ltr_search/.*: + cores: 32 + mem: 64 + context: + scratch: 64 + walltime: 168 + toolshed.g2.bx.psu.edu/repos/petr-novak/dante_ltr/dante_ltr_to_library/.*: + cores: 32 + mem: 64 + context: + scratch: 64 + walltime: 168 + + # ReapeatExplorer tools http://toolshed.g2.bx.psu.edu/repos/petr-novak/repeatexplorer2_testing + toolshed.g2.bx.psu.edu/repos/petr-novak/repeatexplorer2_testing/repeatexplorer2/.*: + cores: 10 + mem: 4 + context: + scratch: 50 + walltime: 48 + scheduling: + reject: + - conda + require: + - singularity + container_resolvers: + - type: cached_explicit_singularity + cache_directory: "$SINGULARITY_CACHEDIR" + - type: explicit_singularity + - type: cached_mulled_singularity + cache_directory: "$SINGULARITY_CACHEDIR" + - auto_install: true + type: mulled_singularity + - auto_install: false + cache_directory: /mnt/galaxy-re/singularity/mulled + type: build_mulled_singularity + params: + singularity_default_container_id: "/storage/brno11-elixir/home/galaxyelixir/pulsar-re/files/singularity_cache/cache/library/sha256.660dda926394f3db2400f7800e064cf731c75566853cac43a30be44e3b5f5d73" + env: + SINGULARITY_CACHEDIR: "/storage/brno11-elixir/home/galaxyelixir/pulsar-re/files/singularity_cache" + rules: + - id: queue_definition_by_parameter + if: | + param_dict = job.get_param_values(app) # get job input parameters as dictionary + 'queue_definition' in param_dict and 'queue_specification' in param_dict['queue_definition'] + cores: | + import re + int(re.search(r'ncpus=(\d)+', job.get_param_values(app)['queue_definition']['queue_specification']).group(0).split('=')[1]) + mem: | + import re + int(re.search(r'mem=(\d)+', job.get_param_values(app)['queue_definition']['queue_specification']).group(0).split('=')[1]) + context: + scratch: | + import re + int(re.search(r'scratch_local=(\d)+', job.get_param_values(app)['queue_definition']['queue_specification']).group(0).split('=')[1]) + walltime: | + import re + int(re.search(r'walltime=(\d)+', job.get_param_values(app)['queue_definition']['queue_specification']).group(0).split('=')[1]) + - id: basic_fast_queue_selected + if: | + param_dict = job.get_param_values(app) # get job input parameters as dictionary + 'queue_select' in param_dict and param_dict['queue_select'].startswith('basic_fast_queue') + cores: 10 + mem: 16 + context: + scratch: 50 + walltime: 48 + - id: long_slow_queue_selected + if: | + param_dict = job.get_param_values(app) # get job input parameters as dictionary + 'queue_select' in param_dict and param_dict['queue_select'].startswith('long_slow_queue') + cores: 16 + mem: 64 + context: + scratch: 50 + walltime: 336 + - id: extra_long_slow_queue_selected + if: | + param_dict = job.get_param_values(app) # get job input parameters as dictionary + 'queue_select' in param_dict and param_dict['queue_select'].startswith('extra_long_slow_queue') + cores: 16 + mem: 64 + context: + scratch: 50 + walltime: 720 + + toolshed.g2.bx.psu.edu/repos/petr-novak/repeatexplorer2_testing/tarean/.*: + inherits: toolshed.g2.bx.psu.edu/repos/petr-novak/repeatexplorer2_testing/repeatexplorer2/.* diff --git a/files/galaxy/config/sanitize_allowlist.txt b/files/galaxy/config/sanitize_allowlist.txt new file mode 100644 index 00000000..49dfb6e6 --- /dev/null +++ b/files/galaxy/config/sanitize_allowlist.txt @@ -0,0 +1,44 @@ +toolshed.g2.bx.psu.edu/repos/devteam/fastqc/fastqc +toolshed.g2.bx.psu.edu/repos/iuc/multiqc/multiqc +toolshed.g2.bx.psu.edu/repos/saskia-hiltemann/krona_text/krona_text +toolshed.g2.bx.psu.edu/repos/iuc/jbrowse/jbrowse +toolshed.g2.bx.psu.edu/repos/petr-novak/dante/dante +toolshed.g2.bx.psu.edu/repos/petr-novak/dante/domains_extract +toolshed.g2.bx.psu.edu/repos/petr-novak/dante/domains_filter +toolshed.g2.bx.psu.edu/repos/petr-novak/dante/gff_summary +toolshed.g2.bx.psu.edu/repos/petr-novak/dante/gff_to_tabular +toolshed.g2.bx.psu.edu/repos/petr-novak/dante_ltr +toolshed.g2.bx.psu.edu/repos/petr-novak/dante_tir +toolshed.g2.bx.psu.edu/repos/petr-novak/krona_text/krona-text +toolshed.g2.bx.psu.edu/repos/petr-novak/long_reads_sampling/long2short +toolshed.g2.bx.psu.edu/repos/petr-novak/long_reads_sampling/long_reads_sampling +toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/RMsearch2 +toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/chip_seq_ratio_1 +toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/cluster_table2krona_format +toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/extract_contigs +toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/extract_var_files_from_re +toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/fasta_affixer +toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/fasta_input +toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/fasta_interlacer +toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/names_affixer +toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/pairScan +toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/paired_fastq_filtering +toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/plot_comparative +toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/rename_sequences +toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/sampler +toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/single_fastq_filtering +toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/summarize_annotation +toolshed.g2.bx.psu.edu/repos/petr-novak/repeat_annotation_pipeline3/annotate_contigs +toolshed.g2.bx.psu.edu/repos/petr-novak/repeat_annotation_pipeline3/compare_gff +toolshed.g2.bx.psu.edu/repos/petr-novak/repeat_annotation_pipeline3/extract_re_contigs +toolshed.g2.bx.psu.edu/repos/petr-novak/repeat_annotation_pipeline3/repeat_annotate +toolshed.g2.bx.psu.edu/repos/petr-novak/repeat_annotation_pipeline3/summarize_gff_by_attribute +toolshed.g2.bx.psu.edu/repos/petr-novak/repeatexplorer2_testing/repeatexplorer2 +toolshed.g2.bx.psu.edu/repos/petr-novak/repeatexplorer2_testing/tarean +toolshed.g2.bx.psu.edu/repos/petr-novak/tidecluster/tc_reannotate +toolshed.g2.bx.psu.edu/repos/petr-novak/tidecluster/tidecluster +toolshed.g2.bx.psu.edu/repos/petr-novak/various_galaxy_tools/Extract_features1 +toolshed.g2.bx.psu.edu/repos/petr-novak/various_galaxy_tools/calculate_density +toolshed.g2.bx.psu.edu/repos/petr-novak/various_galaxy_tools/gff2bed1 +toolshed.g2.bx.psu.edu/repos/petr-novak/various_galaxy_tools/gff2tabular +toolshed.g2.bx.psu.edu/repos/petr-novak/various_galaxy_tools/gff_filter_by_attribute diff --git a/files/galaxy/lib/examples.py b/files/galaxy/lib/examples.py new file mode 100644 index 00000000..33b5e445 --- /dev/null +++ b/files/galaxy/lib/examples.py @@ -0,0 +1,14 @@ +import logging +log = logging.getLogger( __name__ ) + +def restrict_testing_tools_to_admins( context, tool ): + """ + This tool filter will hide the upload tool from all users except admin + users. This can be enabled by renaming this file to examples.py and adding + the following to the ``app:main`` section of ``galaxy.ini``: + + tool_filters = examples:restrict_testing_tools_to_admins + """ + if tool.id == "testing_html" or tool.id == "testing_pbs" or tool.id == "testing": + return context.trans.user_is_admin + return True diff --git a/files/galaxy/static/style/base.css b/files/galaxy/static/style/base.css new file mode 100644 index 00000000..6e893571 --- /dev/null +++ b/files/galaxy/static/style/base.css @@ -0,0 +1,60 @@ +@charset "UTF-8";.markdown-textarea{border:1px solid #ccc;border-top:none;border-bottom:none;resize:none;outline:none;background-color:#f6f6f6;font-size:14px;font-family:Monaco,courier,monospace;padding:20px;width:100%;height:95%}pre code{white-space:pre-wrap}.badge{padding:.2em .6em .3em;border-width:1px;border-style:solid;border-radius:.15rem;text-decoration:none}.nametags:empty{display:none}.nametags .badge{display:inline-block;margin-right:2px}.galaxy-page-editor-button{position:relative;float:left;padding:.2em} + +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */.tags-display .vue-tags-input .ti-tags .ti-new-tag-input-wrapper input{background-color:transparent}.tags-display .vue-tags-input .ti-tags .ti-new-tag-input-wrapper input:not(:focus){background:url(/static/images/fugue/tag--plus.png);background-repeat:no-repeat;color:transparent}.tags-display .vue-tags-input .ti-tags .ti-new-tag-input-wrapper input:not(:focus)::placeholder{color:transparent}.tags-display .vue-tags-input{position:relative;top:0;left:0;width:100%;height:100%}.tags-display .vue-tags-input .ti-input{padding:0;border:none}.tags-display .vue-tags-input .ti-tag{border-radius:4px;font-size:.8rem;font-weight:400}.tags-display .vue-tags-input.tag-area{background-color:transparent}#masthead:empty,.framed #masthead,.framed #messagebox,.tags-display.disabled .vue-tags-input .ti-actions,.tags-display.disabled .vue-tags-input .ti-new-tag-input-wrapper{display:none}.framed #center,.framed #left,.framed #right{top:0}table.info_data_table[data-v-1aba2ddb]{table-layout:fixed;word-break:break-word}table.info_data_table td[data-v-1aba2ddb]:first-child{width:25%} + +/*! + * Bootstrap v4.3.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:#404862;--gray-dark:#404862;--primary:#25537b;--secondary:#dee2e6;--success:#6c6;--info:#2077b3;--warning:#fe7f02;--danger:#e31a1e;--light:#f8f9fa;--dark:#2c3143;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--font-family-monospace:Monaco,Menlo,Consolas,"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:rgba(44,49,67,0)}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:.85rem;font-weight:400;line-height:1.5;color:#2c3143;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}.upload-view-composite .upload-box .upload-helper,.upload-view-default .upload-box .upload-helper,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{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{font-style:normal;line-height:inherit}address,dl,ol,ul{margin-bottom:1rem}dl,ol,ul{margin-top:0}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#25537b;text-decoration:none;background-color:transparent}a:hover{color:#132b40;text-decoration:underline}a:not([href]):not([tabindex]),a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:Monaco,Menlo,Consolas,Courier New,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem}figure{margin:0 0 1rem}img{border-style:none}img,svg{vertical-align:middle}svg{overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#404862;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}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;margin-bottom:.5rem;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}.dataset .details .annotation-display .annotation:empty:after,.h1,.h2,.h3,.h4,.h5,.h6,.upload-view-composite .upload-box .upload-helper,.upload-view-default .upload-box .upload-helper,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:1.7rem}.h2,h2{font-size:1.4875rem}.h3,.upload-view-composite .upload-box .upload-helper,.upload-view-default .upload-box .upload-helper,h3{font-size:1.275rem}.h4,h4{font-size:1.0625rem}.h5,h5{font-size:.85rem}.dataset .details .annotation-display .annotation:empty:after,.h6,h6{font-size:.7225rem}.lead{font-size:1.0625rem;font-weight:300}.display-1{font-size:6rem}.display-1,.display-2{font-weight:300;line-height:1.2}.display-2{font-size:5.5rem}.display-3{font-size:4.5rem}.display-3,.display-4{font-weight:300;line-height:1.2}.display-4{font-size:3.5rem}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(44,49,67,.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.0625rem}.blockquote-footer{display:block;font-size:80%;color:#404862}.blockquote-footer:before{content:"\2014\00A0"}.img-fluid,.img-thumbnail{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dae0e5;border-radius:.25rem}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#404862}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#2c3143;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#2c3143}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;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{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:flex;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-10,.col-11,.col-12,.col-auto,.col-lg,.col-lg-1,.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-10,.col-lg-11,.col-lg-12,.col-lg-auto,.col-md,.col-md-1,.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-10,.col-md-11,.col-md-12,.col-md-auto,.col-sm,.col-sm-1,.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-10,.col-sm-11,.col-sm-12,.col-sm-auto,.col-xl,.col-xl-1,.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-10,.col-xl-11,.col-xl-12,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{flex-basis:0;flex-grow:1;max-width:100%}.col-auto{flex:0 0 auto;width:auto;max-width:100%}.col-1{flex:0 0 8.33333%;max-width:8.33333%}.col-2{flex:0 0 16.66667%;max-width:16.66667%}.col-3{flex:0 0 25%;max-width:25%}.col-4{flex:0 0 33.33333%;max-width:33.33333%}.col-5{flex:0 0 41.66667%;max-width:41.66667%}.col-6{flex:0 0 50%;max-width:50%}.col-7{flex:0 0 58.33333%;max-width:58.33333%}.col-8{flex:0 0 66.66667%;max-width:66.66667%}.col-9{flex:0 0 75%;max-width:75%}.col-10{flex:0 0 83.33333%;max-width:83.33333%}.col-11{flex:0 0 91.66667%;max-width:91.66667%}.col-12{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.33333%}.offset-2{margin-left:16.66667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333%}.offset-5{margin-left:41.66667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333%}.offset-8{margin-left:66.66667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333%}.offset-11{margin-left:91.66667%}@media (min-width:576px){.col-sm{flex-basis:0;flex-grow:1;max-width:100%}.col-sm-auto{flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{flex:0 0 8.33333%;max-width:8.33333%}.col-sm-2{flex:0 0 16.66667%;max-width:16.66667%}.col-sm-3{flex:0 0 25%;max-width:25%}.col-sm-4{flex:0 0 33.33333%;max-width:33.33333%}.col-sm-5{flex:0 0 41.66667%;max-width:41.66667%}.col-sm-6{flex:0 0 50%;max-width:50%}.col-sm-7{flex:0 0 58.33333%;max-width:58.33333%}.col-sm-8{flex:0 0 66.66667%;max-width:66.66667%}.col-sm-9{flex:0 0 75%;max-width:75%}.col-sm-10{flex:0 0 83.33333%;max-width:83.33333%}.col-sm-11{flex:0 0 91.66667%;max-width:91.66667%}.col-sm-12{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.33333%}.offset-sm-2{margin-left:16.66667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333%}.offset-sm-5{margin-left:41.66667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333%}.offset-sm-8{margin-left:66.66667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333%}.offset-sm-11{margin-left:91.66667%}}@media (min-width:768px){.col-md{flex-basis:0;flex-grow:1;max-width:100%}.col-md-auto{flex:0 0 auto;width:auto;max-width:100%}.col-md-1{flex:0 0 8.33333%;max-width:8.33333%}.col-md-2{flex:0 0 16.66667%;max-width:16.66667%}.col-md-3{flex:0 0 25%;max-width:25%}.col-md-4{flex:0 0 33.33333%;max-width:33.33333%}.col-md-5{flex:0 0 41.66667%;max-width:41.66667%}.col-md-6{flex:0 0 50%;max-width:50%}.col-md-7{flex:0 0 58.33333%;max-width:58.33333%}.col-md-8{flex:0 0 66.66667%;max-width:66.66667%}.col-md-9{flex:0 0 75%;max-width:75%}.col-md-10{flex:0 0 83.33333%;max-width:83.33333%}.col-md-11{flex:0 0 91.66667%;max-width:91.66667%}.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.33333%}.offset-md-2{margin-left:16.66667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333%}.offset-md-5{margin-left:41.66667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333%}.offset-md-8{margin-left:66.66667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333%}.offset-md-11{margin-left:91.66667%}}@media (min-width:992px){.col-lg{flex-basis:0;flex-grow:1;max-width:100%}.col-lg-auto{flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{flex:0 0 8.33333%;max-width:8.33333%}.col-lg-2{flex:0 0 16.66667%;max-width:16.66667%}.col-lg-3{flex:0 0 25%;max-width:25%}.col-lg-4{flex:0 0 33.33333%;max-width:33.33333%}.col-lg-5{flex:0 0 41.66667%;max-width:41.66667%}.col-lg-6{flex:0 0 50%;max-width:50%}.col-lg-7{flex:0 0 58.33333%;max-width:58.33333%}.col-lg-8{flex:0 0 66.66667%;max-width:66.66667%}.col-lg-9{flex:0 0 75%;max-width:75%}.col-lg-10{flex:0 0 83.33333%;max-width:83.33333%}.col-lg-11{flex:0 0 91.66667%;max-width:91.66667%}.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.33333%}.offset-lg-2{margin-left:16.66667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333%}.offset-lg-5{margin-left:41.66667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333%}.offset-lg-8{margin-left:66.66667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333%}.offset-lg-11{margin-left:91.66667%}}@media (min-width:1200px){.col-xl{flex-basis:0;flex-grow:1;max-width:100%}.col-xl-auto{flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{flex:0 0 8.33333%;max-width:8.33333%}.col-xl-2{flex:0 0 16.66667%;max-width:16.66667%}.col-xl-3{flex:0 0 25%;max-width:25%}.col-xl-4{flex:0 0 33.33333%;max-width:33.33333%}.col-xl-5{flex:0 0 41.66667%;max-width:41.66667%}.col-xl-6{flex:0 0 50%;max-width:50%}.col-xl-7{flex:0 0 58.33333%;max-width:58.33333%}.col-xl-8{flex:0 0 66.66667%;max-width:66.66667%}.col-xl-9{flex:0 0 75%;max-width:75%}.col-xl-10{flex:0 0 83.33333%;max-width:83.33333%}.col-xl-11{flex:0 0 91.66667%;max-width:91.66667%}.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.33333%}.offset-xl-2{margin-left:16.66667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333%}.offset-xl-5{margin-left:41.66667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333%}.offset-xl-8{margin-left:66.66667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333%}.offset-xl-11{margin-left:91.66667%}}.table,.upload-table{width:100%;margin-bottom:1rem;color:#2c3143}.table td,.table th,.upload-table td,.upload-table th{padding:.75rem;vertical-align:top;border-top:1px solid #c7cbda}.table thead th,.upload-table thead th{vertical-align:bottom;border-bottom:2px solid #c7cbda}.table tbody+tbody,.upload-table tbody+tbody{border-top:2px solid #c7cbda}.table-sm td,.table-sm th{padding:.3rem}.table-bordered,.table-bordered td,.table-bordered th{border:1px solid #c7cbda}.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),.upload-table tbody tr:nth-of-type(odd){background-color:rgba(44,49,67,.05)}.table-hover tbody tr:hover{color:#2c3143;background-color:rgba(44,49,67,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#87a0b6}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#6687a3}.table-hover .table-primary:hover,.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#7793ac}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#edeff1}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#e8ebee}.table-hover .table-secondary:hover,.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#dfe2e6}.table-success,.table-success>td,.table-success>th{background-color:#abe3ab}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#94db94}.table-hover .table-success:hover,.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#98dd98}.table-info,.table-info>td,.table-info>th{background-color:#84b4d5}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#63a0ca}.table-hover .table-info:hover,.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#71a8cf}.table-warning,.table-warning>td,.table-warning>th{background-color:#feb974}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#fea54e}.table-hover .table-warning:hover,.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#feac5b}.table-danger,.table-danger>td,.table-danger>th{background-color:#f08183}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#eb5f62}.table-hover .table-danger:hover,.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#ed6a6d}.table-light,.table-light>td,.table-light>th{background-color:#fbfcfc}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fafbfc}.table-hover .table-light:hover,.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ecf1f1}.table-dark,.table-dark>td,.table-dark>th{background-color:#8b8e98}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#6b6f7b}.table-hover .table-dark:hover,.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#7d818c}.table-active,.table-active>td,.table-active>th{background-color:rgba(44,49,67,.075)}.table-hover .table-active:hover,.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(34,38,52,.075)}.table .thead-dark th,.upload-table .thead-dark th{color:#fff;background-color:#404862;border-color:#4f5879}.table .thead-light th,.upload-table .thead-light th{color:#404862;background-color:#e9ecef;border-color:#c7cbda}.table-dark{color:#fff;background-color:#404862}.table-dark td,.table-dark th,.table-dark thead th{border-color:#4f5879}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd),.table-dark.upload-table tbody tr:nth-of-type(odd){background-color:hsla(0,0%,100%,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:hsla(0,0%,100%,.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}.form-control,.search-box-input,.ui-form-element-disabled .ui-form-preview,.ui-form-element .ui-form-preview,.ui-input,.ui-options .ui-options-list,.ui-select .select2-container-multi .select2-choices,.ui-select .select2-container .select2-choice,.ui-select select,.ui-textarea{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:.85rem;font-weight:400;line-height:1.5;color:#2c3143;background-color:#fff;background-clip:padding-box;border:1px solid #c7cbda;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control,.search-box-input,.ui-form-element-disabled .ui-form-preview,.ui-form-element .ui-form-preview,.ui-input,.ui-options .ui-options-list,.ui-select .select2-container-multi .select2-choices,.ui-select .select2-container .select2-choice,.ui-select select,.ui-textarea{transition:none}}.form-control::-ms-expand,.search-box-input::-ms-expand,.ui-form-element-disabled .ui-form-preview::-ms-expand,.ui-form-element .ui-form-preview::-ms-expand,.ui-input::-ms-expand,.ui-options .ui-options-list::-ms-expand,.ui-select .select2-container-multi .select2-choices::-ms-expand,.ui-select .select2-container .select2-choice::-ms-expand,.ui-select select::-ms-expand,.ui-textarea::-ms-expand{background-color:transparent;border:0}.form-control:focus,.search-box-input:focus,.ui-form-element-disabled .ui-form-preview:focus,.ui-form-element .ui-form-preview:focus,.ui-input:focus,.ui-options .ui-options-list:focus,.ui-select .select2-container-multi .select2-choices:focus,.ui-select .select2-container .select2-choice:focus,.ui-select select:focus,.ui-textarea:focus{color:#2c3143;background-color:#fff;border-color:#5494cc;outline:0;box-shadow:0 0 0 .2rem rgba(37,83,123,.25)}.form-control::placeholder,.search-box-input::placeholder,.ui-form-element-disabled .ui-form-preview::placeholder,.ui-form-element .ui-form-preview::placeholder,.ui-input::placeholder,.ui-options .ui-options-list::placeholder,.ui-select .select2-container-multi .select2-choices::placeholder,.ui-select .select2-container .select2-choice::placeholder,.ui-select select::placeholder,.ui-textarea::placeholder{color:#404862;opacity:1}.form-control:disabled,.form-control[readonly],.search-box-input:disabled,.search-box-input[readonly],.ui-form-element-disabled .ui-form-preview:disabled,.ui-form-element-disabled .ui-form-preview[readonly],.ui-form-element .ui-form-preview:disabled,.ui-form-element .ui-form-preview[readonly],.ui-input:disabled,.ui-input[readonly],.ui-options .ui-options-list:disabled,.ui-options .ui-options-list[readonly],.ui-select .select2-container-multi .select2-choices:disabled,.ui-select .select2-container-multi .select2-choices[readonly],.ui-select .select2-container .select2-choice:disabled,.ui-select .select2-container .select2-choice[readonly],.ui-select select:disabled,.ui-select select[readonly],.ui-textarea:disabled,.ui-textarea[readonly]{background-color:#e9ecef;opacity:1}.ui-form-element-disabled select.ui-form-preview:focus::-ms-value,.ui-form-element select.ui-form-preview:focus::-ms-value,.ui-options select.ui-options-list:focus::-ms-value,.ui-select .select2-container-multi select.select2-choices:focus::-ms-value,.ui-select .select2-container select.select2-choice:focus::-ms-value,.ui-select select:focus::-ms-value,select.form-control:focus::-ms-value,select.search-box-input:focus::-ms-value,select.ui-input:focus::-ms-value,select.ui-textarea:focus::-ms-value{color:#2c3143;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.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.0625rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.74375rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;color:#2c3143;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:.74375rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.0625rem;line-height:1.5;border-radius:.3rem}.ui-form-element-disabled select.ui-form-preview[multiple],.ui-form-element-disabled select.ui-form-preview[size],.ui-form-element-disabled textarea.ui-form-preview,.ui-form-element select.ui-form-preview[multiple],.ui-form-element select.ui-form-preview[size],.ui-form-element textarea.ui-form-preview,.ui-options select.ui-options-list[multiple],.ui-options select.ui-options-list[size],.ui-options textarea.ui-options-list,.ui-select .select2-container-multi select.select2-choices[multiple],.ui-select .select2-container-multi select.select2-choices[size],.ui-select .select2-container-multi textarea.select2-choices,.ui-select .select2-container select.select2-choice[multiple],.ui-select .select2-container select.select2-choice[size],.ui-select .select2-container textarea.select2-choice,.ui-select select[multiple],.ui-select select[size],select.form-control[multiple],select.form-control[size],select.search-box-input[multiple],select.search-box-input[size],select.ui-input[multiple],select.ui-input[size],select.ui-textarea[multiple],select.ui-textarea[size],textarea.form-control,textarea.search-box-input,textarea.ui-input,textarea.ui-textarea{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{color:#404862}.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:80%;color:#6c6}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.74375rem;line-height:1.5;color:#2c3143;background-color:rgba(102,204,102,.9);border-radius:.25rem}.form-control.is-valid,.is-valid.search-box-input,.is-valid.ui-input,.is-valid.ui-textarea,.ui-form-element-disabled .is-valid.ui-form-preview,.ui-form-element-disabled .was-validated .ui-form-preview:valid,.ui-form-element .is-valid.ui-form-preview,.ui-form-element .was-validated .ui-form-preview:valid,.ui-options .is-valid.ui-options-list,.ui-options .was-validated .ui-options-list:valid,.ui-select .select2-container-multi .is-valid.select2-choices,.ui-select .select2-container-multi .was-validated .select2-choices:valid,.ui-select .select2-container .is-valid.select2-choice,.ui-select .select2-container .was-validated .select2-choice:valid,.ui-select .was-validated select:valid,.ui-select select.is-valid,.was-validated .form-control:valid,.was-validated .search-box-input:valid,.was-validated .ui-form-element-disabled .ui-form-preview:valid,.was-validated .ui-form-element .ui-form-preview:valid,.was-validated .ui-input:valid,.was-validated .ui-options .ui-options-list:valid,.was-validated .ui-select .select2-container-multi .select2-choices:valid,.was-validated .ui-select .select2-container .select2-choice:valid,.was-validated .ui-select select:valid,.was-validated .ui-textarea:valid{border-color:#6c6;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%236c6' 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:100% calc(.375em + .1875rem);background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.is-valid.search-box-input:focus,.is-valid.ui-input:focus,.is-valid.ui-textarea:focus,.ui-form-element-disabled .is-valid.ui-form-preview:focus,.ui-form-element-disabled .was-validated .ui-form-preview:valid:focus,.ui-form-element .is-valid.ui-form-preview:focus,.ui-form-element .was-validated .ui-form-preview:valid:focus,.ui-options .is-valid.ui-options-list:focus,.ui-options .was-validated .ui-options-list:valid:focus,.ui-select .select2-container-multi .is-valid.select2-choices:focus,.ui-select .select2-container-multi .was-validated .select2-choices:valid:focus,.ui-select .select2-container .is-valid.select2-choice:focus,.ui-select .select2-container .was-validated .select2-choice:valid:focus,.ui-select .was-validated select:valid:focus,.ui-select select.is-valid:focus,.was-validated .form-control:valid:focus,.was-validated .search-box-input:valid:focus,.was-validated .ui-form-element-disabled .ui-form-preview:valid:focus,.was-validated .ui-form-element .ui-form-preview:valid:focus,.was-validated .ui-input:valid:focus,.was-validated .ui-options .ui-options-list:valid:focus,.was-validated .ui-select .select2-container-multi .select2-choices:valid:focus,.was-validated .ui-select .select2-container .select2-choice:valid:focus,.was-validated .ui-select select:valid:focus,.was-validated .ui-textarea:valid:focus{border-color:#6c6;box-shadow:0 0 0 .2rem rgba(102,204,102,.25)}.form-control.is-valid~.valid-feedback,.form-control.is-valid~.valid-tooltip,.is-valid.search-box-input~.valid-feedback,.is-valid.search-box-input~.valid-tooltip,.is-valid.ui-input~.valid-feedback,.is-valid.ui-input~.valid-tooltip,.is-valid.ui-textarea~.valid-feedback,.is-valid.ui-textarea~.valid-tooltip,.ui-form-element-disabled .is-valid.ui-form-preview~.valid-feedback,.ui-form-element-disabled .is-valid.ui-form-preview~.valid-tooltip,.ui-form-element-disabled .was-validated .ui-form-preview:valid~.valid-feedback,.ui-form-element-disabled .was-validated .ui-form-preview:valid~.valid-tooltip,.ui-form-element .is-valid.ui-form-preview~.valid-feedback,.ui-form-element .is-valid.ui-form-preview~.valid-tooltip,.ui-form-element .was-validated .ui-form-preview:valid~.valid-feedback,.ui-form-element .was-validated .ui-form-preview:valid~.valid-tooltip,.ui-options .is-valid.ui-options-list~.valid-feedback,.ui-options .is-valid.ui-options-list~.valid-tooltip,.ui-options .was-validated .ui-options-list:valid~.valid-feedback,.ui-options .was-validated .ui-options-list:valid~.valid-tooltip,.ui-select .select2-container-multi .is-valid.select2-choices~.valid-feedback,.ui-select .select2-container-multi .is-valid.select2-choices~.valid-tooltip,.ui-select .select2-container-multi .was-validated .select2-choices:valid~.valid-feedback,.ui-select .select2-container-multi .was-validated .select2-choices:valid~.valid-tooltip,.ui-select .select2-container .is-valid.select2-choice~.valid-feedback,.ui-select .select2-container .is-valid.select2-choice~.valid-tooltip,.ui-select .select2-container .was-validated .select2-choice:valid~.valid-feedback,.ui-select .select2-container .was-validated .select2-choice:valid~.valid-tooltip,.ui-select .was-validated select:valid~.valid-feedback,.ui-select .was-validated select:valid~.valid-tooltip,.ui-select select.is-valid~.valid-feedback,.ui-select select.is-valid~.valid-tooltip,.was-validated .form-control:valid~.valid-feedback,.was-validated .form-control:valid~.valid-tooltip,.was-validated .search-box-input:valid~.valid-feedback,.was-validated .search-box-input:valid~.valid-tooltip,.was-validated .ui-form-element-disabled .ui-form-preview:valid~.valid-feedback,.was-validated .ui-form-element-disabled .ui-form-preview:valid~.valid-tooltip,.was-validated .ui-form-element .ui-form-preview:valid~.valid-feedback,.was-validated .ui-form-element .ui-form-preview:valid~.valid-tooltip,.was-validated .ui-input:valid~.valid-feedback,.was-validated .ui-input:valid~.valid-tooltip,.was-validated .ui-options .ui-options-list:valid~.valid-feedback,.was-validated .ui-options .ui-options-list:valid~.valid-tooltip,.was-validated .ui-select .select2-container-multi .select2-choices:valid~.valid-feedback,.was-validated .ui-select .select2-container-multi .select2-choices:valid~.valid-tooltip,.was-validated .ui-select .select2-container .select2-choice:valid~.valid-feedback,.was-validated .ui-select .select2-container .select2-choice:valid~.valid-tooltip,.was-validated .ui-select select:valid~.valid-feedback,.was-validated .ui-select select:valid~.valid-tooltip,.was-validated .ui-textarea:valid~.valid-feedback,.was-validated .ui-textarea:valid~.valid-tooltip{display:block}.ui-form-element-disabled .was-validated textarea.ui-form-preview:valid,.ui-form-element-disabled textarea.is-valid.ui-form-preview,.ui-form-element .was-validated textarea.ui-form-preview:valid,.ui-form-element textarea.is-valid.ui-form-preview,.ui-options .was-validated textarea.ui-options-list:valid,.ui-options textarea.is-valid.ui-options-list,.ui-select .select2-container-multi .was-validated textarea.select2-choices:valid,.ui-select .select2-container-multi textarea.is-valid.select2-choices,.ui-select .select2-container .was-validated textarea.select2-choice:valid,.ui-select .select2-container textarea.is-valid.select2-choice,.was-validated .ui-form-element-disabled textarea.ui-form-preview:valid,.was-validated .ui-form-element textarea.ui-form-preview:valid,.was-validated .ui-options textarea.ui-options-list:valid,.was-validated .ui-select .select2-container-multi textarea.select2-choices:valid,.was-validated .ui-select .select2-container textarea.select2-choice:valid,.was-validated textarea.form-control:valid,.was-validated textarea.search-box-input:valid,.was-validated textarea.ui-input:valid,.was-validated textarea.ui-textarea:valid,textarea.form-control.is-valid,textarea.is-valid.search-box-input,textarea.is-valid.ui-input,textarea.is-valid.ui-textarea{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:#6c6;padding-right:calc((3em + 2.25rem)/4 + 1.75rem);background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23404862' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%236c6' 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") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#6c6;box-shadow:0 0 0 .2rem rgba(102,204,102,.25)}.custom-select.is-valid~.valid-feedback,.custom-select.is-valid~.valid-tooltip,.form-control-file.is-valid~.valid-feedback,.form-control-file.is-valid~.valid-tooltip,.was-validated .custom-select:valid~.valid-feedback,.was-validated .custom-select:valid~.valid-tooltip,.was-validated .form-control-file:valid~.valid-feedback,.was-validated .form-control-file:valid~.valid-tooltip{display:block}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#6c6}.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~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#6c6}.custom-control-input.is-valid~.custom-control-label:before,.was-validated .custom-control-input:valid~.custom-control-label:before{border-color:#6c6}.custom-control-input.is-valid~.valid-feedback,.custom-control-input.is-valid~.valid-tooltip,.was-validated .custom-control-input:valid~.valid-feedback,.was-validated .custom-control-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid:checked~.custom-control-label:before,.was-validated .custom-control-input:valid:checked~.custom-control-label:before{border-color:#8cd98c;background-color:#8cd98c}.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(102,204,102,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label:before,.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#6c6}.custom-file-input.is-valid~.valid-feedback,.custom-file-input.is-valid~.valid-tooltip,.was-validated .custom-file-input:valid~.valid-feedback,.was-validated .custom-file-input:valid~.valid-tooltip{display:block}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#6c6;box-shadow:0 0 0 .2rem rgba(102,204,102,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#e31a1e}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.74375rem;line-height:1.5;color:#fff;background-color:rgba(227,26,30,.9);border-radius:.25rem}.form-control.is-invalid,.is-invalid.search-box-input,.is-invalid.ui-input,.is-invalid.ui-textarea,.ui-form-element-disabled .is-invalid.ui-form-preview,.ui-form-element-disabled .was-validated .ui-form-preview:invalid,.ui-form-element .is-invalid.ui-form-preview,.ui-form-element .was-validated .ui-form-preview:invalid,.ui-options .is-invalid.ui-options-list,.ui-options .was-validated .ui-options-list:invalid,.ui-select .select2-container-multi .is-invalid.select2-choices,.ui-select .select2-container-multi .was-validated .select2-choices:invalid,.ui-select .select2-container .is-invalid.select2-choice,.ui-select .select2-container .was-validated .select2-choice:invalid,.ui-select .was-validated select:invalid,.ui-select select.is-invalid,.was-validated .form-control:invalid,.was-validated .search-box-input:invalid,.was-validated .ui-form-element-disabled .ui-form-preview:invalid,.was-validated .ui-form-element .ui-form-preview:invalid,.was-validated .ui-input:invalid,.was-validated .ui-options .ui-options-list:invalid,.was-validated .ui-select .select2-container-multi .select2-choices:invalid,.was-validated .ui-select .select2-container .select2-choice:invalid,.was-validated .ui-select select:invalid,.was-validated .ui-textarea:invalid{border-color:#e31a1e;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23e31a1e' viewBox='-2 -2 7 7'%3E%3Cpath stroke='%23e31a1e' d='M0 0l3 3m0-3L0 3'/%3E%3Ccircle r='.5'/%3E%3Ccircle cx='3' r='.5'/%3E%3Ccircle cy='3' r='.5'/%3E%3Ccircle cx='3' cy='3' r='.5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:100% calc(.375em + .1875rem);background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.is-invalid.search-box-input:focus,.is-invalid.ui-input:focus,.is-invalid.ui-textarea:focus,.ui-form-element-disabled .is-invalid.ui-form-preview:focus,.ui-form-element-disabled .was-validated .ui-form-preview:invalid:focus,.ui-form-element .is-invalid.ui-form-preview:focus,.ui-form-element .was-validated .ui-form-preview:invalid:focus,.ui-options .is-invalid.ui-options-list:focus,.ui-options .was-validated .ui-options-list:invalid:focus,.ui-select .select2-container-multi .is-invalid.select2-choices:focus,.ui-select .select2-container-multi .was-validated .select2-choices:invalid:focus,.ui-select .select2-container .is-invalid.select2-choice:focus,.ui-select .select2-container .was-validated .select2-choice:invalid:focus,.ui-select .was-validated select:invalid:focus,.ui-select select.is-invalid:focus,.was-validated .form-control:invalid:focus,.was-validated .search-box-input:invalid:focus,.was-validated .ui-form-element-disabled .ui-form-preview:invalid:focus,.was-validated .ui-form-element .ui-form-preview:invalid:focus,.was-validated .ui-input:invalid:focus,.was-validated .ui-options .ui-options-list:invalid:focus,.was-validated .ui-select .select2-container-multi .select2-choices:invalid:focus,.was-validated .ui-select .select2-container .select2-choice:invalid:focus,.was-validated .ui-select select:invalid:focus,.was-validated .ui-textarea:invalid:focus{border-color:#e31a1e;box-shadow:0 0 0 .2rem rgba(227,26,30,.25)}.form-control.is-invalid~.invalid-feedback,.form-control.is-invalid~.invalid-tooltip,.is-invalid.search-box-input~.invalid-feedback,.is-invalid.search-box-input~.invalid-tooltip,.is-invalid.ui-input~.invalid-feedback,.is-invalid.ui-input~.invalid-tooltip,.is-invalid.ui-textarea~.invalid-feedback,.is-invalid.ui-textarea~.invalid-tooltip,.ui-form-element-disabled .is-invalid.ui-form-preview~.invalid-feedback,.ui-form-element-disabled .is-invalid.ui-form-preview~.invalid-tooltip,.ui-form-element-disabled .was-validated .ui-form-preview:invalid~.invalid-feedback,.ui-form-element-disabled .was-validated .ui-form-preview:invalid~.invalid-tooltip,.ui-form-element .is-invalid.ui-form-preview~.invalid-feedback,.ui-form-element .is-invalid.ui-form-preview~.invalid-tooltip,.ui-form-element .was-validated .ui-form-preview:invalid~.invalid-feedback,.ui-form-element .was-validated .ui-form-preview:invalid~.invalid-tooltip,.ui-options .is-invalid.ui-options-list~.invalid-feedback,.ui-options .is-invalid.ui-options-list~.invalid-tooltip,.ui-options .was-validated .ui-options-list:invalid~.invalid-feedback,.ui-options .was-validated .ui-options-list:invalid~.invalid-tooltip,.ui-select .select2-container-multi .is-invalid.select2-choices~.invalid-feedback,.ui-select .select2-container-multi .is-invalid.select2-choices~.invalid-tooltip,.ui-select .select2-container-multi .was-validated .select2-choices:invalid~.invalid-feedback,.ui-select .select2-container-multi .was-validated .select2-choices:invalid~.invalid-tooltip,.ui-select .select2-container .is-invalid.select2-choice~.invalid-feedback,.ui-select .select2-container .is-invalid.select2-choice~.invalid-tooltip,.ui-select .select2-container .was-validated .select2-choice:invalid~.invalid-feedback,.ui-select .select2-container .was-validated .select2-choice:invalid~.invalid-tooltip,.ui-select .was-validated select:invalid~.invalid-feedback,.ui-select .was-validated select:invalid~.invalid-tooltip,.ui-select select.is-invalid~.invalid-feedback,.ui-select select.is-invalid~.invalid-tooltip,.was-validated .form-control:invalid~.invalid-feedback,.was-validated .form-control:invalid~.invalid-tooltip,.was-validated .search-box-input:invalid~.invalid-feedback,.was-validated .search-box-input:invalid~.invalid-tooltip,.was-validated .ui-form-element-disabled .ui-form-preview:invalid~.invalid-feedback,.was-validated .ui-form-element-disabled .ui-form-preview:invalid~.invalid-tooltip,.was-validated .ui-form-element .ui-form-preview:invalid~.invalid-feedback,.was-validated .ui-form-element .ui-form-preview:invalid~.invalid-tooltip,.was-validated .ui-input:invalid~.invalid-feedback,.was-validated .ui-input:invalid~.invalid-tooltip,.was-validated .ui-options .ui-options-list:invalid~.invalid-feedback,.was-validated .ui-options .ui-options-list:invalid~.invalid-tooltip,.was-validated .ui-select .select2-container-multi .select2-choices:invalid~.invalid-feedback,.was-validated .ui-select .select2-container-multi .select2-choices:invalid~.invalid-tooltip,.was-validated .ui-select .select2-container .select2-choice:invalid~.invalid-feedback,.was-validated .ui-select .select2-container .select2-choice:invalid~.invalid-tooltip,.was-validated .ui-select select:invalid~.invalid-feedback,.was-validated .ui-select select:invalid~.invalid-tooltip,.was-validated .ui-textarea:invalid~.invalid-feedback,.was-validated .ui-textarea:invalid~.invalid-tooltip{display:block}.ui-form-element-disabled .was-validated textarea.ui-form-preview:invalid,.ui-form-element-disabled textarea.is-invalid.ui-form-preview,.ui-form-element .was-validated textarea.ui-form-preview:invalid,.ui-form-element textarea.is-invalid.ui-form-preview,.ui-options .was-validated textarea.ui-options-list:invalid,.ui-options textarea.is-invalid.ui-options-list,.ui-select .select2-container-multi .was-validated textarea.select2-choices:invalid,.ui-select .select2-container-multi textarea.is-invalid.select2-choices,.ui-select .select2-container .was-validated textarea.select2-choice:invalid,.ui-select .select2-container textarea.is-invalid.select2-choice,.was-validated .ui-form-element-disabled textarea.ui-form-preview:invalid,.was-validated .ui-form-element textarea.ui-form-preview:invalid,.was-validated .ui-options textarea.ui-options-list:invalid,.was-validated .ui-select .select2-container-multi textarea.select2-choices:invalid,.was-validated .ui-select .select2-container textarea.select2-choice:invalid,.was-validated textarea.form-control:invalid,.was-validated textarea.search-box-input:invalid,.was-validated textarea.ui-input:invalid,.was-validated textarea.ui-textarea:invalid,textarea.form-control.is-invalid,textarea.is-invalid.search-box-input,textarea.is-invalid.ui-input,textarea.is-invalid.ui-textarea{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:#e31a1e;padding-right:calc((3em + 2.25rem)/4 + 1.75rem);background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23404862' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23e31a1e' viewBox='-2 -2 7 7'%3E%3Cpath stroke='%23e31a1e' d='M0 0l3 3m0-3L0 3'/%3E%3Ccircle r='.5'/%3E%3Ccircle cx='3' r='.5'/%3E%3Ccircle cy='3' r='.5'/%3E%3Ccircle cx='3' cy='3' r='.5'/%3E%3C/svg%3E") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#e31a1e;box-shadow:0 0 0 .2rem rgba(227,26,30,.25)}.custom-select.is-invalid~.invalid-feedback,.custom-select.is-invalid~.invalid-tooltip,.form-control-file.is-invalid~.invalid-feedback,.form-control-file.is-invalid~.invalid-tooltip,.was-validated .custom-select:invalid~.invalid-feedback,.was-validated .custom-select:invalid~.invalid-tooltip,.was-validated .form-control-file:invalid~.invalid-feedback,.was-validated .form-control-file:invalid~.invalid-tooltip{display:block}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#e31a1e}.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:#e31a1e}.custom-control-input.is-invalid~.custom-control-label:before,.was-validated .custom-control-input:invalid~.custom-control-label:before{border-color:#e31a1e}.custom-control-input.is-invalid~.invalid-feedback,.custom-control-input.is-invalid~.invalid-tooltip,.was-validated .custom-control-input:invalid~.invalid-feedback,.was-validated .custom-control-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid:checked~.custom-control-label:before,.was-validated .custom-control-input:invalid:checked~.custom-control-label:before{border-color:#ea4649;background-color:#ea4649}.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(227,26,30,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label:before,.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#e31a1e}.custom-file-input.is-invalid~.invalid-feedback,.custom-file-input.is-invalid~.invalid-tooltip,.was-validated .custom-file-input:invalid~.invalid-feedback,.was-validated .custom-file-input:invalid~.invalid-tooltip{display:block}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#e31a1e;box-shadow:0 0 0 .2rem rgba(227,26,30,.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{justify-content:center}.form-inline .form-group,.form-inline label{display:flex;align-items:center;margin-bottom:0}.form-inline .form-group{flex:0 0 auto;flex-flow:row wrap}.form-inline .form-control,.form-inline .search-box-input,.form-inline .ui-form-element-disabled .ui-form-preview,.form-inline .ui-form-element .ui-form-preview,.form-inline .ui-input,.form-inline .ui-options .ui-options-list,.form-inline .ui-select .select2-container-multi .select2-choices,.form-inline .ui-select .select2-container .select2-choice,.form-inline .ui-select select,.form-inline .ui-textarea,.ui-form-element-disabled .form-inline .ui-form-preview,.ui-form-element .form-inline .ui-form-preview,.ui-options .form-inline .ui-options-list,.ui-select .form-inline select,.ui-select .select2-container-multi .form-inline .select2-choices,.ui-select .select2-container .form-inline .select2-choice{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}}.action-button,.btn,.delete-terminal,.menubutton,button,input[type=submit]{display:inline-block;font-weight:400;color:#2c3143;text-align:center;vertical-align:middle;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:.85rem;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){.action-button,.btn,.delete-terminal,.menubutton,button,input[type=submit]{transition:none}}.action-button:hover,.btn:hover,.delete-terminal:hover,.menubutton:hover,button:hover,input:hover[type=submit]{color:#2c3143;text-decoration:none}.action-button:focus,.btn.focus,.btn:focus,.delete-terminal:focus,.focus.action-button,.focus.delete-terminal,.focus.menubutton,.menubutton:focus,button.focus,button:focus,input.focus[type=submit],input:focus[type=submit]{outline:0;box-shadow:0 0 0 .2rem rgba(37,83,123,.25)}.action-button:disabled,.btn.disabled,.btn:disabled,.delete-terminal:disabled,.disabled.action-button,.disabled.delete-terminal,.disabled.menubutton,.menubutton:disabled,button.disabled,button:disabled,input.disabled[type=submit],input:disabled[type=submit]{opacity:.65}a.btn.disabled,a.disabled.action-button,a.disabled.delete-terminal,a.disabled.menubutton,fieldset:disabled a.action-button,fieldset:disabled a.btn,fieldset:disabled a.delete-terminal,fieldset:disabled a.menubutton{pointer-events:none}.btn-primary,.delete-terminal,button.btn-primary,input.btn-primary[type=submit]{color:#fff;background-color:#25537b;border-color:#25537b}.btn-primary:hover,.delete-terminal:hover,input.btn-primary:hover[type=submit]{color:#fff;background-color:#1c3f5e;border-color:#193954}.btn-primary.focus,.btn-primary:focus,.delete-terminal:focus,.focus.delete-terminal,input.btn-primary:focus[type=submit],input.focus.btn-primary[type=submit]{box-shadow:0 0 0 .2rem rgba(70,109,143,.5)}.btn-primary.disabled,.btn-primary:disabled,.delete-terminal:disabled,.disabled.delete-terminal,input.btn-primary:disabled[type=submit],input.disabled.btn-primary[type=submit]{color:#fff;background-color:#25537b;border-color:#25537b}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.delete-terminal:not(:disabled):not(.disabled).active,.delete-terminal:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle,.show>.dropdown-toggle.delete-terminal{color:#fff;background-color:#193954;border-color:#16324a}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.delete-terminal:not(:disabled):not(.disabled).active:focus,.delete-terminal:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus,.show>.dropdown-toggle.delete-terminal:focus{box-shadow:0 0 0 .2rem rgba(70,109,143,.5)}.action-button,.btn-default,.btn-secondary,.menubutton,button,input[type=submit]{color:#2c3143;background-color:#dee2e6;border-color:#dee2e6}.action-button:hover,.btn-default:hover,.btn-secondary:hover,.menubutton:hover,button:hover,input:hover[type=submit]{color:#2c3143;background-color:#c8cfd6;border-color:#c1c9d0}.action-button:focus,.btn-default:focus,.btn-secondary.focus,.btn-secondary:focus,.focus.action-button,.focus.btn-default,.focus.menubutton,.menubutton:focus,button.focus,button:focus,input.focus[type=submit],input:focus[type=submit]{box-shadow:0 0 0 .2rem rgba(195,199,206,.5)}.action-button:disabled,.btn-default:disabled,.btn-secondary.disabled,.btn-secondary:disabled,.disabled.action-button,.disabled.btn-default,.disabled.menubutton,.menubutton:disabled,button.disabled,button:disabled,input.disabled[type=submit],input:disabled[type=submit]{color:#2c3143;background-color:#dee2e6;border-color:#dee2e6}.action-button:not(:disabled):not(.disabled).active,.action-button:not(:disabled):not(.disabled):active,.btn-default:not(:disabled):not(.disabled).active,.btn-default:not(:disabled):not(.disabled):active,.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.menubutton:not(:disabled):not(.disabled).active,.menubutton:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle,.show>.dropdown-toggle.action-button,.show>.dropdown-toggle.btn-default,.show>.dropdown-toggle.menubutton,.show>button.dropdown-toggle,.show>input.dropdown-toggle[type=submit],button:not(:disabled):not(.disabled).active,button:not(:disabled):not(.disabled):active,input:not(:disabled):not(.disabled).active[type=submit],input:not(:disabled):not(.disabled):active[type=submit]{color:#2c3143;background-color:#c1c9d0;border-color:#bac2cb}.action-button:not(:disabled):not(.disabled).active:focus,.action-button:not(:disabled):not(.disabled):active:focus,.btn-default:not(:disabled):not(.disabled).active:focus,.btn-default:not(:disabled):not(.disabled):active:focus,.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.menubutton:not(:disabled):not(.disabled).active:focus,.menubutton:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus,.show>.dropdown-toggle.action-button:focus,.show>.dropdown-toggle.btn-default:focus,.show>.dropdown-toggle.menubutton:focus,.show>button.dropdown-toggle:focus,.show>input.dropdown-toggle:focus[type=submit],button:not(:disabled):not(.disabled).active:focus,button:not(:disabled):not(.disabled):active:focus,input:not(:disabled):not(.disabled).active:focus[type=submit],input:not(:disabled):not(.disabled):active:focus[type=submit]{box-shadow:0 0 0 .2rem rgba(195,199,206,.5)}.btn-success{color:#2c3143;background-color:#6c6;border-color:#6c6}.btn-success:hover{color:#fff;background-color:#49c249;border-color:#40bf40}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(93,181,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#2c3143;background-color:#6c6;border-color:#6c6}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#40bf40;border-color:#3db63d}.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(93,181,97,.5)}.btn-info{color:#fff;background-color:#2077b3;border-color:#2077b3}.btn-info:hover{color:#fff;background-color:#1a6193;border-color:#185a88}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(65,139,190,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#2077b3;border-color:#2077b3}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#185a88;border-color:#16537d}.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(65,139,190,.5)}.btn-warning{color:#2c3143;background-color:#fe7f02;border-color:#fe7f02}.btn-warning:hover{color:#fff;background-color:#d96c01;border-color:#cc6601}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(223,115,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#2c3143;background-color:#fe7f02;border-color:#fe7f02}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#fff;background-color:#cc6601;border-color:#bf5f01}.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(223,115,12,.5)}.btn-danger{color:#fff;background-color:#e31a1e;border-color:#e31a1e}.btn-danger:hover{color:#fff;background-color:#c11619;border-color:#b51518}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(231,60,64,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#e31a1e;border-color:#e31a1e}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#b51518;border-color:#aa1316}.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(231,60,64,.5)}.btn-light{color:#2c3143;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#2c3143;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem rgba(217,219,223,.5)}.btn-light.disabled,.btn-light:disabled{color:#2c3143;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:#2c3143;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(217,219,223,.5)}.btn-dark{color:#fff;background-color:#2c3143;border-color:#2c3143}.btn-dark:hover{color:#fff;background-color:#1d202c;border-color:#181a24}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem rgba(76,80,95,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#2c3143;border-color:#2c3143}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#181a24;border-color:#13151d}.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(76,80,95,.5)}.btn-outline-primary{color:#25537b;border-color:#25537b}.btn-outline-primary:hover{color:#fff;background-color:#25537b;border-color:#25537b}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(37,83,123,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#25537b;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:#25537b;border-color:#25537b}.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(37,83,123,.5)}.btn-outline-secondary{color:#dee2e6;border-color:#dee2e6}.btn-outline-secondary:hover{color:#2c3143;background-color:#dee2e6;border-color:#dee2e6}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(222,226,230,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#dee2e6;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:#2c3143;background-color:#dee2e6;border-color:#dee2e6}.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(222,226,230,.5)}.btn-outline-success{color:#6c6;border-color:#6c6}.btn-outline-success:hover{color:#2c3143;background-color:#6c6;border-color:#6c6}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(102,204,102,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#6c6;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:#2c3143;background-color:#6c6;border-color:#6c6}.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(102,204,102,.5)}.btn-outline-info{color:#2077b3;border-color:#2077b3}.btn-outline-info:hover{color:#fff;background-color:#2077b3;border-color:#2077b3}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(32,119,179,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#2077b3;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:#2077b3;border-color:#2077b3}.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(32,119,179,.5)}.btn-outline-warning{color:#fe7f02;border-color:#fe7f02}.btn-outline-warning:hover{color:#2c3143;background-color:#fe7f02;border-color:#fe7f02}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(254,127,2,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#fe7f02;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:#2c3143;background-color:#fe7f02;border-color:#fe7f02}.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(254,127,2,.5)}.btn-outline-danger{color:#e31a1e;border-color:#e31a1e}.btn-outline-danger:hover{color:#fff;background-color:#e31a1e;border-color:#e31a1e}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(227,26,30,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#e31a1e;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:#e31a1e;border-color:#e31a1e}.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(227,26,30,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#2c3143;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:#2c3143;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:#2c3143;border-color:#2c3143}.btn-outline-dark:hover{color:#fff;background-color:#2c3143;border-color:#2c3143}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(44,49,67,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#2c3143;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:#2c3143;border-color:#2c3143}.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(44,49,67,.5)}.btn-link{font-weight:400;color:#25537b;text-decoration:none}.btn-link:hover{color:#132b40;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline;box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#404862;pointer-events:none}.btn-group-lg>.action-button,.btn-group-lg>.btn,.btn-group-lg>.delete-terminal,.btn-group-lg>.menubutton,.btn-group-lg>button,.btn-group-lg>input[type=submit],.btn-lg{padding:.5rem 1rem;font-size:1.0625rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.action-button,.btn-group-sm>.btn,.btn-group-sm>.delete-terminal,.btn-group-sm>.menubutton,.btn-group-sm>button,.btn-group-sm>input[type=submit],.btn-sm,.btn-xs,.delete-terminal,.multi-panel-history .control-column .action-button,.multi-panel-history .control-column .btn,.multi-panel-history .control-column .delete-terminal,.multi-panel-history .control-column .menubutton,.multi-panel-history .control-column button,.multi-panel-history .control-column input[type=submit],.multi-panel-history .history-column .panel-controls .action-button,.multi-panel-history .history-column .panel-controls .btn,.multi-panel-history .history-column .panel-controls .delete-terminal,.multi-panel-history .history-column .panel-controls .menubutton,.multi-panel-history .history-column .panel-controls button,.multi-panel-history .history-column .panel-controls input[type=submit]{padding:.25rem .5rem;font-size:.74375rem;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}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.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;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:.85rem;color:#2c3143;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(44,49,67,.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;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-toggle:after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";display:none}.dropleft .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty:after{margin-left:0}.dropleft .dropdown-toggle:before{vertical-align: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:#2c3143;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#f8f9fa;text-decoration:none;background-color:#25537b}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#25537b}.dropdown-item.disabled,.dropdown-item:disabled{color:#404862;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.74375rem;color:#404862;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#2c3143}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.action-button,.btn-group-vertical>.btn,.btn-group-vertical>.delete-terminal,.btn-group-vertical>.menubutton,.btn-group-vertical>button,.btn-group-vertical>input[type=submit],.btn-group>.action-button,.btn-group>.btn,.btn-group>.delete-terminal,.btn-group>.menubutton,.btn-group>button,.btn-group>input[type=submit]{position:relative;flex:1 1 auto}.btn-group-vertical>.action-button:active,.btn-group-vertical>.action-button:focus,.btn-group-vertical>.action-button:hover,.btn-group-vertical>.active.action-button,.btn-group-vertical>.active.delete-terminal,.btn-group-vertical>.active.menubutton,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group-vertical>.delete-terminal:active,.btn-group-vertical>.delete-terminal:focus,.btn-group-vertical>.delete-terminal:hover,.btn-group-vertical>.menubutton:active,.btn-group-vertical>.menubutton:focus,.btn-group-vertical>.menubutton:hover,.btn-group-vertical>button.active,.btn-group-vertical>button:active,.btn-group-vertical>button:focus,.btn-group-vertical>button:hover,.btn-group-vertical>input.active[type=submit],.btn-group-vertical>input:active[type=submit],.btn-group-vertical>input:focus[type=submit],.btn-group-vertical>input:hover[type=submit],.btn-group>.action-button:active,.btn-group>.action-button:focus,.btn-group>.action-button:hover,.btn-group>.active.action-button,.btn-group>.active.delete-terminal,.btn-group>.active.menubutton,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover,.btn-group>.delete-terminal:active,.btn-group>.delete-terminal:focus,.btn-group>.delete-terminal:hover,.btn-group>.menubutton:active,.btn-group>.menubutton:focus,.btn-group>.menubutton:hover,.btn-group>button.active,.btn-group>button:active,.btn-group>button:focus,.btn-group>button:hover,.btn-group>input.active[type=submit],.btn-group>input:active[type=submit],.btn-group>input:focus[type=submit],.btn-group>input:hover[type=submit]{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.action-button:not(:first-child),.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child),.btn-group>.delete-terminal:not(:first-child),.btn-group>.menubutton:not(:first-child),.btn-group>button:not(:first-child),.btn-group>input:not(:first-child)[type=submit]{margin-left:-1px}.btn-group>.action-button:not(:last-child):not(.dropdown-toggle),.btn-group>.btn-group:not(:last-child)>.action-button,.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn-group:not(:last-child)>.delete-terminal,.btn-group>.btn-group:not(:last-child)>.menubutton,.btn-group>.btn-group:not(:last-child)>button,.btn-group>.btn-group:not(:last-child)>input[type=submit],.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.delete-terminal:not(:last-child):not(.dropdown-toggle),.btn-group>.menubutton:not(:last-child):not(.dropdown-toggle),.btn-group>button:not(:last-child):not(.dropdown-toggle),.btn-group>input:not(:last-child):not(.dropdown-toggle)[type=submit]{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.action-button:not(:first-child),.btn-group>.btn-group:not(:first-child)>.action-button,.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn-group:not(:first-child)>.delete-terminal,.btn-group>.btn-group:not(:first-child)>.menubutton,.btn-group>.btn-group:not(:first-child)>button,.btn-group>.btn-group:not(:first-child)>input[type=submit],.btn-group>.btn:not(:first-child),.btn-group>.delete-terminal:not(:first-child),.btn-group>.menubutton:not(:first-child),.btn-group>button:not(:first-child),.btn-group>input:not(:first-child)[type=submit]{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>.action-button+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split,.btn-group-sm>.delete-terminal+.dropdown-toggle-split,.btn-group-sm>.menubutton+.dropdown-toggle-split,.btn-group-sm>button+.dropdown-toggle-split,.btn-group-sm>input[type=submit]+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split,.btn-xs+.dropdown-toggle-split,.delete-terminal+.dropdown-toggle-split,.multi-panel-history .control-column .action-button+.dropdown-toggle-split,.multi-panel-history .control-column .btn+.dropdown-toggle-split,.multi-panel-history .control-column .delete-terminal+.dropdown-toggle-split,.multi-panel-history .control-column .menubutton+.dropdown-toggle-split,.multi-panel-history .control-column button+.dropdown-toggle-split,.multi-panel-history .control-column input[type=submit]+.dropdown-toggle-split,.multi-panel-history .history-column .panel-controls .action-button+.dropdown-toggle-split,.multi-panel-history .history-column .panel-controls .btn+.dropdown-toggle-split,.multi-panel-history .history-column .panel-controls .delete-terminal+.dropdown-toggle-split,.multi-panel-history .history-column .panel-controls .menubutton+.dropdown-toggle-split,.multi-panel-history .history-column .panel-controls button+.dropdown-toggle-split,.multi-panel-history .history-column .panel-controls input[type=submit]+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.action-button+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split,.btn-group-lg>.delete-terminal+.dropdown-toggle-split,.btn-group-lg>.menubutton+.dropdown-toggle-split,.btn-group-lg>button+.dropdown-toggle-split,.btn-group-lg>input[type=submit]+.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>.action-button,.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.delete-terminal,.btn-group-vertical>.menubutton,.btn-group-vertical>button,.btn-group-vertical>input[type=submit]{width:100%}.btn-group-vertical>.action-button:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.delete-terminal:not(:first-child),.btn-group-vertical>.menubutton:not(:first-child),.btn-group-vertical>button:not(:first-child),.btn-group-vertical>input:not(:first-child)[type=submit]{margin-top:-1px}.btn-group-vertical>.action-button:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.action-button,.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn-group:not(:last-child)>.delete-terminal,.btn-group-vertical>.btn-group:not(:last-child)>.menubutton,.btn-group-vertical>.btn-group:not(:last-child)>button,.btn-group-vertical>.btn-group:not(:last-child)>input[type=submit],.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.delete-terminal:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.menubutton:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>button:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>input:not(:last-child):not(.dropdown-toggle)[type=submit]{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.action-button:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child)>.action-button,.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn-group:not(:first-child)>.delete-terminal,.btn-group-vertical>.btn-group:not(:first-child)>.menubutton,.btn-group-vertical>.btn-group:not(:first-child)>button,.btn-group-vertical>.btn-group:not(:first-child)>input[type=submit],.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.delete-terminal:not(:first-child),.btn-group-vertical>.menubutton:not(:first-child),.btn-group-vertical>button:not(:first-child),.btn-group-vertical>input:not(:first-child)[type=submit]{border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.action-button,.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.action-button,.btn-group-toggle>.btn-group>.btn,.btn-group-toggle>.btn-group>.delete-terminal,.btn-group-toggle>.btn-group>.menubutton,.btn-group-toggle>.btn-group>button,.btn-group-toggle>.btn-group>input[type=submit],.btn-group-toggle>.delete-terminal,.btn-group-toggle>.menubutton,.btn-group-toggle>button,.btn-group-toggle>input[type=submit]{margin-bottom:0}.btn-group-toggle>.action-button input[type=checkbox],.btn-group-toggle>.action-button input[type=radio],.btn-group-toggle>.btn-group>.action-button input[type=checkbox],.btn-group-toggle>.btn-group>.action-button input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio],.btn-group-toggle>.btn-group>.delete-terminal input[type=checkbox],.btn-group-toggle>.btn-group>.delete-terminal input[type=radio],.btn-group-toggle>.btn-group>.menubutton input[type=checkbox],.btn-group-toggle>.btn-group>.menubutton input[type=radio],.btn-group-toggle>.btn-group>button input[type=checkbox],.btn-group-toggle>.btn-group>button input[type=radio],.btn-group-toggle>.btn-group>input[type=submit] input[type=checkbox],.btn-group-toggle>.btn-group>input[type=submit] input[type=radio],.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.delete-terminal input[type=checkbox],.btn-group-toggle>.delete-terminal input[type=radio],.btn-group-toggle>.menubutton input[type=checkbox],.btn-group-toggle>.menubutton input[type=radio],.btn-group-toggle>button input[type=checkbox],.btn-group-toggle>button input[type=radio],.btn-group-toggle>input[type=submit] input[type=checkbox],.btn-group-toggle>input[type=submit] 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>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext,.input-group>.search-box-input,.input-group>.ui-input,.input-group>.ui-textarea,.ui-form-element-disabled .input-group>.ui-form-preview,.ui-form-element .input-group>.ui-form-preview,.ui-options .input-group>.ui-options-list,.ui-select .input-group>select,.ui-select .select2-container-multi .input-group>.select2-choices,.ui-select .select2-container .input-group>.select2-choice{position:relative;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-file+.search-box-input,.input-group>.custom-file+.ui-input,.input-group>.custom-file+.ui-textarea,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.custom-select+.search-box-input,.input-group>.custom-select+.ui-input,.input-group>.custom-select+.ui-textarea,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control+.search-box-input,.input-group>.form-control+.ui-input,.input-group>.form-control+.ui-textarea,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control,.input-group>.form-control-plaintext+.search-box-input,.input-group>.form-control-plaintext+.ui-input,.input-group>.form-control-plaintext+.ui-textarea,.input-group>.search-box-input+.custom-file,.input-group>.search-box-input+.custom-select,.input-group>.search-box-input+.form-control,.input-group>.search-box-input+.search-box-input,.input-group>.search-box-input+.ui-input,.input-group>.search-box-input+.ui-textarea,.input-group>.ui-input+.custom-file,.input-group>.ui-input+.custom-select,.input-group>.ui-input+.form-control,.input-group>.ui-input+.search-box-input,.input-group>.ui-input+.ui-input,.input-group>.ui-input+.ui-textarea,.input-group>.ui-textarea+.custom-file,.input-group>.ui-textarea+.custom-select,.input-group>.ui-textarea+.form-control,.input-group>.ui-textarea+.search-box-input,.input-group>.ui-textarea+.ui-input,.input-group>.ui-textarea+.ui-textarea,.ui-form-element-disabled .input-group>.custom-file+.ui-form-preview,.ui-form-element-disabled .input-group>.custom-select+.ui-form-preview,.ui-form-element-disabled .input-group>.form-control+.ui-form-preview,.ui-form-element-disabled .input-group>.form-control-plaintext+.ui-form-preview,.ui-form-element-disabled .input-group>.search-box-input+.ui-form-preview,.ui-form-element-disabled .input-group>.ui-form-preview+.custom-file,.ui-form-element-disabled .input-group>.ui-form-preview+.custom-select,.ui-form-element-disabled .input-group>.ui-form-preview+.form-control,.ui-form-element-disabled .input-group>.ui-form-preview+.search-box-input,.ui-form-element-disabled .input-group>.ui-form-preview+.ui-form-preview,.ui-form-element-disabled .input-group>.ui-form-preview+.ui-input,.ui-form-element-disabled .input-group>.ui-form-preview+.ui-textarea,.ui-form-element-disabled .input-group>.ui-input+.ui-form-preview,.ui-form-element-disabled .input-group>.ui-textarea+.ui-form-preview,.ui-form-element-disabled .ui-options .input-group>.ui-form-preview+.ui-options-list,.ui-form-element-disabled .ui-options .input-group>.ui-options-list+.ui-form-preview,.ui-form-element-disabled .ui-select .input-group>.ui-form-preview+select,.ui-form-element-disabled .ui-select .input-group>select+.ui-form-preview,.ui-form-element-disabled .ui-select .select2-container-multi .input-group>.select2-choices+.ui-form-preview,.ui-form-element-disabled .ui-select .select2-container-multi .input-group>.ui-form-preview+.select2-choices,.ui-form-element-disabled .ui-select .select2-container .input-group>.select2-choice+.ui-form-preview,.ui-form-element-disabled .ui-select .select2-container .input-group>.ui-form-preview+.select2-choice,.ui-form-element .input-group>.custom-file+.ui-form-preview,.ui-form-element .input-group>.custom-select+.ui-form-preview,.ui-form-element .input-group>.form-control+.ui-form-preview,.ui-form-element .input-group>.form-control-plaintext+.ui-form-preview,.ui-form-element .input-group>.search-box-input+.ui-form-preview,.ui-form-element .input-group>.ui-form-preview+.custom-file,.ui-form-element .input-group>.ui-form-preview+.custom-select,.ui-form-element .input-group>.ui-form-preview+.form-control,.ui-form-element .input-group>.ui-form-preview+.search-box-input,.ui-form-element .input-group>.ui-form-preview+.ui-form-preview,.ui-form-element .input-group>.ui-form-preview+.ui-input,.ui-form-element .input-group>.ui-form-preview+.ui-textarea,.ui-form-element .input-group>.ui-input+.ui-form-preview,.ui-form-element .input-group>.ui-textarea+.ui-form-preview,.ui-form-element .ui-options .input-group>.ui-form-preview+.ui-options-list,.ui-form-element .ui-options .input-group>.ui-options-list+.ui-form-preview,.ui-form-element .ui-select .input-group>.ui-form-preview+select,.ui-form-element .ui-select .input-group>select+.ui-form-preview,.ui-form-element .ui-select .select2-container-multi .input-group>.select2-choices+.ui-form-preview,.ui-form-element .ui-select .select2-container-multi .input-group>.ui-form-preview+.select2-choices,.ui-form-element .ui-select .select2-container .input-group>.select2-choice+.ui-form-preview,.ui-form-element .ui-select .select2-container .input-group>.ui-form-preview+.select2-choice,.ui-options .input-group>.custom-file+.ui-options-list,.ui-options .input-group>.custom-select+.ui-options-list,.ui-options .input-group>.form-control+.ui-options-list,.ui-options .input-group>.form-control-plaintext+.ui-options-list,.ui-options .input-group>.search-box-input+.ui-options-list,.ui-options .input-group>.ui-input+.ui-options-list,.ui-options .input-group>.ui-options-list+.custom-file,.ui-options .input-group>.ui-options-list+.custom-select,.ui-options .input-group>.ui-options-list+.form-control,.ui-options .input-group>.ui-options-list+.search-box-input,.ui-options .input-group>.ui-options-list+.ui-input,.ui-options .input-group>.ui-options-list+.ui-options-list,.ui-options .input-group>.ui-options-list+.ui-textarea,.ui-options .input-group>.ui-textarea+.ui-options-list,.ui-options .ui-form-element-disabled .input-group>.ui-form-preview+.ui-options-list,.ui-options .ui-form-element-disabled .input-group>.ui-options-list+.ui-form-preview,.ui-options .ui-form-element .input-group>.ui-form-preview+.ui-options-list,.ui-options .ui-form-element .input-group>.ui-options-list+.ui-form-preview,.ui-options .ui-select .input-group>.ui-options-list+select,.ui-options .ui-select .input-group>select+.ui-options-list,.ui-options .ui-select .select2-container-multi .input-group>.select2-choices+.ui-options-list,.ui-options .ui-select .select2-container-multi .input-group>.ui-options-list+.select2-choices,.ui-options .ui-select .select2-container .input-group>.select2-choice+.ui-options-list,.ui-options .ui-select .select2-container .input-group>.ui-options-list+.select2-choice,.ui-select .input-group>.custom-file+select,.ui-select .input-group>.custom-select+select,.ui-select .input-group>.form-control+select,.ui-select .input-group>.form-control-plaintext+select,.ui-select .input-group>.search-box-input+select,.ui-select .input-group>.ui-input+select,.ui-select .input-group>.ui-textarea+select,.ui-select .input-group>select+.custom-file,.ui-select .input-group>select+.custom-select,.ui-select .input-group>select+.form-control,.ui-select .input-group>select+.search-box-input,.ui-select .input-group>select+.ui-input,.ui-select .input-group>select+.ui-textarea,.ui-select .input-group>select+select,.ui-select .select2-container-multi .input-group>.custom-file+.select2-choices,.ui-select .select2-container-multi .input-group>.custom-select+.select2-choices,.ui-select .select2-container-multi .input-group>.form-control+.select2-choices,.ui-select .select2-container-multi .input-group>.form-control-plaintext+.select2-choices,.ui-select .select2-container-multi .input-group>.search-box-input+.select2-choices,.ui-select .select2-container-multi .input-group>.select2-choices+.custom-file,.ui-select .select2-container-multi .input-group>.select2-choices+.custom-select,.ui-select .select2-container-multi .input-group>.select2-choices+.form-control,.ui-select .select2-container-multi .input-group>.select2-choices+.search-box-input,.ui-select .select2-container-multi .input-group>.select2-choices+.select2-choices,.ui-select .select2-container-multi .input-group>.select2-choices+.ui-input,.ui-select .select2-container-multi .input-group>.select2-choices+.ui-textarea,.ui-select .select2-container-multi .input-group>.select2-choices+select,.ui-select .select2-container-multi .input-group>.ui-input+.select2-choices,.ui-select .select2-container-multi .input-group>.ui-textarea+.select2-choices,.ui-select .select2-container-multi .input-group>select+.select2-choices,.ui-select .select2-container-multi .select2-container .input-group>.select2-choice+.select2-choices,.ui-select .select2-container-multi .select2-container .input-group>.select2-choices+.select2-choice,.ui-select .select2-container-multi .ui-form-element-disabled .input-group>.select2-choices+.ui-form-preview,.ui-select .select2-container-multi .ui-form-element-disabled .input-group>.ui-form-preview+.select2-choices,.ui-select .select2-container-multi .ui-form-element .input-group>.select2-choices+.ui-form-preview,.ui-select .select2-container-multi .ui-form-element .input-group>.ui-form-preview+.select2-choices,.ui-select .select2-container-multi .ui-options .input-group>.select2-choices+.ui-options-list,.ui-select .select2-container-multi .ui-options .input-group>.ui-options-list+.select2-choices,.ui-select .select2-container .input-group>.custom-file+.select2-choice,.ui-select .select2-container .input-group>.custom-select+.select2-choice,.ui-select .select2-container .input-group>.form-control+.select2-choice,.ui-select .select2-container .input-group>.form-control-plaintext+.select2-choice,.ui-select .select2-container .input-group>.search-box-input+.select2-choice,.ui-select .select2-container .input-group>.select2-choice+.custom-file,.ui-select .select2-container .input-group>.select2-choice+.custom-select,.ui-select .select2-container .input-group>.select2-choice+.form-control,.ui-select .select2-container .input-group>.select2-choice+.search-box-input,.ui-select .select2-container .input-group>.select2-choice+.select2-choice,.ui-select .select2-container .input-group>.select2-choice+.ui-input,.ui-select .select2-container .input-group>.select2-choice+.ui-textarea,.ui-select .select2-container .input-group>.select2-choice+select,.ui-select .select2-container .input-group>.ui-input+.select2-choice,.ui-select .select2-container .input-group>.ui-textarea+.select2-choice,.ui-select .select2-container .input-group>select+.select2-choice,.ui-select .select2-container .select2-container-multi .input-group>.select2-choice+.select2-choices,.ui-select .select2-container .select2-container-multi .input-group>.select2-choices+.select2-choice,.ui-select .select2-container .ui-form-element-disabled .input-group>.select2-choice+.ui-form-preview,.ui-select .select2-container .ui-form-element-disabled .input-group>.ui-form-preview+.select2-choice,.ui-select .select2-container .ui-form-element .input-group>.select2-choice+.ui-form-preview,.ui-select .select2-container .ui-form-element .input-group>.ui-form-preview+.select2-choice,.ui-select .select2-container .ui-options .input-group>.select2-choice+.ui-options-list,.ui-select .select2-container .ui-options .input-group>.ui-options-list+.select2-choice,.ui-select .ui-form-element-disabled .input-group>.ui-form-preview+select,.ui-select .ui-form-element-disabled .input-group>select+.ui-form-preview,.ui-select .ui-form-element .input-group>.ui-form-preview+select,.ui-select .ui-form-element .input-group>select+.ui-form-preview,.ui-select .ui-options .input-group>.ui-options-list+select,.ui-select .ui-options .input-group>select+.ui-options-list{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus,.input-group>.search-box-input:focus,.input-group>.ui-input:focus,.input-group>.ui-textarea:focus,.ui-form-element-disabled .input-group>.ui-form-preview:focus,.ui-form-element .input-group>.ui-form-preview:focus,.ui-options .input-group>.ui-options-list:focus,.ui-select .input-group>select:focus,.ui-select .select2-container-multi .input-group>.select2-choices:focus,.ui-select .select2-container .input-group>.select2-choice:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child),.input-group>.search-box-input:not(:last-child),.input-group>.ui-input:not(:last-child),.input-group>.ui-textarea:not(:last-child),.ui-form-element-disabled .input-group>.ui-form-preview:not(:last-child),.ui-form-element .input-group>.ui-form-preview:not(:last-child),.ui-options .input-group>.ui-options-list:not(:last-child),.ui-select .input-group>select:not(:last-child),.ui-select .select2-container-multi .input-group>.select2-choices:not(:last-child),.ui-select .select2-container .input-group>.select2-choice:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child),.input-group>.search-box-input:not(:first-child),.input-group>.ui-input:not(:first-child),.input-group>.ui-textarea:not(:first-child),.ui-form-element-disabled .input-group>.ui-form-preview:not(:first-child),.ui-form-element .input-group>.ui-form-preview:not(:first-child),.ui-options .input-group>.ui-options-list:not(:first-child),.ui-select .input-group>select:not(:first-child),.ui-select .select2-container-multi .input-group>.select2-choices:not(:first-child),.ui-select .select2-container .input-group>.select2-choice: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 .action-button,.input-group-append .btn,.input-group-append .delete-terminal,.input-group-append .menubutton,.input-group-append button,.input-group-append input[type=submit],.input-group-prepend .action-button,.input-group-prepend .btn,.input-group-prepend .delete-terminal,.input-group-prepend .menubutton,.input-group-prepend button,.input-group-prepend input[type=submit]{position:relative;z-index:2}.input-group-append .action-button:focus,.input-group-append .btn:focus,.input-group-append .delete-terminal:focus,.input-group-append .menubutton:focus,.input-group-append button:focus,.input-group-append input:focus[type=submit],.input-group-prepend .action-button:focus,.input-group-prepend .btn:focus,.input-group-prepend .delete-terminal:focus,.input-group-prepend .menubutton:focus,.input-group-prepend button:focus,.input-group-prepend input:focus[type=submit]{z-index:3}.input-group-append .action-button+.action-button,.input-group-append .action-button+.btn,.input-group-append .action-button+.delete-terminal,.input-group-append .action-button+.input-group-text,.input-group-append .action-button+.menubutton,.input-group-append .action-button+button,.input-group-append .action-button+input[type=submit],.input-group-append .btn+.action-button,.input-group-append .btn+.btn,.input-group-append .btn+.delete-terminal,.input-group-append .btn+.input-group-text,.input-group-append .btn+.menubutton,.input-group-append .btn+button,.input-group-append .btn+input[type=submit],.input-group-append .delete-terminal+.action-button,.input-group-append .delete-terminal+.btn,.input-group-append .delete-terminal+.delete-terminal,.input-group-append .delete-terminal+.input-group-text,.input-group-append .delete-terminal+.menubutton,.input-group-append .delete-terminal+button,.input-group-append .delete-terminal+input[type=submit],.input-group-append .input-group-text+.action-button,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.delete-terminal,.input-group-append .input-group-text+.input-group-text,.input-group-append .input-group-text+.menubutton,.input-group-append .input-group-text+button,.input-group-append .input-group-text+input[type=submit],.input-group-append .menubutton+.action-button,.input-group-append .menubutton+.btn,.input-group-append .menubutton+.delete-terminal,.input-group-append .menubutton+.input-group-text,.input-group-append .menubutton+.menubutton,.input-group-append .menubutton+button,.input-group-append .menubutton+input[type=submit],.input-group-append button+.action-button,.input-group-append button+.btn,.input-group-append button+.delete-terminal,.input-group-append button+.input-group-text,.input-group-append button+.menubutton,.input-group-append button+button,.input-group-append button+input[type=submit],.input-group-append input[type=submit]+.action-button,.input-group-append input[type=submit]+.btn,.input-group-append input[type=submit]+.delete-terminal,.input-group-append input[type=submit]+.input-group-text,.input-group-append input[type=submit]+.menubutton,.input-group-append input[type=submit]+button,.input-group-append input[type=submit]+input[type=submit],.input-group-prepend .action-button+.action-button,.input-group-prepend .action-button+.btn,.input-group-prepend .action-button+.delete-terminal,.input-group-prepend .action-button+.input-group-text,.input-group-prepend .action-button+.menubutton,.input-group-prepend .action-button+button,.input-group-prepend .action-button+input[type=submit],.input-group-prepend .btn+.action-button,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.delete-terminal,.input-group-prepend .btn+.input-group-text,.input-group-prepend .btn+.menubutton,.input-group-prepend .btn+button,.input-group-prepend .btn+input[type=submit],.input-group-prepend .delete-terminal+.action-button,.input-group-prepend .delete-terminal+.btn,.input-group-prepend .delete-terminal+.delete-terminal,.input-group-prepend .delete-terminal+.input-group-text,.input-group-prepend .delete-terminal+.menubutton,.input-group-prepend .delete-terminal+button,.input-group-prepend .delete-terminal+input[type=submit],.input-group-prepend .input-group-text+.action-button,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.delete-terminal,.input-group-prepend .input-group-text+.input-group-text,.input-group-prepend .input-group-text+.menubutton,.input-group-prepend .input-group-text+button,.input-group-prepend .input-group-text+input[type=submit],.input-group-prepend .menubutton+.action-button,.input-group-prepend .menubutton+.btn,.input-group-prepend .menubutton+.delete-terminal,.input-group-prepend .menubutton+.input-group-text,.input-group-prepend .menubutton+.menubutton,.input-group-prepend .menubutton+button,.input-group-prepend .menubutton+input[type=submit],.input-group-prepend button+.action-button,.input-group-prepend button+.btn,.input-group-prepend button+.delete-terminal,.input-group-prepend button+.input-group-text,.input-group-prepend button+.menubutton,.input-group-prepend button+button,.input-group-prepend button+input[type=submit],.input-group-prepend input[type=submit]+.action-button,.input-group-prepend input[type=submit]+.btn,.input-group-prepend input[type=submit]+.delete-terminal,.input-group-prepend input[type=submit]+.input-group-text,.input-group-prepend input[type=submit]+.menubutton,.input-group-prepend input[type=submit]+button,.input-group-prepend input[type=submit]+input[type=submit]{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:.85rem;font-weight:400;line-height:1.5;color:#2c3143;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #c7cbda;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea),.input-group-lg>.search-box-input:not(textarea),.input-group-lg>.ui-input:not(textarea),.input-group-lg>.ui-textarea:not(textarea),.ui-form-element-disabled .input-group-lg>.ui-form-preview:not(textarea),.ui-form-element .input-group-lg>.ui-form-preview:not(textarea),.ui-options .input-group-lg>.ui-options-list:not(textarea),.ui-select .input-group-lg>select:not(textarea),.ui-select .select2-container-multi .input-group-lg>.select2-choices:not(textarea),.ui-select .select2-container .input-group-lg>.select2-choice:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.action-button,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.delete-terminal,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-append>.menubutton,.input-group-lg>.input-group-append>button,.input-group-lg>.input-group-append>input[type=submit],.input-group-lg>.input-group-prepend>.action-button,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.delete-terminal,.input-group-lg>.input-group-prepend>.input-group-text,.input-group-lg>.input-group-prepend>.menubutton,.input-group-lg>.input-group-prepend>button,.input-group-lg>.input-group-prepend>input[type=submit],.input-group-lg>.search-box-input,.input-group-lg>.ui-input,.input-group-lg>.ui-textarea,.ui-form-element-disabled .input-group-lg>.ui-form-preview,.ui-form-element .input-group-lg>.ui-form-preview,.ui-options .input-group-lg>.ui-options-list,.ui-select .input-group-lg>select,.ui-select .select2-container-multi .input-group-lg>.select2-choices,.ui-select .select2-container .input-group-lg>.select2-choice{padding:.5rem 1rem;font-size:1.0625rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea),.input-group-sm>.search-box-input:not(textarea),.input-group-sm>.ui-input:not(textarea),.input-group-sm>.ui-textarea:not(textarea),.ui-form-element-disabled .input-group-sm>.ui-form-preview:not(textarea),.ui-form-element .input-group-sm>.ui-form-preview:not(textarea),.ui-options .input-group-sm>.ui-options-list:not(textarea),.ui-select .input-group-sm>select:not(textarea),.ui-select .select2-container-multi .input-group-sm>.select2-choices:not(textarea),.ui-select .select2-container .input-group-sm>.select2-choice:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.action-button,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.delete-terminal,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-append>.menubutton,.input-group-sm>.input-group-append>button,.input-group-sm>.input-group-append>input[type=submit],.input-group-sm>.input-group-prepend>.action-button,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.delete-terminal,.input-group-sm>.input-group-prepend>.input-group-text,.input-group-sm>.input-group-prepend>.menubutton,.input-group-sm>.input-group-prepend>button,.input-group-sm>.input-group-prepend>input[type=submit],.input-group-sm>.search-box-input,.input-group-sm>.ui-input,.input-group-sm>.ui-textarea,.ui-form-element-disabled .input-group-sm>.ui-form-preview,.ui-form-element .input-group-sm>.ui-form-preview,.ui-options .input-group-sm>.ui-options-list,.ui-select .input-group-sm>select,.ui-select .select2-container-multi .input-group-sm>.select2-choices,.ui-select .select2-container .input-group-sm>.select2-choice{padding:.25rem .5rem;font-size:.74375rem;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>.action-button:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.delete-terminal:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:last-child>.menubutton:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>button:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>input:not(:last-child):not(.dropdown-toggle)[type=submit],.input-group>.input-group-append:not(:last-child)>.action-button,.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.delete-terminal,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:not(:last-child)>.menubutton,.input-group>.input-group-append:not(:last-child)>button,.input-group>.input-group-append:not(:last-child)>input[type=submit],.input-group>.input-group-prepend>.action-button,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.delete-terminal,.input-group>.input-group-prepend>.input-group-text,.input-group>.input-group-prepend>.menubutton,.input-group>.input-group-prepend>button,.input-group>.input-group-prepend>input[type=submit]{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.action-button,.input-group>.input-group-append>.btn,.input-group>.input-group-append>.delete-terminal,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-append>.menubutton,.input-group>.input-group-append>button,.input-group>.input-group-append>input[type=submit],.input-group>.input-group-prepend:first-child>.action-button:not(:first-child),.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.delete-terminal:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:first-child>.menubutton:not(:first-child),.input-group>.input-group-prepend:first-child>button:not(:first-child),.input-group>.input-group-prepend:first-child>input:not(:first-child)[type=submit],.input-group>.input-group-prepend:not(:first-child)>.action-button,.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.delete-terminal,.input-group>.input-group-prepend:not(:first-child)>.input-group-text,.input-group>.input-group-prepend:not(:first-child)>.menubutton,.input-group>.input-group-prepend:not(:first-child)>button,.input-group>.input-group-prepend:not(:first-child)>input[type=submit]{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.275rem;padding-left:1.5rem}.custom-control-inline{display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-label:before{color:#fff;border-color:#25537b;background-color:#25537b}.custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem rgba(37,83,123,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label:before{border-color:#5494cc}.custom-control-input:not(:disabled):active~.custom-control-label:before{color:#fff;background-color:#7bacd7;border-color:#7bacd7}.custom-control-input:disabled~.custom-control-label{color:#404862}.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{pointer-events:none;background-color:#fff;border:1px solid #404862}.custom-control-label:after,.custom-control-label:before{position:absolute;top:.1375rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:""}.custom-control-label:after{background:no-repeat 50%/50% 50%}.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;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' 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:#25537b;background-color:#25537b}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' 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(37,83,123,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label:before{background-color:rgba(37,83,123,.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;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' 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(37,83,123,.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(.1375rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#404862;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}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label:after{transition:none}}.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(37,83,123,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:.85rem;font-weight:400;line-height:1.5;color:#2c3143;vertical-align:middle;background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23404862' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center/8px 10px;background-color:#fff;border:1px solid #c7cbda;border-radius:.25rem;appearance:none}.custom-select:focus{border-color:#5494cc;outline:0;box-shadow:0 0 0 .2rem rgba(37,83,123,.25)}.custom-select:focus::-ms-value{color:#2c3143;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#404862;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.74375rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.0625rem}.custom-file{display:inline-block;margin-bottom:0}.custom-file,.custom-file-input{position:relative;width:100%;height:calc(1.5em + .75rem + 2px)}.custom-file-input{z-index:2;margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#5494cc;box-shadow:0 0 0 .2rem rgba(37,83,123,.25)}.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{left:0;z-index:1;height:calc(1.5em + .75rem + 2px);font-weight:400;background-color:#fff;border:1px solid #c7cbda;border-radius:.25rem}.custom-file-label,.custom-file-label:after{position:absolute;top:0;right:0;padding:.375rem .75rem;line-height:1.5;color:#2c3143}.custom-file-label:after{bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);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;appearance:none}.custom-range:focus{outline:none}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(37,83,123,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(37,83,123,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(37,83,123,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#25537b;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::-webkit-slider-thumb{transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#7bacd7}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dae0e5;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#25537b;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::-moz-range-thumb{transition:none}}.custom-range::-moz-range-thumb:active{background-color:#7bacd7}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dae0e5;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:#25537b;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:#7bacd7}.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,.custom-range::-ms-fill-upper{background-color:#dae0e5;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px}.custom-range:disabled::-webkit-slider-thumb{background-color:#404862}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#404862}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#404862}.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:#404862;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dae0e5}.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 #dae0e5}.nav-tabs .nav-link.disabled{color:#404862;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#404862;background-color:#fff;border-color:#dae0e5 #dae0e5 #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:#25537b}.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;padding:.5rem 1rem}.navbar,.navbar>.container,.navbar>.container-fluid{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.34062rem;padding-bottom:.34062rem;margin-right:1rem;font-size:1.0625rem;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.0625rem;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:no-repeat 50%;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{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{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{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{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{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{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{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{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>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.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{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(44,49,67,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(44,49,67,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(44,49,67,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(44,49,67,.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(44,49,67,.9)}.navbar-light .navbar-toggler{color:rgba(44,49,67,.5);border-color:rgba(44,49,67,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(44,49,67,0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(44,49,67,.5)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(44,49,67,.9)}.navbar-dark .navbar-brand,.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:hsla(0,0%,100%,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:hsla(0,0%,100%,.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:hsla(0,0%,100%,.5);border-color:hsla(0,0%,100%,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255,255,255,0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card,.toolForm.toolFormInCanvas,.ui-portlet,.ui-portlet-section{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(44,49,67,.125);border-radius:.25rem}.card>hr,.toolForm.toolFormInCanvas>hr,.ui-portlet-section>hr,.ui-portlet>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child,.toolForm.toolFormInCanvas>.list-group:first-child .list-group-item:first-child,.ui-portlet-section>.list-group:first-child .list-group-item:first-child,.ui-portlet>.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,.toolForm.toolFormInCanvas>.list-group:last-child .list-group-item:last-child,.ui-portlet-section>.list-group:last-child .list-group-item:last-child,.ui-portlet>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body,.toolForm.toolFormInCanvas .toolFormBody,.ui-portlet-section>.portlet-content,.ui-portlet>.portlet-content{flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem}.card-subtitle,.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header,.toolForm.toolFormInCanvas .toolFormTitle,.ui-portlet-section .portlet-header:first-child,.ui-portlet .portlet-header:first-child{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(44,49,67,.03);border-bottom:1px solid rgba(44,49,67,.125)}.card-header:first-child,.toolForm.toolFormInCanvas .toolFormTitle:first-child,.ui-portlet-section .portlet-header:first-child,.ui-portlet .portlet-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child,.toolForm.toolFormInCanvas .toolFormTitle+.list-group .list-group-item:first-child,.ui-portlet-section .portlet-header:first-child+.list-group .list-group-item:first-child,.ui-portlet .portlet-header:first-child+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(44,49,67,.03);border-top:1px solid rgba(44,49,67,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-bottom:-.75rem;border-bottom:0}.card-header-pills,.card-header-tabs{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:flex;flex-direction:column}.card-deck .card,.card-deck .toolForm.toolFormInCanvas,.card-deck .ui-portlet,.card-deck .ui-portlet-section{margin-bottom:15px}@media (min-width:576px){.card-deck{flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card,.card-deck .toolForm.toolFormInCanvas,.card-deck .ui-portlet,.card-deck .ui-portlet-section{display:flex;flex:1 0 0%;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:flex;flex-direction:column}.card-group>.card,.card-group>.toolForm.toolFormInCanvas,.card-group>.ui-portlet,.card-group>.ui-portlet-section{margin-bottom:15px}@media (min-width:576px){.card-group{flex-flow:row wrap}.card-group>.card,.card-group>.toolForm.toolFormInCanvas,.card-group>.ui-portlet,.card-group>.ui-portlet-section{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card,.card-group>.card+.toolForm.toolFormInCanvas,.card-group>.card+.ui-portlet,.card-group>.card+.ui-portlet-section,.card-group>.toolForm.toolFormInCanvas+.card,.card-group>.toolForm.toolFormInCanvas+.toolForm.toolFormInCanvas,.card-group>.toolForm.toolFormInCanvas+.ui-portlet,.card-group>.toolForm.toolFormInCanvas+.ui-portlet-section,.card-group>.ui-portlet+.card,.card-group>.ui-portlet+.toolForm.toolFormInCanvas,.card-group>.ui-portlet+.ui-portlet,.card-group>.ui-portlet+.ui-portlet-section,.card-group>.ui-portlet-section+.card,.card-group>.ui-portlet-section+.toolForm.toolFormInCanvas,.card-group>.ui-portlet-section+.ui-portlet,.card-group>.ui-portlet-section+.ui-portlet-section{margin-left:0;border-left:0}.card-group>.card:not(:last-child),.card-group>.toolForm.toolFormInCanvas:not(:last-child),.card-group>.ui-portlet-section:not(:last-child),.card-group>.ui-portlet: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>.card:not(:last-child) .toolForm.toolFormInCanvas .toolFormTitle,.card-group>.card:not(:last-child) .ui-portlet-section .portlet-header:first-child,.card-group>.card:not(:last-child) .ui-portlet .portlet-header:first-child,.card-group>.toolForm.toolFormInCanvas:not(:last-child) .card-header,.card-group>.toolForm.toolFormInCanvas:not(:last-child) .card-img-top,.card-group>.toolForm.toolFormInCanvas:not(:last-child) .toolFormTitle,.card-group>.toolForm.toolFormInCanvas:not(:last-child) .ui-portlet-section .portlet-header:first-child,.card-group>.toolForm.toolFormInCanvas:not(:last-child) .ui-portlet .portlet-header:first-child,.card-group>.ui-portlet-section:not(:last-child) .card-header,.card-group>.ui-portlet-section:not(:last-child) .card-img-top,.card-group>.ui-portlet-section:not(:last-child) .portlet-header:first-child,.card-group>.ui-portlet-section:not(:last-child) .toolForm.toolFormInCanvas .toolFormTitle,.card-group>.ui-portlet:not(:last-child) .card-header,.card-group>.ui-portlet:not(:last-child) .card-img-top,.card-group>.ui-portlet:not(:last-child) .portlet-header:first-child,.card-group>.ui-portlet:not(:last-child) .toolForm.toolFormInCanvas .toolFormTitle,.toolForm.toolFormInCanvas .card-group>.card:not(:last-child) .toolFormTitle,.toolForm.toolFormInCanvas .card-group>.ui-portlet-section:not(:last-child) .toolFormTitle,.toolForm.toolFormInCanvas .card-group>.ui-portlet:not(:last-child) .toolFormTitle,.ui-portlet-section .card-group>.card:not(:last-child) .portlet-header:first-child,.ui-portlet-section .card-group>.toolForm.toolFormInCanvas:not(:last-child) .portlet-header:first-child,.ui-portlet-section .card-group>.ui-portlet:not(:last-child) .portlet-header:first-child,.ui-portlet .card-group>.card:not(:last-child) .portlet-header:first-child,.ui-portlet .card-group>.toolForm.toolFormInCanvas:not(:last-child) .portlet-header:first-child,.ui-portlet .card-group>.ui-portlet-section:not(:last-child) .portlet-header:first-child{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.toolForm.toolFormInCanvas:not(:last-child) .card-footer,.card-group>.toolForm.toolFormInCanvas:not(:last-child) .card-img-bottom,.card-group>.ui-portlet-section:not(:last-child) .card-footer,.card-group>.ui-portlet-section:not(:last-child) .card-img-bottom,.card-group>.ui-portlet:not(:last-child) .card-footer,.card-group>.ui-portlet:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child),.card-group>.toolForm.toolFormInCanvas:not(:first-child),.card-group>.ui-portlet-section:not(:first-child),.card-group>.ui-portlet: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>.card:not(:first-child) .toolForm.toolFormInCanvas .toolFormTitle,.card-group>.card:not(:first-child) .ui-portlet-section .portlet-header:first-child,.card-group>.card:not(:first-child) .ui-portlet .portlet-header:first-child,.card-group>.toolForm.toolFormInCanvas:not(:first-child) .card-header,.card-group>.toolForm.toolFormInCanvas:not(:first-child) .card-img-top,.card-group>.toolForm.toolFormInCanvas:not(:first-child) .toolFormTitle,.card-group>.toolForm.toolFormInCanvas:not(:first-child) .ui-portlet-section .portlet-header:first-child,.card-group>.toolForm.toolFormInCanvas:not(:first-child) .ui-portlet .portlet-header:first-child,.card-group>.ui-portlet-section:not(:first-child) .card-header,.card-group>.ui-portlet-section:not(:first-child) .card-img-top,.card-group>.ui-portlet-section:not(:first-child) .portlet-header:first-child,.card-group>.ui-portlet-section:not(:first-child) .toolForm.toolFormInCanvas .toolFormTitle,.card-group>.ui-portlet:not(:first-child) .card-header,.card-group>.ui-portlet:not(:first-child) .card-img-top,.card-group>.ui-portlet:not(:first-child) .portlet-header:first-child,.card-group>.ui-portlet:not(:first-child) .toolForm.toolFormInCanvas .toolFormTitle,.toolForm.toolFormInCanvas .card-group>.card:not(:first-child) .toolFormTitle,.toolForm.toolFormInCanvas .card-group>.ui-portlet-section:not(:first-child) .toolFormTitle,.toolForm.toolFormInCanvas .card-group>.ui-portlet:not(:first-child) .toolFormTitle,.ui-portlet-section .card-group>.card:not(:first-child) .portlet-header:first-child,.ui-portlet-section .card-group>.toolForm.toolFormInCanvas:not(:first-child) .portlet-header:first-child,.ui-portlet-section .card-group>.ui-portlet:not(:first-child) .portlet-header:first-child,.ui-portlet .card-group>.card:not(:first-child) .portlet-header:first-child,.ui-portlet .card-group>.toolForm.toolFormInCanvas:not(:first-child) .portlet-header:first-child,.ui-portlet .card-group>.ui-portlet-section:not(:first-child) .portlet-header:first-child{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.toolForm.toolFormInCanvas:not(:first-child) .card-footer,.card-group>.toolForm.toolFormInCanvas:not(:first-child) .card-img-bottom,.card-group>.ui-portlet-section:not(:first-child) .card-footer,.card-group>.ui-portlet-section:not(:first-child) .card-img-bottom,.card-group>.ui-portlet:not(:first-child) .card-footer,.card-group>.ui-portlet:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card,.card-columns .toolForm.toolFormInCanvas,.card-columns .ui-portlet,.card-columns .ui-portlet-section{margin-bottom:.75rem}@media (min-width:576px){.card-columns{column-count:3;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card,.card-columns .toolForm.toolFormInCanvas,.card-columns .ui-portlet,.card-columns .ui-portlet-section{display:inline-block;width:100%}}.accordion>.card,.accordion>.toolForm.toolFormInCanvas,.accordion>.ui-portlet,.accordion>.ui-portlet-section{overflow:hidden}.accordion>.card:not(:first-of-type) .card-header:first-child,.accordion>.card:not(:first-of-type) .toolForm.toolFormInCanvas .toolFormTitle:first-child,.accordion>.card:not(:first-of-type) .ui-portlet-section .portlet-header:first-child,.accordion>.card:not(:first-of-type) .ui-portlet .portlet-header:first-child,.accordion>.toolForm.toolFormInCanvas:not(:first-of-type) .card-header:first-child,.accordion>.toolForm.toolFormInCanvas:not(:first-of-type) .toolFormTitle:first-child,.accordion>.toolForm.toolFormInCanvas:not(:first-of-type) .ui-portlet-section .portlet-header:first-child,.accordion>.toolForm.toolFormInCanvas:not(:first-of-type) .ui-portlet .portlet-header:first-child,.accordion>.ui-portlet-section:not(:first-of-type) .card-header:first-child,.accordion>.ui-portlet-section:not(:first-of-type) .portlet-header:first-child,.accordion>.ui-portlet-section:not(:first-of-type) .toolForm.toolFormInCanvas .toolFormTitle:first-child,.accordion>.ui-portlet:not(:first-of-type) .card-header:first-child,.accordion>.ui-portlet:not(:first-of-type) .portlet-header:first-child,.accordion>.ui-portlet:not(:first-of-type) .toolForm.toolFormInCanvas .toolFormTitle:first-child,.toolForm.toolFormInCanvas .accordion>.card:not(:first-of-type) .toolFormTitle:first-child,.toolForm.toolFormInCanvas .accordion>.ui-portlet-section:not(:first-of-type) .toolFormTitle:first-child,.toolForm.toolFormInCanvas .accordion>.ui-portlet:not(:first-of-type) .toolFormTitle:first-child,.ui-portlet-section .accordion>.card:not(:first-of-type) .portlet-header:first-child,.ui-portlet-section .accordion>.toolForm.toolFormInCanvas:not(:first-of-type) .portlet-header:first-child,.ui-portlet-section .accordion>.ui-portlet:not(:first-of-type) .portlet-header:first-child,.ui-portlet .accordion>.card:not(:first-of-type) .portlet-header:first-child,.ui-portlet .accordion>.toolForm.toolFormInCanvas:not(:first-of-type) .portlet-header:first-child,.ui-portlet .accordion>.ui-portlet-section:not(:first-of-type) .portlet-header:first-child{border-radius:0}.accordion>.card:not(:first-of-type):not(:last-of-type),.accordion>.toolForm.toolFormInCanvas:not(:first-of-type):not(:last-of-type),.accordion>.ui-portlet-section:not(:first-of-type):not(:last-of-type),.accordion>.ui-portlet:not(:first-of-type):not(:last-of-type){border-bottom:0;border-radius:0}.accordion>.card:first-of-type,.accordion>.toolForm.toolFormInCanvas:first-of-type,.accordion>.ui-portlet-section:first-of-type,.accordion>.ui-portlet:first-of-type{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:last-of-type,.accordion>.toolForm.toolFormInCanvas:last-of-type,.accordion>.ui-portlet-section:last-of-type,.accordion>.ui-portlet:last-of-type{border-top-left-radius:0;border-top-right-radius:0}.accordion>.card .card-header,.accordion>.card .toolForm.toolFormInCanvas .toolFormTitle,.accordion>.card .ui-portlet-section .portlet-header:first-child,.accordion>.card .ui-portlet .portlet-header:first-child,.accordion>.toolForm.toolFormInCanvas .card-header,.accordion>.toolForm.toolFormInCanvas .toolFormTitle,.accordion>.toolForm.toolFormInCanvas .ui-portlet-section .portlet-header:first-child,.accordion>.toolForm.toolFormInCanvas .ui-portlet .portlet-header:first-child,.accordion>.ui-portlet-section .card-header,.accordion>.ui-portlet-section .portlet-header:first-child,.accordion>.ui-portlet-section .toolForm.toolFormInCanvas .toolFormTitle,.accordion>.ui-portlet .card-header,.accordion>.ui-portlet .portlet-header:first-child,.accordion>.ui-portlet .toolForm.toolFormInCanvas .toolFormTitle,.toolForm.toolFormInCanvas .accordion>.card .toolFormTitle,.toolForm.toolFormInCanvas .accordion>.ui-portlet-section .toolFormTitle,.toolForm.toolFormInCanvas .accordion>.ui-portlet .toolFormTitle,.ui-portlet-section .accordion>.card .portlet-header:first-child,.ui-portlet-section .accordion>.toolForm.toolFormInCanvas .portlet-header:first-child,.ui-portlet-section .accordion>.ui-portlet .portlet-header:first-child,.ui-portlet .accordion>.card .portlet-header:first-child,.ui-portlet .accordion>.toolForm.toolFormInCanvas .portlet-header:first-child,.ui-portlet .accordion>.ui-portlet-section .portlet-header:first-child{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:#404862;content:"/"}.breadcrumb-item+.breadcrumb-item:hover:before{text-decoration:underline;text-decoration:none}.breadcrumb-item.active{color:#404862}.pagination{display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#25537b;background-color:#fff;border:1px solid #dae0e5}.page-link:hover{z-index:2;color:#132b40;text-decoration:none;background-color:#e9ecef;border-color:#dae0e5}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(37,83,123,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#25537b;border-color:#25537b}.page-item.disabled .page-link{color:#404862;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dae0e5}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.0625rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.74375rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;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}.action-button .badge,.btn .badge,.delete-terminal .badge,.menubutton .badge,button .badge,input[type=submit] .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#25537b}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#193954}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(37,83,123,.5)}.badge-secondary{color:#2c3143;background-color:#dee2e6}a.badge-secondary:focus,a.badge-secondary:hover{color:#2c3143;background-color:#c1c9d0}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(222,226,230,.5)}.badge-success{color:#2c3143;background-color:#6c6}a.badge-success:focus,a.badge-success:hover{color:#2c3143;background-color:#40bf40}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(102,204,102,.5)}.badge-info,.badge-new{color:#fff;background-color:#2077b3}a.badge-info:focus,a.badge-info:hover,a.badge-new:focus,a.badge-new:hover{color:#fff;background-color:#185a88}a.badge-info.focus,a.badge-info:focus,a.badge-new:focus,a.focus.badge-new{outline:0;box-shadow:0 0 0 .2rem rgba(32,119,179,.5)}.badge-beta,.badge-warning{color:#2c3143;background-color:#fe7f02}a.badge-beta:focus,a.badge-beta:hover,a.badge-warning:focus,a.badge-warning:hover{color:#2c3143;background-color:#cc6601}a.badge-beta:focus,a.badge-warning.focus,a.badge-warning:focus,a.focus.badge-beta{outline:0;box-shadow:0 0 0 .2rem rgba(254,127,2,.5)}.badge-danger{color:#fff;background-color:#e31a1e}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#b51518}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(227,26,30,.5)}.badge-light{color:#2c3143;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#2c3143;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:#2c3143}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#181a24}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(44,49,67,.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,.donemessage,.donemessagelarge,.donemessagesmall,.error-modal .modal-content,.errormessage,.errormessagelarge,.errormessagesmall,.form-help .error,.form-help .note,.form-help .warning,.infomessage,.infomessagelarge,.infomessagesmall,.warningmessage,.warningmessagelarge,.warningmessagesmall{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:3.775rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#2b384e;background-color:#a8baca;border-color:#6687a3}.alert-primary hr{border-top-color:#5a7a96}.alert-primary .alert-link{color:#19202d}.alert-secondary{color:#505464;background-color:#f2f3f5;border-color:#e8ebee}.alert-secondary hr{border-top-color:#d9dee3}.alert-secondary .alert-link{color:#393c48}.alert-success,.donemessage,.donemessagelarge,.donemessagesmall{color:#38504a;background-color:#c2ebc2;border-color:#94db94}.alert-success hr,.donemessage hr,.donemessagelarge hr,.donemessagesmall hr{border-top-color:#81d581}.alert-success .alert-link,.donemessage .alert-link,.donemessagelarge .alert-link,.donemessagesmall .alert-link{color:#23322e}.alert-info,.form-help .note,.infomessage,.infomessagelarge,.infomessagesmall{color:#2a3f59;background-color:#a6c9e1;border-color:#63a0ca}.alert-info hr,.form-help .note hr,.infomessage hr,.infomessagelarge hr,.infomessagesmall hr{border-top-color:#5094c4}.alert-info .alert-link,.form-help .note .alert-link,.infomessage .alert-link,.infomessagelarge .alert-link,.infomessagesmall .alert-link{color:#1a2636}.alert-warning,.form-help .warning,.warningmessage,.warningmessagelarge,.warningmessagesmall{color:#564136;background-color:#ffcc9a;border-color:#fea54e}.alert-warning hr,.form-help .warning hr,.warningmessage hr,.warningmessagelarge hr,.warningmessagesmall hr{border-top-color:#fe9835}.alert-warning .alert-link,.form-help .warning .alert-link,.warningmessage .alert-link,.warningmessagelarge .alert-link,.warningmessagesmall .alert-link{color:#372922}.alert-danger,.error-modal .modal-content,.errormessage,.errormessagelarge,.errormessagesmall,.form-help .error{color:#512c3c;background-color:#f4a3a5;border-color:#eb5f62}.alert-danger hr,.error-modal .modal-content hr,.errormessage hr,.errormessagelarge hr,.errormessagesmall hr,.form-help .error hr{border-top-color:#e8484c}.alert-danger .alert-link,.error-modal .modal-content .alert-link,.errormessage .alert-link,.errormessagelarge .alert-link,.errormessagesmall .alert-link,.form-help .error .alert-link{color:#301a24}.alert-light{color:#555968;background-color:#fcfdfd;border-color:#fafbfc}.alert-light hr{border-top-color:#eaeef2}.alert-light .alert-link{color:#3e414c}.alert-dark{color:#2c3143;background-color:#abadb4;border-color:#6b6f7b}.alert-dark hr{border-top-color:#5f636d}.alert-dark .alert-link{color:#181a24}@keyframes progress-bar-stripes{0%{background-position:1rem 0}to{background-position:0 0}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.6375rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;color:#fff;text-align:center;white-space:nowrap;background-color:#25537b;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-size:1rem 1rem}.progress-bar-animated{animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.progress-bar-animated{animation:none}}.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:#404862;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#404862;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#2c3143;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(44,49,67,.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item.disabled,.list-group-item:disabled{color:#404862;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#25537b;border-color:#25537b}.list-group-horizontal{flex-direction:row}.list-group-horizontal .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-sm .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-md .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-lg .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-xl .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush .list-group-item:last-child{margin-bottom:-1px}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{margin-bottom:0;border-bottom:0}.list-group-item-primary{color:#27496a;background-color:#87a0b6}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#27496a;background-color:#7793ac}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#27496a;border-color:#27496a}.list-group-item-secondary{color:#a9adb5;background-color:#edeff1}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#a9adb5;background-color:#dfe2e6}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#a9adb5;border-color:#a9adb5}.list-group-item-success{color:#559e5c;background-color:#abe3ab}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#559e5c;background-color:#98dd98}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#559e5c;border-color:#559e5c}.list-group-item-info{color:#246291;background-color:#84b4d5}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#246291;background-color:#71a8cf}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#246291;border-color:#246291}.list-group-item-warning{color:#bf6816;background-color:#feb974}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#bf6816;background-color:#feac5b}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#bf6816;border-color:#bf6816}.list-group-item-danger{color:#ac2129;background-color:#f08183}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#ac2129;background-color:#ed6a6d}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#ac2129;border-color:#ac2129}.list-group-item-light{color:#bbbdc3;background-color:#fbfcfc}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#bbbdc3;background-color:#ecf1f1}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#bbbdc3;border-color:#bbbdc3}.list-group-item-dark{color:#2c3143;background-color:#8b8e98}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#2c3143;background-color:#7d818c}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#2c3143;border-color:#2c3143}.close{float:right;font-size:1.275rem;font-weight:700;line-height:1;color:#2c3143;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#2c3143;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;appearance:none}a.close.disabled{pointer-events:none}.toast{max-width:350px;overflow:hidden;font-size:.875rem;background-color:hsla(0,0%,100%,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(44,49,67,.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:#404862;background-color:hsla(0,0%,100%,.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:translateY(-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.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(44,49,67,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#2c3143}.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 #c7cbda;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.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;align-items:center;justify-content:flex-end;padding:1rem;border-top:1px solid #c7cbda;border-bottom-right-radius:.3rem;border-bottom-left-radius:.3rem}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.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:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;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:.74375rem;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:#2c3143}.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:#2c3143}.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:#2c3143}.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:#2c3143}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#2c3143;border-radius:.25rem}.popover{top:0;left:0;z-index:1060;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;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:.74375rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(44,49,67,.2);border-radius:.3rem}.popover,.popover .arrow{position:absolute;display:block}.popover .arrow{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(44,49,67,.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(44,49,67,.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(44,49,67,.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(44,49,67,.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:.85rem;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:#2c3143}.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}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.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{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}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.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:no-repeat 50%/100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' 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;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' 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-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(1turn)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid;border-right:.25em solid transparent;border-radius:50%;animation:spinner-border .75s linear infinite}.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:spinner-grow .75s linear infinite}.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:#25537b!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#193954!important}.bg-secondary{background-color:#dee2e6!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#c1c9d0!important}.bg-success{background-color:#6c6!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#40bf40!important}.bg-info{background-color:#2077b3!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#185a88!important}.bg-warning{background-color:#fe7f02!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#cc6601!important}.bg-danger{background-color:#e31a1e!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#b51518!important}.bg-light{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:#2c3143!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#181a24!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #c7cbda!important}.border-top,.grid tbody td,.grid tfoot td,.grid thead th{border-top:1px solid #c7cbda!important}.border-right{border-right:1px solid #c7cbda!important}.border-bottom,.grid tbody td,.grid tfoot td,.grid thead th{border-bottom:1px solid #c7cbda!important}.border-left{border-left:1px solid #c7cbda!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:#25537b!important}.border-secondary{border-color:#dee2e6!important}.border-success{border-color:#6c6!important}.border-info{border-color:#2077b3!important}.border-warning{border-color:#fe7f02!important}.border-danger{border-color:#e31a1e!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#2c3143!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded,.ui-portlet-section .portlet-header:first-child,.ui-portlet .portlet-header:first-child{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important}.rounded-right,.rounded-top{border-top-right-radius:.25rem!important}.rounded-bottom,.rounded-right{border-bottom-right-radius:.25rem!important}.rounded-bottom,.rounded-left{border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0,.ui-portlet-section .portlet-header:first-child{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}#everything,.d-flex,.ui-select-content .btn-group,.unified-panel-header{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.85714%}.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}#everything,#left,#right,.dataset-collection-panel>.list-items,.flex-column,.history-panel>.list-items,.unified-panel{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}}@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}}@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}}@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-left,.ui-portlet-section .portlet-buttons button,.ui-portlet .portlet-buttons button{float:left!important}#run-workflow,.charts-client .charts-buttons,.collection-creator.list-collection-creator .collection-element .discard,.collection-creator.list-collection-creator .collection-elements-controls .clear-selected,.collection-creator.pair-collection-creator .collection-elements-controls .clear-selected,.float-right,.popover .popover-header i,.unified-panel-header .panel-header-buttons{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}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.full-message,.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}#columns,#masthead .navbar-nav>li .nav-note,.dataset .details .annotation-display .annotation:empty:after,.position-relative,.state-progress{position:relative!important}#background,#center,#center .center-container,#center .center-container .center-frame,#center .center-container .center-panel,#dd-helper,#everything,#left,#masthead .navbar-brand,#right,.full-content,.position-absolute,.state-progress .note{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:sticky!important}.fixed-top{top:0}.fixed-bottom,.fixed-top{position:fixed;right:0;left:0;z-index:1030}.fixed-bottom{bottom:0}@supports (position:sticky){.sticky-top{position:sticky;top:0;z-index:1020}}.sr-only{white-space:nowrap}.sr-only-focusable:active,.sr-only-focusable:focus{white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(44,49,67,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(44,49,67,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(44,49,67,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}#background,#center .center-container,#center .center-container .center-frame,#center .center-container .center-panel,#dd-helper,#everything,.full-content,.full-message,.grid,.grid-table,.parent-width,.unified-panel-body,.unified-panel-header .unified-panel-header-inner,.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}#background,#center,#center .center-container,#center .center-container .center-frame,#center .center-container .center-panel,#dd-helper,#everything,#left,#right,.full-content,.h-100,.unified-panel-body{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:transparent}#background,#dd-helper,#everything,.full-content,.m-0{margin:0!important}#masthead,.mb-0,.my-0{margin-bottom:0!important}.m-1,.state-progress,.upload-view-composite .upload-box .upload-row .upload-mode,.upload-view-default .upload-box .upload-row .upload-mode{margin:.25rem!important}.base-terminal,.delete-terminal,.history-panel>.controls .history-size,.input-terminal,.mt-1,.my-1,.output-terminal{margin-top:.25rem!important}.mr-1,.mx-1,.ui-portlet-section .portlet-buttons button,.ui-portlet .portlet-buttons button{margin-right:.25rem!important}.ml-1,.mx-1,.ui-portlet-section .portlet-header:first-child .portlet-operations button,.ui-portlet .portlet-header:first-child .portlet-operations button,.upload-view-composite .upload-buttons button,.upload-view-default .upload-buttons button{margin-left:.25rem!important}.charts-client .charts-right .alert,.charts-client .charts-right .donemessage,.charts-client .charts-right .donemessagelarge,.charts-client .charts-right .donemessagesmall,.charts-client .charts-right .error-modal .modal-content,.charts-client .charts-right .errormessage,.charts-client .charts-right .errormessagelarge,.charts-client .charts-right .errormessagesmall,.charts-client .charts-right .form-help .error,.charts-client .charts-right .form-help .note,.charts-client .charts-right .form-help .warning,.charts-client .charts-right .infomessage,.charts-client .charts-right .infomessagelarge,.charts-client .charts-right .infomessagesmall,.charts-client .charts-right .warningmessage,.charts-client .charts-right .warningmessagelarge,.charts-client .charts-right .warningmessagesmall,.error-modal .charts-client .charts-right .modal-content,.form-help .charts-client .charts-right .error,.form-help .charts-client .charts-right .note,.form-help .charts-client .charts-right .warning,.m-2,body{margin:.5rem!important}.list-item .primary-actions,.mt-2,.my-2,.upload-footer,.upload-view-composite .upload-box,.upload-view-default .upload-box{margin-top:.5rem!important}.mr-2,.mx-2,.search-input .search-clear,.search-input .search-loading,.toolForm.toolFormInCanvas .toolFormBody,.unified-panel-header .panel-header-buttons .panel-header-button:not(:last-child),.unified-panel-header .panel-header-buttons .upload-button .upload-button-link:not(:last-child),.upload-button .unified-panel-header .panel-header-buttons .upload-button-link:not(:last-child),.upload-view-composite .upload-box .upload-helper i,.upload-view-default .upload-box .upload-helper i{margin-right:.5rem!important}.grid-header,.list-panel .controls>:not(:empty),.mb-2,.my-2,.nav-tabs,.search-input,.ui-portlet-section{margin-bottom:.5rem!important}.ml-2,.mx-2,.state-progress .note,.toolForm.toolFormInCanvas .toolFormBody,.upload-button,.upload-footer .upload-footer-title{margin-left:.5rem!important}.history-panel>.empty-message,.m-3{margin:1rem!important}#run-workflow,.mt-3,.my-3{margin-top:1rem!important}.dataset-collection-panel>.controls,.list-item .primary-actions,.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.dataset-collection-panel>.controls,.list-item .primary-actions,.ml-3,.mx-3{margin-left:1rem!important}#background,#dd-helper,#everything,#masthead,.full-content,.grid tbody td:empty,.p-0,.toolForm.toolFormInCanvas .toolFormBody,.ui-button-icon-plain,.ui-portlet-section>.portlet-content,.ui-portlet>.portlet-content,.unified-panel-body{padding:0!important}.pr-0,.px-0,.ui-portlet-section>.portlet-content{padding-right:0!important}.delete-terminal,.grid tbody td,.grid tfoot td,.grid thead th,.p-1{padding:.25rem!important}.pt-1,.py-1,.search-box-input,.search-input .search-query,.select2-drop-above.select2-drop-active .select2-search,.select2-drop-active .select2-search,.toolForm.toolFormInCanvas .toolFormTitle,.ui-form-element-disabled .ui-form-preview,.ui-form-element .ui-form-preview,.ui-input,.ui-options .ui-options-list,.ui-select .select2-container-multi .select2-choices,.ui-select .select2-container .select2-choice,.ui-select select,.ui-textarea,div.toolSectionTitle a,div.toolTitle a,div.toolTitleNoSection a{padding-top:.25rem!important}.pb-1,.py-1,.search-input .search-query,.toolForm.toolFormInCanvas .toolFormTitle,div.toolPanelLabel,div.toolSectionTitle a,div.toolTitle a,div.toolTitleNoSection a{padding-bottom:.25rem!important}.list-item .title-bar,.p-2,.upload-view-composite .upload-box,.upload-view-default .upload-box{padding:.5rem!important}.grid,.list-item .selector,.pt-2,.py-2,div.toolPanelLabel{padding-top:.5rem!important}.pr-2,.px-2,.toolForm.toolFormInCanvas .toolFormTitle{padding-right:.5rem!important}.list-item .details,.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2,.search-box-input,.toolForm.toolFormInCanvas .toolFormTitle,.ui-form-element-disabled .ui-form-preview,.ui-form-element .ui-form-preview,.ui-input,.ui-options .ui-options-list,.ui-portlet-section>.portlet-content,.ui-select .select2-container-multi .select2-choices,.ui-select .select2-container .select2-choice,.ui-select select,.ui-textarea{padding-left:.5rem!important}.pt-3,.py-3{padding-top:1rem!important}.history-panel>.controls,.list-item .details,.list-item .title-bar,.pr-3,.px-3,.search-input .search-query,.unified-panel-controls,.unified-panel-header,div.toolPanelLabel,div.toolSectionTitle a,div.toolTitle a,div.toolTitleNoSection a{padding-right:1rem!important}.history-panel>.controls,.list-item .details,.list-item .selector,.list-item .title-bar,.pl-3,.px-3,.search-input .search-query,.unified-panel-controls,.unified-panel-header,div.toolPanelLabel,div.toolSectionTitle a,div.toolTitle a,div.toolTitleNoSection a{padding-left:1rem!important}.pl-4,.popover .popover-header i,.px-4,div.toolSectionWrapper div.toolTitle a{padding-left:1.5rem!important}.text-monospace{font-family:Monaco,Menlo,Consolas,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){.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){.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){.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}#masthead .navbar-brand,#masthead .navbar-nav>li .nav-note,.font-weight-bold,.grid-header .title{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.dataset .details .annotation-display .annotation:empty:after,.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary,.upload-view-composite .upload-box .upload-row .upload-text-column .upload-text .upload-text-info,.upload-view-default .upload-box .upload-row .upload-text-column .upload-text .upload-text-info{color:#25537b!important}.upload-view-composite .upload-box .upload-row .upload-text-column .upload-text a.upload-text-info:focus,.upload-view-composite .upload-box .upload-row .upload-text-column .upload-text a.upload-text-info:hover,.upload-view-default .upload-box .upload-row .upload-text-column .upload-text a.upload-text-info:focus,.upload-view-default .upload-box .upload-row .upload-text-column .upload-text a.upload-text-info:hover,a.text-primary:focus,a.text-primary:hover{color:#132b40!important}.text-secondary{color:#dee2e6!important}a.text-secondary:focus,a.text-secondary:hover{color:#b2bcc5!important}.text-success{color:#6c6!important}a.text-success:focus,a.text-success:hover{color:#39ac39!important}.text-info{color:#2077b3!important}a.text-info:focus,a.text-info:hover{color:#144c72!important}.text-warning{color:#fe7f02!important}a.text-warning:focus,a.text-warning:hover{color:#b35901!important}.text-danger{color:#e31a1e!important}a.text-danger:focus,a.text-danger:hover{color:#9e1215!important}.quota-meter-text,.text-light{color:#f8f9fa!important}a.quota-meter-text:focus,a.quota-meter-text:hover,a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.quota-meter-text a,.text-dark{color:#2c3143!important}.quota-meter-text a:focus,.quota-meter-text a:hover,a.text-dark:focus,a.text-dark:hover{color:#0e0f15!important}.text-body{color:#2c3143!important}.text-muted{color:#404862!important}.text-black-50{color:rgba(44,49,67,.5)!important}.text-white-50{color:hsla(0,0%,100%,.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):not(input[type=submit]):not(button):not(.action-button):not(.menubutton):not(.delete-terminal){text-decoration:underline}abbr[title]:after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #404862;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}.upload-view-composite .upload-box .upload-helper,.upload-view-default .upload-box .upload-helper,h2,h3,p{orphans:3;widows:3}.upload-view-composite .upload-box .upload-helper,.upload-view-default .upload-box .upload-helper,h2,h3{page-break-after:avoid}@page{size:a3}.container,body{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #2c3143}.table,.upload-table{border-collapse:collapse!important}.table td,.table th,.upload-table td,.upload-table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dae0e5!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#c7cbda}.table .thead-dark th,.upload-table .thead-dark th{color:inherit;border-color:#c7cbda}}.navbar-fixed-top .navbar-brand{font-family:Verdana;font-weight:700;font-size:160%}pre{overflow:auto;word-wrap:normal;white-space:pre}.alert,.donemessage,.donemessagelarge,.donemessagesmall,.error-modal .modal-content,.errormessage,.errormessagelarge,.errormessagesmall,.form-help .error,.form-help .note,.form-help .warning,.infomessage,.infomessagelarge,.infomessagesmall,.warningmessage,.warningmessagelarge,.warningmessagesmall{word-wrap:break-word}.action-button,.btn,.delete-terminal,.menubutton,button,input[type=submit]{white-space:normal}.action-button,.btn-default,.btn-secondary,.menubutton,button,input[type=submit]{border:1px solid #c7cbda}.popover .popover-body{font-size:.85rem}.dropdown-menu .dropdown-item{text-decoration:none}.dropdown-header,.dropdown-item{color:#2c3143}input[type=checkbox],input[type=radio]{margin-left:.5ex;margin-right:.5ex;float:left}select{padding:2px;font-size:.85rem;line-height:1.5}input,select,textarea{font:inherit}input[type=password],input[type=text],textarea{font-size:.85rem;line-height:1.5}.modal-dialog{width:690px;max-width:900px}.modal-body{overflow:auto}.tabbable .nav-tabs .nav-item{cursor:pointer}div.ui-form-help blockquote p{font-size:inherit;font-weight:inherit;line-height:inherit}pre.code{white-space:pre-wrap;background:#1d1f21;color:#fff;padding:1em}.alert-danger a,.alert-info a,.alert-success a,.alert-warning a,.donemessage a,.donemessagelarge a,.donemessagesmall a,.error-modal .modal-content a,.errormessage a,.errormessagelarge a,.errormessagesmall a,.form-help .error a,.form-help .note a,.form-help .warning a,.infomessage a,.infomessagelarge a,.infomessagesmall a,.warningmessage a,.warningmessagelarge a,.warningmessagesmall a{font-weight:700}.dropdown-header{font-size:1rem;color:#2c3143;padding:.5rem 1.5rem .5rem 1rem;font-weight:700}/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */.select2-container{margin:0;position:relative;display:inline-block;zoom:1;*display:inline;vertical-align:middle}.select2-container,.select2-drop,.select2-search,.select2-search input{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.select2-container .select2-choice{display:block;height:26px;padding:0 0 0 8px;overflow:hidden;position:relative;border:1px solid #aaa;white-space:nowrap;line-height:26px;color:#444;text-decoration:none;border-radius:4px;background-clip:padding-box;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#fff;background-image:-webkit-gradient(linear,left bottom,left top,color-stop(0,#eee),color-stop(.5,#fff));background-image:-webkit-linear-gradient(center bottom,#eee 0,#fff 50%);background-image:-moz-linear-gradient(center bottom,#eee 0,#fff 50%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr = "#ffffff",endColorstr = "#eeeeee",GradientType = 0);background-image:linear-gradient(0deg,#eee 0,#fff 50%)}html[dir=rtl] .select2-container .select2-choice{padding:0 8px 0 0}.select2-container.select2-drop-above .select2-choice{border-bottom-color:#aaa;border-radius:0 0 4px 4px;background-image:-webkit-gradient(linear,left bottom,left top,color-stop(0,#eee),color-stop(.9,#fff));background-image:-webkit-linear-gradient(center bottom,#eee 0,#fff 90%);background-image:-moz-linear-gradient(center bottom,#eee 0,#fff 90%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ffffff",endColorstr="#eeeeee",GradientType=0);background-image:linear-gradient(180deg,#eee 0,#fff 90%)}.select2-container.select2-allowclear .select2-choice .select2-chosen{margin-right:42px}.select2-container .select2-choice>.select2-chosen{margin-right:26px;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;float:none;width:auto}html[dir=rtl] .select2-container .select2-choice>.select2-chosen{margin-left:26px;margin-right:0}.select2-container .select2-choice abbr{display:none;width:12px;height:12px;position:absolute;right:24px;top:8px;font-size:1px;text-decoration:none;border:0;background:url(../scripts/bundled/assets/2ca61b76e22053571dd8611e5aac4900.png) 100% 0 no-repeat;cursor:pointer;outline:0}.select2-container.select2-allowclear .select2-choice abbr{display:inline-block}.select2-container .select2-choice abbr:hover{background-position:right -11px;cursor:pointer}.select2-drop-mask{border:0;margin:0;padding:0;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:9998;background-color:#fff;filter:alpha(opacity=0)}.select2-drop{width:100%;margin-top:-1px;position:absolute;z-index:9999;top:100%;color:#000;border:1px solid #aaa;border-top:0;border-radius:0 0 4px 4px;-webkit-box-shadow:0 4px 5px rgba(0,0,0,.15);box-shadow:0 4px 5px rgba(0,0,0,.15)}.select2-drop.select2-drop-above{margin-top:1px;border-top:1px solid #aaa;border-bottom:0;border-radius:4px 4px 0 0;-webkit-box-shadow:0 -4px 5px rgba(0,0,0,.15);box-shadow:0 -4px 5px rgba(0,0,0,.15)}.select2-drop-active{border:1px solid #5897fb;border-top:none}.select2-drop.select2-drop-above.select2-drop-active{border-top:1px solid #5897fb}.select2-drop-auto-width{border-top:1px solid #aaa;width:auto}.select2-drop-auto-width .select2-search{padding-top:4px}.select2-container .select2-choice .select2-arrow{display:inline-block;width:18px;height:100%;position:absolute;right:0;top:0;border-left:1px solid #aaa;border-radius:0 4px 4px 0;background-clip:padding-box;background:#ccc;background-image:-webkit-gradient(linear,left bottom,left top,color-stop(0,#ccc),color-stop(.6,#eee));background-image:-webkit-linear-gradient(center bottom,#ccc 0,#eee 60%);background-image:-moz-linear-gradient(center bottom,#ccc 0,#eee 60%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr = "#eeeeee",endColorstr = "#cccccc",GradientType = 0);background-image:linear-gradient(0deg,#ccc 0,#eee 60%)}html[dir=rtl] .select2-container .select2-choice .select2-arrow{left:0;right:auto;border-left:none;border-right:1px solid #aaa;border-radius:4px 0 0 4px}.select2-container .select2-choice .select2-arrow b{display:block;width:100%;height:100%;background:url(../scripts/bundled/assets/2ca61b76e22053571dd8611e5aac4900.png) no-repeat 0 1px}html[dir=rtl] .select2-container .select2-choice .select2-arrow b{background-position:2px 1px}.select2-search{display:inline-block;width:100%;min-height:26px;margin:0;padding-left:4px;padding-right:4px;position:relative;z-index:10000;white-space:nowrap}.select2-search input{width:100%;height:auto!important;min-height:26px;padding:4px 20px 4px 5px;margin:0;outline:0;font-family:sans-serif;font-size:1em;border:1px solid #aaa;border-radius:0;-webkit-box-shadow:none;box-shadow:none;background:#fff url(../scripts/bundled/assets/2ca61b76e22053571dd8611e5aac4900.png) no-repeat 100% -22px;background:url(../scripts/bundled/assets/2ca61b76e22053571dd8611e5aac4900.png) no-repeat 100% -22px,-webkit-gradient(linear,left bottom,left top,color-stop(.85,#fff),color-stop(.99,#eee));background:url(../scripts/bundled/assets/2ca61b76e22053571dd8611e5aac4900.png) no-repeat 100% -22px,-webkit-linear-gradient(center bottom,#fff 85%,#eee 99%);background:url(../scripts/bundled/assets/2ca61b76e22053571dd8611e5aac4900.png) no-repeat 100% -22px,-moz-linear-gradient(center bottom,#fff 85%,#eee 99%);background:url(../scripts/bundled/assets/2ca61b76e22053571dd8611e5aac4900.png) no-repeat 100% -22px,linear-gradient(180deg,#fff 85%,#eee 99%) 0 0}html[dir=rtl] .select2-search input{padding:4px 5px 4px 20px;background:#fff url(../scripts/bundled/assets/2ca61b76e22053571dd8611e5aac4900.png) no-repeat -37px -22px;background:url(../scripts/bundled/assets/2ca61b76e22053571dd8611e5aac4900.png) no-repeat -37px -22px,-webkit-gradient(linear,left bottom,left top,color-stop(.85,#fff),color-stop(.99,#eee));background:url(../scripts/bundled/assets/2ca61b76e22053571dd8611e5aac4900.png) no-repeat -37px -22px,-webkit-linear-gradient(center bottom,#fff 85%,#eee 99%);background:url(../scripts/bundled/assets/2ca61b76e22053571dd8611e5aac4900.png) no-repeat -37px -22px,-moz-linear-gradient(center bottom,#fff 85%,#eee 99%);background:url(../scripts/bundled/assets/2ca61b76e22053571dd8611e5aac4900.png) no-repeat -37px -22px,linear-gradient(180deg,#fff 85%,#eee 99%) 0 0}.select2-drop.select2-drop-above .select2-search input{margin-top:4px}.select2-search input.select2-active{background:#fff url(../scripts/bundled/assets/7b9776076d5fceef4993b55c9383dedd.gif) no-repeat 100%;background:url(../scripts/bundled/assets/7b9776076d5fceef4993b55c9383dedd.gif) no-repeat 100%,-webkit-gradient(linear,left bottom,left top,color-stop(.85,#fff),color-stop(.99,#eee));background:url(../scripts/bundled/assets/7b9776076d5fceef4993b55c9383dedd.gif) no-repeat 100%,-webkit-linear-gradient(center bottom,#fff 85%,#eee 99%);background:url(../scripts/bundled/assets/7b9776076d5fceef4993b55c9383dedd.gif) no-repeat 100%,-moz-linear-gradient(center bottom,#fff 85%,#eee 99%);background:url(../scripts/bundled/assets/7b9776076d5fceef4993b55c9383dedd.gif) no-repeat 100%,linear-gradient(180deg,#fff 85%,#eee 99%) 0 0}.select2-container-active .select2-choice,.select2-container-active .select2-choices{border:1px solid #5897fb;outline:none;-webkit-box-shadow:0 0 5px rgba(0,0,0,.3);box-shadow:0 0 5px rgba(0,0,0,.3)}.select2-dropdown-open .select2-choice{border-bottom-color:transparent;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:inset 0 1px 0 #fff;border-bottom-left-radius:0;border-bottom-right-radius:0;background-color:#eee;background-image:-webkit-gradient(linear,left bottom,left top,color-stop(0,#fff),color-stop(.5,#eee));background-image:-webkit-linear-gradient(center bottom,#fff 0,#eee 50%);background-image:-moz-linear-gradient(center bottom,#fff 0,#eee 50%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#eeeeee",endColorstr="#ffffff",GradientType=0);background-image:linear-gradient(0deg,#fff 0,#eee 50%)}.select2-dropdown-open.select2-drop-above .select2-choice,.select2-dropdown-open.select2-drop-above .select2-choices{border:1px solid #5897fb;border-top-color:transparent;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(.5,#eee));background-image:-webkit-linear-gradient(center top,#fff 0,#eee 50%);background-image:-moz-linear-gradient(center top,#fff 0,#eee 50%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#eeeeee",endColorstr="#ffffff",GradientType=0);background-image:linear-gradient(180deg,#fff 0,#eee 50%)}.select2-dropdown-open .select2-choice .select2-arrow{background:transparent;border-left:none;filter:none}html[dir=rtl] .select2-dropdown-open .select2-choice .select2-arrow{border-right:none}.select2-dropdown-open .select2-choice .select2-arrow b{background-position:-18px 1px}html[dir=rtl] .select2-dropdown-open .select2-choice .select2-arrow b{background-position:-16px 1px}.select2-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.select2-results{max-height:200px;padding:0 0 0 4px;margin:4px 4px 4px 0;position:relative;overflow-x:hidden;overflow-y:auto;-webkit-tap-highlight-color:rgba(0,0,0,0)}html[dir=rtl] .select2-results{padding:0 4px 0 0;margin:4px 0 4px 4px}.select2-results ul.select2-result-sub{margin:0;padding-left:0}.select2-results li{list-style:none;display:list-item;background-image:none}.select2-results li.select2-result-with-children>.select2-result-label{font-weight:700}.select2-results .select2-result-label{padding:3px 7px 4px;margin:0;cursor:pointer;min-height:1em;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.select2-results-dept-1 .select2-result-label{padding-left:20px}.select2-results-dept-2 .select2-result-label{padding-left:40px}.select2-results-dept-3 .select2-result-label{padding-left:60px}.select2-results-dept-4 .select2-result-label{padding-left:80px}.select2-results-dept-5 .select2-result-label{padding-left:100px}.select2-results-dept-6 .select2-result-label{padding-left:110px}.select2-results-dept-7 .select2-result-label{padding-left:120px}.select2-results .select2-highlighted{background:#3875d7;color:#fff}.select2-results li em{background:#feffde;font-style:normal}.select2-results .select2-highlighted em{background:transparent}.select2-results .select2-highlighted ul{background:#fff;color:#000}.select2-results .select2-ajax-error,.select2-results .select2-no-results,.select2-results .select2-searching,.select2-results .select2-selection-limit{background:#f4f4f4;display:list-item;padding-left:5px}.select2-results .select2-disabled.select2-highlighted{color:#666;background:#f4f4f4;display:list-item;cursor:default}.select2-results .select2-disabled{background:#f4f4f4;display:list-item;cursor:default}.select2-results .select2-selected{display:none}.select2-more-results.select2-active{background:#f4f4f4 url(../scripts/bundled/assets/7b9776076d5fceef4993b55c9383dedd.gif) no-repeat 100%}.select2-results .select2-ajax-error{background:rgba(255,50,50,.2)}.select2-more-results{background:#f4f4f4;display:list-item}.select2-container.select2-container-disabled .select2-choice{background-color:#f4f4f4;background-image:none;border:1px solid #ddd;cursor:default}.select2-container.select2-container-disabled .select2-choice .select2-arrow{background-color:#f4f4f4;background-image:none;border-left:0}.select2-container.select2-container-disabled .select2-choice abbr{display:none}.select2-container-multi .select2-choices{height:auto!important;height:1%;margin:0;padding:0 5px 0 0;position:relative;border:1px solid #aaa;cursor:text;overflow:hidden;background-color:#fff;background-image:-webkit-gradient(linear,0 0,0 100%,color-stop(1%,#eee),color-stop(15%,#fff));background-image:-webkit-linear-gradient(top,#eee 1%,#fff 15%);background-image:-moz-linear-gradient(top,#eee 1%,#fff 15%);background-image:linear-gradient(180deg,#eee 1%,#fff 15%)}html[dir=rtl] .select2-container-multi .select2-choices{padding:0 0 0 5px}.select2-locked{padding:3px 5px!important}.select2-container-multi .select2-choices{min-height:26px}.select2-container-multi.select2-container-active .select2-choices{border:1px solid #5897fb;outline:none;-webkit-box-shadow:0 0 5px rgba(0,0,0,.3);box-shadow:0 0 5px rgba(0,0,0,.3)}.select2-container-multi .select2-choices li{float:left;list-style:none}html[dir=rtl] .select2-container-multi .select2-choices li{float:right}.select2-container-multi .select2-choices .select2-search-field{margin:0;padding:0;white-space:nowrap}.select2-container-multi .select2-choices .select2-search-field input{padding:5px;margin:1px 0;font-family:sans-serif;font-size:100%;color:#666;outline:0;border:0;-webkit-box-shadow:none;box-shadow:none;background:transparent!important}.select2-container-multi .select2-choices .select2-search-field input.select2-active{background:#fff url(../scripts/bundled/assets/7b9776076d5fceef4993b55c9383dedd.gif) no-repeat 100%!important}.select2-default{color:#999!important}.select2-container-multi .select2-choices .select2-search-choice{padding:3px 5px 3px 18px;margin:3px 0 3px 5px;position:relative;line-height:13px;color:#333;cursor:default;border:1px solid #aaa;border-radius:3px;-webkit-box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);box-shadow:inset 0 0 2px #fff,0 1px 0 rgba(0,0,0,.05);background-clip:padding-box;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#e4e4e4;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#eeeeee",endColorstr="#f4f4f4",GradientType=0);background-image:-webkit-gradient(linear,0 0,0 100%,color-stop(20%,#f4f4f4),color-stop(50%,#f0f0f0),color-stop(52%,#e8e8e8),color-stop(100%,#eee));background-image:-webkit-linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee);background-image:-moz-linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:linear-gradient(0deg,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee)}html[dir=rtl] .select2-container-multi .select2-choices .select2-search-choice{margin:3px 5px 3px 0;padding:3px 18px 3px 5px}.select2-container-multi .select2-choices .select2-search-choice .select2-chosen{cursor:default}.select2-container-multi .select2-choices .select2-search-choice-focus{background:#d4d4d4}.select2-search-choice-close{display:block;width:12px;height:13px;position:absolute;right:3px;top:4px;font-size:1px;outline:none;background:url(../scripts/bundled/assets/2ca61b76e22053571dd8611e5aac4900.png) 100% 0 no-repeat}html[dir=rtl] .select2-search-choice-close{right:auto;left:3px}.select2-container-multi .select2-search-choice-close{left:3px}html[dir=rtl] .select2-container-multi .select2-search-choice-close{left:auto;right:2px}.select2-container-multi .select2-choices .select2-search-choice-focus .select2-search-choice-close,.select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close:hover{background-position:right -11px}.select2-container-multi.select2-container-disabled .select2-choices{background-color:#f4f4f4;background-image:none;border:1px solid #ddd;cursor:default}.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice{padding:3px 5px;border:1px solid #ddd;background-image:none;background-color:#f4f4f4}.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close{display:none;background:none}.select2-result-selectable .select2-match,.select2-result-unselectable .select2-match{text-decoration:underline}.select2-offscreen,.select2-offscreen:focus{clip:rect(0 0 0 0)!important;width:1px!important;height:1px!important;border:0!important;margin:0!important;padding:0!important;overflow:hidden!important;position:absolute!important;outline:0!important;left:0!important;top:0!important}.select2-display-none{display:none}.select2-measure-scrollbar{position:absolute;top:-10000px;left:-10000px;width:100px;height:100px;overflow:scroll}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-resolution:2dppx){.select2-container .select2-choice .select2-arrow b,.select2-container .select2-choice abbr,.select2-search-choice-close,.select2-search input{background-image:url(../scripts/bundled/assets/49e3f006018662f60f1db2aec0b2cca9.png)!important;background-repeat:no-repeat!important;background-size:60px 40px!important}.select2-search input{background-position:100% -21px!important}}div.rating-cancel,div.star-rating{float:left;width:17px;height:15px;text-indent:-999em;cursor:pointer;display:block;background:transparent;overflow:hidden}div.rating-cancel,div.rating-cancel a{background:url(../scripts/bundled/assets/43e1045b71da619b1d7e53fb3217be93.gif) no-repeat 0 -16px}div.star-rating,div.star-rating a{background:url(../scripts/bundled/assets/3b7a845229f4041f5d8a18399f4c7357.gif) no-repeat 0 0}div.rating-cancel a,div.star-rating a{display:block;width:16px;height:100%;background-position:0 0;border:0}div.star-rating-on a{background-position:0 -16px!important}div.star-rating-hover a{background-position:0 -32px}div.star-rating-readonly a{cursor:default!important}div.star-rating{background:transparent!important;overflow:hidden!important}#spark_time_select{display:inline-block}#spark_select{height:23px;width:30px;padding:0;border-radius:2px}.jqstooltip{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.dir_arrow{visibility:hidden}.chart{cursor:zoom-in;position:relative;z-index:2}.chart rect{fill:#4682b4;shape-rendering:preserveAspectRatio}.chart text{font:7px sans-serif}.chart text,.tick text{fill:#000;text-anchor:end}.tick text{font-family:Arial,sans-serif;font-size:7px}.axis line,.axis path{fill:none;stroke:#000;shape-rendering:preserveAspectRatio}.x_path{stroke:#000;stroke-width:1}.chart .title{fill:#000;font-size:15px;font-family:Lucida Grande,verdana,arial,helvetica,sans-serif;font-weight:800;line-height:1.1}.chart .ax_title{fill:#000}.dy_container,.hr_container{position:relative;z-index:2;display:inline-block;vertical-align:top}.charts{margin-top:10px;margin-left:0;margin-right:0;text-align:center;display:block;overflow-x:auto;overflow-y:hidden;white-space:nowrap}.charts,.trim{position:relative}.trim{height:10px;top:50px;background:#ebd9b2;color:#000;border-top:1px solid #d6b161;border-bottom:1px solid #d6b161}.tool_tip text{fill:#fff}#back_button,#curr_button,#next_button,.miss_pages,.page_button{position:relative;float:left;height:24px;width:23px;margin:0 -1px 0 0;padding-top:2.5px;border:1px solid #bfbfbf;z-index:0}#back_button{cursor:pointer;border-top-left-radius:3px;border-bottom-left-radius:3px}#curr_button{background:#ebd9b2;border:1px solid #5f6990;z-index:1}#formHeader>tbody>tr{vertical-align:middle}#next_button{cursor:pointer;border-top-right-radius:3px;border-bottom-right-radius:3px}#page_selector{cursor:default;position:relative;text-align:center;min-width:132px}.page_button>a{text-decoration:none;padding:8px;margin:-8px;height:100%;width:100%}#entries_edit{position:relative;padding:0;width:36px;height:20px;text-align:center;border:1px solid #000;border-radius:3px;z-index:6}#entry_form{min-width:123px}#entry_submit{cursor:default;position:relative;display:inline-block;border:1px solid #000;padding:0;width:22px;height:22px;border-radius:11px;background-color:#ebd9b2;text-align:center;opacity:0;z-index:0}.half_width{width:50%}.third_width{width:30%}.quarter_width{width:25%}.reportBody{text-align:center;text-align:-moz-center}#systemForm{width:90%;border-collapse:separate}#systemForm,.diskUsageForm,.lastAccessForm{margin-left:auto;margin-right:auto;padding:5px;border-spacing:5px}.diskUsageForm,.lastAccessForm{width:70%}.galaxy-frame .corner{-moz-border-radius:.3125rem;border-radius:.3125rem}.galaxy-frame .toggle{color:#fff}.galaxy-frame .frame-background{z-index:1000;height:100%;width:100%;overflow:auto}.galaxy-frame .frame-background,.galaxy-frame .frame-shadow{position:absolute;top:0;left:0;opacity:.5;background:#2c3143}.galaxy-frame .frame-shadow{z-index:1001;display:none;border:1px solid #c7cbda}.galaxy-frame .frame-menu{z-index:1005;position:absolute;cursor:pointer;color:#fff;right:10px}.galaxy-frame .frame-scroll-up{top:50px}.galaxy-frame .frame-scroll-down{bottom:20px}.galaxy-frame .frame{z-index:1002;overflow:hidden;position:absolute;background:#fff;border:1px solid #c7cbda;-webkit-box-shadow:0 0 5px rgba(0,0,0,.3)}.galaxy-frame .frame .f-content{position:absolute;overflow:hidden;background:#fff;border:none;top:24px;bottom:3px;left:3px;right:3px}.galaxy-frame .frame .f-cover{position:absolute;display:none;top:0;left:0;height:100%;width:100%;opacity:0;background:#fff}.galaxy-frame .frame .f-iframe{border:none;width:100%;height:100%}.galaxy-frame .frame .f-header{height:17px;margin:2px;cursor:pointer;border:1px solid #2c3143;background:#2c3143;color:#fff}.galaxy-frame .frame .f-header .f-icon-left{cursor:pointer;font-size:15px;margin-left:3px;float:left}.galaxy-frame .frame .f-header .f-icon-left[disabled]{opacity:.25}.galaxy-frame .frame .f-title{position:absolute;top:2px;left:32px;right:32px;font-size:12px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;text-align:center}.galaxy-frame .frame .f-not-allowed{cursor:not-allowed}.galaxy-frame .frame .f-close{cursor:pointer;position:absolute;font-size:15px;right:5px;top:2px}.galaxy-frame .frame .f-resize{cursor:pointer;position:absolute;font-size:15px;right:0;bottom:0;background:#fff;width:16px;height:16px;color:#2c3143;text-align:center;line-height:16px;border:0}.upload-button{float:right;width:32px;height:24px;font-size:inherit;cursor:pointer;-moz-border-radius:.1875rem;border-radius:.1875rem}.upload-button .progress,.upload-button .upload-button-link{position:absolute;width:inherit}.upload-button .progress{height:inherit;font-size:inherit;background-color:#f8f9fa}.upload-button .progress-bar-danger{background:#f4a3a5}.upload-button .progress-bar-success{background:#c2ebc2}.upload-button .progress-bar-info{background:#ffe6cd}.upload-button .progress-bar-notransition{-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none}.upload-footer .select2-choice,.upload-input,.upload-select2 .select2-choice,.upload-view-composite .upload-box .upload-row .select2-choice,.upload-view-composite .upload-box .upload-row .upload-info .progress,.upload-view-composite .upload-box .upload-row input.upload-title,.upload-view-default .upload-box .upload-row .select2-choice,.upload-view-default .upload-box .upload-row .upload-info .progress,.upload-view-default .upload-box .upload-row input.upload-title{font-size:.85rem;color:#2c3143;height:20px;line-height:18px}.upload-footer .select2-arrow b,.upload-select2 .select2-arrow b,.upload-view-composite .upload-box .upload-row .select2-arrow b,.upload-view-default .upload-box .upload-row .select2-arrow b{position:absolute;top:-3px}.upload-footer .select2-container-disabled .select2-arrow,.upload-select2 .select2-container-disabled .select2-arrow,.upload-view-composite .upload-box .upload-row .select2-container-disabled .select2-arrow,.upload-view-default .upload-box .upload-row .select2-container-disabled .select2-arrow{background:transparent}.upload-footer .select2-choice,.upload-select2 .select2-choice,.upload-view-composite .upload-box .upload-row .select2-choice,.upload-view-default .upload-box .upload-row .select2-choice{background:transparent;text-align:center;font-weight:400}.upload-view-composite .upload-box.highlight,.upload-view-default .upload-box.highlight{border-color:#c7cbda;border-width:2px;padding:7px!important}.upload-view-composite .upload-box.highlight .upload-helper,.upload-view-default .upload-box.highlight .upload-helper{color:#c7cbda}.upload-view-composite .upload-box .upload-row .upload-mode,.upload-view-composite .upload-icon,.upload-view-composite .upload-icon-button,.upload-view-composite .upload-view-default .upload-icon-button,.upload-view-default .upload-box .upload-row .upload-mode,.upload-view-default .upload-icon,.upload-view-default .upload-icon-button,.upload-view-default .upload-view-composite .upload-icon-button{position:relative;cursor:default;font-size:.85rem;width:.85rem}.upload-view-composite .upload-icon-button,.upload-view-default .upload-icon-button{cursor:pointer}.upload-view-composite .upload-box,.upload-view-default .upload-box{width:100%;height:300px;text-align:center;overflow:scroll;font-size:.85rem;-moz-border-radius:.3125rem;border-radius:.3125rem;border:1px dashed #c7cbda;overflow-x:hidden;-ms-overflow-style:none}.upload-view-composite .upload-box .upload-helper,.upload-view-default .upload-box .upload-helper{padding:120px;color:#c7cbda}.upload-view-composite .upload-box .upload-helper i,.upload-view-default .upload-box .upload-helper i{font-size:inherit}.upload-view-composite .upload-box .upload-row .upload-title,.upload-view-default .upload-box .upload-row .upload-title{width:130px;word-wrap:break-word;background:inherit}.upload-view-composite .upload-box .upload-row .upload-title-extended,.upload-view-default .upload-box .upload-row .upload-title-extended{width:580px;word-wrap:break-word}.upload-view-composite .upload-box .upload-row .upload-size,.upload-view-default .upload-box .upload-row .upload-size{width:60px;white-space:nowrap}.upload-view-composite .upload-box .upload-row .upload-extension,.upload-view-default .upload-box .upload-row .upload-extension{width:100px}.upload-view-composite .upload-box .upload-row .upload-genome,.upload-view-default .upload-box .upload-row .upload-genome{width:150px}.upload-view-composite .upload-box .upload-row .upload-mode,.upload-view-default .upload-box .upload-row .upload-mode{float:left}.upload-view-composite .upload-box .upload-row .upload-text-column,.upload-view-default .upload-box .upload-row .upload-text-column{position:relative}.upload-view-composite .upload-box .upload-row .upload-text-column .upload-text,.upload-view-default .upload-box .upload-row .upload-text-column .upload-text{position:absolute;display:none}.upload-view-composite .upload-box .upload-row .upload-text-column .upload-text .upload-text-content,.upload-view-default .upload-box .upload-row .upload-text-column .upload-text .upload-text-content{width:100%;height:80px;resize:none;background:inherit;color:#2c3143;white-space:pre;overflow:auto}.upload-view-composite .upload-box .upload-row .upload-info,.upload-view-default .upload-box .upload-row .upload-info{width:130px;line-height:.85rem}.upload-view-composite .upload-box .upload-row .upload-info .progress,.upload-view-default .upload-box .upload-row .upload-info .progress{width:100%;position:relative;line-height:1.6em}.upload-view-composite .upload-box .upload-row .upload-info .progress .progress-bar,.upload-view-default .upload-box .upload-row .upload-info .progress .progress-bar{border-radius:inherit;-moz-border-radius:inherit}.upload-view-composite .upload-box .upload-row .upload-info .progress .upload-percentage,.upload-view-default .upload-box .upload-row .upload-info .progress .upload-percentage{position:absolute;text-align:center;width:100%;color:#fff}.upload-view-composite .upload-rule-option,.upload-view-default .upload-rule-option{padding-top:20px}.upload-view-composite .upload-rule-option .upload-rule-option-title,.upload-view-default .upload-rule-option .upload-rule-option-title{font-weight:700;padding-bottom:5px}.upload-view-composite .upload-box-solid,.upload-view-default .upload-box-solid{border:1px solid #c7cbda}.upload-view-composite .upload-buttons,.upload-view-default .upload-buttons{padding-top:30px}.upload-view-composite .upload-box .upload-row .upload-title{width:175px}.upload-view-composite .upload-box .upload-row .upload-source{width:80px}.upload-view-composite .upload-box .upload-row .upload-source .action-button,.upload-view-composite .upload-box .upload-row .upload-source .btn,.upload-view-composite .upload-box .upload-row .upload-source .delete-terminal,.upload-view-composite .upload-box .upload-row .upload-source .menubutton,.upload-view-composite .upload-box .upload-row .upload-source button,.upload-view-composite .upload-box .upload-row .upload-source input[type=submit]{padding:0 10px}.upload-ftp{height:250px;width:550px;position:relative;overflow-y:auto;overflow-x:hidden}.upload-ftp .upload-ftp-row .ftp-name{width:290px}.upload-ftp .upload-ftp-row .ftp-size{width:60px}.upload-ftp .upload-ftp-row .ftp-time{width:165px}.upload-ftp .upload-ftp-wait{font-size:.85rem;position:absolute;bottom:10px;right:10px}.upload-ftp .upload-ftp-help{margin-bottom:10px}.upload-ftp .upload-ftp-warning{text-align:center;margin-top:50px}.upload-ftp .upload-ftp-row{cursor:pointer}.upload-ftp .upload-ftp-row .ftp-name{position:relative;word-wrap:break-word}.upload-ftp .upload-ftp-row .ftp-size,.upload-ftp .upload-ftp-row .ftp-time{white-space:nowrap}.upload-ftp th{padding:5px!important}.upload-ftp td{padding:8px 5px!important}.upload-table td{padding:.5rem}.upload-table .alert-success,.upload-table .donemessage,.upload-table .donemessagelarge,.upload-table .donemessagesmall{background:#6c6!important}.upload-settings{position:relative}.upload-settings .upload-settings-cover{position:absolute;width:100%;height:100%;top:0;left:0;background:#fff;opacity:.4;cursor:no-drop}.upload-settings tr{cursor:pointer}.upload-footer{height:20px;text-align:center}.upload-footer .upload-footer-title{font-weight:700}.upload-footer .select2-choice{width:150px}.upload-top{text-align:center}.upload-top .upload-top-info{font-weight:.85rem;text-align:center}.no-highlight{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.no-transition,.ui-button-default .progress .progress-bar{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}.fa-rotate-45{-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}#center .center-container .center-panel,.overflow-auto,.unified-panel-body{overflow:auto!important}.ui-modal{display:none;overflow:auto}.ui-modal .modal-header.no-separator{border:none!important;padding-bottom:0!important}.ui-modal .modal-backdrop{z-index:-1;opacity:.5}.ui-modal .modal-body{position:static}.ui-button-default,.ui-modal .modal-footer .buttons{float:right}.ui-button-default .progress .progress-bar{background:#4fc54f}.ui-button-icon-plain{border:none!important;background:none!important;float:right}.ui-button-check{cursor:pointer}.ui-button-check .icon{font-size:1.2em;width:1em}.ui-thumbnails .ui-thumbnails-item{cursor:pointer}.ui-thumbnails .ui-thumbnails-item .ui-thumbnails-image{padding:10px;width:100px;height:86px}.ui-thumbnails .ui-thumbnails-item .ui-thumbnails-icon{width:100px;height:86px;font-size:4em;padding:20px 26px;color:#2c3143}.ui-thumbnails .ui-thumbnails-item .ui-thumbnails-text{word-wrap:break-word}.ui-thumbnails .ui-thumbnails-item:hover .ui-thumbnails-text,.ui-thumbnails .ui-thumbnails-item:hover .ui-thumbnails-title{text-decoration:underline}.ui-form-element,.ui-form-element-disabled{margin-top:.375rem;margin-bottom:.375rem;overflow:visible;clear:both}.ui-form-element-disabled .ui-form-title,.ui-form-element .ui-form-title{word-wrap:break-word;font-weight:700}.ui-form-element-disabled .ui-form-title .ui-form-collapsible .icon,.ui-form-element .ui-form-title .ui-form-collapsible .icon{cursor:pointer;font-size:1.2em;position:relative;top:1px}.ui-form-element-disabled .ui-form-field,.ui-form-element .ui-form-field{position:relative;margin-top:.375rem}.ui-form-element-disabled .ui-form-field .ui-form-wp-source,.ui-form-element .ui-form-field .ui-form-wp-source{border-left-width:10px}.ui-form-element-disabled .ui-form-field .ui-form-wp-target,.ui-form-element .ui-form-field .ui-form-wp-target{box-shadow:none;border-top:none;border-bottom:none;border-right:none;border-left-width:5px;font-style:italic}.ui-form-element-disabled .ui-form-field .ui-form-backdrop,.ui-form-element .ui-form-field .ui-form-backdrop{z-index:10;position:absolute;top:0;width:100%;height:100%;background:#fff;display:block;opacity:0;cursor:default}.ui-form-element-disabled .ui-form-preview,.ui-form-element .ui-form-preview{margin-top:.375rem;border-color:transparent!important;box-shadow:none!important;height:auto!important}.ui-form-element-disabled .ui-form-title{font-weight:400}.ui-form-composite{height:100%;flex-direction:column;display:flex}.ui-form-composite .ui-steps{overflow:auto}.ui-portlet,.ui-portlet-section{border:none}.ui-portlet-section .portlet-header:first-child,.ui-portlet .portlet-header:first-child{background:#e9ecef}.ui-portlet-section .portlet-header:first-child .portlet-title .portlet-title-text.collapsible,.ui-portlet .portlet-header:first-child .portlet-title .portlet-title-text.collapsible{cursor:pointer;text-decoration:underline}.ui-portlet-section .portlet-backdrop,.ui-portlet .portlet-backdrop{display:none;z-index:10;position:absolute;top:0;width:100%;height:100%;opacity:.2;background:#fff;cursor:not-allowed}.ui-portlet-section{border:none;border-left:3px solid #e9ecef;border-radius:.3125rem}.ui-portlet-section .portlet-header:first-child{background:#e9ecef;border-top-right-radius:.3125rem!important;padding:5px}.popover{max-width:70%}.popover .popover-header{color:#f8f9fa;background-color:#25537b}.popover .popover-header i{font-size:1.1em;cursor:pointer}.search-box-input,.ui-form-element-disabled .ui-form-preview,.ui-form-element .ui-form-preview,.ui-input,.ui-options .ui-options-list,.ui-select .select2-container-multi .select2-choices,.ui-select .select2-container .select2-choice,.ui-select select,.ui-textarea{height:calc(1.5em + .75rem + 2px);background:transparent}.search-box-input[disabled],.search-box-input[readonly],.ui-form-element-disabled .ui-form-preview[disabled],.ui-form-element-disabled .ui-form-preview[readonly],.ui-form-element-disabled fieldset[disabled] .ui-form-preview,.ui-form-element .ui-form-preview[disabled],.ui-form-element .ui-form-preview[readonly],.ui-form-element fieldset[disabled] .ui-form-preview,.ui-input[disabled],.ui-input[readonly],.ui-options .ui-options-list[disabled],.ui-options .ui-options-list[readonly],.ui-options fieldset[disabled] .ui-options-list,.ui-select .select2-container-multi .select2-choices[disabled],.ui-select .select2-container-multi .select2-choices[readonly],.ui-select .select2-container-multi fieldset[disabled] .select2-choices,.ui-select .select2-container .select2-choice[disabled],.ui-select .select2-container .select2-choice[readonly],.ui-select .select2-container fieldset[disabled] .select2-choice,.ui-select fieldset[disabled] select,.ui-select select[disabled],.ui-select select[readonly],.ui-textarea[disabled],.ui-textarea[readonly],fieldset[disabled] .search-box-input,fieldset[disabled] .ui-form-element-disabled .ui-form-preview,fieldset[disabled] .ui-form-element .ui-form-preview,fieldset[disabled] .ui-input,fieldset[disabled] .ui-options .ui-options-list,fieldset[disabled] .ui-select .select2-container-multi .select2-choices,fieldset[disabled] .ui-select .select2-container .select2-choice,fieldset[disabled] .ui-select select,fieldset[disabled] .ui-textarea{cursor:not-allowed;background-color:#f8f9fa}.ui-textarea{height:100px!important}.ui-options .ui-options-list{height:100%!important}.ui-options .ui-options-list input[type=checkbox],.ui-options .ui-options-list input[type=radio]{display:none}.ui-options .ui-options-list label{margin:0;cursor:pointer}.ui-options .ui-options-list .ui-drilldown-button{float:left;cursor:pointer;font-size:1.2em;margin-right:5px;margin-top:3px}.ui-options .ui-options-list .ui-drilldown-subgroup{display:none;margin-left:25px}.ui-options .ui-options-list input[type=checkbox]+label:before{font-family:FontAwesome;display:inline-block;font-style:normal;font-size:1.2em;margin-right:5px;position:relative;top:1px;width:10px;content:"\f096"}.ui-options .ui-options-list input[type=checkbox]:checked+label:before{content:"\f046"}.ui-options .ui-options-list input[type=radio]+label:before{font-family:FontAwesome;display:inline-block;font-style:normal;font-size:1.2em;margin-right:5px;position:relative;top:1px;width:10px;content:"\f1db"}.ui-options .ui-options-list input[type=radio]:checked+label:before{content:"\f192"}.ui-color-picker .ui-color-picker-header{cursor:pointer}.ui-color-picker .ui-color-picker-value{float:left;border-radius:3px;border:1px solid #000;width:12px;height:12px;margin-right:5px}.ui-color-picker .ui-color-picker-label{line-height:1.2em;margin-bottom:5px}.ui-color-picker .ui-color-picker-view{height:100%;overflow:auto;display:none;float:left;margin-bottom:5px}.ui-color-picker .ui-color-picker-view .ui-color-picker-panel{width:210px}.ui-color-picker .ui-color-picker-view .ui-color-picker-panel .ui-color-picker-content{margin-bottom:15px}.ui-color-picker .ui-color-picker-view .ui-color-picker-panel .ui-color-picker-content .badge{padding-bottom:2px}.ui-color-picker .ui-color-picker-view .ui-color-picker-panel .ui-color-picker-content .line .ui-color-picker-box{cursor:pointer;float:left;margin-right:5px;border:1px solid silver;width:15px;height:15px;border-radius:2px}.ui-color-picker .ui-color-picker-view .ui-color-picker-panel .ui-color-picker-content .line .ui-color-picker-box .ui-color-picker-check{color:#000;font-size:1.2em;position:relative;left:1px}.ui-color-picker .ui-color-picker-view .ui-color-picker-panel .ui-color-picker-content:first-child{padding-top:5px;padding-bottom:10px}.ui-color-picker .ui-color-picker-view .ui-color-picker-panel .ui-color-picker-content:last-child{padding-top:85px;padding-bottom:5px}.ui-select{position:relative}.ui-select .icon-dropdown{position:absolute;top:.7rem;right:.5rem;cursor:pointer}.ui-select select{cursor:pointer;-webkit-appearance:none;-moz-border-radius:.1875rem}.ui-select .select2-container{width:100%}.ui-select .select2-container .select2-choice{background-image:none;background:transparent;-webkit-appearance:none;-moz-border-radius:.1875rem;line-height:1.5rem}.ui-select .select2-container .select2-choice .select2-arrow{display:none}.ui-select-multiple .icon-resize{position:absolute;right:0;cursor:row-resize}.ui-select-multiple .icon-resize i{position:absolute;right:.2rem;bottom:.2rem}.ui-select-multiple select{min-height:8rem}.ui-dragover,.ui-dragover-danger,.ui-dragover-success{border-radius:3px;border:2px solid #c7cbda;background:#fff;padding:2px}.ui-dragover-danger{border:2px solid #f4a3a5;background:#f9d1d2!important}.ui-dragover-success{border:2px solid #c2ebc2;background:#e8f8e8!important}.library_style_container{width:95%;margin:1em auto auto;overflow:auto!important}.library_style_container .base-terminal,.library_style_container .base-terminal>icon,.library_style_container .delete-terminal,.library_style_container .drag-terminal,.library_style_container .fa,.library_style_container .input-terminal,.library_style_container .input-terminal>icon,.library_style_container .output-terminal,.library_style_container .output-terminal>icon,.library_style_container .panel-collapse,.library_style_container .state-icon{font-size:12px}.library_style_container .fa-ban,.library_style_container .fa-globe,.library_style_container .fa-key,.library_style_container .fa-shield{font-size:medium;margin-left:.6em}.library_style_container .libraryRow{background-color:#f8f9fa}.library_style_container .datasetHighlighted{background-color:#e9ecef}.library_style_container .libraryItemDeleted-True{font-style:italic}.library_style_container div.libraryItemBody{padding:4px 4px 2px}.library_style_container li.datasetRow,.library_style_container li.folderRow{border-top:1px solid #c7cbda}.library_style_container li.datasetRow:hover,.library_style_container li.folderRow:hover{background-color:#e9ecef}.library_style_container td.right-center{vertical-align:middle!important;text-align:right}.library_style_container .library-genome-select{max-width:350px}.library_style_container .library-extension-select{max-width:140px}.library_style_container .library_table td{border-top:1px solid #5f6990!important}.library_style_container .library_table th{border-bottom:2px solid #5f6990!important}.library_style_container .library_table a{color:#0a143d}.library_style_container .library_table a:hover{color:#2077b3}.library_style_container tr.light{font-weight:400;color:initial}.library_style_container tr.light td{background-color:#fff;color:#000}.library_style_container tr.light:hover td{background-color:#f5e8cc}.library_style_container tr.dark td{background-color:#d6b161;color:#fff}.library_style_container tr.dark:hover td{background-color:#ebd4a4;color:#fff}.library_style_container tr.table-primary td{color:#f8f9fa}.library_style_container a.dark,.library_style_container tr.table-primary td a{color:#fff}.library_style_container .dataset_table td,.library_style_container .dataset_table th,.library_style_container .dataset_table tr{border:none}.library_style_container .dataset_table .dataset-first-column{width:30%}.library_style_container th.button_heading{width:2em}.library_style_container .bigdrop.select2-container .select2-results,.library_style_container .bigdrop .select2-results{max-height:300px}.library_style_container .select2-container-multi{width:100%}.library_style_container .roles-selection{width:66%}.library_style_container #folder_items_element button,.library_style_container #libraries_element button{margin-left:.5em}.library_style_container .import-type-switch{text-decoration:underline}.library_style_container .libimport-select-all,.library_style_container .libimport-select-none{margin-left:.5em}.library_style_container td,.library_style_container thead{vertical-align:middle}.library_style_container .mid{vertical-align:middle;text-align:center}.modal-content .library_selected_history_content ul{list-style-type:none}.modal-content .library-collection-history-select,.modal-content .library-collection-type-select{margin-left:auto;margin-right:auto;width:200px;min-width:200px}.modal-content .library-modal-item{width:90%;margin-left:auto;margin-right:auto;margin-top:1.5em}.libraryTitle th{text-align:left}.libraryTitle .rowTitle{padding:2px}.viewport-container{overflow-x:hidden;overflow-y:auto;background:#fff}.trackster-nav-container{width:100%;text-align:center}.trackster-nav-container.stand-alone{height:0}.trackster-nav{padding:0;color:#333;font-weight:700;display:inline-block;top:-2em;background:transparent;border:none}.trackster-nav.stand-alone{position:relative}.chrom-nav{width:15em}.content{font:10px verdana;position:relative}.nav-controls{text-align:center;padding:1px 0}.nav-controls input{margin:0 5px}#zoom-in,#zoom-out{display:inline-block;height:16px;width:16px;margin-bottom:-3px;cursor:pointer}#zoom-out{background:transparent url(../scripts/bundled/assets/79bf2c5b0236eda94ba8b67b8bf2a35f.png) 50% no-repeat}#zoom-in{margin-left:10px;background:transparent url(../scripts/bundled/assets/ec107d97171bb75a32bba466ec1f6df4.png) 50% no-repeat}.nav-input{font-size:12px;width:30em;z-index:2}.location{display:inline-block;width:15em;margin:0 10px;white-space:nowrap}.intro{z-index:2;margin-left:auto;margin-right:auto;color:#555;text-align:center;font-size:16px}.intro .action-button{background-color:#ccc;margin-top:10px;padding:1em;text-decoration:underline}.overview{width:100%;margin:0;color:#fff}.overview-viewport{position:relative;height:14px;background:#fff;margin:0}.overview-close{font:9px verdana;position:absolute;top:0;right:0;padding:5px;z-index:2;background-color:#fff}.overview-highlight{top:0;position:absolute;z-index:2;border-color:#666;border-style:solid;border-width:0 1px}.overview-boxback{width:100%;background:#eee;border:1px solid #999}.overview-box,.overview-boxback{bottom:0;z-index:2;position:absolute;height:14px}.overview-box{cursor:pointer;margin-top:0;background:#c1c9e5 url(../scripts/bundled/assets/68f6ead9b879fa12c09aa5ea225584f0.png) 50% no-repeat;border:1px solid #666}.viewport-canvas{width:100%;height:100px}.yaxislabel{z-index:2;position:absolute;right:20px}.yaxislabel.bottom{bottom:2px}.group-handle{cursor:move;float:left;background:#eee url(../scripts/bundled/assets/90221f73d1320fd0d2d45734df212fe2.png);width:12px;height:12px}.group{min-height:20px;border-top:1px solid #888;border-bottom:1px solid #888}.group>.track-header{position:relative;float:left}.track-header{height:16px;position:absolute;z-index:2;background-color:rgba(1,1,1,.1);border-radius:5px;padding:0 2px;text-align:left;margin:2px}.track-header:hover{background-color:#ddd}.track-header .track-name{max-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.track-header .menubutton{margin-left:0}.track-name{float:left;margin-top:2px}.tiles{background:url(../scripts/bundled/assets/67ebb9f28d2604faa6acfa8fa1157e41.gif);position:relative;overflow:hidden}.overlay{position:absolute;left:0;top:0}.track-tile{position:absolute;background:#fff}.track-tile canvas{position:relative;z-index:1}.tile-message{border-bottom:1px solid red;text-align:center;color:red;background-color:#fff}.track{position:relative;border-bottom:1px solid #888}.track.error{background:#ecb4af}.track.nodata{background:#eee}.track.pending{background:#ffc}.track-content{text-align:center;position:relative;min-height:20px;padding:0 0 1px}.track-content .message{position:relative;top:4px}.loading{min-height:100px}.label-track{font-size:10px;border:none;padding:0;margin:0;height:1.5em;overflow:hidden}.label-track .label-container{position:relative;height:1.3em}.label-track .pos-label{position:absolute;border-left:1px solid #999;padding:1px 1px 2px;display:inline-block}.label-track .track-content{border:none;background:#fff}.reference-track{border:none;margin:0;padding:0;line-height:1}.reference-track .track-content{min-height:0}.right-float{float:right;margin-left:5px}.top-labeltrack{position:relative;border-bottom:1px solid #999}.nav-labeltrack{border-top:1px solid #999;border-bottom:1px solid #333}input.color-input{float:left}.dynamic-tool,.filters{padding-top:18px;padding-bottom:.5em;margin-left:.25em}.dynamic-tool{width:410px}.filters{float:left;margin:1em;width:60%;position:relative}.display-controls{float:left;margin-left:1em}.slider-row{margin-left:1em;height:16px}.slider-row.input{height:22px}.elt-label{float:left;width:30%;font-weight:700;margin-right:1em}.slider{float:left;width:40%;position:relative;padding-top:2px}.tool-name{font-size:110%;font-weight:700}.param-row{margin-top:.2em;margin-left:1em}.param-label{float:left;font-weight:700;padding-top:.2em;width:50%}.menu-button{margin:0 4px}.exclamation{background:transparent url(../scripts/bundled/assets/3b826fc6b1952a6124edd1ff72b8570b.png) no-repeat;margin-left:5em}.track-icons{float:left}.icon-button.bookmarks{background:transparent url(../scripts/bundled/assets/4bee8922fea44f857d65744f7052c36f.png) no-repeat}.icon-button.bookmarks:hover{background:transparent url(../scripts/bundled/assets/2d4616fb4c853c612b921c060a8816b7.png) no-repeat}.icon-button.layers-stack{background:transparent url(../scripts/bundled/assets/8dc260a6da267c5e8f9899dc93c1ef02.png) no-repeat}.icon-button.layers-stack:hover{background:transparent url(../scripts/bundled/assets/ef571a1808168de9278d5f1a326156a1.png) no-repeat}.icon-button.hammer{background:transparent url(../scripts/bundled/assets/cdb2e2d5f9a8663335cf047791970f9f.png) no-repeat}.icon-button.hammer:hover{background:transparent url(../scripts/bundled/assets/d728100efa2c410296dd74e37364b25e.png) no-repeat}.icon-button.toolbox{background:transparent url(../scripts/bundled/assets/63912368b751c160129e6c42b8824821.png) no-repeat}.icon-button.toolbox:hover{background:transparent url(../scripts/bundled/assets/065988da56cecfb3b0656bff85f5aca8.png) no-repeat}.icon-button.globe{background:transparent url(../scripts/bundled/assets/ca50d4c073ace660f0c2a812bf269c7a.png) no-repeat}.icon-button.globe:hover{background:transparent url(../scripts/bundled/assets/c20270c7806ef19bd902cb5143d55e1c.png) no-repeat}.icon-button.block--plus{background:transparent url(../scripts/bundled/assets/23029e3456c59e9d6bcecc5aa4bd5b43.png) no-repeat}.icon-button.block--plus:hover{background:transparent url(../scripts/bundled/assets/2e2754da2967e360bba3a1bd8eeb4ace.png) no-repeat}.icon-button.toggle{background:transparent url(../scripts/bundled/assets/27664fc7eebd4eee0ab33ac5dfadbcb9.png) no-repeat}.icon-button.toggle:hover{background:transparent url(../scripts/bundled/assets/ad3ca81465da6334b9573b197f2e08f4.png) no-repeat}.icon-button.toggle-expand{background:transparent url(../scripts/bundled/assets/c5081b04fc1f75da3d815725ebd61c8d.png) no-repeat}.icon-button.toggle-expand:hover{background:transparent url(../scripts/bundled/assets/9a63495bf1449dfa480feb44e93068fe.png) no-repeat}.icon-button.gear{background:transparent url(../scripts/bundled/assets/7b93116a225b6113d2ae55932862340f.png) no-repeat}.icon-button.gear:hover{background:transparent url(../scripts/bundled/assets/9f6745862ec59fbb7996b08372557212.png) no-repeat}.icon-button.application-dock-270{background:transparent url(../scripts/bundled/assets/61a4250152fabad0a6a9cd83d40df651.png) no-repeat}.icon-button.application-dock-270:hover{background:transparent url(../scripts/bundled/assets/4d286d58f72d47ed5dfcb74b7c6f7b41.png) no-repeat}.icon-button.ui-slider-050{background:transparent url(../scripts/bundled/assets/a0e8a19a97f92a19079f88923b0dd226.png) no-repeat}.icon-button.ui-slider-050:hover{background:transparent url(../scripts/bundled/assets/e75095752dde848823757312f127ebcd.png) no-repeat}.icon-button.arrow-resize-090{background:transparent url(../scripts/bundled/assets/19c1b34012559d0591b070a08039fd87.png) no-repeat}.icon-button.arrow-resize-090:hover{background:transparent url(../scripts/bundled/assets/4eae101f8d2e9470fc8912125fd5fa26.png) no-repeat}.icon-button.layer-transparent{background:transparent url(../scripts/bundled/assets/e33cb5c3aef19ce1d7b34e269ac0dc64.png) no-repeat}.icon-button.layer-transparent:hover{background:transparent url(../scripts/bundled/assets/27aade6683b945167764ab7574aaa3a8.png) no-repeat}.overview-close,.remove-icon{background:transparent url(../scripts/bundled/assets/17a69f29b21e2aa9b8a7a0fdb3ff81d1.png) no-repeat}.icon-button.remove-icon:hover,.overview-close:hover{background:transparent url(../scripts/bundled/assets/ece5a3abe6e80a27c06da70414c94e42.png) no-repeat}.child-track-icon{background:url(../scripts/bundled/assets/cc158654dad038e5648aea8a49078cfa.png) no-repeat;width:30px;cursor:move}.track-resize{background:#fff url(../scripts/bundled/assets/6d1eda748d2e466db16d38bf9e7583c3.png) no-repeat top;position:absolute;right:3px;bottom:-4px;width:14px;height:7px;border:1px solid #999;z-index:2}.bookmark{background:#fff;border:1px solid #999;border-right:none;margin:.5em 0 .5em .5em;padding:.5em}.bookmark .position{font-weight:700}.delete-icon-container{float:right}.feature-popup{position:absolute;z-index:2;padding:5px;font-size:10px;filter:alpha(opacity=80);background-repeat:no-repeat;background-image:url(../scripts/bundled/assets/46bd59d0472597ded9f5a15dc3f573ce.gif);background-position:top}.feature-popup-inner{padding:5px 8px 4px;background-color:#000;color:#fff}.zoom-area{background-color:#ccf;opacity:.5;z-index:2}.mouse-pos,.zoom-area{position:absolute;top:0}.mouse-pos{background-color:#000;opacity:.15;height:100%;width:1px}.draghandle{margin-top:2px;cursor:move;float:left;background:transparent url(../scripts/bundled/assets/68f6ead9b879fa12c09aa5ea225584f0.png) 50% no-repeat;width:10px;height:12px}.dragging{border:1px solid #00f}.toast-title{font-weight:700}.toast-message{-ms-word-wrap:break-word;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;-webkit-text-shadow:0 1px 0 #fff;text-shadow:0 1px 0 #fff}.toast-close-button,.toast-close-button:focus,.toast-close-button:hover{opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=${opacityPercent})";filter:"alpha(opacity=${opacityPercent})"}.toast-close-button:focus,.toast-close-button:hover{color:#000;text-decoration:none;cursor:pointer}button.toast-close-button{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.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-container{position:fixed;z-index:999999}#toast-container *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#toast-container>div{margin:4em 0 6px;padding:15px 15px 15px 50px;width:300px;-moz-border-radius:3px 3px 3px 3px;-webkit-border-radius:3px 3px 3px 3px;border-radius:3px 3px 3px 3px;background-position:15px;background-repeat:no-repeat;-moz-box-shadow:0 0 12px #999;-webkit-box-shadow:0 0 12px #999;box-shadow:0 0 12px #999;color:#fff}#toast-container>:hover,#toast-container>div{opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=${opacityPercent})";filter:"alpha(opacity=${opacityPercent})"}#toast-container>:hover{-moz-box-shadow:0 0 12px #000;-webkit-box-shadow:0 0 12px #000;box-shadow:0 0 12px #000;cursor:pointer}#toast-container>.toast-info{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=")!important}#toast-container>.toast-error{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=")!important}#toast-container>.toast-success{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==")!important}#toast-container>.toast-warning{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=")!important}#toast-container.toast-bottom-full-width>div,#toast-container.toast-top-full-width>div{width:96%;margin:auto}.toast{background-color:#030303}.toast-success{background-color:#51a351}.toast-error{background-color:#bd362f}.toast-info{background-color:#2f96b4}.toast-warning{background-color:#f89406}@media (max-width:240px){#toast-container>div{padding:8px 8px 8px 50px;width:11em}#toast-container .toast-close-button{right:-.2em;top:-.2em}}@media (min-width:241px) and (max-width:480px){#toast-container>div{padding:8px 8px 8px 50px;width:18em}#toast-container .toast-close-button{right:-.2em;top:-.2em}}@media (min-width:481px) and (max-width:768px){#toast-container>div{padding:15px 15px 15px 50px;width:25em}}.jstree-children,.jstree-container-ul,.jstree-node{display:block;margin:0;padding:0;list-style-type:none;list-style-image:none}.jstree-anchor,.jstree-node{white-space:nowrap}.jstree-anchor{display:inline-block;color:#000;padding:0 4px 0 1px;margin:0;vertical-align:top}.jstree-anchor:focus{outline:0}.jstree-anchor,.jstree-anchor:active,.jstree-anchor:hover,.jstree-anchor:link,.jstree-anchor:visited{text-decoration:none;color:inherit}.jstree-icon,.jstree-icon:empty{display:inline-block;text-decoration:none;margin:0;padding:0;vertical-align:top;text-align:center}.jstree-ocl{cursor:pointer}.jstree-leaf>.jstree-ocl{cursor:default}.jstree .jstree-open>.jstree-children{display:block}.jstree .jstree-closed>.jstree-children,.jstree .jstree-leaf>.jstree-children{display:none}.jstree-anchor>.jstree-themeicon{margin-right:2px}.jstree-anchor>.jstree-themeicon-hidden,.jstree-no-icons .jstree-themeicon{display:none}.jstree-rtl .jstree-anchor{padding:0 1px 0 4px}.jstree-rtl .jstree-anchor>.jstree-themeicon{margin-left:2px;margin-right:0}.jstree-rtl .jstree-node{margin-left:0}.jstree-rtl .jstree-container-ul>.jstree-node{margin-right:0}.jstree-wholerow-ul{position:relative;display:inline-block;min-width:100%}.jstree-wholerow-ul .jstree-leaf>.jstree-ocl{cursor:pointer}.jstree-wholerow-ul .jstree-anchor,.jstree-wholerow-ul .jstree-icon{position:relative}.jstree-wholerow-ul .jstree-wholerow{width:100%;cursor:pointer;position:absolute;left:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vakata-context{display:none}.vakata-context,.vakata-context ul{margin:0;padding:2px;position:absolute;background:#f5f5f5;border:1px solid #979797;-moz-box-shadow:5px 5px 4px -4px #666;-webkit-box-shadow:2px 2px 2px #999;box-shadow:2px 2px 2px #999}.vakata-context ul{list-style:none;left:100%;margin-top:-2.7em;margin-left:-4px}.vakata-context .vakata-context-right ul{left:auto;right:100%;margin-left:auto;margin-right:-4px}.vakata-context li{list-style:none;display:inline}.vakata-context li>a{display:block;padding:0 2em;text-decoration:none;width:auto;color:#000;white-space:nowrap;line-height:2.4em;-moz-text-shadow:1px 1px 0 #fff;-webkit-text-shadow:1px 1px 0 #fff;text-shadow:1px 1px 0 #fff;-moz-border-radius:1px;-webkit-border-radius:1px;border-radius:1px}.vakata-context li>a:hover{position:relative;background-color:#e8eff7;-moz-box-shadow:0 0 2px #0a6aa1;-webkit-box-shadow:0 0 2px #0a6aa1;box-shadow:0 0 2px #0a6aa1}.vakata-context li>a.vakata-context-parent{background-image:url("data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAIORI4JlrqN1oMSnmmZDQUAOw==");background-position:100%;background-repeat:no-repeat}.vakata-context li>a:focus{outline:0}.vakata-context .vakata-context-hover>a{position:relative;background-color:#e8eff7;-moz-box-shadow:0 0 2px #0a6aa1;-webkit-box-shadow:0 0 2px #0a6aa1;box-shadow:0 0 2px #0a6aa1}.vakata-context .vakata-context-separator>a,.vakata-context .vakata-context-separator>a:hover{background:#fff;border:0;border-top:1px solid #e2e3e3;height:1px;min-height:1px;max-height:1px;padding:0;margin:0 0 0 2.4em;border-left:1px solid #e0e0e0;-moz-text-shadow:0 0 0 transparent;-webkit-text-shadow:0 0 0 transparent;text-shadow:0 0 0 transparent;-moz-box-shadow:0 0 0 transparent;-webkit-box-shadow:0 0 0 transparent;box-shadow:0 0 0 transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.vakata-context .vakata-contextmenu-disabled a,.vakata-context .vakata-contextmenu-disabled a:hover{color:silver;background-color:transparent;border:0;box-shadow:0 0 0}.vakata-context li>a>i{text-decoration:none;display:inline-block;height:2.4em;background:transparent;margin:0 0 0 -2em;vertical-align:top;text-align:center}.vakata-context li>a>i,.vakata-context li>a>i:empty{width:2.4em;line-height:2.4em}.vakata-context li>a .vakata-contextmenu-sep{display:inline-block;width:1px;height:2.4em;background:#fff;margin:0 .5em 0 0;border-left:1px solid #e2e3e3}.vakata-context .vakata-contextmenu-shortcut{font-size:.8em;color:silver;opacity:.5;display:none}.vakata-context-rtl ul{left:auto;right:100%;margin-left:auto;margin-right:-4px}.vakata-context-rtl li>a.vakata-context-parent{background-image:url("data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAINjI+AC7rWHIsPtmoxLAA7");background-position:0;background-repeat:no-repeat}.vakata-context-rtl .vakata-context-separator>a{margin:0 2.4em 0 0;border-left:0;border-right:1px solid #e2e3e3}.vakata-context-rtl .vakata-context-left ul{right:auto;left:100%;margin-left:-4px;margin-right:auto}.vakata-context-rtl li>a>i{margin:0 -2em 0 0}.vakata-context-rtl li>a .vakata-contextmenu-sep{margin:0 0 0 .5em;border-left-color:#fff;background:#e2e3e3}#jstree-marker{position:absolute;top:0;left:0;margin:-5px 0 0;padding:0;border-right:0;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid;width:0;height:0;font-size:0;line-height:0}#jstree-dnd{line-height:16px;margin:0;padding:4px}#jstree-dnd .jstree-copy,#jstree-dnd .jstree-icon{display:inline-block;text-decoration:none;margin:0 2px 0 0;padding:0;width:16px;height:16px}#jstree-dnd .jstree-ok{background:green}#jstree-dnd .jstree-er{background:red}#jstree-dnd .jstree-copy{margin:0 2px}.jstree-default .jstree-icon,.jstree-default .jstree-node{background-repeat:no-repeat;background-color:transparent}.jstree-default .jstree-anchor,.jstree-default .jstree-wholerow{transition:background-color .15s,box-shadow .15s}.jstree-default .jstree-hovered{background:#e7f4f9;border-radius:2px;box-shadow:inset 0 0 1px #ccc}.jstree-default .jstree-clicked{background:#beebff;border-radius:2px;box-shadow:inset 0 0 1px #999}.jstree-default .jstree-no-icons .jstree-anchor>.jstree-themeicon{display:none}.jstree-default .jstree-disabled{color:#666}.jstree-default .jstree-disabled.jstree-hovered{box-shadow:none}.jstree-default .jstree-disabled>.jstree-icon{opacity:.8;filter:url("data:image/svg+xml;utf8,#jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default .jstree-search{font-style:italic;color:#8b0000;font-weight:700}.jstree-default .jstree-no-checkboxes .jstree-checkbox{display:none!important}.jstree-default.jstree-checkbox-no-clicked .jstree-clicked{background:transparent;box-shadow:none}.jstree-default.jstree-checkbox-no-clicked .jstree-clicked.jstree-hovered{background:#e7f4f9}.jstree-default.jstree-checkbox-no-clicked>.jstree-wholerow-ul .jstree-wholerow-clicked{background:transparent}.jstree-default.jstree-checkbox-no-clicked>.jstree-wholerow-ul .jstree-wholerow-clicked.jstree-wholerow-hovered{background:#e7f4f9}#jstree-dnd.jstree-default .jstree-er,#jstree-dnd.jstree-default .jstree-ok{background-image:url(../scripts/bundled/assets/db49c8de4f267eede40a9a8843efcdec.png);background-repeat:no-repeat;background-color:transparent}#jstree-dnd.jstree-default i{background:transparent;width:16px;height:16px}#jstree-dnd.jstree-default .jstree-ok{background-position:-9px -71px}#jstree-dnd.jstree-default .jstree-er{background-position:-39px -71px}.jstree-default>.jstree-striped{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAMAAAB/qqA+AAAABlBMVEUAAAAAAAClZ7nPAAAAAnRSTlMNAMM9s3UAAAAXSURBVHjajcEBAQAAAIKg/H/aCQZ70AUBjAATb6YPDgAAAABJRU5ErkJggg==") 0 0 repeat}.jstree-default>.jstree-wholerow-ul .jstree-clicked,.jstree-default>.jstree-wholerow-ul .jstree-hovered{background:transparent;box-shadow:none;border-radius:0}.jstree-default .jstree-wholerow{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.jstree-default .jstree-wholerow-hovered{background:#e7f4f9}.jstree-default .jstree-wholerow-clicked{background:#beebff;background:-moz-linear-gradient(top,#beebff 0,#a8e4ff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#beebff),color-stop(100%,#a8e4ff));background:-webkit-linear-gradient(top,#beebff,#a8e4ff);background:-o-linear-gradient(top,#beebff 0,#a8e4ff 100%);background:-ms-linear-gradient(top,#beebff 0,#a8e4ff 100%);background:linear-gradient(180deg,#beebff 0,#a8e4ff)}.jstree-default .jstree-node{min-height:24px;line-height:24px;margin-left:24px;min-width:24px}.jstree-default .jstree-anchor{line-height:24px;height:24px}.jstree-default .jstree-icon,.jstree-default .jstree-icon:empty{width:24px;height:24px;line-height:24px}.jstree-default.jstree-rtl .jstree-node{margin-right:24px}.jstree-default .jstree-wholerow{height:24px}.jstree-default .jstree-icon,.jstree-default .jstree-node{background-image:url(../scripts/bundled/assets/db49c8de4f267eede40a9a8843efcdec.png)}.jstree-default .jstree-node{background-position:-292px -4px;background-repeat:repeat-y}.jstree-default .jstree-last{background:transparent}.jstree-default .jstree-open>.jstree-ocl{background-position:-132px -4px}.jstree-default .jstree-closed>.jstree-ocl{background-position:-100px -4px}.jstree-default .jstree-leaf>.jstree-ocl{background-position:-68px -4px}.jstree-default .jstree-themeicon{background-position:-260px -4px}.jstree-default>.jstree-no-dots .jstree-leaf>.jstree-ocl,.jstree-default>.jstree-no-dots .jstree-node{background:transparent}.jstree-default>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-36px -4px}.jstree-default>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-4px -4px}.jstree-default .jstree-disabled,.jstree-default .jstree-disabled.jstree-hovered{background:transparent}.jstree-default .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default .jstree-checkbox{background-position:-164px -4px}.jstree-default .jstree-checkbox:hover{background-position:-164px -36px}.jstree-default.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default .jstree-checked>.jstree-checkbox{background-position:-228px -4px}.jstree-default.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default .jstree-checked>.jstree-checkbox:hover{background-position:-228px -36px}.jstree-default .jstree-anchor>.jstree-undetermined{background-position:-196px -4px}.jstree-default .jstree-anchor>.jstree-undetermined:hover{background-position:-196px -36px}.jstree-default>.jstree-striped{background-size:auto 48px}.jstree-default.jstree-rtl .jstree-node{background-position:100% 1px;background-repeat:repeat-y}.jstree-default.jstree-rtl .jstree-open>.jstree-ocl{background-position:-132px -36px}.jstree-default.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-100px -36px}.jstree-default.jstree-rtl .jstree-leaf>.jstree-ocl{background-position:-68px -36px}.jstree-default.jstree-rtl>.jstree-no-dots .jstree-leaf>.jstree-ocl,.jstree-default.jstree-rtl>.jstree-no-dots .jstree-node{background:transparent}.jstree-default.jstree-rtl>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-36px -36px}.jstree-default.jstree-rtl>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-4px -36px}.jstree-default .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url(../scripts/bundled/assets/9ed4669f524bec38319be63a2ee4ba26.gif) 50% no-repeat}.jstree-default .jstree-file{background:url(../scripts/bundled/assets/db49c8de4f267eede40a9a8843efcdec.png) -100px -68px no-repeat}.jstree-default .jstree-folder{background:url(../scripts/bundled/assets/db49c8de4f267eede40a9a8843efcdec.png) -260px -4px no-repeat}.jstree-default.jstree-rtl .jstree-node{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==")}.jstree-default.jstree-rtl .jstree-last{background:transparent}.jstree-default-small .jstree-node{min-height:18px;line-height:18px;margin-left:18px;min-width:18px}.jstree-default-small .jstree-anchor{line-height:18px;height:18px}.jstree-default-small .jstree-icon,.jstree-default-small .jstree-icon:empty{width:18px;height:18px;line-height:18px}.jstree-default-small.jstree-rtl .jstree-node{margin-right:18px}.jstree-default-small .jstree-wholerow{height:18px}.jstree-default-small .jstree-icon,.jstree-default-small .jstree-node{background-image:url(../scripts/bundled/assets/db49c8de4f267eede40a9a8843efcdec.png)}.jstree-default-small .jstree-node{background-position:-295px -7px;background-repeat:repeat-y}.jstree-default-small .jstree-last{background:transparent}.jstree-default-small .jstree-open>.jstree-ocl{background-position:-135px -7px}.jstree-default-small .jstree-closed>.jstree-ocl{background-position:-103px -7px}.jstree-default-small .jstree-leaf>.jstree-ocl{background-position:-71px -7px}.jstree-default-small .jstree-themeicon{background-position:-263px -7px}.jstree-default-small>.jstree-no-dots .jstree-leaf>.jstree-ocl,.jstree-default-small>.jstree-no-dots .jstree-node{background:transparent}.jstree-default-small>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-39px -7px}.jstree-default-small>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-7px -7px}.jstree-default-small .jstree-disabled,.jstree-default-small .jstree-disabled.jstree-hovered{background:transparent}.jstree-default-small .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default-small .jstree-checkbox{background-position:-167px -7px}.jstree-default-small .jstree-checkbox:hover{background-position:-167px -39px}.jstree-default-small.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-small .jstree-checked>.jstree-checkbox{background-position:-231px -7px}.jstree-default-small.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-small .jstree-checked>.jstree-checkbox:hover{background-position:-231px -39px}.jstree-default-small .jstree-anchor>.jstree-undetermined{background-position:-199px -7px}.jstree-default-small .jstree-anchor>.jstree-undetermined:hover{background-position:-199px -39px}.jstree-default-small>.jstree-striped{background-size:auto 36px}.jstree-default-small.jstree-rtl .jstree-node{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==");background-position:100% 1px;background-repeat:repeat-y}.jstree-default-small.jstree-rtl .jstree-open>.jstree-ocl{background-position:-135px -39px}.jstree-default-small.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-103px -39px}.jstree-default-small.jstree-rtl .jstree-leaf>.jstree-ocl{background-position:-71px -39px}.jstree-default-small.jstree-rtl>.jstree-no-dots .jstree-leaf>.jstree-ocl,.jstree-default-small.jstree-rtl>.jstree-no-dots .jstree-node{background:transparent}.jstree-default-small.jstree-rtl>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-39px -39px}.jstree-default-small.jstree-rtl>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-7px -39px}.jstree-default-small .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-small>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url(../scripts/bundled/assets/9ed4669f524bec38319be63a2ee4ba26.gif) 50% no-repeat}.jstree-default-small .jstree-file{background:url(../scripts/bundled/assets/db49c8de4f267eede40a9a8843efcdec.png) -103px -71px no-repeat}.jstree-default-small .jstree-folder{background:url(../scripts/bundled/assets/db49c8de4f267eede40a9a8843efcdec.png) -263px -7px no-repeat}.jstree-default-small.jstree-rtl .jstree-node{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAACAQMAAABv1h6PAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMHBgAAiABBI4gz9AAAAABJRU5ErkJggg==")}.jstree-default-small.jstree-rtl .jstree-last{background:transparent}.jstree-default-large .jstree-node{min-height:32px;line-height:32px;margin-left:32px;min-width:32px}.jstree-default-large .jstree-anchor{line-height:32px;height:32px}.jstree-default-large .jstree-icon,.jstree-default-large .jstree-icon:empty{width:32px;height:32px;line-height:32px}.jstree-default-large.jstree-rtl .jstree-node{margin-right:32px}.jstree-default-large .jstree-wholerow{height:32px}.jstree-default-large .jstree-icon,.jstree-default-large .jstree-node{background-image:url(../scripts/bundled/assets/db49c8de4f267eede40a9a8843efcdec.png)}.jstree-default-large .jstree-node{background-position:-288px 0;background-repeat:repeat-y}.jstree-default-large .jstree-last{background:transparent}.jstree-default-large .jstree-open>.jstree-ocl{background-position:-128px 0}.jstree-default-large .jstree-closed>.jstree-ocl{background-position:-96px 0}.jstree-default-large .jstree-leaf>.jstree-ocl{background-position:-64px 0}.jstree-default-large .jstree-themeicon{background-position:-256px 0}.jstree-default-large>.jstree-no-dots .jstree-leaf>.jstree-ocl,.jstree-default-large>.jstree-no-dots .jstree-node{background:transparent}.jstree-default-large>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-32px 0}.jstree-default-large>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:0 0}.jstree-default-large .jstree-disabled,.jstree-default-large .jstree-disabled.jstree-hovered{background:transparent}.jstree-default-large .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default-large .jstree-checkbox{background-position:-160px 0}.jstree-default-large .jstree-checkbox:hover{background-position:-160px -32px}.jstree-default-large.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-large .jstree-checked>.jstree-checkbox{background-position:-224px 0}.jstree-default-large.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-large .jstree-checked>.jstree-checkbox:hover{background-position:-224px -32px}.jstree-default-large .jstree-anchor>.jstree-undetermined{background-position:-192px 0}.jstree-default-large .jstree-anchor>.jstree-undetermined:hover{background-position:-192px -32px}.jstree-default-large>.jstree-striped{background-size:auto 64px}.jstree-default-large.jstree-rtl .jstree-node{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==");background-position:100% 1px;background-repeat:repeat-y}.jstree-default-large.jstree-rtl .jstree-open>.jstree-ocl{background-position:-128px -32px}.jstree-default-large.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-96px -32px}.jstree-default-large.jstree-rtl .jstree-leaf>.jstree-ocl{background-position:-64px -32px}.jstree-default-large.jstree-rtl>.jstree-no-dots .jstree-leaf>.jstree-ocl,.jstree-default-large.jstree-rtl>.jstree-no-dots .jstree-node{background:transparent}.jstree-default-large.jstree-rtl>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-32px -32px}.jstree-default-large.jstree-rtl>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:0 -32px}.jstree-default-large .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-large>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url(../scripts/bundled/assets/9ed4669f524bec38319be63a2ee4ba26.gif) 50% no-repeat}.jstree-default-large .jstree-file{background:url(../scripts/bundled/assets/db49c8de4f267eede40a9a8843efcdec.png) -96px -64px no-repeat}.jstree-default-large .jstree-folder{background:url(../scripts/bundled/assets/db49c8de4f267eede40a9a8843efcdec.png) -256px 0 no-repeat}.jstree-default-large.jstree-rtl .jstree-node{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg==")}.jstree-default-large.jstree-rtl .jstree-last{background:transparent}@media (max-width:768px){#jstree-dnd.jstree-dnd-responsive{line-height:40px;font-weight:700;font-size:1.1em;text-shadow:1px 1px #fff}#jstree-dnd.jstree-dnd-responsive>i{background:transparent;width:40px;height:40px}#jstree-dnd.jstree-dnd-responsive>.jstree-ok{background-position:0 -200px}#jstree-dnd.jstree-dnd-responsive>.jstree-er,#jstree-dnd.jstree-dnd-responsive>.jstree-ok{background-image:url(../scripts/bundled/assets/1f075735090412ed7eb8077d819b19c6.png);background-size:120px 240px}#jstree-dnd.jstree-dnd-responsive>.jstree-er{background-position:-40px -200px}#jstree-marker.jstree-dnd-responsive{border-left-width:10px;border-top-width:10px;border-bottom-width:10px;margin-top:-10px}}@media (max-width:768px){.jstree-default-responsive .jstree-icon{background-image:url(../scripts/bundled/assets/1f075735090412ed7eb8077d819b19c6.png)}.jstree-default-responsive .jstree-leaf>.jstree-ocl,.jstree-default-responsive .jstree-node{background:transparent}.jstree-default-responsive .jstree-node{min-height:40px;line-height:40px;margin-left:40px;min-width:40px;white-space:nowrap}.jstree-default-responsive .jstree-anchor{line-height:40px;height:40px}.jstree-default-responsive .jstree-icon,.jstree-default-responsive .jstree-icon:empty{width:40px;height:40px;line-height:40px}.jstree-default-responsive>.jstree-container-ul>.jstree-node{margin-left:0}.jstree-default-responsive.jstree-rtl .jstree-node{margin-left:0;margin-right:40px}.jstree-default-responsive.jstree-rtl .jstree-container-ul>.jstree-node{margin-right:0}.jstree-default-responsive .jstree-checkbox,.jstree-default-responsive .jstree-ocl,.jstree-default-responsive .jstree-themeicon{background-size:120px 240px}.jstree-default-responsive .jstree-leaf>.jstree-ocl{background:transparent}.jstree-default-responsive .jstree-open>.jstree-ocl{background-position:0 0!important}.jstree-default-responsive .jstree-closed>.jstree-ocl{background-position:0 -40px!important}.jstree-default-responsive.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-40px 0!important}.jstree-default-responsive .jstree-themeicon{background-position:-40px -40px}.jstree-default-responsive .jstree-checkbox,.jstree-default-responsive .jstree-checkbox:hover{background-position:-40px -80px}.jstree-default-responsive.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-responsive.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover,.jstree-default-responsive .jstree-checked>.jstree-checkbox,.jstree-default-responsive .jstree-checked>.jstree-checkbox:hover{background-position:0 -80px}.jstree-default-responsive .jstree-anchor>.jstree-undetermined,.jstree-default-responsive .jstree-anchor>.jstree-undetermined:hover{background-position:0 -120px}.jstree-default-responsive .jstree-anchor{font-weight:700;font-size:1.1em;text-shadow:1px 1px #fff}.jstree-default-responsive>.jstree-striped{background:transparent}.jstree-default-responsive .jstree-wholerow{border-top:1px solid hsla(0,0%,100%,.7);border-bottom:1px solid rgba(64,64,64,.2);background:#ebebeb;height:40px}.jstree-default-responsive .jstree-wholerow-hovered{background:#e7f4f9}.jstree-default-responsive .jstree-wholerow-clicked{background:#beebff}.jstree-default-responsive .jstree-children .jstree-last>.jstree-wholerow{box-shadow:inset 0 -6px 3px -5px #666}.jstree-default-responsive .jstree-children .jstree-open>.jstree-wholerow{box-shadow:inset 0 6px 3px -5px #666;border-top:0}.jstree-default-responsive .jstree-children .jstree-open+.jstree-open{box-shadow:none}.jstree-default-responsive .jstree-checkbox,.jstree-default-responsive .jstree-icon,.jstree-default-responsive .jstree-node,.jstree-default-responsive .jstree-node>.jstree-ocl,.jstree-default-responsive .jstree-themeicon{background-image:url(../scripts/bundled/assets/1f075735090412ed7eb8077d819b19c6.png);background-size:120px 240px}.jstree-default-responsive .jstree-node{background-position:-80px 0;background-repeat:repeat-y}.jstree-default-responsive .jstree-last{background:transparent}.jstree-default-responsive .jstree-leaf>.jstree-ocl{background-position:-40px -120px}.jstree-default-responsive .jstree-last>.jstree-ocl{background-position:-40px -160px}.jstree-default-responsive .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-responsive .jstree-file{background:url(../scripts/bundled/assets/1f075735090412ed7eb8077d819b19c6.png) 0 -160px no-repeat;background-size:120px 240px}.jstree-default-responsive .jstree-folder{background:url(../scripts/bundled/assets/1f075735090412ed7eb8077d819b19c6.png) -40px -40px no-repeat;background-size:120px 240px}}.jstree-default>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}.tour-tour>.popover-title{background-color:#2c3143;color:#fff}.dataset-collection-panel,.flex-horizontal-container,.flex-vertical-container,.history-panel{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;property:wrap;-webkit-align-items:stretch;-ms-align-items:stretch;-ms-flex-align:stretch;-webkit-align-content:stretch;-ms-align-content:stretch;property:stretch;-ms-flex-line-pack:stretch;-webkit-justify-content:flex-start;-ms-justify-content:flex-start;property:flex-start;-ms-flex-pack:start}.dataset-collection-panel,.flex-vertical-container,.history-panel{flex-flow:column nowrap}.flex-horizontal-container{flex-flow:row nowrap}#everything,#left,#right,.dataset-collection-panel>.list-items,.flex-column,.flex-row,.history-panel>.list-items,.unified-panel{-webkit-flex:1 1 auto;-ms-flex:1 1 auto;property:1 1 auto;-webkit-align-self:auto;-ms-align-self:auto;property:auto;-ms-flex-item-align:auto}.charts-client{background:#fff}.charts-client .charts-buttons{position:absolute;right:0;z-index:1000;width:170px;top:4px}.charts-client .charts-buttons .action-button,.charts-client .charts-buttons .btn,.charts-client .charts-buttons .delete-terminal,.charts-client .charts-buttons .menubutton,.charts-client .charts-buttons button,.charts-client .charts-buttons input[type=submit]{background:#fff;color:#2c3143;border:none}.charts-client .charts-buttons .action-button .icon,.charts-client .charts-buttons .btn .icon,.charts-client .charts-buttons .delete-terminal .icon,.charts-client .charts-buttons .menubutton .icon,.charts-client .charts-buttons button .icon,.charts-client .charts-buttons input[type=submit] .icon{font-size:1.5em}.charts-client .charts-buttons .action-button .fa-check-square,.charts-client .charts-buttons .btn .fa-check-square,.charts-client .charts-buttons .delete-terminal .fa-check-square,.charts-client .charts-buttons .menubutton .fa-check-square,.charts-client .charts-buttons button .fa-check-square,.charts-client .charts-buttons input[type=submit] .fa-check-square{color:#38504a}.charts-client .charts-center{float:left;width:70%;overflow:hidden;padding:10px 5px 10px 10px}.charts-client .charts-center .charts-viewer{height:inherit;min-height:50px}.charts-client .charts-center .charts-viewer .info{position:absolute;margin:40px 20px 50px 10px;width:50%;word-break:break-word}.charts-client .charts-center .charts-viewer .text{position:relative;margin-left:5px;top:-1px;font-size:1em;display:inline}.charts-client .charts-center .charts-viewer .icon{font-size:1.2em;display:inline-block}.charts-client .charts-center .charts-viewer .charts-viewer-container{float:left;display:block;height:100%}.charts-client .charts-center .charts-viewer .charts-viewer-canvas{display:block;width:100%;min-height:100px;height:inherit}.charts-client .charts-right{float:left;width:30%;height:100vh;padding-bottom:40px;padding-top:40px;overflow:hidden;display:flex;flex-direction:column}.charts-client .charts-right .charts-editor{display:block;flex:1;overflow:auto;padding:5px 10px 30px 5px}.charts-client .charts-right .charts-editor .charts-description{margin-bottom:20px}.charts-client .charts-right .charts-editor .charts-description .charts-description-image-td{vertical-align:top}.charts-client .charts-right .charts-editor .charts-description .charts-description-image{width:50px;height:43px;margin-right:10px}.charts-client .charts-right .charts-editor .charts-description .charts-description-title{font-weight:700}.charts-client .charts-right .charts-editor .charts-description .charts-description-text{margin-top:5px;word-break:break-word}.charts-client.charts-fullscreen .charts-buttons{position:absolute;right:0}.charts-client.charts-fullscreen .charts-center{width:100%}.charts-client.charts-fullscreen .charts-right{display:none}#center:only-child .message{margin:10px}.shed-style-container{width:95%;margin:1em auto auto;overflow:auto!important}.shed-style-container .header h2{float:left}.shed-style-container .header span{float:right}.ui-autocomplete{background-color:#fff}.ui-autocomplete li.ui-menu-item{list-style-type:none}.select2-minwidth{min-width:256px}.select2-drop-above.select2-drop-active,.select2-drop-active{border:1px solid #c7cbda}.select2-drop{background:#fff;color:#2c3143}.menubutton,.unified-panel-footer,.unified-panel-header,.unselectable{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;-khtml-user-select:none;user-select:none}.clear:after,.list-panel .controls .list-actions:after{display:block;clear:both;content:""}#background,#dd-helper,#everything,.full-content{background:#fff;color:#2c3143}.full-message{height:2.5rem!important;border-bottom:1px solid #c7cbda;font-size:90%;display:none}#everything{top:0;left:0}#columns{flex:1}#background{z-index:-1}#dd-helper{opacity:0;z-index:900;display:none}#left{left:0;width:18rem;border-right:none}#right{right:0;width:18rem;border-left:none}#right>.unified-panel-footer .drag{left:0}#center{left:18rem;right:18rem}#center .center-container .center-panel{display:none;padding:1rem 1.5rem;background:#fff}#center:first-child{left:0}#center:last-child{right:0}#left,#right,.unified-panel{display:flex;background:#f8f9fa}.unified-panel-header{height:2.5rem;font-size:1rem;font-weight:700;align-items:center;color:#2c3143;background:#f8f9fa}.unified-panel-header a{color:#2c3143}.unified-panel-header .unified-panel-header-inner{align-items:center;justify-content:space-between}.unified-panel-header .panel-header-buttons{order:9999}.unified-panel-header .panel-header-buttons .panel-header-button,.unified-panel-header .panel-header-buttons .upload-button .upload-button-link,.upload-button .unified-panel-header .panel-header-buttons .upload-button-link{text-align:center}.unified-panel-header .panel-header-buttons .panel-header-button:hover,.unified-panel-header .panel-header-buttons .upload-button .upload-button-link:hover,.upload-button .unified-panel-header .panel-header-buttons .upload-button-link:hover{color:#2077b3}.unified-panel-body{flex:1}.unified-panel-body-background{background:none repeat scroll 0 0 #f8f9fa}.unified-panel-footer{position:relative;height:25px;line-height:25px;width:100%;border-top:none;background:#f8f9fa;color:#2c3143}.unified-panel-footer a{color:#2c3143}.unified-panel-footer .drag{position:absolute;top:0;right:0;padding:0 5px;text-align:center;height:25px;width:20px;background-image:url(../scripts/bundled/assets/68f6ead9b879fa12c09aa5ea225584f0.png);background-repeat:no-repeat;background-position:50% 50%;cursor:col-resize}.panel-collapse{font-size:4/3em;cursor:pointer;display:block;position:fixed;text-align:center;height:25px;line-height:25px;width:25px;background:#f8f9fa;border:1px solid #f8f9fa;z-index:1}.panel-collapse.right{right:0;border-top-left-radius:.1875rem;line-height:inherit}.panel-collapse.right:before{content:"\f054"}.panel-collapse.right.hidden:before{content:"\f053"}.panel-collapse.right.hidden{border-top-color:#bdc6d0;border-left-color:#bdc6d0}.panel-collapse.left{left:0;border-top-right-radius:.1875rem;line-height:inherit}.panel-collapse.left:before{content:"\f053"}.panel-collapse.left.hidden:before{content:"\f054"}.panel-collapse.left.hidden{border-top-color:#bdc6d0;border-right-color:#bdc6d0}.panel-done-message,.panel-error-message,.panel-info-message,.panel-warning-message{height:2.5rem;line-height:2.5rem;padding:0 0 0 2.5rem;background-color:#f4a3a5;background-image:url(../scripts/bundled/assets/cfce5a66786eb61eb171449e06db22b9.png);background-repeat:no-repeat;background-position:.5rem 50%}.panel-warning-message{background-image:url(../scripts/bundled/assets/e417938def579af5c4d237a1cc340445.png);background-color:#ffcc9a}.panel-done-message{background-image:url(../scripts/bundled/assets/09387d05e6ddc1ef8f075125a2381afb.png);background-color:#c2ebc2}.panel-info-message{background-image:url(../scripts/bundled/assets/a50b48a558d13ae2d72c691697330efc.svg);background-size:1.5rem;background-color:#a6c9e1}.panel-info-message svg:path{fill:#000}#masthead{background-color:#2c3143;height:3rem}#masthead .navbar-nav{min-height:100%}#masthead .navbar-nav>li{min-height:100%;display:flex;align-items:center}#masthead .navbar-nav>li.active{background:#181a24}#masthead .navbar-nav>li.active .nav-link{color:#fff}#masthead .navbar-nav>li .nav-link{cursor:pointer;text-decoration:none;color:#dae0e5}#masthead .navbar-nav>li .nav-link:hover{color:gold}#masthead .navbar-nav>li .nav-link.nav-icon{font-size:1.7em}#masthead .navbar-nav>li .nav-link.toggle{color:gold}#masthead .navbar-nav>li .nav-note{right:.4rem;top:.7rem;font-size:.7rem;color:gold;width:0}#masthead .navbar-brand{left:.3rem;top:0;font-family:verdana;font-size:1.25rem;color:#dae0e5;text-decoration:none}#masthead .navbar-brand .navbar-brand-image{display:inline;width:26px;margin-left:.35em;border:none}#masthead .navbar-brand .navbar-brand-title{color:#fff}.quota-meter-container{position:absolute;right:0;height:32px}.quota-meter{position:absolute;top:8px;right:8px;height:16px;width:100px}.quota-meter-bar{position:absolute;top:0;left:0;height:16px;background-color:#25537b}.quota-meter-bar-warn{background-color:#fe7f02}.quota-meter-bar-error{background-color:#e31a1e}.quota-meter-text{position:absolute;top:50%;left:0;width:100px;height:16px;margin-top:-7px;text-align:center;z-index:9001;white-space:nowrap}.quota-meter-text a{font-size:12px;text-decoration:none;display:block}div.metadataForm{border:1px solid #aaa}div.metadataFormTitle{font-weight:700;padding:5px 10px;background:#ccc;background-repeat:repeat-x;background-position:top;border-bottom:1px solid #aaa}div.metadataFormBody{background:#fff;padding:5px 0}div.metadataFormBody div.metadataFormTitle{background:transparent;font-weight:700;border:none;border-bottom:1px solid #dcb790;margin-bottom:5px}div.metadataFormDisabled div.metadataFormTitle{background:#eee;border-color:#c7cbda}div.metadataFormDisabled{border-color:#c7cbda}div.metadataHelpBody{width:100%;overflow:auto}div.toolFormBody div.toolFormTitle{background:transparent;font-weight:700;border:none;border-bottom:1px solid #bdc6d0;margin-bottom:5px}div.toolFormDisabled div.toolFormTitle{background:#f5f5f5;border-color:#c7cbda}div.toolFormDisabled{border-color:#c7cbda}div.toolHelp{margin-top:15px;padding:5px}div.toolHelpBody{width:100%}div.toolFormRow{position:relative}.toolForm.toolFormInCanvas{z-index:100;position:absolute;border-color:#25537b}.toolForm.toolFormInCanvas.toolForm-active{z-index:1001;box-shadow:0 0 0 2px #25537b}.toolForm.toolFormInCanvas .toolFormTitle{cursor:move;background:#dee2e6}.toolForm.toolFormInCanvas .toolFormBody .rule{height:0;border:none;border-bottom:1px dotted #000;margin:0 5px}.toolForm.toolFormInCanvas.tool-node-error{border-color:#eb5f62}.toolForm.toolFormInCanvas.tool-node-error .toolFormTitle{background:#f4a3a5;border-color:#eb5f62}div.form,div.toolForm{border:1px solid #bdc6d0;-webkit-border-radius:.1875rem;-moz-border-radius:.1875rem;border-radius:.1875rem}div.form-title,div.toolFormTitle{padding:5px 10px;background:#f8f9fa;border-bottom:1px solid #bdc6d0;word-wrap:break-word}div.form-body{padding:5px 0}div.form-row{position:relative}div.form-row,div.form-title-row{padding:5px 10px}div.repeat-group-item{border-left:5px solid #bdc6d0;margin-left:10px;margin-bottom:10px}div.form-row-error{background:#f4a3a5}div.form-row label{font-weight:700;display:block;margin-bottom:.2em}div.form-row label.inline{display:inline}div.form-row-input{width:90%;float:left}div.form-row-input label{font-weight:400;display:inline}.form-row.form-actions{background:#f5f5f5;border-top:1px solid #ddd;padding-top:10px;padding-bottom:10px;margin-top:5px}.workflow-right{background:#fff}.workflow-right .right-content{margin:3px}.workflow-right .right-content .section-row{margin-bottom:10px}.form-row{display:block}.form-row input[type=file],.form-row input[type=password],.form-row input[type=text],.form-row select,.form-row textarea{max-width:90%}.donemessagelarge,.error-modal .modal-content,.errormessagelarge,.form-help .error,.form-help .note,.form-help .warning,.infomessagelarge,.warningmessagelarge{min-height:36px;padding-left:52px;background-image:url(../scripts/bundled/assets/cf784a27568fb2349c19b2b94c2752e2.png);background-repeat:no-repeat;background-position:10px 5px}.donemessagelarge .messagerow,.error-modal .modal-content .messagerow,.errormessagelarge .messagerow,.form-help .error .messagerow,.form-help .note .messagerow,.form-help .warning .messagerow,.infomessagelarge .messagerow,.warningmessagelarge .messagerow{padding:10px 20px}.error-modal .modal-content,.errormessagelarge{padding-left:52px}.warningmessagelarge{padding-left:52px;background-image:url(../scripts/bundled/assets/5648b8df09221214723d59eb54fbaaa2.png)}.donemessagelarge{padding-left:52px;background-image:url(../scripts/bundled/assets/2f14cb3a743ea736c1929642c5598c9e.png)}.infomessagelarge{background-image:url(../scripts/bundled/assets/28ebb58fc523bca914caec25e480350a.png)}.donemessage,.donemessagesmall,.errormessage,.errormessagesmall,.form-help .error,.form-help .note,.form-help .warning,.infomessage,.infomessagesmall,.warningmessage,.warningmessagesmall{padding:5px 5px 5px 25px;min-height:15px;background-image:url(../scripts/bundled/assets/cfce5a66786eb61eb171449e06db22b9.png);background-repeat:no-repeat;background-position:5px 6px}.form-help .warning,.warningmessage,.warningmessagesmall{background-image:url(../scripts/bundled/assets/e417938def579af5c4d237a1cc340445.png)}.donemessage,.donemessagesmall{background-image:url(../scripts/bundled/assets/09387d05e6ddc1ef8f075125a2381afb.png)}.form-help .note,.infomessage,.infomessagesmall{background-image:url(../scripts/bundled/assets/4e1e4881535880c858540c03e97afd69.png)}.donemark,.err_bgr,.errormark,.infomark,.ok_bgr,.warningmark{padding-left:20px;min-height:15px;background:url(../scripts/bundled/assets/cfce5a66786eb61eb171449e06db22b9.png) no-repeat}.warningmark{background-image:url(../scripts/bundled/assets/e417938def579af5c4d237a1cc340445.png)}.donemark{background-image:url(../scripts/bundled/assets/09387d05e6ddc1ef8f075125a2381afb.png)}.infomark,.ok_bgr{background-image:url(../scripts/bundled/assets/4e1e4881535880c858540c03e97afd69.png)}table.simple{font-size:12px;background:#fff;margin:1em;border-collapse:collapse;text-align:left}table.simple th{font-size:14px;font-weight:400;padding:10px 8px;border-bottom:2px solid #333}table.simple td{padding:10px 8px 0}table.simple tbody tr:hover td{color:#333}table.tabletip{width:100%;border-collapse:collapse;text-align:left}table.tabletip th{white-space:nowrap;border-bottom:1px solid #444;padding-right:3px}table.tabletip td{border-bottom:1px solid #ddd}table.tabletip tbody tr:hover td{background-color:#eee}table.colored{border-top:1px solid #c7cbda;border-bottom:1px solid #c7cbda}table.colored td,table.colored th{text-align:left;padding:5px;line-height:1.5}table.colored tr.header{background:#f8f9fa;background-repeat:repeat-x;background-position:top;border-bottom:1px solid #c7cbda;font-weight:700}table.colored tr{background:#fff}table.colored tr.odd_row{background:#e9ecef}div.debug{margin:10px;padding:5px;background:#ff9;border:1px solid #ff3;color:#000}.grid{border-collapse:collapse}.grid thead tr{height:2em}.grid thead th{line-height:1.5;background:#f8f9fa;color:#2c3143;text-align:left;white-space:nowrap}.grid tfoot td{background-color:#f8f9fa}.grid .current,.grid .upload-ftp .upload-ftp-row:hover,.grid .upload-settings tr:hover,.upload-ftp .grid .upload-ftp-row:hover,.upload-settings .grid tr:hover{background-color:#b3e6b3}.count-box{min-width:1.1em;padding:5px;border-width:1px;border-style:solid;text-align:center;display:inline-block}.text-filter-val{border:1px solid #aaa;padding:1px 2px 1px 3px;margin-right:5px;-moz-border-radius:.5em;-webkit-border-radius:.5em;font-style:italic}.inactive-link,.page-link-grid a{padding:0 7px;color:#555}.current-filter,.inactive-link{font-weight:700;color:#000}#advanced-search td{padding:3px}#advanced-search table{border-collapse:separate}.delete-search-icon{background:url(../scripts/bundled/assets/79ee7f3ae726dc325c2507bb4fd2920b.png) 50% no-repeat;display:inline-block;width:10px;cursor:pointer;height:18px;vertical-align:middle;margin-left:2px}.search-box-input{float:left}.search-box{vertical-align:bottom;display:inline-block;padding:0;white-space:nowrap}.gray-background{background-color:#ddd}.loading-elt-overlay{background-color:#fff;opacity:.5;width:100%;height:100%;z-index:14000;position:fixed;display:none}div.odd_row{background:#e9ecef}#footer{display:none}span.toolParameterExpandableCollapsable{font-weight:700;cursor:pointer}ul.toolParameterExpandableCollapsable{list-style:none}ul.manage-table-actions{float:right;margin-top:-2.5em}ul.manage-table-actions li{display:block;float:left;margin-left:.5em}.state-progress{border:1px solid #c7cbda}.state-progress .info{color:#2c3143;background:#fff}.state-progress .new{background:#e9ecef}.state-progress .running{background:#ffe6cd}.state-progress .ok{background:#c2ebc2}.state-progress .error{background:#f4a3a5}.state-color-new{border-color:#c7cbda;background:#e9ecef}.state-color-upload{border-color:#63a0ca;background:#a6c9e1}.state-color-queued,.state-color-waiting{border-color:#c7cbda;background:#e9ecef}.state-color-running{border-color:#c7cbda;background:#ffe6cd}.state-color-ok{border-color:#94db94;background:#c2ebc2}.state-color-error{border-color:#eb5f62;background:#f4a3a5}.state-color-deleted{border-color:#6b769d;border-style:dotted;background:#90a0b0}.state-color-hidden{border-color:#c7cbda;border-style:dotted;background:#e9ecef}a.action-button,a.btn,a.delete-terminal,a.menubutton{text-decoration:none}a.action-button{color:#2c3143;background:#e9ecef}.action-button>img{vertical-align:middle}.menubutton{display:inline-block;cursor:pointer;position:relative}.menubutton a{text-decoration:none}.menubutton .menubutton-label,.menubutton>label{position:relative;display:inline-block;border-right:none;text-decoration:none;text-align:left;max-height:3;line-height:1.5;overflow:hidden;text-overflow:ellipsis}.menubutton.popup .menubutton-label{margin:-5px 0;border-right:1px solid #c7cbda;padding-right:6px}.menubutton.popup,.menubutton.popup.split{padding-right:18px}.menubutton.popup.split:after,.menubutton.popup: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}.menubutton.popup.split:empty:after,.menubutton.popup:empty:after{margin-left:0}.menubutton.popup.split:after,.menubutton.popup:after{margin-left:.5rem}.menubutton.background-none{background:none}div.popmenu-wrapper{position:absolute;top:100%;z-index:20000}div.popmenu-wrapper .dropdown-menu{display:block;position:relative;float:none}.popup-arrow{cursor:pointer;text-decoration:none;color:#555}.popup-arrow:hover{color:#000}div.permissionContainer{padding-left:20px}.text-content hr{display:block;width:100%;height:1px;border:none;background:#aaa;color:#aaa}.text-content table{border-collapse:collapse;border-top:1px solid #ccc;border-left:1px solid #ccc}.text-content blockquote{color:#666}.text-content fieldset{border:1px solid #ccc}.text-content td,.text-content th{border-bottom:1px solid #ddd;border-right:1px solid #ccc;padding:.8em}.preserve-text-breaks{white-space:pre-line}.icon-button{width:16px;height:16px;display:block;float:left;margin-left:2px;text-indent:20px;background-repeat:no-repeat;background-position:0 0;padding:0}.fa-icon-button{text-align:center;text-decoration:none;display:inline-block;cursor:pointer;width:16px;height:16px}.fa-icon-button:hover{color:#2077b3}.editable-text{cursor:pointer}.editable-text:hover{cursor:text;border:1px dotted #c7cbda}.icon-button.multiinput{background:url(../scripts/bundled/assets/ca817b7e7903ed90baf47c7ad75e280a.png) no-repeat;cursor:pointer;float:none;display:inline-block;margin-left:10px}.icon-button.multiinput.disabled{background:url(../scripts/bundled/assets/a8404382a2467b54bb973b9565a2567d.png) no-repeat;cursor:pointer}.icon-button.link{background:url(../scripts/bundled/assets/a5dc8319bff018855ee0441e4a3b54b9.png) no-repeat}.icon-button.link,.icon-button.link-broken{cursor:pointer;float:none;display:inline-block;margin-left:10px}.icon-button.link-broken{background:url(../scripts/bundled/assets/c57d26e66ee81c9750a35266329fb15a.png) no-repeat}.workflow-invocation-complete{border:1px solid #6a6;border-left-width:5px;margin:10px 0;padding-left:5px}.icon-btn,.ui-button-icon-plain{display:inline-block;height:22px;width:22px;font-size:125%;text-align:center;line-height:19px;border-radius:3px;border:1px solid #c7cbda;background-color:#e9ecef;color:#2c3143;cursor:pointer}.icon-btn:focus,.icon-btn:hover,.ui-button-icon-plain:focus,.ui-button-icon-plain:hover{outline:0;background-color:#fff;color:#2077b3}.disabled.ui-button-icon-plain,.icon-btn.disabled{background-color:transparent;color:#bbb;border-color:#bbb}.dataset .details .actions .left,.dataset .details .actions .right,.icon-btn-group,.list-item .primary-actions,.list-panel .controls .actions{display:inline-block}.dataset .details .actions .left .icon-btn:not(:last-of-type),.dataset .details .actions .left .ui-button-icon-plain:not(:last-of-type),.dataset .details .actions .right .icon-btn:not(:last-of-type),.dataset .details .actions .right .ui-button-icon-plain:not(:last-of-type),.icon-btn-group .icon-btn:not(:last-of-type),.icon-btn-group .ui-button-icon-plain:not(:last-of-type),.list-item .primary-actions .icon-btn:not(:last-of-type),.list-item .primary-actions .ui-button-icon-plain:not(:last-of-type),.list-panel .controls .actions .icon-btn:not(:last-of-type),.list-panel .controls .actions .ui-button-icon-plain:not(:last-of-type){margin:0;border-radius:0;border-right:none}.dataset .details .actions .left .icon-btn:first-child,.dataset .details .actions .left .ui-button-icon-plain:first-child,.dataset .details .actions .right .icon-btn:first-child,.dataset .details .actions .right .ui-button-icon-plain:first-child,.icon-btn-group .icon-btn:first-child,.icon-btn-group .ui-button-icon-plain:first-child,.list-item .primary-actions .icon-btn:first-child,.list-item .primary-actions .ui-button-icon-plain:first-child,.list-panel .controls .actions .icon-btn:first-child,.list-panel .controls .actions .ui-button-icon-plain:first-child{margin-right:0;border-top-left-radius:3px;border-bottom-left-radius:3px}.dataset .details .actions .left .icon-btn:last-child,.dataset .details .actions .left .ui-button-icon-plain:last-child,.dataset .details .actions .right .icon-btn:last-child,.dataset .details .actions .right .ui-button-icon-plain:last-child,.icon-btn-group .icon-btn:last-child,.icon-btn-group .ui-button-icon-plain:last-child,.list-item .primary-actions .icon-btn:last-child,.list-item .primary-actions .ui-button-icon-plain:last-child,.list-panel .controls .actions .icon-btn:last-child,.list-panel .controls .actions .ui-button-icon-plain:last-child{margin-left:0;border-radius:0 3px 3px 0}.dataset .details .actions .left .icon-btn:only-child,.dataset .details .actions .left .ui-button-icon-plain:only-child,.dataset .details .actions .right .icon-btn:only-child,.dataset .details .actions .right .ui-button-icon-plain:only-child,.icon-btn-group .icon-btn:only-child,.icon-btn-group .ui-button-icon-plain:only-child,.list-item .primary-actions .icon-btn:only-child,.list-item .primary-actions .ui-button-icon-plain:only-child,.list-panel .controls .actions .icon-btn:only-child,.list-panel .controls .actions .ui-button-icon-plain:only-child{margin:0;border-radius:3px}.dataset .details .annotation-display .annotation,.dataset .details .summary .info,.dataset .details .summary .job-error-text,.list-item .info-section{border-radius:3px;border:1px solid rgba(44,49,67,.3);padding:4px}.dataset .details .actions:not(:last-child),.dataset .details .annotation-display,.dataset .details .dataset-peek,.dataset .details .display-applications .display-application:last-child,.dataset .details .summary,.dataset .details .summary .dbkey:after,.list-item .vertical-spacing,.list-panel .vertical-spacing{margin-bottom:8px}.dataset .details .summary .datatype .value:after,.list-item .details .prompt,.list-item .help-text{font-weight:400;color:#404862}.list-item{border:1px solid #c7cbda}.list-item .warnings:not(:empty){padding-top:4px}.list-item .warnings [class$=messagesmall]{margin:6px .75rem 2px;font-size:90%}.list-item .warnings [class$=messagesmall]:first-child{margin-top:0}.list-item .warnings [class$=messagesmall]:last-child{margin-bottom:0}.list-item .details .prompt,.list-item .help-text{font-weight:400;color:#404862}.list-item .selector{float:left;display:none;width:2.5rem;font-size:80%;color:#2c3143;cursor:pointer;vertical-align:middle;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;-khtml-user-select:none;user-select:none}.list-item .selector:hover{color:#2077b3}.list-item .title-bar{cursor:pointer;outline:none}.list-item .title-bar .title{display:inline;font-weight:700;word-wrap:break-word;word-break:break-all;line-height:16px}.list-item .title-bar .title:hover{text-decoration:underline}.list-item .title-bar .subtitle{color:#404862;font-size:90%}.list-item .title-bar .subtitle a{color:inherit}.list-item .title-bar .state-description{color:#404862;font-size:90%}.list-item .title-bar .state-description a{color:inherit}.list-item .primary-actions{float:right}.list-item .primary-actions .icon-btn,.list-item .primary-actions .ui-button-icon-plain{margin-left:2px}.list-item .details{display:none}.list-item .details label{margin:0;padding:0;font-weight:400}.list-item .details .prompt:after{content:":";margin-right:4px}.list-panel{overflow:hidden}.list-panel .controls .name{word-wrap:break-word;font-weight:700}.list-panel .controls .name input{width:100%;margin:-3px 0 -3px -3px;font-weight:700}.list-panel .controls .subtitle{color:#404862;font-size:90%}.list-panel .controls .subtitle a{color:inherit}.list-panel .controls .editable-text{border:1px solid transparent}.list-panel .controls .editable-text:hover{cursor:pointer;border:1px dotted #999}.list-panel .controls .actions{float:right}.list-panel .controls .actions .icon-btn,.list-panel .controls .actions .ui-button-icon-plain{margin-left:2px}.list-panel .controls .messages:after{display:block;clear:both;content:""}.list-panel .controls .messages [class$=message],.list-panel .controls .messages [class$=messagesmall]{margin:0}.list-panel .controls .messages [class$=message]:not(:last-child),.list-panel .controls .messages [class$=messagesmall]:not(:last-child){margin-bottom:8px}.list-panel .controls .list-actions{display:none}.list-panel .controls .list-actions .action-button,.list-panel .controls .list-actions .btn,.list-panel .controls .list-actions .delete-terminal,.list-panel .controls .list-actions .menubutton,.list-panel .controls .list-actions button,.list-panel .controls .list-actions input[type=submit]{padding-top:2px;padding-bottom:2px;font-size:90%}.list-panel .controls .list-actions .list-action-menu{float:right}.list-panel .list-items{margin:0;padding:0}.list-panel .list-items .list-item{border-width:1px 0}.list-panel .list-items .list-item:not(:last-child){border-bottom-width:0}.list-panel .empty-message{display:none;margin:0}.list-item .details .list-panel{margin-top:8px;border-radius:3px;background:#fff;padding:4px}.list-item .details .list-panel .list-items{border:1px solid #c7cbda;border-radius:3px}.list-item .details .list-panel .list-items .list-item:first-child{border-top-width:0;border-radius:3px 3px 0 0}.list-item .details .list-panel .list-items .list-item:last-child{border-bottom-width:0;border-radius:0 0 3px 3px}.state-icon{display:inline-block;margin-right:4px;vertical-align:middle;width:14px;height:14px;line-height:14px;text-align:center;font-size:14px}.has-job-state-mixin.state-loading .state-icon,.has-job-state-mixin.state-running .state-icon,.has-job-state-mixin.state-setting_metadata .state-icon,.state-icon-running,.state-loading.dataset-collection-element .state-icon,.state-loading.dataset .state-icon,.state-loading.history-content.dataset-collection .state-icon,.state-running.dataset-collection-element .state-icon,.state-running.dataset .state-icon,.state-running.history-content.dataset-collection .state-icon,.state-setting_metadata.dataset-collection-element .state-icon,.state-setting_metadata.dataset .state-icon,.state-setting_metadata.history-content.dataset-collection .state-icon{filter:blur(0)}.has-job-state-mixin.state-upload .state-icon,.state-icon-upload,.state-upload.dataset-collection-element .state-icon,.state-upload.dataset .state-icon,.state-upload.history-content.dataset-collection .state-icon{overflow:hidden}.has-job-state-mixin.state-upload .state-icon:before,.state-icon-upload:before,.state-upload.dataset-collection-element .state-icon:before,.state-upload.dataset .state-icon:before,.state-upload.history-content.dataset-collection .state-icon:before{display:inline-block;-webkit-animation:eclipse 2s linear infinite;-moz-animation:eclipse 2s infinite linear;-o-animation:eclipse 2s infinite linear;animation:eclipse 2s linear infinite;content:""}@-moz-keyframes eclipse{0%{-moz-transform:translateY(16px)}to{-moz-transform:translateY(-16px)}}@-webkit-keyframes eclipse{0%{-webkit-transform:translateY(16px)}to{-webkit-transform:translateY(-16px)}}@-o-keyframes eclipse{0%{-o-transform:translateY(16px)}to{-o-transform:translateY(-16px)}}@-ms-keyframes eclipse{.has-job-state-mixin.state-upload .state-icon:before 0%,.state-icon-upload:before 0%,.state-upload.dataset-collection-element .state-icon:before 0%,.state-upload.dataset .state-icon:before 0%,.state-upload.history-content.dataset-collection .state-icon:before 0%{-ms-transform:translateY(16px)}.has-job-state-mixin.state-upload .state-icon:before to,.state-icon-upload:before to,.state-upload.dataset-collection-element .state-icon:before to,.state-upload.dataset .state-icon:before to,.state-upload.history-content.dataset-collection .state-icon:before to{-ms-transform:translateY(-16px)}}@keyframes eclipse{0%{transform:translateY(16px)}to{transform:translateY(-16px)}}.has-job-state-mixin.state-empty .state-icon,.has-job-state-mixin.state-error .state-icon,.state-empty.dataset-collection-element .state-icon,.state-empty.dataset .state-icon,.state-empty.history-content.dataset-collection .state-icon,.state-error.dataset-collection-element .state-icon,.state-error.dataset .state-icon,.state-error.history-content.dataset-collection .state-icon,.state-icon-error{background-color:#fff;border-radius:8px}.has-job-state-mixin.state-empty .state-icon:before,.has-job-state-mixin.state-error .state-icon:before,.state-empty.dataset-collection-element .state-icon:before,.state-empty.dataset .state-icon:before,.state-empty.history-content.dataset-collection .state-icon:before,.state-error.dataset-collection-element .state-icon:before,.state-error.dataset .state-icon:before,.state-error.history-content.dataset-collection .state-icon:before,.state-icon-error:before{font-size:20px;line-height:16px;color:red;content:""}.has-job-state-mixin.state-failed_metadata,.has-job-state-mixin.state-ok,.state-failed_metadata.dataset,.state-failed_metadata.dataset-collection-element,.state-failed_metadata.history-content.dataset-collection,.state-ok.dataset,.state-ok.dataset-collection-element,.state-ok.history-content.dataset-collection{background:#c2ebc2}.has-job-state-mixin.state-failed_metadata .state-icon,.has-job-state-mixin.state-ok .state-icon,.state-failed_metadata.dataset-collection-element .state-icon,.state-failed_metadata.dataset .state-icon,.state-failed_metadata.history-content.dataset-collection .state-icon,.state-ok.dataset-collection-element .state-icon,.state-ok.dataset .state-icon,.state-ok.history-content.dataset-collection .state-icon{display:none}.has-job-state-mixin.state-empty,.has-job-state-mixin.state-error,.state-empty.dataset,.state-empty.dataset-collection-element,.state-empty.history-content.dataset-collection,.state-error.dataset,.state-error.dataset-collection-element,.state-error.history-content.dataset-collection{background:#f4a3a5}.has-job-state-mixin.state-upload,.state-upload.dataset,.state-upload.dataset-collection-element,.state-upload.history-content.dataset-collection{background:#a6c9e1}.has-job-state-mixin.state-queued,.state-queued.dataset,.state-queued.dataset-collection-element,.state-queued.history-content.dataset-collection{background:#e9ecef}.has-job-state-mixin.state-queued .state-icon:before,.state-queued.dataset-collection-element .state-icon:before,.state-queued.dataset .state-icon:before,.state-queued.history-content.dataset-collection .state-icon:before{content:""}.has-job-state-mixin.state-running,.has-job-state-mixin.state-setting_metadata,.state-running.dataset,.state-running.dataset-collection-element,.state-running.history-content.dataset-collection,.state-setting_metadata.dataset,.state-setting_metadata.dataset-collection-element,.state-setting_metadata.history-content.dataset-collection{background:#ffe6cd}.has-job-state-mixin.state-paused,.state-paused.dataset,.state-paused.dataset-collection-element,.state-paused.history-content.dataset-collection{background:#daecf8}.has-job-state-mixin.state-paused .state-icon:before,.state-paused.dataset-collection-element .state-icon:before,.state-paused.dataset .state-icon:before,.state-paused.history-content.dataset-collection .state-icon:before{content:""}.has-job-state-mixin.state-discarded,.state-discarded.dataset,.state-discarded.dataset-collection-element,.state-discarded.history-content.dataset-collection{background:#e9ecef}.has-job-state-mixin.state-discarded .state-icon:before,.state-discarded.dataset-collection-element .state-icon:before,.state-discarded.dataset .state-icon:before,.state-discarded.history-content.dataset-collection .state-icon:before{content:""}.has-job-state-mixin.state-noPermission,.state-noPermission.dataset,.state-noPermission.dataset-collection-element,.state-noPermission.history-content.dataset-collection{background:#e9ecef;filter:alpha(opacity=60);-moz-opacity:.6;opacity:.6}.has-job-state-mixin.state-noPermission .state-icon,.state-noPermission.dataset-collection-element .state-icon,.state-noPermission.dataset .state-icon,.state-noPermission.history-content.dataset-collection .state-icon{font-size:20px}.has-job-state-mixin.state-noPermission .state-icon:before,.state-noPermission.dataset-collection-element .state-icon:before,.state-noPermission.dataset .state-icon:before,.state-noPermission.history-content.dataset-collection .state-icon:before{content:""}.has-job-state-mixin.state-new,.state-new.dataset,.state-new.dataset-collection-element,.state-new.history-content.dataset-collection{background:#e9ecef}.has-job-state-mixin.state-new .state-icon:before,.state-new.dataset-collection-element .state-icon:before,.state-new.dataset .state-icon:before,.state-new.history-content.dataset-collection .state-icon:before{content:""}.has-job-state-mixin.state-loading,.state-loading.dataset,.state-loading.dataset-collection-element,.state-loading.history-content.dataset-collection{background:#e9ecef}.blinking{animation:blinker .5s linear infinite}@keyframes blinker{50%{opacity:0}}.dataset .details .summary .blurb{margin-bottom:2px}.dataset .details .summary .datatype,.dataset .details .summary .dbkey{display:inline}.dataset .details .summary .datatype .value,.dataset .details .summary .dbkey .value{font-weight:700}.dataset .details .summary .datatype .value:after{content:",";margin-right:4px}.dataset .details .summary .dbkey:after{content:" ";display:block}.dataset .details .summary .info{overflow:auto}.dataset .details .summary .info .value{white-space:pre-line}.dataset .details .summary .job-error-text{overflow:auto;white-space:pre}.dataset .details .actions .metafile-dropdown,.dataset .details .actions .visualizations-dropdown{display:inline-block}.dataset .details .actions .left{float:left}.dataset .details .actions .left .icon-btn,.dataset .details .actions .left .ui-button-icon-plain{margin-right:2px}.dataset .details .actions .right{float:right}.dataset .details .actions .right .icon-btn,.dataset .details .actions .right .ui-button-icon-plain{margin-left:2px}.dataset .details .annotation-display{display:none}.dataset .details .annotation-display .annotation{white-space:pre-wrap;overflow:auto}.dataset .details .annotation-display .annotation:empty:after{color:#404862;content:"Click here to edit annotation"}.dataset .details .annotation-display textarea{margin:0 0 2px;display:inline-block;border-radius:3px;width:100%}.dataset .details .toolhelp{width:100%;background:#eee;border-radius:3px;margin-top:5px;padding:3px}.dataset .details .dataset-peek{width:100%;margin:0;border-radius:3px;background:#fff;color:#000;font-size:10px;overflow:auto}.dataset .details .dataset-peek th{color:#fff;background:#25537b}.dataset .details .dataset-peek table,.dataset .details .dataset-peek td,.dataset .details .dataset-peek th,.dataset .details .dataset-peek tr{font-family:Monaco,Menlo,Consolas,Courier New,monospace;font-size:10px}pre.peek{background:#fff;color:#000;width:100%;font-size:10px;overflow:auto}pre.peek th{color:#fff;background:#25537b}pre.peek table,pre.peek td,pre.peek th,pre.peek tr{font-family:Monaco,Menlo,Consolas,Courier New,monospace;font-size:10px}/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */.base-terminal,.base-terminal>icon,.delete-terminal,.drag-terminal,.fa,.input-terminal,.input-terminal>icon,.output-terminal,.output-terminal>icon,.panel-collapse,.state-icon{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.base-terminal>icon.fa-pull-left,.fa-pull-left.base-terminal,.fa-pull-left.delete-terminal,.fa-pull-left.drag-terminal,.fa-pull-left.input-terminal,.fa-pull-left.output-terminal,.fa-pull-left.panel-collapse,.fa-pull-left.state-icon,.fa.fa-pull-left,.input-terminal>icon.fa-pull-left,.output-terminal>icon.fa-pull-left{margin-right:.3em}.base-terminal>icon.fa-pull-right,.fa-pull-right.base-terminal,.fa-pull-right.delete-terminal,.fa-pull-right.drag-terminal,.fa-pull-right.input-terminal,.fa-pull-right.output-terminal,.fa-pull-right.panel-collapse,.fa-pull-right.state-icon,.fa.fa-pull-right,.input-terminal>icon.fa-pull-right,.output-terminal>icon.fa-pull-right{margin-left:.3em}.base-terminal>icon.pull-left,.fa.pull-left,.input-terminal>icon.pull-left,.output-terminal>icon.pull-left,.pull-left.base-terminal,.pull-left.delete-terminal,.pull-left.drag-terminal,.pull-left.input-terminal,.pull-left.output-terminal,.pull-left.panel-collapse,.pull-left.state-icon{margin-right:.3em}.base-terminal>icon.pull-right,.fa.pull-right,.input-terminal>icon.pull-right,.output-terminal>icon.pull-right,.pull-right.base-terminal,.pull-right.delete-terminal,.pull-right.drag-terminal,.pull-right.input-terminal,.pull-right.output-terminal,.pull-right.panel-collapse,.pull-right.state-icon{margin-left:.3em}.fa-spin,.has-job-state-mixin.state-loading .state-icon,.has-job-state-mixin.state-running .state-icon,.has-job-state-mixin.state-setting_metadata .state-icon,.state-icon-running,.state-loading.dataset-collection-element .state-icon,.state-loading.dataset .state-icon,.state-loading.history-content.dataset-collection .state-icon,.state-running.dataset-collection-element .state-icon,.state-running.dataset .state-icon,.state-running.history-content.dataset-collection .state-icon,.state-setting_metadata.dataset-collection-element .state-icon,.state-setting_metadata.dataset .state-icon,.state-setting_metadata.history-content.dataset-collection .state-icon{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.delete-terminal:before,.fa-minus-circle:before{content:""}.fa-spinner:before,.has-job-state-mixin.state-loading .state-icon:before,.has-job-state-mixin.state-running .state-icon:before,.has-job-state-mixin.state-setting_metadata .state-icon:before,.state-icon-running:before,.state-loading.dataset-collection-element .state-icon:before,.state-loading.dataset .state-icon:before,.state-loading.history-content.dataset-collection .state-icon:before,.state-running.dataset-collection-element .state-icon:before,.state-running.dataset .state-icon:before,.state-running.history-content.dataset-collection .state-icon:before,.state-setting_metadata.dataset-collection-element .state-icon:before,.state-setting_metadata.dataset .state-icon:before,.state-setting_metadata.history-content.dataset-collection .state-icon:before{content:""}.base-terminal:before,.drag-terminal:before,.fa-circle:before,.input-terminal:before,.output-terminal:before{content:""}.base-terminal>icon:before,.fa-chevron-circle-right:before,.input-terminal>icon:before,.output-terminal>icon:before{content:""}.history-panel>.controls{flex:0 0 auto}.history-panel>.controls .title .name{margin-left:-1px}.history-panel>.controls .title input{font-weight:700}.history-panel>.controls .subtitle:not(:empty) span+span:before{content:", "}.history-panel>.controls .history-size{float:left}.history-panel>.controls .actions:empty{height:22px}.history-panel>.controls .messages{clear:both}.history-panel>.controls .messages .quota-message{display:none}.history-panel>.controls .annotation-display{display:none;margin-bottom:8px;color:#404862}.history-panel>.controls .annotation-display .prompt{display:block;margin:0;padding:0;font-size:90%;font-weight:400}.history-panel>.controls .annotation-display .prompt:after{content:":"}.history-panel>.controls .annotation-display .annotation{background:#fff;border-radius:3px;border:1px solid rgba(44,49,67,.5);padding:4px;white-space:pre-wrap;overflow:auto}.history-panel>.controls .annotation-display .annotation:empty:after{position:relative;top:-4px;font-size:10px;font-style:italic;color:#404862;content:"Click here to edit annotation"}.history-panel>.controls .annotation-display textarea{margin:0 0 2px;border-radius:3px;width:100%}.history-panel>.controls .list-pagination{width:100%;text-align:center;margin:0;border-top:1px solid #c7cbda}.history-panel>.controls .list-pagination button{margin:0;padding:0;width:25%;max-width:128px;height:20px;color:transparent;overflow:hidden}.history-panel>.controls .list-pagination .pages{-moz-appearance:none;-webkit-appearance:none;appearance:none;margin:0;padding:0;width:48%;max-width:256px;height:20px;box-shadow:none;text-align:center;text-align-last:center}.history-panel>.controls .list-pagination .pages:focus{outline:none}.history-panel>.controls .list-pagination .pages:hover{cursor:pointer}.history-panel>.controls .list-pagination:empty{display:none}.history-panel>.controls .list-pagination>*{border:none;border-radius:0;background:transparent}.history-panel>.controls .list-pagination>.pages{color:#404862;text-decoration:underline}.history-panel>.controls .list-pagination>:active,.history-panel>.controls .list-pagination>:focus,.history-panel>.controls .list-pagination>:hover{background:#e9ecef;color:#2c3143;box-shadow:none;text-decoration:none}.history-panel>.controls .list-pagination:hover>:not([disabled]){color:#2c3143}.history-panel .history-drop-target-help{margin:10px 10px 4px;color:#404862;font-size:80%;font-style:italic;text-align:center}.history-panel .history-drop-target{min-height:64px;margin:0 10px 10px;border:1px dashed #000;border-radius:3px}.history-panel>.list-items{overflow-x:hidden;overflow-y:auto}.history-panel>.list-items:not(:empty){border-top:1px solid #c7cbda}.history-panel>.list-items:empty{flex-grow:0!important}.history-panel>.list-items .list-item:first-child{border-top-width:0}.history-panel .contents-loading-indicator,.history-panel .loading-indicator{display:inline-block;width:100%;padding:16px;text-align:center;color:#2c3143}.history-panel .history-content.dataset-collection .title-bar .title .hid:after,.history-panel .history-content.dataset .title-bar .title .hid:after{content:":"}.history-panel>.controls.collapsed{margin:0;padding:4px 8px;flex-basis:32px}.history-panel>.controls.collapsed .annotation-display .prompt,.history-panel>.controls.collapsed .history-size,.history-panel>.controls.collapsed .messages,.history-panel>.controls.collapsed .subtitle,.history-panel>.controls.collapsed .title{display:none}.history-panel>.controls.collapsed .search{margin-bottom:4px}.history-panel>.controls.collapsed .actions{margin-bottom:0}.history-panel>.controls.collapsed .list-pagination .next,.history-panel>.controls.collapsed .list-pagination .prev{display:none}.history-panel>.controls.collapsed .list-pagination .pages{float:left}.history-panel.wide>.controls .actions:empty{height:auto}.history-panel .dataset-collection .subtitle{margin-top:2px}.annotated-history-panel>.controls{margin:0}.annotated-history-panel>.controls .name{font-size:150%;margin-bottom:4px}.annotated-history-panel>.controls .subtitle{display:block;white-space:pre-wrap}.annotated-history-panel>.controls .subtitle:empty{display:none}.annotated-history-panel>.controls .history-size{float:none;margin:0}.annotated-history-panel .headers.contents-container{margin-bottom:0;border-bottom:2px solid grey;cursor:unset}.annotated-history-panel .headers.contents-container>*{vertical-align:middle;padding:8px;font-weight:700}.annotated-history-panel .headers.contents-container .additional-info{text-align:right}.annotated-history-panel .contents-container{display:table;table-layout:fixed;width:100%;cursor:pointer;border-bottom:1px solid hsla(0,0%,50.2%,.5)}.annotated-history-panel .contents-container>*{display:table-cell;vertical-align:top;width:50%}.annotated-history-panel .contents-container .additional-info:not(.header){padding:8px;white-space:pre-wrap}.annotated-history-panel>.list-items{width:100%;border-bottom:1px solid #d3d3d3}.annotated-history-panel .empty-message{margin-top:8px}.embedded-item.display.history .annotated-history-panel>.controls .name{display:none}.current-history-panel>.controls .list-pagination{font-size:90%}.current-history-panel>.controls .list-pagination>*{font-size:inherit}.current-history-panel .list-item.history-content.current-content{border-left:5px solid #4e5777}#right.history-right-panel .unified-panel-body{display:-webkit-flex}#right.history-right-panel .unified-panel-body .middle{overflow:auto;width:100%;display:-webkit-flex!important}.multi-panel-history{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.multi-panel-history .flex-column-container,.multi-panel-history .flex-row-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;min-width:0;min-height:0;-webkit-align-items:stretch;-ms-align-items:stretch;align-items:stretch;-webkit-align-content:stretch;-ms-align-content:stretch;align-content:stretch;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.multi-panel-history .flex-row-container{-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.multi-panel-history .flex-column-container{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.multi-panel-history #everything,.multi-panel-history #left,.multi-panel-history #right,.multi-panel-history .dataset-collection-panel>.list-items,.multi-panel-history .flex-column,.multi-panel-history .flex-row,.multi-panel-history .history-panel>.list-items,.multi-panel-history .unified-panel{-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-align-self:auto;-ms-flex-item-align:auto;align-self:auto}.multi-panel-history>.footer,.multi-panel-history>.header{width:100%;background-color:#fff}.multi-panel-history>.header{min-height:40px;max-height:40px}.multi-panel-history>.header .search-control{width:300px;float:left}.multi-panel-history>.header .more-options .action-button,.multi-panel-history>.header .more-options .btn,.multi-panel-history>.header .more-options .delete-terminal,.multi-panel-history>.header .more-options .menubutton,.multi-panel-history>.header .more-options button,.multi-panel-history>.header .more-options input[type=submit]{width:100%;height:26px}.multi-panel-history>.header .more-options input[type=checkbox]{margin-top:1px}.multi-panel-history>.header .popover{min-width:290px}.multi-panel-history>.footer{min-height:0;max-height:0}.multi-panel-history .smaller-btn{height:20px;line-height:normal;font-size:90%;padding-top:0;padding-bottom:0}.multi-panel-history .control-column{margin-top:4px}.multi-panel-history .control-column .open-more-options{padding:2px 6px;font-size:100%}.multi-panel-history .control-column .header-info{display:inline-block;padding:2px 4px;color:#404862}.multi-panel-history .control-column.control-column-left,.multi-panel-history .control-column.control-column-right{margin-right:8px;margin-left:8px}.multi-panel-history .control-column.control-column-left>*,.multi-panel-history .control-column.control-column-right>*{margin:0 4px 4px 0}.multi-panel-history .control-column.control-column-center{text-align:center;max-height:22px;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.multi-panel-history .control-column.control-column-right{text-align:right}.multi-panel-history .outer-middle{overflow:auto}.multi-panel-history .middle{min-width:100%;margin:0;background-color:#fff;padding:8px 0}.multi-panel-history .history-column{width:312px;margin:0 8px 0 0}.multi-panel-history .history-column:first-child{position:fixed;z-index:10;background-color:#fff;width:320px;padding-left:8px}.multi-panel-history .history-column:first-child .history-panel{border:1px solid #000;box-shadow:4px 4px 4px rgba(96,96,96,.3)}.multi-panel-history .history-column:nth-child(2){margin-left:328px}.multi-panel-history .history-column:last-child{margin-right:0}.multi-panel-history .history-column .panel-controls{width:100%;height:24px;background-color:#fff}.multi-panel-history .history-column .panel-controls .panel-menu{z-index:1}.multi-panel-history .history-column .panel-controls .panel-menu .dropdown-menu a{text-align:left}.multi-panel-history .history-column .panel-controls .current-label{display:inline-block;color:#404862;padding-left:2px;margin-top:2px}.multi-panel-history .history-column .history-panel{width:100%;border:1px solid grey;border-radius:3px 3px 0 0;background-color:#f8f9fa;overflow:auto}.multi-panel-history .history-column .history-panel>.controls .subtitle{min-height:15px;margin:-4px 0 8px}.multi-panel-history .history-column .history-panel>.controls .subtitle span+span:before{content:", "}.multi-panel-history .history-column .history-panel>.controls .list-pagination{font-size:90%}.multi-panel-history .history-column .history-panel>.controls .list-pagination>*{font-size:inherit}.multi-panel-history .histories-loading-indicator{width:8px;transform:rotate(90deg);transform-origin:left top 0;margin-left:16px;white-space:nowrap;color:#404862}.multi-panel-history .histories-loading-indicator span{margin-right:8px}.history-panel .tags-display{padding:1px;max-height:0;visibility:hidden;opacity:0;transition-duration:.35s;transition-property:visibility,opacity,max-height;transition-timing-function:ease}.history-panel .tags-display.active{max-height:250px;visibility:visible;opacity:1}.history-panel .tags-display::-webkit-scrollbar{display:none}.dataset-collection-element .title-bar .subtitle{margin-top:2px}.dataset-collection-element .details{display:none}.dataset-collection-panel .vertically-spaced{margin-top:4px}.dataset-collection-panel>.controls .navigation .back span,.dataset-collection-panel>.controls .title .name{font-weight:700}.dataset-collection-panel>.list-items{overflow-x:hidden;overflow-y:auto}.job.list-item{border:1px solid #c7cbda}.job.list-item .title-bar .subtitle{color:grey;font-size:80%}.job.list-item>.details{padding:0}.job.list-item>.details .params{padding:0 8px}.job.list-item>.details .params .input .prompt,.job.list-item>.details .params .param .prompt{font-size:80%;color:grey}.job.list-item>.details .params .input .value,.job.list-item>.details .params .param .value{display:inline-block;font-weight:700}.job.list-item>.details .list-panel{padding:0}.job.list-item>.details .list-panel .list-items{border:0;border-radius:0}.job.list-item>.details .list-panel .list-items .list-item{border:0;border-radius:0;border-top:1px solid #c7cbda}.collection-creator{height:100%;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.collection-creator li,.collection-creator ol{list-style:none;padding:0;margin:0}.collection-creator>:not(.popover){padding:0 8px}.collection-creator .action-button,.collection-creator .btn,.collection-creator .delete-terminal,.collection-creator .menubutton,.collection-creator button,.collection-creator input[type=submit]{border-color:#bfbfbf}.collection-creator .vertically-spaced{margin-top:8px}.collection-creator .scroll-container{overflow:auto}.collection-creator .truncate{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.collection-creator .empty-message{color:grey;font-style:italic}.collection-creator .flex-column-container,.collection-creator.flex-row-container,.collection-creator .flex-row-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:stretch;-ms-align-items:stretch;align-items:stretch;-webkit-align-content:stretch;-ms-align-content:stretch;align-content:stretch}.collection-creator.flex-row-container,.collection-creator .flex-row-container{-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.collection-creator .flex-row{-webkit-flex:1 auto;-ms-flex:1 auto;flex:1 0 auto}.collection-creator .flex-row.no-flex{-webkit-flex:0 auto;-ms-flex:0 auto;flex:0 0 auto}.collection-creator .flex-column-container{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.collection-creator #everything,.collection-creator #left,.collection-creator #right,.collection-creator .dataset-collection-panel>.list-items,.collection-creator .flex-column,.collection-creator .history-panel>.list-items,.collection-creator .unified-panel{-webkit-flex:1 auto;-ms-flex:1 auto;flex:1 1 auto}.collection-creator .dataset-collection-panel>.no-flex.list-items,.collection-creator .flex-column.no-flex,.collection-creator .history-panel>.no-flex.list-items,.collection-creator .no-flex#everything,.collection-creator .no-flex#left,.collection-creator .no-flex#right,.collection-creator .no-flex.unified-panel{-webkit-flex:0 auto;-ms-flex:0 auto;flex:0 0 auto}.collection-creator .choose-filters .help{margin-bottom:2px;font-size:90%;color:grey}.collection-creator .choose-filters button{width:100%;margin-top:2px}.collection-creator .header .alert,.collection-creator .header .donemessage,.collection-creator .header .donemessagelarge,.collection-creator .header .donemessagesmall,.collection-creator .header .error-modal .modal-content,.collection-creator .header .errormessage,.collection-creator .header .errormessagelarge,.collection-creator .header .errormessagesmall,.collection-creator .header .form-help .error,.collection-creator .header .form-help .note,.collection-creator .header .form-help .warning,.collection-creator .header .infomessage,.collection-creator .header .infomessagelarge,.collection-creator .header .infomessagesmall,.collection-creator .header .warningmessage,.collection-creator .header .warningmessagelarge,.collection-creator .header .warningmessagesmall,.error-modal .collection-creator .header .modal-content,.form-help .collection-creator .header .error,.form-help .collection-creator .header .note,.form-help .collection-creator .header .warning{display:none}.collection-creator .header .alert li,.collection-creator .header .donemessagelarge li,.collection-creator .header .donemessage li,.collection-creator .header .donemessagesmall li,.collection-creator .header .error-modal .modal-content li,.collection-creator .header .errormessagelarge li,.collection-creator .header .errormessage li,.collection-creator .header .errormessagesmall li,.collection-creator .header .form-help .error li,.collection-creator .header .form-help .note li,.collection-creator .header .form-help .warning li,.collection-creator .header .infomessagelarge li,.collection-creator .header .infomessage li,.collection-creator .header .infomessagesmall li,.collection-creator .header .warningmessagelarge li,.collection-creator .header .warningmessage li,.collection-creator .header .warningmessagesmall li,.error-modal .collection-creator .header .modal-content li,.form-help .collection-creator .header .error li,.form-help .collection-creator .header .note li,.form-help .collection-creator .header .warning li{list-style:circle;margin-left:32px}.collection-creator .column{width:30%}.collection-creator .column-title{height:22px;line-height:22px;overflow:hidden}.collection-creator .column-title:hover{text-decoration:underline;cursor:pointer}.collection-creator .column-title .title{font-weight:700}.collection-creator .column-title .title-info{color:grey}.collection-creator .column-title .title-info:before{content:" - "}.collection-creator .paired-column{text-align:center;width:22%}.collection-creator .header .main-help{margin-bottom:17px;overflow:hidden;padding:15px}.collection-creator .header .main-help:not(.expanded){max-height:49px}.collection-creator .header .main-help:not(.expanded) .help-content p:first-child{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.collection-creator .header .main-help:not(.expanded) .help-content>:not(:first-child){display:none}.collection-creator .header .main-help.expanded{max-height:none}.collection-creator .header .main-help .help-content i{cursor:help;border-bottom:1px dotted grey;font-style:normal}.collection-creator .header .main-help .help-content li,.collection-creator .header .main-help .help-content ul{list-style:circle;margin-left:16px}.collection-creator .header .main-help .help-content .scss-help{display:inline-block;width:100%;text-align:right}.collection-creator .header .main-help .more-help{float:right}.collection-creator .header .column-headers .column-header .unpaired-filter{width:100%}.collection-creator .header .column-headers .column-header .unpaired-filter .search-query{width:100%;height:22px}.collection-creator .header .paired-column a:not(:last-child){margin-right:8px}.collection-creator .header .reverse-column .column-title{text-align:right}.collection-creator .flex-bordered-vertically,.collection-creator .paired-columns,.collection-creator .unpaired-columns{height:0;border:1px solid #d3d3d3;border-width:1px 0}.collection-creator .column-datasets{list-style:none;overflow:hidden}.collection-creator .column-datasets .dataset{height:32px;margin-top:2px;border:1px solid #d3d3d3;border-radius:3px;padding:0 8px;line-height:28px;cursor:pointer}.collection-creator .column-datasets .dataset:last-of-type{margin-bottom:2px}.collection-creator .column-datasets .dataset.unpaired{border-color:grey}.collection-creator .column-datasets .dataset.paired{margin-left:34px;margin-right:34px;border:2px solid grey;background:#aff1af}.collection-creator .column-datasets .dataset.paired span{display:inline-block;overflow:hidden}.collection-creator .column-datasets .dataset.paired .forward-dataset-name{text-align:right;border-right:1px solid grey;padding-right:8px}.collection-creator .column-datasets .dataset.paired .forward-dataset-name:after{margin-left:8px;font-family:FontAwesome;content:"\f061"}.collection-creator .column-datasets .dataset.paired .pair-name-column{text-align:center}.collection-creator .column-datasets .dataset.paired .pair-name-column .pair-name:hover{text-decoration:underline}.collection-creator .column-datasets .dataset.paired .reverse-dataset-name{border-left:1px solid grey;padding-left:8px}.collection-creator .column-datasets .dataset.paired .reverse-dataset-name:before{margin-right:8px;font-family:FontAwesome;content:"\f060"}.collection-creator .column-datasets .dataset:hover{border-color:#000}.collection-creator .column-datasets .dataset.selected{border-color:#000;background:#000;color:#fff}.collection-creator .column-datasets .dataset.selected a{color:#fff}.collection-creator .unpaired-columns .forward-column .dataset.unpaired{margin-right:32px}.collection-creator .unpaired-columns .paired-column .dataset.unpaired{border-color:#d3d3d3;color:#d3d3d3}.collection-creator .unpaired-columns .paired-column .dataset.unpaired:hover{border-color:#000;color:#000}.collection-creator .unpaired-columns .reverse-column .dataset.unpaired{text-align:right;margin-left:32px}.collection-creator .flexible-partition .flexible-partition-drag{width:100%;height:8px;cursor:ns-resize;line-height:2px;text-align:center;color:#d3d3d3}.collection-creator .flexible-partition .flexible-partition-drag:before{content:"..."}.collection-creator .flexible-partition .flexible-partition-drag:hover{background:#d3d3d3;color:#000}.collection-creator .flexible-partition .column-header{width:100%;text-align:center}.collection-creator .flexible-partition .column-header .column-title{display:inline}.collection-creator .flexible-partition .column-header>:not(:last-child){margin-right:8px}.collection-creator .flexible-partition .column-header .remove-extensions-link{display:none}.collection-creator .paired-columns{margin-bottom:8px}.collection-creator .paired-columns .column-datasets{width:100%;overflow:auto}.collection-creator .paired-columns .unpair-btn{float:right;margin-top:-32px;width:31px;height:32px;border-color:transparent;background:transparent;font-size:120%}.collection-creator .paired-columns .unpair-btn:hover{border-color:#bfbfbf;background:#dedede}.collection-creator .paired-columns .empty-message{text-align:center}.collection-creator .element-drop-placeholder{width:60px;height:3px;margin:2px 0 0 14px;background:#000}.collection-creator .element-drop-placeholder:before{float:left;font-size:120%;margin:-9px 0 0 -8px;font-family:FontAwesome;content:"\f0da"}.collection-creator .element-drop-placeholder:last-child{margin-bottom:8px}.collection-creator .footer{padding-bottom:8px}.collection-creator .footer .attributes .setting-prompt{line-height:32px;padding-left:10px}.collection-creator .footer .attributes .setting-prompt .hide-originals,.collection-creator .footer .attributes .setting-prompt .remove-extensions{display:inline-block;width:24px;height:24px}.collection-creator .footer .attributes .collection-name-prompt{margin:5px 4px 0 0}.collection-creator .footer .attributes .collection-name-prompt.validation-warning:before{content:"(required)";margin-right:4px;color:red}.collection-creator .footer .attributes .collection-name{width:50%}.collection-creator .footer .attributes .collection-name.validation-warning{border-color:red}.collection-creator .footer .actions .other-options>*{display:none;margin-left:4px}.collection-creator.list-collection-creator .footer{margin-top:8px}.collection-creator.list-collection-creator .main-help{cursor:pointer}.collection-creator.list-collection-creator .collection-elements-controls{margin-bottom:8px}.collection-creator.list-collection-creator .collection-elements-controls .clear-selected{display:none}.collection-creator.list-collection-creator .collection-elements{max-height:400px;border:0 solid #d3d3d3;overflow-y:auto;overflow-x:hidden}.collection-creator.list-collection-creator .collection-element{height:32px;margin:2px 4px 0;opacity:1;border:1px solid #d3d3d3;border-radius:3px;padding:0 8px;line-height:28px;cursor:pointer;overflow:hidden}.collection-creator.list-collection-creator .collection-element:last-of-type{margin-bottom:2px}.collection-creator.list-collection-creator .collection-element:hover{border-color:#000}.collection-creator.list-collection-creator .collection-element.selected{border-color:#000;background:#000;color:#fff}.collection-creator.list-collection-creator .collection-element.selected a{color:#fff}.collection-creator.list-collection-creator .collection-element.dragging{opacity:.4}.collection-creator.list-collection-creator .collection-element.dragging button{display:none}.collection-creator.list-collection-creator .collection-element .name:hover{text-decoration:underline}.collection-creator.list-collection-creator .collection-element button{margin-top:3px}.collection-creator.list-collection-creator .element-drop-placeholder{margin-left:8px}.collection-creator.list-collection-creator .element-drop-placeholder:before{margin:-8.5px 0 0 -8px}.collection-creator.list-collection-creator .empty-message{margin:8px;color:grey;font-style:italic;text-align:center}.collection-creator.list-collection-creator .no-elements-left-message{text-align:left}.collection-creator.pair-collection-creator .footer{margin-top:8px}.collection-creator.pair-collection-creator .main-help{cursor:pointer}.collection-creator.pair-collection-creator .collection-elements-controls{margin-bottom:8px}.collection-creator.pair-collection-creator .collection-elements-controls .clear-selected{display:none}.collection-creator.pair-collection-creator .collection-elements{max-height:400px;border:0 solid #d3d3d3;overflow-y:auto;overflow-x:hidden}.collection-creator.pair-collection-creator .collection-element{height:32px;margin:2px 4px 0;opacity:1;border:1px solid #d3d3d3;border-radius:3px;padding:0 8px;line-height:28px;cursor:pointer;overflow:hidden}.collection-creator.pair-collection-creator .collection-element:last-of-type{margin-bottom:2px}.collection-creator.pair-collection-creator .collection-element:hover{border-color:#000}.collection-creator.pair-collection-creator .collection-element button{margin-top:3px}.collection-creator.pair-collection-creator .collection-element .identifier:after{content:":";margin-right:6px}.collection-creator.pair-collection-creator .collection-element .name:hover{text-decoration:none}.collection-creator.pair-collection-creator .empty-message{margin:8px;color:grey;font-style:italic;text-align:center}.collection-creator.list-of-pairs-collection-creator .column-headers{margin-bottom:8px}.search-input ::placeholder{color:#404862}.search-input .search-clear,.search-input .search-loading{position:relative;display:inline-block;float:right;margin-top:-25px;font-size:1.4em;color:#404862}.search-input .search-clear:hover{color:#2077b3;cursor:pointer}.search-input .search-loading{display:none}.search-input .search-query{width:100%;display:inline-block;font-size:.85rem;line-height:1.5;color:#2c3143;border:1px solid #c7cbda;-webkit-border-radius:1rem;-moz-border-radius:1rem;border-radius:1rem;max-width:auto;background:#fff}.search-input .search-query:focus{border-color:#2077b3;outline:0}.dataset-choice{border:1px solid #d3d3d3;border-radius:3px;overflow:hidden;padding:10px 8px 8px}.dataset-choice:hover{border-color:#000;cursor:pointer}.dataset-choice:hover>*{cursor:pointer}.dataset-choice .prompt{margin-right:8px}.dataset-choice .prompt:after{content:":"}.dataset-choice .prompt:empty{display:none}.dataset-choice .none-selected-msg{color:grey}.dataset-choice .selected{display:inline-block}.dataset-choice .selected .title{font-weight:700}.dataset-choice .selected .subtitle{color:grey}.dataset-choice .selected .subtitle:before{content:"-";margin:0 4px}.dataset-choice .selected .subtitle i{font-style:normal}.dataset-choice .selected .subtitle i:not(:last-child):after{content:", "}.dataset-choice.multi .selected{display:block;font-weight:400}.dataset-choice.multi table{width:100%;margin-top:8px;cursor:pointer}.dataset-choice.multi table:hover{border-color:#000}.dataset-choice.multi table tr:nth-child(2n){background-color:#f0f8ff}.dataset-choice.multi table th{padding:0;font-weight:400;font-size:80%;color:grey}.dataset-choice.multi table td:not(:last-child),.dataset-choice.multi table th:not(:last-child){padding-right:8px}.dataset-choice.multi table td.cell-name{font-weight:700}.dataset-choice-modal .list-panel .list-item.dataset{border-left-width:1px;border-right-width:1px}.dataset-choice-modal .list-panel .controls .title .name{font-size:120%}.peek-column-selector{border-radius:3px;border:1px solid #5f6990}.peek-column-selector td,.peek-column-selector th{padding:4px 10px 4px 4px}.peek-column-selector th:last-child{width:100%}.peek-column-selector .top-left{width:10%;white-space:normal;vertical-align:top;text-align:right;font-family:Lucida Grande,verdana,arial,helvetica,sans-serif;font-weight:400}.peek-column-selector .renamable-header:hover{background-color:#000}.peek-column-selector .control td.control-prompt{background-color:#5f6990;padding:0 4px 0 8px;text-align:right;color:#fff}.peek-column-selector .control td{padding:1px;font-family:Lucida Grande,verdana,arial,helvetica,sans-serif;color:grey}.peek-column-selector .control td .button{min-width:28px;border:1px solid grey;border-radius:3px;padding:4px;color:grey}.peek-column-selector .control td:hover .button{background-color:#eee;border:1px solid #000;cursor:pointer;color:#000}.peek-column-selector .control td.disabled .button,.peek-column-selector .control td.disabled:hover .button{background-color:transparent;border:1px solid #ccc;cursor:not-allowed;color:#ccc}.peek-column-selector .control td.selected .button{background-color:#000;border:1px solid #000;color:#fff}.pagination{margin:0}.pagination-scroll-container{display:inline-block;background-color:#f8f8f8;border-radius:3px;border:1px solid #bfbfbf;overflow:auto}.pagination-scroll-container .pagination-page-list{margin:3px 0}.pagination-scroll-container .pagination-page-list>li:first-child>a,.pagination-scroll-container .pagination-page-list>li:first-child>span{border-radius:0;border-left:0}.pagination-scroll-container .pagination-page-list>li:last-child>a,.pagination-scroll-container .pagination-page-list>li:last-child>span{border-radius:0}.pagination-scroll-container .pagination-page-list>li>a{float:none;position:static;border:solid #bfbfbf;border-width:0 0 0 1px}.error-modal .modal-content>*{padding:0;margin:0;border:none}.error-modal .modal-content .error-details{display:none;margin-top:8px}.error-modal .modal-content .error-details pre{border-radius:3px;background:#fff;padding:8px;white-space:pre-wrap;color:#000}.error-modal .modal-content .modal-footer{margin-top:8px}.error-modal .modal-content .modal-footer .buttons{width:100%;float:none}.error-modal .modal-content .modal-footer .buttons>*{float:right}.toolMenuContainer{color:#2c3143;background:#f8f9fa;min-height:100%}.toolMenuContainer a{color:#2c3143}.toolMenuContainer .tool-old-link{font-weight:700}div.toolSectionTitle{font-weight:500;font-size:1.0625rem}div.toolPanelLabel{font-weight:700;font-size:.85rem;color:#545e81;text-transform:uppercase}div.toolSectionTitle,div.toolTitle,div.toolTitleNoSection{display:block}div.toolSectionTitle .labels,div.toolTitle .labels,div.toolTitleNoSection .labels{float:right}div.toolSectionTitle a,div.toolTitle a,div.toolTitleNoSection a{text-decoration:none;display:block}div.toolSectionTitle a:hover,div.toolTitle a:hover,div.toolTitleNoSection a:hover{background:#e9ecef}div.toolSectionTitle.text-muted a:hover,div.toolTitle.text-muted a:hover,div.toolTitleNoSection.text-muted a:hover{background:inherit}div.toolSectionWrapper div.toolTitle a{font-size:inherit}#loading_indicator{position:fixed;right:10px;top:10px;height:32px;width:32px;display:none;background:url(../scripts/bundled/assets/a51c5608d01acf32df728f299767f82b.gif)}#content_table td{text-align:right}#content_table td,#content_table th{white-space:nowrap;padding:2px 10px}#content_table td.stringalign{text-align:left}#content_table .dark_row{background-color:#ddd}#content_table th{background-color:#aaa}.toolMenuAndView .toolForm{float:left;background-color:#fff;margin:10px}.text-and-autocomplete-select{background:none;position:relative;padding-right:18px}.text-and-autocomplete-select:after{margin-top:6px;position:absolute;top:2px;right:6px;width:10px;height:10px;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=${opacityPercent})";filter:"alpha(opacity=${opacityPercent})"}.text-and-autocomplete-select:after: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}.text-and-autocomplete-select:after:empty:after{margin-left:0}.icon-button.general-question{background:url(../scripts/bundled/assets/eee1cc051bd3c37b21fa1836df3dbfcb.png) no-repeat;float:right;margin-top:3px;margin-right:4px}.icon-button.tag-question{background:url(../scripts/bundled/assets/418d5485d914e6236f8666d69ab3cd6e.png) no-repeat;float:right;margin-top:3px;margin-right:4px}.icon-button.tag{background-position:-16px -112px}.icon-button.tag,.icon-button.tags{background-image:url(../scripts/bundled/assets/dea1324aada21c5fc2f20e95f9fd075f.png);width:16px;height:16px}.icon-button.tags{background-position:-32px -112px}.icon-button.tag--plus{background-position:0 -112px}.icon-button.tag--plus,.icon-button.toggle-expand{background-image:url(../scripts/bundled/assets/dea1324aada21c5fc2f20e95f9fd075f.png);width:16px;height:16px}.icon-button.toggle-expand{background-position:-80px -112px}.icon-button.toggle{background-position:-48px -112px}.icon-button.toggle,.icon-button.toggle:hover{background-image:url(../scripts/bundled/assets/dea1324aada21c5fc2f20e95f9fd075f.png);width:16px;height:16px}.icon-button.toggle:hover{background-position:-96px -112px}.icon-button.arrow-circle{background-position:-32px 0}.icon-button.arrow-circle,.icon-button.chevron{background-image:url(../scripts/bundled/assets/dea1324aada21c5fc2f20e95f9fd075f.png);width:16px;height:16px}.icon-button.chevron{background-position:-32px -64px}.icon-button.bug{background-position:-64px -32px}.icon-button.bug,.icon-button.disk{background-image:url(../scripts/bundled/assets/dea1324aada21c5fc2f20e95f9fd075f.png);width:16px;height:16px}.icon-button.disk{background-position:-16px -80px}.icon-button.information{background-position:-96px -80px}.icon-button.annotate,.icon-button.information{background-image:url(../scripts/bundled/assets/dea1324aada21c5fc2f20e95f9fd075f.png);width:16px;height:16px}.icon-button.annotate{background-position:-112px -96px}.icon-button.go-to-full-screen{background-position:0 0}.icon-button.go-to-full-screen,.icon-button.import{background-image:url(../scripts/bundled/assets/dea1324aada21c5fc2f20e95f9fd075f.png);width:16px;height:16px}.icon-button.import{background-position:-112px -80px}.icon-button.plus-button{background-position:-112px -48px}.icon-button.plus-button,.icon-button.plus-button:hover{background-image:url(../scripts/bundled/assets/dea1324aada21c5fc2f20e95f9fd075f.png);width:16px;height:16px}.icon-button.plus-button:hover{background-position:-112px -64px}.icon-button.gear{background-position:-96px 0}.icon-button.chart_curve,.icon-button.gear{background-image:url(../scripts/bundled/assets/dea1324aada21c5fc2f20e95f9fd075f.png);width:16px;height:16px}.icon-button.chart_curve{background-position:-64px -48px}.icon-button.disk--arrow{background-position:-80px -64px}.icon-button.disk--arrow,.icon-button.disk--arrow:hover{background-image:url(../scripts/bundled/assets/dea1324aada21c5fc2f20e95f9fd075f.png);width:16px;height:16px}.icon-button.disk--arrow:hover{background-position:0 -80px}.icon-button.cross-circle{background-position:-80px 0}.icon-button.cross-circle,.icon-button.cross-circle:hover{background-image:url(../scripts/bundled/assets/dea1324aada21c5fc2f20e95f9fd075f.png);width:16px;height:16px}.icon-button.cross-circle:hover{background-position:-80px -16px}.icon-button.arrow-split{background-position:-16px -32px}.icon-button.arrow-split,.icon-button.arrow-split:hover{background-image:url(../scripts/bundled/assets/dea1324aada21c5fc2f20e95f9fd075f.png);width:16px;height:16px}.icon-button.arrow-split:hover{background-position:-32px -32px}.icon-button.chevron-expand:hover{background-position:-16px -64px}.icon-button.chevron-expand,.icon-button.chevron-expand:hover{background-image:url(../scripts/bundled/assets/dea1324aada21c5fc2f20e95f9fd075f.png);width:16px;height:16px}.icon-button.chevron-expand{background-position:0 -64px}.noscript-overlay{position:absolute;width:100%;height:100%;background:#fff;z-index:10000}.noscript-overlay>div{margin:64px 0 0 64px}#for_bears{display:none}.chat-modal{overflow:hidden}.modal-header-body{padding:2px}.close-modal{float:right;cursor:pointer}.expand-compress-modal{cursor:pointer;font-size:12px;margin-left:93.2%}#change_password .progress,#registrationForm .progress{width:200px;margin-left:20px}#change_password .progress-bar,#registrationForm .progress-bar{color:#000;text-align:left}.wf{overflow:auto}.wf td:first-child,.wf th{white-space:nowrap}.wf-action span{padding-left:3px;font-family:Lucida Grande,verdana,arial,helvetica,sans-serif}.wf-nodata{padding-left:1%}.wf-back{margin-left:.5%}.other-options{margin-bottom:2%}.hidden_description_layer{position:absolute;top:0;bottom:0;left:0;right:0;background:hsla(0,0%,78.4%,.6);visibility:hidden;opacity:0;font-size:2em;display:flex;align-items:center;justify-content:center;transition:opacity .2s,visibility .2s}.hidden_description_layer.dragover{visibility:visible;opacity:1}#canvas-viewport{background:#fff url(../scripts/bundled/assets/70d1aacb47c9039b487dc012cd1a88e5.gif);width:100%;height:100%;position:absolute;overflow:hidden}.base-terminal,.input-terminal,.output-terminal{color:#f8f9fa;position:absolute;z-index:1500}.base-terminal>icon,.input-terminal>icon,.output-terminal>icon{color:#25537b;position:absolute;left:0;top:0}.input-terminal{left:-9px}.output-terminal{right:-9px}.input-terminal-active.can-accept>icon,.output-terminal:hover>icon{color:#6c6}.input-terminal-active.cannot-accept>icon{color:#fe7f02}.drag-terminal{color:#6c6;position:absolute;z-index:1500}.mark-terminal{cursor:pointer;color:#404862}.mark-terminal.mark-terminal-active{color:#6c6}.delete-terminal{z-index:2500;top:0;left:-15px}.callout-terminal,.delete-terminal{position:absolute}.workflow-overview{position:absolute;width:150px;height:150px;right:0;bottom:0;border-top:1px solid grey;border-left:1px solid grey;padding:7px 0 0 7px;background:#e9ecef no-repeat url(../scripts/bundled/assets/8c7b4ca75bd836682f1a585503237f63.png);z-index:20000;overflow:hidden;max-width:300px;max-height:300px;min-width:50px;min-height:50px}[v-cloak]{display:none}body.reports,body.toolshed{margin:0;padding:0;overflow:hidden}body.reports #left,body.toolshed #left{background:#c1c9e5 url(../scripts/bundled/assets/6ea6da3e8d696b686043bd111f84c8f5.png) top repeat-x}body.reports .unified-panel-body,body.toolshed .unified-panel-body{overflow:auto}body.reports .toolMenu,body.toolshed .toolMenu{margin-left:10px}#ie-loading-spinner{position:absolute;margin:auto;top:0;left:0;right:0;bottom:0;background:url(../scripts/bundled/assets/a51c5608d01acf32df728f299767f82b.gif) no-repeat 50% fixed}.bold{font-weight:700}.light{font-weight:lighter;color:grey}.right-aligned{text-align:right}.clickable{cursor:pointer}.workflow{border:1px solid grey;margin-bottom:1%}.workflow>.header{background:#d3d3d3;padding:5px 10px}.workflow>.light{color:grey}.workflow>.body{border-top:1px solid grey}.workflow>.body>.tool{border:0;margin:0}div.tool{margin-bottom:5px;border:1px solid grey}.tool>.header{padding:5px 10px}.job-inputs{margin:0 6px;text-align:left}.job-inputs td:first-child{text-align:right;font-weight:lighter;color:grey}.job-inputs td:first-child:after{content:":"}.job-inputs td:nth-child(2){padding-left:4px}.job-inputs-show{float:right}.copied-from{border:solid #d3d3d3;border-width:1px 1px 0;margin-bottom:5px}.copied-from .header{border-bottom:1px solid #d3d3d3;padding:5px}.copied-from .header .bold,.copied-from .header a{color:#888}#history-view-controls{flex:0 0 44px;background-color:#fff;border-bottom:1px solid #ddd;width:100%;padding:8px}.history-panel>.controls .title{font-size:120%}.history-panel>.controls .title input{font-size:100%}a.btn{text-decoration:none}.embedded-item{margin:0 auto;width:90%;-moz-border-radius:.5em;-webkit-border-radius:.5em;border-radius:.5em}.embedded-item .expanded-content{display:none;background-color:#fff}.embedded-item .item-content{max-height:45em;overflow:auto}.embedded-item>.title{vertical-align:top;text-align:center;font-weight:700;padding-bottom:5px}.embedded-item.placeholder .content{padding:.5em;font-style:italic;text-align:center}.embedded-item p{background:inherit;margin-top:0;margin-bottom:0}.embedded-item table.annotated-item{width:100%;border-collapse:collapse}.embedded-item table.annotated-item td,.embedded-item th{padding:0}.embedded-item table.annotated-item .annotation{padding-left:2em;width:40%}.embedded-item table.annotated-item td.annotation{vertical-align:text-top;padding-top:1em}.embedded-item.display{padding:5px 10px 10px}.embedded-item.history{background-color:#c1c9e5}.embedded-item.dataset{background-color:#cfc}.embedded-item.dataset .item-content{padding:5px}.embedded-item.workflow{background-color:#fbddb3}.embedded-item.workflow .item-content{padding:5px}.embedded-item.visualization{background-color:#bbb}.embedded-item.visualization .item-content{overflow:hidden;height:100%}.embedded-item.visualization .item-content iframe{min-height:320px;margin-bottom:-4px}.toggle{display:none}.card-body{overflow:auto}.break-word{white-space:pre-wrap;word-break:break-word}.context-wrapped[data-v-b86df0d0]{border-left:1px solid #000;padding-left:10px}.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}.cloud-auth-key form footer button:not(:first-child),.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2,.operations ul li:not(:first-child){margin-left:.5rem!important}.m-3{margin:1rem!important}.cloud-auth-key form,.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.cloud-auth-key form,.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{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}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.cloud-auth-key form,.cloud-auth-key form footer,.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}}@media (min-width:768px){.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}}@media (min-width:992px){.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}}@media (min-width:1200px){.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}}/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:FontAwesome;src:url(../scripts/bundled/assets/674f50d287a8c48dc19ba404d20fe713.eot);src:url(../scripts/bundled/assets/674f50d287a8c48dc19ba404d20fe713.eot?#iefix&v=4.7.0) format("embedded-opentype"),url(../scripts/bundled/assets/af7ae505a9eed503f8b8e6982036873e.woff2) format("woff2"),url(../scripts/bundled/assets/fee66e712a8a08eef5805a46892932ad.woff) format("woff"),url(../scripts/bundled/assets/b06871f281fee6b241d60582ae9369b9.ttf) format("truetype"),url(../scripts/bundled/assets/912ec66d7572ff821749319396470bde.svg#fontawesomeregular) format("svg");font-weight:400;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333em;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-fw{width:1.28571em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14286em;width:2.14286em;top:.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}.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{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);-ms-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{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{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{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: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-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.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: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-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery: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{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{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc: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-pied-piper-pp:before{content:""}.fa-pied-piper-alt: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{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{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{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{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-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: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-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-pied-piper: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:""}.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{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.operations{margin-bottom:0}.operations ul{list-style:none;padding:0;margin:0;display:flex}.cloud-auth{position:relative;top:0;left:0;width:100%;height:100%;display:flex;flex-direction:column}.cloud-auth header{flex-grow:0}.cloud-auth .scroll-container{flex-grow:1;overflow-x:hidden;overflow-y:scroll}.cloud-auth .scroll-container::-webkit-scrollbar{display:none}.cloud-auth .cloud-auth-title{display:flex;flex-direction:row;justify-content:space-between;align-items:center}.cloud-auth .cloud-auth-title .operations li a,.cloud-auth .cloud-auth-title .operations li a:before{font-size:1rem;color:#c7cbda}.cloud-auth .cloud-auth-title .operations li a.active:before,.cloud-auth .cloud-auth-title .operations li a:hover:before{color:#25537b}.cloud-auth .cloud-auth-title .operations .cloudKeyHelp a{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.cloud-auth .cloud-auth-title .operations .cloudKeyHelp a:before{content:""}.cloud-auth .cloud-auth-title .operations .cloudKeyHelp a span{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.cloud-auth .cloud-auth-title .operations .cloudKeyFilter a{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.cloud-auth .cloud-auth-title .operations .cloudKeyFilter a:before{content:""}.cloud-auth .cloud-auth-title .operations .cloudKeyFilter a span{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.cloud-auth .cloud-auth-title .operations .createCloudKey a{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.cloud-auth .cloud-auth-title .operations .createCloudKey a:before{content:""}.cloud-auth .cloud-auth-title .operations .createCloudKey a span{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.cloud-auth-key header hgroup{display:flex;flex-direction:row;justify-content:space-between;align-items:center;cursor:pointer;user-select:none}.cloud-auth-key header hgroup>*{margin-bottom:0}.cloud-auth-key form .custom-select{background:none}.cloud-auth-key form .form-row{display:flex}.cloud-auth-key form .form-row input,.cloud-auth-key form .form-row select{max-width:none}.cloud-auth-key form .form-row label{font-weight:400}.cloud-auth-key form footer{display:flex;flex-direction:row;justify-content:flex-end}.cloud-auth-key .operations .save a{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.cloud-auth-key .operations .save a:before{content:""}.cloud-auth-key .operations .save a span{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.cloud-auth-key .operations .delete a{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.cloud-auth-key .operations .delete a:before{content:""}.cloud-auth-key .operations .delete a span{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.cloud-auth-key .operations .details a{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.cloud-auth-key .operations .details a:before{content:""}.cloud-auth-key .operations .details a span{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.cloud-auth-key .operations .details a:hover{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.cloud-auth-key .operations .details a:hover:before{content:""}.cloud-auth-key .operations .details a:hover span{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.cloud-auth-key.expanded .details a{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.cloud-auth-key.expanded .details a:before{content:""}.cloud-auth-key.expanded .details a span{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.cloud-auth-key.expanded .details a:hover{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.cloud-auth-key.expanded .details a:hover:before{content:""}.cloud-auth-key.expanded .details a:hover span{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.fade-enter-active,.fade-leave-active{transition:opacity .5s}.fade-enter,.fade-leave-to{opacity:0}#deleteCredentialModal .modal-body{display:none}#deleteCredentialModal .modal-dialog{max-width:300px}.slide-enter-active[data-v-49bbe06a]{-moz-transition-duration:.2s;-webkit-transition-duration:.2s;-o-transition-duration:.2s;transition-duration:.2s;-moz-transition-timing-function:ease-in;-webkit-transition-timing-function:ease-in;-o-transition-timing-function:ease-in;transition-timing-function:ease-in}.slide-leave-active[data-v-49bbe06a]{-moz-transition-duration:.2s;-webkit-transition-duration:.2s;-o-transition-duration:.2s;transition-duration:.2s;-moz-transition-timing-function:cubic-bezier(0,1,.5,1);-webkit-transition-timing-function:cubic-bezier(0,1,.5,1);-o-transition-timing-function:cubic-bezier(0,1,.5,1);transition-timing-function:cubic-bezier(0,1,.5,1)}.slide-enter-to[data-v-49bbe06a],.slide-leave[data-v-49bbe06a]{max-height:100px;overflow:hidden}.slide-enter[data-v-49bbe06a],.slide-leave-to[data-v-49bbe06a]{overflow:hidden;max-height:0}.search-loading[data-v-c5940e74]{display:block}.unified-panel-wrapper[data-v-dec91d48]{display:flex;flex-flow:column;height:100%;overflow:auto}.collapsed[data-v-f007ce9e]{position:absolute;bottom:0;margin:0}.unified-panel-outer-wrap[data-v-f007ce9e]{transition-property:left,right;transition-duration:.2s;transition-timing-function:linear}.code{background:#000;color:#fff;padding:1em}.command-line{white-space:pre-wrap}.command-line,.table-cell-break-word{word-break:break-word}span.dropdown[data-v-6a36fdbc]{display:inline-block}.data-dialog-modal .modal-body{max-height:50vh;height:50vh;overflow-y:auto} + +/*! + * (The MIT License) + * + * Copyright (c) 2012-2014 Marcin Warpechowski + * Copyright (c) 2015 Handsoncode sp. z o.o. + * + * 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. + * + * Version: 2.0.0 + * Release date: 11/04/2018 (built at 10/04/2018 11:38:33) + */.handsontable .table td,.handsontable .table th{border-top:none}.handsontable tr{background:#fff}.handsontable td{background-color:inherit}.handsontable .table caption+thead tr:first-child td,.handsontable .table caption+thead tr:first-child th,.handsontable .table colgroup+thead tr:first-child td,.handsontable .table colgroup+thead tr:first-child th,.handsontable .table thead:first-child tr:first-child td,.handsontable .table thead:first-child tr:first-child th{border-top:1px solid #ccc}.handsontable .table-bordered{border:0;border-collapse:separate}.handsontable .table-bordered td,.handsontable .table-bordered th{border-left:none}.handsontable .table-bordered td:first-child,.handsontable .table-bordered th:first-child{border-left:1px solid #ccc}.handsontable .table>tbody>tr>td,.handsontable .table>tbody>tr>th,.handsontable .table>tfoot>tr>td,.handsontable .table>tfoot>tr>th,.handsontable .table>thead>tr>td,.handsontable .table>thead>tr>th{line-height:21px;padding:0 4px}.col-lg-1.handsontable,.col-lg-2.handsontable,.col-lg-3.handsontable,.col-lg-4.handsontable,.col-lg-5.handsontable,.col-lg-6.handsontable,.col-lg-7.handsontable,.col-lg-8.handsontable,.col-lg-9.handsontable,.col-lg-10.handsontable,.col-lg-11.handsontable,.col-lg-12.handsontable,.col-md-1.handsontable,.col-md-2.handsontable,.col-md-3.handsontable,.col-md-4.handsontable,.col-md-5.handsontable,.col-md-6.handsontable,.col-md-7.handsontable,.col-md-8.handsontable,.col-md-9.handsontable .col-sm-1.handsontable,.col-md-10.handsontable,.col-md-11.handsontable,.col-md-12.handsontable,.col-sm-2.handsontable,.col-sm-3.handsontable,.col-sm-4.handsontable,.col-sm-5.handsontable,.col-sm-6.handsontable,.col-sm-7.handsontable,.col-sm-8.handsontable,.col-sm-9.handsontable .col-xs-1.handsontable,.col-sm-10.handsontable,.col-sm-11.handsontable,.col-sm-12.handsontable,.col-xs-2.handsontable,.col-xs-3.handsontable,.col-xs-4.handsontable,.col-xs-5.handsontable,.col-xs-6.handsontable,.col-xs-7.handsontable,.col-xs-8.handsontable,.col-xs-9.handsontable,.col-xs-10.handsontable,.col-xs-11.handsontable,.col-xs-12.handsontable{padding-left:0;padding-right:0}.handsontable .table-striped>tbody>tr:nth-of-type(2n){background-color:#fff}.handsontable{position:relative}.handsontable .hide{display:none}.handsontable .relative{position:relative}.handsontable.htAutoSize{visibility:hidden;left:-99000px;position:absolute;top:-99000px}.handsontable .wtHider{width:0}.handsontable .wtSpreader{position:relative;width:0;height:auto}.handsontable div,.handsontable input,.handsontable table,.handsontable tbody,.handsontable td,.handsontable textarea,.handsontable th,.handsontable thead{box-sizing:content-box;-webkit-box-sizing:content-box;-moz-box-sizing:content-box}.handsontable input,.handsontable textarea{min-height:0}.handsontable table.htCore{border-collapse:separate;border-spacing:0;margin:0;border-width:0;table-layout:fixed;width:0;outline-width:0;max-width:none;max-height:none}.handsontable col,.handsontable col.rowHeader{width:50px}.handsontable td,.handsontable th{border-top-width:0;border-left-width:0;border-right:1px solid #ccc;border-bottom:1px solid #ccc;height:22px;empty-cells:show;line-height:21px;padding:0 4px;background-color:#fff;vertical-align:top;overflow:hidden;outline-width:0;white-space:pre-line;background-clip:padding-box}.handsontable td.htInvalid{background-color:#ff4c42!important}.handsontable td.htNoWrap{white-space:nowrap}.handsontable th:last-child{border-right:1px solid #ccc;border-bottom:1px solid #ccc}.handsontable th.htNoFrame,.handsontable th:first-child.htNoFrame,.handsontable tr:first-child th.htNoFrame{border-left-width:0;background-color:#fff;border-color:#fff}.handsontable .htNoFrame+td,.handsontable .htNoFrame+th,.handsontable.htRowHeaders thead tr th:nth-child(2),.handsontable td:first-of-type,.handsontable th:first-child,.handsontable th:nth-child(2){border-left:1px solid #ccc}.handsontable tr:first-child td,.handsontable tr:first-child th{border-top:1px solid #ccc}.ht_master:not(.innerBorderLeft):not(.emptyColumns)~.handsontable:not(.ht_clone_top) thead tr th:first-child,.ht_master:not(.innerBorderLeft):not(.emptyColumns)~.handsontable tbody tr th{border-right-width:0}.ht_master:not(.innerBorderTop) thead tr.lastChild th,.ht_master:not(.innerBorderTop) thead tr:last-child th,.ht_master:not(.innerBorderTop)~.handsontable thead tr.lastChild th,.ht_master:not(.innerBorderTop)~.handsontable thead tr:last-child th{border-bottom-width:0}.handsontable th{background-color:#f3f3f3;color:#222;text-align:center;font-weight:400;white-space:nowrap}.handsontable thead th{padding:0}.handsontable th.active{background-color:#ccc}.handsontable thead th .relative{padding:2px 4px}#hot-display-license-info{font-size:9px;color:#323232;padding:5px 0 3px;font-family:Helvetica,Arial,sans-serif;text-align:left}.handsontable .manualColumnResizer{position:fixed;top:0;cursor:col-resize;z-index:110;width:5px;height:25px}.handsontable .manualRowResizer{position:fixed;left:0;cursor:row-resize;z-index:110;height:5px;width:50px}.handsontable .manualColumnResizer.active,.handsontable .manualColumnResizer:hover,.handsontable .manualRowResizer.active,.handsontable .manualRowResizer:hover{background-color:#aab}.handsontable .manualColumnResizerGuide{position:fixed;right:0;top:0;background-color:#aab;display:none;width:0;border-right:1px dashed #777;margin-left:5px}.handsontable .manualRowResizerGuide{position:fixed;left:0;bottom:0;background-color:#aab;display:none;height:0;border-bottom:1px dashed #777;margin-top:5px}.handsontable .manualColumnResizerGuide.active,.handsontable .manualRowResizerGuide.active{display:block;z-index:199}.handsontable .columnSorting{position:relative}.handsontable .columnSorting:hover{text-decoration:underline;cursor:pointer}.handsontable .columnSorting.ascending:after{content:"\25B2";color:#5f5f5f;position:absolute;right:-15px}.handsontable .columnSorting.descending:after{content:"\25BC";color:#5f5f5f;position:absolute;right:-15px}.handsontable .wtBorder{position:absolute;font-size:0}.handsontable .wtBorder.hidden{display:none!important}.handsontable td.area,.handsontable td.area-1,.handsontable td.area-2,.handsontable td.area-3,.handsontable td.area-4,.handsontable td.area-5,.handsontable td.area-6,.handsontable td.area-7{position:relative}.handsontable td.area-1:before,.handsontable td.area-2:before,.handsontable td.area-3:before,.handsontable td.area-4:before,.handsontable td.area-5:before,.handsontable td.area-6:before,.handsontable td.area-7:before,.handsontable td.area:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;bottom:-100%\9;background:#005eff}@media (-ms-high-contrast:none),screen and (-ms-high-contrast:active){.handsontable td.area-1:before,.handsontable td.area-2:before,.handsontable td.area-3:before,.handsontable td.area-4:before,.handsontable td.area-5:before,.handsontable td.area-6:before,.handsontable td.area-7:before,.handsontable td.area:before{bottom:-100%}}.handsontable td.area:before{opacity:.1}.handsontable td.area-1:before{opacity:.2}.handsontable td.area-2:before{opacity:.27}.handsontable td.area-3:before{opacity:.35}.handsontable td.area-4:before{opacity:.41}.handsontable td.area-5:before{opacity:.47}.handsontable td.area-6:before{opacity:.54}.handsontable td.area-7:before{opacity:.58}.handsontable tbody th.ht__highlight,.handsontable thead th.ht__highlight{background-color:#dcdcdc}.handsontable tbody th.ht__active_highlight,.handsontable thead th.ht__active_highlight{background-color:#8eb0e7;color:#000}.handsontable .wtBorder.corner{font-size:0;cursor:crosshair}.handsontable .htBorder.htFillBorder{background:red;width:1px;height:1px}.handsontableInput{border:none;outline-width:0;margin:0;padding:1px 5px 0;font-family:inherit;line-height:21px;font-size:inherit;box-shadow:inset 0 0 0 2px #5292f7;resize:none;display:block;color:#000;border-radius:0;background-color:#fff}.handsontableInputHolder{position:absolute;top:0;left:0;z-index:104}.htSelectEditor{-webkit-appearance:menulist-button!important;position:absolute;width:auto}.handsontable .htDimmed{color:#777}.handsontable .htSubmenu{position:relative}.handsontable .htSubmenu :after{content:"\25B6";color:#777;position:absolute;right:5px}.handsontable .htLeft{text-align:left}.handsontable .htCenter{text-align:center}.handsontable .htRight{text-align:right}.handsontable .htJustify{text-align:justify}.handsontable .htTop{vertical-align:top}.handsontable .htMiddle{vertical-align:middle}.handsontable .htBottom{vertical-align:bottom}.handsontable .htPlaceholder{color:#999}.handsontable .htAutocompleteArrow{float:right;font-size:10px;color:#eee;cursor:default;width:16px;text-align:center}.handsontable td .htAutocompleteArrow:hover{color:#777}.handsontable td.area .htAutocompleteArrow{color:#d3d3d3}.handsontable .htCheckboxRendererInput{display:inline-block;vertical-align:middle}.handsontable .htCheckboxRendererInput.noValue{opacity:.5}.handsontable .htCheckboxRendererLabel{cursor:pointer;display:inline-block;width:100%}.handsontable .handsontable.ht_clone_top .wtHider{padding:0 0 5px}.handsontable .autocompleteEditor.handsontable{padding-right:17px}.handsontable .autocompleteEditor.handsontable.htMacScroll{padding-right:15px}.handsontable.listbox{margin:0}.handsontable.listbox .ht_master table{border:1px solid #ccc;border-collapse:separate;background:#fff}.handsontable.listbox td,.handsontable.listbox th,.handsontable.listbox tr:first-child td,.handsontable.listbox tr:first-child th,.handsontable.listbox tr:last-child th{border-color:transparent}.handsontable.listbox td,.handsontable.listbox th{white-space:nowrap;text-overflow:ellipsis}.handsontable.listbox td.htDimmed{cursor:default;color:inherit;font-style:inherit}.handsontable.listbox .wtBorder{visibility:hidden}.handsontable.listbox tr:hover td,.handsontable.listbox tr td.current{background:#eee}.ht_clone_top{z-index:101}.ht_clone_left{z-index:102}.ht_clone_bottom_left_corner,.ht_clone_debug,.ht_clone_top_left_corner{z-index:103}.handsontable td.htSearchResult{background:#fcedd9;color:#583707}.htBordered{border-width:1px}.htBordered.htTopBorderSolid{border-top-style:solid;border-top-color:#000}.htBordered.htRightBorderSolid{border-right-style:solid;border-right-color:#000}.htBordered.htBottomBorderSolid{border-bottom-style:solid;border-bottom-color:#000}.htBordered.htLeftBorderSolid{border-left-style:solid;border-left-color:#000}.handsontable tbody tr th:nth-last-child(2){border-right:1px solid #ccc}.handsontable thead tr:nth-last-child(2) th.htGroupIndicatorContainer{border-bottom:1px solid #ccc;padding-bottom:5px}.ht_clone_top_left_corner thead tr th:nth-last-child(2){border-right:1px solid #ccc}.htCollapseButton{width:10px;height:10px;line-height:10px;text-align:center;border-radius:5px;border:1px solid #f3f3f3;-webkit-box-shadow:1px 1px 3px rgba(0,0,0,.4);box-shadow:1px 1px 3px rgba(0,0,0,.4);cursor:pointer;margin-bottom:3px;position:relative}.htCollapseButton:after{content:"";height:300%;width:1px;display:block;background:#ccc;margin-left:4px;position:absolute;bottom:10px}thead .htCollapseButton{right:5px;position:absolute;top:5px;background:#fff}thead .htCollapseButton:after{height:1px;width:700%;right:10px;top:4px}.handsontable tr th .htExpandButton{position:absolute;width:10px;height:10px;line-height:10px;text-align:center;border-radius:5px;border:1px solid #f3f3f3;-webkit-box-shadow:1px 1px 3px rgba(0,0,0,.4);box-shadow:1px 1px 3px rgba(0,0,0,.4);cursor:pointer;top:0;display:none}.handsontable thead tr th .htExpandButton{top:5px}.handsontable tr th .htExpandButton.clickable{display:block}.collapsibleIndicator{position:absolute;top:50%;transform:translateY(-50%);right:5px;border:1px solid #a6a6a6;line-height:10px;color:#222;border-radius:10px;font-size:10px;width:10px;height:10px;cursor:pointer;-webkit-box-shadow:0 0 0 6px #eee;-moz-box-shadow:0 0 0 6px #eee;box-shadow:0 0 0 6px #eee;background:#eee}.handsontable col.hidden{width:0!important}.handsontable table tr th.lightRightBorder{border-right:1px solid #e6e6e6}.handsontable tr.hidden,.handsontable tr.hidden td,.handsontable tr.hidden th{display:none}.ht_clone_bottom,.ht_clone_left,.ht_clone_top,.ht_master{overflow:hidden}.ht_master .wtHolder{overflow:auto}.handsontable .ht_clone_left thead,.handsontable .ht_master thead,.handsontable .ht_master tr th{visibility:hidden}.ht_clone_bottom .wtHolder,.ht_clone_left .wtHolder,.ht_clone_top .wtHolder{overflow:hidden}.handsontable.mobile,.handsontable.mobile .wtHolder{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-overflow-scrolling:touch}.htMobileEditorContainer{display:none;position:absolute;top:0;width:70%;height:54pt;background:#f8f8f8;border-radius:20px;border:1px solid #ebebeb;z-index:999;box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-text-size-adjust:none}.topLeftSelectionHandle-HitArea:not(.ht_master .topLeftSelectionHandle-HitArea),.topLeftSelectionHandle:not(.ht_master .topLeftSelectionHandle){z-index:9999}.bottomRightSelectionHandle,.bottomRightSelectionHandle-HitArea,.topLeftSelectionHandle,.topLeftSelectionHandle-HitArea{left:-10000px;top:-10000px}.htMobileEditorContainer.active{display:block}.htMobileEditorContainer .inputs{position:absolute;right:210pt;bottom:10pt;top:10pt;left:14px;height:34pt}.htMobileEditorContainer .inputs textarea{font-size:13pt;border:1px solid #a1a1a1;-webkit-appearance:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;position:absolute;left:14px;right:14px;top:0;bottom:0;padding:7pt}.htMobileEditorContainer .cellPointer{position:absolute;top:-13pt;height:0;width:0;left:30px;border-left:13pt solid transparent;border-right:13pt solid transparent;border-bottom:13pt solid #ebebeb}.htMobileEditorContainer .cellPointer.hidden{display:none}.htMobileEditorContainer .cellPointer:before{content:"";display:block;position:absolute;top:2px;height:0;width:0;left:-13pt;border-left:13pt solid transparent;border-right:13pt solid transparent;border-bottom:13pt solid #f8f8f8}.htMobileEditorContainer .moveHandle{position:absolute;top:10pt;left:5px;width:30px;bottom:0;cursor:move;z-index:9999}.htMobileEditorContainer .moveHandle:after{content:"..\A..\A..\A..";white-space:pre;line-height:10px;font-size:20pt;display:inline-block;margin-top:-8px;color:#ebebeb}.htMobileEditorContainer .positionControls{width:205pt;position:absolute;right:5pt;top:0;bottom:0}.htMobileEditorContainer .positionControls>div{width:50pt;height:100%;float:left}.htMobileEditorContainer .positionControls>div:after{content:" ";display:block;width:15pt;height:15pt;text-align:center;line-height:50pt}.htMobileEditorContainer .downButton:after,.htMobileEditorContainer .leftButton:after,.htMobileEditorContainer .rightButton:after,.htMobileEditorContainer .upButton:after{transform-origin:5pt 5pt;-webkit-transform-origin:5pt 5pt;margin:21pt 0 0 21pt}.htMobileEditorContainer .leftButton:after{border-top:2px solid #288ffe;border-left:2px solid #288ffe;-webkit-transform:rotate(-45deg)}.htMobileEditorContainer .leftButton:active:after{border-color:#cfcfcf}.htMobileEditorContainer .rightButton:after{border-top:2px solid #288ffe;border-left:2px solid #288ffe;-webkit-transform:rotate(135deg)}.htMobileEditorContainer .rightButton:active:after{border-color:#cfcfcf}.htMobileEditorContainer .upButton:after{border-top:2px solid #288ffe;border-left:2px solid #288ffe;-webkit-transform:rotate(45deg)}.htMobileEditorContainer .upButton:active:after{border-color:#cfcfcf}.htMobileEditorContainer .downButton:after{border-top:2px solid #288ffe;border-left:2px solid #288ffe;-webkit-transform:rotate(225deg)}.htMobileEditorContainer .downButton:active:after{border-color:#cfcfcf}.handsontable.hide-tween{-webkit-animation:opacity-hide .3s;animation:opacity-hide .3s;animation-fill-mode:forwards;-webkit-animation-fill-mode:forwards}.handsontable.show-tween{-webkit-animation:opacity-show .3s;animation:opacity-show .3s;animation-fill-mode:forwards;-webkit-animation-fill-mode:forwards} + +/*! + * Pikaday + * Copyright © 2014 David Bushell | BSD & MIT license | http://dbushell.com/ + */.pika-single{z-index:9999;display:block;position:relative;color:#333;background:#fff;border:1px solid;border-color:#ccc #ccc #bbb;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.pika-single:after,.pika-single:before{content:" ";display:table}.pika-single:after{clear:both}.pika-single{*zoom:1}.pika-single.is-hidden{display:none}.pika-single.is-bound{position:absolute;box-shadow:0 5px 15px -5px rgba(0,0,0,.5)}.pika-lendar{float:left;width:240px;margin:8px}.pika-title{position:relative;text-align:center}.pika-label{display:inline-block;*display:inline;position:relative;z-index:9999;overflow:hidden;margin:0;padding:5px 3px;font-size:14px;line-height:20px;font-weight:700;background-color:#fff}.pika-title select{cursor:pointer;position:absolute;z-index:9998;margin:0;left:0;top:5px;filter:alpha(opacity=0);opacity:0}.pika-next,.pika-prev{display:block;cursor:pointer;position:relative;outline:none;border:0;padding:0;width:20px;height:30px;text-indent:20px;white-space:nowrap;overflow:hidden;background-color:transparent;background-position:50%;background-repeat:no-repeat;background-size:75% 75%;opacity:.5;*position:absolute;*top:0}.pika-next:hover,.pika-prev:hover{opacity:1}.is-rtl .pika-next,.pika-prev{float:left;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAUklEQVR42u3VMQoAIBADQf8Pgj+OD9hG2CtONJB2ymQkKe0HbwAP0xucDiQWARITIDEBEnMgMQ8S8+AqBIl6kKgHiXqQqAeJepBo/z38J/U0uAHlaBkBl9I4GwAAAABJRU5ErkJggg==");*left:0}.is-rtl .pika-prev,.pika-next{float:right;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAU0lEQVR42u3VOwoAMAgE0dwfAnNjU26bYkBCFGwfiL9VVWoO+BJ4Gf3gtsEKKoFBNTCoCAYVwaAiGNQGMUHMkjGbgjk2mIONuXo0nC8XnCf1JXgArVIZAQh5TKYAAAAASUVORK5CYII=");*right:0}.pika-next.is-disabled,.pika-prev.is-disabled{cursor:default;opacity:.2}.pika-select{display:inline-block;*display:inline}.pika-table{width:100%;border-collapse:collapse;border-spacing:0;border:0}.pika-table td,.pika-table th{width:14.285714285714286%;padding:0}.pika-table th{color:#999;font-size:12px;line-height:25px;font-weight:700;text-align:center}.pika-button{cursor:pointer;display:block;box-sizing:border-box;-moz-box-sizing:border-box;outline:none;border:0;margin:0;width:100%;padding:5px;color:#666;font-size:12px;line-height:15px;text-align:right;background:#f5f5f5}.pika-week{font-size:11px;color:#999}.is-today .pika-button{color:#3af;font-weight:700}.is-selected .pika-button{color:#fff;font-weight:700;background:#3af;box-shadow:inset 0 1px 3px #178fe5;border-radius:3px}.is-inrange .pika-button{background:#d5e9f7}.is-startrange .pika-button{color:#fff;background:#6cb31d;box-shadow:none;border-radius:3px}.is-endrange .pika-button{color:#fff;background:#3af;box-shadow:none;border-radius:3px}.is-disabled .pika-button,.is-outside-current-month .pika-button{pointer-events:none;cursor:default;color:#999;opacity:.3}.pika-button:hover{color:#fff;background:#ff8000;box-shadow:none;border-radius:3px}.pika-table abbr{border-bottom:none;cursor:help}.htCommentCell{position:relative}.htCommentCell:after{content:"";position:absolute;top:0;right:0;border-left:6px solid transparent;border-top:6px solid #000}.htComments{display:none;z-index:1059;position:absolute}.htCommentTextArea{box-shadow:0 1px 3px rgba(0,0,0,.117647),0 1px 2px rgba(0,0,0,.239216);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border:none;border-left:3px solid #ccc;background-color:#fff;width:215px;height:90px;font-size:12px;padding:5px;outline:0!important;-webkit-appearance:none}.htCommentTextArea:focus{box-shadow:0 1px 3px rgba(0,0,0,.117647),0 1px 2px rgba(0,0,0,.239216),inset 0 0 0 1px #5292f7;border-left:3px solid #5292f7} +/*! + * Handsontable ContextMenu + */.htContextMenu:not(.htGhostTable){display:none;position:absolute;z-index:1060}.htContextMenu .ht_clone_corner,.htContextMenu .ht_clone_debug,.htContextMenu .ht_clone_left,.htContextMenu .ht_clone_top{display:none}.htContextMenu table.htCore{border-color:#ccc;border-style:solid;border-width:1px 2px 2px 1px}.htContextMenu .wtBorder{visibility:hidden}.htContextMenu table tbody tr td{background:#fff;border-width:0;padding:4px 6px 0;cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.htContextMenu table tbody tr td:first-child{border:0}.htContextMenu table tbody tr td.htDimmed{font-style:normal;color:#323232}.htContextMenu table tbody tr td.current,.htContextMenu table tbody tr td.zeroclipboard-is-hover{background:#f3f3f3}.htContextMenu table tbody tr td.htSeparator{border-top:1px solid #bbb;height:0;padding:0;cursor:default}.htContextMenu table tbody tr td.htDisabled{color:#999;cursor:default}.htContextMenu table tbody tr td.htDisabled:hover{background:#fff;color:#999;cursor:default}.htContextMenu table tbody tr.htHidden{display:none}.htContextMenu table tbody tr td .htItemWrapper{margin-left:10px;margin-right:6px}.htContextMenu table tbody tr td div span.selected{margin-top:-2px;position:absolute;left:4px}.htContextMenu .ht_master .wtHolder{overflow:hidden}textarea#HandsontableCopyPaste{position:fixed!important;top:0!important;right:100%!important;overflow:hidden;opacity:0;outline:0 none!important}.htRowHeaders .ht_master.innerBorderLeft~.ht_clone_left td:first-of-type,.htRowHeaders .ht_master.innerBorderLeft~.ht_clone_top_left_corner th:nth-child(2){border-left:0}.handsontable.ht__manualColumnMove.after-selection--columns thead th.ht__highlight{cursor:move;cursor:-moz-grab;cursor:-webkit-grab;cursor:grab}.handsontable.ht__manualColumnMove.on-moving--columns,.handsontable.ht__manualColumnMove.on-moving--columns thead th.ht__highlight{cursor:move;cursor:-moz-grabbing;cursor:-webkit-grabbing;cursor:grabbing}.handsontable.ht__manualColumnMove.on-moving--columns .manualColumnResizer{display:none}.handsontable .ht__manualColumnMove--backlight,.handsontable .ht__manualColumnMove--guideline{position:absolute;height:100%;display:none}.handsontable .ht__manualColumnMove--guideline{background:#757575;width:2px;top:0;margin-left:-1px;z-index:105}.handsontable .ht__manualColumnMove--backlight{background:#343434;background:rgba(52,52,52,.25);display:none;z-index:105;pointer-events:none}.handsontable.on-moving--columns .ht__manualColumnMove--backlight,.handsontable.on-moving--columns.show-ui .ht__manualColumnMove--guideline{display:block}.handsontable .wtHider{position:relative}.handsontable.ht__manualRowMove.after-selection--rows tbody th.ht__highlight{cursor:move;cursor:-moz-grab;cursor:-webkit-grab;cursor:grab}.handsontable.ht__manualRowMove.on-moving--rows,.handsontable.ht__manualRowMove.on-moving--rows tbody th.ht__highlight{cursor:move;cursor:-moz-grabbing;cursor:-webkit-grabbing;cursor:grabbing}.handsontable.ht__manualRowMove.on-moving--rows .manualRowResizer{display:none}.handsontable .ht__manualRowMove--backlight,.handsontable .ht__manualRowMove--guideline{position:absolute;width:100%;display:none}.handsontable .ht__manualRowMove--guideline{background:#757575;height:2px;left:0;margin-top:-1px;z-index:105}.handsontable .ht__manualRowMove--backlight{background:#343434;background:rgba(52,52,52,.25);display:none;z-index:105;pointer-events:none}.handsontable.on-moving--rows .ht__manualRowMove--backlight,.handsontable.on-moving--rows.show-ui .ht__manualRowMove--guideline{display:block}.handsontable tbody td[rowspan][class*=area][class*=highlight]:not([class*=fullySelectedMergedCell]):before{opacity:0}.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-0]:before,.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-multiple]:before{opacity:.1}.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-1]:before{opacity:.2}.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-2]:before{opacity:.27}.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-3]:before{opacity:.35}.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-4]:before{opacity:.41}.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-5]:before{opacity:.47}.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-6]:before{opacity:.54}.handsontable tbody td[rowspan][class*=area][class*=highlight][class*=fullySelectedMergedCell-7]:before{opacity:.58}.table-column{width:100%}.select2-container{min-width:60px}.vertical #hot-table{width:100%;overflow:scroll;height:400px}.horizontal #hot-table{width:100%;overflow:scroll;height:250px}.rule-builder-body,.rule-column.vertical{height:400px}.rule-column.horizontal{height:150px}.rules-container-full{width:100%;height:400px}.rules-container{border:1px dashed #ccc;padding:5px}.rules-container-vertical{width:280px;height:400px}.rules-container-horizontal{width:100%;height:150px}.rules-container .title{font-weight:700}.rule-summary{height:100%;display:flex;flex-direction:column}.rule-edit-buttons{margin:5px}.rules{flex-grow:1;overflow-y:scroll}.rule-source{height:400px}.rule-column-selector li,.rules li{list-style-type:circle;list-style-position:inside;padding:0 5px}.rules .rule-error{color:red}.rule-warning,.rules .rule-error{display:block;margin-left:10px;font-style:italic}.rule-warning{color:#e28809}.rule-summary .title{font-size:1.1em}.rule-highlight{font-style:italic;font-weight:700}.rule-footer-inputs label{padding-left:20px;align-self:baseline}.rule-footer-inputs .select2-container{align-self:baseline}.rule-footer-inputs{display:flex;justify-content:space-between;flex-wrap:wrap;align-items:baseline}.rule-footer-inputs input{align-self:baseline}.extension-select{flex:1;max-width:120px;min-width:60px}.genome-select{flex:1;max-width:300px;min-width:120px}.collection-name{flex:1;min-width:120px;max-width:500px}.rule-footer-genome-group{flex:2;display:flex}.rule-footer-extension-group{flex:1;display:flex}.rule-footer-name-group{flex:3;display:flex;flex-direction:row-reverse}.fa-edit,.fa-times,.fa-wrench{cursor:pointer} +/*# sourceMappingURL=base.css.map */ \ No newline at end of file diff --git a/files/nginx/warning.html b/files/nginx/warning.html new file mode 100644 index 00000000..ac12db77 --- /dev/null +++ b/files/nginx/warning.html @@ -0,0 +1,14 @@ + + + + + + Access Denied + + +

Server is down

+

Please, be patient and try to reach it in couple of minutes.

+ + + diff --git a/files/repeatexplorer-elixir.cerit-sc.cz/README b/files/repeatexplorer-elixir.cerit-sc.cz/README new file mode 100644 index 00000000..28b14e04 --- /dev/null +++ b/files/repeatexplorer-elixir.cerit-sc.cz/README @@ -0,0 +1,120 @@ +# usegalaxy + +Simple galaxy installation steps. + +On fresh install of ubuntu: +``` +sudo apt-get update +sudo apt-get upgrade -y +sudo apt update +sudo apt upgrade -y +sudo apt install -y software-properties-common +sudo apt-add-repository --yes --update ppa:ansible/ansible +sudo apt install -y ansible +``` + +Clone the repo and instal required galaxy roles. +``` +git clone https://github.com/CESNET/usegalaxy.git +cd usegalaxy +ansible-galaxy install -p roles -r requirements.yml +``` +Note that the roles are already present in this repo. + +After the instalation, you should configure your [inventory file](https://training.galaxyproject.org/training-material/topics/admin/tutorials/ansible/tutorial.html#inventory-file) ([hosts](https://github.com/CESNET/usegalaxy/blob/main/hosts)) and set up a vault: +``` +openssl rand -base64 24 > .vault-password.txt +ansible-vault create group_vars/secret.yml +``` +The second command opens an editor wherein you should define variables eg.: +``` +vault_id_secret: "a-long-random-value" +rabbitmq_users_password: + mqadmin: "a-long-random-value" + galaxy: "a-long-random-value" + galaxy_gpu: "a-long-random-value" +``` +The value should be a long random value, which can be obtained by command `openssl rand -base64 24`, though you should avoid having a `/` or `\` in your password as galaxy will interpret this as a path. + +Make sure you have these ports enabled on your machine: +``` +80(HTTP) +443(HTTPS) +4369(TCP) +5671(TCP) +15672(TCP) +25672(TCP) +``` + +Once everything have been installed and configured, the ansible playbook can be run as follows: +``` +ansible-playbook galaxy.yml +``` + +## Usegalaxy tools + +Install ephemeris for tool management: +``` +virtualenv -p python3 ~/ephemeris_venv +. ~/ephemeris_venv/bin/activate +pip install ephemeris +``` +To obtain the list of tools from the [usegalaxy.eu](https://usegalaxy.eu) use: +``` +get-tool-list -g "https://usegalaxy.eu" -o "eu_tool_list.yaml" +``` +and then to install them: +``` +shed-tools install -g https://your-galaxy -a -t eu_tool_list.yaml +``` +The api key can be found in the User -> Preferences -> Manage API Key in Galaxy menu. + +... + +Later we should use this [role](https://github.com/galaxyproject/ansible-galaxy-tools) to automate this, but there are too many tools to be installed and it is very inpractical for testing purposes. + +## Debian 11 + +### TUS + +On ubuntu < 22.04 and Debian < 12 the GLIBC version is incompatible with the ```galaxyproject.tusd``` GLIBC, therfore playbook ends in error. +- in `roles/galaxyproject.tusd/defaults/main.yml` you have to set the `tusd_version:` to 'v1.8.0' (tested, possibly higher) + +### Ansible + +On Debian 11 the default version of `ansible` is 2.10.08 which fails to extract binaries for TUSd. +- workaround: + - because of Puppet, we need to create dedicated sources.list file for ansible + - `sudo vim /etc/apt/sources.list.d/ansible_ubuntu_focal_main.list` add this line : `deb http://ppa.launchpad.net/ansible/ansible/ubuntu focal main` + - then `sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367` + - followed by `sudo apt-get update` and `sudo apt-get install ansible -y` +- Note that you might need to `sudo apt remove ansible` `sudo apt autoremove` before you try to install ansible. + +### Nginx Upload Module + +Our playbook makes use of `nginx-upload-module`, which is not included by default in any nginx-* distribution from `apt`. +This is a simple recipe for installing nginx with the upload-module. + +``` +sudo apt remove *nginx* -y && +sudo apt autoremove -y && + +wget http://nginx.org/download/nginx-1.24.0.tar.gz && +tar -xzf nginx-1.24.0.tar.gz && +cd nginx-1.24.0/ && +git clone https://github.com/hongzhidao/nginx-upload-module.git && +sudo apt-get install -y libpcre3 libpcre3-dev libssl-dev zlib1g-dev && +./configure --user=nginx --group=nginx --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf --sbin-path=/usr/sbin/nginx --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-compat --with-debug --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_sub_module --add-module=nginx-upload-module && +make && make install +``` + +Note that you might need to `sudo systemctl unmask nginx.service` and remove the `galaxy` and `redirect-ssl` from `/etc/nginx/sites-available and `/etc/nginx/sites-enabled` before running the playbook again. + +### Other issues + + +Use `sudo apt install python3-docker` before running the `usegalaxy.rabbitmqserver` role. + +For influxdb apt key error: https://www.influxdata.com/blog/linux-package-signing-key-rotation/ + +For proftpd add "LoadModule mod_tls.c" to roles/galaxyproject.proftpd/templates/tls.conf.j2 just before the TLSEngine diff --git a/files/repeatexplorer-elixir.cerit-sc.cz/all_tools.yml b/files/repeatexplorer-elixir.cerit-sc.cz/all_tools.yml new file mode 100644 index 00000000..cd10e148 --- /dev/null +++ b/files/repeatexplorer-elixir.cerit-sc.cz/all_tools.yml @@ -0,0 +1,128 @@ +# DEMON: This file is a copy from usegalaxy.cz, it wasn't adjusted to the needs of RE yet +name: Tools +type: generic +id: all_tools +items: +- sections: + - upload_file + - get_data + - data_source_tools + - send_data + - collection_operations + - expression_tools +- id: general_text_label + text: General Text Tools + type: label +- sections: + - text_manipulation + - filter_and_sort + - join__subtract_and_group + - convert + - convert_formats + - builtin_converters +- id: genomic_manip_label + text: Genomic File Manipulation + type: label +- sections: + - fasta_fastq + - fastq_quality_control + - quality_control + - sam_bam + - bed + - vcf_bcf + - nanopore + - lift_over + - extract_features + - operate_on_genomic_intervals + - fetch_sequences___alignments + - chromosome_conformation +- id: genomics_analysis_label + text: Genomics Analysis + type: label +- sections: + - assembly + - annotation + - mapping + - variant_calling + - rna_analysis + - multiple_alignments + - hgv + - evolution + - regional_variation + - biodiversity_data_exploration + - genome_diversity + - rna_seq + - peak_calling + - genome_editing + - epigenetics + - phylogenetics + - phenotype_association + - single_cell + - hca_single_cell + - hca-single_cell + - single-cell +- id: stats_viz + text: Statistics and Visualization + type: label +- sections: + - statistics + - machine_learning + - plots + - interactive_tools + - graph_display_data +- id: genomics_toolkits_label + text: Genomics Toolkits + type: label +- sections: + - mothur + - qiime + - qiime_2 + - picard + - deeptools + - emboss + - ncbi_blast + - mimodd + - scanpy + - hicexplorer + - gemini + - motif_tools + - gatk_tools + - rad_seq + - sanger_sequencing + - dna_metabarcoding + - apollo +- id: domain_tools_label + text: Domain Tools + type: label +- sections: + - virology + - metagenomic_analysis + - proteomics + - metabolomics + - muon_spectroscopy + - chemicaltoolbox + - astronomy + - imaging + - climate_analysis + - gis_data_handling + - spatial_omics + - ecoregionalization + - graphclust + - species_abundance + - data_and_metadata_management + - obo_ontology_manipulation + - ontology + - compute_indicators_for_satellite_remote_sensing + - compute_indicators_for_turnover_boulders_fields + - animal_detection_on_acoustic_recordings +# - id: other_tools_label +# text: Other Tools +# type: label +- sections: + - other_tools +# - id: testing_tools_label +# text: Testing Tools +# type: label +- sections: + - local_tools + - test_tools diff --git a/files/repeatexplorer-elixir.cerit-sc.cz/pulsar.pub b/files/repeatexplorer-elixir.cerit-sc.cz/pulsar.pub new file mode 100644 index 00000000..8e52ab8e --- /dev/null +++ b/files/repeatexplorer-elixir.cerit-sc.cz/pulsar.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPJ4pNj4pZBfm/hGSD04ZkuxtCbageNxwSD6EAZ+wyjQ galaxyelixir@galaxy-re.grid.cesnet.cz diff --git a/files/repeatexplorer-elixir.cerit-sc.cz/regalaxy_integrated_tool_panel.xml b/files/repeatexplorer-elixir.cerit-sc.cz/regalaxy_integrated_tool_panel.xml new file mode 100644 index 00000000..9190a82b --- /dev/null +++ b/files/repeatexplorer-elixir.cerit-sc.cz/regalaxy_integrated_tool_panel.xml @@ -0,0 +1,714 @@ + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + +
+ +
+ + + + + + + +
+ +
+ + + + + + + +
+ +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + +
+ +
diff --git a/files/repeatexplorer-elixir.cerit-sc.cz/regalaxy_integrated_tool_panel.xml.backup b/files/repeatexplorer-elixir.cerit-sc.cz/regalaxy_integrated_tool_panel.xml.backup new file mode 100644 index 00000000..b7565fc1 --- /dev/null +++ b/files/repeatexplorer-elixir.cerit-sc.cz/regalaxy_integrated_tool_panel.xml.backup @@ -0,0 +1,334 @@ + + + +
+ + + + + + + + + + + + + + + + + + + + +
+
+ + +
+
+ + + + + + + + + + + +
+
+ + + + + +
+
+ + + + + + + + + + + + +
+
+ + + + + + +
+
+ + + + + + +
+
+ + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + +
+
+ + + + + + + + + + + + + + +
+
+ + +
+
+ + + + + + + +
+
+ +
+
+ +
+
+ + + + + + + + + + + +
+
+ +
+
+ + + + +
+
diff --git a/files/repeatexplorer-elixir.cerit-sc.cz/regalaxy_tool_list.yaml b/files/repeatexplorer-elixir.cerit-sc.cz/regalaxy_tool_list.yaml new file mode 100644 index 00000000..d84cccf8 --- /dev/null +++ b/files/repeatexplorer-elixir.cerit-sc.cz/regalaxy_tool_list.yaml @@ -0,0 +1,373 @@ +tools: +- name: ncbi_datasets + owner: iuc + revisions: + - 198c75abbf55 + tool_panel_section_id: getext + tool_panel_section_label: Get Data + tool_shed_url: toolshed.g2.bx.psu.edu +- name: repeatexplorer2_testing + owner: petr-novak + revisions: + - 3d0ba5734776 + - 4308d3e572ee + - 792914356c37 + - 20ef42e81eeb + - 5cca2c9aa4ad + - a27646c27090 + tool_panel_section_id: repeatexplorer + tool_panel_section_label: RepeatExplorer + tool_shed_url: toolshed.g2.bx.psu.edu +- name: dante + owner: petr-novak + revisions: + - 8f2bd3cae2de + - f0663cdbae66 + - ae4cebdccf74 + tool_panel_section_id: dante + tool_panel_section_label: DANTE + tool_shed_url: toolshed.g2.bx.psu.edu +- name: dante_tir + owner: petr-novak + revisions: + - ce4d06c72092 + tool_panel_section_id: dante_tir + tool_panel_section_label: DANTE_TIR + tool_shed_url: toolshed.g2.bx.psu.edu +- name: dante_ltr + owner: petr-novak + revisions: + - e61f06df42b9 + - 08b5e23859ed + - 27e5f58763f2 + - 8224e3d7b03a + - d5508ce50c49 + tool_panel_section_id: dante_ltr + tool_panel_section_label: DANTE_LTR + tool_shed_url: toolshed.g2.bx.psu.edu +- name: tidecluster + owner: petr-novak + revisions: + - 440796be7576 + - a0f57cfa1bb7 + - 971dbc97e607 + - 30a8a954dd93 + tool_panel_section_id: tidecluster + tool_panel_section_label: TideCluster + tool_shed_url: toolshed.g2.bx.psu.edu +- name: repeat_annotation_pipeline3 + owner: petr-novak + revisions: + - 755a4d643184 + - 5366d5ea04bc + tool_panel_section_id: assembly_annotation_tools + tool_panel_section_label: Assembly annotation tools + tool_shed_url: toolshed.g2.bx.psu.edu +- name: re_utils + owner: petr-novak + revisions: + - 91996b991991 + tool_panel_section_id: repeatexplorer_utilities + tool_panel_section_label: RepeatExplorer utilities + tool_shed_url: toolshed.g2.bx.psu.edu +- name: long_reads_sampling + owner: petr-novak + revisions: + - 060fc04af21c + tool_panel_section_id: repeatexplorer_utilities + tool_panel_section_label: RepeatExplorer utilities + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fastqc + owner: devteam + revisions: + - 5ec9f6bceaee + tool_panel_section_id: ngs:_qc_and_manipulation + tool_panel_section_label: 'NGS: QC and manipulation' + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fastq_groomer + owner: devteam + revisions: + - 47e5dbc3e790 + tool_panel_section_id: ngs:_qc_and_manipulation + tool_panel_section_label: 'NGS: QC and manipulation' + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fastq_paired_end_splitter + owner: devteam + revisions: + - e39cc71d3ed6 + tool_panel_section_id: ngs:_qc_and_manipulation + tool_panel_section_label: 'NGS: QC and manipulation' + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fastq_stats + owner: devteam + revisions: + - f0e7deab6518 + tool_panel_section_id: ngs:_qc_and_manipulation + tool_panel_section_label: 'NGS: QC and manipulation' + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fastx_barcode_splitter + owner: devteam + revisions: + - 0b7ec11b3c7c + tool_panel_section_id: ngs:_qc_and_manipulation + tool_panel_section_label: 'NGS: QC and manipulation' + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fastx_artifacts_filter + owner: devteam + revisions: + - 529bccd5e4a1 + tool_panel_section_id: ngs:_qc_and_manipulation + tool_panel_section_label: 'NGS: QC and manipulation' + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fastx_nucleotides_distribution + owner: devteam + revisions: + - b6b54ba71bd8 + tool_panel_section_id: ngs:_qc_and_manipulation + tool_panel_section_label: 'NGS: QC and manipulation' + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fastx_quality_statistics + owner: devteam + revisions: + - cc0fd298cc17 + tool_panel_section_id: ngs:_qc_and_manipulation + tool_panel_section_label: 'NGS: QC and manipulation' + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fastq_quality_boxplot + owner: devteam + revisions: + - 867ab348287d + tool_panel_section_id: ngs:_qc_and_manipulation + tool_panel_section_label: 'NGS: QC and manipulation' + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fastq_quality_converter + owner: devteam + revisions: + - 045f0e1043f7 + tool_panel_section_id: ngs:_qc_and_manipulation + tool_panel_section_label: 'NGS: QC and manipulation' + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fastq_quality_filter + owner: devteam + revisions: + - 64e9a6afdd0c + tool_panel_section_id: ngs:_qc_and_manipulation + tool_panel_section_label: 'NGS: QC and manipulation' + tool_shed_url: toolshed.g2.bx.psu.edu +- name: multiqc + owner: iuc + revisions: + - abfd8a6544d7 + tool_panel_section_id: ngs:_qc_and_manipulation + tool_panel_section_label: 'NGS: QC and manipulation' + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fasta_compute_length + owner: devteam + revisions: + - 7d37cfda8e00 + tool_panel_section_id: fasta/fastq_manipulation + tool_panel_section_label: FASTA/FASTQ manipulation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fasta_to_tabular + owner: devteam + revisions: + - e7ed3c310b74 + tool_panel_section_id: fasta/fastq_manipulation + tool_panel_section_label: FASTA/FASTQ manipulation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fasta_formatter + owner: devteam + revisions: + - 516b97a23d7e + tool_panel_section_id: fasta/fastq_manipulation + tool_panel_section_label: FASTA/FASTQ manipulation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fastx_reverse_complement + owner: devteam + revisions: + - 177f0621c266 + tool_panel_section_id: fasta/fastq_manipulation + tool_panel_section_label: FASTA/FASTQ manipulation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fastx_trimmer + owner: devteam + revisions: + - 73194cdd4f57 + tool_panel_section_id: fasta/fastq_manipulation + tool_panel_section_label: FASTA/FASTQ manipulation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fastx_renamer + owner: devteam + revisions: + - f984bb114520 + tool_panel_section_id: fasta/fastq_manipulation + tool_panel_section_label: FASTA/FASTQ manipulation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: tabular_to_fasta + owner: devteam + revisions: + - 0a7799698fe5 + tool_panel_section_id: fasta/fastq_manipulation + tool_panel_section_label: FASTA/FASTQ manipulation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: tabular_to_fastq + owner: devteam + revisions: + - 2dcfbbf9071a + tool_panel_section_id: fasta/fastq_manipulation + tool_panel_section_label: FASTA/FASTQ manipulation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fastq_to_tabular + owner: devteam + revisions: + - 4b347702c4aa + tool_panel_section_id: fasta/fastq_manipulation + tool_panel_section_label: FASTA/FASTQ manipulation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fastqtofasta + owner: devteam + revisions: + - 297962e79f39 + tool_panel_section_id: fasta/fastq_manipulation + tool_panel_section_label: FASTA/FASTQ manipulation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fastq_paired_end_deinterlacer + owner: devteam + revisions: + - f3936d0632cb + tool_panel_section_id: fasta/fastq_manipulation + tool_panel_section_label: FASTA/FASTQ manipulation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fastq_paired_end_interlacer + owner: devteam + revisions: + - 2ccb8dcabddc + tool_panel_section_id: fasta/fastq_manipulation + tool_panel_section_label: FASTA/FASTQ manipulation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: fasta_filter_by_length + owner: devteam + revisions: + - 8cacfcf96a52 + tool_panel_section_id: fasta/fastq_manipulation + tool_panel_section_label: FASTA/FASTQ manipulation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: ucsc_fasplit + owner: iuc + revisions: + - bf04bd405d5b + tool_panel_section_id: fasta/fastq_manipulation + tool_panel_section_label: FASTA/FASTQ manipulation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: trimmomatic + owner: pjbriggs + revisions: + - 32f1f56bd970 + tool_panel_section_id: fasta/fastq_manipulation + tool_panel_section_label: FASTA/FASTQ manipulation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: trim_galore + owner: bgruening + revisions: + - cd7e644cae1d + tool_panel_section_id: fasta/fastq_manipulation + tool_panel_section_label: FASTA/FASTQ manipulation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: seqkit_stats + owner: iuc + revisions: + - 54a954ee64d4 + tool_panel_section_id: fasta/fastq_manipulation + tool_panel_section_label: FASTA/FASTQ manipulation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: seqtk + owner: iuc + revisions: + - 4b494533146a + tool_panel_section_id: fasta/fastq_manipulation + tool_panel_section_label: FASTA/FASTQ manipulation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: various_galaxy_tools + owner: petr-novak + revisions: + - 1069776f7ae2 + tool_panel_section_id: genomic_file_utilities + tool_panel_section_label: Genomic file utilities + tool_shed_url: toolshed.g2.bx.psu.edu +- name: gffread + owner: devteam + revisions: + - 3e436657dcd0 + tool_panel_section_id: bed + tool_panel_section_label: BED + tool_shed_url: toolshed.g2.bx.psu.edu +- name: bedtools + owner: iuc + revisions: + - a1a923cd89e8 + tool_panel_section_id: bed + tool_panel_section_label: BED + tool_shed_url: toolshed.g2.bx.psu.edu +- name: jbrowse + owner: iuc + revisions: + - a6e57ff585c0 + tool_panel_section_id: jbrowse + tool_panel_section_label: Jbrowse + tool_shed_url: toolshed.g2.bx.psu.edu +- name: krona_text + owner: petr-novak + revisions: + - 04021cfd5170 + tool_panel_section_id: visualisation + tool_panel_section_label: Visualisation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: histogram + owner: devteam + revisions: + - 6f134426c2b0 + tool_panel_section_id: visualisation + tool_panel_section_label: Visualisation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: ggplot2_point + owner: iuc + revisions: + - 3b12bf9b4b87 + tool_panel_section_id: visualisation + tool_panel_section_label: Visualisation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: ggplot2_histogram + owner: iuc + revisions: + - b0d96516e6a5 + tool_panel_section_id: visualisation + tool_panel_section_label: Visualisation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: ggplot2_violin + owner: iuc + revisions: + - 0e7290688b50 + tool_panel_section_id: visualisation + tool_panel_section_label: Visualisation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: ggplot2_pca + owner: iuc + revisions: + - b1268b7544d3 + tool_panel_section_id: visualisation + tool_panel_section_label: Visualisation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: ggplot2_heatmap + owner: iuc + revisions: + - 10515715c940 + tool_panel_section_id: visualisation + tool_panel_section_label: Visualisation + tool_shed_url: toolshed.g2.bx.psu.edu +- name: text_processing + owner: bgruening + revisions: + - d698c222f354 + tool_panel_section_id: text_manipulation + tool_panel_section_label: Text manipulation + tool_shed_url: toolshed.g2.bx.psu.edu diff --git a/files/repeatexplorer-elixir.cerit-sc.cz/static/images/umbr_programs_icons/ELIXIR_CZECHREPUBLIC_white_background_small.png b/files/repeatexplorer-elixir.cerit-sc.cz/static/images/umbr_programs_icons/ELIXIR_CZECHREPUBLIC_white_background_small.png new file mode 100644 index 00000000..c3042190 Binary files /dev/null and b/files/repeatexplorer-elixir.cerit-sc.cz/static/images/umbr_programs_icons/ELIXIR_CZECHREPUBLIC_white_background_small.png differ diff --git a/files/repeatexplorer-elixir.cerit-sc.cz/static/images/umbr_programs_icons/RE_header.png b/files/repeatexplorer-elixir.cerit-sc.cz/static/images/umbr_programs_icons/RE_header.png new file mode 100644 index 00000000..752bb82a Binary files /dev/null and b/files/repeatexplorer-elixir.cerit-sc.cz/static/images/umbr_programs_icons/RE_header.png differ diff --git a/files/repeatexplorer-elixir.cerit-sc.cz/static/images/umbr_programs_icons/RE_logo.png b/files/repeatexplorer-elixir.cerit-sc.cz/static/images/umbr_programs_icons/RE_logo.png new file mode 100644 index 00000000..846260cd Binary files /dev/null and b/files/repeatexplorer-elixir.cerit-sc.cz/static/images/umbr_programs_icons/RE_logo.png differ diff --git a/files/repeatexplorer-elixir.cerit-sc.cz/static/images/umbr_programs_icons/drawing.png b/files/repeatexplorer-elixir.cerit-sc.cz/static/images/umbr_programs_icons/drawing.png new file mode 100644 index 00000000..ba27db26 Binary files /dev/null and b/files/repeatexplorer-elixir.cerit-sc.cz/static/images/umbr_programs_icons/drawing.png differ diff --git a/files/repeatexplorer-elixir.cerit-sc.cz/tpv_rules_local.real.yml b/files/repeatexplorer-elixir.cerit-sc.cz/tpv_rules_local.real.yml new file mode 100644 index 00000000..1b306079 --- /dev/null +++ b/files/repeatexplorer-elixir.cerit-sc.cz/tpv_rules_local.real.yml @@ -0,0 +1,474 @@ +global: + default_inherits: default + +tools: + default: + abstract: true + cores: 2 + mem: 10 + env: + # Ensuring a consistent collation environment is good for reproducibility. + LC_ALL: C + GALAXY_SLOTS: "{cores}" + GALAXY_MEMORY_MB: "{int(mem)*1000}" + context: + scratch: 15 + walltime: 24 + queue: galaxyre + scheduling: + require: + - pulsar + reject: + - offline + + # Tools for testing and playing + testing.*: + cores: 1 + mem: 1 + context: + scratch: 1 + walltime: 1 + + # DANTE_TIR toolset: https://toolshed.g2.bx.psu.edu/repos/petr-novak/dante_tir + toolshed.g2.bx.psu.edu/repos/petr-novak/dante_tir/.*: + cores: 20 + mem: 32 + + # DANTE toolset: https://toolshed.g2.bx.psu.edu/repos/petr-novak/dante + toolshed.g2.bx.psu.edu/repos/petr-novak/dante/domains_filter/.*: + cores: 2 + mem: 25 + context: + scratch: 15 + toolshed.g2.bx.psu.edu/repos/petr-novak/dante/gff_to_tabular/.*: + cores: 2 + mem: 25 + context: + scratch: 15 + toolshed.g2.bx.psu.edu/repos/petr-novak/dante/gff_summary/.*: + cores: 2 + mem: 25 + context: + scratch: 15 + toolshed.g2.bx.psu.edu/repos/petr-novak/dante/domains_extract/.*: + cores: 2 + mem: 25 + context: + scratch: 15 + toolshed.g2.bx.psu.edu/repos/petr-novak/dante/dante/.*: + cores: 32 + mem: 25 + context: + scratch: 15 + walltime: 336 + + # TideCluster tools http://toolshed.g2.bx.psu.edu/repos/petr-novak/tidecluster + toolshed.g2.bx.psu.edu/repos/petr-novak/tidecluster/tidecluster_annotation/.*: + cores: 16 + mem: 24 + context: + scratch: 15 + toolshed.g2.bx.psu.edu/repos/petr-novak/tidecluster/tc_reannotate/.*: + cores: 32 + mem: 50 + context: + scratch: 15 + walltime: 96 + toolshed.g2.bx.psu.edu/repos/petr-novak/tidecluster/tidecluster/.*: + cores: 16 + mem: 64 + context: + scratch: 150 + walltime: 336 + + # repeat_annotation_pipeline tools http://toolshed.g2.bx.psu.edu/repos/petr-novak/repeat_annotation_pipeline3 + toolshed.g2.bx.psu.edu/repos/petr-novak/repeat_annotation_pipeline3/extract_re_contigs/.*: + cores: 2 + mem: 10 + context: + scratch: 15 + toolshed.g2.bx.psu.edu/repos/petr-novak/repeat_annotation_pipeline3/compare_gff/.*: + cores: 2 + mem: 10 + context: + scratch: 15 + toolshed.g2.bx.psu.edu/repos/petr-novak/repeat_annotation_pipeline3/summarize_gff_by_attribute/.*: + cores: 2 + mem: 10 + context: + scratch: 15 + toolshed.g2.bx.psu.edu/repos/petr-novak/repeat_annotation_pipeline3/annotate_contigs/.*: + cores: 2 + mem: 10 + context: + scratch: 15 + toolshed.g2.bx.psu.edu/repos/petr-novak/repeat_annotation_pipeline3/repeat_annotate/.*: + cores: 32 + mem: 50 + context: + scratch: 50 + walltime: 96 + + # re_utils tools https://toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils + toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/RMsearch2/.*: + cores: 16 + mem: 32 + context: + scratch: 50 + walltime: 96 + toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/chip_seq_ratio_1/.*: + cores: 16 + mem: 32 + context: + scratch: 50 + walltime: 48 + toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/rename_sequences/.*: + cores: 2 + mem: 10 + context: + scratch: 50 + toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/pairScan/.*: + cores: 2 + mem: 10 + context: + scratch: 50 + walltime: 48 + toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/single_fastq_filtering/.*: + cores: 6 + mem: 10 + context: + scratch: 50 + walltime: 24 + toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/fasta_affixer/.*: + cores: 2 + mem: 10 + context: + scratch: 50 + toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/sampler/.*: + cores: 2 + mem: 10 + context: + scratch: 15 + toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/plot_comparative/.*: + cores: 2 + mem: 10 + context: + scratch: 15 + toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/extract_var_files_from_re/.*: + cores: 2 + mem: 10 + context: + scratch: 50 + toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/summarize_annotation/.*: + cores: 2 + mem: 10 + context: + scratch: 50 + toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/names_affixer/.*: + cores: 2 + mem: 10 + context: + scratch: 50 + toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/cluster_table2krona_format/.*: + cores: 2 + mem: 10 + context: + scratch: 50 + toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/fasta_input/.*: + cores: 2 + mem: 10 + context: + scratch: 50 + toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/fasta_interlacer/.*: + cores: 2 + mem: 10 + context: + scratch: 50 + toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/paired_fastq_filtering/.*: +# cores: 6 #DEMON: old setting but seems pointless + cores: 2 +# mem: 10 #DEMON: old setting but there was job which used 78GB; the best would be to scale to input size + mem: 50 + context: + scratch: 50 +# walltime: 24 #DEMON: used to be 24h but if input is very big it could take more time, would be great to scale it to input size + walltime: 48 + + # DANTE_ltr tools http://toolshed.g2.bx.psu.edu/repos/petr-novak/dante_ltr + toolshed.g2.bx.psu.edu/repos/petr-novak/dante_ltr/dante_ltr_summary/.*: + cores: 2 + mem: 10 + context: + scratch: 15 + toolshed.g2.bx.psu.edu/repos/petr-novak/dante_ltr/clean_dante_ltr/.*: + cores: 32 + mem: 64 + context: + scratch: 64 + walltime: 168 + toolshed.g2.bx.psu.edu/repos/petr-novak/dante_ltr/dante_ltr_search/.*: + cores: 32 + mem: 64 + context: + scratch: 64 + walltime: 168 + toolshed.g2.bx.psu.edu/repos/petr-novak/dante_ltr/dante_ltr_to_library/.*: + cores: 32 + mem: 64 + context: + scratch: 64 + walltime: 168 + + # ReapeatExplorer tools http://toolshed.g2.bx.psu.edu/repos/petr-novak/repeatexplorer2_testing + toolshed.g2.bx.psu.edu/repos/petr-novak/repeatexplorer2_testing/repeatexplorer2/.*: + cores: 10 + mem: 4 + context: + scratch: 50 + walltime: 48 + scheduling: + require: + - pulsar + - singularity + container_resolvers: + - type: cached_explicit_singularity + cache_directory: "$SINGULARITY_CACHEDIR" + - type: explicit_singularity + - type: cached_mulled_singularity + cache_directory: "$SINGULARITY_CACHEDIR" + - auto_install: true + type: mulled_singularity + - auto_install: false + cache_directory: /mnt/galaxy-re/singularity/mulled + type: build_mulled_singularity + params: + singularity_default_container_id: "/storage/brno11-elixir/home/galaxyelixir/pulsar-re/files/singularity_cache/cache/library/sha256.660dda926394f3db2400f7800e064cf731c75566853cac43a30be44e3b5f5d73" + rules: + - id: queue_definition_by_parameter + if: | + param_dict = job.get_param_values(app) # get job input parameters as dictionary + 'queue_definition' in param_dict and 'queue_specification' in param_dict['queue_definition'] + cores: | + import re + int(re.search(r'ncpus=(\d)+', job.get_param_values(app)['queue_definition']['queue_specification']).group(0).split('=')[1]) + mem: | + import re + int(re.search(r'mem=(\d)+', job.get_param_values(app)['queue_definition']['queue_specification']).group(0).split('=')[1]) + context: + scratch: | + import re + int(re.search(r'scratch_local=(\d)+', job.get_param_values(app)['queue_definition']['queue_specification']).group(0).split('=')[1]) + walltime: | + import re + int(re.search(r'walltime=(\d)+', job.get_param_values(app)['queue_definition']['queue_specification']).group(0).split('=')[1]) + - id: basic_fast_queue_selected + if: | + param_dict = job.get_param_values(app) # get job input parameters as dictionary + 'queue_select' in param_dict and param_dict['queue_select'].startswith('basic_fast_queue') + cores: 10 + mem: 16 + context: + scratch: 50 + walltime: 48 + - id: long_slow_queue_selected + if: | + param_dict = job.get_param_values(app) # get job input parameters as dictionary + 'queue_select' in param_dict and param_dict['queue_select'].startswith('long_slow_queue') + cores: 16 + mem: 64 + context: + scratch: 50 + walltime: 336 + - id: extra_long_slow_queue_selected + if: | + param_dict = job.get_param_values(app) # get job input parameters as dictionary + 'queue_select' in param_dict and param_dict['queue_select'].startswith('extra_long_slow_queue') + cores: 16 + mem: 64 + context: + scratch: 50 + walltime: 720 + + toolshed.g2.bx.psu.edu/repos/petr-novak/repeatexplorer2_testing/tarean/.*: + inherits: toolshed.g2.bx.psu.edu/repos/petr-novak/repeatexplorer2_testing/repeatexplorer2/.* + + .*/fastq_groomer/.*: + cores: 1 + mem: 16 + +roles: + training.*: + max_cores: 2 + max_mem: "int(max_cores * 3.8)" + scheduling: + require: + - training + helper: + scheduling: + require: + - helper + highmem: + mem: 512 + context: + queue: elixircz + test: + scheduling: + require: + - test + +destinations: + tpv_local: + runner: local_runner + max_accepted_cores: 1 + max_accepted_mem: 4 + params: + tmp_dir: true + scheduling: + require: + - local + reject: + - singularity + tpv_local_singularity: + runner: local_runner + max_accepted_cores: 1 + max_accepted_mem: 4 + params: + singularity_enabled: true + singularity_default_container_id: "/cvmfs/singularity.galaxyproject.org/all/python:3.8.3" + env: + SINGULARITY_CACHEDIR: "/mnt/galaxy-re/singularity/" + SINGULARITY_TMPDIR: /mnt/galaxy-re/tmp + scheduling: + require: + - local + prefer: + - singularity + tpv_pulsar: + runner: pulsar_runner + max_accepted_cores: 32 + max_accepted_mem: 185 + max_accepted_gpus: 0 + max_cores: 32 + max_mem: 128 + max_gpus: 0 + params: + default_file_action: remote_rsync_transfer + transport: rsync + ssh_user: "galaxyelixir" + ssh_host: "repeatexplorer-elixir.cerit-sc.cz" + ssh_port: 22 + ssh_key: | + -----BEGIN OPENSSH PRIVATE KEY----- + b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW + QyNTUxOQAAACDyeKTY+KWQX5v4Rkg9OGZLsbQm2oHjccEg+hAGfsMo0AAAAKgS5zlWEuc5 + VgAAAAtzc2gtZWQyNTUxOQAAACDyeKTY+KWQX5v4Rkg9OGZLsbQm2oHjccEg+hAGfsMo0A + AAAECe7yi98nsOset8Jo7V2Gmh19TtINb+4Cnx8YFxJSgKafJ4pNj4pZBfm/hGSD04Zkux + tCbageNxwSD6EAZ+wyjQAAAAJWdhbGF4eWVsaXhpckBnYWxheHktcmUuZ3JpZC5jZXNuZX + QuY3o= + -----END OPENSSH PRIVATE KEY----- + dependency_resolution: remote + jobs_directory: /storage/brno11-elixir/home/galaxyelixir/pulsar-re/files/staging + persistence_directory: /opt/pulsar/files/persistent + remote_metadata: false + rewrite_parameters: true + outputs_to_working_directory: false + submit_native_specification: "-l select=1:ncpus={int(cores)}:mem={int(mem)}gb:scratch_local={int(scratch)}gb -l walltime={int(walltime)}:00:00 -q {queue}@pbs-m1.metacentrum.cz -N pulsar_re_j{job.id}__{tool.id if '/' not in tool.id else tool.id.split('/')[-2]+'_v'+tool.id.split('/')[-1]}__{user.username if user and hasattr(user, 'username') else 'anonymous'}" + env: + TMPDIR: $SCRATCHDIR + TMP: $SCRATCHDIR + TEMP: $SCRATCHDIR + scheduling: + require: + - pulsar + reject: + - singularity + tpv_pulsar_singularity: + inherits: tpv_pulsar + runner: pulsar_runner + params: + singularity_enabled: true + singularity_volumes: "$job_directory:rw,$tool_directory:ro,$job_directory/outputs:rw,$working_directory:rw,/cvmfs/data.galaxyproject.org:ro,$SCRATCHDIR:rw" + singularity_default_container_id: "/cvmfs/singularity.galaxyproject.org/all/python:3.8.3" + submit_native_specification: "-l select=1:ncpus={int(cores)}:mem={int(mem)}gb:scratch_local={int(scratch)}gb -l walltime={int(walltime)}:00:00 -q {queue}@pbs-m1.metacentrum.cz -N pulsar_re_j{job.id}__{tool.id if '/' not in tool.id else tool.id.split('/')[-2]+'_v'+tool.id.split('/')[-1]}__{user.username if user and hasattr(user, 'username') else 'anonymous'}" + env: + SINGULARITY_CACHEDIR: "/storage/brno11-elixir/home/galaxyelixir/pulsar-re/files/singularity_cache" + SINGULARITY_TMPDIR: "$SCRATCHDIR" + XDG_CACHE_HOME: "$SCRATCHDIR" + scheduling: + require: + - pulsar + - singularity + tpv_pulsar_test: + inherits: tpv_pulsar + runner: pulsar_runner + params: + submit_native_specification: "-l select=1:ncpus={int(cores)}:mem={int(mem)}gb:scratch_local={int(scratch)}gb -l walltime={int(walltime)}:00:00 -q {queue}@pbs-m1.metacentrum.cz -N pulsar_re_j{job.id}__{tool.id if '/' not in tool.id else tool.id.split('/')[-2]+'_v'+tool.id.split('/')[-1]}__{user.username if user and hasattr(user, 'username') else 'anonymous'}" + scheduling: + require: + - pulsar + - test + reject: + - singularity + tpv_pulsar_highmem: + inherits: tpv_pulsar + runner: pulsar_runner + max_accepted_mem: 512 + max_mem: 512 + + tpv_pulsar_helper: + runner: pulsar_helper + max_accepted_cores: 32 + max_accepted_mem: 185 + max_accepted_gpus: 0 + max_cores: 32 + max_mem: 128 + max_gpus: 0 + params: + default_file_action: remote_rsync_transfer + transport: rsync + ssh_user: "galaxyelixir" + ssh_host: "repeatexplorer-elixir.cerit-sc.cz" + ssh_port: 22 + ssh_key: | + -----BEGIN OPENSSH PRIVATE KEY----- + b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW + QyNTUxOQAAACDyeKTY+KWQX5v4Rkg9OGZLsbQm2oHjccEg+hAGfsMo0AAAAKgS5zlWEuc5 + VgAAAAtzc2gtZWQyNTUxOQAAACDyeKTY+KWQX5v4Rkg9OGZLsbQm2oHjccEg+hAGfsMo0A + AAAECe7yi98nsOset8Jo7V2Gmh19TtINb+4Cnx8YFxJSgKafJ4pNj4pZBfm/hGSD04Zkux + tCbageNxwSD6EAZ+wyjQAAAAJWdhbGF4eWVsaXhpckBnYWxheHktcmUuZ3JpZC5jZXNuZX + QuY3o= + -----END OPENSSH PRIVATE KEY----- + dependency_resolution: remote + jobs_directory: /storage/brno11-elixir/home/galaxyelixir/pulsar-re/files/staging + persistence_directory: /opt/pulsar/files/persistent + remote_metadata: false + rewrite_parameters: true + outputs_to_working_directory: false + submit_native_specification: "-l select=1:ncpus={int(cores)}:mem={int(mem)}gb:scratch_local={int(scratch)}gb -l walltime={int(walltime)}:00:00 -q {queue}@pbs-m1.metacentrum.cz -N pulsar_re_j{job.id}__{tool.id if '/' not in tool.id else tool.id.split('/')[-2]+'_v'+tool.id.split('/')[-1]}__{user.username if user and hasattr(user, 'username') else 'anonymous'}" + env: + TMPDIR: $SCRATCHDIR + TMP: $SCRATCHDIR + TEMP: $SCRATCHDIR + scheduling: + require: + - pulsar + - helper + reject: + - singularity + tpv_pulsar_singularity_helper: + inherits: tpv_pulsar_helper + runner: pulsar_helper + params: + singularity_enabled: true + singularity_volumes: "$job_directory:rw,$tool_directory:ro,$job_directory/outputs:rw,$working_directory:rw,/cvmfs/data.galaxyproject.org:ro,$SCRATCHDIR:rw" + singularity_default_container_id: "/cvmfs/singularity.galaxyproject.org/all/python:3.8.3" + submit_native_specification: "-l select=1:ncpus={int(cores)}:mem={int(mem)}gb:scratch_local={int(scratch)}gb -l walltime={int(walltime)}:00:00 -q {queue}@pbs-m1.metacentrum.cz -N pulsar_re_j{job.id}__{tool.id if '/' not in tool.id else tool.id.split('/')[-2]+'_v'+tool.id.split('/')[-1]}__{user.username if user and hasattr(user, 'username') else 'anonymous'}" + env: + SINGULARITY_CACHEDIR: "/storage/brno11-elixir/home/galaxyelixir/pulsar-re/files/singularity_cache" + SINGULARITY_TMPDIR: "$SCRATCHDIR" + XDG_CACHE_HOME: "$SCRATCHDIR" + scheduling: + require: + - pulsar + - helper + - singularity diff --git a/files/repeatexplorer-elixir.cerit-sc.cz/tpv_rules_local.yml b/files/repeatexplorer-elixir.cerit-sc.cz/tpv_rules_local.yml new file mode 100644 index 00000000..1e153b83 --- /dev/null +++ b/files/repeatexplorer-elixir.cerit-sc.cz/tpv_rules_local.yml @@ -0,0 +1,250 @@ +tools: + .*/trimmomatic/.*: + rules: + - id: no_singularity + if: | + # versions without singularity container available + no_container = { + '0.39+galaxy0', + } + any(helpers.tool_version_eq(tool, version) for version in no_container) + scheduling: + require: + - conda + + # DEMON: All Novak's tools (except 2) are not properly containerized, therefore, they need conda to deal with dependences + .*/petr-novak/.*: + cores: 2 + mem: 10 + context: + scratch: 15 + scheduling: + require: + - conda + + # DANTE_TIR toolset: https://toolshed.g2.bx.psu.edu/repos/petr-novak/dante_tir + toolshed.g2.bx.psu.edu/repos/petr-novak/dante_tir/.*: + cores: 20 + mem: 32 + context: + walltime: 48 + + # DANTE toolset: https://toolshed.g2.bx.psu.edu/repos/petr-novak/dante + toolshed.g2.bx.psu.edu/repos/petr-novak/dante/domains_filter/.*: + mem: 25 + toolshed.g2.bx.psu.edu/repos/petr-novak/dante/gff_to_tabular/.*: + mem: 25 + toolshed.g2.bx.psu.edu/repos/petr-novak/dante/gff_summary/.*: + mem: 25 + toolshed.g2.bx.psu.edu/repos/petr-novak/dante/domains_extract/.*: + mem: 25 + toolshed.g2.bx.psu.edu/repos/petr-novak/dante/dante/.*: + cores: 32 + mem: 25 + context: + walltime: 336 + + # TideCluster tools http://toolshed.g2.bx.psu.edu/repos/petr-novak/tidecluster + toolshed.g2.bx.psu.edu/repos/petr-novak/tidecluster/tidecluster_annotation/.*: + cores: 16 + mem: 24 + toolshed.g2.bx.psu.edu/repos/petr-novak/tidecluster/tc_reannotate/.*: + cores: 32 + mem: 50 + context: + walltime: 96 + toolshed.g2.bx.psu.edu/repos/petr-novak/tidecluster/tidecluster/.*: + cores: 16 + mem: 64 + context: + scratch: 150 + walltime: 336 + + # repeat_annotation_pipeline tools http://toolshed.g2.bx.psu.edu/repos/petr-novak/repeat_annotation_pipeline3 +# toolshed.g2.bx.psu.edu/repos/petr-novak/repeat_annotation_pipeline3/extract_re_contigs/.*: +# cores: 2 +# mem: 10 +# context: +# scratch: 15 +# toolshed.g2.bx.psu.edu/repos/petr-novak/repeat_annotation_pipeline3/compare_gff/.*: +# cores: 2 +# mem: 10 +# context: +# scratch: 15 +# toolshed.g2.bx.psu.edu/repos/petr-novak/repeat_annotation_pipeline3/summarize_gff_by_attribute/.*: +# cores: 2 +# mem: 10 +# context: +# scratch: 15 +# toolshed.g2.bx.psu.edu/repos/petr-novak/repeat_annotation_pipeline3/annotate_contigs/.*: +# cores: 2 +# mem: 10 +# context: +# scratch: 15 + toolshed.g2.bx.psu.edu/repos/petr-novak/repeat_annotation_pipeline3/repeat_annotate/.*: + cores: 32 + mem: 50 + context: + scratch: 50 + walltime: 96 + + # re_utils tools https://toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils + toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/RMsearch2/.*: + cores: 16 + mem: 32 + context: + scratch: 50 + walltime: 96 + toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/chip_seq_ratio_1/.*: + cores: 16 + mem: 32 + context: + scratch: 50 + walltime: 48 + toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/rename_sequences/.*: + context: + scratch: 50 + toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/pairScan/.*: + context: + scratch: 50 + walltime: 48 + toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/single_fastq_filtering/.*: + cores: 6 + context: + scratch: 50 + walltime: 24 + toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/fasta_affixer/.*: + context: + scratch: 50 +# toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/sampler/.*: +# context: +# scratch: 15 +# toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/plot_comparative/.*: +# context: +# scratch: 15 + toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/extract_var_files_from_re/.*: + context: + scratch: 50 + toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/summarize_annotation/.*: + context: + scratch: 50 + toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/names_affixer/.*: + context: + scratch: 50 + toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/cluster_table2krona_format/.*: + context: + scratch: 50 + toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/fasta_input/.*: + context: + scratch: 50 + toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/fasta_interlacer/.*: + context: + scratch: 50 + toolshed.g2.bx.psu.edu/repos/petr-novak/re_utils/paired_fastq_filtering/.*: +# mem: 10 #DEMON: old setting but there was job which used 78GB; the best would be to scale to input size + mem: 50 + context: + scratch: 50 +# walltime: 24 #DEMON: used to be 24h but if input is very big it could take more time, would be great to scale it to input size + walltime: 48 + + # DANTE_ltr tools http://toolshed.g2.bx.psu.edu/repos/petr-novak/dante_ltr +# toolshed.g2.bx.psu.edu/repos/petr-novak/dante_ltr/dante_ltr_summary/.*: +# cores: 2 +# mem: 10 +# context: +# scratch: 15 + toolshed.g2.bx.psu.edu/repos/petr-novak/dante_ltr/clean_dante_ltr/.*: + cores: 32 + mem: 64 + context: + scratch: 64 + walltime: 168 + toolshed.g2.bx.psu.edu/repos/petr-novak/dante_ltr/dante_ltr_search/.*: + cores: 32 + mem: 64 + context: + scratch: 64 + walltime: 168 + toolshed.g2.bx.psu.edu/repos/petr-novak/dante_ltr/dante_ltr_to_library/.*: + cores: 32 + mem: 64 + context: + scratch: 64 + walltime: 168 + + # ReapeatExplorer tools http://toolshed.g2.bx.psu.edu/repos/petr-novak/repeatexplorer2_testing + toolshed.g2.bx.psu.edu/repos/petr-novak/repeatexplorer2_testing/repeatexplorer2/.*: + cores: 10 + mem: 4 + context: + scratch: 50 + walltime: 48 + scheduling: + reject: + - conda + require: + - singularity + container_resolvers: + - type: cached_explicit_singularity + cache_directory: "$SINGULARITY_CACHEDIR" + - type: explicit_singularity + - type: cached_mulled_singularity + cache_directory: "$SINGULARITY_CACHEDIR" + - auto_install: true + type: mulled_singularity + - auto_install: false + cache_directory: /mnt/galaxy-re/singularity/mulled + type: build_mulled_singularity + params: + singularity_default_container_id: "/storage/brno11-elixir/home/galaxyelixir/pulsar-re/files/singularity_cache/cache/library/sha256.660dda926394f3db2400f7800e064cf731c75566853cac43a30be44e3b5f5d73" + env: + SINGULARITY_CACHEDIR: "/storage/brno11-elixir/home/galaxyelixir/pulsar-re/files/singularity_cache" + rules: + - id: queue_definition_by_parameter + if: | + param_dict = job.get_param_values(app) # get job input parameters as dictionary + 'queue_definition' in param_dict and 'queue_specification' in param_dict['queue_definition'] + cores: | + import re + int(re.search(r'ncpus=(\d)+', job.get_param_values(app)['queue_definition']['queue_specification']).group(0).split('=')[1]) + mem: | + import re + int(re.search(r'mem=(\d)+', job.get_param_values(app)['queue_definition']['queue_specification']).group(0).split('=')[1]) + context: + scratch: | + import re + int(re.search(r'scratch_local=(\d)+', job.get_param_values(app)['queue_definition']['queue_specification']).group(0).split('=')[1]) + walltime: | + import re + int(re.search(r'walltime=(\d)+', job.get_param_values(app)['queue_definition']['queue_specification']).group(0).split('=')[1]) + - id: basic_fast_queue_selected + if: | + param_dict = job.get_param_values(app) # get job input parameters as dictionary + 'queue_select' in param_dict and param_dict['queue_select'].startswith('basic_fast_queue') + cores: 10 + mem: 16 + context: + scratch: 50 + walltime: 48 + - id: long_slow_queue_selected + if: | + param_dict = job.get_param_values(app) # get job input parameters as dictionary + 'queue_select' in param_dict and param_dict['queue_select'].startswith('long_slow_queue') + cores: 16 + mem: 64 + context: + scratch: 50 + walltime: 336 + - id: extra_long_slow_queue_selected + if: | + param_dict = job.get_param_values(app) # get job input parameters as dictionary + 'queue_select' in param_dict and param_dict['queue_select'].startswith('extra_long_slow_queue') + cores: 16 + mem: 64 + context: + scratch: 50 + walltime: 720 + + toolshed.g2.bx.psu.edu/repos/petr-novak/repeatexplorer2_testing/tarean/.*: + inherits: toolshed.g2.bx.psu.edu/repos/petr-novak/repeatexplorer2_testing/repeatexplorer2/.* diff --git a/galaxy.yml b/galaxy.yml index bf0d956d..bb34c2e1 100644 --- a/galaxy.yml +++ b/galaxy.yml @@ -80,11 +80,11 @@ fstype: xfs opts: rw,_netdev state: mounted - - name: Create galaxy mutable data directory + - name: Create RBD data directory file: owner: "{{ galaxy_user_name }}" group: "{{ galaxy_user_group_name }}" - path: "{{ galaxy_mutable_data_dir }}" + path: "{{ rbd_data_dir }}" state: directory mode: '0755' @@ -100,6 +100,39 @@ - role: galaxyproject.postgresql_objects become: true become_user: postgres + post_tasks: + - name: Create pg_dump backup folder if needed + file: + path: "{{ postgresql_backup_dir }}/pg_dump" + state: directory + owner: postgres + group: "{{ galaxy_user_group_name }}" + mode: 0750 + - name: Create initial empty pg_dump file if needed # otherwise the following logrotate conf will not work + file: + path: "{{ postgresql_backup_dir }}/pg_dump/{{ postgresql_pg_dump_prefix }}.sql.gz" + state: touch + owner: postgres + group: "{{ galaxy_user_group_name }}" + mode: 0640 + - name: Set-up Galaxy DB backup using pg_dump and logrotate + ansible.builtin.blockinfile: + path: "/etc/logrotate.d/{{ postgresql_pg_dump_prefix }}" + create: true + block: | + {{ postgresql_backup_dir }}/pg_dump/{{ postgresql_pg_dump_prefix }}.sql.gz { + daily + missingok + rotate 14 + nocompress + nocreate + postrotate + sudo -u postgres pg_dump {{ galaxy_db_name }} --file={{ postgresql_backup_dir }}/pg_dump/{{ postgresql_pg_dump_prefix }}.sql --verbose 2>&1 | logger -t {{ postgresql_pg_dump_prefix }} + echo "calling: postgres gzip {{ postgresql_backup_dir }}/pg_dump/{{ postgresql_pg_dump_prefix }}.sql" && sudo -u postgres gzip {{ postgresql_backup_dir }}/pg_dump/{{ postgresql_pg_dump_prefix }}.sql 2>&1 | logger -t {{ postgresql_pg_dump_prefix }} + echo "calling: chown postgres:{{ galaxy_user_group_name }} {{ postgresql_backup_dir }}/pg_dump/{{ postgresql_pg_dump_prefix }}.sql" && chown postgres:{{ galaxy_user_group_name }} {{ postgresql_backup_dir }}/pg_dump/{{ postgresql_pg_dump_prefix }}.sql 2>&1 | logger -t {{ postgresql_pg_dump_prefix }} + echo "calling: chmod 640 {{ postgresql_backup_dir }}/pg_dump/{{ postgresql_pg_dump_prefix }}.sql" && chmod 640 {{ postgresql_backup_dir }}/pg_dump/{{ postgresql_pg_dump_prefix }}.sql 2>&1 | logger -t {{ postgresql_pg_dump_prefix }} + endscript + } - hosts: noletsencrypt become: true @@ -151,7 +184,7 @@ when: admin_ssh_keys - name: Install Dependencies package: - name: ['acl', 'bzip2', 'git', 'make', 'tar', 'python3-bioblend', 'python3-venv', 'python3-setuptools', 'python3-pip', 'python3-psycopg2', 'rsync', 'python3-docker', 'python3-passlib', 'nginx-full', 'logrotate', 'proftpd-mod-ldap', 'squashfs-tools', 'krb5-user'] # krb5-user is neccessary only if you need to mount NFS storage + name: ['acl', 'bzip2', 'git', 'make', 'tar', 'python3-bioblend', 'python3-venv', 'python3-setuptools', 'python3-pip', 'python3-psycopg2', 'rsync', 'python3-docker', 'python3-passlib', 'nginx-full', 'logrotate', 'proftpd-mod-ldap', 'squashfs-tools', 'libldap2-dev', 'libsasl2-dev']#, 'krb5-user'] # krb5-user is neccessary only if you need to mount NFS storage - name: Install RHEL/CentOS/Rocky specific dependencies package: name: ['tmpwatch'] @@ -198,9 +231,9 @@ - usegalaxy_eu.apptainer - galaxyproject.galaxy - usegalaxy_eu.tpv_auto_lint - - role: galaxyproject.miniconda - become: true - become_user: "{{ galaxy_user_name }}" +# - role: galaxyproject.miniconda +# become: true +# become_user: "{{ galaxy_user_name }}" - geerlingguy.redis - role: usegalaxy_eu.flower when: enable_flower | bool @@ -216,6 +249,22 @@ when: enable_telegraf | bool post_tasks: + - name: Add Nginx warning about maintenance + ansible.builtin.copy: + src: "{{ playbook_dir }}/files/nginx/warning.html" + dest: "/var/www/html/warning.html" + owner: www-data + group: www-data + mode: '0644' + + - name: Configure ProFTPd LDAP option + template: + src: "{{ lookup('first_found', ['templates/'+inventory_hostname+'/config/proftpd_ldap.conf.j2', 'templates/galaxy/config/proftpd_ldap.conf.j2']) }}" + dest: "{{ proftpd_config_include_dir }}/06_ldap.conf" + backup: yes + notify: + - reload proftpd + - name: Adds nginx's www-data user into galaxy user group ansible.builtin.user: name: www-data @@ -233,16 +282,32 @@ virtualenv: "{{ galaxy_venv_dir }}" when: "inventory_hostname in ['galaxy-qa1.galaxy.cloud.e-infra.cz','usegalaxy.cz']" - - name: Creates entry in crontab "chmod on _files for ngnix access" + #DEMON: cleanup jobs from RE (maybe not needed) + - name: Creates entry in crontab "tmpreaper call in tus upload dir" ansible.builtin.cron: - name: "chmod on _files for ngnix access" - minute: "2" - hour: "*" # 2nd minute every hour - #DEMON: zvazit ci nepouzit find /rbd/data/datasets/*/*/*/dataset_*_files -type f ! -perm /g+rw -exec chmod g+rw '{}' ';' - job: "/usr/bin/find {{ galaxy_config.galaxy.file_path }}/*/*/*/dataset_*_files -type d -mmin -180 -maxdepth 0 -exec chmod -R g+rw '{}' ';'" + name: "tmpreaper in tus upload dir" + minute: "5" + hour: "*" + job: "/usr/sbin/tmpreaper --verbose=0 --showdeleted --all --mtime --mtime-dir --runtime=600 24h {{ galaxy_tus_upload_store }} >> {{ galaxy_data_dir }}/cleaning_tus_upload_dir.log" become: yes become_user: "{{ galaxy_user_name }}" - tags: cron + - name: Creates entry in crontab "tmpreaper call in galaxy tmp dir" + ansible.builtin.cron: + name: "tmpreaper in galaxy temp dir" + minute: "7" + hour: "*" + job: "/usr/sbin/tmpreaper --verbose=0 --showdeleted --all --mtime --mtime-dir --runtime=600 24h {{ galaxy_data_dir }}/tmp >> {{ galaxy_data_dir }}/cleaning_galaxy_temp_dir.log" + become: yes + become_user: "{{ galaxy_user_name }}" +# - name: Creates entry in crontab "tmpreaper call in galaxy jobs dir" +# ansible.builtin.cron: +# name: "tmpreaper in galaxy jobs dir" +# minute: "9" +# hour: "*" +# job: "/usr/sbin/tmpreaper --verbose=0 --showdeleted --all --mtime --mtime-dir --runtime=600 40d {{ galaxy_data_dir }}/jobs >> {{ galaxy_data_dir }}/cleaning_galaxy_jobs_dir.log" +# become: yes +# become_user: "{{ galaxy_user_name }}" + - name: Setup gxadmin cleanup task ansible.builtin.cron: @@ -250,7 +315,7 @@ user: "{{ galaxy_user_name }}" minute: "0" hour: "0" # midnight daily - job: "GALAXY_LOG_DIR=/tmp/gxadmin/ GALAXY_ROOT={{ galaxy_root }}/server /usr/local/bin/gxadmin galaxy cleanup 60" + job: "GALAXY_LOG_DIR=/tmp/gxadmin/ GALAXY_ROOT={{ galaxy_root }}/server /usr/local/bin/gxadmin galaxy cleanup 60 >> {{ galaxy_data_dir }}/cleaning_gxadmin_cleanup.log" tags: cron - name: Create a file with key for CRON jobs @@ -266,7 +331,7 @@ no_log: true # set up cron to propagate einfra users to einfra galaxy group - - name: Ensure the user_group cron script directory exists + - name: Ensure the user_group directory exists ansible.builtin.file: path: "{{ galaxy_root }}/cron/user_group" state: directory @@ -275,7 +340,7 @@ mode: '0755' when: "'usegalaxy.cz' in inventory_hostname" tags: cron - - name: Copy user - group association script + - name: Copy user-group association script ansible.builtin.copy: src: "{{ playbook_dir }}/extra_scripts/add_group_users.py" dest: "{{ galaxy_root }}/cron/user_group/add_group_users.py" @@ -290,7 +355,7 @@ append: yes when: "'usegalaxy.cz' in inventory_hostname" tags: cron - - name: Setup user - group association rutine + - name: Setup user-group association rutine ansible.builtin.cron: name: "Add E-infra users to E-infra group" user: postgres @@ -358,12 +423,15 @@ tags: cron when: "inventory_hostname in ['galaxy-qa1.galaxy.cloud.e-infra.cz', 'usegalaxy.cz', 'galaxy-umsa.grid.cesnet.cz']" - - - name: RE Galaxy instance patch in lib/galaxy/webapps/galaxy/api/job_files.py - replace: - path: "{{ galaxy_root }}/server/lib/galaxy/webapps/galaxy/api/job_files.py" - regexp: '^(\s*?)shutil\.move\(input_file\.name,\s*path\)\s*$' - replace: '\1os.chmod(shutil.move(input_file.name, path), 0o664)' + - name: Set-up pre-defined integrated_tool_panel config file on RE instance only + ansible.builtin.copy: + src: "{{ playbook_dir }}/files/{{ inventory_hostname }}/regalaxy_integrated_tool_panel.xml" + dest: "{{ galaxy_mutable_config_dir }}/integrated_tool_panel.xml" + owner: "{{ galaxy_user_name }}" + group: "{{ galaxy_user_group_name }}" + mode: '0644' + backup: true + when: "inventory_hostname in ['repeatexplorer-elixir.cerit-sc.cz', 'galaxy-re.grid.cesnet.cz']" - name: Add lines to logrotate config of ProFTPd lineinfile: @@ -372,6 +440,7 @@ insertbefore: BOF with_items: - /var/log/proftpd/tls.log + - /var/log/proftpd/ldap.log - /var/log/proftpd/sql.log - name: Add pulsar public ssh key diff --git a/group_vars/dbservers.yml b/group_vars/dbservers.yml index cb3183b2..219a889a 100644 --- a/group_vars/dbservers.yml +++ b/group_vars/dbservers.yml @@ -8,7 +8,7 @@ postgresql_objects_databases: - name: "{{ galaxy_db_name }}" owner: "{{ galaxy_user_name }}" postgresql_objects_privileges: - - database: galaxy + - database: "{{ galaxy_db_name }}" roles: telegraf privs: SELECT objs: ALL_IN_SCHEMA @@ -36,3 +36,4 @@ postgresql_objects_privileges: # # PostgreSQL Backups postgresql_backup_dir: "{{ galaxy_mutable_data_dir }}/backups" +postgresql_pg_dump_prefix: galaxy_db_backup diff --git a/group_vars/galaxyservers.yml b/group_vars/galaxyservers.yml index e9da4d92..2a6bf983 100644 --- a/group_vars/galaxyservers.yml +++ b/group_vars/galaxyservers.yml @@ -2,6 +2,7 @@ # defaults for host-specific vars csnt_brand: "" csnt_contact_email: "galaxy@cesnet.cz" +csnt_galaxy_url_prefix: '' csnt_short_term_storage_dir: short_term_web_storage csnt_enable_account_interface: true csnt_log_level: WARNING @@ -10,10 +11,13 @@ csnt_enable_notification_system: false csnt_enable_oidc: true csnt_oidc_config_file: "{{ galaxy_config_dir }}/oidc_config.xml" csnt_oidc_backends_config_file: "{{ galaxy_config_dir }}/oidc_backends_config.xml" +csnt_auth_config_file: "{{ galaxy_config_dir }}/auth_conf.xml" +csnt_smtp_server: "rs.cesnet.cz:25" csnt_enable_reports: false csnt_edam_panel_views: "" csnt_default_panel_view: default csnt_registered_user_jobs_limit: 10 +csnt_jobs_output_size_limit: 50GB csnt_tool_config_file: - "{{ galaxy_config_dir }}/tool_conf.xml" - "{{ galaxy_config_dir }}/local_tool_conf.xml" @@ -26,6 +30,13 @@ csnt_galaxy_tmpclean_dirs: - "{{ galaxy_config.galaxy.new_file_path }}" - "{{ galaxy_tus_upload_store if galaxy_config.gravity.tusd.enable else ' ' }}" csnt_require_login: true +csnt_toolbox_auto_sort: true +csnt_watch_job_rules: auto +csnt_retry_job_output_collection: 3 +csnt_gunicorn_workers: 2 +csnt_celery_concurrency: 2 +csnt_celery_memory_limit: 2 +csnt_handlers_processes: 2 admin_ssh_keys: false enable_telegraf: false @@ -46,9 +57,10 @@ galaxy_mutable_config_dir: "{{ galaxy_root }}/var/config" galaxy_gravity_state_dir: "{{ galaxy_root }}/var/gravity" galaxy_tool_dependency_dir: "{{ galaxy_root }}/var/dependencies" galaxy_user: {name: "{{ galaxy_user_name }}", shell: /bin/bash} -galaxy_commit_id: release_24.2 +galaxy_commit_id: release_25.0 galaxy_force_checkout: true galaxy_job_config_file: "{{ galaxy_config_dir }}/galaxy.yml" +galaxy_data_dir: "{{ galaxy_mutable_data_dir }}" # Miniconda miniconda_prefix: "{{ galaxy_tool_dependency_dir }}/_conda" @@ -66,7 +78,7 @@ galaxy_job_config: workers: 4 pulsar_tpv_runner: load: galaxy.jobs.runners.pulsar:PulsarMQJobRunner - galaxy_url: "https://{{ rabbitmq_hostname }}" + galaxy_url: "https://{{ rabbitmq_hostname }}{{ csnt_galaxy_url_prefix }}" amqp_url: "pyamqp://{{ pulsar.user_name }}:{{ rabbitmq_users_password.pulsar }}@{{ rabbitmq_hostname }}:5671/pulsar?ssl=1" amqp_acknowledge: true amqp_ack_republish_time: 1200 @@ -102,7 +114,7 @@ galaxy_job_config: - type: anonymous_user_concurrent_jobs value: 1 - type: output_size - value: 50GB + value: "{{ csnt_jobs_output_size_limit }}" tools: - class: local # these special tools that aren't parameterized for remote execution - expression tools, upload, etc environment: local_env @@ -110,17 +122,18 @@ galaxy_job_config: galaxy_config: galaxy: # Main Configuration - # To not bother the main disk new_file_path: "{{ galaxy_mutable_data_dir }}/tmp" object_store_config_file: "{{ galaxy_config_dir }}/object_store_conf.xml" + auth_config_file: "{{ csnt_auth_config_file }}" enable_oidc: "{{ csnt_enable_oidc }}" - oidc_config_file: "{{ csnt_oidc_config_file }}" - oidc_backends_config_file: "{{ csnt_oidc_backends_config_file }}" + oidc_config_file: "{{ csnt_oidc_config_file if csnt_enable_oidc else '' }}" + oidc_backends_config_file: "{{ csnt_oidc_backends_config_file if csnt_enable_oidc else '' }}" logo_src: "https://www.e-infra.cz/img/logo.svg" themes_config_file: "{{ galaxy_config_dir }}/themes.yml" admin_users: "{{ vault_admin_users }}" + galaxy_url_prefix: "{{ csnt_galaxy_url_prefix }}" cleanup_job: onsuccess - smtp_server: "rs.cesnet.cz:25" + smtp_server: "{{ csnt_smtp_server }}" error_email_to: "{{ csnt_contact_email }}" allow_user_creation: false require_login: "{{ csnt_require_login }}" @@ -135,6 +148,7 @@ galaxy_config: tool_config_file: "{{ csnt_tool_config_file }}" tool_sheds_config_file: "{{ csnt_tool_sheds_config_file }}" sanitize_allowlist_file: "{{ galaxy_mutable_config_dir }}/sanitize_allowlist.txt" + toolbox_auto_sort: "{{ csnt_toolbox_auto_sort }}" # SQL Performance slow_query_log_threshold: 5 enable_per_request_sql_debugging: true @@ -144,7 +158,7 @@ galaxy_config: brand: "{{ csnt_brand }}" enable_account_interface: "{{ csnt_enable_account_interface }}" enable_notification_system: "{{ csnt_enable_notification_system }}" - watch_job_rules: 'auto' + watch_job_rules: "{{ csnt_watch_job_rules }}" allow_path_paste: "{{ csnt_allow_path_paste }}" enable_quotas: true allow_user_deletion: "{{ csnt_allow_user_deletion }}" @@ -157,7 +171,7 @@ galaxy_config: panel_views_dir: "{{ galaxy_config_dir }}/plugins/activities" file_source_templates_config_file: "{{ galaxy_config_dir }}/file_source_templates.yml" # NFS workarounds - retry_job_output_collection: 3 + retry_job_output_collection: "{{ csnt_retry_job_output_collection }}" # Debugging allow_user_impersonation: true log_level: "{{ csnt_log_level }}" @@ -165,27 +179,19 @@ galaxy_config: outputs_to_working_directory: true new_user_dataset_access_role_default_private: true # Make datasets private by default # TUS - galaxy_infrastructure_url: "https://{{ inventory_hostname }}" + galaxy_infrastructure_url: "https://{{ inventory_hostname }}{{ csnt_galaxy_url_prefix }}" tus_upload_store: "{{ galaxy_tus_upload_store }}" # CVMFS tool_data_table_config_path: - /cvmfs/data.galaxyproject.org/byhand/location/tool_data_table_conf.xml - /cvmfs/data.galaxyproject.org/managed/location/tool_data_table_conf.xml # Tool Dependencies + dependency_resolvers_config_file: "{{ galaxy_config_dir }}/dependency_resolvers_conf.xml" container_resolvers: - type: explicit_singularity - type: cached_mulled_singularity cache_directory: /cvmfs/singularity.galaxyproject.org/all/ cache_directory_cacher_type: dir_mtime - # dependency_resolvers: - # - type: conda - # - type: tool_shed_packages - # - type: galaxy_packages - # - type: galaxy_packages - # versionless: true - # - type: conda - # versionless: true - # Data Library Directories library_import_dir: "{{ csnt_library_import_dir }}" user_library_import_dir: "{{ csnt_user_library_import_dir }}" @@ -209,7 +215,7 @@ galaxy_config: # listening options bind: "unix:{{ galaxy_mutable_config_dir }}/gunicorn.sock" # performance options - workers: 2 + workers: "{{ csnt_gunicorn_workers }}" # Other options that will be passed to gunicorn # This permits setting of 'secure' headers like REMOTE_USER (and friends) # https://docs.gunicorn.org/en/stable/settings.html#forwarded-allow-ips @@ -222,8 +228,8 @@ galaxy_config: enable: true queues: celery,galaxy.internal,galaxy.external pool: threads - memory_limit: 2 - concurrency: 2 + memory_limit: "{{ csnt_celery_memory_limit }}" + concurrency: "{{ csnt_celery_concurrency }}" loglevel: DEBUG tusd: enable: true @@ -231,7 +237,7 @@ galaxy_config: upload_dir: "{{ galaxy_tus_upload_store }}" handlers: handler: - processes: 2 + processes: "{{ csnt_handlers_processes }}" pools: - job-handlers - workflow-schedulers @@ -243,6 +249,8 @@ galaxy_config: galaxy_config_files_public: + - src: files/galaxy/config/sanitize_allowlist.txt + dest: "{{ galaxy_config.galaxy.sanitize_allowlist_file }}" - src: templates/{{ inventory_hostname }}/static/welcome.html dest: "{{ galaxy_mutable_config_dir }}/welcome.html" - src: files/galaxy/static/usegalaxycz_straight.svg @@ -267,10 +275,15 @@ galaxy_config_templates: dest: "{{ tpv_mutable_dir }}/tpv_rules_meta.yml" - src: "templates/galaxy/config/vault_conf.yml.j2" dest: "{{ galaxy_config_dir }}/vault_conf.yml" + - src: templates/galaxy/config/dependency_resolvers_conf.xml.j2 + dest: "{{ galaxy_config.galaxy.dependency_resolvers_config_file }}" - src: "{{ lookup('first_found', ['templates/'+inventory_hostname+'/config/file_source_templates.yml.j2', 'templates/galaxy/config/file_source_templates.yml.j2']) }}" dest: "{{ galaxy_config_dir }}/file_source_templates.yml" + - src: "{{ lookup('first_found', ['templates/'+inventory_hostname+'/config/auth_conf.xml.j2', 'templates/galaxy/config/auth_conf.xml.j2']) }}" + dest: "{{ galaxy_config.galaxy.auth_config_file }}" galaxy_extra_dirs: + - "{{ galaxy_data_dir }}" - "{{ tpv_config_dir }}" - "{{ galaxy_config_dir }}/plugins/activities" @@ -342,7 +355,7 @@ nginx_conf_ssl_certificate_key: /etc/letsencrypt/live/{{ inventory_hostname }}/p #Install pip docker package for ansible pip_install_packages: - - name: docker + - docker # RabbitMQ rabbitmq_hostname: "{{ inventory_hostname }}" @@ -356,7 +369,6 @@ rabbitmq_plugins: # ok for noletsencrypt #rabbitmq_conf_ssl_certificate: /etc/ssl/certs/cert.pem - rabbitmq_conf_ssl_certificate: /etc/ssl/certs/fullchain.pem rabbitmq_conf_ssl_certificate_key: /etc/ssl/user/privkey-999:999.pem @@ -477,8 +489,6 @@ proftpd_options: - Port: 21 proftpd_sql_db: galaxy@/var/run/postgresql proftpd_sql_user: galaxy -#proftpd_conf_ssl_certificate: /etc/ssl/certs/cert.pem -#proftpd_conf_ssl_certificate_key: /etc/ssl/user/privkey-proftpd.pem proftpd_conf_ssl_certificate: /etc/letsencrypt/live/{{ inventory_hostname }}/cert.pem proftpd_conf_ssl_certificate_key: /etc/letsencrypt/live/{{ inventory_hostname }}/privkey.pem proftpd_global_options: diff --git a/group_vars/production.yaml b/group_vars/production.yaml index b0af65ed..2b39cd02 100644 --- a/group_vars/production.yaml +++ b/group_vars/production.yaml @@ -1,2 +1,3 @@ rbd_mount_point: /data +rbd_data_dir: "{{ rbd_mount_point }}/galaxy" rbd_cluster_code: CL4 diff --git a/host_vars/galaxy-qa1.galaxy.cloud.e-infra.cz/vars.yml b/host_vars/galaxy-qa1.galaxy.cloud.e-infra.cz/vars.yml index aaaf92cb..68f9724a 100644 --- a/host_vars/galaxy-qa1.galaxy.cloud.e-infra.cz/vars.yml +++ b/host_vars/galaxy-qa1.galaxy.cloud.e-infra.cz/vars.yml @@ -9,7 +9,7 @@ csnt_edam_panel_views: operations,topics csnt_default_panel_view: all_tools shed_tools_shadowing: true csnt_require_login: true -csnt_registered_user_jobs_limit: 1000 +csnt_registered_user_jobs_limit: 100 pulsar: user_name: galaxy-qa1 diff --git a/host_vars/galaxy-qa2.galaxy.cloud.e-infra.cz/vars.yml b/host_vars/galaxy-qa2.galaxy.cloud.e-infra.cz/vars.yml index 4ed0dfe9..c0435ac2 100644 --- a/host_vars/galaxy-qa2.galaxy.cloud.e-infra.cz/vars.yml +++ b/host_vars/galaxy-qa2.galaxy.cloud.e-infra.cz/vars.yml @@ -5,7 +5,7 @@ csnt_brand: QA2-TEST # csnt_enable_account_interface: false csnt_log_level: DEBUG csnt_enable_notification_system: true -csnt_registered_user_jobs_limit: 1000 +csnt_registered_user_jobs_limit: 100 pulsar: user_name: galaxy-qa1 diff --git a/host_vars/galaxy-re.grid.cesnet.cz/secret.yml b/host_vars/galaxy-re.grid.cesnet.cz/secret.yml new file mode 100644 index 00000000..3207edd3 --- /dev/null +++ b/host_vars/galaxy-re.grid.cesnet.cz/secret.yml @@ -0,0 +1,106 @@ +$ANSIBLE_VAULT;1.1;AES256 +35626631323763643938626366363165386262386133623038623236653231323737316366663537 +3132653761646564623938316438346437636432373638350a663430346338613961346464646130 +38313663353062343935343664393934306333346635663265363333623133343531303462383638 +6230373164353036370a393365623933333666613537646335303030303863633865303230323834 +33383866356632623532383234363035333266316436643538313135643234366631363262343437 +38396362643330653137646361353261613966376636646431303234623338613965656330383165 +33646261613738366531346164326365323735373166306432353564323635383461376664393731 +63653862393066353833383333396136663231366165646130336334623932306632646666353531 +65343035343438303937323939633439396530363863663630383933366332636432373539636535 +37323435623630333032303563343933366538333962366465636137323838356364373633313031 +30623833396565353633623662643636623962656338626562636465666130313962353864633363 +65353634386639303739363735313339343137323262313961366236396566313162393066316638 +37366436336462386639646534393831346236373264633463633837636134363765623938326534 +61386164393963636465336533656534663637643735323330316230323735353863663835326234 +65613662353333343964383934643334393033373932323539653531313966653562646635623534 +65383639653863646261656461656164303166663563336436626139346465646464303565633661 +64313635336566366661336261373232373830626464373937313663323033643963393764363739 +66613832343939333532303332336630626637333164383238396639396632316564313138393630 +38363838643230623062626264616266643564623266353834303162376664643162656130616564 +34366635666336646161613236316536313337656461356164313866393466653665633931343962 +30313338313363373832373838373739333933336663663638383061616635333766383138633833 +38366461303263336439643466316637626132313237386535346538636362636534373338613439 +62323238356638383433653235396566346537353762313837346561633638376237343731616632 +39396336376139633435323633633466336430626335383764386161326566636132396562646465 +34613762323932326331356465643139656138356234646166343263383764643362653363626530 +38633433636462626161356434623231653939383662363935646338346131373731656433303036 +65363061663239636538616630353638633462313931623637356636303563313263623863643161 +63616134343539373839643438336539616166663261376465316232636338343732616663373639 +32333639623636363533396138393235343739323935343662316233316631313237316533346338 +66323231633961623637623161376261663030346164363831326463643866613238653065656465 +39306461626363376431376533376630643437656464303265363638623730656630313763623637 +63393434366164643863313935363162383032613031376133633563376666343266663132613138 +66353663356664366637366530356334333337363466353035343263636331626133333464323638 +33353862653736316665366438663965376237333433616164626435313037393239623438636236 +61323339306566363135343862646562613337643537326262306562613864613163353963343035 +36396466663432323333373734346230663837383733623762336361373366363963333934386634 +66393831393764353934653439383434336464646133323739386633663466376535616632396461 +64336539323461626364353534653362613861373037323862643331313061663761643630666461 +37616165326565306239343734656166393464326138646131653035393032316366373630613764 +65333866303464663733393131373464613136643934643266343932343331303262663562323564 +62663362653032666234313839303231316434306534396434356234643437613065623237643765 +37626161393139636363336435646365663166376234653462646262313530626164633030663635 +37353032643533323934626231336135366462653735636565356565623164626361333166393332 +65343465373733636330326231656332383763396632363334303364653932316665336561376434 +64623031646533636362316665663462643362393434623239313566666138653830326531356563 +35383232656461616261646564343637353733393535333262623937623066656662353261303236 +37326530343365623463353138306363396533383532636137313064326436313335333931333636 +35393162613032363731303561616561373163306564306130656531383636373661646664303832 +39333830623862383537316138623235343161313437363864363764666163383161356565346335 +31393137383135346531363363303461326131376530346136633337383832383262633933623961 +65303534323462663936373239656265353364396338653963363535333734613832346239613135 +62633362613631306231383237653865306636373262653032326366373065356266393031393238 +61346265373137643031363261623763366436656463636562653136353765316636333864376635 +32633437643161386166303566343064393638346533636636626531363966323334356361633065 +30323464366630663230393131383362306661363534356237383634663962646231363836643734 +34393063306561633662383539373632303663663861653662316662346135323838356533303230 +64353039343930656265643039346338386538646238663834323663386632343065653933366664 +30626636323565353737653438313133393135323733663339346238663536336535393166303835 +38386563356363623963366236383238353435636265393665613064336265386435383632313430 +33616432643961393434653838626238646438353135616230646466623032623534343037643861 +62623766336364656265663839653565616164373831636436366535323039383537333537623638 +31306166663732316466336266646461343637376231303433386362333232643632656164356563 +33356638643663356632616163666437356534353761653333366161326563393765343933646365 +37643233613438613030616130333061666132623838396464376436346234613131366561343333 +63373762323033613239326566376534613737623033633834373231346166336564646664386233 +35386333303939363535373537313862393661393138356465656539373138333734643662303765 +32613462363032626438353264306566626465616232663666653334303839663664646239613237 +30666331626361346661376261333435623536646361313333613630616665656239363261663635 +62313461353564656565356361653238663764643330326630343931623735333861393737663030 +31353330623838613836363433316461306565616231373263313965346465633862373835616462 +61613533613565653762663266313539383338643638336262636331613663653539363736353336 +39623362316161646461636235366130633837306539633332313135326163313966383838636339 +38643464383230643835323830353638373665383230633737353262313634646266623164653461 +61613633373834323934313038616265373130643230623336333262383238343939393365633834 +30333062616666353239306435306461616161363730306564393939653739326634663739343031 +62306362643730636161626531663762393163396461346432316431623739353733373162366538 +32633863376432386665343033613934393963343066623838646439636332363365363165383732 +63333661636666346663623561616133316339356263353764653432306535326564363437363131 +31333238316533643763326264363164663938326564356531626564393463663664386166643634 +36376431323539346163343664623636306362326465353362343561306439373863626134396666 +61646638393032616338383764626662313434633864386336643963623365313132343039326332 +63383638613031373864383938383961346164306131633464623336666466613334326336653430 +64656263316137373132313038656461316262366331343466363266653331356634393363376235 +35636631643634383038356133363934623738636638303764656238303664326139353561363539 +31313239366134653635303437383739623731646437643035616430356437356237393361663437 +66616462666132626630363138396663313031363265613939656337656365636239386537316163 +66663939633862333065656632366430613635303834613162316632653964643033343333306464 +61353032363637366237656538373865383038666463396362653035646365373966663735333263 +61326433373130336165656438383765396231326539613362373063303662353463386132396266 +31613866386437613938326230656666663536393832626263626263346333373630663834326235 +62653831386537386166626434366433633731366361623463363861383966653133326235626437 +63396331616438303733383737346463643534343938336634323563356666663337323366623066 +33323130346339336439623835616430303531376161313265303330323137386466316361356132 +61346265363765316534393836313139376664383837643034616237393731633637616562646633 +66383632396262386637356461613637663064636437616261613238393233383836666539323237 +63363039383331643366316132343830643536303335373261623531613238643061383462353732 +30306437653335363663356632653764643131313332393035333339366438663331323231353332 +32663130336362336337623563613438313233623034346539333639336165353739313363653437 +33353439326630666464636165613631376633323364613262636336323131363931326438356238 +39356563333665343637666339666638643038333639623132663934393134353532363234363866 +66363236646332383963343965333437626435666431303564376464386266313536626634646139 +30393034646539623161386635623463633433383961653266386434336537626263326330346661 +63376532323633346132306664656263353132323036646438346437313463336235636634346239 +31623166336135303930363933366536633862363936356264383333326164653863633561313063 +62643633316134343537636437633464376661356331393231306230623364393562 diff --git a/host_vars/galaxy-re.grid.cesnet.cz/vars.yml b/host_vars/galaxy-re.grid.cesnet.cz/vars.yml new file mode 100644 index 00000000..141cb125 --- /dev/null +++ b/host_vars/galaxy-re.grid.cesnet.cz/vars.yml @@ -0,0 +1,148 @@ +galaxy_data_dir: "/mnt/galaxy-re" +galaxy_mutable_data_dir: "{{ galaxy_data_dir }}" +#galaxy_mutable_data_dir: "{{ rbd_mount_point }}/galaxy" +csnt_galaxy_url_prefix: "/galaxy" + +csnt_brand: RepeatExplorer +csnt_contact_email: regalaxy@rt.cesnet.cz +csnt_log_level: DEBUG +csnt_enable_notification_system: true +csnt_short_term_storage_dir: "{{ galaxy_mutable_data_dir }}/short_term_web_storage" +csnt_registered_user_jobs_limit: 4 +csnt_jobs_output_size_limit: 250GB +csnt_tool_config_file: +- "{{ galaxy_config_dir }}/local_tool_conf.xml" +- "{{ galaxy_root }}/server/config/tool_conf.xml.sample" +#csnt_edam_panel_views: operations,topics +#csnt_default_panel_view: all_tools +csnt_allow_path_paste: true +csnt_allow_user_deletion: true +csnt_enable_oidc: false +csnt_auth_config_file: "{{ galaxy_config_dir }}/auth_conf.xml" +csnt_toolbox_auto_sort: false +csnt_contact_email: regalaxy@rt.cesnet.cz +csnt_watch_job_rules: 'polling' # used to be auto +csnt_retry_job_output_collection: 5 +csnt_gunicorn_workers: 9 +csnt_handlers_processes: 4 +csnt_celery_memory_limit: 4 +csnt_celery_concurrency: 8 + +enable_tiaas: false +shed_tools_shadowing: false + +galaxy_user_name: galaxyelixir +galaxy_user_id: 2469 +galaxy_user_group_name: galaxyelixir +galaxy_user_group_gid: 10145 +galaxy_db_name: galaxyelixir + +galaxy_user_group: + name: "{{ galaxy_user_group_name }}" + gid: "{{ galaxy_user_group_gid }}" +galaxy_user: + name: "{{ galaxy_user_name }}" + uid: "{{ galaxy_user_id }}" + group: "{{ galaxy_user_group.name }}" + shell: /bin/bash + +galaxy_users_domain: repeatexplorer-elixir.cerit-sc.cz + +extra_certbot_domains: + - "{{ galaxy_users_domain }}" + - galaxyelixir.vm.cesnet.cz + +#galaxy_commit_id: 72070dbd0a6d0f418d0b8f914825ea2b8e6a0a88 +galaxy_commit_id: release_25.0 +galaxy_build_client: false + +galaxy_systemd_nofile_limit: 150000 + +# Postgresql DB backup using dump is not implemented in main branch (find the code in galaxy-re branch) +#postgresql_pg_dump_prefix: galaxy_db_backup +postgresql_backup_local_dir: "{{ galaxy_data_dir }}/backups/scripts" + +miniconda_prefix: "{{ galaxy_tool_dependency_dir }}/conda" +miniconda_version: 23.5.2 # 23.5.0 # 4.12.0 +miniconda_channels: ['conda-forge', 'bioconda', 'iuc', 'r', 'anaconda', 'petrnovak', 'defaults'] +miniconda_base_env_packages: ['mamba'] + +pulsar: + user_name: galaxyelixir + nfs_home: brno11-elixir + nfs_prefix: pulsar-re + pbs_queue: galaxyre + pbs_gpu_queue: galaxy_gpu + +#Install pip docker package for ansible +pip_install_packages: + - docker + - python-ldap + +galaxy_config_files: + - src: files/galaxy/themes.yml + dest: "{{ galaxy_config.galaxy.themes_config_file }}" + - src: "files/{{ inventory_hostname }}/tpv_rules_local.yml" + dest: "{{ tpv_mutable_dir }}/tpv_rules_{{ inventory_hostname }}.yml" + - src: "{{ lookup('first_found', ['files/'+inventory_hostname+'/config/tool_conf.xml', 'files/galaxy/config/tool_conf.xml']) }}" + dest: "{{ galaxy_config_dir }}/tool_conf.xml" + - src: files/galaxy/config/oidc_config.xml + dest: "{{ galaxy_config_dir }}/oidc_config.xml" + - src: "files/{{ inventory_hostname }}/all_tools.yml" + dest: "{{ galaxy_config_dir }}/plugins/activities/all_tools.yml" + +rabbitmq_vhosts: + - pulsar # DEMON: used to be /pulsar and Pulsar config must be changed before (or right after) the change is deployed + - galaxy_internal + +tusd_instances: + - name: uploads + # user that tusd will run as + user: "{{ galaxy_user.name }}" + # group that tusd will run as + group: "{{ galaxy_user.group }}" + # args passed to tusd + args: + - -host=localhost + - "-port={{ galaxy_tusd_port }}" + - "-upload-dir={{ galaxy_tus_upload_store }}" + - "-hooks-http=https://{{ inventory_hostname }}{{ csnt_galaxy_url_prefix }}/api/upload/hooks" + - -hooks-http-forward-headers=X-Api-Key,Cookie + - -hooks-enabled-events pre-create + +flower_bind_interface: localhost +flower_port: 5555 +flower_user: "{{ galaxy_user.name }}" +flower_group: "{{ galaxy_user.group }}" + +# PROFTPD specific setup +proftpd_galaxy_auth: no +proftpd_create_ftp_upload_dir: yes +galaxy_ftp_upload_dir: "{{ galaxy_config.galaxy.ftp_upload_dir }}" +proftpd_display_connect: | + {{ galaxy_users_domain }} FTP server + + Unauthorized access is prohibited +proftpd_galaxy_modules: + - mod_ldap.c + - mod_tls.c +proftpd_global_options: + - AllowOverwrite: 'on' + - AllowStoreRestart: 'on' + - PassivePorts: '56000 60000' +proftpd_options: + - AuthOrder: mod_ldap.c + - UseIPv6: 'off' + - RequireValidShell: 'off' + - User: "{{ galaxy_user_name }}" + - Group: "{{ galaxy_user_group_name }}" + - Port: '990' + - Umask: '037 037' + - DefaultRoot: "{{ galaxy_ftp_upload_dir }}/%u@{{ galaxy_users_domain }}" + - CreateHome: 'on 700 NoRootPrivs' +proftpd_conf_ssl_certificate: /etc/letsencrypt/live/{{ inventory_hostname }}/cert.pem +proftpd_conf_ssl_certificate_key: /etc/letsencrypt/live/{{ inventory_hostname }}/privkey.pem +proftpd_conf_ssl_certificate_type: 'EC' +proftpd_tls_protocol: TLSv1.2 TLSv1.3 +proftpd_tls_options: EnableDiags NoSessionReuseRequired UseImplicitSSL +proftpd_use_mod_tls_shmcache: false diff --git a/host_vars/galaxy-umsa.grid.cesnet.cz/vars.yml b/host_vars/galaxy-umsa.grid.cesnet.cz/vars.yml index d1c2920c..f1c98f7c 100644 --- a/host_vars/galaxy-umsa.grid.cesnet.cz/vars.yml +++ b/host_vars/galaxy-umsa.grid.cesnet.cz/vars.yml @@ -1,6 +1,7 @@ # where to put most of the data; we use RBD or NBD volumes rbd_mount_point: /rbd -galaxy_mutable_data_dir: "{{ rbd_mount_point }}/galaxy-umsa_data" +rbd_data_dir: "{{ rbd_mount_point }}/galaxy-umsa_data" +galaxy_mutable_data_dir: "{{ rbd_data_dir }}" galaxy_commit_id: release_25.0 galaxy_build_client: false diff --git a/host_vars/repeatexplorer-elixir.cerit-sc.cz/secret.yml b/host_vars/repeatexplorer-elixir.cerit-sc.cz/secret.yml new file mode 100644 index 00000000..207600d7 --- /dev/null +++ b/host_vars/repeatexplorer-elixir.cerit-sc.cz/secret.yml @@ -0,0 +1,106 @@ +$ANSIBLE_VAULT;1.1;AES256 +32323365353533373435356561663165386135346633363031323766396161656235643935316633 +3532646562653936626231366430666461353732666130650a356165623765643332623436313233 +32336362396531396232633439303336616465353037396235363334363232643965373834633536 +3862616539613736660a343932643833626265643564393438353766306666653437373435373939 +38363365356336663566323363616237663263366435306333653761323362646162313839393463 +38306262613732346264613965616465656661643639663039343634616462646163393864343135 +63666262653134623861363963353938343937373531326664646534323033626632656435313431 +36343538303362326136633937333131363263623163313131303135643461373565316637323632 +39613439363761656334326234623632306432653533616439363263646638653230616461623339 +32386131346261316233643033616539363362653536373439313730376636663433616635383633 +61393234623434376265613636333439653664623465363637633833353435313333616231646338 +32306663633330333433653264353966366133623661646330373732623539393166333631303831 +61323065646665626532353433386533333839336632353664346435343838636530643735363831 +31336334643966393961306436653938336436303961623163646237366339366263316136343866 +38633534646339303366613762616634313637623937653233643735373232373339323132333562 +32353138323631643833366466366161346639303437393337343464663134656637383334343262 +62613233346430613562366335643466373939356663343666386361393733386532643261616663 +63653136663436306538363361616136636136386462386138333635363265336236316333383339 +38613937626162643639656461306531663763303637656637663861636239333236313364636138 +63666335313136613631623034336333663138393532323866623366636439393534346636393032 +35373961303031303763636164366232623862633062383031613238653430353437373839306166 +63316239643035393963313563626232363335316630666465306639386164356461373939636564 +61316561373565646264303239383338636334303535303630636134313965373334626432303563 +65643032373131316231626366376231356230663931313161643930316366323834643033396530 +35663736666430316235633931303432356166383664623865613436376238653863323130326464 +39336239393864313933373433643236643062376562396634633438373735346230646332363838 +33326565316163646236386261393239393862393633313237646137323035323932313434643331 +61353763623062653564356666666536333131363731313031376132313333323364613335336662 +32343236333737306630333164313230383032623431346131373566313837363165313036376265 +35373739333765383866376438396461326262313432636532356266303736376239396663646537 +62383838626532646632636363613438373930636431386665386431396331343639643730353438 +65653765373862306162353631373665373366306665313839313164396463303834353737376435 +66616134323465363437626136353633653439663437616339643538303165336633396631353833 +33323962613339303165373361623265663934656137363037363965616332313038336434326239 +66343263626435383831643064303330323437303465613537323033633238363738343138376337 +66343666323634646132303763613432333031333063613135616263636266303264386632646537 +64656634616136643739373062316130373835663566346139333938656237653037316465313162 +32306239643839343432653331613265316236306639316364636236623438653166386265643336 +61316263343537303336653730323135613739616637336533343963343766353135366530353664 +39393666376337383764353464613762666564336632633033616539373737393332383437623437 +35323066623766323931323637313234656133613931653162353438666237363836656538663336 +37663235326362633565306534306163313331326434306337666361343138633430366366376361 +39616164636365356437363636356631643663643264656434336563313930313061313139393264 +31623365613438303232393235633564306366353838613862633961326339393965373861386463 +37663162663666343435646366343436656330386634336238643833626332356638366364636230 +33623766376265613736383865306235653363366161373638313537376666303163393236666362 +65383363383165333239373536626363633430373134623365396163363136636136633530333264 +32336465643631353361396133326662343561646566653931336531386537346534333732656437 +65346135353634333565656665633138626338636338346533353264376564313432343337636139 +61643563663764393135353332636538613163663239633636616537393262643664396163333530 +36373536623431666336383862623765396235663966376332356530393362373462343634366438 +36616338303562623936353964393230633538656263623231353961383237323736623463396532 +31386637643365363062626237353134613366626165373630613164306136383132393430393930 +65316462303033643934343762313635396238333963323466356465626635323534343866386365 +37393664613538653831616237613731383833623338333964663661333637353063326535353336 +64326635623465326238323966643130323735386161366231323461356137303161363562343837 +39343639353833663061626334326466306239633562323162663830653932373966326338363762 +61363765323736323965643764323930623564326637643436313861616133316338666232386465 +64613132626634343765373330333136666430326265353464393065353863653861363461396361 +35306161653232353939373532393936363733336634626132396664623164353865663966316239 +61633064366661386465616461313761643732373635326561623430316339343739653064653336 +37383932303434396561303963383636666233666562303432383238306234316137356132613131 +61383136323230353938616432613632303933666638663037633930396665633637313032373866 +34323032633131303133666537336462656564616437303830353064363537653337333134393233 +61323033623864373236306462633331363961363032663730643764613062626634633437313061 +62633264386632626466616366353066353537356261653634613032303533393439373139356461 +32333330653766346163663730343638626436373963313662663366316635626334373161313133 +36343730343236356538326362363935363938306433643965626539343530643333303463623661 +61356332396561343636306438633436643138306665346435653261383636396135376239363631 +33333939343363616465616534303961326462323439343439333035323333303739363938363437 +30366239633331666639323136346165666639633461343732326265303430396666663962616264 +65626432666339646136376532636462386465373966643561613265316364383064306130333665 +30663630393937353838373733663364316565623332396465353637346431616566613461323162 +64326230653839326139376430626166303039373734643564636430346532316635653535393033 +62386333306133326565316239343234373838326435376462306139613130646636373465386239 +33386263366532316633643330653738313361626431373133643639633830623532393039376330 +62303133353935643537353033376638666265383637326431386463373532613238613165383739 +63626635323633303366303539616361313631613238373735313762396539633263626337656438 +62373164366361653632316632313033666161356235333139373936636533346437633964303166 +65323465613532663135316133663062613463353233396364356634373337656666373538333539 +39646264383762343236303264303864346438393161333039363936643463623430663533383535 +31633764636162313432636335656430653934366237353664626231643237376237366639383261 +33396432643962303564316361633837656137393132623531646430643964633732326536316433 +64633763343535333632386530666334333931633462383261336164653034366438306266663034 +39356562313733336262616561363066613463346431353865303930353032633364666531306663 +64303230326364373133373164633632613462393235333330303938396137336232636262656261 +32356438303063616634653338313232336639313335623465343462333630666239343033356639 +61613665633938396265323963326161386334643832626365633637366139303434303930393836 +36353336373262656565663164623838343062336361303131373438343461643437613731313939 +39613733323666386138323665613338313864373533663933633963623137343539633531636132 +62306663623033633433396433663936666664306236653933373261383637366231646234653232 +30373461356632616663376661336435646262646463396133343065613432303662393437633938 +38353235323861333432613530336439633937376135643432363938623661353438356232303562 +39613036653131376661646539323934313939346361623134323531363263353561613037396236 +61316137633663346666323031643336393261306631656365663866663065306233616362303862 +36323064343233386232323230663439333263393263383337313532363439393431306466373737 +65613638626636356136353161303765656231326262393931653134613835393034656631383866 +64373030623666326632356131346335623864323038343364313132323535353836666231663130 +36366534643765653334626163623539616665663231333561613537363730666137393533316330 +37313233313362346637633935303937376565623137353235653934333266346365396438373066 +35323235373538366339316634633130313435333864666363643131666232303238386433623231 +61613966373330303463363065653933396435336333316162393466633333353363636263373530 +37316435396261646230613333343032323735356630633366333333666132636433656131383831 +66656562363733633265666436373262356135636634646162396236333062303231303762616333 +63656232626362393862663663653238396336653331653633303430383862666639 diff --git a/host_vars/repeatexplorer-elixir.cerit-sc.cz/vars.yml b/host_vars/repeatexplorer-elixir.cerit-sc.cz/vars.yml index aeaef435..3a17e3c1 100644 --- a/host_vars/repeatexplorer-elixir.cerit-sc.cz/vars.yml +++ b/host_vars/repeatexplorer-elixir.cerit-sc.cz/vars.yml @@ -1,2 +1,196 @@ +galaxy_data_dir: "/mnt/galaxy-re" +galaxy_mutable_data_dir: "{{ galaxy_data_dir }}" +#galaxy_mutable_data_dir: "{{ rbd_mount_point }}/galaxy" +csnt_galaxy_url_prefix: "/galaxy" + csnt_brand: RepeatExplorer -csnt_short_term_storage_dir: /rbd/data/short_term_web_storage +csnt_contact_email: regalaxy@rt.cesnet.cz +csnt_log_level: DEBUG +csnt_smtp_server: "localhost:25" +csnt_enable_notification_system: true +csnt_short_term_storage_dir: "{{ galaxy_mutable_data_dir }}/short_term_web_storage" +csnt_registered_user_jobs_limit: 7 +csnt_jobs_output_size_limit: 250GB +csnt_tool_config_file: +- "{{ galaxy_config_dir }}/local_tool_conf.xml" +- "{{ galaxy_root }}/server/config/tool_conf.xml.sample" +#csnt_edam_panel_views: operations,topics +#csnt_default_panel_view: all_tools +csnt_allow_path_paste: true +csnt_allow_user_deletion: true +csnt_enable_oidc: false +csnt_auth_config_file: "{{ galaxy_config_dir }}/auth_conf.xml" +csnt_toolbox_auto_sort: false +csnt_contact_email: regalaxy@rt.cesnet.cz +csnt_watch_job_rules: 'polling' # used to be auto +csnt_retry_job_output_collection: 5 +csnt_gunicorn_workers: 9 +csnt_handlers_processes: 4 +csnt_celery_memory_limit: 4 +csnt_celery_concurrency: 8 + +enable_tiaas: false +shed_tools_shadowing: false + +galaxy_user_name: galaxyelixir +galaxy_user_id: 2469 +galaxy_user_group_name: galaxyelixir +galaxy_user_group_gid: 10145 +galaxy_db_name: galaxyelixir + +galaxy_user_group: + name: "{{ galaxy_user_group_name }}" + gid: "{{ galaxy_user_group_gid }}" +galaxy_user: + name: "{{ galaxy_user_name }}" + uid: "{{ galaxy_user_id }}" + group: "{{ galaxy_user_group.name }}" + shell: /bin/bash + +galaxy_users_domain: repeatexplorer-elixir.cerit-sc.cz + +extra_certbot_domains: + - galaxy-re.grid.cesnet.cz + - galaxyelixir.vm.cesnet.cz + +#galaxy_commit_id: 72070dbd0a6d0f418d0b8f914825ea2b8e6a0a88 +galaxy_repo: https://github.com/CESNET/galaxy.git +galaxy_commit_id: release_25.0_regalaxy +galaxy_build_client: false + +galaxy_systemd_nofile_limit: 150000 + +# Postgresql DB backup using dump is not implemented in main branch (find the code in galaxy-re branch) +#postgresql_pg_dump_prefix: galaxy_db_backup +postgresql_backup_local_dir: "{{ galaxy_data_dir }}/backups/scripts" + +miniconda_prefix: "{{ galaxy_tool_dependency_dir }}/conda" +miniconda_version: 23.5.2 # 23.5.0 # 4.12.0 +miniconda_channels: ['conda-forge', 'bioconda', 'iuc', 'r', 'anaconda', 'petrnovak', 'defaults'] +miniconda_base_env_packages: ['mamba'] + +pulsar: + user_name: galaxyelixir + nfs_home: brno11-elixir + nfs_prefix: pulsar-re + pbs_queue: galaxyre + pbs_gpu_queue: galaxy_gpu + +#Install pip docker package for ansible +pip_install_packages: + - docker + - python-ldap + +galaxy_config_files: + - src: files/galaxy/themes.yml + dest: "{{ galaxy_config.galaxy.themes_config_file }}" + - src: "files/{{ inventory_hostname }}/tpv_rules_local.yml" + dest: "{{ tpv_mutable_dir }}/tpv_rules_{{ inventory_hostname }}.yml" + - src: "{{ lookup('first_found', ['files/'+inventory_hostname+'/config/tool_conf.xml', 'files/galaxy/config/tool_conf.xml']) }}" + dest: "{{ galaxy_config_dir }}/tool_conf.xml" +# - src: files/galaxy/config/oidc_config.xml +# dest: "{{ galaxy_config_dir }}/oidc_config.xml" +# - src: "files/{{ inventory_hostname }}/all_tools.yml" +# dest: "{{ galaxy_config_dir }}/plugins/activities/all_tools.yml" + +galaxy_config_files_public: + - src: files/galaxy/config/sanitize_allowlist.txt + dest: "{{ galaxy_config.galaxy.sanitize_allowlist_file }}" + - src: templates/{{ inventory_hostname }}/static/welcome.html + dest: "{{ galaxy_mutable_config_dir }}/welcome.html" + - src: files/galaxy/static/usegalaxycz_straight.svg + dest: "{{ galaxy_server_dir }}/static/usegalaxycz_straight.svg" +# - src: files/galaxy/static/elixir_logo.png +# dest: "{{ galaxy_server_dir }}/static/elixir_logo.png" +# - src: files/galaxy/static/eu_msmt_eosc.svg +# dest: "{{ galaxy_server_dir }}/static/eu_msmt_eosc.svg" +# - src: files/galaxy/static/e-infra_logo.svg +# dest: "{{ galaxy_server_dir }}/static/e-infra_logo.svg" + - src: "files/{{ inventory_hostname }}/static/images/umbr_programs_icons/RE_header.png" + dest: "{{ galaxy_server_dir }}/static/images/umbr_programs_icons/RE_header.png" + - src: "files/{{ inventory_hostname }}/static/images/umbr_programs_icons/ELIXIR_CZECHREPUBLIC_white_background_small.png" + dest: "{{ galaxy_server_dir }}/static/images/umbr_programs_icons/ELIXIR_CZECHREPUBLIC_white_background_small.png" + - src: "files/{{ inventory_hostname }}/static/images/umbr_programs_icons/RE_logo.png" + dest: "{{ galaxy_server_dir }}/static/images/umbr_programs_icons/RE_logo.png" + +galaxy_config_templates: +# - src: templates/galaxy/config/reports.yml.j2 +# dest: "{{ galaxy_config.gravity.reports.config_file }}" +# - src: "{{ lookup('first_found', ['templates/'+inventory_hostname+'/config/oidc_backends_config.xml.j2', 'templates/galaxy/config/oidc_backends_config.xml.j2']) }}" +# dest: "{{ galaxy_config_dir }}/oidc_backends_config.xml" + - src: "templates/{{ inventory_hostname }}/config/object_store_conf.xml.j2" + dest: "{{ galaxy_config.galaxy.object_store_config_file }}" + - src: "templates/{{ inventory_hostname }}/config/local_tool_conf.xml.j2" + dest: "{{ galaxy_config_dir }}/local_tool_conf.xml" + - src: templates/galaxy/config/tpv_rules_meta.yml.j2 + dest: "{{ tpv_mutable_dir }}/tpv_rules_meta.yml" + - src: "templates/galaxy/config/vault_conf.yml.j2" + dest: "{{ galaxy_config_dir }}/vault_conf.yml" + - src: "{{ lookup('first_found', ['templates/'+inventory_hostname+'/config/auth_conf.xml.j2', 'templates/galaxy/config/auth_conf.xml.j2']) }}" + dest: "{{ galaxy_config.galaxy.auth_config_file }}" + - src: templates/galaxy/config/dependency_resolvers_conf.xml.j2 + dest: "{{ galaxy_config.galaxy.dependency_resolvers_config_file }}" + - src: "{{ lookup('first_found', ['templates/'+inventory_hostname+'/config/file_source_templates.yml.j2', 'templates/galaxy/config/file_source_templates.yml.j2']) }}" + dest: "{{ galaxy_config_dir }}/file_source_templates.yml" + +galaxy_extra_dirs: + - "{{ galaxy_data_dir }}" + - "{{ tpv_config_dir }}" + - "{{ galaxy_config_dir }}/plugins/activities" + - "{{ galaxy_server_dir }}/static/images/umbr_programs_icons" + +rabbitmq_vhosts: + - pulsar # DEMON: used to be /pulsar and Pulsar config must be changed before (or right after) the change is deployed + - galaxy_internal + +tusd_instances: + - name: uploads + # user that tusd will run as + user: "{{ galaxy_user.name }}" + # group that tusd will run as + group: "{{ galaxy_user.group }}" + # args passed to tusd + args: + - -host=localhost + - "-port={{ galaxy_tusd_port }}" + - "-upload-dir={{ galaxy_tus_upload_store }}" + - "-hooks-http=https://{{ inventory_hostname }}{{ csnt_galaxy_url_prefix }}/api/upload/hooks" + - -hooks-http-forward-headers=X-Api-Key,Cookie + - -hooks-enabled-events pre-create + +flower_bind_interface: localhost +flower_port: 5555 +flower_user: "{{ galaxy_user.name }}" +flower_group: "{{ galaxy_user.group }}" + +# PROFTPD specific setup +proftpd_galaxy_auth: no +proftpd_create_ftp_upload_dir: yes +galaxy_ftp_upload_dir: "{{ galaxy_config.galaxy.ftp_upload_dir }}" +proftpd_display_connect: | + {{ galaxy_users_domain }} FTP server + + Unauthorized access is prohibited +proftpd_galaxy_modules: + - mod_ldap.c + - mod_tls.c +proftpd_global_options: + - AllowOverwrite: 'on' + - AllowStoreRestart: 'on' + - PassivePorts: '56000 60000' +proftpd_options: + - AuthOrder: mod_ldap.c + - UseIPv6: 'off' + - RequireValidShell: 'off' + - User: "{{ galaxy_user_name }}" + - Group: "{{ galaxy_user_group_name }}" + - Port: '990' + - Umask: '037 037' + - DefaultRoot: "{{ galaxy_ftp_upload_dir }}/%u@{{ galaxy_users_domain }}" + - CreateHome: 'on 700 NoRootPrivs' +proftpd_conf_ssl_certificate: /etc/letsencrypt/live/{{ inventory_hostname }}/cert.pem +proftpd_conf_ssl_certificate_key: /etc/letsencrypt/live/{{ inventory_hostname }}/privkey.pem +proftpd_conf_ssl_certificate_type: 'EC' +proftpd_tls_protocol: TLSv1.2 TLSv1.3 +proftpd_tls_options: EnableDiags NoSessionReuseRequired UseImplicitSSL +proftpd_use_mod_tls_shmcache: false diff --git a/host_vars/usegalaxy.cz/secret.yml b/host_vars/usegalaxy.cz/secret.yml index a76a3ff4..8ebebfba 100644 --- a/host_vars/usegalaxy.cz/secret.yml +++ b/host_vars/usegalaxy.cz/secret.yml @@ -1,213 +1,222 @@ $ANSIBLE_VAULT;1.1;AES256 -37373439383936643035356361336432383437616365653430623765313633663365396265393637 -3162393831633835396231646465326433323165323563640a656532316664383037666332636465 -37653961353432623765643866333837656638663462366239376564333730653834633936313334 -3430383165303937330a663038663233363064353665326430656435373763666463303231656366 -32306632653462356339633061393362613033323730653534353833363164636261636639346138 -35653337323161353863626362316635353564376531666132313738646561643564306338636561 -66383232333964376133323365366634616530363339343463323965333432643364616131353461 -30313566363037376564313763353430333563316533393537343332623165346433336666663235 -39383833633839656139613231333363343439646334356235633366623938653632343035366165 -63663035353033393938383064366664396234303733643662323365653235633262646136303037 -30326163613039343463363136336539373038353063386562343566343663386536356362326530 -35393865393961306563666639623230383463633034313666333839346136623139323235636562 -38313362653365663165306534393132323565353037663061383330623535353063396137613163 -65353730663632613062363633653130656431653536643834616639333966346431663339343637 -37636139373636623234333964346431333631663163626138663435303034626536643232333566 -64613061363933303136653964633435353363313163383438393135396665643830303331346637 -63373035343833386365313732303066616631613265373334346261613938333333303136653133 -64336536313131363263336663353938303438373063613132353137663161326637613063623462 -30313164353234306237323632313535636631333233393266636238366461653136393663616132 -34333066313739376164366631646537323838353663666137613632376335376262303234356235 -66343733663831366135373330633764613661333530643838343631376138396163373461616231 -37386561323837636561666533366333363865386162393061376638386537666331336435663662 -62366135663965383936656236636564356633623633393237383334343662373264623837343638 -31366639373461373834633266643563383362663636333435356535633263343337626133616139 -38343363326262323534626436633265326162623931343262323762613137646630633231303830 -38386231393164313538636662656435303131373130303430306334376162396339323934373361 -37396166306661643634623935383734373961633363653161323530333438376435343637643431 -33373934346564313937646138616463656630333433333666373439336336623432643165323534 -39373263333830356638623035303935656564333963366162303937356635373462373139616430 -33376562653563376363626139343532303966316462656162363766316632336430326137343139 -38313933376366393265336436623334383539363166636531636634366363313733663136613363 -34636664356464663735663462383435316435393232626137643061343634333265343261623031 -63343465343031366464663265636636666237316535653831623863623939633832376633636535 -64366435343134623634346431383138643131323736633837626635366630363037616338623335 -64623866646636306661326661306161633430363765623832323434626531306664336539326362 -61333939316232303335353238633238363364343066343563363466386233323564393665653061 -38366361343437623935623765663937643632626231353934666537386532633534306539653034 -32613537633065653931303562336261643034306639636432373534616437643431643838623736 -30326565356237366363346465366230333166393861306162353561393463316438393862373164 -64653266633961356338653336303161666438636561316463643030346532663361653839313431 -30383235313239386530303031616131636539663531623238313738303635633331613866613033 -62363737393961626437353761343338666433663861663439313066396334356233356532343135 -61316238323232653038313231646538323833366365663936323239656332373531663634363938 -65623437343038323365643836376462386636346661343933346239343564643830343737643433 -61346438623938303665336539313661316131316161313136393134646334303065633763653234 -37306535323234393665646265333936313334333330653666633063333132333937373965316561 -34313634333664663235313761616461363232326239623733373536396436386166366361303833 -33623336396238343739666633396434613534313634323361333537393662633634363135313666 -32363864626430653837353334396635313639666562383930323261663463613434633936393835 -62393330383837383364366666663136643732353039353930313930316431613439313561333865 -39663538303439376639333566373865343030623933303363316237633363333965313063383765 -63333638373433343134316234363935396465656462333364346266663433383835353164633235 -63646266336133646235323465663062663436323733323461376266356465313832316638373566 -62386130363630393832653438303466383831663531646435396532343936383132306633633564 -65653735376661376561363834393164333264393732326465373362356539613864356163636534 -66356431636535333065386534323639383634323131396533373566663437373833313335366230 -32303132383466393064333435343762646537396661663532643764386436623963343632656334 -39643332613235356464393931386362636639663261646535333939313235306366383464393761 -33363563303631333165343236326237653630663862616362636137653232343161653830386232 -36323533366361323964383032613535316565343164353364633731633566376164383831356664 -39303062643936323965396139396563303065663831383131343737353164623763363764366564 -62313836386332653433396332333633626562303938393532383533663164636634313532383537 -63633637313161653231383435333264353532633966346462303463343062363733303336363232 -30333231636666383363613535326566343530356266363331653135363939393564323335386130 -63336339633330653235343537386435366638626437616262346362613936623561343161326131 -34356561313862626462303133613865346237643265656136383034383331306363313533396566 -35336538323630663734333430636536393139336631626633386136373366316538393434633539 -61313130613463396333393134643664353237623063646632313335353938383135336431653634 -36376636366235303431633432376132393136323835376335663966653431313163653036353035 -30383066313064666265323664383966366263663734636233636235643533613066313463353634 -66646631663836306132396337373332633731303439623233303966316464386239383532646365 -34666166313238366465623135633861613862356363326233643230646135633363376230366136 -61333135383930303132363132346434383135396464396464366564383139326132643562323361 -38363333323035393236656664343532313230363738656465383462646530613439653336646331 -65326462616165363339323838356665393638326631643038656631386362373562383531643733 -30306435393132333736663233666234633630653561386231333732353833653961333262643763 -36646630313130623539616664366531663862366131386431376264386437363732306163323738 -39313566653132396266656139613865373530643961386663313362633362653062613530346235 -64363866373436303436626132396238336636646463326639393333313739623361633134623335 -61623766393331353064343533336137623165393530663862623935663031646238336630326532 -64383965313763373833316538666636623138303530646633633965373265353730623436363564 -30303537316566336231666435366563653836353262353566646236633930646134356436366430 -36303836393664623366353639393031623562343232393337306530346430323631333362613666 -39353866306636613161336137333366666261303432613932666230393930303333343438343533 -37613965656364396564343662646564366331623266373932383761616364346364666239633161 -36633465633862373033653434343661623761363466386236666438383136313036323463346430 -36616335363234356239623065373664383761323162366666666639366365393466303535313865 -35353436306262366332643239363634383431633863396263383065356365386136333638663238 -62303531623165353636373161383539366261363430363636623766613164333035303835626336 -61623532373033393965396662663335636637303038353530353436396530316132376539396436 -63323239636231346331333833323032306237633033376666363165336638626238363862666562 -35356264306666376135343736396230393661323938306130313064636664336437353962363133 -61376234316131353737656239383732646533303336633931363837313564393161396336386433 -31613731333633623430336235323135386534393663313434666139356162666436393335613463 -39353136353262613063656661666164396438333165343437663734613962333037393439393763 -66363636646463373431616333633636643334646566356232646263653636313830343731653637 -31613932323962373961356631313336373932313436306363643433333934663139373162633632 -66333566663736373166613064386230633632366539366538623537663937623639313137383534 -35666635313038326464333631386137656538393837306563666439343764336231306662356236 -66633365326232366538373762623765316264666361623836613065333030643130306666393332 -62366335653237353634336537626433326265303139373033663631373566343735613531386264 -32386137396564643837326530613961343433376364323034666636663964343936646635353964 -35333534346235333865333034656137306130303763616131343131316137373236303939333130 -61303936393239383465646434656264623635373461346334333837653063373566373632653332 -36336437643636663565376461383931626438356566623137326662336639353264323934333230 -61663065393663623230326461373638643432346662373466633166393166633535663533623235 -61346461386432316361613539633835376564623432623361616536323465366366666530383236 -38396262663132336632313839393939613934383233643964626232333733626533366261383631 -38636239396462323533326162616536373366663765326464356163636664656130653032323931 -63613364303130633264363033643838643562646162353232303063636664656564343661613132 -38373662633831336536663762643765376135653835653731623039613766613961666633656464 -32353834356165316439663433303165373639616363333865383336386434373065326461626431 -33313465643063326161303165616461643235363537633434663537613462623332353039356162 -31346166356632306232313663613961353731336264353564316164663466643932633632666566 -62326563353264653538653534626237626137656135613435613938323165386566663236333361 -37613630616637333363646332623634643763323632616463626231353638363733353561303262 -38353137386134653434396531653432393564623539623036333661656463616437323765646434 -38353132373532336534663837616638373632336533646634343662623930393437303630663239 -64326463373666623830666236343033353232636562363434363934623138316165636461313934 -66646562643934316637373131353766386539323064363462336236396638333236336362373463 -62356134303864373530643161373962666662363765656461623332373338373238643436376265 -36666164396238613730353666373137633436623339653233623763353633323334323036366434 -32353566343530613662623263363262353338336136383263383135613363353534376633616566 -62383561333265333465616235633362643966613531383634326132376535643865353866303666 -31396634613730363466613365663061393735363166623162663835663131326464386337336664 -64633030343837306530343066353130653337623335383932363733363136363332636561363061 -37333965656130326566656137663933393461343938666662376435323966643638306133396439 -39306261346666323637656432306565313330343062633963323466313235616439396162353433 -36613634353736323438653336653033303461363462313432353739383662363631643965383733 -32376335353734323832326334616339633139376461616535363762396563316662376261643736 -36643437346338336530636235643166633534633734303665626332353130636136313261613565 -31613262643364636330653237626566313831333861396337363730396235393535626265366264 -37613831613665353932373136666463353937306339363933316238303963353562336633633466 -30623330356538666637636436666439383762323331633665653332366134633163373763663361 -37393631623638336435653361656638633637363664623564643564306563643238393462326639 -39643536653632386434313265313232643038366464343366663031356562373962306261663739 -62383162623766303533653831633631373362663535613630343439656637383336393130383535 -31653836303964653536646466663333353537663830303236666566666136313739323339336638 -35393965343463373566343766656666333834346262333864646331653932653434656631306139 -37626365396461633064356337623363343331333765383534376131643937636433646436363061 -38386331343433336363386139326262623634373838656633663936633830303335643463306237 -34316438326663383333646632326633386664626264313335316561366331366438643630316661 -37393336653635623936646333383063303861363836643938303139626332643335653563393435 -61326431316165336464383633383531613831326265353566333664333935633130623632363062 -38633465303234353661646335376432663664623838333434633833356634666136633933393039 -32636163393534376665333635633135343735626364636366303065646633386463353832623731 -64343632323336623430633366396262333761393332343834623964303839613933336530313434 -66313233636232633361653632386538313834313936356531633637643365303035366133323038 -33323738326537663534383039613336333864623632653838316164646362346539633362353363 -63646264393039633865393034336434623434363438303034616437373431353163343135653636 -38393836356162393332623761376231386264316336656237366538633732306366363135656335 -34663866303534643561316562353532626337346138636163353564363737383138616632393334 -65343931363236666338316263363862376263333735303939373566623139633366336332616536 -37616538393630383364363164376663336163363465376264376264343336396238353363333135 -65373466393563626231316464616531636536633362383861633966343362333536613336386638 -63343937316632356566646461336162363061323132626566313864636438323665666466346536 -32646464643330636230626361626339656639383932623366373834613332623361326437623966 -33623262623730356166356230376561663134373335636135653739623139343665343166306133 -66383464313839336461653930613634376539666633343632643461346438656461326134333432 -61613037643365663831313964656336333039613133346430663065343530623636343630653138 -66643137333532613162376336623939306531656537396532613435386633336333663332343130 -31353938323533323035653439646330656532363762333634663434383439383566383265663931 -38366465646138323162346431386539616132633962363561626233336561306264366631303462 -66316230393262336236633261663237323733346266643939613566363765626137356335316530 -35316439343264393138616462623838666664353465363932393233616633343238653166663762 -36313138313735343136623062623339316432363165613462306465366433643336666632306536 -63623064316535326538643866303237623437623236313130623130303130333036386238646330 -39363161626637633162366530353064613738363065656233623962336163316131303232333938 -33646531656339613830383663636166373239613937666431656338613836666362356561323130 -30303937303030393933303231623134383934326239656635323363376633313761346238393533 -39623031393463643333623864623862623463383736396335616437643537376565386133366662 -31323135643439396561333938646165643164646337636661306630306665326133363831376331 -61663363646661646366363261316537326230323239356461636539656266356531623661326436 -62643134386430666134333632626438343737333034383466643339613031396632393833653139 -62396238333538653336623766396234303236366532326663643864643035646663626163383030 -39313161313838356239316332613038306234336634363138373137613335366438643465373866 -66366331393765656138333863313763313436653466313135663537643565613237633431633465 -31383137313335326661393765353062353131386134393464383637313731333865663762613832 -32626139303661306632313739376239303561356361393231633531353937306139333032313138 -33386364386661333830396263353839663066376138323962366362653433323938363133346166 -64653435613966373436353834313138383534323831623665666662333139663635316539313961 -65646166373830313632616330326231313131633734323430393539666564646364613039323932 -39633333346630333330306333306633376532656631393565626335343565616334306634633865 -35353938333735366361393732653435646335616661306636343237326634376337373136303236 -65396362383264633439353039643632313566633630393865393638323234653866353230313466 -34333738326564313534663866373437646434666237613530386463373031383165333234643035 -35353630626563613935363661323461353837633366313230643666363664663237623537343432 -62363839646338356535376237333365393539353032356366363432373439616362636132303531 -66666430323436376236663237633232396235663737343739343666633366643538663730313730 -37633234653336343639616335313038646435396666306630323638613832303733346234626330 -36366135346331326430613764326562383734633635353938383532666464363030643334613138 -33363933336264313136383462643863313832636538306335396264666335613366623462353164 -34663538343662393231626235366331623034643532653232363839653736303364636335376261 -32353435346535303234326364613032613832303536313766336431396662333264386262396230 -33383630313363633138346437623931336166613262636566366366633763373136653834356337 -37396563363539626237616235643866303935636430373734663339346663626466613165646431 -62663163346532623566393862616536383838613238303235613161323638633932653535383934 -30626164633366666465316236383735346135613362393131386364633563363962306135396631 -62656536663734363532353962383535646635313733313164653436373764623735616164306234 -64336162356261343735643136626531643632306132303263613062633266643031633036653337 -38656433346438663564333164363565663536303931656264306636623961366633313266636463 -38373633393661663262653864363736636537646463383564633938613463633236373038373436 -34613236663461363331306365333834306465653065313331356335643835663962323361396166 -63326662663162333830643239383436633335393166303630393938393166326436316331393164 -34353131393233363563633466663736303337346232363839356161643834326635366666626536 -61633661386361663938643236383537383637303861323533616538656162373838303561333933 -61306366386634393366343934333064393561316230643336396536663031376566663230626536 -36323332663235393230653439633836663034626165313264613934376663623131656233663837 -34353732343737613835663065666137393961656634643236303431343230343466373637636238 -31633063373964616161306466333136646561663565333930636430326634633564313664643065 -63313031333039376636376565663939393731376136366136303230366363626237396261623238 -35386134323034363935 +34323364323864653134306237353039613664326234666566343564663738373031613638653033 +3230316235303134613466343832633635346132666433310a396661303439656666306333633261 +38646162373630383431353866303039333136663937363933366137653065373435353061653238 +6630383430316561630a326334633639643161633739643839393735373939616665343539373766 +32626430666161653065303231363833313862346537353137326431633139646132313466663430 +66613039333165303761646636353664666565356437623439373062653564376231383062303562 +66306131613962666663303338393331643139656566666134373337313931346637653631323763 +32613266336539316233666431393964303833636330623736613437326331363030623132633064 +64333930303438653566376131653030623963323861303461333064323662386566643038346133 +38316462366134656638313361386432316563356430663233326665363539646330383962306361 +39333263383032333364343938316234613036663065376631663337656665323537326663386536 +33356534623966396166386664336532393838373937323837333935626537336438663661636437 +36366233393434616464656535333162313033313565613535613366343066393566653639363234 +35303262396437666335653437383765373565656433626234653866343432623538656435303038 +65356366303463303333656534633939306238373161666434313031623037386430633766333864 +66616231376632616235646237376133383563393066653063616265633235393436363561386236 +36373631376365303561623536353362646666356361666333356636353237366165636135626138 +65363134376537636138626337326138626664353132306438666665306534303134323665343430 +38323731633066356133616337353432303763643231306333623861656137366465346135653062 +63613731666162666362346139633636636232663436363732643438363630396461383864346466 +36323966616164353264346130366533663034643837353937656231323063356139636163326663 +63366134376463303233363962663966326136653537326364633539656233653336653439323662 +30333034643563356539396134356462343838643564323037616263636331336132643766373138 +38396234393734333061373831313162336230613464343230646134633639386237663365663462 +66373131353765373961643832343438343663643733396133343961323461653932633763626537 +35396339306637343634336166643734663566376331663063363030383963336338376434326666 +64613161363866663831613566616238386666386363653862626331396138313530336461643761 +32336566366661333062306464393763363836623734346366613236346661656462376538373261 +35366630323931613532356362666463343531366232653930663166373634353065326638343061 +61653335666338313338636638373638356666333462636430386531363530386138386337633434 +33303139336666353061326266363435623035336361313766396331323537346661363961333938 +61643363633566326537303430663935656562386163643432363565666635666437363465303464 +31316239646363323064626562653261313833383833363061623962316437643038383266643634 +62306136393766646664323836303839326435623531363764383232663463613035303531626430 +39376235363766346137383039373865633466346563646265663466366166376235303338613535 +62333432643366393039323839633632653232316666393336326261663636326432663931663862 +34666632626464613262623733323134396637363966346165643131663061313566656664633462 +63623337613866633861346666316536636364646165333336303331306136613366333138643339 +39306433613263376261663432396536363038353764343130656139376439323566646165376563 +37613437653138383431303462303336653634303035666538613738633536303637663337343366 +35643037333866333931346233353037383432626533373130663561633638376339313731636533 +64313639663565653037633134643134356132343365663831633863383463643030393164313330 +30646336663564396139303738633862633835663063396164643064353464643836366338313964 +31613436306236396232363039353836363530313039343236363963633362396235346231353561 +38633635616234356335663236656536386163346432626138663032353362336166623033326634 +34343330376338373037666631366133643832636333356233363633303637303661316230356135 +62313438623739303864303832326137616530613037643962643938366261343933303436353061 +38356664623733356635623162663136323539333162653939346234306235386661376632326234 +63346561333734646566336135396434393733353130396236396432383838623432366530633661 +34383132343462383833363563343166393734663434393064386537653137616162656235616530 +63333364646639666163333036383566333431306330666566623464303032303364316463656431 +63653036363035346366656131613065353362383938626166663138396336633463663931356332 +66306361356439373036373134303661373739393838393432346162343036333336396633363263 +36316465396330326331626331613764373561656463356131613862613961656162326336343031 +39643364623637343561636137356561383564633539313066316334633130346434383435656435 +66383663343331393462353830336239306139306265623363386162636465303435323938623761 +35303432376464653062353666303535646231393336356131633561623632623933346262396331 +63653139363934626439623235363065616237303538626632666562393331663333303166633262 +33646464666636396530613862663739366637356163623039643731653630313866353031666239 +30316337656438373763653765303837366430643763313932383939656532336362616631386664 +63333664633639666362343862316136343864653934613335353331656166623933306131663064 +65653564346434636539393861336133326461376666626431383233356133386530303938623836 +66383435323764653866343434343762323830666161656630393732666663373163323235336164 +32616263656263366333373133383236306661303835663861343864626339633439306137636636 +36386363643031656366336534623737383035343062373539303538633366376532353836343464 +37623965333866376135396663343034366533333561356434633962306333653464623961643136 +37626239643662396164383562376631373639336262623337313636336261653034303631363135 +64633333326138316462376235633263303965326632323234663731663732326138333430353835 +35316564646230613738313361646435336239656363356664306638323936386466623634346537 +36306332316163386565313762636535303130666533343061366534356364393962303066306639 +35393830303066303163383436393832656463343263323366353036333861663737333862656366 +65653233333537616235393036303735306631343630623539656330396130363764333433623236 +39313934333364373662313563303139643338623834336364373931396236633933663632316235 +37316133643866626665383161303166653265616630336239663035643833656233303464613463 +61653563663262613333346337383133303766333637353766346536653062386438646130396538 +63383565386238303739336237643563613361653938623662306434336130643264316434316536 +66323864643665663466633863363764386237363337666535366461653365663632323036633532 +39373230326562313030633563636435303138626262333238333661646166303564663961393766 +39663961383333366566373132373131373834643431383366633237323765376535666232396336 +64396335326232393837316261303735323234646537373366653534353463353763386336633233 +32376563316436303363663534633038313162643531663935333766323866613965613031313264 +37393764303439396430646566396538656332656432333738396438303631393439616332316462 +33383665616361373765303935623135356331663837363636643737633636366364376633386130 +31393934373332616132363564376139353532363536396332623834383434613266316438653063 +37666231623865373634343630376266653363353737663636313336653432333762303362656630 +64396335666237613530613130656163366539313638346432303436366563323730613538666666 +39373235346262396538363935653432326230343466353433656431336262656562373639663938 +38316636353936366536643738383638393734656532656162666663353839363632633063346634 +35636631653639363664386439393363663661303965373663636430303063316464326135663535 +61393266306235316633353461623061396331366135373731343832653730306531616166623730 +36366362376438623364666537316463623336646561636336613632623433383039626265336165 +37666238616464316535376664366263626331656239653832636665623537396165633434666265 +31313238346464366537636234656231636436613334343930336439656665333961623839333761 +32626530623138633861663030326535333632343537646564623134313462363963666661363931 +37353061373632333431636337663761393037613030646139656539656633386335623232646233 +39353430373936636537336634613131373061343638303063336631623938636138616339633338 +66653566633937333731306465396135336338663663343835663163323761616463383730666231 +63353338383866643232623661393262366565326337313666376662323834346461633962363030 +34353665333034343736383065366461663334343439616361316338376338303634326261616463 +36313939323332356531623635313735373261656334343162363833363265373866343532626666 +35643937626136383766616433663465336166363331646232343430373939333831326231336432 +39303536386665366262326536616234636534633331313164316666613639623764313033613635 +61623738613137383730326130356331343166313561383064346630373666303463613862323665 +37303333326137343431356133663035396530313334396365666431643731373034383661356463 +34333932616635333338336637363262376635636634393266393663393638616334343132383862 +64383565663831323237646337613564383237316664623835666663303533326231613339316131 +66646465373632656533616431396334343261663233646166663637643561393062646434373138 +32313464663630306433656364373237353439616566326433663334346666326561643864633862 +36643632643934663764346462623263656139316537663361663030653763303230393165326661 +65303362323132666438383738613139343764663266363262326363613839396432323836353938 +35653934636265383633343735353437653461633833303332333035653562376565613430343466 +30643465643764376134383266343038643239323632353533646334613036653736306638653838 +35333531643263396231383838386539633239336362646636323735323039393732333535326265 +33316435316166633164383832346436626231306239363135613831386131623933613464653764 +64643334613838363365393339613164653034613239636334336636346533616630383535643665 +35323930653764303661323833623164353366336434373233393734366238363566643430663338 +33613261633863636465613831643335306363643566386166373338323435653565343637643564 +62613461383834353435333662343532663265373466636630623036333732393236383533646363 +65386562663965333634366163316363656162326365326162666563346139616439363165656130 +65363865363566343664303136316532353731653864316630656362333335333334656364386566 +31343139376364663331613263393966316166326566613264646134306264323262333064323331 +33653263623736623634646237643362396161313133396439323433386533633766653662336362 +65346463353436356263633734323137383735316663623461316331636262623966396538313466 +61393365613133313534383564336261663465366134373831366339326639396266613730313962 +34383164623339306465336132353931656564333266613932366162306531646633636265323062 +61353165343838343639333163623238613466636332613864643231653532633662656464366465 +35306537356463663137353731323730363036643736326338336364623161666533326632316231 +31653930393332333938363939663332376133346264313462323635303734653435303162633634 +35343337323139366631623664636533353232393366353136643866303835633266343731346538 +37393761346239333436393764633865613737653439326464346630666537656137623761643664 +32386566626161336561663261346338323663623335336263333130383237343065646336346532 +66643930373534336562636464396261643134626231383635383137636636326631343032646336 +63323937613431653134313962663864313861343930386631323865313138356332373138323261 +36363835323837633964663039306465386264326632356431383236663835643465626138646362 +61373235323137316636663831386162363232343336306237393932366164643139616337666135 +30303562366563643630613037386466333532646431343266346162656238383761366432366537 +61363662336533636234383136303930343165316465383333643262353164623137346365633236 +31643536393433323030336435393934616233623064313230653535323238396335666139633062 +66666231333861636135343364393064653531386261336665643030386639373965356565343936 +36356639363066616630343131666332303235303933643766343565373565316431386132346336 +63356361323163653431376431653138633765353066386333333137303630326163353032643433 +63363038323334346366356339646336393032646432336135303731373537613432346637613837 +63663065636236326637396331616263383134323530626533363235393661653438306264613166 +66386461663961316639306462313332663564373737303565313766643734333837373939616565 +66613563316662353762373265656533343366346436376434383564343136613835313337373739 +62616364613161646633363861663338613966623239366633346432346533333162326334306539 +35636136643264643832623362643635643963326263343164333764663438326663656239356634 +34666239386335326362353162616465613265336234613165393235613835376137343239323232 +36393930343865663439623164356235313030633232396333383635366561643634306464353462 +37636633333031623763316437373266383031386137636366323932353161663237663733366331 +35356566323633336461396261306464633563303733363532636563646138343061643037643662 +65643031393136356232303831366436653166363038376434313238653266313935623764393332 +63396563643837353932383965626663613336386132333432353632613634383935633435636135 +30313331626533383966393261386530653038643136303464316261383339356533393533343134 +65653037336636653365366262376137616134393932303430613237653866336137626235323062 +39383934346130303063663161633838636432643232373166666436653530303432303933623339 +35666634363566623735353838636461613061396166373837376539386538366134643765653632 +66336561303630323463386639656337346138376431386333303566323566323064616239323261 +63303234333332313236356566316166373864326161323364366466336330353830376337336233 +63393535353237363536643236353262656631343130303831653838353334306339646133306162 +34376339356364386232323133323664646364666166393963626431363831376361663737383165 +32363639353162356331343235303166316564393636343235343265643235366139653136376163 +31376661346239393732663862303266386164313336346132653733613731373837363965626463 +65653866646363323932383837616632376438396630353538383733326335333634303766383464 +34383533313666356563386136383162323264663730376135306437383933613033343438343463 +39633936663133346532333937303863316562393865646434623265313731646366323861663337 +63626330363963356335663837373339333862666165643036393135663535633661666133306364 +32323433653566323965646530386566313764373062656537356438333439313938383231303062 +62376636386633646661303436643335623866396332393763663132306363376164333832323565 +30376261313036613231613764666264306132333733366333306432353139343238663033613863 +62633537306435343665363863643533663839316261613034363533616361336230643865666562 +39623035653135613238653766366430616437623965376535346238316434353437373066313564 +31613730636237373363393438373534313461326232373736376232326365393036613230653832 +63356263363838326663656639303530666565633864613939646434353130653464636563333063 +38623062346437613439323132333634373530376263336631313066363330346137613663656232 +30383066666265653431613566303531636265616464616534306664376631333536393131383237 +38316435343232633762623835313234373034396536373864633435333966333536623836306263 +63623631663764663337336666313938393032313830393864373530626264323535343033303765 +31633239366633656438333563623532646565313133316261623739363838643134636162623330 +37346238363466633738623435343038316462643861636631353163646334356131383961656137 +61353930643934343230366136313131313138323233643766333337316535396161656235313230 +62616336336465373666386632353661356661643061333339666166353961663732386366646230 +39333562666462303664643561376538646431303138343937623863623332613634363535353936 +61643739613333316361376430353335656639323534663937333938333861653539393365343638 +32396139656639623736376634353833626162666130356639316535303737613034326137666266 +34333563353034316562366537343163383437383861363163313565616662396264633131356439 +38353730323932383539383265656530313933366339366363636665366635376137393230643263 +34363863653339353538326265666164306161616334336666633535346538636536363131616334 +66396464373037623366303438383331356536653333613935333361356466393631643237393531 +33643033396235313638663830376136323839363338393465363865656235653438396433393136 +37393264623635303933643032373666666361663232653236376430323565633538386362323238 +61373763393362303362313864616564393864346164393964373334363531353236326335336365 +37313632623237666536363661326531636538353964343834653563623931353564633564643634 +62376361663264653162653961376538383463383531633138326536313661313137646436393361 +30623166313037636638616334303261363161326434393934666461316432343162656466383039 +39316565623933396431346266393630376462326366623733653934366262316137663564653836 +33636634323632623532643937396134653436333739333561366363303933383734386631343461 +61343838626161663062653633383931383835623532613832633335326632376263363939343238 +34303362636238623838396264633139343564653630383566383364376232303165323536636239 +61353230666237316163336163373662383961666637393732643465396539323765666637313736 +65626539343730343161376461343239663935373732373430626435633930656332313231393532 +37633539346637643162396134653162616636326635313965633862653862363636646134333730 +66343762363734623232316263383939666663613535636462396332393131333761613635373931 +30316239643934333161326264666533653864643836616334376464316562336135373966653366 +36623234313162313233653962623963343236353334356563356330383739666565366632336165 +37663830353262643163643664336637396236626332393737303663373031663633323032383731 +64333466623831636564663963363963366539353363303864643732366232346435363730653664 +30653934306335326137313030323834383861393264373562613637643262653466313062636362 +63366264633932663963333233613066653261656231336132626161333961333737333062303062 +38343339636566323634393564613462373366393264636632653361336637383336316335663030 +64303739323735646239363363383030653331356633326664663261353932353462376236303332 +35373564303235313764303365306663336565303830663230313066386233373430353234343263 +33313966656432663062396562313366383061393238353138373637396230653231346664323636 +36356636643131396335323733386363656566346533376239313836316439353738636634366536 +35396436323765633966623831663966356165336430373566656335666565353133336435353536 +66626366363037633131333238366130333032393831656631383935383165646435323165366137 +39376466613666336361323830663564366439373031383638653432656634663165313361306436 +38386338383961666164343039613063613436663231633138396133626266313738343939626462 +35343132616430666333366365643664653965356364393163666633636562346362373831396234 +39353361646339303861393534346364353366636335343435353331323431396364396362376462 +6634 diff --git a/host_vars/usegalaxy.cz/vars.yml b/host_vars/usegalaxy.cz/vars.yml index f11e57b0..39ab1405 100644 --- a/host_vars/usegalaxy.cz/vars.yml +++ b/host_vars/usegalaxy.cz/vars.yml @@ -4,7 +4,8 @@ extra_certbot_domains: # where to put most of the data; we use RBD or NBD volumes rbd_mount_point: /rbd -galaxy_mutable_data_dir: "{{ rbd_mount_point }}/data" +rbd_data_dir: "{{ rbd_mount_point }}/data" +galaxy_mutable_data_dir: "{{ rbd_data_dir }}" galaxy_commit_id: release_25.0 galaxy_build_client: false diff --git a/hosts.yml b/hosts.yml index 61cb4bce..3971a1fc 100644 --- a/hosts.yml +++ b/hosts.yml @@ -8,6 +8,10 @@ galaxyservers: ansible_user: debian galaxy-qa2.galaxy.cloud.e-infra.cz: ansible_user: debian + galaxy-re.grid.cesnet.cz: + ansible_user: galaxy + repeatexplorer-elixir.cerit-sc.cz: + ansible_user: galaxy dbservers: children: galaxyservers @@ -18,6 +22,10 @@ production: ansible_user: galaxy-cz galaxy-umsa.grid.cesnet.cz: ansible_user: galaxy + galaxy-re.grid.cesnet.cz: + ansible_user: galaxy + repeatexplorer-elixir.cerit-sc.cz: + ansible_user: galaxy cloudservers: hosts: diff --git a/proftpd.yml b/proftpd.yml new file mode 100644 index 00000000..734f3347 --- /dev/null +++ b/proftpd.yml @@ -0,0 +1,34 @@ +--- +- hosts: galaxyservers + name: apt update, python, pip + become: true + become_user: root + pre_tasks: + - ansible.builtin.apt: + name: + - python3-pip + - python-is-python3 + update_cache: yes + when: ansible_os_family == 'Debian' + + - name: Install Dependencies + package: + name: ['acl', 'bzip2', 'git', 'make', 'tar', 'proftpd-mod-ldap'] + + roles: + - galaxyproject.proftpd + + post_tasks: + - name: Check if ProFTPd LDAP config exists + stat: + path: "templates/{{ inventory_hostname }}/config/proftpd_ldap.conf.j2" + register: proftpd_ldap_config + + - name: Configure ProFTPd LDAP option + template: + src: "templates/{{ inventory_hostname }}/config/proftpd_ldap.conf.j2" + dest: "{{ proftpd_config_include_dir }}/06_ldap.conf" + backup: yes + when: proftpd_ldap_config.stat.exists + notify: + - reload proftpd diff --git a/regalaxy_tools_install.yml b/regalaxy_tools_install.yml new file mode 100644 index 00000000..66ea90e7 --- /dev/null +++ b/regalaxy_tools_install.yml @@ -0,0 +1,29 @@ +--- +- hosts: galaxyservers + become: true + become_user: root + tasks: + ## Install required Galaxy tools + - name: Install required tools - create Ephemeris venv + ansible.builtin.shell: + cmd: python3 -m venv ~/ephemeris_venv + - name: Install required tools - install Ephemeris + ansible.builtin.shell: + cmd: source ~/ephemeris_venv/bin/activate && pip install ephemeris + - name: Install required tools - install Galaxy tools + ansible.builtin.shell: + cmd: ~/ephemeris_venv/bin/shed-tools install -g https://{{ inventory_hostname }}{{ csnt_galaxy_url_prefix }} -a {{ api_key }} -t {{ playbook_dir }}/files/{{ inventory_hostname }}/regalaxy_tool_list.yaml + when: "inventory_hostname in ['repeatexplorer-elixir.cerit-sc.cz', 'galaxy-re.grid.cesnet.cz']" + - name: Set-up pre-defined integrated_tool_panel config file on RE instance only + ansible.builtin.copy: + src: "{{ playbook_dir }}/files/{{ inventory_hostname }}/regalaxy_integrated_tool_panel.xml" + dest: "{{ galaxy_mutable_config_dir }}/integrated_tool_panel.xml" + owner: "{{ galaxy_user_name }}" + group: "{{ galaxy_user_group_name }}" + mode: '0644' + backup: true + when: "inventory_hostname in ['repeatexplorer-elixir.cerit-sc.cz', 'galaxy-re.grid.cesnet.cz']" + - name: Restart galaxy + become: true + become_user: root + ansible.builtin.command: galaxyctl restart diff --git a/roles/galaxyproject.proftpd/.github/workflows/lint.yml b/roles/galaxyproject.proftpd/.github/workflows/lint.yml new file mode 100644 index 00000000..a28475ec --- /dev/null +++ b/roles/galaxyproject.proftpd/.github/workflows/lint.yml @@ -0,0 +1,19 @@ +name: ansible-lint +on: [pull_request_target] +jobs: + ansible-lint: + name: ansible-lint + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - uses: actions/setup-python@v2 + with: + python-version: '3.x' + + - name: ansible-lint + uses: reviewdog/action-ansiblelint@v1 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + reporter: github-pr-review + filter_mode: nofilter diff --git a/roles/galaxyproject.proftpd/.github/workflows/release.yml b/roles/galaxyproject.proftpd/.github/workflows/release.yml new file mode 100644 index 00000000..66d74848 --- /dev/null +++ b/roles/galaxyproject.proftpd/.github/workflows/release.yml @@ -0,0 +1,32 @@ +--- +# This workflow requires a GALAXY_API_KEY secret present in the GitHub +# repository or organization. +# +# See: https://github.com/marketplace/actions/publish-ansible-role-to-galaxy +# See: https://github.com/ansible/galaxy/issues/46 + +name: Release + +'on': + push: + tags: + - '*' + +jobs: + release: + name: Release + runs-on: ubuntu-latest + steps: + - name: Check out the codebase. + uses: actions/checkout@v2 + + - name: Set up Python 3. + uses: actions/setup-python@v2 + with: + python-version: '3.x' + + - name: Install Ansible. + run: pip3 install ansible-core + + - name: Trigger a new import on Galaxy. + run: ansible-galaxy role import --api-key ${{ secrets.GALAXY_API_KEY }} $(echo ${{ github.repository }} | cut -d/ -f1) $(echo ${{ github.repository }} | cut -d/ -f2) --branch main diff --git a/roles/galaxyproject.proftpd/.travis.yml b/roles/galaxyproject.proftpd/.travis.yml new file mode 100644 index 00000000..36bbf620 --- /dev/null +++ b/roles/galaxyproject.proftpd/.travis.yml @@ -0,0 +1,29 @@ +--- +language: python +python: "2.7" + +# Use the new container infrastructure +sudo: false + +# Install ansible +addons: + apt: + packages: + - python-pip + +install: + # Install ansible + - pip install ansible + + # Check ansible version + - ansible --version + + # Create ansible.cfg with correct roles_path + - printf '[defaults]\nroles_path=../' >ansible.cfg + +script: + # Basic role syntax check + - ansible-playbook tests/test.yml -i tests/inventory --syntax-check + +notifications: + webhooks: https://galaxy.ansible.com/api/v1/notifications/ \ No newline at end of file diff --git a/roles/galaxyproject.proftpd/README.md b/roles/galaxyproject.proftpd/README.md new file mode 100644 index 00000000..a707a757 --- /dev/null +++ b/roles/galaxyproject.proftpd/README.md @@ -0,0 +1,192 @@ +proftpd +======= + +An [Ansible][ansible] role for installing and managing [proftpd][proftpd] servers. This role is designed to facilitate +the installation of ProFTPD for [Galaxy][galaxy] servers, and can configure ProFTPD to authenticate users against the +Galaxy PostgreSQL database. It can also configure TLS for FTPS (**note: NOT SFTP**). + +[ansible]: http://www.ansible.com/ +[proftpd]: http://www.proftpd.org/ +[galaxy]: http://galaxyproject.org/ + +Requirements +------------ + +This role installs ProFTPD from APT on Debian systems, EPEL on Enterprise Linux systems. Other systems and installation +methods are not supported. + +Role Variables +-------------- + +### Required variables ### + +**Variables required if `proftpd_galaxy_auth` is set**: + +- `proftpd_sql_db`: Database name to connect to for authentication info. Can include host information, see the [ProFTPD + SQLConnectInfo documentation for the "connection-info" parameter][proftpd-sql-connect-info] for details. +- `galaxy_user`: The name of the user running the Galaxy server. +- `galaxy_ftp_upload_dir`: Path to the Galaxy FTP upload directory, should match `ftp_upload_dir` in your Galaxy config. + - `proftpd_create_ftp_upload_dir` can be used to allow the role to create this with owner `galaxy_user` +- Additionally, you should set `User` and `Group` in `proftpd_options` to the user and group names of your Galaxy user. + +[proftpd-sql-connect-info]: http://www.proftpd.org/docs/contrib/mod_sql.html#SQLConnectInfo + +### Optional variables ### + +**Configuration** + +- `proftpd_options`: Set arbitrary options in the server config context of `proftpd.conf` (they will actually be set + in an included config file). This is a list of hashes (dictionaries) where keys are ProFTPD config options and values + are the option's value. Block tags such as `` are not supported. Options set in `proftpd_options` will + cause matching options in the base `proftpd.conf` file to be commented out. +- `proftpd_global_options`: Set arbitrary options in the `` context, same format as `proftpd_options`. Options + set in `proftpd_global_options` will ***NOT*** cause matching options in the base `proftpd.conf` file to be commented + out. + +**Enabling/disabling optional features** + +- `proftpd_galaxy_auth`: Attempt to authenticate users against a [Galaxy][galaxy] database. +- `proftpd_conf_ssl_certificate` and `proftpd_conf_ssl_certificate_key`: If set, enables TLS autoconfiguration. See + **FTP over SSL/TLS** below. + +**Display-on-connect message** + +- `proftpd_display_connect`: Message to display when users connect to the FTP server. This should be the message, not + the path to a file (this role will create the file and set [DisplayConnect][proftpd-display-connect] accordingly. +- `proftpd_display_connect_context` (default: `server`): If set to `global`, place the `ServerConnect` directive into a + `` block. If set to `server`, it is placed in the server context. + +[proftpd-display-connect]: http://www.proftpd.org/docs/directives/linked/config_ref_DisplayConnect.html + +**FTP over SSL/TLS** + +These variables control the use of TLS. If unset, TLS will not be enabled. See [mod_tls documentation][proftpd-mod-tls] +and Example Playbook for usage. + +- `proftpd_deploy_ssl`: Enable/disable copying local SSL keys to the remote host +- `proftpd_ssl_src_dir`: Where to copy SSL certificates from. +- `proftpd_conf_ssl_certificate`: Path on the remote host where the SSL certificate file should be placed. +- `proftpd_conf_ssl_certificate_type`: Type of the SSL certificate file, either RSA (default) or EC. +- `proftpd_conf_ssl_certificate_key`: Path on the remote host where the SSL private key file should be placed. +- `proftpd_conf_ssl_ca_certificate`: Path on the remote host where the SSL CA certificate chain should be placed. See + the [TLSCertificateChainFile][proftpd-tls-certificate-chain-file] documentation for the format of this file. +- `sslkeys`: A hash (dictionary) containing private keys. Keys are the filenames (without leading path elements) + matching `proftpd_conf_ssl_certificate_key`. + `proftpd_tls_protocol` (default: `TLSv1.1 TLSv1.2`): Set `TlSProtocol`. +- `proftpd_tls_cipher_suite` (default: + `EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:EDH+aRSA:!RC4:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS`): + Set `TLSCipherSuite` +- `proftpd_tls_context` (default: `server`): If set to `global`, place TLS configuration directives that are + valid in the `` context into a `` block. If set to `server`, they are placed in the server context. +- `proftpd_use_mod_tls_shmcache`: (default: true): use TLSSessionCache, requires mod_tls_shmcache to be installed. +- `proftpd_tls_sesscache_path` (default: `/run/proftpd/sesscache`): Path to ProFTPD shm TLS session cache. +- `proftpd_tls_sesscache_timeout` (default: `300`): TLS session cache timeout (in seconds). +- `proftpd_tls_renegotiate`: (default: unset): TLS renegotation time (in seconds). +- `proftpd_tls_options`: (default: unset): Additional options for TLS, for example, `NoSessionReuseRequired`. + + +[proftpd-mod-tls]: http://www.proftpd.org/docs/contrib/mod_tls.html +[proftpd-tls-certificate-chain-file]: http://www.proftpd.org/docs/directives/linked/config_ref_TLSCertificateChainFile.html + +**Galaxy authentication options** + +These options are used if `proftpd_galaxy_auth` is set. + +- `proftpd_galaxy_options`: Additional options to set in the Galaxy authentication include file. Options set in + `proftpd_galaxy_options` will cause matching options in the base `proftpd.conf` file to be commented out. +- `proftpd_galaxy_default_options`: Default options set in the Galaxy authentication include file, you should only need + to explicitly set this if you need to remove items from the defaults. Matching options set in + `proftpd_galaxy_options` override the defaults. The defaults can be found in `defaults/main.yml`. +- `proftpd_sql_user` (default: the value of `galaxy_user`): Value of the `username` parameter to + [SQLConnectInfo][proftpd-sql-connect-info]. +- `proftpd_sql_password` (default: empty): Value of the `password` parameter to [SQLConnectInfo][proftpd-sql-connect-info]. +- `galaxy_user_uid` (default: looked up automatically): UID of the user running the Galaxy server. +- `galaxy_user_gid` (default: looked up automatically): GID of the user running the Galaxy server. +- `proftpd_galaxy_modules`: Default list of modules that will be loaded (uncommented in the base `proftpd.conf`) to + support Galaxy authentication, you should only need to explicitly set this if you need to change the default list. + The defaults can be found in `defaults/main.yml`. +- `proftpd_galaxy_auth_context` (default: `server`): If set to `global`, place Galaxy authentication directives + into a `` block. If set to `server`, they are placed in the server context. + +**Virtual servers/hosts** + +- `proftpd_virtualhosts`: Defines [ProFTPD virtual servers/hosts][proftpd-vhost]. If set, this should be a list where + each item is a hash (dict) with keys `id` (used in the vhost config file name), `address` (used in ``) and `options`, a list in the same format as `proftpd_options` below. Block tags such as `` are + not supported. + +It may be helpful to set `Port: 0` in `proftpd_options` to disable the server context when using virtual servers. + +[proftpd-vhost]: http://www.proftpd.org/docs/howto/Vhost.html + +Dependencies +------------ + +Although not a requirement, [geerlingguy.repo-epel][repo-epel] can be used to enable EPEL with Ansible. + +[repo-epel]: https://galaxy.ansible.com/geerlingguy/repo-epel/ + +Example Playbook +---------------- + +Install ProFTPD for Galaxy with TLS: + +```yaml +- name: Install and configure ProFTPD + hosts: ftpservers + remote_user: root + vars: + galaxy_user: galaxy + galaxy_ftp_upload: /srv/galaxy/ftp + proftpd_display_connect: | + example.org FTP server + + Unauthorized access is prohibited + proftpd_galaxy_auth: yes + proftpd_options: + - User: galaxy + - Group: galaxy + proftpd_sql_db: galaxy@/var/run/postgresql + proftpd_sql_user: galaxy + sslkeys: + 'snakeoil_privatekey.pem': | + -----BEGIN PRIVATE KEY----- + MIIE... + -----END PRIVATE KEY----- + proftpd_conf_ssl_certificate: snakeoil_cert.pem + proftpd_conf_ssl_certificate_key: snakeoil_privatekey.pem + proftpd_ssl_src_dir: files/ssl + + roles: + - galaxyproject.proftpd +``` + +If using virtual servers in conjunction with Galaxy authentication, [DefaultRoot][proftpd-default-root]'s `chroot(2)` +will fail when used inside of a ``. In this case, [mod_vroot][proftpd-mod-vroot] should be used (you may +find that it's already enabled for the server config context anyway). The following variables accomplish this: + +```yaml +proftpd_galaxy_auth_context: global +proftpd_galaxy_modules: + - mod_sql.c + - mod_sql_passwd.c + - mod_sql_postgres.c + - mod_vroot.c +proftpd_galaxy_options: + - VRootEngine: 'on' +``` + +[proftpd-default-root]: http://www.proftpd.org/docs/directives/linked/config_ref_DefaultRoot.html +[proftpd-mod-vroot]: http://www.castaglia.org/proftpd/modules/mod_vroot.html + +License +------- + +[Academic Free License ("AFL") v. 3.0][afl] + +[afl]: http://opensource.org/licenses/AFL-3.0 + +Author Information +------------------ + +[Nate Coraor](https://github.com/natefoo) diff --git a/roles/galaxyproject.proftpd/defaults/main.yml b/roles/galaxyproject.proftpd/defaults/main.yml new file mode 100644 index 00000000..3af4b141 --- /dev/null +++ b/roles/galaxyproject.proftpd/defaults/main.yml @@ -0,0 +1,34 @@ +--- +# defaults file for galaxyproject.proftpd + +proftpd_ssl_src_dir: files/ssl + +proftpd_galaxy_modules: + - mod_sql.c + - mod_sql_passwd.c + - mod_sql_postgres.c + +proftpd_galaxy_default_options: + - AuthOrder: mod_sql.c + - AuthPAM: 'off' + - Umask: '077' + - DefaultRoot: '~' + - CreateHome: on dirmode 700 + +proftpd_virtualhosts: [] + +proftpd_display_connect_context: 'server' +proftpd_tls_context: 'server' +proftpd_galaxy_auth_context: 'server' + +proftpd_tls_sesscache_timeout: 300 +proftpd_tls_renegotiate: null +proftpd_tls_options: null +proftpd_use_mod_tls_shmcache: true +proftpd_conf_ssl_certificate_type: 'RSA' + +proftpd_deploy_ssl: false + +proftpd_create_ftp_upload_dir: false + +__galaxy_user_name: "{{ galaxy_user.name | default(galaxy_user) }}" diff --git a/roles/galaxyproject.proftpd/handlers/main.yml b/roles/galaxyproject.proftpd/handlers/main.yml new file mode 100644 index 00000000..bb513597 --- /dev/null +++ b/roles/galaxyproject.proftpd/handlers/main.yml @@ -0,0 +1,12 @@ +--- +# handlers file for galaxyproject.proftpd + +- name: reload proftpd + service: + name: proftpd + state: reloaded + +- name: restart proftpd + service: + name: proftpd + state: restarted diff --git a/roles/galaxyproject.proftpd/meta/.galaxy_install_info b/roles/galaxyproject.proftpd/meta/.galaxy_install_info new file mode 100644 index 00000000..0b0d8daf --- /dev/null +++ b/roles/galaxyproject.proftpd/meta/.galaxy_install_info @@ -0,0 +1,2 @@ +install_date: 'Mon 19 May 2025 08:21:22 AM ' +version: 0.3.3 diff --git a/roles/galaxyproject.proftpd/meta/main.yml b/roles/galaxyproject.proftpd/meta/main.yml new file mode 100644 index 00000000..d03cfb8b --- /dev/null +++ b/roles/galaxyproject.proftpd/meta/main.yml @@ -0,0 +1,29 @@ +galaxy_info: + role_name: proftpd + namespace: galaxyproject + author: galaxyproject + description: Install and Configure ProFTPD (optionally, for Galaxy Servers). + company: The Galaxy Project + license: AFL v3.0 + min_ansible_version: 1.8 + platforms: + - name: Ubuntu + versions: + - trusty + - utopic + - vivid + - wily + - xenial + - yakkety + - name: Debian + versions: + - wheezy + - jessie + - stretch + - name: EL + versions: + - 7 + galaxy_tags: + - system + - ftp +dependencies: [] diff --git a/roles/galaxyproject.proftpd/tasks/debian.yml b/roles/galaxyproject.proftpd/tasks/debian.yml new file mode 100644 index 00000000..bea5370a --- /dev/null +++ b/roles/galaxyproject.proftpd/tasks/debian.yml @@ -0,0 +1,13 @@ +--- +# tasks file for galaxyproject.proftpd + +- name: Install ProFTPD (apt) + apt: + name: ['proftpd-basic', 'proftpd-mod-pgsql'] + +- name: Change Include + replace: + path: "{{ proftpd_config_file }}" + regexp: "Include {{ proftpd_config_dir }}/conf.d/$" + backup: yes + replace: "Include {{ proftpd_config_include_dir }}/*.conf" diff --git a/roles/galaxyproject.proftpd/tasks/galaxy_auth.yml b/roles/galaxyproject.proftpd/tasks/galaxy_auth.yml new file mode 100644 index 00000000..44e6a826 --- /dev/null +++ b/roles/galaxyproject.proftpd/tasks/galaxy_auth.yml @@ -0,0 +1,55 @@ +--- +# tasks file for galaxyproject.proftpd + +- name: Comment Galaxy proftpd.conf options + lineinfile: + name: "{{ proftpd_config_file }}" + regexp: '^(\s*{{ item | first }}\s.*)' + backrefs: yes + line: '#\1 # commented by Ansible' + backup: yes + with_flattened: + - "{{ proftpd_galaxy_default_options }}" + - "{{ proftpd_galaxy_options | default([]) }}" + notify: + - reload proftpd + +- name: Uncomment LoadModule directives for Galaxy + lineinfile: + name: "{{ proftpd_modules_config_file }}" + regexp: '^#\s*(LoadModule\s+{{ item }}.*)$' + backrefs: yes + line: '\1 # uncommented by Ansible' + backup: yes + with_items: "{{ proftpd_galaxy_modules }}" + notify: + - reload proftpd + +- name: Lookup Galaxy user UID + command: id -u {{ __galaxy_user_name }} + register: galaxy_user_uid_out + changed_when: no + when: galaxy_user_uid is undefined + +- name: Set Galaxy user UID fact + set_fact: + galaxy_user_uid: "{{ galaxy_user_uid_out.stdout }}" + when: galaxy_user_uid is undefined + +- name: Lookup Galaxy user GID + command: id -g {{ __galaxy_user_name }} + register: galaxy_user_gid_out + changed_when: no + when: galaxy_user_gid is undefined + +- name: Set Galaxy user GID fact + set_fact: + galaxy_user_gid: "{{ galaxy_user_gid_out.stdout }}" + when: galaxy_user_gid is undefined + +- name: Configure Galaxy authentication options + template: + src: galaxy_auth.conf.j2 + dest: "{{ proftpd_config_include_dir }}/10_galaxy_auth.conf" + notify: + - reload proftpd diff --git a/roles/galaxyproject.proftpd/tasks/main.yml b/roles/galaxyproject.proftpd/tasks/main.yml new file mode 100644 index 00000000..cdd9e3b5 --- /dev/null +++ b/roles/galaxyproject.proftpd/tasks/main.yml @@ -0,0 +1,85 @@ +--- +# tasks file for galaxyproject.proftpd + +- name: Set OS-specific variables + include_vars: "{{ ansible_os_family | lower }}.yml" + +- name: Include initial OS-specific tasks + include_tasks: "{{ ansible_os_family | lower}}.yml" + +- name: Comment base proftpd.conf options + lineinfile: + name: "{{ proftpd_config_file }}" + regexp: '^(\s*{{ item | first }}\s.*)' + backrefs: yes + line: '#\1 # commented by Ansible' + backup: yes + with_items: "{{ proftpd_options | default([]) }}" + notify: + - reload proftpd + +- name: Create base proftpd.conf options in include + template: + src: server.conf.j2 + dest: "{{ proftpd_config_include_dir }}/00_server.conf" + backup: yes + with_items: "{{ proftpd_options | default([]) }}" + notify: + - restart proftpd + +- name: Create DisplayConnect option in include if set + copy: + content: | + {% if proftpd_display_connect_context == 'global' %} + + {% endif -%} + DisplayConnect {{ proftpd_config_dir }}/proftpd_display_connect.txt + {% if proftpd_display_connect_context == 'global' %} + + {% endif -%} + dest: "{{ proftpd_config_include_dir }}/02_display_connect.conf" + when: proftpd_display_connect is defined + +- name: Copy DisplayConnect contents + copy: + content: "{{ proftpd_display_connect }}" + dest: "{{ proftpd_config_dir }}/proftpd_display_connect.txt" + when: proftpd_display_connect is defined + +- name: Create global config options in include + template: + src: global.conf.j2 + dest: "{{ proftpd_config_include_dir }}/03_global.conf" + backup: yes + when: proftpd_global_options is defined + notify: + - restart proftpd + +- name: Include tasks for TLS configuration + include_tasks: tls.yml + when: proftpd_conf_ssl_certificate is defined and proftpd_conf_ssl_certificate_key is defined + +- name: Include tasks for Galaxy authentication + include_tasks: galaxy_auth.yml + when: proftpd_galaxy_auth + +- name: Create VirtualHost configurations + template: + src: virtualhost.conf.j2 + dest: "{{ proftpd_config_include_dir }}/15_virtualhost_{{ item.id }}.conf" + backup: yes + with_items: "{{ proftpd_virtualhosts | default([]) }}" + +- name: Create parent ftp directory if needed + file: + path: "{{ galaxy_ftp_upload_dir }}" + owner: "{{ __galaxy_user_name }}" + mode: "0750" + state: directory + when: proftpd_create_ftp_upload_dir + +- name: Ensure ProFTPD is started and enabled + service: + name: proftpd + state: started + enabled: yes diff --git a/roles/galaxyproject.proftpd/tasks/redhat.yml b/roles/galaxyproject.proftpd/tasks/redhat.yml new file mode 100644 index 00000000..4ae0ece8 --- /dev/null +++ b/roles/galaxyproject.proftpd/tasks/redhat.yml @@ -0,0 +1,23 @@ +--- +# tasks file for galaxyproject.proftpd + +- name: Install ProFTPD (yum) + yum: + name: "{{ item }}" + with_items: + - proftpd + - proftpd-postgresql + - proftpd-utils + +- name: Add include statement to proftpd.conf + lineinfile: + name: "{{ proftpd_config_file }}" + insertafter: EOF + line: "Include {{ proftpd_config_include_dir }}/*.conf" + notify: + - reload proftpd + +- name: Create proftpd.conf include directory + file: + name: "{{ proftpd_config_include_dir }}" + state: directory diff --git a/roles/galaxyproject.proftpd/tasks/tls.yml b/roles/galaxyproject.proftpd/tasks/tls.yml new file mode 100644 index 00000000..d90e24d5 --- /dev/null +++ b/roles/galaxyproject.proftpd/tasks/tls.yml @@ -0,0 +1,45 @@ +--- +# tasks file for galaxyproject.proftpd + +- name: Configure TLS options + template: + src: tls.conf.j2 + dest: "{{ proftpd_config_include_dir }}/05_tls.conf" + backup: yes + notify: + - reload proftpd + +- name: Create TLS directories + file: + path: "{{ item | dirname }}" + state: directory + mode: 0755 + with_items: + - "{{ proftpd_conf_ssl_certificate | default('') }}" + - "{{ proftpd_conf_ssl_certificate_key | default('') }}" + when: proftpd_deploy_ssl + +- name: Install TLS CA certificate chain + copy: + src: "{{ proftpd_ssl_src_dir }}/{{ proftpd_conf_ssl_ca_certificate | basename }}" + dest: "{{ proftpd_conf_ssl_ca_certificate }}" + when: proftpd_deploy_ssl and proftpd_conf_ssl_ca_certificate is defined + notify: + - reload proftpd + +- name: Install TLS certificate + copy: + src: "{{ proftpd_ssl_src_dir }}/{{ proftpd_conf_ssl_certificate | basename }}" + dest: "{{ proftpd_conf_ssl_certificate }}" + when: proftpd_deploy_ssl + notify: + - reload proftpd + +- name: Install TLS private key + copy: + content: "{{ sslkeys[proftpd_conf_ssl_certificate_key | basename] }}" + dest: "{{ proftpd_conf_ssl_certificate_key }}" + mode: 0400 + when: proftpd_deploy_ssl + notify: + - reload proftpd diff --git a/roles/galaxyproject.proftpd/templates/galaxy_auth.conf.j2 b/roles/galaxyproject.proftpd/templates/galaxy_auth.conf.j2 new file mode 100644 index 00000000..f58daa12 --- /dev/null +++ b/roles/galaxyproject.proftpd/templates/galaxy_auth.conf.j2 @@ -0,0 +1,60 @@ +## +## This file is maintained by Ansible - CHANGES WILL BE OVERWRITTEN +## + +{% if proftpd_galaxy_auth_context == 'global' %} + +{% endif %} + +# Options from proftpd_galaxy_default_options +{% for pair in proftpd_galaxy_default_options -%} +{% for key in pair -%} +{{ key }} {{ pair[key] }} +{% endfor %} +{% endfor %} + +# Options from proftpd_galaxy_options +{% for pair in proftpd_galaxy_options | default([]) -%} +{% for key in pair -%} +{{ key }} {{ pair[key] }} +{% endfor %} +{% endfor %} + +# Allow users to overwrite and resume uploads +AllowOverwrite on +AllowStoreRestart on + +# Deny use of commands that allow modifying modification times and retrieving files + + DenyAll + + +# Basic module setup +SQLEngine on +SQLPasswordEngine on +SQLLogFile /var/log/proftpd/sql.log +SQLBackend postgres +SQLAuthenticate users + +# Database connection info +SQLConnectInfo {{ proftpd_sql_db }} {{ proftpd_sql_user | default(__galaxy_user_name) }} {{ proftpd_sql_password | default('') }} + +# Authenticate with PBKDF2, fall back to SHA1 +SQLAuthTypes PBKDF2 SHA1 +SQLPasswordPBKDF2 sql:/GetPBKDF2Params +SQLPasswordEncoding base64 + +# Set uid and gid of Galaxy user +SQLDefaultUID {{ galaxy_user_uid }} +SQLDefaultGID {{ galaxy_user_gid }} + +# Define named queries for user/salt lookups +SQLUserInfo custom:/LookupGalaxyUser +SQLPasswordUserSalt sql:/GetUserSalt +SQLNamedQuery GetPBKDF2Params SELECT "(CASE WHEN split_part(password, '$', 1) = 'PBKDF2' THEN UPPER(split_part(password, '$', 2)) ELSE 'SHA256' END), (CASE WHEN split_part(password, '$', 1) = 'PBKDF2' THEN split_part(password, '$', 3) ELSE '10000' END), 24 FROM galaxy_user WHERE email='%U'" +SQLNamedQuery GetUserSalt SELECT "(CASE WHEN split_part(password, '$', 1) = 'PBKDF2' THEN split_part(password, '$', 4) END) FROM galaxy_user WHERE email='%U'" +SQLNamedQuery LookupGalaxyUser SELECT "email, (CASE WHEN split_part(password, '$', 1) = 'PBKDF2' THEN split_part(password, '$', 5) ELSE encode(decode(password, 'hex'), 'base64') END),'{{ __galaxy_user_name }}','{{ __galaxy_user_name }}','{{ galaxy_ftp_upload_dir }}/%U','/bin/bash' FROM galaxy_user WHERE email='%U'" + +{% if proftpd_galaxy_auth_context == 'global' %} + +{% endif %} diff --git a/roles/galaxyproject.proftpd/templates/global.conf.j2 b/roles/galaxyproject.proftpd/templates/global.conf.j2 new file mode 100644 index 00000000..c2b83c6e --- /dev/null +++ b/roles/galaxyproject.proftpd/templates/global.conf.j2 @@ -0,0 +1,11 @@ +## +## This file is maintained by Ansible - CHANGES WILL BE OVERWRITTEN +## + + +{% for pair in proftpd_global_options %} +{% for key in pair %} +{{ key }} {{ pair[key] }} +{% endfor %} +{% endfor %} + diff --git a/roles/galaxyproject.proftpd/templates/server.conf.j2 b/roles/galaxyproject.proftpd/templates/server.conf.j2 new file mode 100644 index 00000000..a7803826 --- /dev/null +++ b/roles/galaxyproject.proftpd/templates/server.conf.j2 @@ -0,0 +1,9 @@ +## +## This file is maintained by Ansible - CHANGES WILL BE OVERWRITTEN +## + +{% for pair in proftpd_options %} +{% for key in pair %} +{{ key }} {{ pair[key] }} +{% endfor %} +{% endfor %} diff --git a/roles/galaxyproject.proftpd/templates/tls.conf.j2 b/roles/galaxyproject.proftpd/templates/tls.conf.j2 new file mode 100644 index 00000000..238e3832 --- /dev/null +++ b/roles/galaxyproject.proftpd/templates/tls.conf.j2 @@ -0,0 +1,41 @@ +## +## This file is maintained by Ansible - CHANGES WILL BE OVERWRITTEN +## + +# Enable session reuse (must be in the server context) + +{% if proftpd_use_mod_tls_shmcache %} +LoadModule mod_tls_shmcache.c +TLSSessionCache shm:/file={{ proftpd_tls_sesscache_path }}&size=8388608 {{ proftpd_tls_sesscache_timeout }} +{% endif %} +{{ 'TLSRenegotiate ' ~ proftpd_tls_renegotiate if proftpd_tls_renegotiate else '' }} + +{% if proftpd_tls_context == 'global' %} + +{% endif %} + +# Enable TLS +LoadModule mod_tls.c +TLSEngine on +TLSLog {{ proftpd_log_dir | default('/var/log/proftpd') }}/tls.log + +# Limit allowed TLS protocols +TLSProtocol {{ proftpd_tls_protocol | default('TLSv1.1 TLSv1.2') }} + +# Require TLS +TLSRequired {{ proftpd_tls_required | default('on') }} + +{{ 'TLSOptions ' ~ proftpd_tls_options if proftpd_tls_options else '' }} + +# Limit TLS ciphers +TLSServerCipherPreference on +TLSCipherSuite {{ proftpd_tls_cipher_suite | default('EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:EDH+aRSA:!RC4:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS') }} + +# Cert/Key +{{ 'TLSCertificateChainFile ' + proftpd_conf_ssl_ca_certificate if proftpd_conf_ssl_ca_certificate is defined else '' }} +TLS{{ proftpd_conf_ssl_certificate_type }}CertificateFile {{ proftpd_conf_ssl_certificate }} +TLS{{ proftpd_conf_ssl_certificate_type }}CertificateKeyFile {{ proftpd_conf_ssl_certificate_key }} + +{% if proftpd_tls_context == 'global' %} + +{% endif %} diff --git a/roles/galaxyproject.proftpd/templates/virtualhost.conf.j2 b/roles/galaxyproject.proftpd/templates/virtualhost.conf.j2 new file mode 100644 index 00000000..c0281fc2 --- /dev/null +++ b/roles/galaxyproject.proftpd/templates/virtualhost.conf.j2 @@ -0,0 +1,11 @@ +## +## This file is maintained by Ansible - CHANGES WILL BE OVERWRITTEN +## + + +{% for pair in item.options -%} +{% for key in pair -%} + {{ key }} {{ pair[key] }} +{% endfor %} +{% endfor %} + diff --git a/roles/galaxyproject.proftpd/tests/inventory b/roles/galaxyproject.proftpd/tests/inventory new file mode 100644 index 00000000..d18580b3 --- /dev/null +++ b/roles/galaxyproject.proftpd/tests/inventory @@ -0,0 +1 @@ +localhost \ No newline at end of file diff --git a/roles/galaxyproject.proftpd/tests/test.yml b/roles/galaxyproject.proftpd/tests/test.yml new file mode 100644 index 00000000..c8541711 --- /dev/null +++ b/roles/galaxyproject.proftpd/tests/test.yml @@ -0,0 +1,5 @@ +--- +- hosts: localhost + remote_user: root + roles: + - galaxyproject.proftpd \ No newline at end of file diff --git a/roles/galaxyproject.proftpd/vars/debian.yml b/roles/galaxyproject.proftpd/vars/debian.yml new file mode 100644 index 00000000..4d897722 --- /dev/null +++ b/roles/galaxyproject.proftpd/vars/debian.yml @@ -0,0 +1,7 @@ +--- + +proftpd_config_dir: /etc/proftpd +proftpd_config_file: "{{ proftpd_config_dir }}/proftpd.conf" +proftpd_modules_config_file: "{{ proftpd_config_dir }}/modules.conf" +proftpd_config_include_dir: "{{ proftpd_config_dir }}/conf.d" +proftpd_tls_sesscache_path: /run/proftpd_sesscache diff --git a/roles/galaxyproject.proftpd/vars/main.yml b/roles/galaxyproject.proftpd/vars/main.yml new file mode 100644 index 00000000..56eb2d45 --- /dev/null +++ b/roles/galaxyproject.proftpd/vars/main.yml @@ -0,0 +1,2 @@ +--- +# vars file for galaxyproject.proftpd diff --git a/roles/galaxyproject.proftpd/vars/redhat.yml b/roles/galaxyproject.proftpd/vars/redhat.yml new file mode 100644 index 00000000..04d54858 --- /dev/null +++ b/roles/galaxyproject.proftpd/vars/redhat.yml @@ -0,0 +1,7 @@ +--- + +proftpd_config_dir: /etc +proftpd_config_file: "{{ proftpd_config_dir }}/proftpd.conf" +proftpd_modules_config_file: "{{ proftpd_config_dir }}/proftpd.conf" +proftpd_config_include_dir: "{{ proftpd_config_dir }}/proftpd.conf.d" +proftpd_tls_sesscache_path: /run/proftpd/sesscache diff --git a/templates/galaxy-re.grid.cesnet.cz/config/auth_conf.xml.j2 b/templates/galaxy-re.grid.cesnet.cz/config/auth_conf.xml.j2 new file mode 100644 index 00000000..0f4afe43 --- /dev/null +++ b/templates/galaxy-re.grid.cesnet.cz/config/auth_conf.xml.j2 @@ -0,0 +1,146 @@ + + + + ldap + + + + + + Challenge + + + True + + + + + False + + + False + + + False + + + False + + + ldaps://perun.cesnet.cz:636 + + + + + OPT_X_TLS_REQUIRE_CERT=OPT_X_TLS_ALLOW + + + True + + + False + + + + + + + + + + + + + login;x-ns-einfra + dc=perun,dc=cesnet,dc=cz + + (&(objectclass=perunUser)(login;x-ns-einfra={username})) + perunGroupId={{ ldap_perun_group_id }},perunVoId={{ ldap_perun_vo_id }},dc=perun,dc=cesnet,dc=cz + + + + + + + perunUserId={{ ldap_perun_user_id }},ou=People,dc=perun,dc=cesnet,dc=cz + {{ ldap_user_password }} + + + + + + + {dn} + {password} + {username} + {username}@repeatexplorer-elixir.cerit-sc.cz + {gid} + + + + + + + + diff --git a/templates/galaxy-re.grid.cesnet.cz/config/local_tool_conf.xml.j2 b/templates/galaxy-re.grid.cesnet.cz/config/local_tool_conf.xml.j2 new file mode 100644 index 00000000..fa5dfdc9 --- /dev/null +++ b/templates/galaxy-re.grid.cesnet.cz/config/local_tool_conf.xml.j2 @@ -0,0 +1,8 @@ + + +
+
+
diff --git a/templates/galaxy-re.grid.cesnet.cz/config/object_store_conf.xml.j2 b/templates/galaxy-re.grid.cesnet.cz/config/object_store_conf.xml.j2 new file mode 100644 index 00000000..dc79aba6 --- /dev/null +++ b/templates/galaxy-re.grid.cesnet.cz/config/object_store_conf.xml.j2 @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/templates/galaxy-re.grid.cesnet.cz/config/proftpd_ldap.conf.j2 b/templates/galaxy-re.grid.cesnet.cz/config/proftpd_ldap.conf.j2 new file mode 100644 index 00000000..c7135ae7 --- /dev/null +++ b/templates/galaxy-re.grid.cesnet.cz/config/proftpd_ldap.conf.j2 @@ -0,0 +1,38 @@ +# +# Proftpd sample configuration for LDAP authentication. +# +# (This is not to be used if you prefer a PAM-based LDAP authentication) +# + +##DEMON: I put it here, because it should be somewhere if proftpd_galaxy_auth is not defined (i.e., used) +# Deny use of commands that allow modifying modification times and retrieving files + + DenyAll + + + +# Enable LDAP module +LoadModule mod_ldap.c + +# +# This is used for encrypted LDAPS connections +# +LDAPLog /var/log/proftpd/ldap.log +LDAPServer ldaps://perun.metacentrum.cz/??sub +LDAPBindDN "perunUserId={{ ldap_perun_user_id }},ou=People,dc=perun,dc=cesnet,dc=cz" "{{ ldap_user_password }}" +LDAPUsers "dc=perun,dc=cesnet,dc=cz" "(&(login=%v)(objectclass=perunUser)(memberof=perunGroupId={{ ldap_perun_group_id }},perunVoId={{ ldap_perun_vo_id }},dc=perun,dc=cesnet,dc=cz))" +LDAPSearchScope subtree +#set where to find attr +LDAPAttr uid login;x-ns-einfra +LDAPAttr uidNumber uidNumber;x-ns-cerit +#set uid to galaxyelixir and gid to meta +LDAPDefaultUID {{ galaxy_user_id }} +LDAPForceDefaultUID on +LDAPDefaultGID {{ galaxy_user_group_gid }} +LDAPForceDefaultGID on +#set homedir creation +LDAPGenerateHomedir on 700 +LDAPGenerateHomedirPrefix {{ galaxy_ftp_upload_dir }}/%u@{{ galaxy_users_domain }} +LDAPForceGeneratedHomedir on +LDAPGenerateHomedirPrefixNoUsername on + diff --git a/templates/galaxy-re.grid.cesnet.cz/static/welcome.html b/templates/galaxy-re.grid.cesnet.cz/static/welcome.html new file mode 100644 index 00000000..8bacb2a2 --- /dev/null +++ b/templates/galaxy-re.grid.cesnet.cz/static/welcome.html @@ -0,0 +1,118 @@ + + +

+

+

Developed and maintained by the Laboratory of Molecular Cytogenetics, Institute of Plant Molecular Biology, Biology Centre CAS, Ceske Budejovice, Czech Republic

+

This RepeatExplorer Galaxy portal is a part of services provided by ELIXIR (European Research Infrastructure for Biological Information). Please acknowledge this fact in your publications by adding a statement: “Computational resources for RepeatExplorer analysis were provided by the ELIXIR-CZ project (LM2023055), part of the international ELIXIR infrastructure.”

+
+

ELIXIR

+
+
+

Contact information

+

If you need help, need to increase a data quota, or want to report a problem, please email the server administrator. If you encounter an error while running a tool, please report a bug using the bug icon in the dataset history.

+
+

Resources

+ +

REXdb

+

RepeatExplorer2, DANTE and DANTE_LTR tools use the REXdb database. REXdb is a comprehensive database of conserved protein domain sequences extracted from all types transposable elementa found in plants. More information about REXdb can be found in related publication or in REXdb repository.

+

REXdb versions included in the server:

+
    +
  • Viridiplantae 4.0 - The latest version, updated on 2024-11-06. This version covers additional sequences and lineages from non-angiosperm species including gymnosperms, ferns, and mosses
  • +
  • Viridiplantae 3.0 - This version mainly covers domains extracted from elements of angiosperm species
  • +
  • Viridiplantae 2.2
  • +
  • Metazoa 3.0
  • +
  • Metazoa 2.0
  • +
+
+

Common Use Cases of RepeatExplorer Server

+

The RepeatExplorer server provides a suite of tools designed for the comprehensive analysis of repetitive DNA sequences in genomic data. Here are the most common use cases for utilizing these tools:

+
    +
  • Annotation of repeats directly from low coverage sequencing: It can be accomplished using the RepeatExplorer2 tool. This approach is ideal for initial exploration and annotation of repetitive sequences using low coverage data (refer to protocol 1 in the step-by-step protocols above).

  • +
  • Comparative analysis of repeats in multiple species from low coverage sequencing reads: Use protocol 2 for analyzing repetitive DNA across different species.

  • +
  • Tandem repeat annotation from low coverage sequencing: If your focus is primarily on tandem repeats, use the Tandem Repeat Analyzer tool (TAREAN). See protocol 3 in the step-by-step protocols for details.

  • +
  • Chip-Seq experiments: The ChIP-seq Mapper tool identifies centromeric repeats from CENH3 ChIP-seq data without the need for a complete genome assembly, leveraging assembled contigs from repeat clusters as a reference for mapping reads and highlighting significantly enriched repeats (refer to protocol 4).

  • +
  • Annotation of full-Length LTR-retrotransposons in genome assemblies: For detailed annotation of LTR-retrotransposons within assembled genomes, use the DANTE + DANTE_LTR tools. (see https://github.com/kavonrtep/dante_ltr for details)

  • +
  • Annotation of tandem repeats in genome assemblies: The TideCluster tools are designed for the annotation and analysis of tandem repeats within genome assemblies (see https://github.com/kavonrtep/TideCluster for more information).

  • +
+
+ + +
+

How to Cite

+

Novak, P., Neumann, P., Macas, J. (2020) – Global analysis of repetitive DNA from unassembled sequence reads using RepeatExplorer2. Nature Protocols 15:3745–3776.

+

Novak, P., Neumann, P., Pech, J., Steinhaisl, J., Macas, J. (2013) - RepeatExplorer: a Galaxy-based web server for genome-wide characterization of eukaryotic repetitive elements from next-generation sequence reads. Bioinformatics 29:792-793.

+

Classification of repetitive elements using REXdb:

+

Neumann, P., Novak, P., Hostakova, N., Macas, J. (2019) – Systematic survey of plant LTR-retrotransposons elucidates phylogenetic relationships of their polyprotein domains and provides a reference for element classification. Mobile DNA 10:1.

+

The principle of repeat identification implemented in the RepeatExplorer:

+

Novak, P., Neumann, P., Macas, J. (2010) - Graph-based clustering and characterization of repetitive sequences in next-generation sequencing data. BMC Bioinformatics 11:378.

+

Using TAREAN for satellite repeat detection and characterization:

+

Novak, P., Robledillo, L.A.,Koblizkova, A., Vrbova, I., Neumann, P., Macas, J. (2017) - TAREAN: a computational tool for identification and characterization of satellite DNA from unassembled short reads. Nucleic Acid Research 45:e111

+

Novak, P., Hostakova, N., Neumann, P., Macas, J. (2024) – DANTE and DANTE_LTR: computational pipelines implementing lineage-centered annotation of LTR-retrotransposons in plant genomes. See our preprint on bioRxiv

+
+

Terms of Use

+

RepeatExplorer is provided as free, public, Internet accessible service, in the hope that it will be useful, but WITHOUT ANY WARRANTY. Data transfer are encrypted, but data storage is not. If there are restrictions on the way your research data can be stored and used, please consult your local institutional review board or the project PI before uploading it to this Galaxy server. If you have protected data, large data storage requirements, or short deadlines you are encouraged to set up your own local Galaxy instance with RepeatExplorer Alternatively, you can install only RepeatExplorer and use its command line version. If you need help with RepeatExplorer or you want to report a problem, please email the server administrator.

\ No newline at end of file diff --git a/templates/galaxy/config/auth_conf.xml.j2 b/templates/galaxy/config/auth_conf.xml.j2 new file mode 100644 index 00000000..9a90ba93 --- /dev/null +++ b/templates/galaxy/config/auth_conf.xml.j2 @@ -0,0 +1,2 @@ + + diff --git a/templates/galaxy/config/dependency_resolvers_conf.xml.j2 b/templates/galaxy/config/dependency_resolvers_conf.xml.j2 new file mode 100644 index 00000000..29a93812 --- /dev/null +++ b/templates/galaxy/config/dependency_resolvers_conf.xml.j2 @@ -0,0 +1,2 @@ + + diff --git a/templates/galaxy/config/proftpd_ldap.conf.j2 b/templates/galaxy/config/proftpd_ldap.conf.j2 new file mode 100644 index 00000000..8a9620b4 --- /dev/null +++ b/templates/galaxy/config/proftpd_ldap.conf.j2 @@ -0,0 +1,9 @@ +# +# Proftpd sample configuration for LDAP authentication. +# +# (This is not to be used if you prefer a PAM-based LDAP authentication) +# + + + + diff --git a/templates/galaxy/config/tpv_rules_meta.yml.j2 b/templates/galaxy/config/tpv_rules_meta.yml.j2 index c5c3cdbb..cf4b994c 100644 --- a/templates/galaxy/config/tpv_rules_meta.yml.j2 +++ b/templates/galaxy/config/tpv_rules_meta.yml.j2 @@ -3,16 +3,21 @@ global: tools: default: + abstract: True cores: 1 - mem: cores * 4 + mem: "int(cores * 4)" env: + # Ensuring a consistent collation environment is good for reproducibility. + - name: LC_ALL + value: C - name: GALAXY_SLOTS - value: "{cores}" + value: "{int(cores)}" - name: GALAXY_MEMORY_MB value: "{int(mem)*1000}" context: walltime: 24 scratch: 50 + queue: "{{ pulsar.pbs_queue }}" scheduling: require: - pulsar @@ -45,6 +50,7 @@ tools: walltime: 24 scratch: 25 gpu_mem: 16 + queue: "{{ pulsar.pbs_gpu_queue }}" scheduling: require: - rosettafold @@ -55,7 +61,7 @@ tools: require: - singularity - .*testing.*: + testing.*: cores: 1 mem: 1 context: @@ -66,7 +72,7 @@ tools: # Only allow the tool to be executed if the user is an admin admin_users = app.config.admin_users # last line in block must evaluate to a value - which determines whether the TPV if conditional matches or not - not user or (user.email not in admin_users and user.email not in ['galaxy@cesnet.cz','galaxy@usegalaxy.cz']) + not user or (user.email not in admin_users and user.email not in ['galaxy@cesnet.cz','galaxy@usegalaxy.cz','galaxyelixir@repeatexplorer-elixir.cerit-sc.cz']) fail: Unauthorized. Only admins can execute this tool. - id: resource_params_defined @@ -85,6 +91,7 @@ tools: walltime: 24 scratch: 100 gpu_mem: 16 + queue: "{{ pulsar.pbs_gpu_queue }}" env: MPLCONFIGDIR: "$SCRATCHDIR" ALPHAFOLD_DB: "/scratch.ssd/galaxyeu/permanent/alphafold.db" @@ -102,40 +109,87 @@ tools: context: walltime: 48 - toolshed.g2.bx.psu.edu/repos/iuc/megahit/megahit/.*: + .*/megahit/.*: cores: 16 mem: 256 context: walltime: 96 scratch: 100 + queue: elixircz + scheduling: + require: + - highmem - __SET_.*: + .*/fastq_groomer/.*: + cores: 1 + mem: 16 + + __DATA_FETCH__: inherits: local_running_tools __IMPORT_HISTORY__: - inherits: local_running_tools + inherits: local_running_tools + + __EXPORT_HISTORY__: + inherits: local_running_tools + + __SET_.*: + inherits: local_running_tools "Show .*": - inherits: local_running_tools + inherits: local_running_tools "Remove .*": - inherits: local_running_tools + inherits: local_running_tools cat1: - inherits: local_running_tools + inherits: local_running_tools .*/data_manager_.*: inherits: local_sing_running_tools + ebi_sra_main: + inherits: local_sing_running_tools + + sra_source: + inherits: local_sing_running_tools + + gff2bed1: + inherits: local_sing_running_tools + +# bed2gff1: +# inherits: local_sing_running_tools + + Extract_features1: + inherits: local_sing_running_tools + + export_remote: + inherits: local_sing_running_tools + + roles: training.*: max_cores: 4 - max_mem: max_cores * 4 # TODO check multiplier + max_mem: "int(max_cores * 3.8)" scheduling: require: - - pulsar - training + # DEMON: For testing purposes, set whatever you want here when needed + test.*: + scheduling: + require: + - test + + highmem: + mem: 512 + context: + queue: elixircz + scheduling: + require: + - highmem + + destinations: tpv_local: runner: local_runner @@ -157,8 +211,6 @@ destinations: singularity_enabled: true singularity_default_container_id: "/cvmfs/singularity.galaxyproject.org/all/python:3.8.3" env: - # Ensuring a consistent collation environment is good for reproducibility. - LC_ALL: C # The cache directory holds the docker containers that get converted SINGULARITY_CACHEDIR: "/cvmfs/singularity.galaxyproject.org/all/" # Singularity uses a temporary directory to build the squashfs filesystem @@ -166,15 +218,22 @@ destinations: scheduling: require: - local - prefer: - singularity - tpv_pulsar: + # DEMON: this is the common pulsar configuration + tpv_pulsar_common: + abstract: true runner: pulsar_tpv_runner - max_accepted_cores: 128 - max_accepted_mem: 512 + # DEMON: sum of cores in one VM (i.e., elmo5-*) + max_accepted_cores: 32 + # DEMON: sum of memory in one VM (i.e., elmo5-*) + max_accepted_mem: 185 + # DEMON: sum of GPUs in one VM (i.e., elmo5-*) max_accepted_gpus: 0 - max_cores: 16 + # DEMON: max number of cores one job will get + max_cores: 32 + # DEMON: max memory one job will get max_mem: 180 + # DEMON: max number of gpus one job will get max_gpus: 0 params: default_file_action: remote_rsync_transfer @@ -190,7 +249,27 @@ destinations: ssh_key: | {{ pulsar_ssh_key | indent(width=8,first=False) }} outputs_to_working_directory: false - submit_native_specification: "-l select=1:ncpus={int(cores)}:mem={int(mem)}gb:scratch_local={int(scratch)}gb -l walltime={int(walltime)}:00:00 -q {{ pulsar.pbs_queue }} -N {{ pulsar.nfs_prefix }}_j{job.id}__{tool.id if '/' not in tool.id else tool.id.split('/')[-2]+'_v'+tool.id.split('/')[-1]}__{user.username if user and hasattr(user, 'username') else 'anonymous'}" + submit_native_specification: "-l select=1:ncpus={int(cores)}:mem={int(mem)}gb:scratch_local={int(scratch)}gb -l walltime={int(walltime)}:00:00 -q {queue} -N {{ pulsar.nfs_prefix }}_j{job.id}__{tool.id if '/' not in tool.id else tool.id.split('/')[-2]+'_v'+tool.id.split('/')[-1]}__{user.username if user and hasattr(user, 'username') else 'anonymous'}" + env: + TMPDIR: $SCRATCHDIR + TMP: $SCRATCHDIR + TEMP: $SCRATCHDIR + scheduling: + require: + - pulsar + # DEMON: this one uses conda dependences (no singularity) + tpv_pulsar_conda: + inherits: tpv_pulsar_common + scheduling: + require: + - conda + reject: + - singularity + # DEMON: this one uses singularity exclusively (consider it as a default configuration) + tpv_pulsar: + inherits: tpv_pulsar_common + runner: pulsar_tpv_runner + params: singularity_enabled: true singularity_volumes: "$job_directory:rw,$tool_directory:ro,$job_directory/outputs:rw,$working_directory:rw,/cvmfs/data.galaxyproject.org:ro,$SCRATCHDIR:rw" singularity_default_container_id: "/cvmfs/singularity.galaxyproject.org/all/python:3.8.3" @@ -198,16 +277,13 @@ destinations: --env JAVA_OPTS="-Xmx{int(mem)}g -Djava.io.tmpdir=$SCRATCHDIR" --env JAVA_TOOL_OPTIONS="-Xmx{int(mem)}g -Djava.io.tmpdir=$SCRATCHDIR" env: - LC_ALL: C - TMPDIR: $SCRATCHDIR - TMP: $SCRATCHDIR - TEMP: $SCRATCHDIR SINGULARITY_CACHEDIR: "/cvmfs/singularity.galaxyproject.org/all/" SINGULARITY_TMPDIR: $SCRATCHDIR XDG_CACHE_HOME: $SCRATCHDIR scheduling: - require: - - pulsar + prefer: + - singularity + # DEMON: Some JAVA tools just ignore the traditional way of limiting the allowed memory tpv_pulsar_nasty_java: inherits: tpv_pulsar runner: pulsar_tpv_runner @@ -216,31 +292,49 @@ destinations: scheduling: require: - nasty-java + # DEMON: Pulsar for AlphaFold because of special configuration tpv_pulsar_alphafold: inherits: tpv_pulsar + runner: pulsar_tpv_runner max_accepted_gpus: 1 max_gpus: 1 - runner: pulsar_tpv_runner params: - singularity_run_extra_arguments: '--nv' + singularity_run_extra_arguments: '--nv --env SCRATCHDIR="$SCRATCHDIR" --env SCRATCH=$SCRATCHDIR' singularity_volumes: '$job_directory:ro,$tool_directory:ro,$job_directory/outputs:rw,$working_directory:rw,$SCRATCHDIR,$ALPHAFOLD_DB:/data/2.3:ro' - submit_native_specification: "-l select=1:ncpus={int(cores)}:mem={int(mem)}gb:scratch_local={int(scratch)}gb:ngpus={int(gpus)}:gpu_mem={int(gpu_mem)}gb -l walltime={int(walltime)}:00:00 -q {{ pulsar.pbs_gpu_queue }} -N {{ pulsar.nfs_prefix }}_j{job.id}__{tool.id if '/' not in tool.id else tool.id.split('/')[-2]+'_v'+tool.id.split('/')[-1]}__{user.username if user and hasattr(user, 'username') else 'anonymous'}" + submit_native_specification: "-l select=1:ncpus={int(cores)}:mem={int(mem)}gb:scratch_local={int(scratch)}gb:ngpus={int(gpus)}:gpu_mem={int(gpu_mem)}gb -l walltime={int(walltime)}:00:00 -q {queue} -N {{ pulsar.nfs_prefix }}_j{job.id}__{tool.id if '/' not in tool.id else tool.id.split('/')[-2]+'_v'+tool.id.split('/')[-1]}__{user.username if user and hasattr(user, 'username') else 'anonymous'}" scheduling: require: - alphafold + # DEMON: Pulsar for TIAAS. It could schedule to a private small queue to ensure the participants of some course will not have to wait tpv_pulsar_training: inherits: tpv_pulsar runner: pulsar_tpv_runner scheduling: require: - training -# usegalaxy.cz specific: + # DEMON: For tools/users that need more memory for their jobs. Current approach is to add the user to highmem role for some time. Better approach would be to implement rescheduling for PBS over Pulsar runner + tpv_pulsar_highmem: + inherits: tpv_pulsar + runner: pulsar_tpv_runner + max_accepted_mem: 512 + max_mem: 512 + scheduling: + require: + - highmem + # DEMON: For testing purposes, set whatever you want here when needed + tpv_pulsar_test: + inherits: tpv_pulsar + runner: pulsar_tpv_runner + scheduling: + require: + - test +# DEMON: usegalaxy.cz specific destinations (unfortunately, because of inheritance they cannot be in placed in instance-specific TPV config file) tpv_pulsar_rosettafold: inherits: tpv_pulsar runner: pulsar_tpv_runner params: singularity_enabled: false - submit_native_specification: "-l select=1:ncpus={int(cores)}:mem={int(mem)}gb:scratch_local={int(scratch)}gb:ngpus={int(gpus)}:gpu_mem={int(gpu_mem)}gb -l walltime={int(walltime)}:00:00 -q galaxy_gpu@pbs-m1.metacentrum.cz -N pulsar_cz_j{job.id}__{tool.id if '/' not in tool.id else tool.id.split('/')[-2]+'_v'+tool.id.split('/')[-1]}__{user.username if user and hasattr(user, 'username') else 'anonymous'}" + submit_native_specification: "-l select=1:ncpus={int(cores)}:mem={int(mem)}gb:scratch_local={int(scratch)}gb:ngpus={int(gpus)}:gpu_mem={int(gpu_mem)}gb -l walltime={int(walltime)}:00:00 -q {queue} -N pulsar_cz_j{job.id}__{tool.id if '/' not in tool.id else tool.id.split('/')[-2]+'_v'+tool.id.split('/')[-1]}__{user.username if user and hasattr(user, 'username') else 'anonymous'}" scheduling: require: - rosettafold diff --git a/templates/nginx/galaxy.j2 b/templates/nginx/galaxy.j2 index 2de0bb11..4cade006 100644 --- a/templates/nginx/galaxy.j2 +++ b/templates/nginx/galaxy.j2 @@ -1,12 +1,25 @@ +#DEMON: clearing user names of accidental blanks in postfix +map $remote_user $remote_user_clean { + "~(?[^ \t]+)" $name; +} + upstream galaxy { server {{ galaxy_config.gravity.gunicorn.bind }}; # Or if you serve galaxy at a path like http(s)://fqdn/galaxy # Remember to set galaxy_url_prefix in the galaxy.yml file. # server {{ galaxy_config.gravity.gunicorn.bind }}:/galaxy; + #DEMON: This hint actually didn't work back at time of setting this for RE Galaxy } server { +{% block root %} + {% if csnt_galaxy_url_prefix != '' %} + # main website serving as crossroad for registration and access to Galaxy + root /srv/welcome_page/welcome_page.clean; + {% endif %} +{% endblock root %} + # Listen on port 443 listen 443 ssl default_server; listen [::]:443 ssl default_server; @@ -24,10 +37,14 @@ server { proxy_read_timeout 600s; client_body_timeout 3600s; client_header_timeout 600s; +#DEMON: not sure if still need this. It used to be an optimization of data transfer from Pulsar to Galaxy for huge html_output_files (e.g., RepEx, TaReAn) but I can see, it's used only for TUS now +# proxy_request_buffering off; +# proxy_buffering off; +# proxy_http_version 1.1; # The most important location block, by default all requests are sent to gunicorn # If you serve galaxy at a path like /galaxy, change that below (and all other locations!) - location / { + location {{ csnt_galaxy_url_prefix }}/ { # Remove any forwarded headers that clients might have sent proxy_set_header X-Forwarded-For ""; proxy_set_header X-Forwarded-Proto ""; @@ -41,11 +58,24 @@ server { proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; + # DEMON: temp solution because of a bug + rewrite ^/galaxy/galaxy(.*)$ /galaxy$1 last; + # This is the backend to send the requests to proxy_pass http://galaxy; + + # Set up the error page directive for 403 errors + error_page 403 /warning.html; + error_page 502 /warning.html; } - location /api/upload/resumable_upload { + # Serve the warning page + location = /warning.html { + root /var/www/html; # Path to your warning page + internal; # Prevent direct access to this page + } + + location {{ csnt_galaxy_url_prefix }}/api/upload/resumable_upload { # Disable request and response buffering proxy_request_buffering off; proxy_buffering off; @@ -60,11 +90,18 @@ server { client_max_body_size 0; proxy_pass http://localhost:{{ galaxy_tusd_port }}/files; } + #DEMON: hopefully just a temporary hack, need to find out how to configure TUSd hook via ansible role + #DEMON: Not sure if we still need this + location /api/upload/hooks { + rewrite ^/api/upload/hooks(.*)$ {{ csnt_galaxy_url_prefix }}/api/upload/hooks$1 break; + proxy_pass https://{{ inventory_hostname }}; + } + # Static files can be more efficiently served by Nginx. Why send the # request to Gunicorn which should be spending its time doing more useful # things like serving Galaxy! - location /static { + location {{ csnt_galaxy_url_prefix }}/static { alias {{ galaxy_server_dir }}/static; expires 24h; } @@ -72,19 +109,19 @@ server { # In Galaxy instances started with run.sh, many config files are # automatically copied around. The welcome page is one of them. In # production, this step is skipped, so we will manually alias that. - location /static/welcome.html { + location {{ csnt_galaxy_url_prefix }}/static/welcome.html { alias {{ galaxy_mutable_config_dir }}/welcome.html; expires 24h; } # serve visualization and interactive environment plugin static content - location ~ ^/plugins/(?[^/]+?)/((?[^/_]*)_?)?(?[^/]*?)/static/(?.*?)$ { + location ~ ^{{ csnt_galaxy_url_prefix }}/plugins/(?[^/]+?)/((?[^/_]*)_?)?(?[^/]*?)/static/(?.*?)$ { alias {{ galaxy_server_dir }}/config/plugins/$plug_type/; try_files $vis_d/${vis_d}_${vis_name}/static/$static_file $vis_d/static/$static_file =404; } - location /robots.txt { + location {{ csnt_galaxy_url_prefix }}/robots.txt { alias {{ galaxy_server_dir }}/static/robots.txt; } @@ -95,6 +132,9 @@ server { location /_x_accel_redirect { internal; alias /; + # Add upstream response headers that would otherwise be omitted + add_header Access-Control-Allow-Origin $upstream_http_access_control_allow_origin; + add_header Access-Control-Allow-Methods $upstream_http_access_control_allow_methods; } # Support click-to-run in the GTN-in-Galaxy Webhook @@ -149,4 +189,11 @@ server { {% endif %} {% endblock tiaas %} +{% block rewrite %} + {% if csnt_galaxy_url_prefix != '' %} + # redirect /prefix -> /prefix/ + rewrite ^{{ csnt_galaxy_url_prefix }}$ {{ csnt_galaxy_url_prefix }}/ last; + {% endif %} +{% endblock rewrite %} + } diff --git a/templates/nginx/redirect-ssl.j2 b/templates/nginx/redirect-ssl.j2 index ff9d783b..2c592cb6 100644 --- a/templates/nginx/redirect-ssl.j2 +++ b/templates/nginx/redirect-ssl.j2 @@ -26,7 +26,7 @@ server { server_name "{{ host }}"; location /.well-known/acme-challenge/ { - root /srv/nginx/_well-known_root; + root {{ certbot_well_known_root }}; } location / { diff --git a/templates/repeatexplorer-elixir.cerit-sc.cz/config/auth_conf.xml.j2 b/templates/repeatexplorer-elixir.cerit-sc.cz/config/auth_conf.xml.j2 new file mode 100644 index 00000000..0f4afe43 --- /dev/null +++ b/templates/repeatexplorer-elixir.cerit-sc.cz/config/auth_conf.xml.j2 @@ -0,0 +1,146 @@ + + + + ldap + + + + + + Challenge + + + True + + + + + False + + + False + + + False + + + False + + + ldaps://perun.cesnet.cz:636 + + + + + OPT_X_TLS_REQUIRE_CERT=OPT_X_TLS_ALLOW + + + True + + + False + + + + + + + + + + + + + login;x-ns-einfra + dc=perun,dc=cesnet,dc=cz + + (&(objectclass=perunUser)(login;x-ns-einfra={username})) + perunGroupId={{ ldap_perun_group_id }},perunVoId={{ ldap_perun_vo_id }},dc=perun,dc=cesnet,dc=cz + + + + + + + perunUserId={{ ldap_perun_user_id }},ou=People,dc=perun,dc=cesnet,dc=cz + {{ ldap_user_password }} + + + + + + + {dn} + {password} + {username} + {username}@repeatexplorer-elixir.cerit-sc.cz + {gid} + + + + + + + + diff --git a/templates/repeatexplorer-elixir.cerit-sc.cz/config/local_tool_conf.xml.j2 b/templates/repeatexplorer-elixir.cerit-sc.cz/config/local_tool_conf.xml.j2 new file mode 100644 index 00000000..fa5dfdc9 --- /dev/null +++ b/templates/repeatexplorer-elixir.cerit-sc.cz/config/local_tool_conf.xml.j2 @@ -0,0 +1,8 @@ + + +
+
+
diff --git a/templates/repeatexplorer-elixir.cerit-sc.cz/config/object_store_conf.xml.j2 b/templates/repeatexplorer-elixir.cerit-sc.cz/config/object_store_conf.xml.j2 new file mode 100644 index 00000000..dc79aba6 --- /dev/null +++ b/templates/repeatexplorer-elixir.cerit-sc.cz/config/object_store_conf.xml.j2 @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/templates/repeatexplorer-elixir.cerit-sc.cz/config/proftpd_ldap.conf.j2 b/templates/repeatexplorer-elixir.cerit-sc.cz/config/proftpd_ldap.conf.j2 new file mode 100644 index 00000000..c7135ae7 --- /dev/null +++ b/templates/repeatexplorer-elixir.cerit-sc.cz/config/proftpd_ldap.conf.j2 @@ -0,0 +1,38 @@ +# +# Proftpd sample configuration for LDAP authentication. +# +# (This is not to be used if you prefer a PAM-based LDAP authentication) +# + +##DEMON: I put it here, because it should be somewhere if proftpd_galaxy_auth is not defined (i.e., used) +# Deny use of commands that allow modifying modification times and retrieving files + + DenyAll + + + +# Enable LDAP module +LoadModule mod_ldap.c + +# +# This is used for encrypted LDAPS connections +# +LDAPLog /var/log/proftpd/ldap.log +LDAPServer ldaps://perun.metacentrum.cz/??sub +LDAPBindDN "perunUserId={{ ldap_perun_user_id }},ou=People,dc=perun,dc=cesnet,dc=cz" "{{ ldap_user_password }}" +LDAPUsers "dc=perun,dc=cesnet,dc=cz" "(&(login=%v)(objectclass=perunUser)(memberof=perunGroupId={{ ldap_perun_group_id }},perunVoId={{ ldap_perun_vo_id }},dc=perun,dc=cesnet,dc=cz))" +LDAPSearchScope subtree +#set where to find attr +LDAPAttr uid login;x-ns-einfra +LDAPAttr uidNumber uidNumber;x-ns-cerit +#set uid to galaxyelixir and gid to meta +LDAPDefaultUID {{ galaxy_user_id }} +LDAPForceDefaultUID on +LDAPDefaultGID {{ galaxy_user_group_gid }} +LDAPForceDefaultGID on +#set homedir creation +LDAPGenerateHomedir on 700 +LDAPGenerateHomedirPrefix {{ galaxy_ftp_upload_dir }}/%u@{{ galaxy_users_domain }} +LDAPForceGeneratedHomedir on +LDAPGenerateHomedirPrefixNoUsername on + diff --git a/templates/repeatexplorer-elixir.cerit-sc.cz/static/welcome.html b/templates/repeatexplorer-elixir.cerit-sc.cz/static/welcome.html new file mode 100644 index 00000000..090a489a --- /dev/null +++ b/templates/repeatexplorer-elixir.cerit-sc.cz/static/welcome.html @@ -0,0 +1,121 @@ + + +

+

+

Developed and maintained by the Laboratory of Molecular Cytogenetics, Institute of Plant Molecular Biology, Biology Centre CAS, Ceske Budejovice, Czech Republic

+

This RepeatExplorer Galaxy portal is a part of services provided by ELIXIR (European Research Infrastructure for Biological Information). Please acknowledge this fact in your publications by adding a statement: “Computational resources for RepeatExplorer analysis were provided by the ELIXIR-CZ project (LM2023055), part of the international ELIXIR infrastructure.”

+
+

ELIXIR

+
+
+

12th Repeat Explorer Workshop, May 27–29, 2025

+

Join us at the 12th Repeat Explorer Workshop, May 27–29, 2025, in České Budějovice, Czech Republic. The workshop will focus on “Repetitive DNA Annotation in Genome Assemblies” and will include theoretical sessions, hands-on training, and a mini-conference for presenting research on repeat analysis in plant and animal genomes. For more detailed information, please visit our workshop page: Workshop Details.

+

Contact information

+

If you need help, need to increase a data quota, or want to report a problem, please contact server administrator. If you encounter an error while running a tool, please report a bug using the bug icon in the dataset history.

+
+

Resources

+ +

REXdb

+

RepeatExplorer2, DANTE and DANTE_LTR tools use the REXdb database. REXdb is a comprehensive database of conserved protein domain sequences extracted from all types transposable elementa found in plants. More information about REXdb can be found in related publication or in REXdb repository.

+

REXdb versions included in the server:

+
    +
  • Viridiplantae 4.0 - The latest version, updated on 2024-11-06. This version covers additional sequences and lineages from non-angiosperm species including gymnosperms, ferns, and mosses
  • +
  • Viridiplantae 3.0 - This version mainly covers domains extracted from elements of angiosperm species
  • +
  • Viridiplantae 2.2
  • +
  • Metazoa 3.0
  • +
  • Metazoa 2.0
  • +
+
+

Common Use Cases of RepeatExplorer Server

+

The RepeatExplorer server provides a suite of tools designed for the comprehensive analysis of repetitive DNA sequences in genomic data. Here are the most common use cases for utilizing these tools:

+
    +
  • Annotation of repeats directly from low coverage sequencing: It can be accomplished using the RepeatExplorer2 tool. This approach is ideal for initial exploration and annotation of repetitive sequences using low coverage data (refer to protocol 1 in the step-by-step protocols above).

  • +
  • Comparative analysis of repeats in multiple species from low coverage sequencing reads: Use protocol 2 for analyzing repetitive DNA across different species.

  • +
  • Tandem repeat annotation from low coverage sequencing: If your focus is primarily on tandem repeats, use the Tandem Repeat Analyzer tool (TAREAN). See protocol 3 in the step-by-step protocols for details.

  • +
  • Chip-Seq experiments: The ChIP-seq Mapper tool identifies centromeric repeats from CENH3 ChIP-seq data without the need for a complete genome assembly, leveraging assembled contigs from repeat clusters as a reference for mapping reads and highlighting significantly enriched repeats (refer to protocol 4).

  • +
  • Annotation of full-Length LTR-retrotransposons in genome assemblies: For detailed annotation of LTR-retrotransposons within assembled genomes, use the DANTE + DANTE_LTR tools. (see https://github.com/kavonrtep/dante_ltr for details)

  • +
  • Annotation of tandem repeats in genome assemblies: The TideCluster tools are designed for the annotation and analysis of tandem repeats within genome assemblies (see https://github.com/kavonrtep/TideCluster for more information).

  • +
+
+ + +
+

How to Cite

+

Novak, P., Neumann, P., Macas, J. (2020) – Global analysis of repetitive DNA from unassembled sequence reads using RepeatExplorer2. Nature Protocols 15:3745–3776.

+

Novak, P., Neumann, P., Pech, J., Steinhaisl, J., Macas, J. (2013) - RepeatExplorer: a Galaxy-based web server for genome-wide characterization of eukaryotic repetitive elements from next-generation sequence reads. Bioinformatics 29:792-793.

+

Classification of repetitive elements using REXdb:

+

Neumann, P., Novak, P., Hostakova, N., Macas, J. (2019) – Systematic survey of plant LTR-retrotransposons elucidates phylogenetic relationships of their polyprotein domains and provides a reference for element classification. Mobile DNA 10:1.

+

The principle of repeat identification implemented in the RepeatExplorer:

+

Novak, P., Neumann, P., Macas, J. (2010) - Graph-based clustering and characterization of repetitive sequences in next-generation sequencing data. BMC Bioinformatics 11:378.

+

Using TAREAN for satellite repeat detection and characterization:

+

Novak, P., Robledillo, L.A.,Koblizkova, A., Vrbova, I., Neumann, P., Macas, J. (2017) - TAREAN: a computational tool for identification and characterization of satellite DNA from unassembled short reads. Nucleic Acid Research 45:e111

+

Novak, P., Hostakova, N., Neumann, P., Macas, J. (2024) – DANTE and DANTE_LTR: computational pipelines implementing lineage-centered annotation of LTR-retrotransposons in plant genomes. bioRxiv doi: https://doi.org/10.1101/2024.04.17.589915

+
+

Terms of Use

+

RepeatExplorer is provided as free, public, Internet accessible service, in the hope that it will be useful, but WITHOUT ANY WARRANTY. Data transfer are encrypted, but data storage is not. If there are restrictions on the way your research data can be stored and used, please consult your local institutional review board or the project PI before uploading it to this Galaxy server. If you have protected data, large data storage requirements, or short deadlines you are encouraged to set up your own local Galaxy instance with RepeatExplorer Alternatively, you can install only RepeatExplorer and use its command line version. If you need help with RepeatExplorer or you want to report a problem, please contact server administrator.

+