diff --git a/.gitignore b/.gitignore index 642d1d04e..326d390f7 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ .DS_Store src/react/node_modules src/react/build +/.idea \ No newline at end of file diff --git a/README.md b/README.md index a16fe83e1..b953eea6f 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ [Vesta Control Panel](http://vestacp.com/) ================================================== +Vesta is back under active development as of 25 February 2024. We are commited to open source, and will engage with the community to identify the new roadmap for Vesta. Stay tuned! + [![Join the chat at https://gitter.im/vesta-cp/Lobby](https://badges.gitter.im/vesta-cp/Lobby.svg)](https://gitter.im/vesta-cp/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) * Vesta is an open source hosting control panel. @@ -16,7 +18,7 @@ ssh root@your.server Download the installation script, and run it: ```bash -curl http://vestacp.com/pub/vst-install.sh | bash +curl https://vestacp.com/pub/vst-install.sh | bash ``` How to install (3 step) @@ -29,7 +31,7 @@ ssh root@your.server Download the installation script: ```bash -curl -O http://vestacp.com/pub/vst-install.sh +curl -O https://vestacp.com/pub/vst-install.sh ``` Then run it: ```bash @@ -38,5 +40,5 @@ bash vst-install.sh License ---------------------------- -Vesta is licensed under [GPL v3 ](https://github.com/serghey-rodin/vesta/blob/master/LICENSE) license +Vesta is licensed under [GPL v3 ](https://github.com/outroll/vesta/blob/master/LICENSE) license diff --git a/bin/v-add-letsencrypt-domain b/bin/v-add-letsencrypt-domain index ed6e5e903..fdd89fed3 100755 --- a/bin/v-add-letsencrypt-domain +++ b/bin/v-add-letsencrypt-domain @@ -169,7 +169,7 @@ for auth in $authz; do echo "[$(date)] : query_le_v2 \"$auth\" \"$payload\" \"$nonce\"" >> /usr/local/vesta/log/letsencrypt.log answer=$(query_le_v2 "$auth" "$payload" "$nonce") echo "[$(date)] : answer=$answer" >> /usr/local/vesta/log/letsencrypt.log - url=$(echo "$answer" |grep -A3 $proto |grep url |cut -f 4 -d \") + url=$(echo "$answer" |grep -A3 $proto |grep '"url"' |cut -f 4 -d \") echo "[$(date)] : url=$url" >> /usr/local/vesta/log/letsencrypt.log token=$(echo "$answer" |grep -A3 $proto |grep token |cut -f 4 -d \") echo "[$(date)] : token=$token" >> /usr/local/vesta/log/letsencrypt.log diff --git a/bin/v-add-web-domain b/bin/v-add-web-domain index 45dbf6835..12de353a5 100755 --- a/bin/v-add-web-domain +++ b/bin/v-add-web-domain @@ -90,7 +90,7 @@ done # Changing file owner & permission chown -R $user:$user $HOMEDIR/$user/web/$domain chown root:$user /var/log/$WEB_SYSTEM/domains/$domain.* $conf -sudo -u $user chmod 640 /var/log/$WEB_SYSTEM/domains/$domain.* +chmod 640 /var/log/$WEB_SYSTEM/domains/$domain.* sudo -u $user chmod 751 $HOMEDIR/$user/web/$domain $HOMEDIR/$user/web/$domain/* sudo -u $user chmod 551 $HOMEDIR/$user/web/$domain/stats $HOMEDIR/$user/web/$domain/logs sudo -u $user chmod 644 $HOMEDIR/$user/web/$domain/public_*html/*.* diff --git a/bin/v-change-sys-config-value b/bin/v-change-sys-config-value index 106576563..3681075c3 100755 --- a/bin/v-change-sys-config-value +++ b/bin/v-change-sys-config-value @@ -28,6 +28,7 @@ PATH="$PATH:/usr/local/sbin:/sbin:/usr/sbin:/root/bin" check_args '2' "$#" 'KEY VALUE' is_format_valid 'key' +format_no_quotes "$value" 'value' #----------------------------------------------------------# # Action # diff --git a/bin/v-extract-fs-archive b/bin/v-extract-fs-archive index ec70baba4..1ea608af9 100755 --- a/bin/v-extract-fs-archive +++ b/bin/v-extract-fs-archive @@ -82,7 +82,7 @@ fi # Extracting ziped archive if [ ! -z "$(echo $src_file |grep -i '.zip')" ]; then sudo -u $user mkdir -p "$dst_dir" >/dev/null 2>&1 - sudo -u $user unzip "$src_file" -d "$dst_dir" >/dev/null 2>&1 + sudo -u $user unzip -o "$src_file" -d "$dst_dir" >/dev/null 2>&1 rc=$? fi diff --git a/bin/v-restart-proxy b/bin/v-restart-proxy index 1e5e98cba..7dcfad120 100755 --- a/bin/v-restart-proxy +++ b/bin/v-restart-proxy @@ -50,9 +50,13 @@ if [ -z "$PROXY_SYSTEM" ] || [ "$PROXY_SYSTEM" = 'remote' ]; then fi # Restart system -# service $PROXY_SYSTEM restart >/dev/null 2>&1 -systemctl reset-failed $PROXY_SYSTEM -systemctl restart $PROXY_SYSTEM > /dev/null 2>&1 +if [ ! -f "/etc/debian_version" ]; then + service $PROXY_SYSTEM restart >/dev/null 2>&1 +else + systemctl reset-failed $PROXY_SYSTEM + systemctl restart $PROXY_SYSTEM > /dev/null 2>&1 +fi + if [ $? -ne 0 ]; then send_email_report check_result $E_RESTART "$PROXY_SYSTEM restart failed" diff --git a/bin/v-restore-user b/bin/v-restore-user index c766f06be..cb77f7434 100755 --- a/bin/v-restore-user +++ b/bin/v-restore-user @@ -459,7 +459,7 @@ if [ "$dns" != 'no' ] && [ ! -z "$DNS_SYSTEM" ]; then if [ -z "$dns" ] || [ "$dns" = '*' ]; then domains="$backup_domains" else - echo "$dns" |tr ',' '\n' > $tmpdir/selected.txt + echo "$dns" | tr ',' '\n' | sed -e "s/^/^/" > $tmpdir/selected.txt domains=$(echo "$backup_domains" |egrep -f $tmpdir/selected.txt) fi @@ -539,7 +539,7 @@ if [ "$mail" != 'no' ] && [ ! -z "$MAIL_SYSTEM" ]; then if [ -z "$mail" ] || [ "$mail" = '*' ]; then domains="$backup_domains" else - echo "$mail" |tr ',' '\n' > $tmpdir/selected.txt + echo "$mail" | tr ',' '\n' | sed -e "s/^/^/" > $tmpdir/selected.txt domains=$(echo "$backup_domains" |egrep -f $tmpdir/selected.txt) fi @@ -636,7 +636,7 @@ if [ "$db" != 'no' ] && [ ! -z "$DB_SYSTEM" ]; then if [ -z "$db" ] || [ "$db" = '*' ]; then databases="$backup_databases" else - echo "$db" |tr ',' '\n' > $tmpdir/selected.txt + echo "$db" |tr ',' '\n' | sed -e "s/$/$/" > $tmpdir/selected.txt databases=$(echo "$backup_databases" |egrep -f $tmpdir/selected.txt) fi diff --git a/func/main.sh b/func/main.sh index 4ec7e7f1c..6f848a220 100644 --- a/func/main.sh +++ b/func/main.sh @@ -831,6 +831,23 @@ is_format_valid_shell() { exit $E_INVALID fi } + +format_no_quotes() { + exclude="['|\"]" + if [[ "$1" =~ $exclude ]]; then + check_result "$E_INVALID" "Invalid $2 contains qoutes (\" or ') :: $1" + fi + is_no_new_line_format "$1" +} + +is_no_new_line_format() { + test=$(echo "$1" | head -n1 ); + if [[ "$test" != "$1" ]]; then + check_result "$E_INVALID" "invalid value :: $1" + fi +} + + # Format validation controller is_format_valid() { for arg_name in $*; do @@ -839,6 +856,7 @@ is_format_valid() { case $arg_name in account) is_user_format_valid "$arg" "$arg_name";; action) is_fw_action_format_valid "$arg";; + alias) is_alias_format_valid "$arg" ;; aliases) is_alias_format_valid "$arg" ;; antispam) is_boolean_format_valid "$arg" 'antispam' ;; antivirus) is_boolean_format_valid "$arg" 'antivirus' ;; diff --git a/install/debian/7/pma/apache.conf b/install/debian/7/pma/apache.conf index 2a8f69e25..ce2a9fe2b 100644 --- a/install/debian/7/pma/apache.conf +++ b/install/debian/7/pma/apache.conf @@ -15,6 +15,7 @@ Alias /phpmyadmin /usr/share/phpmyadmin php_admin_flag allow_url_fopen Off php_value include_path . php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp + php_admin_value sys_temp_dir /var/lib/phpmyadmin/tmp php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext diff --git a/install/debian/7/templates/web/apache2/basedir.stpl b/install/debian/7/templates/web/apache2/basedir.stpl index fe0b5b409..379f87da1 100644 --- a/install/debian/7/templates/web/apache2/basedir.stpl +++ b/install/debian/7/templates/web/apache2/basedir.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" diff --git a/install/debian/7/templates/web/apache2/basedir.tpl b/install/debian/7/templates/web/apache2/basedir.tpl index 9449bc447..bf87511bd 100644 --- a/install/debian/7/templates/web/apache2/basedir.tpl +++ b/install/debian/7/templates/web/apache2/basedir.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" diff --git a/install/debian/7/templates/web/apache2/default.stpl b/install/debian/7/templates/web/apache2/default.stpl index 29acfcebb..8c8b7a3a2 100644 --- a/install/debian/7/templates/web/apache2/default.stpl +++ b/install/debian/7/templates/web/apache2/default.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/debian/7/templates/web/apache2/default.tpl b/install/debian/7/templates/web/apache2/default.tpl index c24b12796..7fa97eb73 100644 --- a/install/debian/7/templates/web/apache2/default.tpl +++ b/install/debian/7/templates/web/apache2/default.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/debian/7/templates/web/apache2/hosting.stpl b/install/debian/7/templates/web/apache2/hosting.stpl index e1442ce2c..ffb9a998f 100644 --- a/install/debian/7/templates/web/apache2/hosting.stpl +++ b/install/debian/7/templates/web/apache2/hosting.stpl @@ -24,6 +24,7 @@ php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/debian/7/templates/web/apache2/hosting.tpl b/install/debian/7/templates/web/apache2/hosting.tpl index 0bdd6ea68..3ed5acd1c 100644 --- a/install/debian/7/templates/web/apache2/hosting.tpl +++ b/install/debian/7/templates/web/apache2/hosting.tpl @@ -14,7 +14,6 @@ AllowOverride All Options +Includes -Indexes +ExecCGI - php_admin_value upload_tmp_dir %home%/%user%/tmp php_admin_value upload_max_filesize 10M php_admin_value max_execution_time 20 php_admin_value post_max_size 8M @@ -24,6 +23,7 @@ php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" php_admin_value open_basedir %docroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/debian/7/templates/web/apache2/phpcgi.stpl b/install/debian/7/templates/web/apache2/phpcgi.stpl index 40ce5fb2c..7bbf5be59 100644 --- a/install/debian/7/templates/web/apache2/phpcgi.stpl +++ b/install/debian/7/templates/web/apache2/phpcgi.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp Action phpcgi-script /cgi-bin/php diff --git a/install/debian/7/templates/web/apache2/phpcgi.tpl b/install/debian/7/templates/web/apache2/phpcgi.tpl index fd603800b..8978bd127 100644 --- a/install/debian/7/templates/web/apache2/phpcgi.tpl +++ b/install/debian/7/templates/web/apache2/phpcgi.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp Action phpcgi-script /cgi-bin/php diff --git a/install/debian/7/templates/web/apache2/phpfcgid.stpl b/install/debian/7/templates/web/apache2/phpfcgid.stpl index 5d27efcd5..7c49603d5 100644 --- a/install/debian/7/templates/web/apache2/phpfcgid.stpl +++ b/install/debian/7/templates/web/apache2/phpfcgid.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp SetHandler fcgid-script diff --git a/install/debian/7/templates/web/apache2/phpfcgid.tpl b/install/debian/7/templates/web/apache2/phpfcgid.tpl index 335b9f620..661f66bd3 100644 --- a/install/debian/7/templates/web/apache2/phpfcgid.tpl +++ b/install/debian/7/templates/web/apache2/phpfcgid.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp SetHandler fcgid-script diff --git a/install/debian/7/templates/web/php5-fpm/default.tpl b/install/debian/7/templates/web/php5-fpm/default.tpl index 209e1e437..816fa21f9 100644 --- a/install/debian/7/templates/web/php5-fpm/default.tpl +++ b/install/debian/7/templates/web/php5-fpm/default.tpl @@ -11,6 +11,7 @@ pm.max_requests = 4000 pm.process_idle_timeout = 10s pm.status_path = /status +php_admin_value[sys_temp_dir] = /home/%user%/tmp php_admin_value[upload_tmp_dir] = /home/%user%/tmp php_admin_value[session.save_path] = /home/%user%/tmp diff --git a/install/debian/7/templates/web/php5-fpm/socket.tpl b/install/debian/7/templates/web/php5-fpm/socket.tpl index a0151084f..e427045ce 100644 --- a/install/debian/7/templates/web/php5-fpm/socket.tpl +++ b/install/debian/7/templates/web/php5-fpm/socket.tpl @@ -14,6 +14,7 @@ pm.max_requests = 4000 pm.process_idle_timeout = 10s pm.status_path = /status +php_admin_value[sys_temp_dir] = /home/%user%/tmp php_admin_value[upload_tmp_dir] = /home/%user%/tmp php_admin_value[session.save_path] = /home/%user%/tmp diff --git a/install/debian/7/templates/web/skel/public_html/index.html b/install/debian/7/templates/web/skel/public_html/index.html index 3eaddff73..1144ade96 100755 --- a/install/debian/7/templates/web/skel/public_html/index.html +++ b/install/debian/7/templates/web/skel/public_html/index.html @@ -18,7 +18,7 @@

%domain%

diff --git a/install/debian/7/templates/web/skel/public_shtml/index.html b/install/debian/7/templates/web/skel/public_shtml/index.html index 3eaddff73..1144ade96 100755 --- a/install/debian/7/templates/web/skel/public_shtml/index.html +++ b/install/debian/7/templates/web/skel/public_shtml/index.html @@ -18,7 +18,7 @@

%domain%

diff --git a/install/debian/8/pma/apache.conf b/install/debian/8/pma/apache.conf index 2a8f69e25..ce2a9fe2b 100644 --- a/install/debian/8/pma/apache.conf +++ b/install/debian/8/pma/apache.conf @@ -15,6 +15,7 @@ Alias /phpmyadmin /usr/share/phpmyadmin php_admin_flag allow_url_fopen Off php_value include_path . php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp + php_admin_value sys_temp_dir /var/lib/phpmyadmin/tmp php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext diff --git a/install/debian/8/templates/web/apache2/basedir.stpl b/install/debian/8/templates/web/apache2/basedir.stpl index 2db1d52c9..37c4a4b39 100644 --- a/install/debian/8/templates/web/apache2/basedir.stpl +++ b/install/debian/8/templates/web/apache2/basedir.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%"
diff --git a/install/debian/8/templates/web/apache2/basedir.tpl b/install/debian/8/templates/web/apache2/basedir.tpl index 96c94a1bd..a9d05ee66 100644 --- a/install/debian/8/templates/web/apache2/basedir.tpl +++ b/install/debian/8/templates/web/apache2/basedir.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%"
diff --git a/install/debian/8/templates/web/apache2/default.stpl b/install/debian/8/templates/web/apache2/default.stpl index ec34c2799..a5c509a9e 100644 --- a/install/debian/8/templates/web/apache2/default.stpl +++ b/install/debian/8/templates/web/apache2/default.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/debian/8/templates/web/apache2/default.tpl b/install/debian/8/templates/web/apache2/default.tpl index 3a2270156..e591a1cf1 100644 --- a/install/debian/8/templates/web/apache2/default.tpl +++ b/install/debian/8/templates/web/apache2/default.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/debian/8/templates/web/apache2/hosting.stpl b/install/debian/8/templates/web/apache2/hosting.stpl index c9c19512b..dee0eda9c 100644 --- a/install/debian/8/templates/web/apache2/hosting.stpl +++ b/install/debian/8/templates/web/apache2/hosting.stpl @@ -24,6 +24,7 @@ php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/debian/8/templates/web/apache2/hosting.tpl b/install/debian/8/templates/web/apache2/hosting.tpl index 1eb269103..b7c12699d 100644 --- a/install/debian/8/templates/web/apache2/hosting.tpl +++ b/install/debian/8/templates/web/apache2/hosting.tpl @@ -23,6 +23,7 @@ php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" php_admin_value open_basedir %docroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/debian/8/templates/web/apache2/phpcgi.stpl b/install/debian/8/templates/web/apache2/phpcgi.stpl index ae560dbe5..6cd15df00 100644 --- a/install/debian/8/templates/web/apache2/phpcgi.stpl +++ b/install/debian/8/templates/web/apache2/phpcgi.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp Action phpcgi-script /cgi-bin/php diff --git a/install/debian/8/templates/web/apache2/phpcgi.tpl b/install/debian/8/templates/web/apache2/phpcgi.tpl index c6796d29c..9d04361da 100644 --- a/install/debian/8/templates/web/apache2/phpcgi.tpl +++ b/install/debian/8/templates/web/apache2/phpcgi.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp Action phpcgi-script /cgi-bin/php diff --git a/install/debian/8/templates/web/apache2/phpfcgid.stpl b/install/debian/8/templates/web/apache2/phpfcgid.stpl index bc3688d98..9c0ca5027 100644 --- a/install/debian/8/templates/web/apache2/phpfcgid.stpl +++ b/install/debian/8/templates/web/apache2/phpfcgid.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp SetHandler fcgid-script diff --git a/install/debian/8/templates/web/apache2/phpfcgid.tpl b/install/debian/8/templates/web/apache2/phpfcgid.tpl index a4c012690..152e7c694 100644 --- a/install/debian/8/templates/web/apache2/phpfcgid.tpl +++ b/install/debian/8/templates/web/apache2/phpfcgid.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp SetHandler fcgid-script diff --git a/install/debian/8/templates/web/php5-fpm/default.tpl b/install/debian/8/templates/web/php5-fpm/default.tpl index 209e1e437..816fa21f9 100644 --- a/install/debian/8/templates/web/php5-fpm/default.tpl +++ b/install/debian/8/templates/web/php5-fpm/default.tpl @@ -11,6 +11,7 @@ pm.max_requests = 4000 pm.process_idle_timeout = 10s pm.status_path = /status +php_admin_value[sys_temp_dir] = /home/%user%/tmp php_admin_value[upload_tmp_dir] = /home/%user%/tmp php_admin_value[session.save_path] = /home/%user%/tmp diff --git a/install/debian/8/templates/web/php5-fpm/socket.tpl b/install/debian/8/templates/web/php5-fpm/socket.tpl index a0151084f..e427045ce 100644 --- a/install/debian/8/templates/web/php5-fpm/socket.tpl +++ b/install/debian/8/templates/web/php5-fpm/socket.tpl @@ -14,6 +14,7 @@ pm.max_requests = 4000 pm.process_idle_timeout = 10s pm.status_path = /status +php_admin_value[sys_temp_dir] = /home/%user%/tmp php_admin_value[upload_tmp_dir] = /home/%user%/tmp php_admin_value[session.save_path] = /home/%user%/tmp diff --git a/install/debian/8/templates/web/skel/public_html/index.html b/install/debian/8/templates/web/skel/public_html/index.html index 3eaddff73..1144ade96 100755 --- a/install/debian/8/templates/web/skel/public_html/index.html +++ b/install/debian/8/templates/web/skel/public_html/index.html @@ -18,7 +18,7 @@

%domain%

diff --git a/install/debian/8/templates/web/skel/public_shtml/index.html b/install/debian/8/templates/web/skel/public_shtml/index.html index 3eaddff73..1144ade96 100755 --- a/install/debian/8/templates/web/skel/public_shtml/index.html +++ b/install/debian/8/templates/web/skel/public_shtml/index.html @@ -18,7 +18,7 @@

%domain%

diff --git a/install/debian/9/exim/exim4.conf.template b/install/debian/9/exim/exim4.conf.template index bfb98e0b8..6c00ef05d 100644 --- a/install/debian/9/exim/exim4.conf.template +++ b/install/debian/9/exim/exim4.conf.template @@ -138,7 +138,7 @@ acl_check_rcpt: acl_check_data: .ifdef CLAMD deny message = Message contains a virus ($malware_name) and has been rejected - malware = * + malware = */defer_ok condition = ${if eq{$acl_m0}{yes}{yes}{no}} .endif @@ -164,7 +164,7 @@ acl_check_data: acl_check_mime: deny message = Blacklisted file extension detected - condition = ${if match {${lc:$mime_filename}}{\N(\.ade|\.adp|\.bat|\.chm|\.cmd|\.com|\.cpl|\.exe|\.hta|\.ins|\.isp|\.jse|\.lib|\.lnk|\.mde|\.msc|\.msp|\.mst|\.pif|\.scr|\.sct|\.shb|\.sys|\.vb|\.vbe|\.vbs|\.vxd|\.wsc|\.wsf|\.wsh)$\N}{1}{0}} + condition = ${if match {${lc:$mime_filename}}{\N(\.ade|\.adp|\.bat|\.chm|\.cmd|\.com|\.cpl|\.exe|\.hta|\.ins|\.isp|\.jse|\.lib|\.lnk|\.mde|\.msc|\.msp|\.mst|\.pif|\.scr|\.sct|\.shb|\.sys|\.vb|\.vbe|\.vbs|\.vxd|\.wsc|\.wsf|\.wsh|\.jar)$\N}{1}{0}} accept diff --git a/install/debian/9/nginx/nginx.conf b/install/debian/9/nginx/nginx.conf index aa8ad5c75..3c664e08f 100644 --- a/install/debian/9/nginx/nginx.conf +++ b/install/debian/9/nginx/nginx.conf @@ -100,7 +100,7 @@ http { # SSL PCI Compliance ssl_session_cache shared:SSL:20m; - ssl_protocols TLSv1.2 TLSv1.3 + ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers "ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS"; diff --git a/install/debian/9/pma/apache.conf b/install/debian/9/pma/apache.conf index 2a8f69e25..ce2a9fe2b 100644 --- a/install/debian/9/pma/apache.conf +++ b/install/debian/9/pma/apache.conf @@ -15,6 +15,7 @@ Alias /phpmyadmin /usr/share/phpmyadmin php_admin_flag allow_url_fopen Off php_value include_path . php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp + php_admin_value sys_temp_dir /var/lib/phpmyadmin/tmp php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext diff --git a/install/debian/9/templates/web/apache2/basedir.stpl b/install/debian/9/templates/web/apache2/basedir.stpl index 2db1d52c9..37c4a4b39 100644 --- a/install/debian/9/templates/web/apache2/basedir.stpl +++ b/install/debian/9/templates/web/apache2/basedir.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%"
diff --git a/install/debian/9/templates/web/apache2/basedir.tpl b/install/debian/9/templates/web/apache2/basedir.tpl index 96c94a1bd..a9d05ee66 100644 --- a/install/debian/9/templates/web/apache2/basedir.tpl +++ b/install/debian/9/templates/web/apache2/basedir.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" diff --git a/install/debian/9/templates/web/apache2/default.stpl b/install/debian/9/templates/web/apache2/default.stpl index ec34c2799..a5c509a9e 100644 --- a/install/debian/9/templates/web/apache2/default.stpl +++ b/install/debian/9/templates/web/apache2/default.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/debian/9/templates/web/apache2/default.tpl b/install/debian/9/templates/web/apache2/default.tpl index 3a2270156..e591a1cf1 100644 --- a/install/debian/9/templates/web/apache2/default.tpl +++ b/install/debian/9/templates/web/apache2/default.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/debian/9/templates/web/apache2/hosting.stpl b/install/debian/9/templates/web/apache2/hosting.stpl index c9c19512b..dee0eda9c 100644 --- a/install/debian/9/templates/web/apache2/hosting.stpl +++ b/install/debian/9/templates/web/apache2/hosting.stpl @@ -24,6 +24,7 @@ php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/debian/9/templates/web/apache2/hosting.tpl b/install/debian/9/templates/web/apache2/hosting.tpl index 1eb269103..b7c12699d 100644 --- a/install/debian/9/templates/web/apache2/hosting.tpl +++ b/install/debian/9/templates/web/apache2/hosting.tpl @@ -23,6 +23,7 @@ php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" php_admin_value open_basedir %docroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/debian/9/templates/web/apache2/phpcgi.stpl b/install/debian/9/templates/web/apache2/phpcgi.stpl index ae560dbe5..6cd15df00 100644 --- a/install/debian/9/templates/web/apache2/phpcgi.stpl +++ b/install/debian/9/templates/web/apache2/phpcgi.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp Action phpcgi-script /cgi-bin/php diff --git a/install/debian/9/templates/web/apache2/phpcgi.tpl b/install/debian/9/templates/web/apache2/phpcgi.tpl index c6796d29c..9d04361da 100644 --- a/install/debian/9/templates/web/apache2/phpcgi.tpl +++ b/install/debian/9/templates/web/apache2/phpcgi.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp Action phpcgi-script /cgi-bin/php diff --git a/install/debian/9/templates/web/apache2/phpfcgid.stpl b/install/debian/9/templates/web/apache2/phpfcgid.stpl index bc3688d98..9c0ca5027 100644 --- a/install/debian/9/templates/web/apache2/phpfcgid.stpl +++ b/install/debian/9/templates/web/apache2/phpfcgid.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp SetHandler fcgid-script diff --git a/install/debian/9/templates/web/apache2/phpfcgid.tpl b/install/debian/9/templates/web/apache2/phpfcgid.tpl index a4c012690..152e7c694 100644 --- a/install/debian/9/templates/web/apache2/phpfcgid.tpl +++ b/install/debian/9/templates/web/apache2/phpfcgid.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp SetHandler fcgid-script diff --git a/install/debian/9/templates/web/php-fpm/default.tpl b/install/debian/9/templates/web/php-fpm/default.tpl index 209e1e437..816fa21f9 100644 --- a/install/debian/9/templates/web/php-fpm/default.tpl +++ b/install/debian/9/templates/web/php-fpm/default.tpl @@ -11,6 +11,7 @@ pm.max_requests = 4000 pm.process_idle_timeout = 10s pm.status_path = /status +php_admin_value[sys_temp_dir] = /home/%user%/tmp php_admin_value[upload_tmp_dir] = /home/%user%/tmp php_admin_value[session.save_path] = /home/%user%/tmp diff --git a/install/debian/9/templates/web/php-fpm/socket.tpl b/install/debian/9/templates/web/php-fpm/socket.tpl index a0151084f..e427045ce 100644 --- a/install/debian/9/templates/web/php-fpm/socket.tpl +++ b/install/debian/9/templates/web/php-fpm/socket.tpl @@ -14,6 +14,7 @@ pm.max_requests = 4000 pm.process_idle_timeout = 10s pm.status_path = /status +php_admin_value[sys_temp_dir] = /home/%user%/tmp php_admin_value[upload_tmp_dir] = /home/%user%/tmp php_admin_value[session.save_path] = /home/%user%/tmp diff --git a/install/rhel/5/templates/web/httpd/basedir.stpl b/install/rhel/5/templates/web/httpd/basedir.stpl index 2a3f9fbd5..ba4c1d91d 100644 --- a/install/rhel/5/templates/web/httpd/basedir.stpl +++ b/install/rhel/5/templates/web/httpd/basedir.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" diff --git a/install/rhel/5/templates/web/httpd/basedir.tpl b/install/rhel/5/templates/web/httpd/basedir.tpl index 566c9884c..f7d9b5283 100644 --- a/install/rhel/5/templates/web/httpd/basedir.tpl +++ b/install/rhel/5/templates/web/httpd/basedir.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" diff --git a/install/rhel/5/templates/web/httpd/default.stpl b/install/rhel/5/templates/web/httpd/default.stpl index 38d1634a6..0ab22c39a 100644 --- a/install/rhel/5/templates/web/httpd/default.stpl +++ b/install/rhel/5/templates/web/httpd/default.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/rhel/5/templates/web/httpd/default.tpl b/install/rhel/5/templates/web/httpd/default.tpl index 94288db02..751b7c59b 100644 --- a/install/rhel/5/templates/web/httpd/default.tpl +++ b/install/rhel/5/templates/web/httpd/default.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/rhel/5/templates/web/httpd/hosting.stpl b/install/rhel/5/templates/web/httpd/hosting.stpl index f94fdb648..49bf6a83c 100644 --- a/install/rhel/5/templates/web/httpd/hosting.stpl +++ b/install/rhel/5/templates/web/httpd/hosting.stpl @@ -24,6 +24,7 @@ php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/rhel/5/templates/web/httpd/hosting.tpl b/install/rhel/5/templates/web/httpd/hosting.tpl index 1d3dd354b..089d623f2 100644 --- a/install/rhel/5/templates/web/httpd/hosting.tpl +++ b/install/rhel/5/templates/web/httpd/hosting.tpl @@ -23,6 +23,7 @@ php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" php_admin_value open_basedir %docroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/rhel/5/templates/web/httpd/phpcgi.stpl b/install/rhel/5/templates/web/httpd/phpcgi.stpl index d544411ce..46c71f8f7 100644 --- a/install/rhel/5/templates/web/httpd/phpcgi.stpl +++ b/install/rhel/5/templates/web/httpd/phpcgi.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp Action phpcgi-script /cgi-bin/php diff --git a/install/rhel/5/templates/web/httpd/phpcgi.tpl b/install/rhel/5/templates/web/httpd/phpcgi.tpl index 114c6a52a..b521a6e6f 100644 --- a/install/rhel/5/templates/web/httpd/phpcgi.tpl +++ b/install/rhel/5/templates/web/httpd/phpcgi.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp Action phpcgi-script /cgi-bin/php diff --git a/install/rhel/5/templates/web/httpd/phpfcgid.stpl b/install/rhel/5/templates/web/httpd/phpfcgid.stpl index 38c5dd177..41a14729a 100644 --- a/install/rhel/5/templates/web/httpd/phpfcgid.stpl +++ b/install/rhel/5/templates/web/httpd/phpfcgid.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp SetHandler fcgid-script diff --git a/install/rhel/5/templates/web/httpd/phpfcgid.tpl b/install/rhel/5/templates/web/httpd/phpfcgid.tpl index f4e4f4724..bb9d3b748 100644 --- a/install/rhel/5/templates/web/httpd/phpfcgid.tpl +++ b/install/rhel/5/templates/web/httpd/phpfcgid.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp SetHandler fcgid-script diff --git a/install/rhel/5/templates/web/php-fpm/default.tpl b/install/rhel/5/templates/web/php-fpm/default.tpl index 209e1e437..816fa21f9 100644 --- a/install/rhel/5/templates/web/php-fpm/default.tpl +++ b/install/rhel/5/templates/web/php-fpm/default.tpl @@ -11,6 +11,7 @@ pm.max_requests = 4000 pm.process_idle_timeout = 10s pm.status_path = /status +php_admin_value[sys_temp_dir] = /home/%user%/tmp php_admin_value[upload_tmp_dir] = /home/%user%/tmp php_admin_value[session.save_path] = /home/%user%/tmp diff --git a/install/rhel/5/templates/web/php-fpm/socket.tpl b/install/rhel/5/templates/web/php-fpm/socket.tpl index d05a29e42..c22d0e2cd 100644 --- a/install/rhel/5/templates/web/php-fpm/socket.tpl +++ b/install/rhel/5/templates/web/php-fpm/socket.tpl @@ -14,6 +14,7 @@ pm.max_requests = 4000 pm.process_idle_timeout = 10s pm.status_path = /status +php_admin_value[sys_temp_dir] = /home/%user%/tmp php_admin_value[upload_tmp_dir] = /home/%user%/tmp php_admin_value[session.save_path] = /home/%user%/tmp diff --git a/install/rhel/5/templates/web/skel/public_html/index.html b/install/rhel/5/templates/web/skel/public_html/index.html index 3eaddff73..1144ade96 100755 --- a/install/rhel/5/templates/web/skel/public_html/index.html +++ b/install/rhel/5/templates/web/skel/public_html/index.html @@ -18,7 +18,7 @@

%domain%

diff --git a/install/rhel/5/templates/web/skel/public_shtml/index.html b/install/rhel/5/templates/web/skel/public_shtml/index.html index 3eaddff73..1144ade96 100755 --- a/install/rhel/5/templates/web/skel/public_shtml/index.html +++ b/install/rhel/5/templates/web/skel/public_shtml/index.html @@ -18,7 +18,7 @@

%domain%

diff --git a/install/rhel/6/templates/web/httpd/basedir.stpl b/install/rhel/6/templates/web/httpd/basedir.stpl index 2a3f9fbd5..ba4c1d91d 100644 --- a/install/rhel/6/templates/web/httpd/basedir.stpl +++ b/install/rhel/6/templates/web/httpd/basedir.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%"
diff --git a/install/rhel/6/templates/web/httpd/basedir.tpl b/install/rhel/6/templates/web/httpd/basedir.tpl index 566c9884c..f7d9b5283 100644 --- a/install/rhel/6/templates/web/httpd/basedir.tpl +++ b/install/rhel/6/templates/web/httpd/basedir.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" diff --git a/install/rhel/6/templates/web/httpd/default.stpl b/install/rhel/6/templates/web/httpd/default.stpl index 38d1634a6..0ab22c39a 100644 --- a/install/rhel/6/templates/web/httpd/default.stpl +++ b/install/rhel/6/templates/web/httpd/default.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/rhel/6/templates/web/httpd/default.tpl b/install/rhel/6/templates/web/httpd/default.tpl index 94288db02..751b7c59b 100644 --- a/install/rhel/6/templates/web/httpd/default.tpl +++ b/install/rhel/6/templates/web/httpd/default.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/rhel/6/templates/web/httpd/hosting.stpl b/install/rhel/6/templates/web/httpd/hosting.stpl index 06bd6183f..f9246c8d3 100644 --- a/install/rhel/6/templates/web/httpd/hosting.stpl +++ b/install/rhel/6/templates/web/httpd/hosting.stpl @@ -24,6 +24,7 @@ php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/rhel/6/templates/web/httpd/hosting.tpl b/install/rhel/6/templates/web/httpd/hosting.tpl index 65bf20fd3..5eef2a35a 100644 --- a/install/rhel/6/templates/web/httpd/hosting.tpl +++ b/install/rhel/6/templates/web/httpd/hosting.tpl @@ -23,6 +23,7 @@ php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" php_admin_value open_basedir %docroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/rhel/6/templates/web/httpd/phpcgi.stpl b/install/rhel/6/templates/web/httpd/phpcgi.stpl index d544411ce..46c71f8f7 100644 --- a/install/rhel/6/templates/web/httpd/phpcgi.stpl +++ b/install/rhel/6/templates/web/httpd/phpcgi.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp Action phpcgi-script /cgi-bin/php diff --git a/install/rhel/6/templates/web/httpd/phpcgi.tpl b/install/rhel/6/templates/web/httpd/phpcgi.tpl index 114c6a52a..b521a6e6f 100644 --- a/install/rhel/6/templates/web/httpd/phpcgi.tpl +++ b/install/rhel/6/templates/web/httpd/phpcgi.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp Action phpcgi-script /cgi-bin/php diff --git a/install/rhel/6/templates/web/httpd/phpfcgid.stpl b/install/rhel/6/templates/web/httpd/phpfcgid.stpl index 38c5dd177..41a14729a 100644 --- a/install/rhel/6/templates/web/httpd/phpfcgid.stpl +++ b/install/rhel/6/templates/web/httpd/phpfcgid.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp SetHandler fcgid-script diff --git a/install/rhel/6/templates/web/httpd/phpfcgid.tpl b/install/rhel/6/templates/web/httpd/phpfcgid.tpl index f4e4f4724..bb9d3b748 100644 --- a/install/rhel/6/templates/web/httpd/phpfcgid.tpl +++ b/install/rhel/6/templates/web/httpd/phpfcgid.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp SetHandler fcgid-script diff --git a/install/rhel/6/templates/web/php-fpm/default.tpl b/install/rhel/6/templates/web/php-fpm/default.tpl index 209e1e437..816fa21f9 100644 --- a/install/rhel/6/templates/web/php-fpm/default.tpl +++ b/install/rhel/6/templates/web/php-fpm/default.tpl @@ -11,6 +11,7 @@ pm.max_requests = 4000 pm.process_idle_timeout = 10s pm.status_path = /status +php_admin_value[sys_temp_dir] = /home/%user%/tmp php_admin_value[upload_tmp_dir] = /home/%user%/tmp php_admin_value[session.save_path] = /home/%user%/tmp diff --git a/install/rhel/6/templates/web/php-fpm/socket.tpl b/install/rhel/6/templates/web/php-fpm/socket.tpl index d05a29e42..c22d0e2cd 100644 --- a/install/rhel/6/templates/web/php-fpm/socket.tpl +++ b/install/rhel/6/templates/web/php-fpm/socket.tpl @@ -14,6 +14,7 @@ pm.max_requests = 4000 pm.process_idle_timeout = 10s pm.status_path = /status +php_admin_value[sys_temp_dir] = /home/%user%/tmp php_admin_value[upload_tmp_dir] = /home/%user%/tmp php_admin_value[session.save_path] = /home/%user%/tmp diff --git a/install/rhel/6/templates/web/skel/public_html/index.html b/install/rhel/6/templates/web/skel/public_html/index.html index 3eaddff73..1144ade96 100755 --- a/install/rhel/6/templates/web/skel/public_html/index.html +++ b/install/rhel/6/templates/web/skel/public_html/index.html @@ -18,7 +18,7 @@

%domain%

diff --git a/install/rhel/6/templates/web/skel/public_shtml/index.html b/install/rhel/6/templates/web/skel/public_shtml/index.html index 3eaddff73..1144ade96 100755 --- a/install/rhel/6/templates/web/skel/public_shtml/index.html +++ b/install/rhel/6/templates/web/skel/public_shtml/index.html @@ -18,7 +18,7 @@

%domain%

diff --git a/install/rhel/7/templates/web/httpd/basedir.stpl b/install/rhel/7/templates/web/httpd/basedir.stpl index 210edc13f..b0474cc0c 100644 --- a/install/rhel/7/templates/web/httpd/basedir.stpl +++ b/install/rhel/7/templates/web/httpd/basedir.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%"
diff --git a/install/rhel/7/templates/web/httpd/basedir.tpl b/install/rhel/7/templates/web/httpd/basedir.tpl index e1f86c704..2720a2525 100644 --- a/install/rhel/7/templates/web/httpd/basedir.tpl +++ b/install/rhel/7/templates/web/httpd/basedir.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" diff --git a/install/rhel/7/templates/web/httpd/default.stpl b/install/rhel/7/templates/web/httpd/default.stpl index 632333ca7..1a982395f 100644 --- a/install/rhel/7/templates/web/httpd/default.stpl +++ b/install/rhel/7/templates/web/httpd/default.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/rhel/7/templates/web/httpd/default.tpl b/install/rhel/7/templates/web/httpd/default.tpl index 558687619..89700114a 100644 --- a/install/rhel/7/templates/web/httpd/default.tpl +++ b/install/rhel/7/templates/web/httpd/default.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/rhel/7/templates/web/httpd/hosting.stpl b/install/rhel/7/templates/web/httpd/hosting.stpl index 699c413b5..9da9c8ba7 100644 --- a/install/rhel/7/templates/web/httpd/hosting.stpl +++ b/install/rhel/7/templates/web/httpd/hosting.stpl @@ -24,6 +24,7 @@ php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/rhel/7/templates/web/httpd/hosting.tpl b/install/rhel/7/templates/web/httpd/hosting.tpl index 25f8e3bf9..73970d4bc 100644 --- a/install/rhel/7/templates/web/httpd/hosting.tpl +++ b/install/rhel/7/templates/web/httpd/hosting.tpl @@ -23,6 +23,7 @@ php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" php_admin_value open_basedir %docroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/rhel/7/templates/web/httpd/phpcgi.stpl b/install/rhel/7/templates/web/httpd/phpcgi.stpl index 1eb39e0a9..1a7432d22 100644 --- a/install/rhel/7/templates/web/httpd/phpcgi.stpl +++ b/install/rhel/7/templates/web/httpd/phpcgi.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp Action phpcgi-script /cgi-bin/php diff --git a/install/rhel/7/templates/web/httpd/phpcgi.tpl b/install/rhel/7/templates/web/httpd/phpcgi.tpl index c0ae62082..67263035d 100644 --- a/install/rhel/7/templates/web/httpd/phpcgi.tpl +++ b/install/rhel/7/templates/web/httpd/phpcgi.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp Action phpcgi-script /cgi-bin/php diff --git a/install/rhel/7/templates/web/httpd/phpfcgid.stpl b/install/rhel/7/templates/web/httpd/phpfcgid.stpl index 31f09bc1a..4c8ce9795 100644 --- a/install/rhel/7/templates/web/httpd/phpfcgid.stpl +++ b/install/rhel/7/templates/web/httpd/phpfcgid.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp SetHandler fcgid-script diff --git a/install/rhel/7/templates/web/httpd/phpfcgid.tpl b/install/rhel/7/templates/web/httpd/phpfcgid.tpl index 79d26209b..692530f86 100644 --- a/install/rhel/7/templates/web/httpd/phpfcgid.tpl +++ b/install/rhel/7/templates/web/httpd/phpfcgid.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp SetHandler fcgid-script diff --git a/install/rhel/7/templates/web/nginx/php-fpm/freescout.stpl b/install/rhel/7/templates/web/nginx/php-fpm/freescout.stpl new file mode 100644 index 000000000..6e844da1b --- /dev/null +++ b/install/rhel/7/templates/web/nginx/php-fpm/freescout.stpl @@ -0,0 +1,48 @@ +server { + listen %ip%:%web_ssl_port%; + server_name %domain_idn% %alias_idn%; + root %docroot%; + index index.php index.html index.htm; + access_log /var/log/nginx/domains/%domain%.log combined; + access_log /var/log/nginx/domains/%domain%.bytes bytes; + error_log /var/log/nginx/domains/%domain%.error.log error; + + ssl on; + ssl_certificate %ssl_pem%; + ssl_certificate_key %ssl_key%; + + location / { + try_files $uri $uri/ /index.php?$query_string; + } + location ~ \.php$ { + fastcgi_split_path_info ^(.+\.php)(/.+)$; + fastcgi_pass %backend_lsnr%; + fastcgi_index index.php; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + include /etc/nginx/fastcgi_params; + } + # Uncomment this location if you want to improve attachments downloading speed. + # Also make sure to set APP_DOWNLOAD_ATTACHMENTS_VIA=nginx in the .env file. + #location ^~ /storage/app/attachment/ { + # internal; + # alias /var/www/html/storage/app/attachment/; + #} + location ~* ^/storage/attachment/ { + expires 1M; + access_log off; + try_files $uri $uri/ /index.php?$query_string; + } + location ~* ^/(?:css|js)/.*\.(?:css|js)$ { + expires 2d; + access_log off; + add_header Cache-Control "public, must-revalidate"; + } + location ~* ^/(?:css|fonts|img|installer|js|modules|[^\\\]+\..*)$ { + expires 1M; + access_log off; + add_header Cache-Control "public"; + } + location ~ /\. { + deny all; + } +} diff --git a/install/rhel/7/templates/web/nginx/php-fpm/freescout.tpl b/install/rhel/7/templates/web/nginx/php-fpm/freescout.tpl new file mode 100644 index 000000000..1a9e6ffa6 --- /dev/null +++ b/install/rhel/7/templates/web/nginx/php-fpm/freescout.tpl @@ -0,0 +1,44 @@ +server { + listen %ip%:%web_port%; + server_name %domain_idn% %alias_idn%; + root %docroot%; + index index.php index.html index.htm; + access_log /var/log/nginx/domains/%domain%.log combined; + access_log /var/log/nginx/domains/%domain%.bytes bytes; + error_log /var/log/nginx/domains/%domain%.error.log error; + + location / { + try_files $uri $uri/ /index.php?$query_string; + } + location ~ \.php$ { + fastcgi_split_path_info ^(.+\.php)(/.+)$; + fastcgi_pass %backend_lsnr%; + fastcgi_index index.php; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + include /etc/nginx/fastcgi_params; + } + # Uncomment this location if you want to improve attachments downloading speed. + # Also make sure to set APP_DOWNLOAD_ATTACHMENTS_VIA=nginx in the .env file. + #location ^~ /storage/app/attachment/ { + # internal; + # alias /var/www/html/storage/app/attachment/; + #} + location ~* ^/storage/attachment/ { + expires 1M; + access_log off; + try_files $uri $uri/ /index.php?$query_string; + } + location ~* ^/(?:css|js)/.*\.(?:css|js)$ { + expires 2d; + access_log off; + add_header Cache-Control "public, must-revalidate"; + } + location ~* ^/(?:css|fonts|img|installer|js|modules|[^\\\]+\..*)$ { + expires 1M; + access_log off; + add_header Cache-Control "public"; + } + location ~ /\. { + deny all; + } +} diff --git a/install/rhel/7/templates/web/php-fpm/default.tpl b/install/rhel/7/templates/web/php-fpm/default.tpl index 209e1e437..816fa21f9 100644 --- a/install/rhel/7/templates/web/php-fpm/default.tpl +++ b/install/rhel/7/templates/web/php-fpm/default.tpl @@ -11,6 +11,7 @@ pm.max_requests = 4000 pm.process_idle_timeout = 10s pm.status_path = /status +php_admin_value[sys_temp_dir] = /home/%user%/tmp php_admin_value[upload_tmp_dir] = /home/%user%/tmp php_admin_value[session.save_path] = /home/%user%/tmp diff --git a/install/rhel/7/templates/web/php-fpm/socket.tpl b/install/rhel/7/templates/web/php-fpm/socket.tpl index d05a29e42..c22d0e2cd 100644 --- a/install/rhel/7/templates/web/php-fpm/socket.tpl +++ b/install/rhel/7/templates/web/php-fpm/socket.tpl @@ -14,6 +14,7 @@ pm.max_requests = 4000 pm.process_idle_timeout = 10s pm.status_path = /status +php_admin_value[sys_temp_dir] = /home/%user%/tmp php_admin_value[upload_tmp_dir] = /home/%user%/tmp php_admin_value[session.save_path] = /home/%user%/tmp diff --git a/install/rhel/7/templates/web/skel/public_html/index.html b/install/rhel/7/templates/web/skel/public_html/index.html index 3eaddff73..1144ade96 100755 --- a/install/rhel/7/templates/web/skel/public_html/index.html +++ b/install/rhel/7/templates/web/skel/public_html/index.html @@ -18,7 +18,7 @@

%domain%

diff --git a/install/rhel/7/templates/web/skel/public_shtml/index.html b/install/rhel/7/templates/web/skel/public_shtml/index.html index 3eaddff73..1144ade96 100755 --- a/install/rhel/7/templates/web/skel/public_shtml/index.html +++ b/install/rhel/7/templates/web/skel/public_shtml/index.html @@ -18,7 +18,7 @@

%domain%

diff --git a/install/ubuntu/12.04/pma/apache.conf b/install/ubuntu/12.04/pma/apache.conf index 2a8f69e25..ce2a9fe2b 100644 --- a/install/ubuntu/12.04/pma/apache.conf +++ b/install/ubuntu/12.04/pma/apache.conf @@ -15,6 +15,7 @@ Alias /phpmyadmin /usr/share/phpmyadmin php_admin_flag allow_url_fopen Off php_value include_path . php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp + php_admin_value sys_temp_dir /var/lib/phpmyadmin/tmp php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext diff --git a/install/ubuntu/12.04/templates/web/apache2/basedir.stpl b/install/ubuntu/12.04/templates/web/apache2/basedir.stpl index fe0b5b409..379f87da1 100644 --- a/install/ubuntu/12.04/templates/web/apache2/basedir.stpl +++ b/install/ubuntu/12.04/templates/web/apache2/basedir.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%"
diff --git a/install/ubuntu/12.04/templates/web/apache2/basedir.tpl b/install/ubuntu/12.04/templates/web/apache2/basedir.tpl index 9449bc447..bf87511bd 100644 --- a/install/ubuntu/12.04/templates/web/apache2/basedir.tpl +++ b/install/ubuntu/12.04/templates/web/apache2/basedir.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" diff --git a/install/ubuntu/12.04/templates/web/apache2/default.stpl b/install/ubuntu/12.04/templates/web/apache2/default.stpl index 29acfcebb..8c8b7a3a2 100644 --- a/install/ubuntu/12.04/templates/web/apache2/default.stpl +++ b/install/ubuntu/12.04/templates/web/apache2/default.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/12.04/templates/web/apache2/default.tpl b/install/ubuntu/12.04/templates/web/apache2/default.tpl index c24b12796..7fa97eb73 100644 --- a/install/ubuntu/12.04/templates/web/apache2/default.tpl +++ b/install/ubuntu/12.04/templates/web/apache2/default.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/12.04/templates/web/apache2/hosting.stpl b/install/ubuntu/12.04/templates/web/apache2/hosting.stpl index e1442ce2c..ffb9a998f 100644 --- a/install/ubuntu/12.04/templates/web/apache2/hosting.stpl +++ b/install/ubuntu/12.04/templates/web/apache2/hosting.stpl @@ -24,6 +24,7 @@ php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/12.04/templates/web/apache2/hosting.tpl b/install/ubuntu/12.04/templates/web/apache2/hosting.tpl index 3e30d737b..3ed5acd1c 100644 --- a/install/ubuntu/12.04/templates/web/apache2/hosting.tpl +++ b/install/ubuntu/12.04/templates/web/apache2/hosting.tpl @@ -23,6 +23,7 @@ php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" php_admin_value open_basedir %docroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/12.04/templates/web/apache2/phpcgi.stpl b/install/ubuntu/12.04/templates/web/apache2/phpcgi.stpl index 40ce5fb2c..7bbf5be59 100644 --- a/install/ubuntu/12.04/templates/web/apache2/phpcgi.stpl +++ b/install/ubuntu/12.04/templates/web/apache2/phpcgi.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp Action phpcgi-script /cgi-bin/php diff --git a/install/ubuntu/12.04/templates/web/apache2/phpcgi.tpl b/install/ubuntu/12.04/templates/web/apache2/phpcgi.tpl index fd603800b..8978bd127 100644 --- a/install/ubuntu/12.04/templates/web/apache2/phpcgi.tpl +++ b/install/ubuntu/12.04/templates/web/apache2/phpcgi.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp Action phpcgi-script /cgi-bin/php diff --git a/install/ubuntu/12.04/templates/web/apache2/phpfcgid.stpl b/install/ubuntu/12.04/templates/web/apache2/phpfcgid.stpl index 5d27efcd5..7c49603d5 100644 --- a/install/ubuntu/12.04/templates/web/apache2/phpfcgid.stpl +++ b/install/ubuntu/12.04/templates/web/apache2/phpfcgid.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp SetHandler fcgid-script diff --git a/install/ubuntu/12.04/templates/web/apache2/phpfcgid.tpl b/install/ubuntu/12.04/templates/web/apache2/phpfcgid.tpl index 335b9f620..661f66bd3 100644 --- a/install/ubuntu/12.04/templates/web/apache2/phpfcgid.tpl +++ b/install/ubuntu/12.04/templates/web/apache2/phpfcgid.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp SetHandler fcgid-script diff --git a/install/ubuntu/12.04/templates/web/php-fpm/default.tpl b/install/ubuntu/12.04/templates/web/php-fpm/default.tpl index 209e1e437..816fa21f9 100644 --- a/install/ubuntu/12.04/templates/web/php-fpm/default.tpl +++ b/install/ubuntu/12.04/templates/web/php-fpm/default.tpl @@ -11,6 +11,7 @@ pm.max_requests = 4000 pm.process_idle_timeout = 10s pm.status_path = /status +php_admin_value[sys_temp_dir] = /home/%user%/tmp php_admin_value[upload_tmp_dir] = /home/%user%/tmp php_admin_value[session.save_path] = /home/%user%/tmp diff --git a/install/ubuntu/12.04/templates/web/php-fpm/socket.tpl b/install/ubuntu/12.04/templates/web/php-fpm/socket.tpl index a0151084f..e427045ce 100644 --- a/install/ubuntu/12.04/templates/web/php-fpm/socket.tpl +++ b/install/ubuntu/12.04/templates/web/php-fpm/socket.tpl @@ -14,6 +14,7 @@ pm.max_requests = 4000 pm.process_idle_timeout = 10s pm.status_path = /status +php_admin_value[sys_temp_dir] = /home/%user%/tmp php_admin_value[upload_tmp_dir] = /home/%user%/tmp php_admin_value[session.save_path] = /home/%user%/tmp diff --git a/install/ubuntu/12.04/templates/web/skel/public_html/index.html b/install/ubuntu/12.04/templates/web/skel/public_html/index.html index 3eaddff73..1144ade96 100755 --- a/install/ubuntu/12.04/templates/web/skel/public_html/index.html +++ b/install/ubuntu/12.04/templates/web/skel/public_html/index.html @@ -18,7 +18,7 @@

%domain%

diff --git a/install/ubuntu/12.04/templates/web/skel/public_shtml/index.html b/install/ubuntu/12.04/templates/web/skel/public_shtml/index.html index 3eaddff73..1144ade96 100755 --- a/install/ubuntu/12.04/templates/web/skel/public_shtml/index.html +++ b/install/ubuntu/12.04/templates/web/skel/public_shtml/index.html @@ -18,7 +18,7 @@

%domain%

diff --git a/install/ubuntu/12.10/pma/apache.conf b/install/ubuntu/12.10/pma/apache.conf index 2a8f69e25..ce2a9fe2b 100644 --- a/install/ubuntu/12.10/pma/apache.conf +++ b/install/ubuntu/12.10/pma/apache.conf @@ -15,6 +15,7 @@ Alias /phpmyadmin /usr/share/phpmyadmin php_admin_flag allow_url_fopen Off php_value include_path . php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp + php_admin_value sys_temp_dir /var/lib/phpmyadmin/tmp php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext diff --git a/install/ubuntu/12.10/templates/web/apache2/basedir.stpl b/install/ubuntu/12.10/templates/web/apache2/basedir.stpl index fe0b5b409..379f87da1 100644 --- a/install/ubuntu/12.10/templates/web/apache2/basedir.stpl +++ b/install/ubuntu/12.10/templates/web/apache2/basedir.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%"
diff --git a/install/ubuntu/12.10/templates/web/apache2/basedir.tpl b/install/ubuntu/12.10/templates/web/apache2/basedir.tpl index 9449bc447..bf87511bd 100644 --- a/install/ubuntu/12.10/templates/web/apache2/basedir.tpl +++ b/install/ubuntu/12.10/templates/web/apache2/basedir.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" diff --git a/install/ubuntu/12.10/templates/web/apache2/default.stpl b/install/ubuntu/12.10/templates/web/apache2/default.stpl index 29acfcebb..8c8b7a3a2 100644 --- a/install/ubuntu/12.10/templates/web/apache2/default.stpl +++ b/install/ubuntu/12.10/templates/web/apache2/default.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/12.10/templates/web/apache2/default.tpl b/install/ubuntu/12.10/templates/web/apache2/default.tpl index c24b12796..7fa97eb73 100644 --- a/install/ubuntu/12.10/templates/web/apache2/default.tpl +++ b/install/ubuntu/12.10/templates/web/apache2/default.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/12.10/templates/web/apache2/hosting.stpl b/install/ubuntu/12.10/templates/web/apache2/hosting.stpl index e1442ce2c..ffb9a998f 100644 --- a/install/ubuntu/12.10/templates/web/apache2/hosting.stpl +++ b/install/ubuntu/12.10/templates/web/apache2/hosting.stpl @@ -24,6 +24,7 @@ php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/12.10/templates/web/apache2/hosting.tpl b/install/ubuntu/12.10/templates/web/apache2/hosting.tpl index 3e30d737b..3ed5acd1c 100644 --- a/install/ubuntu/12.10/templates/web/apache2/hosting.tpl +++ b/install/ubuntu/12.10/templates/web/apache2/hosting.tpl @@ -23,6 +23,7 @@ php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" php_admin_value open_basedir %docroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/12.10/templates/web/apache2/phpcgi.stpl b/install/ubuntu/12.10/templates/web/apache2/phpcgi.stpl index 40ce5fb2c..7bbf5be59 100644 --- a/install/ubuntu/12.10/templates/web/apache2/phpcgi.stpl +++ b/install/ubuntu/12.10/templates/web/apache2/phpcgi.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp Action phpcgi-script /cgi-bin/php diff --git a/install/ubuntu/12.10/templates/web/apache2/phpcgi.tpl b/install/ubuntu/12.10/templates/web/apache2/phpcgi.tpl index fd603800b..8978bd127 100644 --- a/install/ubuntu/12.10/templates/web/apache2/phpcgi.tpl +++ b/install/ubuntu/12.10/templates/web/apache2/phpcgi.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp Action phpcgi-script /cgi-bin/php diff --git a/install/ubuntu/12.10/templates/web/apache2/phpfcgid.stpl b/install/ubuntu/12.10/templates/web/apache2/phpfcgid.stpl index 5d27efcd5..7c49603d5 100644 --- a/install/ubuntu/12.10/templates/web/apache2/phpfcgid.stpl +++ b/install/ubuntu/12.10/templates/web/apache2/phpfcgid.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp SetHandler fcgid-script diff --git a/install/ubuntu/12.10/templates/web/apache2/phpfcgid.tpl b/install/ubuntu/12.10/templates/web/apache2/phpfcgid.tpl index 335b9f620..661f66bd3 100644 --- a/install/ubuntu/12.10/templates/web/apache2/phpfcgid.tpl +++ b/install/ubuntu/12.10/templates/web/apache2/phpfcgid.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp SetHandler fcgid-script diff --git a/install/ubuntu/12.10/templates/web/php-fpm/default.tpl b/install/ubuntu/12.10/templates/web/php-fpm/default.tpl index 209e1e437..816fa21f9 100644 --- a/install/ubuntu/12.10/templates/web/php-fpm/default.tpl +++ b/install/ubuntu/12.10/templates/web/php-fpm/default.tpl @@ -11,6 +11,7 @@ pm.max_requests = 4000 pm.process_idle_timeout = 10s pm.status_path = /status +php_admin_value[sys_temp_dir] = /home/%user%/tmp php_admin_value[upload_tmp_dir] = /home/%user%/tmp php_admin_value[session.save_path] = /home/%user%/tmp diff --git a/install/ubuntu/12.10/templates/web/php-fpm/socket.tpl b/install/ubuntu/12.10/templates/web/php-fpm/socket.tpl index a0151084f..e427045ce 100644 --- a/install/ubuntu/12.10/templates/web/php-fpm/socket.tpl +++ b/install/ubuntu/12.10/templates/web/php-fpm/socket.tpl @@ -14,6 +14,7 @@ pm.max_requests = 4000 pm.process_idle_timeout = 10s pm.status_path = /status +php_admin_value[sys_temp_dir] = /home/%user%/tmp php_admin_value[upload_tmp_dir] = /home/%user%/tmp php_admin_value[session.save_path] = /home/%user%/tmp diff --git a/install/ubuntu/12.10/templates/web/skel/public_html/index.html b/install/ubuntu/12.10/templates/web/skel/public_html/index.html index 3eaddff73..1144ade96 100755 --- a/install/ubuntu/12.10/templates/web/skel/public_html/index.html +++ b/install/ubuntu/12.10/templates/web/skel/public_html/index.html @@ -18,7 +18,7 @@

%domain%

diff --git a/install/ubuntu/12.10/templates/web/skel/public_shtml/index.html b/install/ubuntu/12.10/templates/web/skel/public_shtml/index.html index 3eaddff73..1144ade96 100755 --- a/install/ubuntu/12.10/templates/web/skel/public_shtml/index.html +++ b/install/ubuntu/12.10/templates/web/skel/public_shtml/index.html @@ -18,7 +18,7 @@

%domain%

diff --git a/install/ubuntu/13.04/pma/apache.conf b/install/ubuntu/13.04/pma/apache.conf index 2a8f69e25..ce2a9fe2b 100644 --- a/install/ubuntu/13.04/pma/apache.conf +++ b/install/ubuntu/13.04/pma/apache.conf @@ -15,6 +15,7 @@ Alias /phpmyadmin /usr/share/phpmyadmin php_admin_flag allow_url_fopen Off php_value include_path . php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp + php_admin_value sys_temp_dir /var/lib/phpmyadmin/tmp php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext diff --git a/install/ubuntu/13.04/templates/web/apache2/basedir.stpl b/install/ubuntu/13.04/templates/web/apache2/basedir.stpl index fe0b5b409..379f87da1 100644 --- a/install/ubuntu/13.04/templates/web/apache2/basedir.stpl +++ b/install/ubuntu/13.04/templates/web/apache2/basedir.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%"
diff --git a/install/ubuntu/13.04/templates/web/apache2/basedir.tpl b/install/ubuntu/13.04/templates/web/apache2/basedir.tpl index 9449bc447..bf87511bd 100644 --- a/install/ubuntu/13.04/templates/web/apache2/basedir.tpl +++ b/install/ubuntu/13.04/templates/web/apache2/basedir.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" diff --git a/install/ubuntu/13.04/templates/web/apache2/default.stpl b/install/ubuntu/13.04/templates/web/apache2/default.stpl index 29acfcebb..8c8b7a3a2 100644 --- a/install/ubuntu/13.04/templates/web/apache2/default.stpl +++ b/install/ubuntu/13.04/templates/web/apache2/default.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/13.04/templates/web/apache2/default.tpl b/install/ubuntu/13.04/templates/web/apache2/default.tpl index c24b12796..7fa97eb73 100644 --- a/install/ubuntu/13.04/templates/web/apache2/default.tpl +++ b/install/ubuntu/13.04/templates/web/apache2/default.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/13.04/templates/web/apache2/hosting.stpl b/install/ubuntu/13.04/templates/web/apache2/hosting.stpl index be7ef3101..907dc462e 100644 --- a/install/ubuntu/13.04/templates/web/apache2/hosting.stpl +++ b/install/ubuntu/13.04/templates/web/apache2/hosting.stpl @@ -24,6 +24,7 @@ php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/13.04/templates/web/apache2/hosting.tpl b/install/ubuntu/13.04/templates/web/apache2/hosting.tpl index f3491a5fe..3382b6144 100644 --- a/install/ubuntu/13.04/templates/web/apache2/hosting.tpl +++ b/install/ubuntu/13.04/templates/web/apache2/hosting.tpl @@ -23,6 +23,7 @@ php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" php_admin_value open_basedir %docroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/13.04/templates/web/apache2/phpcgi.stpl b/install/ubuntu/13.04/templates/web/apache2/phpcgi.stpl index 40ce5fb2c..7bbf5be59 100644 --- a/install/ubuntu/13.04/templates/web/apache2/phpcgi.stpl +++ b/install/ubuntu/13.04/templates/web/apache2/phpcgi.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp Action phpcgi-script /cgi-bin/php diff --git a/install/ubuntu/13.04/templates/web/apache2/phpcgi.tpl b/install/ubuntu/13.04/templates/web/apache2/phpcgi.tpl index fd603800b..8978bd127 100644 --- a/install/ubuntu/13.04/templates/web/apache2/phpcgi.tpl +++ b/install/ubuntu/13.04/templates/web/apache2/phpcgi.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp Action phpcgi-script /cgi-bin/php diff --git a/install/ubuntu/13.04/templates/web/apache2/phpfcgid.stpl b/install/ubuntu/13.04/templates/web/apache2/phpfcgid.stpl index 5d27efcd5..7c49603d5 100644 --- a/install/ubuntu/13.04/templates/web/apache2/phpfcgid.stpl +++ b/install/ubuntu/13.04/templates/web/apache2/phpfcgid.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp SetHandler fcgid-script diff --git a/install/ubuntu/13.04/templates/web/apache2/phpfcgid.tpl b/install/ubuntu/13.04/templates/web/apache2/phpfcgid.tpl index 335b9f620..661f66bd3 100644 --- a/install/ubuntu/13.04/templates/web/apache2/phpfcgid.tpl +++ b/install/ubuntu/13.04/templates/web/apache2/phpfcgid.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp SetHandler fcgid-script diff --git a/install/ubuntu/13.04/templates/web/php-fpm/default.tpl b/install/ubuntu/13.04/templates/web/php-fpm/default.tpl index 209e1e437..816fa21f9 100644 --- a/install/ubuntu/13.04/templates/web/php-fpm/default.tpl +++ b/install/ubuntu/13.04/templates/web/php-fpm/default.tpl @@ -11,6 +11,7 @@ pm.max_requests = 4000 pm.process_idle_timeout = 10s pm.status_path = /status +php_admin_value[sys_temp_dir] = /home/%user%/tmp php_admin_value[upload_tmp_dir] = /home/%user%/tmp php_admin_value[session.save_path] = /home/%user%/tmp diff --git a/install/ubuntu/13.04/templates/web/php-fpm/socket.tpl b/install/ubuntu/13.04/templates/web/php-fpm/socket.tpl index a0151084f..e427045ce 100644 --- a/install/ubuntu/13.04/templates/web/php-fpm/socket.tpl +++ b/install/ubuntu/13.04/templates/web/php-fpm/socket.tpl @@ -14,6 +14,7 @@ pm.max_requests = 4000 pm.process_idle_timeout = 10s pm.status_path = /status +php_admin_value[sys_temp_dir] = /home/%user%/tmp php_admin_value[upload_tmp_dir] = /home/%user%/tmp php_admin_value[session.save_path] = /home/%user%/tmp diff --git a/install/ubuntu/13.04/templates/web/skel/public_html/index.html b/install/ubuntu/13.04/templates/web/skel/public_html/index.html index 3eaddff73..1144ade96 100755 --- a/install/ubuntu/13.04/templates/web/skel/public_html/index.html +++ b/install/ubuntu/13.04/templates/web/skel/public_html/index.html @@ -18,7 +18,7 @@

%domain%

diff --git a/install/ubuntu/13.04/templates/web/skel/public_shtml/index.html b/install/ubuntu/13.04/templates/web/skel/public_shtml/index.html index 3eaddff73..1144ade96 100755 --- a/install/ubuntu/13.04/templates/web/skel/public_shtml/index.html +++ b/install/ubuntu/13.04/templates/web/skel/public_shtml/index.html @@ -18,7 +18,7 @@

%domain%

diff --git a/install/ubuntu/13.10/pma/apache.conf b/install/ubuntu/13.10/pma/apache.conf index 2a8f69e25..ce2a9fe2b 100644 --- a/install/ubuntu/13.10/pma/apache.conf +++ b/install/ubuntu/13.10/pma/apache.conf @@ -15,6 +15,7 @@ Alias /phpmyadmin /usr/share/phpmyadmin php_admin_flag allow_url_fopen Off php_value include_path . php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp + php_admin_value sys_temp_dir /var/lib/phpmyadmin/tmp php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext diff --git a/install/ubuntu/13.10/templates/web/apache2/basedir.stpl b/install/ubuntu/13.10/templates/web/apache2/basedir.stpl index 2db1d52c9..37c4a4b39 100644 --- a/install/ubuntu/13.10/templates/web/apache2/basedir.stpl +++ b/install/ubuntu/13.10/templates/web/apache2/basedir.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%"
diff --git a/install/ubuntu/13.10/templates/web/apache2/basedir.tpl b/install/ubuntu/13.10/templates/web/apache2/basedir.tpl index 96c94a1bd..a9d05ee66 100644 --- a/install/ubuntu/13.10/templates/web/apache2/basedir.tpl +++ b/install/ubuntu/13.10/templates/web/apache2/basedir.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" diff --git a/install/ubuntu/13.10/templates/web/apache2/default.stpl b/install/ubuntu/13.10/templates/web/apache2/default.stpl index ec34c2799..a5c509a9e 100644 --- a/install/ubuntu/13.10/templates/web/apache2/default.stpl +++ b/install/ubuntu/13.10/templates/web/apache2/default.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/13.10/templates/web/apache2/default.tpl b/install/ubuntu/13.10/templates/web/apache2/default.tpl index 3a2270156..e591a1cf1 100644 --- a/install/ubuntu/13.10/templates/web/apache2/default.tpl +++ b/install/ubuntu/13.10/templates/web/apache2/default.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/13.10/templates/web/apache2/hosting.stpl b/install/ubuntu/13.10/templates/web/apache2/hosting.stpl index c9c19512b..dee0eda9c 100644 --- a/install/ubuntu/13.10/templates/web/apache2/hosting.stpl +++ b/install/ubuntu/13.10/templates/web/apache2/hosting.stpl @@ -24,6 +24,7 @@ php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/13.10/templates/web/apache2/hosting.tpl b/install/ubuntu/13.10/templates/web/apache2/hosting.tpl index 1eb269103..b7c12699d 100644 --- a/install/ubuntu/13.10/templates/web/apache2/hosting.tpl +++ b/install/ubuntu/13.10/templates/web/apache2/hosting.tpl @@ -23,6 +23,7 @@ php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" php_admin_value open_basedir %docroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/13.10/templates/web/apache2/phpcgi.stpl b/install/ubuntu/13.10/templates/web/apache2/phpcgi.stpl index ae560dbe5..6cd15df00 100644 --- a/install/ubuntu/13.10/templates/web/apache2/phpcgi.stpl +++ b/install/ubuntu/13.10/templates/web/apache2/phpcgi.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp Action phpcgi-script /cgi-bin/php diff --git a/install/ubuntu/13.10/templates/web/apache2/phpcgi.tpl b/install/ubuntu/13.10/templates/web/apache2/phpcgi.tpl index c6796d29c..9d04361da 100644 --- a/install/ubuntu/13.10/templates/web/apache2/phpcgi.tpl +++ b/install/ubuntu/13.10/templates/web/apache2/phpcgi.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp Action phpcgi-script /cgi-bin/php diff --git a/install/ubuntu/13.10/templates/web/apache2/phpfcgid.stpl b/install/ubuntu/13.10/templates/web/apache2/phpfcgid.stpl index bc3688d98..9c0ca5027 100644 --- a/install/ubuntu/13.10/templates/web/apache2/phpfcgid.stpl +++ b/install/ubuntu/13.10/templates/web/apache2/phpfcgid.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp SetHandler fcgid-script diff --git a/install/ubuntu/13.10/templates/web/apache2/phpfcgid.tpl b/install/ubuntu/13.10/templates/web/apache2/phpfcgid.tpl index a4c012690..152e7c694 100644 --- a/install/ubuntu/13.10/templates/web/apache2/phpfcgid.tpl +++ b/install/ubuntu/13.10/templates/web/apache2/phpfcgid.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp SetHandler fcgid-script diff --git a/install/ubuntu/13.10/templates/web/php-fpm/default.tpl b/install/ubuntu/13.10/templates/web/php-fpm/default.tpl index 209e1e437..816fa21f9 100644 --- a/install/ubuntu/13.10/templates/web/php-fpm/default.tpl +++ b/install/ubuntu/13.10/templates/web/php-fpm/default.tpl @@ -11,6 +11,7 @@ pm.max_requests = 4000 pm.process_idle_timeout = 10s pm.status_path = /status +php_admin_value[sys_temp_dir] = /home/%user%/tmp php_admin_value[upload_tmp_dir] = /home/%user%/tmp php_admin_value[session.save_path] = /home/%user%/tmp diff --git a/install/ubuntu/13.10/templates/web/php-fpm/socket.tpl b/install/ubuntu/13.10/templates/web/php-fpm/socket.tpl index a0151084f..e427045ce 100644 --- a/install/ubuntu/13.10/templates/web/php-fpm/socket.tpl +++ b/install/ubuntu/13.10/templates/web/php-fpm/socket.tpl @@ -14,6 +14,7 @@ pm.max_requests = 4000 pm.process_idle_timeout = 10s pm.status_path = /status +php_admin_value[sys_temp_dir] = /home/%user%/tmp php_admin_value[upload_tmp_dir] = /home/%user%/tmp php_admin_value[session.save_path] = /home/%user%/tmp diff --git a/install/ubuntu/13.10/templates/web/skel/public_html/index.html b/install/ubuntu/13.10/templates/web/skel/public_html/index.html index 3eaddff73..1144ade96 100755 --- a/install/ubuntu/13.10/templates/web/skel/public_html/index.html +++ b/install/ubuntu/13.10/templates/web/skel/public_html/index.html @@ -18,7 +18,7 @@

%domain%

diff --git a/install/ubuntu/13.10/templates/web/skel/public_shtml/index.html b/install/ubuntu/13.10/templates/web/skel/public_shtml/index.html index 3eaddff73..1144ade96 100755 --- a/install/ubuntu/13.10/templates/web/skel/public_shtml/index.html +++ b/install/ubuntu/13.10/templates/web/skel/public_shtml/index.html @@ -18,7 +18,7 @@

%domain%

diff --git a/install/ubuntu/14.04/pma/apache.conf b/install/ubuntu/14.04/pma/apache.conf index 2a8f69e25..ce2a9fe2b 100644 --- a/install/ubuntu/14.04/pma/apache.conf +++ b/install/ubuntu/14.04/pma/apache.conf @@ -15,6 +15,7 @@ Alias /phpmyadmin /usr/share/phpmyadmin php_admin_flag allow_url_fopen Off php_value include_path . php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp + php_admin_value sys_temp_dir /var/lib/phpmyadmin/tmp php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext diff --git a/install/ubuntu/14.04/templates/web/apache2/basedir.stpl b/install/ubuntu/14.04/templates/web/apache2/basedir.stpl index 2db1d52c9..37c4a4b39 100644 --- a/install/ubuntu/14.04/templates/web/apache2/basedir.stpl +++ b/install/ubuntu/14.04/templates/web/apache2/basedir.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%"
diff --git a/install/ubuntu/14.04/templates/web/apache2/basedir.tpl b/install/ubuntu/14.04/templates/web/apache2/basedir.tpl index 96c94a1bd..a9d05ee66 100644 --- a/install/ubuntu/14.04/templates/web/apache2/basedir.tpl +++ b/install/ubuntu/14.04/templates/web/apache2/basedir.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" diff --git a/install/ubuntu/14.04/templates/web/apache2/default.stpl b/install/ubuntu/14.04/templates/web/apache2/default.stpl index ec34c2799..a5c509a9e 100644 --- a/install/ubuntu/14.04/templates/web/apache2/default.stpl +++ b/install/ubuntu/14.04/templates/web/apache2/default.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/14.04/templates/web/apache2/default.tpl b/install/ubuntu/14.04/templates/web/apache2/default.tpl index 3a2270156..e591a1cf1 100644 --- a/install/ubuntu/14.04/templates/web/apache2/default.tpl +++ b/install/ubuntu/14.04/templates/web/apache2/default.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/14.04/templates/web/apache2/hosting.stpl b/install/ubuntu/14.04/templates/web/apache2/hosting.stpl index c9c19512b..dee0eda9c 100644 --- a/install/ubuntu/14.04/templates/web/apache2/hosting.stpl +++ b/install/ubuntu/14.04/templates/web/apache2/hosting.stpl @@ -24,6 +24,7 @@ php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/14.04/templates/web/apache2/hosting.tpl b/install/ubuntu/14.04/templates/web/apache2/hosting.tpl index 1eb269103..b7c12699d 100644 --- a/install/ubuntu/14.04/templates/web/apache2/hosting.tpl +++ b/install/ubuntu/14.04/templates/web/apache2/hosting.tpl @@ -23,6 +23,7 @@ php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" php_admin_value open_basedir %docroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/14.04/templates/web/apache2/phpcgi.stpl b/install/ubuntu/14.04/templates/web/apache2/phpcgi.stpl index ae560dbe5..6cd15df00 100644 --- a/install/ubuntu/14.04/templates/web/apache2/phpcgi.stpl +++ b/install/ubuntu/14.04/templates/web/apache2/phpcgi.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp Action phpcgi-script /cgi-bin/php diff --git a/install/ubuntu/14.04/templates/web/apache2/phpcgi.tpl b/install/ubuntu/14.04/templates/web/apache2/phpcgi.tpl index c6796d29c..9d04361da 100644 --- a/install/ubuntu/14.04/templates/web/apache2/phpcgi.tpl +++ b/install/ubuntu/14.04/templates/web/apache2/phpcgi.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp Action phpcgi-script /cgi-bin/php diff --git a/install/ubuntu/14.04/templates/web/apache2/phpfcgid.stpl b/install/ubuntu/14.04/templates/web/apache2/phpfcgid.stpl index bc3688d98..9c0ca5027 100644 --- a/install/ubuntu/14.04/templates/web/apache2/phpfcgid.stpl +++ b/install/ubuntu/14.04/templates/web/apache2/phpfcgid.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp SetHandler fcgid-script diff --git a/install/ubuntu/14.04/templates/web/apache2/phpfcgid.tpl b/install/ubuntu/14.04/templates/web/apache2/phpfcgid.tpl index a4c012690..152e7c694 100644 --- a/install/ubuntu/14.04/templates/web/apache2/phpfcgid.tpl +++ b/install/ubuntu/14.04/templates/web/apache2/phpfcgid.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp SetHandler fcgid-script diff --git a/install/ubuntu/14.04/templates/web/php-fpm/default.tpl b/install/ubuntu/14.04/templates/web/php-fpm/default.tpl index 209e1e437..816fa21f9 100644 --- a/install/ubuntu/14.04/templates/web/php-fpm/default.tpl +++ b/install/ubuntu/14.04/templates/web/php-fpm/default.tpl @@ -11,6 +11,7 @@ pm.max_requests = 4000 pm.process_idle_timeout = 10s pm.status_path = /status +php_admin_value[sys_temp_dir] = /home/%user%/tmp php_admin_value[upload_tmp_dir] = /home/%user%/tmp php_admin_value[session.save_path] = /home/%user%/tmp diff --git a/install/ubuntu/14.04/templates/web/php-fpm/socket.tpl b/install/ubuntu/14.04/templates/web/php-fpm/socket.tpl index a0151084f..e427045ce 100644 --- a/install/ubuntu/14.04/templates/web/php-fpm/socket.tpl +++ b/install/ubuntu/14.04/templates/web/php-fpm/socket.tpl @@ -14,6 +14,7 @@ pm.max_requests = 4000 pm.process_idle_timeout = 10s pm.status_path = /status +php_admin_value[sys_temp_dir] = /home/%user%/tmp php_admin_value[upload_tmp_dir] = /home/%user%/tmp php_admin_value[session.save_path] = /home/%user%/tmp diff --git a/install/ubuntu/14.04/templates/web/skel/public_html/index.html b/install/ubuntu/14.04/templates/web/skel/public_html/index.html index 3eaddff73..1144ade96 100755 --- a/install/ubuntu/14.04/templates/web/skel/public_html/index.html +++ b/install/ubuntu/14.04/templates/web/skel/public_html/index.html @@ -18,7 +18,7 @@

%domain%

diff --git a/install/ubuntu/14.04/templates/web/skel/public_shtml/index.html b/install/ubuntu/14.04/templates/web/skel/public_shtml/index.html index 3eaddff73..1144ade96 100755 --- a/install/ubuntu/14.04/templates/web/skel/public_shtml/index.html +++ b/install/ubuntu/14.04/templates/web/skel/public_shtml/index.html @@ -18,7 +18,7 @@

%domain%

diff --git a/install/ubuntu/14.10/pma/apache.conf b/install/ubuntu/14.10/pma/apache.conf index 2a8f69e25..ce2a9fe2b 100644 --- a/install/ubuntu/14.10/pma/apache.conf +++ b/install/ubuntu/14.10/pma/apache.conf @@ -15,6 +15,7 @@ Alias /phpmyadmin /usr/share/phpmyadmin php_admin_flag allow_url_fopen Off php_value include_path . php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp + php_admin_value sys_temp_dir /var/lib/phpmyadmin/tmp php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext diff --git a/install/ubuntu/14.10/templates/web/apache2/basedir.stpl b/install/ubuntu/14.10/templates/web/apache2/basedir.stpl index 2db1d52c9..37c4a4b39 100644 --- a/install/ubuntu/14.10/templates/web/apache2/basedir.stpl +++ b/install/ubuntu/14.10/templates/web/apache2/basedir.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%"
diff --git a/install/ubuntu/14.10/templates/web/apache2/basedir.tpl b/install/ubuntu/14.10/templates/web/apache2/basedir.tpl index 96c94a1bd..a9d05ee66 100644 --- a/install/ubuntu/14.10/templates/web/apache2/basedir.tpl +++ b/install/ubuntu/14.10/templates/web/apache2/basedir.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" diff --git a/install/ubuntu/14.10/templates/web/apache2/default.stpl b/install/ubuntu/14.10/templates/web/apache2/default.stpl index ec34c2799..a5c509a9e 100644 --- a/install/ubuntu/14.10/templates/web/apache2/default.stpl +++ b/install/ubuntu/14.10/templates/web/apache2/default.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/14.10/templates/web/apache2/default.tpl b/install/ubuntu/14.10/templates/web/apache2/default.tpl index 3a2270156..e591a1cf1 100644 --- a/install/ubuntu/14.10/templates/web/apache2/default.tpl +++ b/install/ubuntu/14.10/templates/web/apache2/default.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/14.10/templates/web/apache2/hosting.stpl b/install/ubuntu/14.10/templates/web/apache2/hosting.stpl index c9c19512b..dee0eda9c 100644 --- a/install/ubuntu/14.10/templates/web/apache2/hosting.stpl +++ b/install/ubuntu/14.10/templates/web/apache2/hosting.stpl @@ -24,6 +24,7 @@ php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/14.10/templates/web/apache2/hosting.tpl b/install/ubuntu/14.10/templates/web/apache2/hosting.tpl index 1eb269103..b7c12699d 100644 --- a/install/ubuntu/14.10/templates/web/apache2/hosting.tpl +++ b/install/ubuntu/14.10/templates/web/apache2/hosting.tpl @@ -23,6 +23,7 @@ php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" php_admin_value open_basedir %docroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/14.10/templates/web/apache2/phpcgi.stpl b/install/ubuntu/14.10/templates/web/apache2/phpcgi.stpl index ae560dbe5..6cd15df00 100644 --- a/install/ubuntu/14.10/templates/web/apache2/phpcgi.stpl +++ b/install/ubuntu/14.10/templates/web/apache2/phpcgi.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp Action phpcgi-script /cgi-bin/php diff --git a/install/ubuntu/14.10/templates/web/apache2/phpcgi.tpl b/install/ubuntu/14.10/templates/web/apache2/phpcgi.tpl index c6796d29c..9d04361da 100644 --- a/install/ubuntu/14.10/templates/web/apache2/phpcgi.tpl +++ b/install/ubuntu/14.10/templates/web/apache2/phpcgi.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp Action phpcgi-script /cgi-bin/php diff --git a/install/ubuntu/14.10/templates/web/apache2/phpfcgid.stpl b/install/ubuntu/14.10/templates/web/apache2/phpfcgid.stpl index bc3688d98..9c0ca5027 100644 --- a/install/ubuntu/14.10/templates/web/apache2/phpfcgid.stpl +++ b/install/ubuntu/14.10/templates/web/apache2/phpfcgid.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp SetHandler fcgid-script diff --git a/install/ubuntu/14.10/templates/web/apache2/phpfcgid.tpl b/install/ubuntu/14.10/templates/web/apache2/phpfcgid.tpl index a4c012690..152e7c694 100644 --- a/install/ubuntu/14.10/templates/web/apache2/phpfcgid.tpl +++ b/install/ubuntu/14.10/templates/web/apache2/phpfcgid.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp SetHandler fcgid-script diff --git a/install/ubuntu/14.10/templates/web/php-fpm/default.tpl b/install/ubuntu/14.10/templates/web/php-fpm/default.tpl index 209e1e437..816fa21f9 100644 --- a/install/ubuntu/14.10/templates/web/php-fpm/default.tpl +++ b/install/ubuntu/14.10/templates/web/php-fpm/default.tpl @@ -11,6 +11,7 @@ pm.max_requests = 4000 pm.process_idle_timeout = 10s pm.status_path = /status +php_admin_value[sys_temp_dir] = /home/%user%/tmp php_admin_value[upload_tmp_dir] = /home/%user%/tmp php_admin_value[session.save_path] = /home/%user%/tmp diff --git a/install/ubuntu/14.10/templates/web/php-fpm/socket.tpl b/install/ubuntu/14.10/templates/web/php-fpm/socket.tpl index a0151084f..e427045ce 100644 --- a/install/ubuntu/14.10/templates/web/php-fpm/socket.tpl +++ b/install/ubuntu/14.10/templates/web/php-fpm/socket.tpl @@ -14,6 +14,7 @@ pm.max_requests = 4000 pm.process_idle_timeout = 10s pm.status_path = /status +php_admin_value[sys_temp_dir] = /home/%user%/tmp php_admin_value[upload_tmp_dir] = /home/%user%/tmp php_admin_value[session.save_path] = /home/%user%/tmp diff --git a/install/ubuntu/14.10/templates/web/skel/public_html/index.html b/install/ubuntu/14.10/templates/web/skel/public_html/index.html index 3eaddff73..1144ade96 100755 --- a/install/ubuntu/14.10/templates/web/skel/public_html/index.html +++ b/install/ubuntu/14.10/templates/web/skel/public_html/index.html @@ -18,7 +18,7 @@

%domain%

diff --git a/install/ubuntu/14.10/templates/web/skel/public_shtml/index.html b/install/ubuntu/14.10/templates/web/skel/public_shtml/index.html index 3eaddff73..1144ade96 100755 --- a/install/ubuntu/14.10/templates/web/skel/public_shtml/index.html +++ b/install/ubuntu/14.10/templates/web/skel/public_shtml/index.html @@ -18,7 +18,7 @@

%domain%

diff --git a/install/ubuntu/15.04/pma/apache.conf b/install/ubuntu/15.04/pma/apache.conf index 2a8f69e25..ce2a9fe2b 100644 --- a/install/ubuntu/15.04/pma/apache.conf +++ b/install/ubuntu/15.04/pma/apache.conf @@ -15,6 +15,7 @@ Alias /phpmyadmin /usr/share/phpmyadmin php_admin_flag allow_url_fopen Off php_value include_path . php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp + php_admin_value sys_temp_dir /var/lib/phpmyadmin/tmp php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext diff --git a/install/ubuntu/15.04/templates/web/apache2/basedir.stpl b/install/ubuntu/15.04/templates/web/apache2/basedir.stpl index 2db1d52c9..37c4a4b39 100644 --- a/install/ubuntu/15.04/templates/web/apache2/basedir.stpl +++ b/install/ubuntu/15.04/templates/web/apache2/basedir.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%"
diff --git a/install/ubuntu/15.04/templates/web/apache2/basedir.tpl b/install/ubuntu/15.04/templates/web/apache2/basedir.tpl index 96c94a1bd..a9d05ee66 100644 --- a/install/ubuntu/15.04/templates/web/apache2/basedir.tpl +++ b/install/ubuntu/15.04/templates/web/apache2/basedir.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" diff --git a/install/ubuntu/15.04/templates/web/apache2/default.stpl b/install/ubuntu/15.04/templates/web/apache2/default.stpl index ec34c2799..a5c509a9e 100644 --- a/install/ubuntu/15.04/templates/web/apache2/default.stpl +++ b/install/ubuntu/15.04/templates/web/apache2/default.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/15.04/templates/web/apache2/default.tpl b/install/ubuntu/15.04/templates/web/apache2/default.tpl index 3a2270156..e591a1cf1 100644 --- a/install/ubuntu/15.04/templates/web/apache2/default.tpl +++ b/install/ubuntu/15.04/templates/web/apache2/default.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/15.04/templates/web/apache2/hosting.stpl b/install/ubuntu/15.04/templates/web/apache2/hosting.stpl index c9c19512b..dee0eda9c 100644 --- a/install/ubuntu/15.04/templates/web/apache2/hosting.stpl +++ b/install/ubuntu/15.04/templates/web/apache2/hosting.stpl @@ -24,6 +24,7 @@ php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/15.04/templates/web/apache2/hosting.tpl b/install/ubuntu/15.04/templates/web/apache2/hosting.tpl index 1eb269103..b7c12699d 100644 --- a/install/ubuntu/15.04/templates/web/apache2/hosting.tpl +++ b/install/ubuntu/15.04/templates/web/apache2/hosting.tpl @@ -23,6 +23,7 @@ php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" php_admin_value open_basedir %docroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/15.04/templates/web/apache2/phpcgi.stpl b/install/ubuntu/15.04/templates/web/apache2/phpcgi.stpl index ae560dbe5..6cd15df00 100644 --- a/install/ubuntu/15.04/templates/web/apache2/phpcgi.stpl +++ b/install/ubuntu/15.04/templates/web/apache2/phpcgi.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp Action phpcgi-script /cgi-bin/php diff --git a/install/ubuntu/15.04/templates/web/apache2/phpcgi.tpl b/install/ubuntu/15.04/templates/web/apache2/phpcgi.tpl index c6796d29c..9d04361da 100644 --- a/install/ubuntu/15.04/templates/web/apache2/phpcgi.tpl +++ b/install/ubuntu/15.04/templates/web/apache2/phpcgi.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp Action phpcgi-script /cgi-bin/php diff --git a/install/ubuntu/15.04/templates/web/apache2/phpfcgid.stpl b/install/ubuntu/15.04/templates/web/apache2/phpfcgid.stpl index bc3688d98..9c0ca5027 100644 --- a/install/ubuntu/15.04/templates/web/apache2/phpfcgid.stpl +++ b/install/ubuntu/15.04/templates/web/apache2/phpfcgid.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp SetHandler fcgid-script diff --git a/install/ubuntu/15.04/templates/web/apache2/phpfcgid.tpl b/install/ubuntu/15.04/templates/web/apache2/phpfcgid.tpl index a4c012690..152e7c694 100644 --- a/install/ubuntu/15.04/templates/web/apache2/phpfcgid.tpl +++ b/install/ubuntu/15.04/templates/web/apache2/phpfcgid.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp SetHandler fcgid-script diff --git a/install/ubuntu/15.04/templates/web/php-fpm/default.tpl b/install/ubuntu/15.04/templates/web/php-fpm/default.tpl index 209e1e437..816fa21f9 100644 --- a/install/ubuntu/15.04/templates/web/php-fpm/default.tpl +++ b/install/ubuntu/15.04/templates/web/php-fpm/default.tpl @@ -11,6 +11,7 @@ pm.max_requests = 4000 pm.process_idle_timeout = 10s pm.status_path = /status +php_admin_value[sys_temp_dir] = /home/%user%/tmp php_admin_value[upload_tmp_dir] = /home/%user%/tmp php_admin_value[session.save_path] = /home/%user%/tmp diff --git a/install/ubuntu/15.04/templates/web/php-fpm/socket.tpl b/install/ubuntu/15.04/templates/web/php-fpm/socket.tpl index a0151084f..e427045ce 100644 --- a/install/ubuntu/15.04/templates/web/php-fpm/socket.tpl +++ b/install/ubuntu/15.04/templates/web/php-fpm/socket.tpl @@ -14,6 +14,7 @@ pm.max_requests = 4000 pm.process_idle_timeout = 10s pm.status_path = /status +php_admin_value[sys_temp_dir] = /home/%user%/tmp php_admin_value[upload_tmp_dir] = /home/%user%/tmp php_admin_value[session.save_path] = /home/%user%/tmp diff --git a/install/ubuntu/15.04/templates/web/skel/public_html/index.html b/install/ubuntu/15.04/templates/web/skel/public_html/index.html index 3eaddff73..1144ade96 100755 --- a/install/ubuntu/15.04/templates/web/skel/public_html/index.html +++ b/install/ubuntu/15.04/templates/web/skel/public_html/index.html @@ -18,7 +18,7 @@

%domain%

diff --git a/install/ubuntu/15.04/templates/web/skel/public_shtml/index.html b/install/ubuntu/15.04/templates/web/skel/public_shtml/index.html index 3eaddff73..1144ade96 100755 --- a/install/ubuntu/15.04/templates/web/skel/public_shtml/index.html +++ b/install/ubuntu/15.04/templates/web/skel/public_shtml/index.html @@ -18,7 +18,7 @@

%domain%

diff --git a/install/ubuntu/15.10/pma/apache.conf b/install/ubuntu/15.10/pma/apache.conf index 2a8f69e25..ce2a9fe2b 100644 --- a/install/ubuntu/15.10/pma/apache.conf +++ b/install/ubuntu/15.10/pma/apache.conf @@ -15,6 +15,7 @@ Alias /phpmyadmin /usr/share/phpmyadmin php_admin_flag allow_url_fopen Off php_value include_path . php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp + php_admin_value sys_temp_dir /var/lib/phpmyadmin/tmp php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext diff --git a/install/ubuntu/15.10/templates/web/apache2/basedir.stpl b/install/ubuntu/15.10/templates/web/apache2/basedir.stpl index 2db1d52c9..37c4a4b39 100644 --- a/install/ubuntu/15.10/templates/web/apache2/basedir.stpl +++ b/install/ubuntu/15.10/templates/web/apache2/basedir.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%"
diff --git a/install/ubuntu/15.10/templates/web/apache2/basedir.tpl b/install/ubuntu/15.10/templates/web/apache2/basedir.tpl index 96c94a1bd..a9d05ee66 100644 --- a/install/ubuntu/15.10/templates/web/apache2/basedir.tpl +++ b/install/ubuntu/15.10/templates/web/apache2/basedir.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" diff --git a/install/ubuntu/15.10/templates/web/apache2/default.stpl b/install/ubuntu/15.10/templates/web/apache2/default.stpl index ec34c2799..a5c509a9e 100644 --- a/install/ubuntu/15.10/templates/web/apache2/default.stpl +++ b/install/ubuntu/15.10/templates/web/apache2/default.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/15.10/templates/web/apache2/default.tpl b/install/ubuntu/15.10/templates/web/apache2/default.tpl index 3a2270156..e591a1cf1 100644 --- a/install/ubuntu/15.10/templates/web/apache2/default.tpl +++ b/install/ubuntu/15.10/templates/web/apache2/default.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/15.10/templates/web/apache2/hosting.stpl b/install/ubuntu/15.10/templates/web/apache2/hosting.stpl index c9c19512b..dee0eda9c 100644 --- a/install/ubuntu/15.10/templates/web/apache2/hosting.stpl +++ b/install/ubuntu/15.10/templates/web/apache2/hosting.stpl @@ -24,6 +24,7 @@ php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/15.10/templates/web/apache2/hosting.tpl b/install/ubuntu/15.10/templates/web/apache2/hosting.tpl index 1eb269103..b7c12699d 100644 --- a/install/ubuntu/15.10/templates/web/apache2/hosting.tpl +++ b/install/ubuntu/15.10/templates/web/apache2/hosting.tpl @@ -23,6 +23,7 @@ php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" php_admin_value open_basedir %docroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/15.10/templates/web/apache2/phpcgi.stpl b/install/ubuntu/15.10/templates/web/apache2/phpcgi.stpl index ae560dbe5..6cd15df00 100644 --- a/install/ubuntu/15.10/templates/web/apache2/phpcgi.stpl +++ b/install/ubuntu/15.10/templates/web/apache2/phpcgi.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp Action phpcgi-script /cgi-bin/php diff --git a/install/ubuntu/15.10/templates/web/apache2/phpcgi.tpl b/install/ubuntu/15.10/templates/web/apache2/phpcgi.tpl index c6796d29c..9d04361da 100644 --- a/install/ubuntu/15.10/templates/web/apache2/phpcgi.tpl +++ b/install/ubuntu/15.10/templates/web/apache2/phpcgi.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp Action phpcgi-script /cgi-bin/php diff --git a/install/ubuntu/15.10/templates/web/apache2/phpfcgid.stpl b/install/ubuntu/15.10/templates/web/apache2/phpfcgid.stpl index bc3688d98..9c0ca5027 100644 --- a/install/ubuntu/15.10/templates/web/apache2/phpfcgid.stpl +++ b/install/ubuntu/15.10/templates/web/apache2/phpfcgid.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp SetHandler fcgid-script diff --git a/install/ubuntu/15.10/templates/web/apache2/phpfcgid.tpl b/install/ubuntu/15.10/templates/web/apache2/phpfcgid.tpl index a4c012690..152e7c694 100644 --- a/install/ubuntu/15.10/templates/web/apache2/phpfcgid.tpl +++ b/install/ubuntu/15.10/templates/web/apache2/phpfcgid.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp SetHandler fcgid-script diff --git a/install/ubuntu/15.10/templates/web/php-fpm/default.tpl b/install/ubuntu/15.10/templates/web/php-fpm/default.tpl index 209e1e437..816fa21f9 100644 --- a/install/ubuntu/15.10/templates/web/php-fpm/default.tpl +++ b/install/ubuntu/15.10/templates/web/php-fpm/default.tpl @@ -11,6 +11,7 @@ pm.max_requests = 4000 pm.process_idle_timeout = 10s pm.status_path = /status +php_admin_value[sys_temp_dir] = /home/%user%/tmp php_admin_value[upload_tmp_dir] = /home/%user%/tmp php_admin_value[session.save_path] = /home/%user%/tmp diff --git a/install/ubuntu/15.10/templates/web/php-fpm/socket.tpl b/install/ubuntu/15.10/templates/web/php-fpm/socket.tpl index a0151084f..e427045ce 100644 --- a/install/ubuntu/15.10/templates/web/php-fpm/socket.tpl +++ b/install/ubuntu/15.10/templates/web/php-fpm/socket.tpl @@ -14,6 +14,7 @@ pm.max_requests = 4000 pm.process_idle_timeout = 10s pm.status_path = /status +php_admin_value[sys_temp_dir] = /home/%user%/tmp php_admin_value[upload_tmp_dir] = /home/%user%/tmp php_admin_value[session.save_path] = /home/%user%/tmp diff --git a/install/ubuntu/15.10/templates/web/skel/public_html/index.html b/install/ubuntu/15.10/templates/web/skel/public_html/index.html index 3eaddff73..1144ade96 100755 --- a/install/ubuntu/15.10/templates/web/skel/public_html/index.html +++ b/install/ubuntu/15.10/templates/web/skel/public_html/index.html @@ -18,7 +18,7 @@

%domain%

diff --git a/install/ubuntu/15.10/templates/web/skel/public_shtml/index.html b/install/ubuntu/15.10/templates/web/skel/public_shtml/index.html index 3eaddff73..1144ade96 100755 --- a/install/ubuntu/15.10/templates/web/skel/public_shtml/index.html +++ b/install/ubuntu/15.10/templates/web/skel/public_shtml/index.html @@ -18,7 +18,7 @@

%domain%

diff --git a/install/ubuntu/16.04/pma/apache.conf b/install/ubuntu/16.04/pma/apache.conf index 4da6ce849..81c1743a3 100644 --- a/install/ubuntu/16.04/pma/apache.conf +++ b/install/ubuntu/16.04/pma/apache.conf @@ -15,6 +15,7 @@ Alias /phpmyadmin /usr/share/phpmyadmin php_admin_flag allow_url_fopen Off php_value include_path . php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp + php_admin_value sys_temp_dir /var/lib/phpmyadmin/tmp php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext:/usr/share/javascript/ diff --git a/install/ubuntu/16.04/templates/web/apache2/basedir.stpl b/install/ubuntu/16.04/templates/web/apache2/basedir.stpl index 2db1d52c9..37c4a4b39 100644 --- a/install/ubuntu/16.04/templates/web/apache2/basedir.stpl +++ b/install/ubuntu/16.04/templates/web/apache2/basedir.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%"
diff --git a/install/ubuntu/16.04/templates/web/apache2/basedir.tpl b/install/ubuntu/16.04/templates/web/apache2/basedir.tpl index 96c94a1bd..a9d05ee66 100644 --- a/install/ubuntu/16.04/templates/web/apache2/basedir.tpl +++ b/install/ubuntu/16.04/templates/web/apache2/basedir.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" diff --git a/install/ubuntu/16.04/templates/web/apache2/default.stpl b/install/ubuntu/16.04/templates/web/apache2/default.stpl index ec34c2799..a5c509a9e 100644 --- a/install/ubuntu/16.04/templates/web/apache2/default.stpl +++ b/install/ubuntu/16.04/templates/web/apache2/default.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/16.04/templates/web/apache2/default.tpl b/install/ubuntu/16.04/templates/web/apache2/default.tpl index 3a2270156..e591a1cf1 100644 --- a/install/ubuntu/16.04/templates/web/apache2/default.tpl +++ b/install/ubuntu/16.04/templates/web/apache2/default.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/16.04/templates/web/apache2/hosting.stpl b/install/ubuntu/16.04/templates/web/apache2/hosting.stpl index c9c19512b..dee0eda9c 100644 --- a/install/ubuntu/16.04/templates/web/apache2/hosting.stpl +++ b/install/ubuntu/16.04/templates/web/apache2/hosting.stpl @@ -24,6 +24,7 @@ php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/16.04/templates/web/apache2/hosting.tpl b/install/ubuntu/16.04/templates/web/apache2/hosting.tpl index 1eb269103..b7c12699d 100644 --- a/install/ubuntu/16.04/templates/web/apache2/hosting.tpl +++ b/install/ubuntu/16.04/templates/web/apache2/hosting.tpl @@ -23,6 +23,7 @@ php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" php_admin_value open_basedir %docroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/16.04/templates/web/apache2/phpcgi.stpl b/install/ubuntu/16.04/templates/web/apache2/phpcgi.stpl index ae560dbe5..6cd15df00 100644 --- a/install/ubuntu/16.04/templates/web/apache2/phpcgi.stpl +++ b/install/ubuntu/16.04/templates/web/apache2/phpcgi.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp Action phpcgi-script /cgi-bin/php diff --git a/install/ubuntu/16.04/templates/web/apache2/phpcgi.tpl b/install/ubuntu/16.04/templates/web/apache2/phpcgi.tpl index c6796d29c..9d04361da 100644 --- a/install/ubuntu/16.04/templates/web/apache2/phpcgi.tpl +++ b/install/ubuntu/16.04/templates/web/apache2/phpcgi.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp Action phpcgi-script /cgi-bin/php diff --git a/install/ubuntu/16.04/templates/web/apache2/phpfcgid.stpl b/install/ubuntu/16.04/templates/web/apache2/phpfcgid.stpl index bc3688d98..9c0ca5027 100644 --- a/install/ubuntu/16.04/templates/web/apache2/phpfcgid.stpl +++ b/install/ubuntu/16.04/templates/web/apache2/phpfcgid.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp SetHandler fcgid-script diff --git a/install/ubuntu/16.04/templates/web/apache2/phpfcgid.tpl b/install/ubuntu/16.04/templates/web/apache2/phpfcgid.tpl index a4c012690..152e7c694 100644 --- a/install/ubuntu/16.04/templates/web/apache2/phpfcgid.tpl +++ b/install/ubuntu/16.04/templates/web/apache2/phpfcgid.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp SetHandler fcgid-script diff --git a/install/ubuntu/16.04/templates/web/php-fpm/default.tpl b/install/ubuntu/16.04/templates/web/php-fpm/default.tpl index 209e1e437..816fa21f9 100644 --- a/install/ubuntu/16.04/templates/web/php-fpm/default.tpl +++ b/install/ubuntu/16.04/templates/web/php-fpm/default.tpl @@ -11,6 +11,7 @@ pm.max_requests = 4000 pm.process_idle_timeout = 10s pm.status_path = /status +php_admin_value[sys_temp_dir] = /home/%user%/tmp php_admin_value[upload_tmp_dir] = /home/%user%/tmp php_admin_value[session.save_path] = /home/%user%/tmp diff --git a/install/ubuntu/16.04/templates/web/php-fpm/socket.tpl b/install/ubuntu/16.04/templates/web/php-fpm/socket.tpl index a0151084f..e427045ce 100644 --- a/install/ubuntu/16.04/templates/web/php-fpm/socket.tpl +++ b/install/ubuntu/16.04/templates/web/php-fpm/socket.tpl @@ -14,6 +14,7 @@ pm.max_requests = 4000 pm.process_idle_timeout = 10s pm.status_path = /status +php_admin_value[sys_temp_dir] = /home/%user%/tmp php_admin_value[upload_tmp_dir] = /home/%user%/tmp php_admin_value[session.save_path] = /home/%user%/tmp diff --git a/install/ubuntu/16.04/templates/web/skel/public_html/index.html b/install/ubuntu/16.04/templates/web/skel/public_html/index.html index 3eaddff73..1144ade96 100755 --- a/install/ubuntu/16.04/templates/web/skel/public_html/index.html +++ b/install/ubuntu/16.04/templates/web/skel/public_html/index.html @@ -18,7 +18,7 @@

%domain%

diff --git a/install/ubuntu/16.04/templates/web/skel/public_shtml/index.html b/install/ubuntu/16.04/templates/web/skel/public_shtml/index.html index 3eaddff73..1144ade96 100755 --- a/install/ubuntu/16.04/templates/web/skel/public_shtml/index.html +++ b/install/ubuntu/16.04/templates/web/skel/public_shtml/index.html @@ -18,7 +18,7 @@

%domain%

diff --git a/install/ubuntu/16.10/pma/apache.conf b/install/ubuntu/16.10/pma/apache.conf index 4da6ce849..81c1743a3 100644 --- a/install/ubuntu/16.10/pma/apache.conf +++ b/install/ubuntu/16.10/pma/apache.conf @@ -15,6 +15,7 @@ Alias /phpmyadmin /usr/share/phpmyadmin php_admin_flag allow_url_fopen Off php_value include_path . php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp + php_admin_value sys_temp_dir /var/lib/phpmyadmin/tmp php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext:/usr/share/javascript/ diff --git a/install/ubuntu/16.10/templates/web/apache2/basedir.stpl b/install/ubuntu/16.10/templates/web/apache2/basedir.stpl index 2db1d52c9..37c4a4b39 100644 --- a/install/ubuntu/16.10/templates/web/apache2/basedir.stpl +++ b/install/ubuntu/16.10/templates/web/apache2/basedir.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%"
diff --git a/install/ubuntu/16.10/templates/web/apache2/basedir.tpl b/install/ubuntu/16.10/templates/web/apache2/basedir.tpl index 96c94a1bd..a9d05ee66 100644 --- a/install/ubuntu/16.10/templates/web/apache2/basedir.tpl +++ b/install/ubuntu/16.10/templates/web/apache2/basedir.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" diff --git a/install/ubuntu/16.10/templates/web/apache2/default.stpl b/install/ubuntu/16.10/templates/web/apache2/default.stpl index ec34c2799..a5c509a9e 100644 --- a/install/ubuntu/16.10/templates/web/apache2/default.stpl +++ b/install/ubuntu/16.10/templates/web/apache2/default.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/16.10/templates/web/apache2/default.tpl b/install/ubuntu/16.10/templates/web/apache2/default.tpl index 3a2270156..e591a1cf1 100644 --- a/install/ubuntu/16.10/templates/web/apache2/default.tpl +++ b/install/ubuntu/16.10/templates/web/apache2/default.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/16.10/templates/web/apache2/hosting.stpl b/install/ubuntu/16.10/templates/web/apache2/hosting.stpl index c9c19512b..dee0eda9c 100644 --- a/install/ubuntu/16.10/templates/web/apache2/hosting.stpl +++ b/install/ubuntu/16.10/templates/web/apache2/hosting.stpl @@ -24,6 +24,7 @@ php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/16.10/templates/web/apache2/hosting.tpl b/install/ubuntu/16.10/templates/web/apache2/hosting.tpl index 1eb269103..b7c12699d 100644 --- a/install/ubuntu/16.10/templates/web/apache2/hosting.tpl +++ b/install/ubuntu/16.10/templates/web/apache2/hosting.tpl @@ -23,6 +23,7 @@ php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" php_admin_value open_basedir %docroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/16.10/templates/web/apache2/phpcgi.stpl b/install/ubuntu/16.10/templates/web/apache2/phpcgi.stpl index ae560dbe5..6cd15df00 100644 --- a/install/ubuntu/16.10/templates/web/apache2/phpcgi.stpl +++ b/install/ubuntu/16.10/templates/web/apache2/phpcgi.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp Action phpcgi-script /cgi-bin/php diff --git a/install/ubuntu/16.10/templates/web/apache2/phpcgi.tpl b/install/ubuntu/16.10/templates/web/apache2/phpcgi.tpl index c6796d29c..9d04361da 100644 --- a/install/ubuntu/16.10/templates/web/apache2/phpcgi.tpl +++ b/install/ubuntu/16.10/templates/web/apache2/phpcgi.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp Action phpcgi-script /cgi-bin/php diff --git a/install/ubuntu/16.10/templates/web/apache2/phpfcgid.stpl b/install/ubuntu/16.10/templates/web/apache2/phpfcgid.stpl index bc3688d98..9c0ca5027 100644 --- a/install/ubuntu/16.10/templates/web/apache2/phpfcgid.stpl +++ b/install/ubuntu/16.10/templates/web/apache2/phpfcgid.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp SetHandler fcgid-script diff --git a/install/ubuntu/16.10/templates/web/apache2/phpfcgid.tpl b/install/ubuntu/16.10/templates/web/apache2/phpfcgid.tpl index a4c012690..152e7c694 100644 --- a/install/ubuntu/16.10/templates/web/apache2/phpfcgid.tpl +++ b/install/ubuntu/16.10/templates/web/apache2/phpfcgid.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp SetHandler fcgid-script diff --git a/install/ubuntu/16.10/templates/web/php-fpm/default.tpl b/install/ubuntu/16.10/templates/web/php-fpm/default.tpl index 209e1e437..816fa21f9 100644 --- a/install/ubuntu/16.10/templates/web/php-fpm/default.tpl +++ b/install/ubuntu/16.10/templates/web/php-fpm/default.tpl @@ -11,6 +11,7 @@ pm.max_requests = 4000 pm.process_idle_timeout = 10s pm.status_path = /status +php_admin_value[sys_temp_dir] = /home/%user%/tmp php_admin_value[upload_tmp_dir] = /home/%user%/tmp php_admin_value[session.save_path] = /home/%user%/tmp diff --git a/install/ubuntu/16.10/templates/web/php-fpm/socket.tpl b/install/ubuntu/16.10/templates/web/php-fpm/socket.tpl index a0151084f..e427045ce 100644 --- a/install/ubuntu/16.10/templates/web/php-fpm/socket.tpl +++ b/install/ubuntu/16.10/templates/web/php-fpm/socket.tpl @@ -14,6 +14,7 @@ pm.max_requests = 4000 pm.process_idle_timeout = 10s pm.status_path = /status +php_admin_value[sys_temp_dir] = /home/%user%/tmp php_admin_value[upload_tmp_dir] = /home/%user%/tmp php_admin_value[session.save_path] = /home/%user%/tmp diff --git a/install/ubuntu/16.10/templates/web/skel/public_html/index.html b/install/ubuntu/16.10/templates/web/skel/public_html/index.html index 3eaddff73..1144ade96 100755 --- a/install/ubuntu/16.10/templates/web/skel/public_html/index.html +++ b/install/ubuntu/16.10/templates/web/skel/public_html/index.html @@ -18,7 +18,7 @@

%domain%

diff --git a/install/ubuntu/16.10/templates/web/skel/public_shtml/index.html b/install/ubuntu/16.10/templates/web/skel/public_shtml/index.html index 3eaddff73..1144ade96 100755 --- a/install/ubuntu/16.10/templates/web/skel/public_shtml/index.html +++ b/install/ubuntu/16.10/templates/web/skel/public_shtml/index.html @@ -18,7 +18,7 @@

%domain%

diff --git a/install/ubuntu/17.04/pma/apache.conf b/install/ubuntu/17.04/pma/apache.conf index 4da6ce849..81c1743a3 100644 --- a/install/ubuntu/17.04/pma/apache.conf +++ b/install/ubuntu/17.04/pma/apache.conf @@ -15,6 +15,7 @@ Alias /phpmyadmin /usr/share/phpmyadmin php_admin_flag allow_url_fopen Off php_value include_path . php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp + php_admin_value sys_temp_dir /var/lib/phpmyadmin/tmp php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext:/usr/share/javascript/ diff --git a/install/ubuntu/17.04/templates/web/apache2/basedir.stpl b/install/ubuntu/17.04/templates/web/apache2/basedir.stpl index d978d4c43..04c39fcf6 100644 --- a/install/ubuntu/17.04/templates/web/apache2/basedir.stpl +++ b/install/ubuntu/17.04/templates/web/apache2/basedir.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%"
diff --git a/install/ubuntu/17.04/templates/web/apache2/basedir.tpl b/install/ubuntu/17.04/templates/web/apache2/basedir.tpl index 96c94a1bd..a9d05ee66 100644 --- a/install/ubuntu/17.04/templates/web/apache2/basedir.tpl +++ b/install/ubuntu/17.04/templates/web/apache2/basedir.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" diff --git a/install/ubuntu/17.04/templates/web/apache2/default.stpl b/install/ubuntu/17.04/templates/web/apache2/default.stpl index ec34c2799..a5c509a9e 100644 --- a/install/ubuntu/17.04/templates/web/apache2/default.stpl +++ b/install/ubuntu/17.04/templates/web/apache2/default.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/17.04/templates/web/apache2/default.tpl b/install/ubuntu/17.04/templates/web/apache2/default.tpl index 3a2270156..e591a1cf1 100644 --- a/install/ubuntu/17.04/templates/web/apache2/default.tpl +++ b/install/ubuntu/17.04/templates/web/apache2/default.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/17.04/templates/web/apache2/hosting.stpl b/install/ubuntu/17.04/templates/web/apache2/hosting.stpl index 8892072b1..6d99c97c9 100644 --- a/install/ubuntu/17.04/templates/web/apache2/hosting.stpl +++ b/install/ubuntu/17.04/templates/web/apache2/hosting.stpl @@ -24,6 +24,7 @@ php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" php_admin_value open_basedir %docroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/17.04/templates/web/apache2/hosting.tpl b/install/ubuntu/17.04/templates/web/apache2/hosting.tpl index 1eb269103..b7c12699d 100644 --- a/install/ubuntu/17.04/templates/web/apache2/hosting.tpl +++ b/install/ubuntu/17.04/templates/web/apache2/hosting.tpl @@ -23,6 +23,7 @@ php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" php_admin_value open_basedir %docroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/17.04/templates/web/apache2/phpcgi.stpl b/install/ubuntu/17.04/templates/web/apache2/phpcgi.stpl index 731355bc1..b7bd884ee 100644 --- a/install/ubuntu/17.04/templates/web/apache2/phpcgi.stpl +++ b/install/ubuntu/17.04/templates/web/apache2/phpcgi.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp Action phpcgi-script /cgi-bin/php diff --git a/install/ubuntu/17.04/templates/web/apache2/phpcgi.tpl b/install/ubuntu/17.04/templates/web/apache2/phpcgi.tpl index c6796d29c..9d04361da 100644 --- a/install/ubuntu/17.04/templates/web/apache2/phpcgi.tpl +++ b/install/ubuntu/17.04/templates/web/apache2/phpcgi.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp Action phpcgi-script /cgi-bin/php diff --git a/install/ubuntu/17.04/templates/web/apache2/phpfcgid.stpl b/install/ubuntu/17.04/templates/web/apache2/phpfcgid.stpl index 156c8a918..37865a5ba 100644 --- a/install/ubuntu/17.04/templates/web/apache2/phpfcgid.stpl +++ b/install/ubuntu/17.04/templates/web/apache2/phpfcgid.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp SetHandler fcgid-script diff --git a/install/ubuntu/17.04/templates/web/apache2/phpfcgid.tpl b/install/ubuntu/17.04/templates/web/apache2/phpfcgid.tpl index a4c012690..152e7c694 100644 --- a/install/ubuntu/17.04/templates/web/apache2/phpfcgid.tpl +++ b/install/ubuntu/17.04/templates/web/apache2/phpfcgid.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp SetHandler fcgid-script diff --git a/install/ubuntu/17.04/templates/web/php-fpm/default.tpl b/install/ubuntu/17.04/templates/web/php-fpm/default.tpl index 209e1e437..816fa21f9 100644 --- a/install/ubuntu/17.04/templates/web/php-fpm/default.tpl +++ b/install/ubuntu/17.04/templates/web/php-fpm/default.tpl @@ -11,6 +11,7 @@ pm.max_requests = 4000 pm.process_idle_timeout = 10s pm.status_path = /status +php_admin_value[sys_temp_dir] = /home/%user%/tmp php_admin_value[upload_tmp_dir] = /home/%user%/tmp php_admin_value[session.save_path] = /home/%user%/tmp diff --git a/install/ubuntu/17.04/templates/web/php-fpm/socket.tpl b/install/ubuntu/17.04/templates/web/php-fpm/socket.tpl index a0151084f..e427045ce 100644 --- a/install/ubuntu/17.04/templates/web/php-fpm/socket.tpl +++ b/install/ubuntu/17.04/templates/web/php-fpm/socket.tpl @@ -14,6 +14,7 @@ pm.max_requests = 4000 pm.process_idle_timeout = 10s pm.status_path = /status +php_admin_value[sys_temp_dir] = /home/%user%/tmp php_admin_value[upload_tmp_dir] = /home/%user%/tmp php_admin_value[session.save_path] = /home/%user%/tmp diff --git a/install/ubuntu/17.04/templates/web/skel/public_html/index.html b/install/ubuntu/17.04/templates/web/skel/public_html/index.html index 3eaddff73..1144ade96 100755 --- a/install/ubuntu/17.04/templates/web/skel/public_html/index.html +++ b/install/ubuntu/17.04/templates/web/skel/public_html/index.html @@ -18,7 +18,7 @@

%domain%

diff --git a/install/ubuntu/17.04/templates/web/skel/public_shtml/index.html b/install/ubuntu/17.04/templates/web/skel/public_shtml/index.html index 3eaddff73..1144ade96 100755 --- a/install/ubuntu/17.04/templates/web/skel/public_shtml/index.html +++ b/install/ubuntu/17.04/templates/web/skel/public_shtml/index.html @@ -18,7 +18,7 @@

%domain%

diff --git a/install/ubuntu/17.10/pma/apache.conf b/install/ubuntu/17.10/pma/apache.conf index 4da6ce849..81c1743a3 100644 --- a/install/ubuntu/17.10/pma/apache.conf +++ b/install/ubuntu/17.10/pma/apache.conf @@ -15,6 +15,7 @@ Alias /phpmyadmin /usr/share/phpmyadmin php_admin_flag allow_url_fopen Off php_value include_path . php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp + php_admin_value sys_temp_dir /var/lib/phpmyadmin/tmp php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext:/usr/share/javascript/ diff --git a/install/ubuntu/17.10/templates/web/apache2/basedir.stpl b/install/ubuntu/17.10/templates/web/apache2/basedir.stpl index d978d4c43..04c39fcf6 100644 --- a/install/ubuntu/17.10/templates/web/apache2/basedir.stpl +++ b/install/ubuntu/17.10/templates/web/apache2/basedir.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%"
diff --git a/install/ubuntu/17.10/templates/web/apache2/basedir.tpl b/install/ubuntu/17.10/templates/web/apache2/basedir.tpl index 96c94a1bd..a9d05ee66 100644 --- a/install/ubuntu/17.10/templates/web/apache2/basedir.tpl +++ b/install/ubuntu/17.10/templates/web/apache2/basedir.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" diff --git a/install/ubuntu/17.10/templates/web/apache2/default.stpl b/install/ubuntu/17.10/templates/web/apache2/default.stpl index ec34c2799..a5c509a9e 100644 --- a/install/ubuntu/17.10/templates/web/apache2/default.stpl +++ b/install/ubuntu/17.10/templates/web/apache2/default.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/17.10/templates/web/apache2/default.tpl b/install/ubuntu/17.10/templates/web/apache2/default.tpl index 3a2270156..e591a1cf1 100644 --- a/install/ubuntu/17.10/templates/web/apache2/default.tpl +++ b/install/ubuntu/17.10/templates/web/apache2/default.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/17.10/templates/web/apache2/hosting.stpl b/install/ubuntu/17.10/templates/web/apache2/hosting.stpl index 8892072b1..6d99c97c9 100644 --- a/install/ubuntu/17.10/templates/web/apache2/hosting.stpl +++ b/install/ubuntu/17.10/templates/web/apache2/hosting.stpl @@ -24,6 +24,7 @@ php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" php_admin_value open_basedir %docroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/17.10/templates/web/apache2/hosting.tpl b/install/ubuntu/17.10/templates/web/apache2/hosting.tpl index 1eb269103..b7c12699d 100644 --- a/install/ubuntu/17.10/templates/web/apache2/hosting.tpl +++ b/install/ubuntu/17.10/templates/web/apache2/hosting.tpl @@ -23,6 +23,7 @@ php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" php_admin_value open_basedir %docroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/17.10/templates/web/apache2/phpcgi.stpl b/install/ubuntu/17.10/templates/web/apache2/phpcgi.stpl index 731355bc1..b7bd884ee 100644 --- a/install/ubuntu/17.10/templates/web/apache2/phpcgi.stpl +++ b/install/ubuntu/17.10/templates/web/apache2/phpcgi.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp Action phpcgi-script /cgi-bin/php diff --git a/install/ubuntu/17.10/templates/web/apache2/phpcgi.tpl b/install/ubuntu/17.10/templates/web/apache2/phpcgi.tpl index c6796d29c..9d04361da 100644 --- a/install/ubuntu/17.10/templates/web/apache2/phpcgi.tpl +++ b/install/ubuntu/17.10/templates/web/apache2/phpcgi.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp Action phpcgi-script /cgi-bin/php diff --git a/install/ubuntu/17.10/templates/web/apache2/phpfcgid.stpl b/install/ubuntu/17.10/templates/web/apache2/phpfcgid.stpl index 156c8a918..37865a5ba 100644 --- a/install/ubuntu/17.10/templates/web/apache2/phpfcgid.stpl +++ b/install/ubuntu/17.10/templates/web/apache2/phpfcgid.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp SetHandler fcgid-script diff --git a/install/ubuntu/17.10/templates/web/apache2/phpfcgid.tpl b/install/ubuntu/17.10/templates/web/apache2/phpfcgid.tpl index a4c012690..152e7c694 100644 --- a/install/ubuntu/17.10/templates/web/apache2/phpfcgid.tpl +++ b/install/ubuntu/17.10/templates/web/apache2/phpfcgid.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp SetHandler fcgid-script diff --git a/install/ubuntu/17.10/templates/web/php-fpm/default.tpl b/install/ubuntu/17.10/templates/web/php-fpm/default.tpl index 209e1e437..816fa21f9 100644 --- a/install/ubuntu/17.10/templates/web/php-fpm/default.tpl +++ b/install/ubuntu/17.10/templates/web/php-fpm/default.tpl @@ -11,6 +11,7 @@ pm.max_requests = 4000 pm.process_idle_timeout = 10s pm.status_path = /status +php_admin_value[sys_temp_dir] = /home/%user%/tmp php_admin_value[upload_tmp_dir] = /home/%user%/tmp php_admin_value[session.save_path] = /home/%user%/tmp diff --git a/install/ubuntu/17.10/templates/web/php-fpm/socket.tpl b/install/ubuntu/17.10/templates/web/php-fpm/socket.tpl index a0151084f..e427045ce 100644 --- a/install/ubuntu/17.10/templates/web/php-fpm/socket.tpl +++ b/install/ubuntu/17.10/templates/web/php-fpm/socket.tpl @@ -14,6 +14,7 @@ pm.max_requests = 4000 pm.process_idle_timeout = 10s pm.status_path = /status +php_admin_value[sys_temp_dir] = /home/%user%/tmp php_admin_value[upload_tmp_dir] = /home/%user%/tmp php_admin_value[session.save_path] = /home/%user%/tmp diff --git a/install/ubuntu/17.10/templates/web/skel/public_html/index.html b/install/ubuntu/17.10/templates/web/skel/public_html/index.html index 3eaddff73..1144ade96 100755 --- a/install/ubuntu/17.10/templates/web/skel/public_html/index.html +++ b/install/ubuntu/17.10/templates/web/skel/public_html/index.html @@ -18,7 +18,7 @@

%domain%

diff --git a/install/ubuntu/17.10/templates/web/skel/public_shtml/index.html b/install/ubuntu/17.10/templates/web/skel/public_shtml/index.html index 3eaddff73..1144ade96 100755 --- a/install/ubuntu/17.10/templates/web/skel/public_shtml/index.html +++ b/install/ubuntu/17.10/templates/web/skel/public_shtml/index.html @@ -18,7 +18,7 @@

%domain%

diff --git a/install/ubuntu/18.04/pma/apache.conf b/install/ubuntu/18.04/pma/apache.conf index 4da6ce849..81c1743a3 100644 --- a/install/ubuntu/18.04/pma/apache.conf +++ b/install/ubuntu/18.04/pma/apache.conf @@ -15,6 +15,7 @@ Alias /phpmyadmin /usr/share/phpmyadmin php_admin_flag allow_url_fopen Off php_value include_path . php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp + php_admin_value sys_temp_dir /var/lib/phpmyadmin/tmp php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext:/usr/share/javascript/ diff --git a/install/ubuntu/18.04/templates/web/apache2/basedir.stpl b/install/ubuntu/18.04/templates/web/apache2/basedir.stpl index d978d4c43..04c39fcf6 100644 --- a/install/ubuntu/18.04/templates/web/apache2/basedir.stpl +++ b/install/ubuntu/18.04/templates/web/apache2/basedir.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%"
diff --git a/install/ubuntu/18.04/templates/web/apache2/basedir.tpl b/install/ubuntu/18.04/templates/web/apache2/basedir.tpl index 96c94a1bd..a9d05ee66 100644 --- a/install/ubuntu/18.04/templates/web/apache2/basedir.tpl +++ b/install/ubuntu/18.04/templates/web/apache2/basedir.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" diff --git a/install/ubuntu/18.04/templates/web/apache2/default.stpl b/install/ubuntu/18.04/templates/web/apache2/default.stpl index ec34c2799..a5c509a9e 100644 --- a/install/ubuntu/18.04/templates/web/apache2/default.stpl +++ b/install/ubuntu/18.04/templates/web/apache2/default.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/18.04/templates/web/apache2/default.tpl b/install/ubuntu/18.04/templates/web/apache2/default.tpl index 3a2270156..e591a1cf1 100644 --- a/install/ubuntu/18.04/templates/web/apache2/default.tpl +++ b/install/ubuntu/18.04/templates/web/apache2/default.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/18.04/templates/web/apache2/hosting.stpl b/install/ubuntu/18.04/templates/web/apache2/hosting.stpl index 8892072b1..6d99c97c9 100644 --- a/install/ubuntu/18.04/templates/web/apache2/hosting.stpl +++ b/install/ubuntu/18.04/templates/web/apache2/hosting.stpl @@ -24,6 +24,7 @@ php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" php_admin_value open_basedir %docroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/18.04/templates/web/apache2/hosting.tpl b/install/ubuntu/18.04/templates/web/apache2/hosting.tpl index 1eb269103..b7c12699d 100644 --- a/install/ubuntu/18.04/templates/web/apache2/hosting.tpl +++ b/install/ubuntu/18.04/templates/web/apache2/hosting.tpl @@ -23,6 +23,7 @@ php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" php_admin_value open_basedir %docroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/18.04/templates/web/apache2/phpcgi.stpl b/install/ubuntu/18.04/templates/web/apache2/phpcgi.stpl index 731355bc1..b7bd884ee 100644 --- a/install/ubuntu/18.04/templates/web/apache2/phpcgi.stpl +++ b/install/ubuntu/18.04/templates/web/apache2/phpcgi.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp Action phpcgi-script /cgi-bin/php diff --git a/install/ubuntu/18.04/templates/web/apache2/phpcgi.tpl b/install/ubuntu/18.04/templates/web/apache2/phpcgi.tpl index c6796d29c..9d04361da 100644 --- a/install/ubuntu/18.04/templates/web/apache2/phpcgi.tpl +++ b/install/ubuntu/18.04/templates/web/apache2/phpcgi.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp Action phpcgi-script /cgi-bin/php diff --git a/install/ubuntu/18.04/templates/web/apache2/phpfcgid.stpl b/install/ubuntu/18.04/templates/web/apache2/phpfcgid.stpl index 156c8a918..37865a5ba 100644 --- a/install/ubuntu/18.04/templates/web/apache2/phpfcgid.stpl +++ b/install/ubuntu/18.04/templates/web/apache2/phpfcgid.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp SetHandler fcgid-script diff --git a/install/ubuntu/18.04/templates/web/apache2/phpfcgid.tpl b/install/ubuntu/18.04/templates/web/apache2/phpfcgid.tpl index a4c012690..152e7c694 100644 --- a/install/ubuntu/18.04/templates/web/apache2/phpfcgid.tpl +++ b/install/ubuntu/18.04/templates/web/apache2/phpfcgid.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp SetHandler fcgid-script diff --git a/install/ubuntu/18.04/templates/web/php-fpm/default.tpl b/install/ubuntu/18.04/templates/web/php-fpm/default.tpl index 209e1e437..816fa21f9 100644 --- a/install/ubuntu/18.04/templates/web/php-fpm/default.tpl +++ b/install/ubuntu/18.04/templates/web/php-fpm/default.tpl @@ -11,6 +11,7 @@ pm.max_requests = 4000 pm.process_idle_timeout = 10s pm.status_path = /status +php_admin_value[sys_temp_dir] = /home/%user%/tmp php_admin_value[upload_tmp_dir] = /home/%user%/tmp php_admin_value[session.save_path] = /home/%user%/tmp diff --git a/install/ubuntu/18.04/templates/web/php-fpm/socket.tpl b/install/ubuntu/18.04/templates/web/php-fpm/socket.tpl index a0151084f..e427045ce 100644 --- a/install/ubuntu/18.04/templates/web/php-fpm/socket.tpl +++ b/install/ubuntu/18.04/templates/web/php-fpm/socket.tpl @@ -14,6 +14,7 @@ pm.max_requests = 4000 pm.process_idle_timeout = 10s pm.status_path = /status +php_admin_value[sys_temp_dir] = /home/%user%/tmp php_admin_value[upload_tmp_dir] = /home/%user%/tmp php_admin_value[session.save_path] = /home/%user%/tmp diff --git a/install/ubuntu/18.04/templates/web/skel/public_html/index.html b/install/ubuntu/18.04/templates/web/skel/public_html/index.html index 3eaddff73..1144ade96 100755 --- a/install/ubuntu/18.04/templates/web/skel/public_html/index.html +++ b/install/ubuntu/18.04/templates/web/skel/public_html/index.html @@ -18,7 +18,7 @@

%domain%

diff --git a/install/ubuntu/18.04/templates/web/skel/public_shtml/index.html b/install/ubuntu/18.04/templates/web/skel/public_shtml/index.html index 3eaddff73..1144ade96 100755 --- a/install/ubuntu/18.04/templates/web/skel/public_shtml/index.html +++ b/install/ubuntu/18.04/templates/web/skel/public_shtml/index.html @@ -18,7 +18,7 @@

%domain%

diff --git a/install/ubuntu/18.10/pma/apache.conf b/install/ubuntu/18.10/pma/apache.conf index 4da6ce849..81c1743a3 100644 --- a/install/ubuntu/18.10/pma/apache.conf +++ b/install/ubuntu/18.10/pma/apache.conf @@ -15,6 +15,7 @@ Alias /phpmyadmin /usr/share/phpmyadmin php_admin_flag allow_url_fopen Off php_value include_path . php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp + php_admin_value sys_temp_dir /var/lib/phpmyadmin/tmp php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext:/usr/share/javascript/ diff --git a/install/ubuntu/18.10/templates/web/apache2/basedir.stpl b/install/ubuntu/18.10/templates/web/apache2/basedir.stpl index d978d4c43..04c39fcf6 100644 --- a/install/ubuntu/18.10/templates/web/apache2/basedir.stpl +++ b/install/ubuntu/18.10/templates/web/apache2/basedir.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%"
diff --git a/install/ubuntu/18.10/templates/web/apache2/basedir.tpl b/install/ubuntu/18.10/templates/web/apache2/basedir.tpl index 96c94a1bd..a9d05ee66 100644 --- a/install/ubuntu/18.10/templates/web/apache2/basedir.tpl +++ b/install/ubuntu/18.10/templates/web/apache2/basedir.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" diff --git a/install/ubuntu/18.10/templates/web/apache2/default.stpl b/install/ubuntu/18.10/templates/web/apache2/default.stpl index ec34c2799..a5c509a9e 100644 --- a/install/ubuntu/18.10/templates/web/apache2/default.stpl +++ b/install/ubuntu/18.10/templates/web/apache2/default.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %sdocroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/18.10/templates/web/apache2/default.tpl b/install/ubuntu/18.10/templates/web/apache2/default.tpl index 3a2270156..e591a1cf1 100644 --- a/install/ubuntu/18.10/templates/web/apache2/default.tpl +++ b/install/ubuntu/18.10/templates/web/apache2/default.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/18.10/templates/web/apache2/hosting.stpl b/install/ubuntu/18.10/templates/web/apache2/hosting.stpl index 8892072b1..6d99c97c9 100644 --- a/install/ubuntu/18.10/templates/web/apache2/hosting.stpl +++ b/install/ubuntu/18.10/templates/web/apache2/hosting.stpl @@ -24,6 +24,7 @@ php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" php_admin_value open_basedir %docroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/18.10/templates/web/apache2/hosting.tpl b/install/ubuntu/18.10/templates/web/apache2/hosting.tpl index 1eb269103..b7c12699d 100644 --- a/install/ubuntu/18.10/templates/web/apache2/hosting.tpl +++ b/install/ubuntu/18.10/templates/web/apache2/hosting.tpl @@ -23,6 +23,7 @@ php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@%domain_idn%" php_admin_value open_basedir %docroot%:%home%/%user%/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp diff --git a/install/ubuntu/18.10/templates/web/apache2/phpcgi.stpl b/install/ubuntu/18.10/templates/web/apache2/phpcgi.stpl index 731355bc1..b7bd884ee 100644 --- a/install/ubuntu/18.10/templates/web/apache2/phpcgi.stpl +++ b/install/ubuntu/18.10/templates/web/apache2/phpcgi.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp Action phpcgi-script /cgi-bin/php diff --git a/install/ubuntu/18.10/templates/web/apache2/phpcgi.tpl b/install/ubuntu/18.10/templates/web/apache2/phpcgi.tpl index c6796d29c..9d04361da 100644 --- a/install/ubuntu/18.10/templates/web/apache2/phpcgi.tpl +++ b/install/ubuntu/18.10/templates/web/apache2/phpcgi.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp Action phpcgi-script /cgi-bin/php diff --git a/install/ubuntu/18.10/templates/web/apache2/phpfcgid.stpl b/install/ubuntu/18.10/templates/web/apache2/phpfcgid.stpl index 156c8a918..37865a5ba 100644 --- a/install/ubuntu/18.10/templates/web/apache2/phpfcgid.stpl +++ b/install/ubuntu/18.10/templates/web/apache2/phpfcgid.stpl @@ -17,6 +17,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp SetHandler fcgid-script diff --git a/install/ubuntu/18.10/templates/web/apache2/phpfcgid.tpl b/install/ubuntu/18.10/templates/web/apache2/phpfcgid.tpl index a4c012690..152e7c694 100644 --- a/install/ubuntu/18.10/templates/web/apache2/phpfcgid.tpl +++ b/install/ubuntu/18.10/templates/web/apache2/phpfcgid.tpl @@ -16,6 +16,7 @@ Options +Includes -Indexes +ExecCGI php_admin_value open_basedir %docroot%:%home%/%user%/tmp php_admin_value upload_tmp_dir %home%/%user%/tmp + php_admin_value sys_temp_dir %home%/%user%/tmp php_admin_value session.save_path %home%/%user%/tmp SetHandler fcgid-script diff --git a/install/ubuntu/18.10/templates/web/php-fpm/default.tpl b/install/ubuntu/18.10/templates/web/php-fpm/default.tpl index 209e1e437..816fa21f9 100644 --- a/install/ubuntu/18.10/templates/web/php-fpm/default.tpl +++ b/install/ubuntu/18.10/templates/web/php-fpm/default.tpl @@ -11,6 +11,7 @@ pm.max_requests = 4000 pm.process_idle_timeout = 10s pm.status_path = /status +php_admin_value[sys_temp_dir] = /home/%user%/tmp php_admin_value[upload_tmp_dir] = /home/%user%/tmp php_admin_value[session.save_path] = /home/%user%/tmp diff --git a/install/ubuntu/18.10/templates/web/php-fpm/socket.tpl b/install/ubuntu/18.10/templates/web/php-fpm/socket.tpl index a0151084f..e427045ce 100644 --- a/install/ubuntu/18.10/templates/web/php-fpm/socket.tpl +++ b/install/ubuntu/18.10/templates/web/php-fpm/socket.tpl @@ -14,6 +14,7 @@ pm.max_requests = 4000 pm.process_idle_timeout = 10s pm.status_path = /status +php_admin_value[sys_temp_dir] = /home/%user%/tmp php_admin_value[upload_tmp_dir] = /home/%user%/tmp php_admin_value[session.save_path] = /home/%user%/tmp diff --git a/install/ubuntu/18.10/templates/web/skel/public_html/index.html b/install/ubuntu/18.10/templates/web/skel/public_html/index.html index 3eaddff73..1144ade96 100755 --- a/install/ubuntu/18.10/templates/web/skel/public_html/index.html +++ b/install/ubuntu/18.10/templates/web/skel/public_html/index.html @@ -18,7 +18,7 @@

%domain%

diff --git a/install/ubuntu/18.10/templates/web/skel/public_shtml/index.html b/install/ubuntu/18.10/templates/web/skel/public_shtml/index.html index 3eaddff73..1144ade96 100755 --- a/install/ubuntu/18.10/templates/web/skel/public_shtml/index.html +++ b/install/ubuntu/18.10/templates/web/skel/public_shtml/index.html @@ -18,7 +18,7 @@

%domain%

diff --git a/install/vst-install-rhel.sh b/install/vst-install-rhel.sh index f60b04279..140317182 100755 --- a/install/vst-install-rhel.sh +++ b/install/vst-install-rhel.sh @@ -479,6 +479,7 @@ if [ "$remi" = 'yes' ] && [ ! -e "/etc/yum.repos.d/remi.repo" ]; then rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-$release.rpm check_result $? "Can't install REMI repository" sed -i "s/enabled=0/enabled=1/g" /etc/yum.repos.d/remi.repo + sed -i "s/enabled=0/enabled=1/g" /etc/yum.repos.d/remi-php81.repo fi # Installing Nginx repository diff --git a/src/deb/vesta/control b/src/deb/vesta/control index b8cba557e..b0aa767bb 100644 --- a/src/deb/vesta/control +++ b/src/deb/vesta/control @@ -1,7 +1,7 @@ Source: vesta Package: vesta Priority: optional -Version: 1.0.0-4 +Version: 1.0.0-7 Section: admin Maintainer: Serghey Rodin Homepage: http://vestacp.com diff --git a/src/react/jsconfig.json b/src/react/jsconfig.json index 30b25afe5..97f4bc227 100644 --- a/src/react/jsconfig.json +++ b/src/react/jsconfig.json @@ -2,5 +2,6 @@ "compilerOptions": { "baseUrl": "." }, - "include": ["src"] + "include": ["src"], + "exclude": ["node_modules", "build"] } diff --git a/src/react/package-lock.json b/src/react/package-lock.json index 1cd59e793..2c695e13d 100644 --- a/src/react/package-lock.json +++ b/src/react/package-lock.json @@ -1,6 +1,6 @@ { - "name": "file_manager", - "version": "0.1.0", + "name": "react-control-panel", + "version": "1.0.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -2250,9 +2250,9 @@ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" }, "are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", "requires": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" @@ -4396,9 +4396,9 @@ } }, "dayjs": { - "version": "1.10.7", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.7.tgz", - "integrity": "sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig==" + "version": "1.11.4", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.4.tgz", + "integrity": "sha512-Zj/lPM5hOvQ1Bf7uAvewDaUcsJoI6JmNqmHhHl3nyumwe0XHwt8sWdOVAPACJzCebL8gQCi+K49w7iKWnGwX9g==" }, "debug": { "version": "3.1.0", @@ -6350,9 +6350,9 @@ } }, "globule": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.2.tgz", - "integrity": "sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.3.tgz", + "integrity": "sha512-mb1aYtDbIjTu4ShMB85m3UzjX9BVKe9WCzsnfMSZk+K5GpIbBOexgg4PPCt5eHDEG5/ZQAUX2Kct02zfiPLsKg==", "requires": { "glob": "~7.1.1", "lodash": "~4.17.10", @@ -9845,6 +9845,11 @@ "sha.js": "^2.4.8" } }, + "perfect-scrollbar": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/perfect-scrollbar/-/perfect-scrollbar-1.5.3.tgz", + "integrity": "sha512-+Lo6t61lSuCY9ghpqh1NFMXOu8fNwlYGqPoUMOZ3HTFIL4g7+L7zD7hQCLW5yjkOZ6LGTw1m9+MfEew7cngtAQ==" + }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", @@ -11521,6 +11526,15 @@ "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" }, + "react-perfect-scrollbar": { + "version": "1.5.8", + "resolved": "https://registry.npmjs.org/react-perfect-scrollbar/-/react-perfect-scrollbar-1.5.8.tgz", + "integrity": "sha512-bQ46m70gp/HJtiBOF3gRzBISSZn8FFGNxznTdmTG8AAwpxG1bJCyn7shrgjEvGSQ5FJEafVEiosY+ccER11OSA==", + "requires": { + "perfect-scrollbar": "^1.5.0", + "prop-types": "^15.6.1" + } + }, "react-redux": { "version": "7.2.1", "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.1.tgz", @@ -14588,11 +14602,11 @@ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" }, "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", "requires": { - "string-width": "^1.0.2 || 2" + "string-width": "^1.0.2 || 2 || 3 || 4" } }, "word-wrap": { diff --git a/src/react/package.json b/src/react/package.json index 1749ad441..06435656f 100644 --- a/src/react/package.json +++ b/src/react/package.json @@ -13,9 +13,10 @@ "axios": "^0.21.4", "bootstrap": "^4.3.1", "classname": "0.0.0", - "dayjs": "^1.10.7", + "dayjs": "^1.11.4", "jquery": "^3.5.1", "node-sass": "^4.14.1", + "perfect-scrollbar": "^1.5.3", "popper.js": "^1.15.0", "prop-types": "^15.7.2", "qs": "^6.9.4", @@ -24,6 +25,7 @@ "react-dom": "^16.10.2", "react-helmet": "^6.1.0", "react-html-parser": "^2.0.2", + "react-perfect-scrollbar": "^1.5.8", "react-redux": "^7.2.1", "react-router-dom": "^5.1.2", "react-scripts": "^3.4.1", diff --git a/src/react/src/ControlPanelService/Db.js b/src/react/src/ControlPanelService/Db.js index ecf5586a9..cd7a50e90 100644 --- a/src/react/src/ControlPanelService/Db.js +++ b/src/react/src/ControlPanelService/Db.js @@ -1,49 +1,49 @@ -import axios from "axios"; -import { getAuthToken } from "src/utils/token"; +import axios from 'axios' +import { getAuthToken } from 'src/utils/token' -const BASE_URL = window.location.origin; -const webApiUri = '/api/v1/list/db/index.php'; -const addDbApiUri = '/api/v1/add/db/index.php'; -const optionalDbInfoUri = '/api/v1/add/db/index.php'; -const dbInfoUri = '/api/v1/edit/db/index.php'; -const updateDatabaseUri = '/api/v1/edit/db/index.php'; +const BASE_URL = window.location.origin +const webApiUri = '/api/v1/list/db/index.php' +const addDbApiUri = '/api/v1/add/db/index.php' +const optionalDbInfoUri = '/api/v1/add/db/index.php' +const dbInfoUri = '/api/v1/edit/db/index.php' +const updateDatabaseUri = '/api/v1/edit/db/index.php' export const getDatabaseList = () => { - return axios.get(BASE_URL + webApiUri); + return axios.get(BASE_URL + webApiUri) } export const bulkAction = (action, domainNameSystems) => { - const formData = new FormData(); - formData.append("action", action); - formData.append("token", getAuthToken()); + const formData = new FormData() + formData.append('action', action) + formData.append('token', getAuthToken()) - domainNameSystems.forEach(domainNameSystem => { - formData.append("database[]", domainNameSystem); - }); + domainNameSystems.forEach((domainNameSystem) => { + formData.append('database[]', domainNameSystem) + }) - return axios.post(BASE_URL + '/api/v1/bulk/db/', formData); -}; + return axios.post(BASE_URL + '/api/v1/bulk/db/', formData) +} -export const handleAction = uri => { +export const handleAction = (uri) => { return axios.get(BASE_URL + uri, { params: { - token: getAuthToken() - } - }); + token: getAuthToken(), + }, + }) } export const getDbOptionalInfo = () => { - return axios.get(BASE_URL + optionalDbInfoUri); + return axios.get(BASE_URL + optionalDbInfoUri) } -export const addDatabase = data => { - let formDataObject = new FormData(); +export const addDatabase = (data) => { + let formDataObject = new FormData() for (let key in data) { - formDataObject.append(key, data[key]); + formDataObject.append(key, data[key]) } - return axios.post(BASE_URL + addDbApiUri, formDataObject); + return axios.post(BASE_URL + addDbApiUri, formDataObject) } export const dbCharsets = [ @@ -69,6 +69,7 @@ export const dbCharsets = [ 'latin5', 'armscii8', 'utf8', + 'utf8mb4', 'ucs2', 'cp866', 'keybcs2', @@ -82,29 +83,29 @@ export const dbCharsets = [ 'binary', 'geostd8', 'cp932', - 'eucjpms' -]; + 'eucjpms', +] -export const getDatabaseInfo = database => { +export const getDatabaseInfo = (database) => { return axios.get(BASE_URL + dbInfoUri, { params: { database, - token: getAuthToken() - } - }); + token: getAuthToken(), + }, + }) } export const updateDatabase = (data, database) => { - let formDataObject = new FormData(); + let formDataObject = new FormData() for (let key in data) { - formDataObject.append(key, data[key]); + formDataObject.append(key, data[key]) } return axios.post(BASE_URL + updateDatabaseUri, formDataObject, { params: { database, - token: getAuthToken() - } - }); -} \ No newline at end of file + token: getAuthToken(), + }, + }) +} diff --git a/src/react/src/ControlPanelService/Firewalls.js b/src/react/src/ControlPanelService/Firewalls.js index 3b2e003fd..717f1cfa4 100644 --- a/src/react/src/ControlPanelService/Firewalls.js +++ b/src/react/src/ControlPanelService/Firewalls.js @@ -17,6 +17,18 @@ export const getBanList = () => { return axios.get(BASE_URL + banListUri); } +export const bulkFirewallAction = (action, ips) => { + const formData = new FormData(); + formData.append("action", action); + formData.append("token", getAuthToken()); + + ips.forEach(ip => { + formData.append("rule[]", ip); + }); + + return axios.post(BASE_URL + '/api/v1/bulk/firewall/', formData); +}; + export const bulkAction = (action, ips, banIps) => { const formData = new FormData(); formData.append("action", action); diff --git a/src/react/src/actions/MenuCounters/menuCounterActions.js b/src/react/src/actions/MenuCounters/menuCounterActions.js index 8dc5fcf5b..5d4255dc0 100644 --- a/src/react/src/actions/MenuCounters/menuCounterActions.js +++ b/src/react/src/actions/MenuCounters/menuCounterActions.js @@ -1,12 +1,13 @@ import { REFRESH_COUNTERS } from './menuCounterTypes'; import { checkAuth } from 'src/services/session'; import { setAuthToken } from 'src/utils/token'; +import { REFRESH_PANEL } from '../Panel/panelTypes'; export const refreshCounters = () => (dispatch, getState) => { return new Promise((resolve, reject) => { checkAuth() .then(res => { - const { data, token } = res.data; + const { data, token, panel } = res.data; if (token) setAuthToken(token); @@ -17,6 +18,13 @@ export const refreshCounters = () => (dispatch, getState) => { } }); + dispatch({ + type: REFRESH_PANEL, + value: { + panel + } + }); + resolve(token); }) .catch(err => { diff --git a/src/react/src/actions/Panel/panelTypes.js b/src/react/src/actions/Panel/panelTypes.js new file mode 100644 index 000000000..3c5615340 --- /dev/null +++ b/src/react/src/actions/Panel/panelTypes.js @@ -0,0 +1 @@ +export const REFRESH_PANEL = 'REFRESH_PANEL'; diff --git a/src/react/src/actions/Session/sessionActions.js b/src/react/src/actions/Session/sessionActions.js index c28a30e49..5f1823c57 100644 --- a/src/react/src/actions/Session/sessionActions.js +++ b/src/react/src/actions/Session/sessionActions.js @@ -4,6 +4,7 @@ import { resetPassword } from 'src/ControlPanelService/ResetPassword'; import { resetAuthToken, setAuthToken } from 'src/utils/token'; import { REFRESH_COUNTERS } from '../MenuCounters/menuCounterTypes'; import { SET_USER_SESSION } from '../UserSession/userSessionTypes'; +import { REFRESH_PANEL } from '../Panel/panelTypes'; const LOGOUT_RESPONSE = 'logged_out'; const LOGOUT_AS_RESPONSE = 'logged_out_as'; @@ -19,12 +20,17 @@ export const login = (user, password) => dispatch => { type: LOGIN, value: { token: token || '', - panel, i18n: i18n || {}, userName: user, error }, }); + dispatch({ + type: REFRESH_PANEL, + value: { + panel + } + }); dispatch({ type: REFRESH_COUNTERS, value: { @@ -51,11 +57,16 @@ export const reset = ({ user = '', code = '', password = '', password_confirm = type: RESET_PASSWORD, value: { token, - panel, userName: user, error }, }); + dispatch({ + type: REFRESH_PANEL, + value: { + panel + } + }); dispatch({ type: REFRESH_COUNTERS, value: { @@ -84,11 +95,16 @@ export const loginAs = username => dispatch => { value: { userName: user, i18n, - panel, token, error } }); + dispatch({ + type: REFRESH_PANEL, + value: { + panel + } + }); dispatch({ type: REFRESH_COUNTERS, value: { @@ -121,12 +137,17 @@ export const logout = () => (dispatch, getState) => { value: { userName: '', token: '', - panel: {}, session: {}, i18n: [], error, }, }); + dispatch({ + type: REFRESH_PANEL, + value: { + panel: {} + } + }); dispatch({ type: REFRESH_COUNTERS, value: { @@ -144,12 +165,17 @@ export const logout = () => (dispatch, getState) => { type: LOGGED_OUT_AS, value: { userName, - panel, token: '', i18n, error, }, }); + dispatch({ + type: REFRESH_PANEL, + value: { + panel + } + }); dispatch({ type: REFRESH_COUNTERS, value: { @@ -185,11 +211,16 @@ export const checkAuthHandler = () => (dispatch, getState) => { value: { userName: user, i18n, - panel, token, error } }); + dispatch({ + type: REFRESH_PANEL, + value: { + panel + } + }); dispatch({ type: REFRESH_COUNTERS, value: { diff --git a/src/react/src/components/Backup/RestoreSetting/RestoreSetting.scss b/src/react/src/components/Backup/RestoreSetting/RestoreSetting.scss index 63ec7dcd4..4d769035b 100644 --- a/src/react/src/components/Backup/RestoreSetting/RestoreSetting.scss +++ b/src/react/src/components/Backup/RestoreSetting/RestoreSetting.scss @@ -1,13 +1,4 @@ -$whiteBackground: #ececec; -$primary: #2c54ac; -$primaryLight: #d7dcef; -$primaryActive: #1e5cb2; -$secondary: #fcac04; -$secondaryLight: #f8b014; -$secondaryActive: #fdb51c; -$hoverButtonText: #2c54ac; -$activeButtonText: #fff; -$textColor: #555; +@import 'src/utils/scss/variables'; .backups-restore-settings { .list-item { diff --git a/src/react/src/components/Backup/RestoreSettings/BackupRestoreSettings.jsx b/src/react/src/components/Backup/RestoreSettings/BackupRestoreSettings.jsx index 7043d56f7..ffb3e808a 100644 --- a/src/react/src/components/Backup/RestoreSettings/BackupRestoreSettings.jsx +++ b/src/react/src/components/Backup/RestoreSettings/BackupRestoreSettings.jsx @@ -18,7 +18,6 @@ import './BackupRestoreSettings.scss'; export default function BackupRestoreSettings(props) { const { i18n } = useSelector(state => state.session); - const token = localStorage.getItem("token"); const { controlPanelFocusedElement } = useSelector(state => state.controlPanelContent); const { focusedElement } = useSelector(state => state.mainNavigation); const dispatch = useDispatch(); diff --git a/src/react/src/components/ControlPanel/AddItemLayout/AddItemLayout.scss b/src/react/src/components/ControlPanel/AddItemLayout/AddItemLayout.scss index e3b839798..12b4c548d 100644 --- a/src/react/src/components/ControlPanel/AddItemLayout/AddItemLayout.scss +++ b/src/react/src/components/ControlPanel/AddItemLayout/AddItemLayout.scss @@ -1,13 +1,4 @@ -$whiteBackground: #ececec; -$primary: #2c54ac; -$primaryLight: #d7dcef; -$primaryActive: #1e5cb2; -$secondary: #fcac04; -$secondaryLight: #f8b014; -$secondaryActive: #fdb51c; -$hoverButtonText: #2c54ac; -$activeButtonText: #fff; -$textColor: #555; +@import 'src/utils/scss/variables'; $optionalButtonHover: $primary; $optionalButtonActive: $primaryLight; @@ -32,7 +23,7 @@ $errorColor: #BE5ABF; div.error, div.success { - width: max-content !important; + width: fit-content !important; span { font-weight: bold; @@ -64,8 +55,10 @@ $errorColor: #BE5ABF; } .search-toolbar-name { + width: auto !important; padding: 10px 0; margin-left: 0; + margin-right: 10px; } } } @@ -134,6 +127,18 @@ $errorColor: #BE5ABF; } } + @media screen and (max-width: 900px) { + .form-group { + input[type=text], + input[type=password], + input[type=email], + textarea, + select { + width: 100%; + } + } + } + width: 100%; .form-group select, @@ -156,7 +161,7 @@ $errorColor: #BE5ABF; input:-webkit-autofill:hover, input:-webkit-autofill:focus, input:-webkit-autofill:active { - background-color: $primaryLight; + background: $primaryLight; border-color: $primaryActive; filter: none; box-shadow: none; @@ -166,7 +171,7 @@ $errorColor: #BE5ABF; input:autofill:hover, input:autofill:focus, input:autofill:active { - background-color: $primaryLight; + background: $primaryLight; border-color: $primaryActive; filter: none; box-shadow: none; @@ -207,7 +212,7 @@ $errorColor: #BE5ABF; label.label-wrapper { display: flex; align-items: flex-end; - width: max-content; + width: fit-content; span { font-weight: normal; @@ -292,4 +297,16 @@ $errorColor: #BE5ABF; font-weight: bold; } } -} \ No newline at end of file +} + +@media screen and (max-width: 1066px) { + .form-group { + input[type=text], + input[type=password], + input[type=email], + textarea, + select { + width: 75%; + } + } +} diff --git a/src/react/src/components/ControlPanel/AddItemLayout/Form/Password/Password.jsx b/src/react/src/components/ControlPanel/AddItemLayout/Form/Password/Password.jsx index 839e4f8ad..9c89a98f1 100644 --- a/src/react/src/components/ControlPanel/AddItemLayout/Form/Password/Password.jsx +++ b/src/react/src/components/ControlPanel/AddItemLayout/Form/Password/Password.jsx @@ -30,6 +30,7 @@ const Password = ({ defaultValue, onChange = () => { }, id, name, title, showGen } setState({ ...state, generatedPassword: result }); + onChange(result); } const passwordInputHandler = value => { diff --git a/src/react/src/components/ControlPanel/AddItemLayout/Form/TextInput/TextInput.jsx b/src/react/src/components/ControlPanel/AddItemLayout/Form/TextInput/TextInput.jsx index 21cd61350..a254a6079 100644 --- a/src/react/src/components/ControlPanel/AddItemLayout/Form/TextInput/TextInput.jsx +++ b/src/react/src/components/ControlPanel/AddItemLayout/Form/TextInput/TextInput.jsx @@ -9,7 +9,7 @@ const TextInput = ({ id, name, title, optionalTitle = '', type = 'text', onChang } }, [value]); - const changeCheckbox = event => { + const changeInputHandler = event => { setInputValue(event.target.value); onChange(event); } @@ -24,7 +24,7 @@ const TextInput = ({ id, name, title, optionalTitle = '', type = 'text', onChang type={type} name={name} id={id} - onChange={changeCheckbox} + onChange={changeInputHandler} readOnly={disabled} value={inputValue} className="form-control" /> diff --git a/src/react/src/components/ControlPanel/ListItem/ListItem.jsx b/src/react/src/components/ControlPanel/ListItem/ListItem.jsx index cb8470681..8d5d1cd99 100644 --- a/src/react/src/components/ControlPanel/ListItem/ListItem.jsx +++ b/src/react/src/components/ControlPanel/ListItem/ListItem.jsx @@ -52,14 +52,10 @@ const ListItem = (props) => { className += ' outdated'; } - if (suspended) { + if (suspended || stopped) { className += ' suspended'; } - if (stopped) { - className += ' stopped'; - } - if (focused) { className += ' focused'; } @@ -84,6 +80,7 @@ const ListItem = (props) => {
{props.suspended &&
{i18n.suspended}
} + {props.stopped &&
{i18n.stopped}
} {props.children} diff --git a/src/react/src/components/ControlPanel/ListItem/ListItem.scss b/src/react/src/components/ControlPanel/ListItem/ListItem.scss index 509906231..850271ce1 100644 --- a/src/react/src/components/ControlPanel/ListItem/ListItem.scss +++ b/src/react/src/components/ControlPanel/ListItem/ListItem.scss @@ -1,10 +1,4 @@ -$whiteBackground: #ececec; -$primary: #2c54ac; -$primaryLight: #2e5bb1; -$secondary: #fcac04; -$secondaryLight: #f8b014; -$secondaryActive: #fdb51c; -$textColor: #555; +@import 'src/utils/scss/variables'; .list-item { display: flex; diff --git a/src/react/src/components/ControlPanel/Modal/Modal.scss b/src/react/src/components/ControlPanel/Modal/Modal.scss index e4edf095b..fb42315a4 100644 --- a/src/react/src/components/ControlPanel/Modal/Modal.scss +++ b/src/react/src/components/ControlPanel/Modal/Modal.scss @@ -1,4 +1,4 @@ -$primary: #2c54ac; +@import 'src/utils/scss/variables'; div.modal { z-index: 2; diff --git a/src/react/src/components/CronJob/Generator/Generator.scss b/src/react/src/components/CronJob/Generator/Generator.scss index 850fc4fb9..c8dde332b 100644 --- a/src/react/src/components/CronJob/Generator/Generator.scss +++ b/src/react/src/components/CronJob/Generator/Generator.scss @@ -1,13 +1,4 @@ -$whiteBackground: #ececec; -$primary: #2c54ac; -$primaryLight: #d7dcef; -$primaryActive: #1e5cb2; -$secondary: #fcac04; -$secondaryLight: #f8b014; -$secondaryActive: #fdb51c; -$hoverButtonText: #2c54ac; -$activeButtonText: #fff; -$textColor: #555; +@import 'src/utils/scss/variables'; .cron-job-generator { border: 1px solid #d9d9d9; diff --git a/src/react/src/components/Database/Database.jsx b/src/react/src/components/Database/Database.jsx index 13c14809b..91e7aa641 100644 --- a/src/react/src/components/Database/Database.jsx +++ b/src/react/src/components/Database/Database.jsx @@ -47,7 +47,10 @@ const Database = props => {
-
{i18n.Disk}: {data.U_DISK}{i18n.mb}
+
+ {i18n.Disk}: {data.U_DISK}{i18n.mb} +
+
{i18n.User}: {data.DBUSER}
diff --git a/src/react/src/components/Firewall/Add/AddFirewall.jsx b/src/react/src/components/Firewall/Add/AddFirewall.jsx index 848b4b487..15a3e438f 100644 --- a/src/react/src/components/Firewall/Add/AddFirewall.jsx +++ b/src/react/src/components/Firewall/Add/AddFirewall.jsx @@ -23,13 +23,13 @@ const AddFirewall = props => { const [state, setState] = useState({ loading: false, actions: [ - i18n['DROP'], - i18n['ACCEPT'] + 'DROP', + 'ACCEPT' ], protocols: [ - i18n['TCP'], - i18n['UDP'], - i18n['ICMP'] + 'TCP', + 'UDP', + 'ICMP' ], okMessage: '', errorMessage: '' diff --git a/src/react/src/components/Firewall/Add/AddFirewall.scss b/src/react/src/components/Firewall/Add/AddFirewall.scss index 05d56dc08..aff53e9fd 100644 --- a/src/react/src/components/Firewall/Add/AddFirewall.scss +++ b/src/react/src/components/Firewall/Add/AddFirewall.scss @@ -1,6 +1,6 @@ .content .edit-template.add-firewall { .toolbar .search-toolbar-name { - width: max-content; + width: fit-content; } label.label-wrapper[for=ip] span { diff --git a/src/react/src/components/Hotkeys/Hotkeys.jsx b/src/react/src/components/Hotkeys/Hotkeys.jsx index 7d5f94bb7..84795f7d2 100644 --- a/src/react/src/components/Hotkeys/Hotkeys.jsx +++ b/src/react/src/components/Hotkeys/Hotkeys.jsx @@ -34,10 +34,10 @@ const Hotkeys = props => {
  • n - {i18n['New Fille']} + {i18n['New File']}
  • - F7 + F6 {i18n['New Folder']}
  • @@ -56,10 +56,6 @@ const Hotkeys = props => { F5 {i18n['Copy']}
  • -
  • - F5 - {i18n['Copy']} -
  • F8 / Del {i18n['Delete']} @@ -107,7 +103,7 @@ const Hotkeys = props => { {i18n['Open File / Enter Directory']}
  • - F4 + F3 {i18n['Edit File']}
  • diff --git a/src/react/src/components/InternetProtocol/Edit/EditInternetProtocol.jsx b/src/react/src/components/InternetProtocol/Edit/EditInternetProtocol.jsx index 1f0148397..7b525877e 100644 --- a/src/react/src/components/InternetProtocol/Edit/EditInternetProtocol.jsx +++ b/src/react/src/components/InternetProtocol/Edit/EditInternetProtocol.jsx @@ -70,7 +70,7 @@ const EditInternetProtocol = () => { updatedIP['token'] = token; updatedIP['save'] = 'save'; - updatedIP['v_ip'] = state.data.database; + updatedIP['v_ip'] = state.data.ip; if (Object.keys(updatedIP).length !== 0 && updatedIP.constructor === Object) { setState({ ...state, loading: true }); diff --git a/src/react/src/components/InternetProtocol/InternetProtocol.jsx b/src/react/src/components/InternetProtocol/InternetProtocol.jsx index 3d474df87..fbdda12e6 100644 --- a/src/react/src/components/InternetProtocol/InternetProtocol.jsx +++ b/src/react/src/components/InternetProtocol/InternetProtocol.jsx @@ -1,15 +1,14 @@ -import React, { Component } from 'react'; +import React from 'react'; import ListItem from '../ControlPanel/ListItem/ListItem'; import Container from '../ControlPanel/Container/Container'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -import './InternetProtocol.scss'; import { Link } from 'react-router-dom'; import { useSelector } from 'react-redux'; +import './InternetProtocol.scss'; const InternetProtocol = props => { const { data } = props; const { i18n } = useSelector(state => state.session); - const token = localStorage.getItem("token"); const toggleFav = (starred) => { if (starred) { @@ -38,7 +37,7 @@ const InternetProtocol = props => { checkItem={checkItem}> -
    {data.NAME}
    +
    {data.NAT ? <>{data.NAT} {data.NAME} : data.NAME}

    @@ -51,7 +50,7 @@ const InternetProtocol = props => {
    {i18n.Owner}: {data.OWNER}
    -
    {i18n.Users}: {data.U_SYS_USERS.replace(',', ', ')}
    +
    {i18n.Users}: {data.U_SYS_USERS.replace(/,/g, ', ')}
    @@ -74,4 +73,4 @@ const InternetProtocol = props => { ); } -export default InternetProtocol; \ No newline at end of file +export default InternetProtocol; diff --git a/src/react/src/components/InternetProtocol/InternetProtocol.scss b/src/react/src/components/InternetProtocol/InternetProtocol.scss index e69de29bb..a9a18c10b 100644 --- a/src/react/src/components/InternetProtocol/InternetProtocol.scss +++ b/src/react/src/components/InternetProtocol/InternetProtocol.scss @@ -0,0 +1,8 @@ +.internetProtocols { + .ip-wrapper { + .name svg { + margin: 0 10px; + font-size: 20px; + } + } +} diff --git a/src/react/src/components/Lists/DirectoryList/DirectoryList.jsx b/src/react/src/components/Lists/DirectoryList/DirectoryList.jsx index f07d3a6ad..34239f309 100644 --- a/src/react/src/components/Lists/DirectoryList/DirectoryList.jsx +++ b/src/react/src/components/Lists/DirectoryList/DirectoryList.jsx @@ -6,6 +6,17 @@ import Row from '../Row/Row'; import '../List.scss'; class DirectoryList extends Component { + constructor(props) { + super(props); + this.state = { + orderType: "descending", + sortingType: "Type", + itemsSelected: [], + listingItems: [], + cursor: 0 + }; + } + static propTypes = { changePathAfterToggle: PropTypes.func, openCertainDirectory: PropTypes.func, @@ -27,13 +38,6 @@ class DirectoryList extends Component { data: PropTypes.array } - state = { - orderType: "descending", - sortingType: "Type", - itemsSelected: [], - cursor: 0 - }; - UNSAFE_componentWillMount = () => { if (localStorage.getItem(`${this.props.list}Sorting`) && localStorage.getItem(`${this.props.list}Order`)) { this.setState({ sortingType: localStorage.getItem(`${this.props.list}Sorting`), orderType: localStorage.getItem(`${this.props.list}Order`) }); @@ -117,20 +121,21 @@ class DirectoryList extends Component { } handleLiSelection = (e) => { - const { data, isActive, modalVisible, changePath, path } = this.props; + const { isActive, modalVisible, changePath, path } = this.props; const { cursor } = this.state; + const { listing } = this.getDataBySortingType() if (!isActive || modalVisible) { return; } if (e.keyCode === 40) { - if (cursor === data.listing.length - 1) { + if (cursor === listing.length - 1) { return; } - if (e.shiftKey) { - let name = data.listing[cursor].name; + if (e.shiftKey) { + let name = listing[cursor].name; this.addToSelection(name); } @@ -145,7 +150,7 @@ class DirectoryList extends Component { } if (e.shiftKey) { - let name = data.listing[cursor].name; + let name = listing[cursor - 1].name; this.addToSelection(name); } @@ -160,9 +165,15 @@ class DirectoryList extends Component { } passData = () => { - const { data, passData } = this.props; - const { name, permissions, type } = data.listing[this.state.cursor]; - passData(this.state.cursor, name, permissions, type); + const { passData: passDataToParent } = this.props; + const { firstItem, listing } = this.getDataBySortingType() + if (this.state.cursor === 0) { + const { name, permissions, type } = firstItem; + passDataToParent(this.state.cursor, name, permissions, type); + } else { + const { name, permissions, type } = listing[this.state.cursor - 1]; + passDataToParent(this.state.cursor, name, permissions, type); + } } openDirectory = (name) => { @@ -231,50 +242,74 @@ class DirectoryList extends Component { sortData = (a, b) => { switch (this.state.sortingType) { case "Type": return this.sortByType(a, b); - case "Size": if (a.type !== "d" && b.type !== "d") { return this.sortBySize(a, b) }; break; + case "Size": return this.sortBySize(a, b); case "Date": return this.sortByDate(a, b); case "Name": return this.sortByName(a, b); default: return this.sortByType(a, b); } } + getDataBySortingType = () => { + let firstItem, listing = []; + this.props.data.listing.forEach(item => { + if (item.name === '' && item.type === 'd') { + firstItem = item + } else { + listing.push(item) + } + }) + if (this.state.sortingType !== 'Type') { + listing = [ + ...listing.filter(item => item.type === 'd').sort((a, b) => this.sortByName(a, b)), + ...listing.filter(item => item.type === 'f').sort((a, b) => this.sortData(a, b)) + ] + } else { + listing = listing.sort((a, b) => this.sortData(a, b)) + } + return { firstItem, listing } + } + rows = () => { const { isActive, modalVisible, path, download } = this.props; const { cursor } = this.state; - const data = { ...this.props.data }; + const { listing, firstItem } = this.getDataBySortingType() - if (data.listing.length !== 0) { - let sortedData = data.listing.sort((a, b) => this.sortData(a, b)); + if (listing.length || firstItem) { return ( - sortedData.map((item, key) => - (item.name !== "" && sortedData.length !== 0) ? - ( { - this.setState({ cursor }); - this.props.passData(cursor, name, permissions, type); - }} - selectMultiple={() => this.addToSelection(item.name)} - selected={this.isSelected(item.name)} - openDirectory={this.openDirectory} - modalVisible={modalVisible} - activeRow={key === cursor} - isActiveList={isActive} - download={download} - cursor={key} - data={item} - path={path} />) : - ( { - this.setState({ cursor }); - this.props.passData(cursor, name, permissions, type); - }} - openDirectory={this.moveBack} - modalVisible={modalVisible} - activeRow={key === cursor} - isActiveList={isActive} - cursor={key} - data={item} - path={path} />)) + <> + { + this.setState({ cursor }); + this.props.passData(cursor, name, permissions, type); + }} + openDirectory={this.moveBack} + modalVisible={modalVisible} + activeRow={0 === cursor} + isActiveList={isActive} + cursor={0} + data={firstItem} + path={path} /> + { + listing.map((item, key) => ( + { + this.setState({ cursor }); + this.props.passData(cursor, name, permissions, type); + }} + selectMultiple={() => this.addToSelection(item.name)} + selected={this.isSelected(item.name)} + openDirectory={this.openDirectory} + modalVisible={modalVisible} + activeRow={key + 1 === cursor} + isActiveList={isActive} + download={download} + cursor={key + 1} + data={item} + path={path} /> + )) + } + ); } } diff --git a/src/react/src/components/Lists/Row/Row.jsx b/src/react/src/components/Lists/Row/Row.jsx index 88e8a902d..c45c70e1a 100644 --- a/src/react/src/components/Lists/Row/Row.jsx +++ b/src/react/src/components/Lists/Row/Row.jsx @@ -5,6 +5,7 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faJs, faCss3, faPhp, faHtml5, faSass } from '@fortawesome/free-brands-svg-icons'; import './Row.scss'; import { connect } from 'react-redux'; +import dayjs from 'dayjs' class Row extends Component { static propTypes = { @@ -127,6 +128,13 @@ class Row extends Component { return ({getMonth} {getDay}); } + timeFormatter = (date = new Date(), time) => { + const year = dayjs(date).year() + const currentYear = dayjs().year() + if (year === currentYear) return time + return year + } + glyph = () => { const { data: { type, name } } = this.props; @@ -174,7 +182,7 @@ class Row extends Component { render() { const { data: { name, owner, permissions, size, date, time } } = this.props; return ( -
  • +
  • {this.glyph()} this.openItem(e)}>{this.props.cursor === 0 ? ".." : name} @@ -182,7 +190,7 @@ class Row extends Component { {owner} {this.sizeFormatter(size)} {this.dateFormatter(date)} - {time} + {this.timeFormatter(date, time)}
  • ); } diff --git a/src/react/src/components/Lists/Row/Row.scss b/src/react/src/components/Lists/Row/Row.scss index 41264fcdf..3f56182a3 100644 --- a/src/react/src/components/Lists/Row/Row.scss +++ b/src/react/src/components/Lists/Row/Row.scss @@ -1,13 +1,4 @@ -$whiteBackground: #ececec; -$primary: #2c54ac; -$primaryLight: #d7dcef; -$primaryActive: #1e5cb2; -$secondary: #fcac04; -$secondaryLight: #f8b014; -$secondaryActive: #fdb51c; -$hoverButtonText: #2c54ac; -$activeButtonText: #fff; -$textColor: #555; +@import 'src/utils/scss/variables'; .list .list-container ul li svg { width: 25px; @@ -96,11 +87,11 @@ $textColor: #555; margin-left: 5px; line-height: 34px; font-size: 15px; - white-space: nowrap; - transition: all ease-out .3s; - + white-space: nowrap; + transition: all ease-out 0.3s; + &:hover { - transition: all ease-out .2s; + transition: all ease-out 0.2s; background: rgb(201, 199, 199); border-radius: 4px; cursor: pointer; @@ -109,7 +100,7 @@ $textColor: #555; } .list .list-container ul li.active .fName .name:hover { - background: #F0B607; + background: #f0b607; color: black; } @@ -169,8 +160,22 @@ li.inactive { background: rgb(220, 220, 220); } -@media (max-width: 1320px){ - .fPermissions, .fOwner { - display: none; +@media (max-width: 1320px) { + .list .list-container ul li { + .fName { + width: 210px; + } + .fSize { + width: 75px; + } + .fDate { + width: 40px; + } + .fTime { + width: 50px; + } + .fPermissions { + margin: 0; + } } } diff --git a/src/react/src/components/Login/Login.scss b/src/react/src/components/Login/Login.scss index 2a67a6f1e..5e6e5adeb 100644 --- a/src/react/src/components/Login/Login.scss +++ b/src/react/src/components/Login/Login.scss @@ -1,13 +1,5 @@ -$whiteBackground: #ececec; -$primary: #2c54ac; -$primaryLight: #d7dcef; -$primaryActive: #1e5cb2; -$secondary: #fcac04; -$secondaryLight: #f8b014; -$secondaryActive: #fdb51c; -$hoverButtonText: #2c54ac; -$activeButtonText: #fff; -$textColor: #555; +@import 'src/utils/scss/variables'; +@import 'src/utils/scss/breakpoints'; .login-page { display: flex; @@ -78,7 +70,7 @@ $textColor: #555; background-color: $primary; border: 1px solid $primary; padding: 1px 16px 3px; - font-size: 13px;; + font-size: 13px; height: 35px; color: #fafafa; border-radius: 3px; @@ -107,4 +99,42 @@ $textColor: #555; } } } -} \ No newline at end of file + + @media (max-width: $tabletMax) { + .login-form-wrapper { + margin: 2rem; + + .login-layout { + form { + flex-direction: column; + justify-content: center; + align-items: center; + + .c1 { + width: 100%; + margin-bottom: 1.5rem; + + a { + text-align: center; + + img { + width: 75%; + } + } + } + + .c2 { + margin: 0; + width: 100%; + } + + .buttons-wrapper { + .add { + margin-bottom: 10px; + } + } + } + } + } + } +} diff --git a/src/react/src/components/Mail/Mail.jsx b/src/react/src/components/Mail/Mail.jsx index 305038fd6..d3c9d7127 100644 --- a/src/react/src/components/Mail/Mail.jsx +++ b/src/react/src/components/Mail/Mail.jsx @@ -54,7 +54,11 @@ const Mail = props => {
    {data.NAME}
    -
    {i18n.Disk} {data.U_DISK}{i18n.mb}
    +
    + {i18n.Disk} + {data.U_DISK}{i18n.mb} +
    +
    {printStat(i18n['AntiVirus Support'], data.ANTIVIRUS)} diff --git a/src/react/src/components/MailAccount/Add/AddMailAccount.jsx b/src/react/src/components/MailAccount/Add/AddMailAccount.jsx index af353d478..8e68af96f 100644 --- a/src/react/src/components/MailAccount/Add/AddMailAccount.jsx +++ b/src/react/src/components/MailAccount/Add/AddMailAccount.jsx @@ -48,14 +48,18 @@ export default function AddMailAccount(props) { event.preventDefault(); let newMailDomain = {}; - for (var [name, value] of (new FormData(event.target)).entries()) { + for (var [name, value] of (new FormData(event.target)).entries()) { newMailDomain[name] = value; } newMailDomain['ok_acc'] = 'add'; newMailDomain['token'] = token; newMailDomain['v_domain'] = props.domain; - newMailDomain['Password'] = newMailDomain['v_password']; + newMailDomain['v_password'] = state.password; + + if (!newMailDomain['v_quota']) newMailDomain['v_quota'] = ''; + if (!newMailDomain['v_aliases']) newMailDomain['v_aliases'] = ''; + if (!newMailDomain['v_fwd']) newMailDomain['v_fwd'] = ''; if (Object.keys(newMailDomain).length !== 0 && newMailDomain.constructor === Object) { setState({ ...state, loading: true }); @@ -139,7 +143,7 @@ export default function AddMailAccount(props) { setState({ ...state, username: e.target.value })} + onChange={e => setState({ ...state, userName: e.target.value })} name="v_account" id="account" /> @@ -195,8 +199,8 @@ export default function AddMailAccount(props) { + name="v_send_email" + id="send_email" />
    diff --git a/src/react/src/components/MailAccount/Add/AddMailAccount.scss b/src/react/src/components/MailAccount/Add/AddMailAccount.scss index 5d4e5a606..f09dd23d7 100644 --- a/src/react/src/components/MailAccount/Add/AddMailAccount.scss +++ b/src/react/src/components/MailAccount/Add/AddMailAccount.scss @@ -1,6 +1,6 @@ .content .edit-template.add-mail-account { .search-toolbar-name { - width: max-content; + width: fit-content; } form { diff --git a/src/react/src/components/MailAccount/Edit/EditMailAccount.jsx b/src/react/src/components/MailAccount/Edit/EditMailAccount.jsx index 0457af439..d0d8ca4c1 100644 --- a/src/react/src/components/MailAccount/Edit/EditMailAccount.jsx +++ b/src/react/src/components/MailAccount/Edit/EditMailAccount.jsx @@ -63,10 +63,12 @@ export default function EditMailAccount(props) { if (error_msg) { setErrorMessage(error_msg); setOkMessage(''); + setState({ ...state, loading: false }); } else { dispatch(refreshCounters()).then(() => { setErrorMessage(''); setOkMessage(ok_msg); + setState({ ...state, loading: false }); }); } } @@ -200,7 +202,7 @@ export default function EditMailAccount(props) {
    - +
    diff --git a/src/react/src/components/MailAccount/MailAccount.jsx b/src/react/src/components/MailAccount/MailAccount.jsx index 07d81240d..84803be66 100644 --- a/src/react/src/components/MailAccount/MailAccount.jsx +++ b/src/react/src/components/MailAccount/MailAccount.jsx @@ -53,7 +53,11 @@ export default function MailAccount(props) {
    {`${data.NAME}@${domain}`}
    -
    {i18n.Disk} {data.U_DISK} {i18n.mb}
    +
    + {i18n.Disk} + {data.U_DISK} {i18n.mb} +
    +
    {i18n['Quota']}: {data.QUOTA}  {i18n.mb}
    diff --git a/src/react/src/components/MailAccount/MailInfoBlock/MailInfoBlock.jsx b/src/react/src/components/MailAccount/MailInfoBlock/MailInfoBlock.jsx index dfdb2a0bf..efd02a7b3 100644 --- a/src/react/src/components/MailAccount/MailInfoBlock/MailInfoBlock.jsx +++ b/src/react/src/components/MailAccount/MailInfoBlock/MailInfoBlock.jsx @@ -46,6 +46,24 @@ export default function MailInfoBlock({ webMail, hostName, domain, userName = '' ); } + const getCredentials = () => { + let result = ''; + + result += `${i18n['Username']}:${userName}@${domain}\n`; + result += `${i18n['Password']}:${password}\n`; + result += `${i18n['IMAP hostname']}:${state.imapHostName}\n`; + result += `${i18n['IMAP port']}:${state.imapPort}\n`; + result += `${i18n['IMAP security']}:${state.imapEncryption}\n`; + result += `${i18n['IMAP auth method']}:${i18n['Normal password']}\n`; + result += `${i18n['SMTP hostname']}:${state.smtpHostName}\n`; + result += `${i18n['SMTP port']}:${state.smtpPort}\n`; + result += `${i18n['SMTP security']}:${state.smtpEncryption}\n`; + result += `${i18n['SMTP auth method']}:${i18n['Normal password']}\n`; + result += `${i18n['Webmail URL']}:${`http://${window.location.hostname}${webMail}`}\n`; + + return result; + } + return (
    @@ -106,18 +124,10 @@ export default function MailInfoBlock({ webMail, hostName, domain, userName = ''
    {i18n['Webmail URL']}: - {webMail} + {webMail}
    - - - - - - - - - +
    diff --git a/src/react/src/components/MailAccount/MailInfoBlock/MailInfoBlock.scss b/src/react/src/components/MailAccount/MailInfoBlock/MailInfoBlock.scss index 74c9cee3a..a317abff3 100644 --- a/src/react/src/components/MailAccount/MailInfoBlock/MailInfoBlock.scss +++ b/src/react/src/components/MailAccount/MailInfoBlock/MailInfoBlock.scss @@ -1,4 +1,4 @@ -$primary: #2c54ac; +@import 'src/utils/scss/variables'; .mail-info-block { .select-group { diff --git a/src/react/src/components/MainNav/MainNav.jsx b/src/react/src/components/MainNav/MainNav.jsx index 64f4c33c5..bc91af9d1 100644 --- a/src/react/src/components/MainNav/MainNav.jsx +++ b/src/react/src/components/MainNav/MainNav.jsx @@ -165,8 +165,9 @@ const MainNav = () => { return "mobile-top-nav-wrapper hide"; } } + const topNavigation = () => { - if (document.documentElement.clientWidth > 900) { + if (window.innerWidth > 900) { return (
    diff --git a/src/react/src/components/MainNav/Mobile/MobileTopNav.jsx b/src/react/src/components/MainNav/Mobile/MobileTopNav.jsx index ec14f0248..97dcf9a04 100644 --- a/src/react/src/components/MainNav/Mobile/MobileTopNav.jsx +++ b/src/react/src/components/MainNav/Mobile/MobileTopNav.jsx @@ -1,37 +1,82 @@ -import React, { Component } from 'react'; +import React from 'react'; import Menu from '../../MainNav/Stat-menu/Menu'; -import Toolbar from '../../MainNav/Toolbar/Toolbar'; +import { addActiveElement } from '../../../actions/MainNavigation/mainNavigationActions'; +import { useSelector, useDispatch } from "react-redux"; +import { Link } from "react-router-dom"; import './MobileTopNav.scss'; -class MobileTopNav extends Component { - render() { - return ( -
    -
    -
    -
    Packages
    -
    IP
    -
    Graphs
    -
    Statistics
    -
    Log
    -
    -
    -
    Updates
    -
    Firewall
    -
    File Manager
    -
    Apps
    -
    Server
    -
    -
    -
    - -
    -
    - -
    -
    - ); +const MobileTopNav = props => { + const { i18n, userName } = useSelector(state => state.session); + const { session } = useSelector(state => state.userSession); + const { activeElement, focusedElement } = useSelector(state => state.mainNavigation); + const dispatch = useDispatch(); + + const className = (activeName, extraClass = '') => { + let className = 'top-link'; + + if (activeName === activeElement) { + className += ' active'; + } + + if (activeName === focusedElement) { + className += ' focus'; + } + + return className + ` ${extraClass}`; } + + const handleState = (tab, event) => { + if (`${window.location.pathname}${window.location.search}` === tab) { + return event.preventDefault(); + } + + dispatch(addActiveElement(tab)); + } + + return ( +
    +
    + {userName === 'admin' && (<> +
    + handleState("/list/package/", event)} onKeyPress={event => event.preventDefault()}>{i18n.Packages} +
    +
    + handleState("/list/ip/", event)} onKeyPress={event => event.preventDefault()}>{i18n.IP} +
    +
    + handleState("/list/rrd/", event)} onKeyPress={event => event.preventDefault()}>{i18n.Graphs} +
    + )} +
    + handleState("/list/stats/", event)} onKeyPress={event => event.preventDefault()}>{i18n.Statistics} +
    +
    + handleState("/list/log/", event)} onKeyPress={event => event.preventDefault()}>{i18n.Log} +
    + {userName === 'admin' && (<> +
    + handleState("/list/updates/", event)} onKeyPress={event => event.preventDefault()}>{i18n.Updates} +
    + {session.FIREWALL_SYSTEM &&
    + handleState("/list/firewall/", event)} onKeyPress={event => event.preventDefault()}>{i18n.Firewall} +
    } + )} + {session.FILEMANAGER_KEY &&
    + {i18n['File Manager']} +
    } + {session.SOFTACULOUS === "yes" &&
    {i18n.Apps ?? 'Apps'} +
    } + {userName === 'admin' && ( +
    + handleState("/list/server/", event)} onKeyPress={event => event.preventDefault()}>{i18n.Server} +
    + )} +
    +
    + +
    +
    + ); } -export default MobileTopNav; \ No newline at end of file +export default MobileTopNav; diff --git a/src/react/src/components/MainNav/Mobile/MobileTopNav.scss b/src/react/src/components/MainNav/Mobile/MobileTopNav.scss index b0353b53d..a84541eb8 100644 --- a/src/react/src/components/MainNav/Mobile/MobileTopNav.scss +++ b/src/react/src/components/MainNav/Mobile/MobileTopNav.scss @@ -1,25 +1,87 @@ -$secondaryLight: #f8b014; +@import 'src/utils/scss/variables'; +@import 'src/utils/scss/breakpoints'; .mobile-top-nav-wrapper.hide { opacity: 0; } .mobile-top-nav-wrapper.show { + z-index: 5; opacity: 1; position: fixed; width: 100%; - height: 100vh; + height: 111px; background: white; display: flex; flex-direction: column; animation: showMobileNav forwards .3s; - margin-top: 34px; + margin-top: 82px; - > div { - height: 33.33%; + .mobile-menu { + padding: 0 10%; + flex-wrap: wrap; + margin-top: 15px; + } + + > div .top-link { display: flex; - justify-content: center; - align-items: center; + font-size: 14px; + padding: 4px 0; + + &:hover { + background: $secondaryLight; + + a, button { + color: $white; + } + } + } + + div { + display: flex; + + a, button { + display: flex; + justify-content: center; + align-items: center; + padding: 0 10px !important; + width: fit-content; + height: 100%; + text-decoration: none; + color: $black; + } + + button { + background: none; + border: none; + } + + &:hover { + cursor: pointer; + } + } + + div.active { + background: white; + + a, button { + color: $secondary; + font-weight: bold; + + &:hover { + color: white; + } + + &:active { + background: $secondaryActive; + color: white; + } + } + + &:hover { + color: white; + background: $secondaryLight; + } } .toolbar { @@ -29,13 +91,37 @@ $secondaryLight: #f8b014; } - .mobile-stat-menu .menu-wrapper { - position: relative; - height: auto; - min-height: auto; + .mobile-stat-menu { + box-shadow: 0 5px 3px 0 hsla(0,0%,78.4%,.5); - .menu-stat { - margin: 0; + .menu-wrapper { + position: relative; + height: auto; + min-height: auto; + padding: 0; + margin-top: 9px; + + .menu-stat { + margin: 0; + + .stat { + text-align: left; + flex: 1 1 auto; + margin-bottom: 15px; + } + } + } + } +} + +@media (max-width: 1066px) { + .mobile-stat-menu .menu-wrapper .menu-stat { + margin-top: 40px; + + .stat { + .stats { + display: none; + } } } } @@ -46,25 +132,17 @@ $secondaryLight: #f8b014; } } -@media (max-width: 450px) { - .mobile-top-nav-wrapper.show .mobile-menu { - padding: 15px 0 0 15px; - font-size: 19px; - height: 27%; - - > div { - width: 50%; - height: 100%; - - > div { - padding: 2px; - - &:hover { - color: $secondaryLight; - } - } +@media (max-width: 725px) { + .mobile-top-nav-wrapper.show { + .menu-stat { + display: flex; + flex-wrap: wrap; } } + + .mobile-menu { + padding: 0 10%; + } } @keyframes showMobileNav { diff --git a/src/react/src/components/MainNav/Panel/Notifications/Notifications.jsx b/src/react/src/components/MainNav/Panel/Notifications/Notifications.jsx index c5517f945..76933af33 100644 --- a/src/react/src/components/MainNav/Panel/Notifications/Notifications.jsx +++ b/src/react/src/components/MainNav/Panel/Notifications/Notifications.jsx @@ -14,7 +14,7 @@ const Notifications = () => { const [loading, setLoading] = useState(false); useEffect(() => { - if (!notifications) { + if (!notifications.length) { fetchData(); } }, [notifications]); @@ -47,7 +47,7 @@ const Notifications = () => { } const renderOptions = () => { - if (notifications && notifications.length) { + if (notifications.length) { return notifications.map(item => { return ( <> @@ -74,7 +74,7 @@ const Notifications = () => {
    +
    + ); + } + } + return (
    {loading && } @@ -113,8 +148,8 @@ const Panel = props => { )}
    - -
    + {renderNotifications()} +
    {session.look ?
    @@ -126,29 +161,13 @@ const Panel = props => { }
    -
    +
    -
    -
    -
    LOGO
    -
    -
    - - - -
    -
    -
    - -
    -
    {userName}
    -
    -
    -
    + {renderSmallNavigation()}
    ); } -export default Panel; \ No newline at end of file +export default Panel; diff --git a/src/react/src/components/MainNav/Panel/Panel.scss b/src/react/src/components/MainNav/Panel/Panel.scss index 4d4f98f1e..2a2ce1fdb 100644 --- a/src/react/src/components/MainNav/Panel/Panel.scss +++ b/src/react/src/components/MainNav/Panel/Panel.scss @@ -1,13 +1,5 @@ -$whiteBackground: #ececec; -$primary: #2c54ac; -$primaryLight: #d7dcef; -$primaryActive: #1e5cb2; -$secondary: #fcac04; -$secondaryLight: #f8b014; -$secondaryActive: #fdb51c; -$hoverButtonText: #2c54ac; -$activeButtonText: #fff; -$textColor: #555; +@import 'src/utils/scss/variables'; +@import 'src/utils/scss/breakpoints'; .top-panel.small-device { display: none; @@ -24,6 +16,7 @@ $textColor: #555; background: #222e44; height: 34px; align-items: center; + justify-content: space-between; padding: 0 13%; z-index: 2; @@ -53,7 +46,7 @@ $textColor: #555; justify-content: center; align-items: center; padding: 0 10px !important; - width: 100%; + width: fit-content; height: 100%; text-decoration: none; color: white; @@ -94,11 +87,12 @@ $textColor: #555; .left-menu { width: 75%; - padding-left: 0; - margin-left: 0; + margin: 0; + padding: 0; justify-content: space-between; - div { + div.top-link, + div.nav-link { flex: 1 1 auto; height: 100%; transform: translateX(-5px); @@ -141,10 +135,12 @@ $textColor: #555; } .profile-menu { - width: auto; + width: 25%; + margin: 0; + padding: 0; + justify-content: flex-end; div { - width: 4rem; height: 100%; } @@ -155,8 +151,8 @@ $textColor: #555; svg { border-radius: 30px; - width: 100%; - height: 100%; + width: 40px; + height: 30px; padding: 3px; &:hover { @@ -169,7 +165,7 @@ $textColor: #555; } } - div + div a { + .edit-user a { color: #a4abad; font-weight: 700; @@ -182,8 +178,8 @@ $textColor: #555; } } - div + div + div a, - div + div + div button { + .logout-button a, + .logout-button button { color: white; cursor: pointer; font-weight: 100; @@ -204,7 +200,7 @@ $textColor: #555; justify-content: start; > div { - width: max-content; + width: fit-content; flex: unset; padding: 0 1rem; } @@ -217,11 +213,10 @@ $textColor: #555; } .profile-menu { - justify-content: space-between; align-items: center; - > div + div { - width: max-content; + > .edit-user { + width: fit-content; } .long-username { @@ -247,13 +242,12 @@ $textColor: #555; } } -@media screen and (max-width: 1024px) { +@media screen and (max-width: $desktopMin) { .top-panel { - padding: 0 5%; + padding: 0 8%; } } -//Small Devices @media (max-width: 900px) { .top-panel { display: none; @@ -261,16 +255,12 @@ $textColor: #555; .top-panel.small-device { display: flex; - padding: 0; + justify-content: space-between; + padding: 0 10%; > .container { - justify-content: center; align-items: center; - width: 30%; - } - - .profile-menu { - padding-left: 10%; + width: auto; } .hamburger { @@ -288,35 +278,18 @@ $textColor: #555; } } } +} - @keyframes toggleNav { - from { - transform: translateY(-20px); - } +@media (max-width: $phoneMax) { + .top-panel.small-device { + padding: 0; + } - to { - transform: translateY(50px); + .top-panel .left-menu div.logo { + width: unset; + + a div { + width: 5rem; } } } - -@media (max-width: 420px) { - .top-panel.small-device { - .profile-menu { - padding: 0; - margin-right: 5px; - - .bell { - width: 20%; - } - - .bell + div { - width: 40%; - } - - .bell + div + div { - width: 40%; - } - } - } -} \ No newline at end of file diff --git a/src/react/src/components/MainNav/Stat-menu/Menu.jsx b/src/react/src/components/MainNav/Stat-menu/Menu.jsx index 51672d657..1e84b9c83 100644 --- a/src/react/src/components/MainNav/Stat-menu/Menu.jsx +++ b/src/react/src/components/MainNav/Stat-menu/Menu.jsx @@ -4,6 +4,7 @@ import { useSelector, useDispatch } from "react-redux"; import { Link } from "react-router-dom"; import './Menu.scss'; +import Spinner from 'src/components/Spinner/Spinner'; const className = height => { if (height === 35) { @@ -27,7 +28,8 @@ const style = ({ menuHeight, mobile }) => { const Menu = props => { const { activeElement, focusedElement } = useSelector(state => state.mainNavigation); - const { i18n } = useSelector(state => state.session); + const { i18n, userName } = useSelector(state => state.session); + const { panel } = useSelector(state => state.panel); const { session } = useSelector(state => state.userSession); const { user } = useSelector(state => state.menuCounters); const dispatch = useDispatch(); @@ -50,19 +52,7 @@ const Menu = props => { return `stat ${activeName === activeElement && 'l-active'} ${activeName === focusedElement && 'focus'}`; } - const sizeFormatter = (bytes, decimals) => { - if (!bytes) return null; - - if (bytes === "0") { - return 0 b; - } - - let k = 1024, - dm = decimals <= 0 ? 0 : decimals || 2, - sizes = ['b', 'kb', 'Mb', 'GB'], - i = Math.floor(Math.log(bytes) / Math.log(k)); - return ({parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} {sizes[i]}); - } + if (!panel[userName]) return ; return (
    @@ -72,10 +62,26 @@ const Menu = props => {

    {i18n.USER}

    { - session.look + session.look && panel[session.look] ? (<> -
    {i18n.Disk}: {sizeFormatter(user.U_DISK)}
    -
    {i18n.Bandwidth}: {sizeFormatter(user.U_BANDWIDTH)}
    +
    + {i18n.Disk}: + + + {panel[session.look]['U_DISK']} + {panel[session.look]['U_DISK_MEASURE']} + + +
    +
    + {i18n.Bandwidth}: + + + {panel[session.look]['U_BANDWIDTH']} + {panel[session.look]['U_BANDWIDTH_MEASURE']} + + +
    ) : (<>
    {i18n.users}: {user.U_USERS}
    @@ -85,62 +91,79 @@ const Menu = props => {
    -
    - handleState("/list/web/", event)} onKeyPress={event => event.preventDefault()}> -

    {i18n.WEB}

    -
    -
    {i18n.domains}: {user.U_WEB_DOMAINS}
    -
    {i18n.aliases}: {user.U_WEB_ALIASES}
    -
    {i18n.spnd}: {user.SUSPENDED_WEB}
    -
    - -
    -
    - handleState("/list/dns/", event)} onKeyPress={event => event.preventDefault()}> -

    {i18n.DNS}

    -
    -
    {i18n.domains}: {user.U_DNS_DOMAINS}
    -
    {i18n.records}: {user.U_DNS_RECORDS}
    -
    {i18n.spnd}: {user.SUSPENDED_DNS}
    -
    - -
    -
    - handleState("/list/mail/", event)} onKeyPress={event => event.preventDefault()}> -

    {i18n.MAIL}

    -
    -
    {i18n.domains}: {user.U_MAIL_DOMAINS}
    -
    {i18n.accounts}: {user.U_MAIL_ACCOUNTS}
    -
    {i18n.spnd}: {user.SUSPENDED_MAIL}
    -
    - -
    -
    - handleState("/list/db/", event)} onKeyPress={event => event.preventDefault()}> -

    {i18n.DB}

    -
    -
    {i18n.databases}: {user.U_DATABASES}
    -
    {i18n.spnd}: {user.SUSPENDED_DB}
    -
    - -
    -
    - handleState("/list/cron/", event)} onKeyPress={event => event.preventDefault()}> -

    {i18n.CRON}

    -
    -
    {i18n.jobs}: {user.U_CRON_JOBS}
    -
    {i18n.spnd}: {user.SUSPENDED_CRON}
    -
    - -
    -
    - handleState("/list/backup/", event)} onKeyPress={event => event.preventDefault()}> -

    {i18n.BACKUP}

    -
    -
    {i18n.backups}: {user.U_BACKUPS}
    -
    - -
    + { + panel[userName]['WEB_DOMAINS'] !== '0' && (
    + handleState("/list/web/", event)} onKeyPress={event => event.preventDefault()}> +

    {i18n.WEB}

    +
    +
    {i18n.domains}: {user.U_WEB_DOMAINS}
    +
    {i18n.aliases}: {user.U_WEB_ALIASES}
    +
    {i18n.spnd}: {user.SUSPENDED_WEB}
    +
    + +
    ) + } + + { + panel[userName]['DNS_DOMAINS'] !== '0' && (
    + handleState("/list/dns/", event)} onKeyPress={event => event.preventDefault()}> +

    {i18n.DNS}

    +
    +
    {i18n.domains}: {user.U_DNS_DOMAINS}
    +
    {i18n.records}: {user.U_DNS_RECORDS}
    +
    {i18n.spnd}: {user.SUSPENDED_DNS}
    +
    + +
    ) + } + + { + panel[userName]['MAIL_DOMAINS'] !== '0' && (
    + handleState("/list/mail/", event)} onKeyPress={event => event.preventDefault()}> +

    {i18n.MAIL}

    +
    +
    {i18n.domains}: {user.U_MAIL_DOMAINS}
    +
    {i18n.accounts}: {user.U_MAIL_ACCOUNTS}
    +
    {i18n.spnd}: {user.SUSPENDED_MAIL}
    +
    + +
    ) + } + + { + panel[userName]['DATABASES'] !== '0' && (
    + handleState("/list/db/", event)} onKeyPress={event => event.preventDefault()}> +

    {i18n.DB}

    +
    +
    {i18n.databases}: {user.U_DATABASES}
    +
    {i18n.spnd}: {user.SUSPENDED_DB}
    +
    + +
    ) + } + + { + panel[userName]['CRON_JOBS'] !== '0' && (
    + handleState("/list/cron/", event)} onKeyPress={event => event.preventDefault()}> +

    {i18n.CRON}

    +
    +
    {i18n.jobs}: {user.U_CRON_JOBS}
    +
    {i18n.spnd}: {user.SUSPENDED_CRON}
    +
    + +
    ) + } + + { + panel[userName]['BACKUPS'] !== '0' && (
    + handleState("/list/backup/", event)} onKeyPress={event => event.preventDefault()}> +

    {i18n.BACKUP}

    +
    +
    {i18n.backups}: {user.U_BACKUPS}
    +
    + +
    ) + } ); diff --git a/src/react/src/components/MainNav/Stat-menu/Menu.scss b/src/react/src/components/MainNav/Stat-menu/Menu.scss index b6e8010cc..e7ebccb20 100644 --- a/src/react/src/components/MainNav/Stat-menu/Menu.scss +++ b/src/react/src/components/MainNav/Stat-menu/Menu.scss @@ -1,13 +1,4 @@ -$whiteBackground: #ececec; -$primary: #2c54ac; -$primaryLight: #d7dcef; -$primaryActive: #1e5cb2; -$secondary: #fcac04; -$secondaryLight: #f8b014; -$secondaryActive: #fdb51c; -$hoverButtonText: #2c54ac; -$activeButtonText: #fff; -$textColor: #555; +@import 'src/utils/scss/variables'; .menu-wrapper { position: fixed; @@ -18,7 +9,7 @@ $textColor: #555; .menu-stat { display: flex; flex-direction: row; - margin-top: 70px; + margin-top: 50px; min-height: 45px; max-height: 135px; height: 145px; @@ -108,10 +99,6 @@ $textColor: #555; } } - .stat.last { - flex: 1; - } - .l-active { border-bottom: 3px solid $primary; @@ -152,13 +139,24 @@ $textColor: #555; } } -@media screen and (max-width: 1024px) { +@media screen and (max-width: 1066px) { .menu-wrapper { - padding: 0 10%; + .menu-stat { + padding: 0 10%; + margin-top: 40px; + } } } -@media (max-width: 900px) { +@media screen and (max-width: 1024px) { + .menu-wrapper { + .menu-stat { + padding: 0 10%; + } + } +} + +@media (max-width: 1066px) { .menu-wrapper { padding: 1%; @@ -167,55 +165,9 @@ $textColor: #555; min-height: auto; .stat { - flex-grow: 1; - height: 30px; - padding-left: 5px; - min-width: 14%; - text-align: left; - h3 { padding: 0; } - - .stats { - display: none; - } - } - } - } -} - -@media (max-width: 450px) { - .main-nav .mobile-top-nav-wrapper.show .mobile-stat-menu { - border: 1px solid black; - border-width: 1px 0; - margin-top: 15px; - - .menu-wrapper { - height: 100%; - padding: 0; - - .menu-stat { - flex-wrap: wrap; - max-height: 100%; - min-height: 100%; - - .stat { - display: flex; - align-items: center; - border: none; - padding: 5px 5px 5px 15px; - min-width: 50%; - height: auto; - - h3 { - margin: 0; - } - } - - .stat.l-active { - background: #fdac020d; - } } } } diff --git a/src/react/src/components/MainNav/Toolbar/LeftButton/LeftButton.scss b/src/react/src/components/MainNav/Toolbar/LeftButton/LeftButton.scss index bfc4df8fb..18a05505e 100644 --- a/src/react/src/components/MainNav/Toolbar/LeftButton/LeftButton.scss +++ b/src/react/src/components/MainNav/Toolbar/LeftButton/LeftButton.scss @@ -1,13 +1,4 @@ -$whiteBackground: #ececec; -$primary: #2c54ac; -$primaryLight: #d7dcef; -$primaryActive: #1e5cb2; -$secondary: #fcac04; -$secondaryLight: #f8b014; -$secondaryActive: #fdb51c; -$hoverButtonText: #2c54ac; -$activeButtonText: #fff; -$textColor: #555; +@import 'src/utils/scss/variables'; .l-menu { transform: translate(35px, 50%); @@ -39,6 +30,12 @@ $textColor: #555; } } + @media screen and (max-width: 900px) { + span.add { + display: none !important; + } + } + &:active { background: $primary; @@ -72,6 +69,10 @@ $textColor: #555; height: 21px; } } + + @media screen and (max-width: 900px) { + transform: unset; + } } .l-menu.none { diff --git a/src/react/src/components/MainNav/Toolbar/Select/Select.scss b/src/react/src/components/MainNav/Toolbar/Select/Select.scss index 95104561f..c571b408d 100644 --- a/src/react/src/components/MainNav/Toolbar/Select/Select.scss +++ b/src/react/src/components/MainNav/Toolbar/Select/Select.scss @@ -1,6 +1,10 @@ .select-wrapper { display: flex; + select { + width: auto; + } + select, button { border-radius: 0; } diff --git a/src/react/src/components/MainNav/Toolbar/Toolbar.jsx b/src/react/src/components/MainNav/Toolbar/Toolbar.jsx index 8fce58e5e..bf134a00e 100644 --- a/src/react/src/components/MainNav/Toolbar/Toolbar.jsx +++ b/src/react/src/components/MainNav/Toolbar/Toolbar.jsx @@ -1,70 +1,62 @@ -import React, { Component } from 'react'; +import React, { useEffect, useState } from 'react'; import './Toolbar.scss'; -class Toolbar extends Component { - state = { - toolbarHeight: 205 - } +const Toolbar = props => { + const [toolbarHeight, setToolbarHeight] = useState(185); - componentDidMount() { - window.addEventListener("resize", this.handleToolbar); - document.addEventListener("scroll", this.changeToolbarHeight); - } + useEffect(() => { + window.addEventListener("resize", handleToolbar); + document.addEventListener("scroll", changeToolbarHeight); - componentWillUnmount() { - window.removeEventListener("resize", this.handleToolbar); - document.removeEventListener("scroll", this.changeToolbarHeight); - } + return () => { + window.removeEventListener("resize", handleToolbar); + document.removeEventListener("scroll", changeToolbarHeight); + } + }, []); - handleToolbar = () => { + const handleToolbar = () => { if (document.documentElement.clientWidth < 900) { - this.setState({ - toolbarHeight: 115 - }); + setToolbarHeight(95); } else { - this.setState({ - toolbarHeight: 205 - }); + setToolbarHeight(185); } } - changeToolbarHeight = () => { + const changeToolbarHeight = () => { if (document.documentElement.clientWidth > 900) { let scrollTop = window.scrollY; - let toolbarHeight = Math.max(115, 205 - scrollTop); - this.setState({ toolbarHeight }); + let newToolbarHeight = Math.max(95, 185 - scrollTop); + setToolbarHeight(newToolbarHeight); } } - className = () => { - const { className } = this.props; + const className = () => { + const { className } = props; if (className === "justify-right") { - return this.state.toolbarHeight === 115 ? "toolbar t-shadow " + className : "toolbar " + className; + return toolbarHeight === 95 ? "toolbar t-shadow " + className : "toolbar " + className; } - return this.state.toolbarHeight === 115 ? "toolbar t-shadow" : "toolbar"; + return toolbarHeight === 95 ? "toolbar t-shadow" : "toolbar"; } - style = () => { - if (this.props.mobile) { + const style = () => { + if (props.mobile) { return; } if (document.documentElement.clientWidth > 900) { - return { marginTop: this.state.toolbarHeight }; + return { marginTop: toolbarHeight }; } else { - return { marginTop: 145 }; + return { marginTop: 33 }; } } - render() { - return ( -
    - {this.props.children} -
    - ); - } + return ( +
    + {props.children} +
    + ); } export default Toolbar; \ No newline at end of file diff --git a/src/react/src/components/MainNav/Toolbar/Toolbar.scss b/src/react/src/components/MainNav/Toolbar/Toolbar.scss index a0c99df1b..9f1dc3764 100644 --- a/src/react/src/components/MainNav/Toolbar/Toolbar.scss +++ b/src/react/src/components/MainNav/Toolbar/Toolbar.scss @@ -1,15 +1,4 @@ -$primary: #2c54ac; -$whiteBackground: #ececec; -$primary: #2c54ac; -$primaryLight: #d7dcef; -$primaryActive: #1e5cb2; -$secondary: #fcac04; -$secondaryLight: #f8b014; -$danger: #b00e5b; -$secondaryActive: #fdb51c; -$hoverButtonText: #2c54ac; -$activeButtonText: #fff; -$textColor: #555; +@import 'src/utils/scss/variables'; .toolbar { display: flex; @@ -27,19 +16,30 @@ $textColor: #555; .r-menu { display: flex; - justify-content: center; align-items: center; + > div { + display: flex; + flex-wrap: unset; + width: 100%; + align-items: center; + justify-content: flex-end; + } + a.button-extra, button.button-extra { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: 100%; + justify-content: flex-start; + padding: 5px 10px; background: none; border: none; - padding: 0 0.75rem; text-decoration: none; color: rgb(129, 125, 125); font-size: 14px; display: flex; - justify-content: center; align-items: center; margin-right: 10px; border-radius: 3px; @@ -151,12 +151,57 @@ $textColor: #555; box-shadow: rgba(200, 200, 200, 0.5) 0px 5px 3px 0px; } -@media (max-width: 1350px) { +@media (max-width: 1390px) { .toolbar { padding: 3px 10% 1px; } } +@media (max-width: 1250px) { + .toolbar { + .r-menu { + a.button-extra, + button.button-extra { + max-width: 30%; + } + } + } +} + +@media (max-width: 900px) { + .toolbar { + .r-menu { + overflow: scroll; + + a.button-extra, + button.button-extra { + overflow: unset; + max-width: 100%; + } + + > div { + margin-left: 3rem; + position: relative; + display: flex; + flex-wrap: unset; + width: 100%; + align-items: center; + justify-content: flex-start; + } + + .select-wrapper + div { + display: none; + } + } + } +} + +@media (max-width: 450px) { + .toolbar { + padding: 3px 1% 1px; + } +} + @media (max-width: 450px) { .mobile-toolbar .toolbar { display: flex; diff --git a/src/react/src/components/Menu/Menu.jsx b/src/react/src/components/Menu/Menu.jsx index 67b28abdc..98d966b39 100644 --- a/src/react/src/components/Menu/Menu.jsx +++ b/src/react/src/components/Menu/Menu.jsx @@ -1,148 +1,185 @@ -import React, { createRef, useEffect } from 'react'; -import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -import './Menu.scss'; -import { useSelector } from 'react-redux'; -import { Link } from 'react-router-dom'; +import React, { useCallback, useEffect, useRef } from 'react' +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' +import './Menu.scss' +import { useSelector } from 'react-redux' +import { Link } from 'react-router-dom' const Menu = (props) => { - const { i18n } = useSelector(state => state.session); - const inputFile = createRef(); + const { i18n } = useSelector((state) => state.session) + const inputFile = useRef() + + const handleUserKeyDown = useCallback((event) => hotKeys(event), [props]) useEffect(() => { - document.addEventListener("keydown", hotKeys); - - return () => document.removeEventListener("keydown", hotKeys); - }, []); + document.addEventListener('keydown', handleUserKeyDown) + return () => document.removeEventListener('keydown', handleUserKeyDown) + }, [handleUserKeyDown]) const newFile = () => { - props.openModal("Add file"); + props.openModal('Add file') } const newDirectory = () => { - props.openModal("Add directory"); + props.openModal('Add directory') } const deleteFile = () => { - const { selection, openModal, cursor } = props; + const { selection, openModal, cursor } = props if (selection.length === 0) { if (cursor === 0) { - openModal("Nothing selected"); + openModal('Nothing selected') } else { - openModal("Delete"); + openModal('Delete') } } else { - openModal("Delete", selection.length); + openModal('Delete', selection.length) } } const rename = () => { + console.log(props) if (props.cursor === 0) { - props.openModal("Nothing selected"); + props.openModal('Nothing selected') } else { - props.openModal("Rename"); + props.openModal('Rename') } } const permissions = () => { if (props.cursor === 0) { - props.openModal("Nothing selected"); + props.openModal('Nothing selected') } else { - props.openModal("Permissions"); + props.openModal('Permissions') } } const move = () => { - const { selection, openModal, cursor } = props; + const { selection, openModal, cursor } = props if (selection.length === 0) { if (cursor === 0) { - openModal("Nothing selected"); + openModal('Nothing selected') } else { - openModal("Move"); + openModal('Move') } } else { - openModal("Move", selection.length); + openModal('Move', selection.length) } } const archive = () => { - const { selection, openModal, cursor } = props; + const { selection, openModal, cursor } = props if (selection.length === 0) { if (cursor === 0) { - openModal("Nothing selected"); + openModal('Nothing selected') } else { - openModal("Archive"); + openModal('Archive') } } else { - openModal("Archive", selection.length); + openModal('Archive', selection.length) } } const extract = () => { if (props.cursor === 0) { - props.openModal("Nothing selected"); + props.openModal('Nothing selected') } else { - props.openModal("Extract"); + props.openModal('Extract') } } const copy = () => { - const { selection, openModal, cursor } = props; + const { selection, openModal, cursor } = props if (selection.length === 0) { if (cursor === 0) { - openModal("Nothing selected"); + openModal('Nothing selected') } else { - openModal("Copy"); + openModal('Copy') } } else { - openModal("Copy", selection.length); + openModal('Copy', selection.length) } } const upload = (e) => { if (e.target.files.length === 0) { - return; + return } - props.upload(e.target.files); + props.upload(e.target.files) } const download = () => { if (props.cursor === 0) { - props.openModal("Nothing selected"); - } else if (props.itemType === "d") { - props.openModal("Nothing selected", null, true); + props.openModal('Nothing selected') + } else if (props.itemType === 'd') { + props.openModal('Nothing selected', null, true) } else { - props.download(); + props.download() } } const hotKeys = (e) => { - let isSearchInputFocused = document.querySelector('input:focus') || document.querySelector('textarea:focus'); - - if (props.modalVisible || isSearchInputFocused) return; - - if (e.shiftKey && e.keyCode === 117) { - rename(); + e.stopPropagation() + let isSearchInputFocused = document.querySelector('input:focus') || document.querySelector('textarea:focus') + if (props.modalVisible || isSearchInputFocused) return + if (e.shiftKey && e.keyCode === 118) { + e.preventDefault() + rename() + return } switch (e.keyCode) { - case 46: return deleteFile(); - case 65: return archive(); - case 68: return download(); - case 77: return move(); - case 78: return newFile(); - case 85: return inputFile.click(); - case 113: return rename(); - case 115: return permissions(); - case 116: return copy(); - case 118: return newDirectory(); - case 119: return deleteFile(); - default: break; + // u + case 85: + e.preventDefault(); + return inputFile.current.click() + // n + case 78: + e.preventDefault() + return newFile() + // F6 + case 118: + e.preventDefault() + return newDirectory() + // d + case 68: + e.preventDefault() + return download() + // F2 + case 113: + e.preventDefault() + return rename() + // m + case 77: + e.preventDefault() + return move() + // F4 + case 115: + e.preventDefault() + return copy() + // a + case 65: + e.preventDefault() + return archive() + // F8 + case 119: + e.preventDefault() + return deleteFile() + // Del + case 46: + e.preventDefault() + return deleteFile() + // F3 + case 114: + e.preventDefault() + return permissions() + default: + break } } - let matchArchive = props.name.match(/.zip|.tgz|.tar.gz|.gzip|.tbz|.tar.bz|.gz|.zip|.tar|.rar/g); + let matchArchive = props.name.match(/.zip|.tgz|.tar.gz|.gzip|.tbz|.tar.bz|.gz|.zip|.tar|.rar/g) return (
    @@ -153,30 +190,80 @@ const Menu = (props) => {
    - - - - - - - - - - - - - - - - {matchArchive ? null : } - {matchArchive ? null : } - {matchArchive ? : null} - {matchArchive ? : null} - - + + + + + + + + + + + + + + + + {matchArchive ? null : ( + + )} + {matchArchive ? null : ( + + )} + {matchArchive ? ( + + ) : null} + {matchArchive ? ( + + ) : null} + +
    - ); + ) } -export default Menu; +export default Menu diff --git a/src/react/src/components/Menu/Menu.scss b/src/react/src/components/Menu/Menu.scss index 2eb9abb7f..2e9f8c58b 100644 --- a/src/react/src/components/Menu/Menu.scss +++ b/src/react/src/components/Menu/Menu.scss @@ -1,13 +1,4 @@ -$whiteBackground: #ececec; -$primary: #2c54ac; -$primaryLight: #d7dcef; -$primaryActive: #1e5cb2; -$secondary: #fcac04; -$secondaryLight: #f8b014; -$secondaryActive: #fdb51c; -$hoverButtonText: #2c54ac; -$activeButtonText: #fff; -$textColor: #555; +@import 'src/utils/scss/variables'; .menu { display: flex; diff --git a/src/react/src/components/Modal/AddDirectory.jsx b/src/react/src/components/Modal/AddDirectory.jsx index d94b483b5..173fdb654 100644 --- a/src/react/src/components/Modal/AddDirectory.jsx +++ b/src/react/src/components/Modal/AddDirectory.jsx @@ -1,9 +1,27 @@ -import React from 'react'; +import React, { useState } from 'react'; import { useSelector } from 'react-redux'; const AddDirectory = (props) => { + const [value, setValue] = useState(null) const { i18n } = useSelector(state => state.session); + const [hasError, setHasError] = useState(value !== null && !value.length) + + const onChange = (e) => { + setValue(e.target.value) + } + + const save = () => { + if (!value) { + setHasError(true) + return; + } + props.save() + } + + const cancel = () => { + props.close() + } return (
    @@ -11,11 +29,12 @@ const AddDirectory = (props) => {

    {i18n['Create directory']}

    - + + {hasError && {i18n['Directory name cannot be empty']}}
    - - + +
    ); diff --git a/src/react/src/components/Modal/AddFile.jsx b/src/react/src/components/Modal/AddFile.jsx index cbd96bd89..f7856959c 100644 --- a/src/react/src/components/Modal/AddFile.jsx +++ b/src/react/src/components/Modal/AddFile.jsx @@ -1,8 +1,26 @@ -import React from 'react'; +import React, { useState } from 'react'; import { useSelector } from 'react-redux'; const AddFile = (props) => { + const [value, setValue] = useState(null) const { i18n } = useSelector(state => state.session); + const [hasError, setHasError] = useState(value !== null && !value.length) + + const onChange = (e) => { + setValue(e.target.value) + } + + const save = () => { + if (!value) { + setHasError(true) + return; + } + props.save() + } + + const cancel = () => { + props.close() + } return (
    @@ -10,11 +28,12 @@ const AddFile = (props) => {

    {i18n['Create file']}

    - + + {hasError && {i18n['File name cannot be empty']}}
    - - + +
    ); diff --git a/src/react/src/components/Modal/Archive.jsx b/src/react/src/components/Modal/Archive.jsx index 1979f5eb9..2a621b75a 100644 --- a/src/react/src/components/Modal/Archive.jsx +++ b/src/react/src/components/Modal/Archive.jsx @@ -15,7 +15,7 @@ const Archive = (props) => {
    - +
    diff --git a/src/react/src/components/Modal/Modal.jsx b/src/react/src/components/Modal/Modal.jsx index ff71a69db..59c2dc6e2 100644 --- a/src/react/src/components/Modal/Modal.jsx +++ b/src/react/src/components/Modal/Modal.jsx @@ -1,4 +1,4 @@ -import React, { Component } from 'react'; +import React, { useEffect } from 'react'; import AddFile from './AddFile'; import AddDirectory from './AddDirectory'; import Rename from './Rename'; @@ -9,86 +9,83 @@ import Move from './Move'; import Archive from './Archive'; import Extract from './Extract'; import Copy from './Copy'; -import './Modal.scss'; import Replace from './Replace'; +import './Modal.scss'; -class Modal extends Component { +const Modal = (props) => { + useEffect(() => { + window.addEventListener("click", closeOutside); + document.addEventListener("keydown", hotkeys); - componentDidMount = () => { - window.addEventListener("click", this.closeOutside); - document.addEventListener("keydown", this.hotkeys); - } + return () => { + window.removeEventListener("click", closeOutside); + document.removeEventListener("keydown", hotkeys); + } + }, []) - componentWillUnmount = () => { - window.removeEventListener("click", this.closeOutside); - document.removeEventListener("keydown", this.hotkeys); - } - - hotkeys = (e) => { + const hotkeys = (e) => { if (e.keyCode === 27) { - this.closeModal(); + closeModal(); } else if (e.keyCode === 13) { - this.saveAndClose(); + saveAndClose(); } } - saveAndClose = () => { - this.props.onClick(); - this.props.onClose(); + const saveAndClose = () => { + props.onClick(); + props.onClose(); } - changePermissions = (permissions) => { - this.props.onChangePermissions(permissions); + const changePermissions = (permissions) => { + props.onChangePermissions(permissions); } - replace = (file) => { - this.props.onClick(file); - this.props.onClose(); + const replace = (file) => { + props.onClick(file); + props.onClose(); } - onChange = (e) => { - this.props.onChangeValue(e.target.value); + const onChange = (e) => { + props.onChangeValue(e.target.value); } - closeModal = () => { - this.props.onClose(); + const closeModal = () => { + props.onClose(); } - closeOutside = (e) => { + const closeOutside = (e) => { let modal = document.getElementById("modal"); if (e.target === modal) { - this.props.onClose(); + props.onClose(); } } - content = () => { - const { type, reference, fName, permissions, items, path, files, notAvailable } = this.props; + const content = () => { + const { type, reference, fName, permissions, items, path, files, notAvailable } = props; switch (type) { - case 'Copy': return ; - case 'Move': return ; - case 'Permissions': return ; - case 'Extract': return ; - case 'Archive': return ; - case 'Rename': return ; - case 'Add directory': return ; - case 'Delete': return ; - case 'Add file': return ; - case 'Replace': return this.replace(files)} files={files} /> - case 'Nothing selected': return ; + case 'Copy': return ; + case 'Move': return ; + case 'Permissions': return ; + case 'Extract': return ; + case 'Archive': return ; + case 'Rename': return ; + case 'Add directory': return ; + case 'Delete': return ; + case 'Add file': return ; + case 'Replace': return replace(files)} files={files} /> + case 'Nothing selected': return ; default: break; } } - render() { - return ( -
    - + return ( +
    + - ); - } +
    + ); } export default Modal; \ No newline at end of file diff --git a/src/react/src/components/Modal/Modal.scss b/src/react/src/components/Modal/Modal.scss index 8cd52ab8f..14737b5d0 100644 --- a/src/react/src/components/Modal/Modal.scss +++ b/src/react/src/components/Modal/Modal.scss @@ -1,15 +1,4 @@ -$whiteBackground: #ececec; -$primary: #2c54ac; -$primaryLight: #d7dcef; -$primaryActive: #1e5cb2; -$secondary: #fcac04; -$secondaryLight: #f8b014; -$danger: #b00e5b; -$secondaryActive: #fdb51c; -$hoverButtonText: #2c54ac; -$activeButtonText: #fff; -$textColor: #555; -$black: #000; +@import 'src/utils/scss/variables'; .modal { display: block; @@ -23,7 +12,7 @@ $black: #000; height: 100%; overflow: auto; background-color: $black; - background-color: rgba(0,0,0,0.4); + background-color: rgba(0, 0, 0, 0.4); .modal-content { box-shadow: 0 2px 11px 0 rgba(0, 0, 0, 0.5); @@ -36,10 +25,23 @@ $black: #000; margin-top: 100px; .modal-body { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; overflow-wrap: anywhere; font-size: 17px; margin-bottom: 40px; + small { + margin-top: 5px; + font-size: 13px; + + &.error { + color: red; + } + } + input { background: #333; border: 1px solid #111; @@ -55,6 +57,7 @@ $black: #000; word-break: break-word; h3 { + font-size: 20px; color: $secondaryLight; } @@ -77,7 +80,7 @@ $black: #000; border-color: none; background: none; text-transform: uppercase; - font-size: 12px; + font-size: 11px; &:focus { outline: none; @@ -109,7 +112,7 @@ $black: #000; border-color: $primaryLight; color: $hoverButtonText; } - + &:hover { background: $primaryActive; border-color: $primaryActive; @@ -117,7 +120,7 @@ $black: #000; } } } - + .header .quot { color: $secondaryActive; } @@ -155,17 +158,18 @@ $black: #000; right: 15px; } } - + .permissions { height: auto; width: 30%; margin-top: 0; - - .error, &:focus { + + .error, + &:focus { border: 1px solid red; } - input[type="text"] { + input[type='text'] { size: 40px; width: 60px; margin: auto auto 10px auto; @@ -200,4 +204,4 @@ $black: #000; } } } -} \ No newline at end of file +} diff --git a/src/react/src/components/Package/Add/AddPackage.scss b/src/react/src/components/Package/Add/AddPackage.scss index d312a70c6..b91b760d2 100644 --- a/src/react/src/components/Package/Add/AddPackage.scss +++ b/src/react/src/components/Package/Add/AddPackage.scss @@ -3,7 +3,7 @@ label.label-wrapper { display: flex; align-items: flex-end; - width: max-content; + width: fit-content; span { font-weight: normal; diff --git a/src/react/src/components/Package/Package.jsx b/src/react/src/components/Package/Package.jsx index 9a92efe56..f5dd9ae6c 100644 --- a/src/react/src/components/Package/Package.jsx +++ b/src/react/src/components/Package/Package.jsx @@ -9,6 +9,7 @@ import { useSelector } from 'react-redux'; const Package = props => { const { data } = props; const { i18n } = useSelector(state => state.session); + const { session } = useSelector(state => state.userSession); const printNameServers = servers => { let serversArray = servers.split(','); @@ -50,7 +51,7 @@ const Package = props => {
    {i18n['Web Template']}: {data.WEB_TEMPLATE}
    -
    {i18n['Proxy Template']}: {data.PROXY_TEMPLATE}
    + {session.PROXY_SYSTEM &&
    {i18n['Proxy Template']}: {data.PROXY_TEMPLATE}
    }
    {i18n['DNS Template']}: {data.DNS_TEMPLATE}
    {i18n['SSH Access']}: {data.SHELL}
    {i18n['Web Domains']}: {data.WEB_DOMAINS}
    diff --git a/src/react/src/components/Path/Path.jsx b/src/react/src/components/Path/Path.jsx index 9aab13622..9bd9ef06e 100644 --- a/src/react/src/components/Path/Path.jsx +++ b/src/react/src/components/Path/Path.jsx @@ -1,11 +1,17 @@ -import React from 'react'; +import React, { useEffect } from 'react'; import { useSelector } from 'react-redux'; +import { useHistory } from 'react-router'; import Dropdown from './Dropdown/Dropdown'; import './Path.scss'; const Path = ({ path, isActive, className, openDirectory, changeSorting, sorting, order }) => { const { user } = useSelector(state => state.menuCounters); + const history = useHistory(); + + useEffect(() => { + if (!user) return history.push('/login'); + }, [user]); const clickablePath = () => { let splitPath = path.split('/'); diff --git a/src/react/src/components/Path/Path.scss b/src/react/src/components/Path/Path.scss index a70cbe27b..efc3ae550 100644 --- a/src/react/src/components/Path/Path.scss +++ b/src/react/src/components/Path/Path.scss @@ -1,15 +1,4 @@ -$white: #fff; -$whiteBackground: #ececec; -$primary: #2c54ac; -$primaryLight: #d7dcef; -$primaryActive: #1e5cb2; -$secondary: #fcac04; -$secondaryLight: #f8b014; -$danger: #b00e5b; -$secondaryActive: #fdb51c; -$hoverButtonText: #2c54ac; -$activeButtonText: #fff; -$textColor: #555; +@import 'src/utils/scss/variables'; .path { display: flex; diff --git a/src/react/src/components/Preview/Preview.jsx b/src/react/src/components/Preview/Preview.jsx index 72511b25c..9bb8e5458 100644 --- a/src/react/src/components/Preview/Preview.jsx +++ b/src/react/src/components/Preview/Preview.jsx @@ -21,7 +21,7 @@ const Preview = (props) => { const hotkeys = e => { if (e.keyCode === 121) { - props.onClose(); + onClose(); } } diff --git a/src/react/src/components/ProgressBar/ProgressBar.jsx b/src/react/src/components/ProgressBar/ProgressBar.jsx index 6a712f406..a8f7f72b2 100644 --- a/src/react/src/components/ProgressBar/ProgressBar.jsx +++ b/src/react/src/components/ProgressBar/ProgressBar.jsx @@ -3,10 +3,10 @@ import './ProgressBar.scss'; const ProgressBar = (props) => { return ( -
    +
    ); } -export default ProgressBar; \ No newline at end of file +export default ProgressBar; diff --git a/src/react/src/components/ProgressBar/ProgressBar.scss b/src/react/src/components/ProgressBar/ProgressBar.scss index 3dd31fd47..13ca1dd86 100644 --- a/src/react/src/components/ProgressBar/ProgressBar.scss +++ b/src/react/src/components/ProgressBar/ProgressBar.scss @@ -1,13 +1,16 @@ -.spinner-wrapper .progress { - position: absolute; - top: 0; - z-index: 5; +.progress.upload { + position: fixed; + left: 0px; + top: 0px; + z-index: 9999; + height: 5px; + position: fixed; width: 100%; margin: 0; - height: 6px; display: inline-table; + background: transparent; .progress-bar { - height: 10px; + height: 5px; } -} \ No newline at end of file +} diff --git a/src/react/src/components/Server/Edit/Bind9/Bind9.scss b/src/react/src/components/Server/Edit/Bind9/Bind9.scss index 3762c0a66..612d1a073 100644 --- a/src/react/src/components/Server/Edit/Bind9/Bind9.scss +++ b/src/react/src/components/Server/Edit/Bind9/Bind9.scss @@ -1,7 +1,7 @@ .content .edit-template.edit-bind9 { .toolbar { .search-toolbar-name { - width: max-content; + width: fit-content; } } diff --git a/src/react/src/components/Server/Edit/Dovecot/Dovecot.scss b/src/react/src/components/Server/Edit/Dovecot/Dovecot.scss index 3762c0a66..612d1a073 100644 --- a/src/react/src/components/Server/Edit/Dovecot/Dovecot.scss +++ b/src/react/src/components/Server/Edit/Dovecot/Dovecot.scss @@ -1,7 +1,7 @@ .content .edit-template.edit-bind9 { .toolbar { .search-toolbar-name { - width: max-content; + width: fit-content; } } diff --git a/src/react/src/components/Server/Edit/EditBackupOption.jsx b/src/react/src/components/Server/Edit/EditBackupOption.jsx index 799b1ace9..948785603 100644 --- a/src/react/src/components/Server/Edit/EditBackupOption.jsx +++ b/src/react/src/components/Server/Edit/EditBackupOption.jsx @@ -12,7 +12,7 @@ const EditBackupOption = ({ data, visible }) => { return (
    { name="v_backup_dir" id="v-backup-dir" /> + + { - data.backup_remote_adv && ( - <> - + remoteBackup && ( +
    +
    - { - remoteBackup && ( - <> - + - + - + - + - - - ) - } - + +
    ) }
    diff --git a/src/react/src/components/Server/Edit/EditDatabaseOption.jsx b/src/react/src/components/Server/Edit/EditDatabaseOption.jsx index 85cfd80a0..447770c68 100644 --- a/src/react/src/components/Server/Edit/EditDatabaseOption.jsx +++ b/src/react/src/components/Server/Edit/EditDatabaseOption.jsx @@ -1,12 +1,12 @@ -import React, { useEffect, useState } from 'react'; +import React from 'react'; import SelectInput from 'src/components/ControlPanel/AddItemLayout/Form/SelectInput/SelectInput'; import TextInput from 'src/components/ControlPanel/AddItemLayout/Form/TextInput/TextInput'; -import Checkbox from 'src/components/ControlPanel/AddItemLayout/Form/Checkbox/Checkbox'; import { Link } from 'react-router-dom'; import { useSelector } from 'react-redux'; const EditDatabaseOption = ({ data, visible }) => { + const { DB_PMA_URL, DB_PGA_URL } = useSelector(state => state.userSession.session); const { i18n } = useSelector(state => state.session); const printPhpMyAdminHosts = () => { @@ -86,7 +86,7 @@ const EditDatabaseOption = ({ data, visible }) => { <> @@ -109,7 +109,7 @@ const EditDatabaseOption = ({ data, visible }) => { <> diff --git a/src/react/src/components/Server/Edit/EditMailOption.jsx b/src/react/src/components/Server/Edit/EditMailOption.jsx index e398a5958..fb5a2b260 100644 --- a/src/react/src/components/Server/Edit/EditMailOption.jsx +++ b/src/react/src/components/Server/Edit/EditMailOption.jsx @@ -7,6 +7,7 @@ import { Link } from 'react-router-dom'; import { useSelector } from 'react-redux'; const EditMailOption = ({ data, visible }) => { + const { MAIL_URL } = useSelector(state => state.userSession.session); const { i18n } = useSelector(state => state.session); const [mailCertificateSystem, setMailCertificateSystem] = useState(false); @@ -58,7 +59,7 @@ const EditMailOption = ({ data, visible }) => {

    diff --git a/src/react/src/components/Server/Edit/EditServer.jsx b/src/react/src/components/Server/Edit/EditServer.jsx index 38fa2ab88..23ea1cac1 100644 --- a/src/react/src/components/Server/Edit/EditServer.jsx +++ b/src/react/src/components/Server/Edit/EditServer.jsx @@ -73,6 +73,10 @@ const EditServer = props => { updatedServer[name] = value; } + if (updatedServer['v_backup_type']) { + updatedServer['v_backup_type'] = updatedServer['v_backup_type'].toLowerCase(); + } + updatedServer['save'] = 'save'; updatedServer['token'] = token; diff --git a/src/react/src/components/Server/Edit/EditServer.scss b/src/react/src/components/Server/Edit/EditServer.scss index 9f81ba41a..43a776ddf 100644 --- a/src/react/src/components/Server/Edit/EditServer.scss +++ b/src/react/src/components/Server/Edit/EditServer.scss @@ -1,14 +1,4 @@ -$whiteBackground: #ececec; -$primary: #2c54ac; -$primaryLight: #d7dcef; -$primaryActive: #1e5cb2; -$secondary: #fcac04; -$secondaryLight: #f8b014; -$danger: #b00e5b; -$secondaryActive: #fdb51c; -$hoverButtonText: #2c54ac; -$activeButtonText: #fff; -$textColor: #555; +@import 'src/utils/scss/variables'; .edit-server { .modules { @@ -121,7 +111,7 @@ $textColor: #555; padding: 7px 15px; text-transform: capitalize; text-decoration: none; - width: max-content; + width: fit-content; margin-right: 10px; &:hover { diff --git a/src/react/src/components/Server/Edit/EditVestaPlugins.jsx b/src/react/src/components/Server/Edit/EditVestaPlugins.jsx index fe54e486b..6b77b5f13 100644 --- a/src/react/src/components/Server/Edit/EditVestaPlugins.jsx +++ b/src/react/src/components/Server/Edit/EditVestaPlugins.jsx @@ -156,14 +156,14 @@ const EditVestaPluginsOption = ({ data, visible }) => { diff --git a/src/react/src/components/Server/Edit/Httpd/EditHttpd.scss b/src/react/src/components/Server/Edit/Httpd/EditHttpd.scss index b505efc81..bba176cc6 100644 --- a/src/react/src/components/Server/Edit/Httpd/EditHttpd.scss +++ b/src/react/src/components/Server/Edit/Httpd/EditHttpd.scss @@ -4,7 +4,7 @@ $secondaryLight: #f8b014; .content .edit-template.edit-httpd { .toolbar { .search-toolbar-name { - width: max-content; + width: fit-content; a { color: $secondary; @@ -17,7 +17,7 @@ $secondaryLight: #f8b014; } .link { - width: max-content; + width: fit-content; margin-left: 15px; a { diff --git a/src/react/src/components/Server/Edit/Mysql/Mysql.scss b/src/react/src/components/Server/Edit/Mysql/Mysql.scss index ef3cf4212..b53f1479a 100644 --- a/src/react/src/components/Server/Edit/Mysql/Mysql.scss +++ b/src/react/src/components/Server/Edit/Mysql/Mysql.scss @@ -1,7 +1,7 @@ .content .edit-template.edit-mysql { .toolbar { .search-toolbar-name { - width: max-content; + width: fit-content; } } diff --git a/src/react/src/components/Server/Edit/Nginx/EditServerNginx.scss b/src/react/src/components/Server/Edit/Nginx/EditServerNginx.scss index ab8a61224..56f469d02 100644 --- a/src/react/src/components/Server/Edit/Nginx/EditServerNginx.scss +++ b/src/react/src/components/Server/Edit/Nginx/EditServerNginx.scss @@ -3,11 +3,11 @@ $secondaryLight: #f8b014; .content .edit-template.edit-nginx { .toolbar { .search-toolbar-name { - width: max-content; + width: fit-content; } .link { - width: max-content; + width: fit-content; margin-left: 15px; a { diff --git a/src/react/src/components/Server/Edit/PHP/EditPhp.scss b/src/react/src/components/Server/Edit/PHP/EditPhp.scss index f5f2e4bb2..5ff39c738 100644 --- a/src/react/src/components/Server/Edit/PHP/EditPhp.scss +++ b/src/react/src/components/Server/Edit/PHP/EditPhp.scss @@ -5,13 +5,13 @@ $textColor: #555; .content .edit-template.edit-php { .toolbar { .search-toolbar-name { - width: max-content; + width: fit-content; color: $textColor; } .search-toolbar-name, .link { - width: max-content; + width: fit-content; a { text-decoration: none; diff --git a/src/react/src/components/Server/Edit/Postgresql/Postgresql.scss b/src/react/src/components/Server/Edit/Postgresql/Postgresql.scss index 99b572fa0..f27f28899 100644 --- a/src/react/src/components/Server/Edit/Postgresql/Postgresql.scss +++ b/src/react/src/components/Server/Edit/Postgresql/Postgresql.scss @@ -1,7 +1,7 @@ .content .edit-template.edit-pgsql { .toolbar { .search-toolbar-name { - width: max-content; + width: fit-content; } } diff --git a/src/react/src/components/Server/Edit/Service/Service.scss b/src/react/src/components/Server/Edit/Service/Service.scss index be1fcb7b8..a2ac8de06 100644 --- a/src/react/src/components/Server/Edit/Service/Service.scss +++ b/src/react/src/components/Server/Edit/Service/Service.scss @@ -1,7 +1,7 @@ .content .edit-template.edit-service { .toolbar { .search-toolbar-name { - width: max-content; + width: fit-content; } } diff --git a/src/react/src/components/Server/Server.jsx b/src/react/src/components/Server/Server.jsx index cc274d2c0..7717e37b6 100644 --- a/src/react/src/components/Server/Server.jsx +++ b/src/react/src/components/Server/Server.jsx @@ -19,6 +19,7 @@ const Server = props => { id={data.NAME} focused={data.FOCUSED} checked={data.isChecked} + stopped={data.STATE === 'stopped'} checkItem={checkItem}> diff --git a/src/react/src/components/Server/Server.scss b/src/react/src/components/Server/Server.scss index d55d8fd1d..ef58c837a 100644 --- a/src/react/src/components/Server/Server.scss +++ b/src/react/src/components/Server/Server.scss @@ -14,6 +14,16 @@ } } +.servers-wrapper .l-col { + display: flex; + align-items: center; + height: 55px; + + .checkbox { + margin: 0px; + } +} + .servers-wrapper .r-col { padding-left: 2rem; @@ -28,7 +38,7 @@ transform: translateX(-10px); } - .stats div>span { + .stats div > span { width: 100%; } -} \ No newline at end of file +} diff --git a/src/react/src/components/Spinner/Spinner.scss b/src/react/src/components/Spinner/Spinner.scss index 1f8248ce1..409a61c23 100644 --- a/src/react/src/components/Spinner/Spinner.scss +++ b/src/react/src/components/Spinner/Spinner.scss @@ -1,7 +1,7 @@ .spinner-wrapper { position: absolute; bottom: 5px; - width: 15%; + width: 150px; left: 42%; height: 10px; } diff --git a/src/react/src/components/Statistic/Statistic.jsx b/src/react/src/components/Statistic/Statistic.jsx index 663c99fb5..f87387a7e 100644 --- a/src/react/src/components/Statistic/Statistic.jsx +++ b/src/react/src/components/Statistic/Statistic.jsx @@ -35,8 +35,15 @@ const Statistic = props => {
    {printName(data.DATE)}
    -
    {i18n.Bandwidth} {data.U_BANDWIDTH}{i18n.mb}
    -
    {i18n.Disk}: {data.U_DISK}{i18n.mb}
    +
    + {i18n.Bandwidth} + {data.U_BANDWIDTH}{i18n.mb} +
    +
    +
    + {i18n.Disk}: {data.U_DISK}{i18n.mb} +
    +
    {i18n.Web}: {data.U_DISK_WEB}{i18n.mb}
    diff --git a/src/react/src/components/TopPanel/TopPanel.jsx b/src/react/src/components/TopPanel/TopPanel.jsx index f6d7e0dcd..378d17b8b 100644 --- a/src/react/src/components/TopPanel/TopPanel.jsx +++ b/src/react/src/components/TopPanel/TopPanel.jsx @@ -4,6 +4,7 @@ import { logout } from 'src/actions/Session/sessionActions'; import { useDispatch, useSelector } from 'react-redux'; import { Link, useHistory } from 'react-router-dom'; import Spinner from '../Spinner/Spinner'; +import PerfectScrollbar from 'react-perfect-scrollbar'; import './TopPanel.scss'; @@ -82,9 +83,10 @@ const TopPanel = ({ menuItems = [], extraMenuItems = [] }) => {
    - {renderMenuItems()} - - {renderExtraMenuItems()} + + {renderMenuItems()} + {renderExtraMenuItems()} +
    diff --git a/src/react/src/components/TopPanel/TopPanel.scss b/src/react/src/components/TopPanel/TopPanel.scss index 4009fe023..43944e77b 100644 --- a/src/react/src/components/TopPanel/TopPanel.scss +++ b/src/react/src/components/TopPanel/TopPanel.scss @@ -1,14 +1,4 @@ -$whiteBackground: #ececec; -$primary: #2c54ac; -$primaryLight: #d7dcef; -$primaryActive: #1e5cb2; -$secondary: #fcac04; -$secondaryLight: #f8b014; -$danger: #b00e5b; -$secondaryActive: #fdb51c; -$hoverButtonText: #2c54ac; -$activeButtonText: #fff; -$textColor: #555; +@import 'src/utils/scss/variables'; .panel-wrapper { .logo-img { @@ -26,6 +16,24 @@ $textColor: #555; } .left-menu { + justify-content: unset; + + .logo { + width: fit-content; + flex: unset; + } + + .scrollbar-container { + &:hover { + background: none; + } + + .nav-link { + flex: unset; + padding: 0 5px; + } + } + a, button { padding: 0 !important; outline: none; diff --git a/src/react/src/components/User/Add/AddUser.scss b/src/react/src/components/User/Add/AddUser.scss index 6552b9c5e..2be826318 100644 --- a/src/react/src/components/User/Add/AddUser.scss +++ b/src/react/src/components/User/Add/AddUser.scss @@ -1,14 +1,4 @@ -$whiteBackground: #ececec; -$primary: #2c54ac; -$primaryLight: #d7dcef; -$primaryActive: #1e5cb2; -$secondary: #fcac04; -$secondaryLight: #f8b014; -$danger: #b00e5b; -$secondaryActive: #fdb51c; -$hoverButtonText: #2c54ac; -$activeButtonText: #fff; -$textColor: #555; +@import 'src/utils/scss/variables'; .password-wrapper { display: flex; diff --git a/src/react/src/components/User/User.jsx b/src/react/src/components/User/User.jsx index 97d488618..83b037eed 100644 --- a/src/react/src/components/User/User.jsx +++ b/src/react/src/components/User/User.jsx @@ -1,16 +1,14 @@ import React from 'react'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -import { loginAs, logout } from 'src/actions/Session/sessionActions'; import Container from '../ControlPanel/Container/Container'; import ListItem from '../ControlPanel/ListItem/ListItem'; -import { useDispatch, useSelector } from 'react-redux'; +import { useSelector } from 'react-redux'; import { Link } from 'react-router-dom'; import './User.scss'; -const User = ({ data, toggleFav, handleModal, checkItem }) => { +const User = ({ data, toggleFav, handleModal, checkItem, logOut, logInAs }) => { const { i18n, userName } = useSelector(state => state.session); - const dispatch = useDispatch(); const printNameServers = servers => { let serversArray = servers.split(','); @@ -20,20 +18,12 @@ const User = ({ data, toggleFav, handleModal, checkItem }) => { ); } - const signInAs = username => { - dispatch(loginAs(username)); - } - - const signOut = () => { - dispatch(logout()); - } - const printLoginActionButton = user => { let currentUser = userName; if (currentUser === user) { return (
    -
    @@ -41,7 +31,7 @@ const User = ({ data, toggleFav, handleModal, checkItem }) => { } else { return (
    -
    @@ -86,16 +76,23 @@ const User = ({ data, toggleFav, handleModal, checkItem }) => {
    {data.FNAME} {data.LNAME}
    -
    {i18n.Bandwidth} {data.U_BANDWIDTH} {i18n.mb}
    -
    {i18n.Disk}: {data.U_DISK} {i18n.mb}
    +
    + {i18n.Bandwidth} + {data.U_BANDWIDTH} {data.U_BANDWIDTH_MEASURE} +
    +
    +
    + {i18n.Disk}: {data.U_DISK} {data.U_DISK_MEASURE} +
    +
    -
    {i18n.Web}: {data.U_DISK_WEB} {i18n.mb}
    -
    {i18n.Mail}: {data.U_DISK_MAIL} {i18n.mb}
    +
    {i18n.Web}: {data.U_DISK_WEB} {data.U_DISK_WEB_MEASURE}
    +
    {i18n.Mail}: {data.U_DISK_MAIL} {data.U_DISK_MAIL_MEASURE}
    -
    {i18n.Databases}: {data.U_DATABASES} {i18n.mb}
    -
    {i18n['User Directories']}: {data.U_DISK_DIRS} {i18n.mb}
    +
    {i18n.Databases}: {data.U_DATABASES} {data.U_DATABASES_MEASURE}
    +
    {i18n['User Directories']}: {data.U_DISK_DIRS} {data.U_DISK_DIRS_MEASURE}
    diff --git a/src/react/src/components/User/User.scss b/src/react/src/components/User/User.scss index 64fc1d460..82e730256 100644 --- a/src/react/src/components/User/User.scss +++ b/src/react/src/components/User/User.scss @@ -1,14 +1,4 @@ -$whiteBackground: #ececec; -$primary: #2c54ac; -$primaryLight: #d7dcef; -$primaryActive: #1e5cb2; -$secondary: #fcac04; -$secondaryLight: #f8b014; -$danger: #b00e5b; -$secondaryActive: #fdb51c; -$hoverButtonText: #2c54ac; -$activeButtonText: #fff; -$textColor: #555; +@import 'src/utils/scss/variables'; .checkbox { margin-bottom: 10px; @@ -39,7 +29,7 @@ $textColor: #555; span.stat.email{ display: block; - width: max-content; + width: fit-content; text-overflow: ellipsis; white-space: nowrap; overflow: hidden; @@ -75,6 +65,16 @@ span.stat.email{ justify-content: space-between; margin-bottom: 25px; border-bottom: 1px dotted gray; + position: relative; + + .percent { + position: absolute; + left: 0px; + bottom: -1px; + height: 2px; + background: $primary; + width: 0%; + } } .sub-disk-stats { @@ -201,8 +201,28 @@ span.stat.email{ svg { margin-left: 12px; } + + @media (max-width: 1066px) { + opacity: 1; + } + + @media (max-width: 850px) { + > div { + width: fit-content; + + a, button { + width: 100%; + } + } + } } .list-item.focused .r-col .name { color: $secondaryLight; -} \ No newline at end of file +} + +@media (max-width: 1066px) { + div.star div > svg { + opacity: 1 !important; + } +} diff --git a/src/react/src/components/WebDomain/Add/AddWebDomain.jsx b/src/react/src/components/WebDomain/Add/AddWebDomain.jsx index 1200bff38..d9b7fc12c 100644 --- a/src/react/src/components/WebDomain/Add/AddWebDomain.jsx +++ b/src/react/src/components/WebDomain/Add/AddWebDomain.jsx @@ -20,7 +20,8 @@ import { refreshCounters } from 'src/actions/MenuCounters/menuCounterActions'; import HtmlParser from 'react-html-parser'; const AddWebDomain = props => { - const { i18n, panel, userName } = useSelector(state => state.session); + const { i18n, userName } = useSelector(state => state.session); + const { panel } = useSelector(state => state.panel); const { session } = useSelector(state => state.userSession); const dispatch = useDispatch(); const token = localStorage.getItem("token"); @@ -40,6 +41,7 @@ const AddWebDomain = props => { webStats: [], prefixI18N: '', prePath: '', + aliases: '', proxy_ext: '', internetProtocols: [] }); @@ -99,7 +101,7 @@ const AddWebDomain = props => { } const onBlurChangeAliases = value => { - setState({ ...state, domain: value }); + setState({ ...state, aliases: `www.${value}`}); } const checkboxHandler = (input, checked) => { diff --git a/src/react/src/components/WebDomain/Add/AdditionalFtpForEditing/AdditionalFtpForEditing.jsx b/src/react/src/components/WebDomain/Add/AdditionalFtpForEditing/AdditionalFtpForEditing.jsx index 6c0467ccd..41524c87b 100644 --- a/src/react/src/components/WebDomain/Add/AdditionalFtpForEditing/AdditionalFtpForEditing.jsx +++ b/src/react/src/components/WebDomain/Add/AdditionalFtpForEditing/AdditionalFtpForEditing.jsx @@ -9,7 +9,7 @@ const AdditionalFtpForEditing = ({ domain, data = {}, onDeleteAdditionalFtp, pre const { i18n, userName } = useSelector(state => state.session); const [state, setState] = useState({ username: data.v_ftp_user || '', - path: '' + path: data.v_ftp_path || '', }); const renderForm = () => { @@ -32,8 +32,9 @@ const AdditionalFtpForEditing = ({ domain, data = {}, onDeleteAdditionalFtp, pre return (
    + - + {i18n.FTP} #{data.id + 1} @@ -67,17 +68,17 @@ const AdditionalFtpForEditing = ({ domain, data = {}, onDeleteAdditionalFtp, pre
    - + setState({ ...state, path: event.target.value })} + onChange={event => setState({ ...state, path: event.target.value.indexOf('/') !== 0 ? `/${event.target.value}` : event.target.value })} className="form-control" id={`path${data.id}`} name={`v_ftp_user[${data.id}][v_ftp_path]`} /> - {prePath} + {prePath}{state.path}
    { diff --git a/src/react/src/components/WebDomain/Add/SslSupport/SslSupport.jsx b/src/react/src/components/WebDomain/Add/SslSupport/SslSupport.jsx index 125e2ea81..8d9aa1a76 100644 --- a/src/react/src/components/WebDomain/Add/SslSupport/SslSupport.jsx +++ b/src/react/src/components/WebDomain/Add/SslSupport/SslSupport.jsx @@ -1,6 +1,5 @@ import React, { useState } from 'react'; import { useSelector } from 'react-redux'; -import { Link } from 'react-router-dom'; import TextArea from 'src/components/ControlPanel/AddItemLayout/Form/TextArea/TextArea'; import './SslSupport.scss'; @@ -30,7 +29,6 @@ const SslSupport = props => { id="ssl-certificate" name="v_ssl_crt" title={i18n['SSL Certificate']} - value={props.sslCertificate} disabled={letsEncrypt} optionalTitle={<>/ } /> diff --git a/src/react/src/components/WebDomain/Edit/SslSupport/SslSupport.scss b/src/react/src/components/WebDomain/Edit/SslSupport/SslSupport.scss index 288d308d9..fb0a9c773 100644 --- a/src/react/src/components/WebDomain/Edit/SslSupport/SslSupport.scss +++ b/src/react/src/components/WebDomain/Edit/SslSupport/SslSupport.scss @@ -1,11 +1,4 @@ -$whiteBackground: #ececec; -$primary: #2c54ac; -$primaryLight: #2e5bb1; -$primaryActive: #1e5cb2; -$secondary: #fcac04; -$secondaryLight: #f8b014; -$secondaryActive: #fdb51c; -$textColor: #555; +@import 'src/utils/scss/variables'; .edit-web { .ssl-support { @@ -20,7 +13,7 @@ $textColor: #555; } &:nth-child(2) { - width: max-content; + width: fit-content; } } } diff --git a/src/react/src/components/WebDomain/WebDomain.jsx b/src/react/src/components/WebDomain/WebDomain.jsx index c02ffb658..2c55a116f 100644 --- a/src/react/src/components/WebDomain/WebDomain.jsx +++ b/src/react/src/components/WebDomain/WebDomain.jsx @@ -72,13 +72,20 @@ export default function WebDomain(props) {
    {data.NAME}
    -
    {data.ALIAS}
    +
    {data.ALIAS.replace(/,/g, ', ')}
    {data.IP}
    -
    {i18n.Bandwidth} {data.U_BANDWIDTH_SIZE}{data.U_BANDWIDTH_MEASURE}
    -
    {i18n.Disk}: {data.U_DISK_SIZE}{data.U_DISK_MEASURE}
    +
    + {i18n.Bandwidth} + {data.U_BANDWIDTH_SIZE}{data.U_BANDWIDTH_MEASURE} +
    +
    +
    + {i18n.Disk}: {data.U_DISK_SIZE}{data.U_DISK_MEASURE} +
    +
    {i18n['Web Template']}: {data.TPL}
    diff --git a/src/react/src/components/WebDomain/WebDomain.scss b/src/react/src/components/WebDomain/WebDomain.scss index 0e1ee3b9d..42afea54e 100644 --- a/src/react/src/components/WebDomain/WebDomain.scss +++ b/src/react/src/components/WebDomain/WebDomain.scss @@ -19,12 +19,16 @@ .name { display: flex; - align-items: center; > div:nth-child(1) { margin-right: 2rem; } + > div + div { + line-height: 10px; + margin-top: .75rem; + } + .dns-name-span { font-style: italic; color: #858585; diff --git a/src/react/src/containers/App/App.js b/src/react/src/containers/App/App.js index 3be606931..fc06cf21a 100755 --- a/src/react/src/containers/App/App.js +++ b/src/react/src/containers/App/App.js @@ -106,7 +106,7 @@ const App = () => { exact component={Preview} /> div { + .l-col { + margin-top: 2rem; + padding-left: 5px; + } + + .r-col { + margin-top: 1rem; + .name { + margin-top: 2rem; + } + + .stats { + flex-wrap: wrap; + + > div { + margin: 1rem 0 !important; + padding: 0 !important; + width: 100% !important; + } + } + } + } + + .content .servers-list .servers-wrapper .l-col { + display: flex; + align-items: center; + height: 55px; + margin-top: .75rem; + + .checkbox { + margin: 0px; + } + } +} + +@media (max-width: 900px) { + .App div.content { + padding-top: 77px !important; + margin-top: 0 !important; + } + + .content > div { + .l-col { + padding-left: 5px; + } + + .r-col { + padding-left: 2rem; + } + } +} + +@media (max-width: 725px) { + .content { + .r-col { + padding-left: 3.5rem; + } + } +} diff --git a/src/react/src/containers/ControlPanelContent/ControlPanelContent.scss b/src/react/src/containers/ControlPanelContent/ControlPanelContent.scss index 1d24049f3..4a4495feb 100644 --- a/src/react/src/containers/ControlPanelContent/ControlPanelContent.scss +++ b/src/react/src/containers/ControlPanelContent/ControlPanelContent.scss @@ -1,14 +1,4 @@ -$whiteBackground: #ececec; -$primary: #2c54ac; -$primaryLight: #d7dcef; -$primaryActive: #1e5cb2; -$secondary: #fcac04; -$secondaryLight: #f8b014; -$danger: #b00e5b; -$secondaryActive: #fdb51c; -$hoverButtonText: #2c54ac; -$activeButtonText: #fff; -$textColor: #555; +@import 'src/utils/scss/variables'; .content { padding: 0 13%; @@ -29,9 +19,15 @@ $textColor: #555; } } -@media (max-width: 1000px) { +@media (max-width: 1066px) { .content { - padding: 5%; + padding: 5% 10%; + } +} + +@media (max-width: 900px) { + .content { + margin-top: 40px; } } @@ -114,3 +110,15 @@ $textColor: #555; } } } + +@media screen and (max-width: 1066px) { + .fixed-buttons > div:first-child { + display: none; + } +} + +@media screen and (max-width: 450px) { + .content { + padding: 5% 1%; + } +} diff --git a/src/react/src/containers/CronJobs/CronJobs.jsx b/src/react/src/containers/CronJobs/CronJobs.jsx index b2c1dbbd3..37cf952cc 100644 --- a/src/react/src/containers/CronJobs/CronJobs.jsx +++ b/src/react/src/containers/CronJobs/CronJobs.jsx @@ -175,7 +175,7 @@ const CronJobs = props => { cronFav: result.data.cron_fav, selection: [], toggledAll: false, - totalAmount: result.data.totalAmount + totalAmount: result.data.totalAmount, }); resolve(); }) @@ -385,7 +385,7 @@ const CronJobs = props => { handleAction(url) .then(res => { displayModal(res.data.message, ''); - fetchData(); + fetchData().then(() => setLoading(false)); }) .catch(err => console.error(err)); } diff --git a/src/react/src/containers/CronJobs/CronJobs.scss b/src/react/src/containers/CronJobs/CronJobs.scss index 09953fb68..8dda7f547 100644 --- a/src/react/src/containers/CronJobs/CronJobs.scss +++ b/src/react/src/containers/CronJobs/CronJobs.scss @@ -1,14 +1,4 @@ -$whiteBackground: #ececec; -$primary: #2c54ac; -$primaryLight: #d7dcef; -$primaryActive: #1e5cb2; -$secondary: #fcac04; -$secondaryLight: #f8b014; -$danger: #b00e5b; -$secondaryActive: #fdb51c; -$hoverButtonText: #2c54ac; -$activeButtonText: #fff; -$textColor: #555; +@import 'src/utils/scss/variables'; .r-menu { > div { diff --git a/src/react/src/containers/DNSRecords/DNSRecords.scss b/src/react/src/containers/DNSRecords/DNSRecords.scss index ca605aca2..f50a0545a 100644 --- a/src/react/src/containers/DNSRecords/DNSRecords.scss +++ b/src/react/src/containers/DNSRecords/DNSRecords.scss @@ -1,14 +1,4 @@ -$whiteBackground: #ececec; -$primary: #2c54ac; -$primaryLight: #d7dcef; -$primaryActive: #1e5cb2; -$secondary: #fcac04; -$secondaryLight: #f8b014; -$danger: #b00e5b; -$secondaryActive: #fdb51c; -$hoverButtonText: #2c54ac; -$activeButtonText: #fff; -$textColor: #555; +@import 'src/utils/scss/variables'; .dns-records { div.subtitle { diff --git a/src/react/src/containers/Databases/Databases.jsx b/src/react/src/containers/Databases/Databases.jsx index 1519de0e4..098484137 100644 --- a/src/react/src/containers/Databases/Databases.jsx +++ b/src/react/src/containers/Databases/Databases.jsx @@ -17,6 +17,7 @@ import Spinner from '../../components/Spinner/Spinner'; import './Databases.scss'; import { Helmet } from 'react-helmet'; import { refreshCounters } from 'src/actions/MenuCounters/menuCounterActions'; +import { Link } from 'react-router-dom'; const Databases = props => { const { i18n } = useSelector(state => state.session); @@ -35,6 +36,8 @@ const Databases = props => { toggledAll: false, dbAdmin: '', dbAdminLink: '', + db_myadmin_link: '', + db_pgadmin_link: '', sorting: i18n.Date, order: "descending", selection: [], @@ -174,6 +177,8 @@ const Databases = props => { databases: reformatData(result.data.data), dbAdmin: result.data.db_admin, dbAdminLink: result.data.db_admin_link, + db_myadmin_link: result.data.db_myadmin_link, + db_pgadmin_link: result.data.db_pgadmin_link, dbFav: result.data.dbFav, selection: [], toggledAll: false, @@ -387,7 +392,8 @@ const Databases = props => {
    - {state.dbAdmin} + {state.db_myadmin_link && phpMyAdmin} + {state.db_pgadmin_link && phpPgAdmin} diff --git a/src/react/src/containers/MailAccounts/MailAccounts.scss b/src/react/src/containers/MailAccounts/MailAccounts.scss index cfb4011f3..7ed611d06 100644 --- a/src/react/src/containers/MailAccounts/MailAccounts.scss +++ b/src/react/src/containers/MailAccounts/MailAccounts.scss @@ -1,4 +1,4 @@ -$primary: #2c54ac; +@import 'src/utils/scss/variables'; .mail-accounts { div.subtitle { @@ -17,7 +17,7 @@ $primary: #2c54ac; div.list-item { .r-col { .stat.email { - width: max-content; + width: fit-content; text-transform: none; } } diff --git a/src/react/src/containers/MailWrapper/MailWrapper.jsx b/src/react/src/containers/MailWrapper/MailWrapper.jsx index ba1f1bfa4..07dea0374 100644 --- a/src/react/src/containers/MailWrapper/MailWrapper.jsx +++ b/src/react/src/containers/MailWrapper/MailWrapper.jsx @@ -28,8 +28,8 @@ export default function MailWrapper(props) { { mailDomain - ? - : + ? + : } ); diff --git a/src/react/src/containers/Mails/Mails.jsx b/src/react/src/containers/Mails/Mails.jsx index 96ef1a6e6..f7e788c60 100644 --- a/src/react/src/containers/Mails/Mails.jsx +++ b/src/react/src/containers/Mails/Mails.jsx @@ -395,13 +395,13 @@ const Mails = props => {
    - {i18n['open webmail']} - + } props.changeSearchTerm(term)} /> diff --git a/src/react/src/containers/ServiceInfo/index.jsx b/src/react/src/containers/ServiceInfo/index.jsx index 6c169ea4b..f6b9fe2df 100644 --- a/src/react/src/containers/ServiceInfo/index.jsx +++ b/src/react/src/containers/ServiceInfo/index.jsx @@ -2,7 +2,7 @@ import React, { useEffect, useState } from 'react'; import { addActiveElement } from 'src/actions/MainNavigation/mainNavigationActions'; import TopPanel from 'src/components/TopPanel/TopPanel'; -import { useParams, useHistory } from 'react-router-dom'; +import { useHistory } from 'react-router-dom'; import { useDispatch, useSelector } from 'react-redux'; import { getServiceLogs } from 'src/ControlPanelService/Server'; @@ -11,13 +11,12 @@ import { Helmet } from 'react-helmet'; import ReactHtmlParser from 'react-html-parser'; import './styles.scss'; +import QueryString from 'qs'; const ServiceInfo = () => { const { i18n, userName } = useSelector(state => state.session); const dispatch = useDispatch(); - const { activeElement } = useSelector(state => state.mainNavigation); const history = useHistory(); - const { service } = useParams(); const [state, setState] = useState({ data: "", loading: false @@ -30,14 +29,28 @@ const ServiceInfo = () => { }, [userName]); useEffect(() => { - fetchData(); - dispatch(addActiveElement(`/list/server/${service}`)); - }, [activeElement]); + let queryParams = QueryString.parse(history.location.search, { ignoreQueryPrefix: true }); - const fetchData = () => { + if (!queryParams.srv) { + fetchData('cpu'); + dispatch(addActiveElement('/list/server/service/?srv=cpu')); + return; + } + + if (!menuItems.find(item => item.service === queryParams.srv)) { + dispatch(addActiveElement('/list/server/service/?srv=cpu')); + history.push('/list/server/service/?srv=cpu'); + return; + } + + fetchData(queryParams.srv); + dispatch(addActiveElement(`/list/server/service/?srv=${queryParams.srv}`)); + }, [history.location.search]); + + const fetchData = serviceName => { setState({ ...state, loading: true }); - getServiceLogs(service) + getServiceLogs(serviceName) .then(result => { setState({ ...state, data: result.data.service_log, loading: false }); }) @@ -49,35 +62,43 @@ const ServiceInfo = () => { const menuItems = [ { - route: '/list/server/cpu', + route: '/list/server/service/?srv=cpu', + service: 'cpu', name: i18n['CPU'] }, { - route: '/list/server/mem', + route: '/list/server/service/?srv=mem', + service: 'mem', name: i18n['MEMORY'] }, { - route: '/list/server/disk', + route: '/list/server/service/?srv=disk', + service: 'disk', name: i18n['DISK'] }, { - route: '/list/server/net', + route: '/list/server/service/?srv=net', + service: 'net', name: i18n['NETWORK'] }, { - route: '/list/server/web', + route: '/list/server/service/?srv=web', + service: 'web', name: i18n['WEB'] }, { - route: '/list/server/dns', + route: '/list/server/service/?srv=dns', + service: 'dns', name: i18n['DNS'] }, { - route: '/list/server/mail', + route: '/list/server/service/?srv=mail', + service: 'mail', name: i18n['MAIL'] }, { - route: '/list/server/db', + route: '/list/server/service/?srv=db', + service: 'db', name: i18n['DB'] } ]; @@ -93,7 +114,7 @@ const ServiceInfo = () => { state.loading ? : (
    -              {state.data.length && state.data.map(line => (<>{ReactHtmlParser(line)}
    ))} + {state.data && ReactHtmlParser(state.data)}
    ) }
    diff --git a/src/react/src/containers/ServiceInfo/styles.scss b/src/react/src/containers/ServiceInfo/styles.scss index 64d26c5e0..ea27fc579 100644 --- a/src/react/src/containers/ServiceInfo/styles.scss +++ b/src/react/src/containers/ServiceInfo/styles.scss @@ -1,7 +1,36 @@ -.service-info { +.App .service-info { + @media screen and (max-width: 1066px) { + .top-panel { + display: flex; + } + } + + @media screen and (min-width: 1200px) { + .top-panel { + padding: 0 13%; + } + } + .content { font-size: 14px; color: #555; padding-top: 4rem; + + @media screen and (min-width: 1067px) { + padding-top: 5rem !important; + margin-top: 0px !important; + } + + @media screen and (max-width: 1066px) { + padding-top: 5rem !important; + margin-top: 0px !important; + } + + table { + td,th { + padding: 5px 10px; + border: 1px solid black; + } + } } } diff --git a/src/react/src/containers/Users/Users.jsx b/src/react/src/containers/Users/Users.jsx index 71b5fbf9e..8acacf2b4 100644 --- a/src/react/src/containers/Users/Users.jsx +++ b/src/react/src/containers/Users/Users.jsx @@ -18,6 +18,7 @@ import { Helmet } from 'react-helmet'; import './Users.scss'; import { refreshCounters } from 'src/actions/MenuCounters/menuCounterActions'; import { useHistory } from 'react-router'; +import { loginAs, logout } from 'src/actions/Session/sessionActions'; const Users = props => { const { userName, i18n } = useSelector(state => state.session); @@ -248,10 +249,20 @@ const Users = props => { let sortedResult = sortArray(users); return sortedResult.map((item, index) => { - return ; + return ; }); } + const logOutHandler = () => { + setLoading(true); + dispatch(logout()).then(() => setLoading(false)); + } + + const logInAsHandler = username => { + setLoading(true); + dispatch(loginAs(username)).then(() => setLoading(false)); + } + const checkItem = name => { const { selection, users } = state; let duplicate = [...selection]; diff --git a/src/react/src/containers/Web/Web.jsx b/src/react/src/containers/Web/Web.jsx index f16838b66..fb8c427a6 100644 --- a/src/react/src/containers/Web/Web.jsx +++ b/src/react/src/containers/Web/Web.jsx @@ -17,12 +17,16 @@ import { useDispatch, useSelector } from 'react-redux'; import { Helmet } from 'react-helmet'; import './Web.scss'; import { refreshCounters } from 'src/actions/MenuCounters/menuCounterActions'; +import { useHistory } from 'react-router-dom'; const Web = props => { const { i18n } = useSelector(state => state.session); const { controlPanelFocusedElement } = useSelector(state => state.controlPanelContent); const { focusedElement } = useSelector(state => state.mainNavigation); + const { panel } = useSelector(state => state.panel); + const { userName } = useSelector(state => state.session); const dispatch = useDispatch(); + const history = useHistory(); const [loading, setLoading] = useState(false); const [modal, setModal] = useState({ text: '', @@ -40,6 +44,10 @@ const Web = props => { }); useEffect(() => { + if (panel[userName]['WEB_DOMAINS'] === '0') { + return history.push('/'); + } + dispatch(addActiveElement('/list/web/')); dispatch(removeFocusedElement()); dispatch(removeControlPanelContentFocusedElement()); diff --git a/src/react/src/containers/WebLogs/WebLogs.jsx b/src/react/src/containers/WebLogs/WebLogs.jsx index a83ef0370..d97193159 100644 --- a/src/react/src/containers/WebLogs/WebLogs.jsx +++ b/src/react/src/containers/WebLogs/WebLogs.jsx @@ -10,6 +10,7 @@ import './WebLogs.scss'; import { getWebLogs } from 'src/ControlPanelService/WebLogs'; import Spinner from 'src/components/Spinner/Spinner'; import { Helmet } from 'react-helmet'; +import HtmlParser from 'react-html-parser'; export default function WebLogs() { const { i18n, userName } = useSelector(state => state.session); @@ -19,6 +20,7 @@ export default function WebLogs() { const [domain, setDomain] = useState(); const [state, setState] = useState({ data: "", + prefix: "", loading: false }); @@ -40,7 +42,7 @@ export default function WebLogs() { let uri = `/list/web-log/?domain=${domain}&type=${type}`; fetchData(uri); - dispatch(addActiveElement(`/list/web-log/${type}`)); + dispatch(addActiveElement(`/list/web-log/?domain=${domain}&type=${type}`)); }, [mainNavigation.activeElement]); const fetchData = uri => { @@ -52,7 +54,7 @@ export default function WebLogs() { getWebLogs(uri) .then(result => { if (result.data) { - setState({ ...state, data: result.data.data, loading: false }); + setState({ ...state, data: result.data.data, prefix: result.data.prefix, loading: false }); } }) .catch(error => { @@ -92,12 +94,14 @@ export default function WebLogs() {
    +
    {state.prefix}
    +
    { state.loading ? : (
    -                {state.data}
    +                {HtmlParser(state.data)}
                   
    ) } diff --git a/src/react/src/containers/WebLogs/WebLogs.scss b/src/react/src/containers/WebLogs/WebLogs.scss index 7c0ee04ee..f00f61bc0 100644 --- a/src/react/src/containers/WebLogs/WebLogs.scss +++ b/src/react/src/containers/WebLogs/WebLogs.scss @@ -1,12 +1,30 @@ -.web-logs { - .content { - padding: 50px 10px 0; - color: #7d7d7d; - font-size: 20px; +.App .web-logs { + .top-panel { + .left-menu { + .logo { + justify-content: start; + margin: 0; + + a { + padding: 0 !important; + } + } + } } - .nav-link:nth-child(3), - .nav-link:nth-child(4) { - width: 9rem; + .content { + font-size: 14px; + color: #555; + padding-top: 4rem; + + @media screen and (min-width: 1067px) { + padding-top: 5rem !important; + margin-top: 0px !important; + } + + @media screen and (max-width: 1066px) { + padding-top: 5rem !important; + margin-top: 0px !important; + } } -} \ No newline at end of file +} diff --git a/src/react/src/reducers/Notification/notificationReducer.js b/src/react/src/reducers/Notification/notificationReducer.js index c15f96a53..0e3a269eb 100644 --- a/src/react/src/reducers/Notification/notificationReducer.js +++ b/src/react/src/reducers/Notification/notificationReducer.js @@ -1,7 +1,7 @@ import { ADD_NOTIFICATIONS, REMOVE_NOTIFICATIONS } from 'src/actions/Notification/notificationTypes'; const INITIAL_STATE = { - notifications: null + notifications: [] }; const notificationReducer = (state = INITIAL_STATE, action) => { diff --git a/src/react/src/reducers/Panel/panel.js b/src/react/src/reducers/Panel/panel.js new file mode 100644 index 000000000..36ee5b39e --- /dev/null +++ b/src/react/src/reducers/Panel/panel.js @@ -0,0 +1,19 @@ +import { REFRESH_PANEL } from '../../actions/Panel/panelTypes'; + +const INITIAL_STATE = { + panel: {} +}; + +const panelReducer = (state = INITIAL_STATE, action) => { + switch (action.type) { + case REFRESH_PANEL: + return { + ...state, + panel: action.value.panel + }; + + default: return state; + } +}; + +export default panelReducer; diff --git a/src/react/src/reducers/Session/sessionReducer.js b/src/react/src/reducers/Session/sessionReducer.js index 5c82c6c24..c05888534 100644 --- a/src/react/src/reducers/Session/sessionReducer.js +++ b/src/react/src/reducers/Session/sessionReducer.js @@ -4,8 +4,7 @@ const INITIAL_STATE = { token: '', error: '', i18n: {}, - userName: '', - panel: {} + userName: '' }; const sessionReducer = (state = INITIAL_STATE, action) => { @@ -16,7 +15,6 @@ const sessionReducer = (state = INITIAL_STATE, action) => { token: action.value.token, userName: action.value.userName, i18n: action.value.i18n || {}, - panel: action.value.panel, error: action.value.error }; @@ -26,7 +24,6 @@ const sessionReducer = (state = INITIAL_STATE, action) => { token: action.value.token, userName: action.value.userName, i18n: action.value.i18n || {}, - panel: action.value.panel, error: action.value.error }; @@ -36,7 +33,6 @@ const sessionReducer = (state = INITIAL_STATE, action) => { token: action.value.token, userName: action.value.userName, i18n: action.value.i18n || {}, - panel: action.value.panel, error: action.value.error }; @@ -45,7 +41,6 @@ const sessionReducer = (state = INITIAL_STATE, action) => { token: action.value.token, userName: action.value.userName, i18n: action.value.i18n || {}, - panel: action.value.panel, error: action.value.error }; diff --git a/src/react/src/reducers/rootReducer.js b/src/react/src/reducers/rootReducer.js index 6fc6ce145..c3fde2017 100644 --- a/src/react/src/reducers/rootReducer.js +++ b/src/react/src/reducers/rootReducer.js @@ -5,6 +5,7 @@ import notificationReducer from './Notification/notificationReducer'; import menuCounterReducer from './MenuCounters/menuCounterReducer'; import userSessionReducer from './UserSession/userSessionReducer'; import sessionReducer from './Session/sessionReducer'; +import panelReducer from './Panel/panel'; export default combineReducers({ mainNavigation: mainNavigationReducer, @@ -13,4 +14,5 @@ export default combineReducers({ menuCounters: menuCounterReducer, userSession: userSessionReducer, session: sessionReducer, + panel: panelReducer, }); \ No newline at end of file diff --git a/src/react/src/utils/scss/_breakpoints.scss b/src/react/src/utils/scss/_breakpoints.scss new file mode 100644 index 000000000..8b6d4eddc --- /dev/null +++ b/src/react/src/utils/scss/_breakpoints.scss @@ -0,0 +1,11 @@ +$phoneMin: 320px; +$phoneMax: 480px; + +$tabletMin: 481px; +$tabletMax: 768px; + +$smallScreenMin: 769px; +$smallScreenMax: 1024px; + +$desktopMin: 1025px; +$desktopMax: 1200px; diff --git a/src/react/src/utils/scss/_variables.scss b/src/react/src/utils/scss/_variables.scss new file mode 100644 index 000000000..8180b8582 --- /dev/null +++ b/src/react/src/utils/scss/_variables.scss @@ -0,0 +1,13 @@ +$whiteBackground: #ececec; +$primary: #2c54ac; +$primaryLight: #d7dcef; +$primaryActive: #1e5cb2; +$secondary: #fcac04; +$secondaryLight: #f8b014; +$secondaryActive: #fdb51c; +$hoverButtonText: #2c54ac; +$activeButtonText: #fff; +$textColor: #555; +$danger: #b00e5b; +$black: #000; +$white: #fff; diff --git a/src/rpm/specs/vesta.spec b/src/rpm/specs/vesta.spec index d6b33dfd1..c1f7163e2 100644 --- a/src/rpm/specs/vesta.spec +++ b/src/rpm/specs/vesta.spec @@ -1,6 +1,6 @@ Name: vesta Version: 1.0.0 -Release: 4 +Release: 7 Summary: Vesta Control Panel Group: System Environment/Base License: GPL @@ -70,16 +70,27 @@ fi %config(noreplace) %{_vestadir}/web/css/uploadify.css %changelog -* Mon Sep 30 2021 Serghey Rodin - 1.0.0-4 +* Wed Oct 12 2022 Serghey Rodin - 1.0.0-7 +- Frontend bugfixes +- Bugfixes +- Security fixes + +* Fri Feb 25 2022 Serghey Rodin - 1.0.0-6 +- Frontend bugfixes + +* Mon Nov 22 2021 Serghey Rodin - 1.0.0-5 +- Bugfixes + +* Mon Nov 1 2021 Serghey Rodin - 1.0.0-4 - Merge pull request #2128 to fix LE related issues in UI -* Sun Sep 31 2021 Serghey Rodin - 1.0.0-3 +* Sun Oct 31 2021 Serghey Rodin - 1.0.0-3 - Merge pull request #2108 and #2109 -* Sat Sep 30 2021 Serghey Rodin - 1.0.0-2 +* Sat Oct 30 2021 Serghey Rodin - 1.0.0-2 - Merge pull request #2074 from mix5003/fix-fi -* Sat Sep 30 2021 Serghey Rodin - 1.0.0-1 +* Sat Oct 30 2021 Serghey Rodin - 1.0.0-1 - Modern Web UI based on React - Bugfixes diff --git a/web/api/v1/add/ip/index.php b/web/api/v1/add/ip/index.php index 39a2959af..0f3cf412e 100644 --- a/web/api/v1/add/ip/index.php +++ b/web/api/v1/add/ip/index.php @@ -7,6 +7,8 @@ $TAB = 'IP'; header('Content-Type: application/json'); include($_SERVER['DOCUMENT_ROOT']."/inc/main.php"); +// var_dump($_SESSION['user']); + // Check user if ($_SESSION['user'] != 'admin') { exit; diff --git a/web/api/v1/add/mail/index.php b/web/api/v1/add/mail/index.php index 8f5899587..428cbb1bd 100644 --- a/web/api/v1/add/mail/index.php +++ b/web/api/v1/add/mail/index.php @@ -172,6 +172,7 @@ if (!empty($_POST['ok_acc'])) { if (!empty($_SESSION['MAIL_URL'])) $webmail = $_SESSION['MAIL_URL']; } + // Email login credentials if ((!empty($v_send_email)) && (empty($_SESSION['error_msg']))) { $to = $v_send_email; diff --git a/web/api/v1/add/web/index.php b/web/api/v1/add/web/index.php index a0036367f..8b76cafcf 100644 --- a/web/api/v1/add/web/index.php +++ b/web/api/v1/add/web/index.php @@ -361,7 +361,7 @@ unset($output); $result = array( 'prefix' => __('Prefix will be automaticaly added to username',$user."_"), - 'ftp_pre_path' => $v_ftp_user_prepath, + 'ftp_pre_path' => '', 'ftp_email' => $v_ftp_email, 'stats' => $stats, 'proxy_ext' => 'jpeg, jpg, png, gif, bmp, ico, svg, tif, tiff, css, js, htm, html, ttf, otf, webp, woff, txt, csv, rtf, doc, docx, xls, xlsx, ppt, pptx, odf, odp, ods, odt, pdf, psd, ai, eot, eps, ps, zip, tar, tgz, gz, rar, bz2, 7z, aac, m4a, mp3, mp4, ogg, wav, wma, 3gp, avi, flv, m4v, mkv, mov, mp4, mpeg, mpg, wmv, exe, iso, dmg, swf', diff --git a/web/api/v1/edit/package/index.php b/web/api/v1/edit/package/index.php index c16ef4bdb..d890fa511 100644 --- a/web/api/v1/edit/package/index.php +++ b/web/api/v1/edit/package/index.php @@ -260,7 +260,9 @@ $result = array( 'web_system' => $_SESSION['WEB_SYSTEM'], 'web_backend' => $_SESSION['WEB_BACKEND'], 'proxy_system' => $_SESSION['PROXY_SYSTEM'], - 'dns_system' => $_SESSION['DNS_SYSTEM'] + 'dns_system' => $_SESSION['DNS_SYSTEM'], + 'error_msg' => $_SESSION['error_msg'], + 'ok_msg' => $_SESSION['ok_msg'] ); echo json_encode($result); diff --git a/web/api/v1/edit/server/index.php b/web/api/v1/edit/server/index.php index b9edd765e..77a443255 100644 --- a/web/api/v1/edit/server/index.php +++ b/web/api/v1/edit/server/index.php @@ -15,6 +15,9 @@ if ($_SESSION['user'] != 'admin') { // Get server hostname $v_hostname = exec('hostname'); +// Get server port +$port = $_SERVER['SERVER_PORT']; + // List available timezones and get current one $v_timezones = list_timezones(); exec (VESTA_CMD."v-get-sys-timezone", $output, $return_var); @@ -58,6 +61,7 @@ $v_pgsql = count($v_pgsql_hosts) ? 'yes' : 'no'; unset($db_hosts); // List backup settings +$v_backup_remote_adv="yes"; $v_backup_dir = "/backup"; if (!empty($_SESSION['BACKUP'])) $v_backup_dir = $_SESSION['BACKUP']; $v_backup_gzip = '5'; @@ -595,6 +599,14 @@ if (!empty($_POST['save'])) { } } + // Change port + if ((!empty($_POST['port'])) && ($port != $_POST['port'])) { + exec (VESTA_CMD."v-change-vesta-port ".escapeshellarg($_POST['port']), $output, $return_var); + check_return_code($return_var,$output); + unset($output); + $port = $_POST['port']; + } + } // Check system configuration @@ -615,6 +627,7 @@ $result = array( 'hostname' => $v_hostname, 'timezones' => $v_timezones, 'timezone' => $v_timezone, + 'port' => $port, 'languages' => $languages, 'backup_adv' => $v_backup_adv, 'backup_remote_adv' => $v_backup_remote_adv, @@ -626,7 +639,6 @@ $result = array( 'mail_url' => $_SESSION['MAIL_URL'], 'pgsql_url' => $_SESSION['DB_PGA_URL'], 'mail_certificate' => $_SESSION['MAIL_CERTIFICATE'], - 'db_pma_url' => $_SESSION['DB_PMA_URL'], 'dns_system' => $_SESSION['DNS_SYSTEM'], 'web_system' => $_SESSION['WEB_SYSTEM'], 'softaculous' => $_SESSION['SOFTACULOUS'], @@ -654,7 +666,7 @@ $result = array( 'v_dns_cluster' => $v_dns_cluster, 'db_hosts' => $db_hosts, 'mysql_hosts' => $v_mysql_hosts, - 'mysql' => $mysql, + 'mysql' => $v_mysql, 'pgsql_hosts' => $v_pgsql_hosts, 'pgsql' => $v_pgsql, 'protocols' => [ __('ftp'), __('sftp') ], diff --git a/web/api/v1/edit/server/test.php b/web/api/v1/edit/server/test.php new file mode 100644 index 000000000..a76682b4a --- /dev/null +++ b/web/api/v1/edit/server/test.php @@ -0,0 +1,18 @@ + $value) { ++$i; + $data[$key]['U_DISK_PERCENT'] = get_percentage($data[$key]['U_DISK'],$panel[$user]['DISK_QUOTA']); + if ( $i == 1) { $total_amount = __('1 database'); } else { @@ -72,6 +74,8 @@ $object->user = $user; $object->panel = $panel; $object->db_admin = $db_admin; $object->db_admin_link = $db_admin_link; +$object->db_myadmin_link = $db_myadmin_link; +$object->db_pgadmin_link = $db_pgadmin_link; $object->totalAmount = $total_amount; $object->databases = $databases; $object->dbFav = $_SESSION['favourites']['DB']; diff --git a/web/api/v1/list/mail/index.php b/web/api/v1/list/mail/index.php index 8d6c59126..11dfbbaec 100644 --- a/web/api/v1/list/mail/index.php +++ b/web/api/v1/list/mail/index.php @@ -35,6 +35,12 @@ top_panel(empty($_SESSION['look']) ? $_SESSION['user'] : $_SESSION['look'], $TAB foreach ($data as $key => $value) { ++$i; + if (empty($_GET['domain'])){ + $data[$key]['U_DISK_PERCENT'] = get_percentage($data[$key]['U_DISK'], $data[$key]['QUOTA']); + } else { + $data[$key]['U_DISK_PERCENT'] = get_percentage($data[$key]['U_DISK'], $panel[$user]['DISK_QUOTA']); + } + list($http_host, $port) = explode(':', $_SERVER["HTTP_HOST"].":"); $webmail = "/webmail/"; if (!empty($_SESSION['MAIL_URL'])) $webmail = $_SESSION['MAIL_URL']; @@ -54,15 +60,23 @@ foreach ($data as $key => $value) { } if (empty($_GET['domain'])){ - $total_amount = $i === 1 ? __('1 domain') : __('%s domains', $i); + $total_amount = $i == 1 ? __('1 domain') : __('%s domains', $i); } else { - $total_amount = $i === 1 ? __('1 mail account') : __('%s mail account', $i); + $total_amount = $i == 1 ? __('1 mail account') : __('%s mail account', $i); } $data[$key]['list_accounts_button'] = __('list accounts', $data[$key]['ACCOUNTS']); $data[$key]['delete_conf'] = __('DELETE_DOMAIN_CONFIRMATION', $key); } +if (count($data) == 0) { + if (empty($_GET['domain'])){ + $total_amount = __('%s domains', 0); + } else { + $total_amount = __('%s mail account', 0); + } +} + // Back uri $_SESSION['back'] = $_SERVER['REQUEST_URI']; diff --git a/web/api/v1/list/server/index.php b/web/api/v1/list/server/index.php index 47363fcae..dd2cabace 100644 --- a/web/api/v1/list/server/index.php +++ b/web/api/v1/list/server/index.php @@ -17,57 +17,52 @@ if ($_SESSION['user'] != 'admin') { if (isset($_GET['cpu'])) { $TAB = 'CPU'; exec (VESTA_CMD.'v-list-sys-cpu-status', $output, $return_var); - $service_log = $output; } // Memory info if (isset($_GET['mem'])) { $TAB = 'MEMORY'; exec (VESTA_CMD.'v-list-sys-memory-status', $output, $return_var); - $service_log = $output; } // Disk info if (isset($_GET['disk'])) { $TAB = 'DISK'; exec (VESTA_CMD.'v-list-sys-disk-status', $output, $return_var); - $service_log = $output; } // Network info if (isset($_GET['net'])) { $TAB = 'NETWORK'; exec (VESTA_CMD.'v-list-sys-network-status', $output, $return_var); - $service_log = $output; } // Web info if (isset($_GET['web'])) { $TAB = 'WEB'; exec (VESTA_CMD.'v-list-sys-web-status', $output, $return_var); - $service_log = $output; } - // DNS info if (isset($_GET['dns'])) { $TAB = 'DNS'; exec (VESTA_CMD.'v-list-sys-dns-status', $output, $return_var); - $service_log = $output; } // Mail info if (isset($_GET['mail'])) { $TAB = 'MAIL'; exec (VESTA_CMD.'v-list-sys-mail-status', $output, $return_var); - $service_log = $output; } // DB info if (isset($_GET['db'])) { $TAB = 'DB'; exec (VESTA_CMD.'v-list-sys-db-status', $output, $return_var); - $service_log = $output; +} + +foreach($output as $file) { + $service_log .= $file . "\n"; } // Data diff --git a/web/api/v1/list/stats/index.php b/web/api/v1/list/stats/index.php index 9053d9227..480757720 100644 --- a/web/api/v1/list/stats/index.php +++ b/web/api/v1/list/stats/index.php @@ -35,6 +35,9 @@ if ($user == 'admin') { foreach ($data as $key => $value) { ++$i; + $data[$key]['U_BANDWIDTH_PERCENT'] = get_percentage($data[$key]['U_BANDWIDTH'],$data[$key]['BANDWIDTH']); + $data[$key]['U_DISK_PERCENT'] = get_percentage($data[$key]['U_DISK'],$data[$key]['DISK_QUOTA']); + if ( $i == 1) { $total_amount = __('1 month'); } else { diff --git a/web/api/v1/list/user/index.php b/web/api/v1/list/user/index.php index eb202cd80..01a1fe6c0 100644 --- a/web/api/v1/list/user/index.php +++ b/web/api/v1/list/user/index.php @@ -27,6 +27,27 @@ foreach ($data as $key => $value) { } else { $total_amount = __('%s accounts', $i); } + + $data[$key]['U_BANDWIDTH_PERCENT'] = get_percentage($data[$key]['U_BANDWIDTH'],$data[$key]['BANDWIDTH']); + $data[$key]['U_DISK_PERCENT'] = get_percentage($data[$key]['U_DISK'],$data[$key]['DISK_QUOTA']); + + $data[$key]['U_BANDWIDTH_MEASURE'] = humanize_usage_measure($data[$key]['U_BANDWIDTH']); + $data[$key]['U_BANDWIDTH'] = humanize_usage_size($data[$key]['U_BANDWIDTH']); + + $data[$key]['U_DISK_MEASURE'] = humanize_usage_measure($data[$key]['U_DISK']); + $data[$key]['U_DISK'] = humanize_usage_size($data[$key]['U_DISK']); + + $data[$key]['U_DISK_WEB_MEASURE'] = humanize_usage_measure($data[$key]['U_DISK_WEB']); + $data[$key]['U_DISK_WEB'] = humanize_usage_size($data[$key]['U_DISK_WEB']); + + $data[$key]['U_DISK_DB_MEASURE'] = humanize_usage_measure($data[$key]['U_DISK_DB']); + $data[$key]['U_DISK_DB'] = humanize_usage_size($data[$key]['U_DISK_DB']); + + $data[$key]['U_DISK_MAIL_MEASURE'] = humanize_usage_measure($data[$key]['U_DISK_MAIL']); + $data[$key]['U_DISK_MAIL'] = humanize_usage_size($data[$key]['U_DISK_MAIL']); + + $data[$key]['U_DISK_DIRS_MEASURE'] = humanize_usage_measure($data[$key]['U_DISK_DIRS']); + $data[$key]['U_DISK_DIRS'] = humanize_usage_size($data[$key]['U_DISK_DIRS']); if ($data[$key]['SUSPENDED'] == 'yes') { $spnd_action = 'unsuspend' ; diff --git a/web/api/v1/list/web-log/index.php b/web/api/v1/list/web-log/index.php index 4f6823636..055717a69 100644 --- a/web/api/v1/list/web-log/index.php +++ b/web/api/v1/list/web-log/index.php @@ -14,10 +14,18 @@ if ($_GET['type'] == 'access') $type = 'access'; if ($_GET['type'] == 'error') $type = 'error'; $data = exec (VESTA_CMD."v-list-web-domain-".$type."log $user ".$v_domain, $output, $return_var); +$content = ''; + +if ($return_var == 0 ) { + foreach($output as $file) { + $content .= htmlentities($file) . "\n"; + } +} echo json_encode( array( - 'data' => $data + 'data' => $content, + 'prefix' => __('Last 70 lines of %s.%s.log', htmlentities($_GET['domain']), htmlentities($_GET['type'])) ) ); diff --git a/web/api/v1/list/web/index.php b/web/api/v1/list/web/index.php index 642d77e55..c49e8a5c4 100644 --- a/web/api/v1/list/web/index.php +++ b/web/api/v1/list/web/index.php @@ -23,6 +23,9 @@ $_SESSION['back'] = $_SERVER['REQUEST_URI']; foreach ($data as $key => $value) { ++$i; + $data[$key]['U_BANDWIDTH_PERCENT'] = get_percentage($data[$key]['U_BANDWIDTH'],$panel[$user]['BANDWIDTH']); + $data[$key]['U_DISK_PERCENT'] = get_percentage($data[$key]['U_DISK'],$data[$key]['DISK_QUOTA']); + if ($data[$key]['SUSPENDED'] == 'yes') { $data[$key]['status'] = 'suspended'; $data[$key]['spnd_action'] = 'unsuspend' ; @@ -48,15 +51,7 @@ foreach ($data as $key => $value) { $ftp_user=$data[$key]['FTP_USER']; } - if (strlen($ftp_user) > 24 ) { - $data[$key]['FTP_USER'] = str_replace(':', ', ', $ftp_user); - $data[$key]['FTP_USER'] = substr($ftp_user, 0, 24); - $data[$key]['FTP_USER'] = trim($ftp_user, ":"); - $data[$key]['FTP_USER'] = str_replace(':', ', ', $ftp_user); - $data[$key]['FTP_USER'] = $ftp_user.", ..."; - } else { - $data[$key]['FTP_USER'] = str_replace(':', ', ', $ftp_user); - } + $data[$key]['FTP_USER'] = str_replace(':', ', ', $ftp_user); if (strlen($data[$key]['PROXY_EXT']) > 24 ) { $data[$key]['PROXY_EXT'] = str_replace(',', ', ', $data[$key]['PROXY_EXT']); diff --git a/web/api/v1/login/index.php b/web/api/v1/login/index.php index 2524cfff7..398f6d2b2 100644 --- a/web/api/v1/login/index.php +++ b/web/api/v1/login/index.php @@ -148,15 +148,23 @@ if (empty($_SESSION['language'])) { } } -// Generate CSRF token -$token = bin2hex(file_get_contents('/dev/urandom', false, null, 0, 16)); -$_SESSION['token'] = $token; +if (empty($_SESSION['token'])) { + // Generate CSRF token + $token = bin2hex(file_get_contents('/dev/urandom', false, null, 0, 16)); + $_SESSION['token'] = $token; +} require_once($_SERVER['DOCUMENT_ROOT'].'/inc/i18n/'.$_SESSION['language'].'.php'); $v_user = empty($_SESSION['look']) ? $_SESSION['user'] : $_SESSION['look']; top_panel($v_user, $TAB); +$panel[$v_user]['U_BANDWIDTH_MEASURE'] = humanize_usage_measure($panel[$v_user]['U_BANDWIDTH']); +$panel[$v_user]['U_BANDWIDTH'] = humanize_usage_size($panel[$v_user]['U_BANDWIDTH']); + +$panel[$v_user]['U_DISK_MEASURE'] = humanize_usage_measure($panel[$v_user]['U_DISK']); +$panel[$v_user]['U_DISK'] = humanize_usage_size($panel[$v_user]['U_DISK']); + $result = array( 'token' => $_SESSION['token'], 'panel' => $panel, diff --git a/web/api/v1/reset/mail/index.php b/web/api/v1/reset/mail/index.php new file mode 100644 index 000000000..8d811976b --- /dev/null +++ b/web/api/v1/reset/mail/index.php @@ -0,0 +1,168 @@ + $arr_val) { + // search for NAT IPs and allow them + if ($ip==$arr_key || $ip==$arr_val['NAT']) { + $ok=1; + break; + } +} +if ($ip == $_SERVER['SERVER_ADDR']) $ok=1; +if ($ip == '127.0.0.1') $ok=1; +if ($ok==0) exit; +if (isset($_SERVER['HTTP_X_REAL_IP']) || isset($_SERVER['HTTP_X_FORWARDED_FOR'])) exit; + +// +// sourceforge.net/projects/postfixadmin/ +// md5crypt +// Action: Creates MD5 encrypted password +// Call: md5crypt (string cleartextpassword) +// + +function md5crypt ($pw, $salt="", $magic="") +{ + $MAGIC = "$1$"; + + if ($magic == "") $magic = $MAGIC; + if ($salt == "") $salt = create_salt (); + $slist = explode ("$", $salt); + if ($slist[0] == "1") $salt = $slist[1]; + + $salt = substr ($salt, 0, 8); + $ctx = $pw . $magic . $salt; + $final = hex2bin (md5 ($pw . $salt . $pw)); + + for ($i=strlen ($pw); $i>0; $i-=16) + { + if ($i > 16) + { + $ctx .= substr ($final,0,16); + } + else + { + $ctx .= substr ($final,0,$i); + } + } + $i = strlen ($pw); + + while ($i > 0) + { + if ($i & 1) $ctx .= chr (0); + else $ctx .= $pw[0]; + $i = $i >> 1; + } + $final = hex2bin (md5 ($ctx)); + + for ($i=0;$i<1000;$i++) + { + $ctx1 = ""; + if ($i & 1) + { + $ctx1 .= $pw; + } + else + { + $ctx1 .= substr ($final,0,16); + } + if ($i % 3) $ctx1 .= $salt; + if ($i % 7) $ctx1 .= $pw; + if ($i & 1) + { + $ctx1 .= substr ($final,0,16); + } + else + { + $ctx1 .= $pw; + } + $final = hex2bin (md5 ($ctx1)); + } + $passwd = ""; + $passwd .= to64 (((ord ($final[0]) << 16) | (ord ($final[6]) << 8) | (ord ($final[12]))), 4); + $passwd .= to64 (((ord ($final[1]) << 16) | (ord ($final[7]) << 8) | (ord ($final[13]))), 4); + $passwd .= to64 (((ord ($final[2]) << 16) | (ord ($final[8]) << 8) | (ord ($final[14]))), 4); + $passwd .= to64 (((ord ($final[3]) << 16) | (ord ($final[9]) << 8) | (ord ($final[15]))), 4); + $passwd .= to64 (((ord ($final[4]) << 16) | (ord ($final[10]) << 8) | (ord ($final[5]))), 4); + $passwd .= to64 (ord ($final[11]), 2); + return "$magic$salt\$$passwd"; +} + + +// +// sourceforge.net/projects/postfixadmin/ +// to64 +// + +function to64 ($v, $n) +{ + $ITOA64 = "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; + $ret = ""; + while (($n - 1) >= 0) + { + $n--; + $ret .= $ITOA64[$v & 0x3f]; + $v = $v >> 6; + } + return $ret; +} + + +// Check arguments +if ((!empty($_POST['email'])) && (!empty($_POST['password'])) && (!empty($_POST['new']))) { + list($v_account, $v_domain) = explode('@', $_POST['email']); + $v_domain = escapeshellarg($v_domain); + $v_account = escapeshellarg($v_account); + $v_password = $_POST['password']; + + // Get domain owner + exec (VESTA_CMD."v-search-domain-owner ".$v_domain." mail", $output, $return_var); + if (($return_var == 0) && (!empty($output[0]))) { + $v_user = escapeshellarg($output[0]); + } + unset($output); + + // Get current md5 hash + if (!empty($v_user)) { + exec (VESTA_CMD."v-get-mail-account-value ".$v_user." ".$v_domain." ".$v_account." md5", $output, $return_var); + if ($return_var == 0) { + $v_hash = $output[0]; + } + } + unset($output); + + // Compare hashes + if (!empty($v_hash)) { + $salt = explode('$', $v_hash); + $n_hash = md5crypt($v_password, $salt[2]); + $n_hash = '{MD5}'.$n_hash; + + // Change password + if ( hash_equals($v_hash, $n_hash ) ) { + $v_new_password = tempnam("/tmp","vst"); + $fp = fopen($v_new_password, "w"); + fwrite($fp, $_POST['new']."\n"); + fclose($fp); + exec (VESTA_CMD."v-change-mail-account-password ".$v_user." ".$v_domain." ".$v_account." ".$v_new_password, $output, $return_var); + if ($return_var == 0) { + echo "==ok=="; + exit; + } + } + } +} + +echo 'error'; + +exit; \ No newline at end of file diff --git a/web/api/v1/upload/UploadHandler.php b/web/api/v1/upload/UploadHandler.php index aedd747ca..be264aac7 100755 --- a/web/api/v1/upload/UploadHandler.php +++ b/web/api/v1/upload/UploadHandler.php @@ -1191,6 +1191,13 @@ class UploadHandler )); } } + if(!headers_sent()){ + // this is the most likely/expected path. + header("Content-Type: application/json"); + } else { + // html-encode json to prevent xss... + $json = htmlentities($json, ENT_QUOTES | ENT_SUBSTITUTE | ENT_DISALLOWED | ENT_HTML401); + } $this->body($json); } return $content; diff --git a/web/inc/i18n/ka.php b/web/inc/i18n/ka.php index 1512e06c6..c6ccc32a8 100644 --- a/web/inc/i18n/ka.php +++ b/web/inc/i18n/ka.php @@ -22,7 +22,7 @@ $LANG['ka'] = array( 'DNS' => 'დომენები', 'MAIL' => 'ფოსტა', 'DB' => 'ბაზები', - 'CRON' => 'კრონი', + 'CRON' => 'ქრონი', 'BACKUP' => 'მარქაფი', 'LOGIN' => 'შესვლა', @@ -109,7 +109,7 @@ $LANG['ka'] = array( 'disable autoupdate' => 'ავტომატური განახლების გამორთვა', 'turn on notifications' => 'შეტყობინებების ჩართვა', 'turn off notifications' => 'შტყობინებების გამორთვა', - 'configure' => 'configure', + 'configure' => 'კონფიგურაცია', 'Adding User' => 'კლიენტის დამატება', 'Editing User' => 'კლიენტის რედაქტირება', @@ -178,7 +178,7 @@ $LANG['ka'] = array( 'Web Aliases' => 'Web ალიასები', 'per domain' => 'დომენზე', 'DNS Domains' => 'DNS დომენები', - 'DNS domains' => 'DNS domains', + 'DNS domains' => 'DNS დომენები', 'DNS records' => 'DNS ჩანაწერები', 'Name Servers' => 'Name სერვერები', 'Mail Domains' => 'ელფოსტის დომენები', @@ -193,9 +193,9 @@ $LANG['ka'] = array( 'template' => 'შაბლონი', 'SSL Support' => 'SSL მხარდაჭერა', 'SSL Home Directory' => 'SSL მთავარი დირექტორია', - 'Lets Encrypt Support' => 'Lets Encrypt Support', + 'Lets Encrypt Support' => 'Lets Encrypt-ის მხარდაჭერა', 'Lets Encrypt' => 'Lets Encrypt', - 'Your certificate will be automatically issued in 5 minutes' => 'Your certificate will be automatically issued in 5 minutes', + 'Your certificate will be automatically issued in 5 minutes' => 'თქვენი სერტიფიკატები ავტომატურად დამზადდება 5 წუთში', 'Proxy Support' => 'პროქსის მხარდაჭერა', 'Proxy Extensions' => 'პროქსის გაფართოებები', 'Web Statistics' => 'ვებ სტატისტიკა', @@ -203,7 +203,7 @@ $LANG['ka'] = array( 'Path' => 'გზა', 'SOA' => 'SOA', 'TTL' => 'TTL', - 'Expire' => 'ვადა', + 'Expire' => 'ვადის გასვლა', 'Records' => 'ჩანაწერები', 'Serial' => 'სერიული', 'Catchall email' => 'Catchall ელფოსტა', @@ -253,7 +253,7 @@ $LANG['ka'] = array( 'PostgreSQL Usage on localhost' => 'PostgreSQL მოხმარება localhost-ზე', 'Bandwidth Usage eth0' => 'ტრაფიკის მოხმარება eth0-ზე', 'Bandwidth Usage eth1' => 'ტრაფიკის მოხმარება eth1-ზე', - 'Exim Usage' => 'Exim Usage', + 'Exim Usage' => 'Exim-ის მოხმარება', 'FTP Usage' => 'FTP მოხმარება', 'SSH Usage' => 'SSH მოხმარება', 'reverse proxy' => 'რევერსული პროქსი', @@ -405,8 +405,8 @@ $LANG['ka'] = array( 'mail account' => 'ელფოსტის ანგარიში', 'cron job' => 'კრონის დავალება', - 'cron' => 'კრონი', - 'user dir' => 'მომხამრებლის დირექტორია', + 'cron' => 'ქრონი', + 'user dir' => 'მომხმარებლის დირექტორია', 'unlimited' => 'ულიმიტო', '1 account' => '1 ანგარიში', @@ -559,7 +559,7 @@ $LANG['ka'] = array( 'MAIL Server' => 'ელფოსტის სერვერი', 'Antivirus' => 'ანტივირუსი', 'AntiSpam' => 'ანტისპამი', - 'Use Web Domain SSL Certificate' => 'Use Web Domain SSL Certificate', + 'Use Web Domain SSL Certificate' => 'ვებ დომენის SSL სერტიფიკატის გამოყენება', 'Webmail URL' => 'ვებფოსტის URL', 'MySQL Support' => 'MySQL-ის მხარდაჭერა', 'phpMyAdmin URL' => 'phpMyAdmin-ის URL', @@ -666,7 +666,7 @@ $LANG['ka'] = array( 'Go to CRON list' => 'კრონის სიაზე გადასვლა', 'Go to BACKUP list' => 'მარქაფების სიაზე გადასვლა', 'Focus on search' => 'ძიაბაზე ფოკუსირება', - 'Display/Close shortcuts' => 'Display/Close shortcuts', + 'Display/Close shortcuts' => 'მალსახმობების ჩვენება/დახურვა', 'Move backward through top menu' => 'უკან გადასვლა მთავარ მენიუში', 'Move forward through top menu' => 'წინ გადასვლა მთავარ მენიუში', 'Enter focused element' => 'ფოკუსირებულ ელემენტზე გადასვლა', @@ -693,7 +693,7 @@ $LANG['ka'] = array( 'Select Current File' => 'მიმდინარე ფაილის მონიშვნა', 'Select Bunch of Files' => 'ვებრი ფაილის მონიშვნა', 'Add File to the Current Selection' => 'ფაილის მონიშნულებში დამატება', - 'Select All Files' => 'Select All Files', + 'Select All Files' => 'ყველა ფაილის მონიშვნა', 'shortcuts are inspired by magnificent GNU Midnight Commander file manager' => 'მალსახმობები შექმნილია უძლიერესი GNU Midnight Commander ფაილური მენეჯერის მიხედვით', diff --git a/web/inc/i18n/ru.php b/web/inc/i18n/ru.php index 58829fade..3ff08aa4a 100644 --- a/web/inc/i18n/ru.php +++ b/web/inc/i18n/ru.php @@ -580,7 +580,6 @@ $LANG['ru'] = array( 'Vesta Control Panel Plugins' => 'Плагины Vesta Control Panel', 'preview' => 'предпросмотр', 'Reseller Role' => 'Реселлер', - 'Reseller Role' => 'Реселлер', 'Web Config Editor' => 'Веб Редактор Конфигов', 'Template Manager' => 'Менеджер Шаблонов', 'Backup Migration Manager' => 'Менеджер Миграции Бэкапов', diff --git a/web/inc/i18n/uz.php b/web/inc/i18n/uz.php new file mode 100644 index 000000000..1b3e3df20 --- /dev/null +++ b/web/inc/i18n/uz.php @@ -0,0 +1,765 @@ + 'Paketlar', + 'IP' => 'IP', + 'Graphs' => 'Grafiklar', + 'Statistics' => 'Statistika', + 'Log' => 'Log', + 'Server' => 'Server', + 'Services' => 'Xizmatlar', + 'Firewall' => 'Firewall', + 'Updates' => 'Yangilanishlar', + 'Log in' => 'Kirish', + 'Log out' => 'Chiqish', + + 'USER' => 'USER', + 'WEB' => 'WEB', + 'DNS' => 'DNS', + 'MAIL' => 'MAIL', + 'DB' => 'DB', + 'CRON' => 'CRON', + 'BACKUP' => 'BACKUP', + + 'LOGIN' => 'KIRISH', + 'RESET PASSWORD' => 'PAROLNI TIKLASH', + 'SEARCH' => 'QIDIRISH', + 'PACKAGE' => 'PAKETLAR', + 'RRD' => 'RRD', + 'STATS' => 'STATISTIKA', + 'LOG' => 'LOG', + 'UPDATES' => 'YANGILANISHLAR', + 'FIREWALL' => 'FIREWALL', + 'SERVER' => 'SERVER', + 'MEMORY' => 'XOTIRA', + 'DISK' => 'DISK', + 'NETWORK' => 'NETWORK', + 'Web Log Manager' => 'Menedjer Web jurnali', + + 'no notifications' => "bildirishnomalar yo'q", + + 'Add User' => "Foydalanuvchi qo'shish", + 'Add Domain' => "Domen qo'shish", + 'Add Web Domain' => "Domen qo'shish", + 'Add DNS Domain' => "Domen qo'shish", + 'Add DNS Record' => "DNS yozuvini qo'shish", + 'Add Mail Domain' => "Domen qo'shish", + 'Add Mail Account' => "Pochta qo'shish", + 'Add Database' => "DB yaratish", + 'Add Cron Job' => "Vazifa qo'shish", + 'Create Backup' => "Zaxira nusxasini yaratish", + 'Configure' => 'Sozlang', + 'Restore All' => 'Barchasini tiklash', + 'Add Package' => "Paket qo'shish", + 'Add IP' => "IP qo'shish", + 'Add Rule' => "Qoida qo'shish", + 'Ban IP Address' => "IPni bloklash", + 'Search' => 'Qidirish', + 'Add one more FTP Account' => "Yana bitta FTP hisobini qo'shish", + 'Overall Statistics' => 'Umumiy statistika', + 'Daily' => 'Kundalik', + 'Weekly' => 'Haftalik', + 'Monthly' => 'Oylik', + 'Yearly' => 'Yillik', + 'Add' => "Qo'shish", + 'Back' => 'Orqaga', + 'Save' => 'Saqlash', + 'Submit' => 'Yuborish', + + 'toggle all' => 'hammasini belgilash', + 'apply to selected' => "tanlanganlarga qo'llaniladi", + 'rebuild' => 'qayta qurish', + 'rebuild web' => "WEBni qayta yaratish", + 'rebuild dns' => 'DNS qayta yaratish', + 'rebuild mail' => 'MAIL qayta yaratish', + 'rebuild db' => 'DB qayta yaratish', + 'rebuild cron' => 'CRON qayta yaratish', + 'update counters' => 'hisoblagichlarni hisoblash', + 'suspend' => 'bloklash', + 'unsuspend' => 'aktivlashtirish', + 'delete' => "O'chirish", + 'show per user' => 'foydalanuvchini tanlang', + 'login as' => 'sifatida tizimga kiring', + 'logout' => 'chiqish', + 'edit' => 'taxrirlash', + 'open webstats' => "webstats ochish", + 'view logs' => "jurnallarni ko'rish", + 'list records' => "yozuvlar ro'yxati", + 'add record' => "rekord qo'shish", + 'list accounts' => "%s hisoblarni ko'rsatish", + 'add account' => "hisob qo'shing", + 'open webmail' => 'pochtani ochish', + 'list fail2ban' => "fail2ban-ni ko'rsatish", + 'open %s' => '%s ni oching', + 'download' => 'yuklab olish', + 'restore' => 'tiklash', + 'configure restore settings' => 'tiklash sozlamalarini sozlash', + 'stop' => "to'xta", + 'start' => 'boshlash', + 'restart' => 'qayta ishga tushirish', + 'update' => 'yangilash', + 'generate' => 'hosil qilish', + 'Generate CSR' => "CSR so'rovini yarating", + 'reread IP' => "IP-ni qayta o'qing", + 'enable autoupdate' => "avtomatik yangilashni yoqish", + 'disable autoupdate' => 'avtomatik yangilashni o`chirish', + 'turn on notifications' => "bildirishnomalarni yoqish", + 'turn off notifications' => 'bildirishnomalarni o`chirish', + 'configure' => 'configure', + + 'Adding User' => "Hisob qo'shish", + 'Editing User' => "Hisobni tahrirlash", + 'Adding Domain' => "Domen qo'shish", + 'Editing Domain' => "Domenni tahrirlash", + 'Adding DNS Domain' => "DNS domenini qo'shish", + 'Editing DNS Domain' => "DNS domenini tahrirlash", + 'Adding DNS Record' => "DNS yozuvini qo'shish", + 'Editing DNS Record' => 'DNS yozuvini tahrirlash', + 'Adding Mail Domain' => "Pochta domenini qo'shish", + 'Editing Mail Domain' => "Pochta domenini tahrirlash", + 'Adding Mail Account' => "Pochta hisobini qo'shish", + 'Editing Mail Account' => "Pochta hisobini tahrirlash", + 'Adding database' => "Ma'lumotlar bazasini qo'shish", + 'Editing Cron Job' => 'Cron ishini tahrirlash', + 'Adding Cron Job' => "Cron ishini qo'shish", + 'Editing Database' => "Ma'lumotlar bazasini tahrirlash", + 'Adding Package' => "Paket qo'shish", + 'Editing Package' => "Paketni tahrirlash", + 'Adding IP address' => "IP manzilini qo'shish", + 'Editing IP Address' => "IP manzilni tahrirlash", + 'Editing Backup Exclusions' => "Tahrirlash istisnolari", + 'Generating CSR' => "CSR so'rovini yaratish", + 'Listing' => "Ko'rinish", + 'Search Results' => 'Qidiruv natijalari', + 'Adding Firewall Rule' => "Xavfsizlik devori qoidasini qo'shish", + 'Editing Firewall Rule' => 'Xavfsizlik devori qoidasini tahrirlash', + 'Adding IP Address to Banlist' => 'IP-manzilni blokirovka qilish', + + 'active' => 'faol', + 'spnd' => 'bloklangan', + 'suspended' => 'bloklangan', + 'running' => 'ishlamoqda', + 'stopped' => "to'xtatilgan", + 'outdated' => 'eskirgan', + 'updated' => 'yangilangan', + + 'yes' => 'ha', + 'no' => "yo'q", + 'none' => "yo'q", + 'pb' => 'Pb', + 'tb' => 'Tb', + 'gb' => 'Gb', + 'mb' => 'Mb', + 'minute' => 'min.', + 'hour' => 'soat', + 'day' => 'kun', + 'days' => 'kunlar', + 'hours' => 'soat', + 'minutes' => 'min.', + 'month' => 'oy', + 'package' => 'paket', + 'Bandwidth' => 'Trafik', + 'Disk' => 'Disk', + 'Web' => 'Veb', + 'Mail' => 'Pochta', + 'Databases' => "Ma'lumotlar bazalari", + 'User Directories' => 'Foydalanuvchi papkalari', + 'Template' => 'Shablon', + 'Web Template' => 'Web shablon', + 'Backend Template' => 'Backend shablon ', + 'Proxy Template' => 'Proxy shablon', + 'DNS Template' => 'DNS shablon', + 'Web Domains' => 'Veb-domenlar', + 'SSL Domains' => 'SSL domenlar', + 'Web Aliases' => 'Veb taxalluslari', + 'per domain' => 'domen uchun', + 'DNS Domains' => 'DNS domenlar', + 'DNS domains' => 'DNS domenlar', + 'DNS records' => 'DNS yozuvlar', + 'Name Servers' => 'Sever nomi', + 'Mail Domains' => 'Pochta domenlari', + 'Mail Accounts' => 'Pochta hisoblari', + 'Cron Jobs' => 'Cron Jobs', + 'SSH Access' => 'SSH kirish', + 'IP Address' => 'IP Address', + 'IP Addresses' => 'IP адреса', + 'Backups' => 'Zaxira nusxalari', + 'Backup System' => 'Zaxira tizimi', + 'backup exclusions' => 'istisnolar', + 'template' => 'shablon', + 'SSL Support' => "SSL qo'llab-quvvatlash", + 'SSL Home Directory' => "SSL katalogi", + 'Lets Encrypt Support' => 'Lets Encrypt Support', + 'Lets Encrypt' => 'Lets Encrypt', + + 'Proxy Support' => 'Proksi-server', + 'Proxy Extensions' => 'Proksi kengaytmalari', + 'Web Statistics' => 'Sayt statistikasi', + 'Additional FTP Account' => "Qo'shimcha FTP hisobi", + 'Path' => "Yo'l", + 'SOA' => 'SOA', + 'TTL' => 'TTL', + 'Expire' => 'Muddati tugaydi', + 'Records' => 'DNS записи', + 'Serial' => 'Serial', + 'Catchall email' => 'Ловушка почты', + 'AntiVirus Support' => "Antivirusni qo'llab-quvvatlash", + 'AntiSpam Support' => "Antispamni qo'llab-quvvatlash", + 'DKIM Support' => 'DKIM', + 'Accounts' => 'Hisoblar', + 'Quota' => 'Kvota', + 'Autoreply' => 'Avtomatik javob', + 'Forward to' => 'Yo‘naltirish', + 'Do not store forwarded mail' => "Yo'naltirilgan elektron pochta xabarlarini saqlamang", + 'IMAP hostname' => 'IMAP hostname', + 'IMAP port' => 'IMAP port', + 'IMAP security' => 'IMAP security', + 'IMAP auth method' => 'IMAP auth method', + 'SMTP hostname' => 'SMTP hostname', + 'SMTP port' => 'SMTP port', + 'SMTP security' => 'SMTP security', + 'SMTP auth method' => 'SMTP auth method', + 'STARTTLS' => 'STARTTLS', + 'Normal password' => 'Normal password', + 'database' => 'malumotlar bazasi', + 'User' => 'Foydalanuvchi', + 'Host' => 'Server', + 'Charset' => 'Kodlash', + 'Min' => 'Min', + 'Hour' => 'Soat', + 'Day' => 'Kun', + 'Month' => 'Oy', + 'Day of week' => 'Hafta kuni', + 'local' => 'mahalliy', + 'Run Time' => 'Ish vaqti', + 'Backup Size' => 'Zaxira hajmi', + 'SYS' => 'SYS', + 'Domains' => 'Domenlar', + 'Status' => 'Status', + 'shared' => 'birgalikda', + 'dedicated' => 'dedicated', + 'Owner' => 'Egasi', + 'Users' => 'Foydalanuvchilar', + 'Load Average' => "O'rtacha yuk", + 'Memory Usage' => 'Xotiradan foydalanish', + 'APACHE2 Usage' => 'Использование APACHE2', + 'HTTPD Usage' => 'Использование HTTPd', + 'NGINX Usage' => 'Использование NGINX', + 'MySQL Usage on localhost' => 'Использование локальной MySQL', + 'PostgreSQL Usage on localhost' => 'Использование локальной PostgreSQL', + 'Bandwidth Usage eth0' => 'Использование cети: eth0', + 'Bandwidth Usage eth1' => 'Использование cети: eth1', + 'Exim Usage' => 'Использование Exim', + 'FTP Usage' => 'Использование FTP', + 'SSH Usage' => 'Использование SSH', + 'reverse proxy' => 'обратный прокси', + 'web server' => 'web server', + 'dns server' => 'dns server', + 'mail server' => 'mail server', + 'pop/imap server' => 'pop/imap server', + 'email antivirus' => 'email antivirus', + 'email antispam' => 'email antispam', + 'database server' => "ma'lumotlar bazasi serveri", + 'ftp server' => 'ftp сервер', + 'job scheduler' => "vazifalarni rejalashtiruvchi", + 'firewall' => 'xavfsizlik devori', + 'brute-force monitor' => 'brute-force монитор', + 'CPU' => 'Процессор', + 'Memory' => 'Xotira', + 'Uptime' => 'Ishga tushirildi', + 'core package' => 'asosiy paket', + 'php interpreter' => 'php interpreter', + 'internal web server' => 'внутренний веб сервер', + 'Version' => 'Versiya', + 'Release' => 'Chiqarish', + 'Architecture' => 'Arxitektura', + 'Object' => "Ob'ekt", + 'Username' => 'Foydalanuvchi nomi', + 'Password' => 'Parol', + 'Email' => 'E-mail', + 'Package' => 'Paket', + 'Language' => 'Til', + 'First Name' => 'Ism', + 'Last Name' => 'Familiya', + 'Default Template' => 'Standart shablon', + 'Default Name Servers' => 'Standart nom serverlari', + 'Domain' => 'Domen', + 'DNS Support' => "DNS qo'llab-quvvatlash", + 'Mail Support' => "Pochta yordami", + 'Advanced options' => "Qo'shimcha variantlar", + 'Basic options' => 'Asosiy variantlar', + 'Aliases' => 'Taxalluslar', + 'SSL Certificate' => 'SSL sertifikati', + 'SSL Key' => 'SSL kalit', + 'SSL CSR' => 'SSL CSR', + 'optional' => 'ixtiyoriy', + 'internal' => 'ichki', + 'Statistics Authorization' => 'Statistika avtorizatsiyasi', + 'Statistics Auth' => 'Avtorizatsiya statistikasi', + 'Account' => 'Hisob', + 'Send FTP credentials to email' => 'Ftp hisob qaydnoma tafsilotlarini quyidagi manzilga yuboring', + 'Expiration Date' => 'Muddati', + 'YYYY-MM-DD' => 'YYYY-MM-DD', + 'Name servers' => 'Server nomi', + 'Record' => 'Record', + 'IP or Value' => 'IP адрес или значение', + 'Priority' => 'Ustuvorlik', + 'Record Number' => 'Tartib raqam', + 'in megabytes' => 'megabaytda', + 'Message' => 'Xabar', + 'use local-part' => 'mahalliy qismdan foydalaning', + 'one or more email addresses' => 'bir yoki bir nechta elektron pochta manzillari', + + 'SSL Certificate Authority / Intermediate' => "SSL sertifikat organi / O'rta daraja", + 'Send login credentials to email address' => "Kirish ma'lumotlarini elektron pochta manziliga yuborish", + 'Prefix will be automaticaly added to username' => "%s prefiksi hisob nomiga avtomatik ravishda qo'shiladi", + 'Your certificate will be automatically issued in 5 minutes' => "Sertifikat avtomatik ravishda 5 daqiqa ichida yaratiladi", + 'Prefix will be automaticaly added to database name and database user' => "%s prefiksi ma'lumotlar bazasiga va ma'lumotlar bazasi foydalanuvchisiga avtomatik ravishda qo'shiladi", + + + 'Database' => "Ma'lumotlar bazasi", + 'Type' => 'Turi', + 'Minute' => 'Daqiqa', + 'Command' => 'Buyruq', + 'Package Name' => 'Paket nomi', + 'Netmask' => 'Tarmoq maskasi', + 'Interface' => 'Interfeys', + 'Shared' => 'Shared', + 'Assigned user' => 'Belgilangan foydalanuvchi', + 'Assigned domain' => 'Belgilangan domen', + 'NAT IP association' => 'Ассоциированный NAT IP', + 'shell' => 'ssh kirish', + 'web domains' => 'veb-domenlar', + 'web aliases' => 'web aliases', + 'dns records' => 'DNS yozuvlari', + 'mail domains' => 'pochta domenlari', + 'mail accounts' => 'pochta hisoblari', + 'accounts' => 'hisoblar', + 'databases' => "ma'lumotlar bazalari", + 'cron jobs' => 'cron ishlari', + 'backups' => 'zaxira nusxalari', + 'quota' => 'disk kvotasi', + 'day of week' => 'hafta kuni', + 'cmd' => 'cmd', + 'users' => 'foydalanuvchilar', + 'domains' => 'domenlar', + 'aliases' => 'aliases', + 'records' => 'records', + 'jobs' => 'jobs', + 'username' => 'foydalanuvchi nomi', + 'password' => 'parol', + 'type' => 'turi', + 'charset' => 'charset', + 'domain' => 'domen', + 'ip' => 'IP', + 'ip address' => 'IP адрес', + 'IP address' => 'IP адрес', + 'netmask' => 'маска подсети', + 'interface' => 'интерфейс', + 'assigned user' => 'назначенный пользователь', + 'ns1' => 'сервер имен #1', + 'ns2' => 'сервер имен #2', + 'user' => 'пользователь', + 'email' => 'email', + 'first name' => 'ism', + 'last name' => 'familiya', + 'account' => 'hisob', + 'ssl certificate' => 'SSL сертификат', + 'ssl key' => 'ssl kaliti', + 'stats user password' => "statistik ma'lumotlarga kirish uchun parol", + 'stats username' => "statistika ma'lumotlarga kirish foydalanuvchi nomi", + 'stats password' => 'statistika foydalanuvchi paroli', + 'ftp user password' => "FTP kirish paroli", + 'ftp user' => "FTP foydalanuvchisi", + 'Last 70 lines of %s.%s.log' => 'Last 70 lines of %s.%s.log', + 'AccessLog' => 'AccessLog', + 'ErrorLog' => 'ErrorLog', + 'Download AccessLog' => 'AccessLog-ni yuklab olish', + 'Download ErrorLog' => 'ErrorLog-nu yuklab olish', + 'Country' => 'Mamlakat', + '2 letter code' => 'ikki harfli kod', + 'State / Province' => 'Mintaqa', + 'City / Locality' => 'Shahar / tuman', + 'Organization' => 'Tashkilot', + 'Action' => 'Harakat', + 'Protocol' => 'Protokol', + 'Port' => 'Port', + 'Comment' => 'Izoh', + 'Banlist' => "Qora ro'yxat", + 'ranges are acceptable' => "diapazonlardan foydalanish mumkin", + 'CIDR format is supported' => "CIDR formati qo'llab-quvvatlanadi", + 'ACCEPT' => 'ACCEPT', + 'DROP' => 'DROP', + 'TCP' => 'TCP', + 'UDP' => 'UDP', + 'ICMP' => 'ICMP', + 'SSH' => 'SSH', + 'FTP' => 'FTP', + 'VESTA' => 'VESTA', + 'Add one more Name Server' => "Yana bitta nom serverini qo'shish", + + 'web domain' => 'web domen', + 'dns domain' => 'dns domen', + 'dns record' => 'dns yozuv', + 'mail domain' => 'mail domen', + 'mail account' => 'mail hisob', + 'cron job' => 'cron job', + + 'cron' => 'cron', + 'user dir' => 'foydalanuvchi papkasi', + + 'unlimited' => 'cheklanmagan', + '1 account' => 'Har bir sahifadagi foydalanuvchilar: 1', + '%s accounts' => 'sahifadagi foydalanuvchilar: %s', + '1 domain' => 'har bir sahifa uchun domenlar: 1', + '%s domains' => 'har bir sahifa uchun domenlar: %s', + '1 record' => 'har bir sahifaga yozuvlar: 1', + '%s records' => 'har bir sahifaga xabarlar: %s', + '1 mail account' => "har bir sahifadagi hisoblar: 1", + '%s mail accounts' => 'har bir sahifadagi hisoblar: %s', + '1 database' => "har bir sahifa uchun ma'lumotlar bazalari: 1", + '%s databases' => "sahifadagi ma'lumotlar bazalari: %s", + '1 cron job' => "Har bir sahifa uchun vazifalar: 1", + '%s cron jobs' => 'заданий на странице: %s', + '1 archive' => 'архивов на странице: 1', + '%s archives' => 'архивов на странице: %s', + '1 item' => '1 элемент', + '%s items' => '%s элементы', + '1 package' => 'пакетов на странице: 1', + '%s packages' => 'пакетов на странице: %s', + '1 IP address' => 'IP адресов на странице: 1', + '%s IP addresses' => 'IP адресов на странице: %s', + '1 month' => 'месяцев на странице: 1', + '%s months' => 'месяцев на странице: %s', + '1 log record' => 'записей на странице: 1', + '%s log records' => 'записей на странице %s', + '1 object' => 'объектов на странице: 1', + '%s objects' => 'объектов на странице: %s', + 'no exclusions' => "istisnolar yo'q", + '1 rule' => 'правил на странице: 1', + '%s rules' => 'правил на странице: %s', + 'There are no currently banned IP' => "Hozirda taqiqlangan IP yo'q", + + 'USER_CREATED_OK' => '%s hisobi muvaffaqiyatli yaratildi', + 'WEB_DOMAIN_CREATED_OK' => '%s domeni muvaffaqiyatli yaratildi.', + 'DNS_DOMAIN_CREATED_OK' => '%s domeni muvaffaqiyatli yaratildi.', + 'DNS_RECORD_CREATED_OK' => '%s.%s yozuvi muvaffaqiyatli yaratildi.', + 'MAIL_DOMAIN_CREATED_OK' => '%s domeni muvaffaqiyatli yaratildi.', + 'MAIL_ACCOUNT_CREATED_OK' => '%s@%s hisobi muvaffaqiyatli yaratildi', + 'DATABASE_CREATED_OK' => '%s ma\'lumotlar bazasi muvaffaqiyatli yaratildi', + 'CRON_CREATED_OK' => "Cron Job muvaffaqiyatli yaratildi", + 'IP_CREATED_OK' => 'IP manzil %s muvaffaqiyatli yaratildi.', + 'PACKAGE_CREATED_OK' => '%s to‘plami muvaffaqiyatli yaratildi.', + 'SSL_GENERATED_OK' => 'SSL sertifikati muvaffaqiyatli yaratildi.', + 'RULE_CREATED_OK' => "Qoida muvaffaqiyatli qo'shildi", + 'BANLIST_CREATED_OK' => "IP manzili muvaffaqiyatli taqiqlandi", + 'Autoupdate has been successfully enabled' => "Avtomatik yangilash muvaffaqiyatli yoqildi", + 'Autoupdate has been successfully disabled' => "Avtomatik yangilash muvaffaqiyatli o'chirildi", + 'Cronjob email reporting has been successfully enabled' => "Cron bildirishnomalari muvaffaqiyatli yoqildi", + 'Cronjob email reporting has been successfully disabled' => "Cron bildirishnomalari muvaffaqiyatli o'chirildi", + 'Changes has been saved.' => "O'zgarishlar saqlandi.", + 'Confirmation' => 'Tasdiqlash', + 'DELETE_USER_CONFIRMATION' => "%s foydalanuvchisini o'chirib tashlamoqchimisiz ? ", + 'SUSPEND_USER_CONFIRMATION' => '% s foydalanuvchisini bloklamoqchimisiz ? ', + 'UNSUSPEND_USER_CONFIRMATION' => 'Siz % s foydalanuvchisini blokdan chiqarmoqchimisiz ? ', + 'DELETE_DOMAIN_CONFIRMATION' => "% s domenini o'chirib tashlamoqchimisiz? ", + 'SUSPEND_DOMAIN_CONFIRMATION' => '% s domenini bloklamoqchimisiz? ', + 'UNSUSPEND_DOMAIN_CONFIRMATION' => '% s domenini blokdan bloklamoqchimisiz? ', + 'DELETE_RECORD_CONFIRMATION' => "% s yozuvini o'chirib tashlamoqchimisiz? ", + 'SUSPEND_RECORD_CONFIRMATION' => '% s yozuvini bloklaysizmi? ', + 'UNSUSPEND_RECORD_CONFIRMATION' => '% s yozuvini blokdan chiqarmoqchimisiz? ', + 'DELETE_MAIL_ACCOUNT_CONFIRMATION' => "% s pochta qutisini o'chirasizmi? ", + 'SUSPEND_MAIL_ACCOUNT_CONFIRMATION' => '% s pochta qutisini taqiqlaysizmi? ', + 'UNSUSPEND_MAIL_ACCOUNT_CONFIRMATION' => '% s pochtani blokini olib tashlamoqchimisiz? ', + 'DELETE_DATABASE_CONFIRMATION' => "% s ma'lumotlar bazasini o'chirasizmi? ", + 'SUSPEND_DATABASE_CONFIRMATION' => "% s ma'lumotlar bazasini bloklaysizmi? ", + 'UNSUSPEND_DATABASE_CONFIRMATION' => "% s ma'lumotlar bazasi taqiqni olib tashlamoqchimisiz? '", + 'DELETE_CRON_CONFIRMATION' => "Cron Jobni o'chirib tashlamoqchimisiz? ", + 'SUSPEND_CRON_CONFIRMATION' => 'Cron Jobni bloklamoqchimisiz? ', + 'UNSUSPEND_CRON_CONFIRMATION' => 'Cron Jobni ochmoqchimisiz ?', + 'DELETE_BACKUP_CONFIRMATION' => "% s arxivini o'chirmoqchimisiz? ", + 'DELETE_EXCLUSION_CONFIRMATION' => '% s istisnosini olib tashlamoqchimisiz? ', + 'DELETE_PACKAGE_CONFIRMATION' => "% s paketini o'chirasizmi", + 'DELETE_IP_CONFIRMATION' => "% s IP manzilini o'chirasizmi? '", + 'DELETE_RULE_CONFIRMATION' => "Haqiqatan ham #% s ni o'chirasizmi? ", + 'SUSPEND_RULE_CONFIRMATION' => '#% s qoidasini taqiqlamoqchimisiz? ', + 'UNSUSPEND_RULE_CONFIRMATION' => 'Haqiqatan ham #% s taqiqni olib tashlamoqchimisiz? ', + 'LEAVE_PAGE_CONFIRMATION' => 'Sahifadan chiqmib ketmoqchimisiz? ', + 'RESTART_CONFIRMATION' => '% s ni qayta yuklamoqchimisiz? ', + 'Welcome' => 'Xush kelibsiz', + 'LOGGED_IN_AS' => "Siz % s foydalanuvchisi sifatida tizimga kirdingiz", + 'Error' => 'Xato', + 'Invalid username or password' => "Login yoki parol noto'g'ri", + 'Invalid username or code' => "Foydalanuvchi nomi yoki parolni tiklash kodi noto'g'ri", + 'Passwords not match' => 'Parollar mos kelmayapti', + 'Please enter valid email address.' => "Iltimos, to'g'ri e-pochta manzilini kiriting.", + 'Field "%s" can not be blank.' => '"%s" maydoni bo\'sh bo\'lishi mumkin emas.', + 'Password is too short.' => "Parol juda qisqa. Iltimos, kamida 6 ta belgidan foydalaning.", + 'Error code:' => 'Xato kodi: %s', + 'SERVICE_ACTION_FAILED' => '"%s" "%s" muvaffaqiyatsiz tugadi', + 'IP address is in use' => "IP-manzil ishlatilmoqda", + 'BACKUP_SCHEDULED' => "Ish navbatga muvaffaqiyatli qo'shildi. Tugallangach, sizga to'liq hisobot pochta orqali yuboriladi.", + 'BACKUP_EXISTS' => "Zaxiralash allaqachon amalga oshirilmoqda, kuting.", + 'RESTORE_SCHEDULED' => "Ish navbatga muvaffaqiyatli qo'shildi. Tugallangach, siz pochta orqali to'liq hisobot olasiz.", + 'RESTORE_EXISTS' => "Vazifa allaqachon bajarilmoqda, oxirigacha kuting.", + + 'WEB_EXCLUSIONS' => "Har bir satrda bitta domenni belgilang. Barchasini chiqarib tashlash uchun * dan foydalaning. Faqat ayrim papkalarni chiqarib tashlash uchun quyidagi formatdan foydalaning: domain.com:public_html / cache:public_html / tmp", + 'DNS_EXCLUSIONS' => "Har bir satrda bitta domen belgilang. Barchasini chiqarib tashlash uchun * dan foydalaning.", + 'MAIL_EXCLUSIONS' => "Har bir satrda bitta domenni belgilang. Barchasini chiqarib tashlash uchun * dan foydalaning. Shaxsiy hisoblarni istisno qilish uchun quyidagi formatdan foydalaning: domain.com:info:support:postmaster", + 'DB_EXCLUSIONS' => "Har bir satrda bitta asosni belgilang. Barchasini chiqarib tashlash uchun * dan foydalaning.", + 'CRON_EXCLUSIONS' => 'Для того чтобы исключить все задания, используйте * ', + 'USER_EXCLUSIONS' => 'Укажите папки по одной в строке.Для того чтобы исключить все, используйте * ', + + 'Welcome to Vesta Control Panel' => "Vesta boshqaruv paneliga xush kelibsiz", + 'MAIL_FROM' => 'Vesta Control Panel < noreply@%s > ', + 'GREETINGS_GORDON_FREEMAN' => "Salom %s %s,\n", + 'GREETINGS' => "Salom,\n", + 'ACCOUNT_READY' => "Hisob muvaffaqiyatli yaratildi va foydalanishga tayyor.\n\nhttps://%s/login/\nFoydalanuvchi nomi: %s\nParol: %s\n\n--\nVesta boshqaruv paneli\n", + + 'FTP login credentials' => "FTP kirish ma'lumotlari", + 'FTP_ACCOUNT_READY' => "FTP hisobi muvaffaqiyatli yaratildi va foydalanishga tayyor.\n\nXost: %s\nFoydalanuvchi nomi: %s_%s\nParol: %s\n\n--\nVesta boshqaruv paneli\n", + + 'Database Credentials' => "Ma'lumotlar bazasiga kirish uchun ma'lumotlar", + 'DATABASE_READY' => "Ma'lumotlar bazasi muvaffaqiyatli yaratildi.\n\nMa'lumotlar bazasi: %s\nFoydalanuvchi: %s\nParol: %s\n%s\n\n--\nVesta boshqaruv paneli\n", + + 'forgot password' => 'eslatmoq', + 'Confirm' => 'Tasdiqlang', + 'new Password' => 'Yangi parol', + 'Confirm Password' => 'Parolni takrorlash', + 'Reset' => 'Tozalash', + 'Reset Code' => 'Kodni tiklash', + 'RESET_NOTICE' => '', + 'RESET_CODE_SENT' => 'Parolni tiklash kodi elektron pochta manzilingizga yuborildi..
    ', + 'MAIL_RESET_SUBJECT' => ' % s parolni tiklash', + 'PASSWORD_RESET_REQUEST' => "Boshqaruv paneli parolini tiklash uchun quyidagi havolaga oʻting:\nhttps://%s/reset/?action=confirm&user=%s&code=%s\n\nBoʻlmasa, https://%s/reset/ sahifasiga oʻting. ?action=code&user=%s va quyidagi tiklash kodini kiriting:\n%s\n\nAgar siz parolni tiklashni soʻramagan boʻlsangiz, ushbu xabarga eʼtibor bermang va uzrimizni qabul qiling.\n\n--\nVesta boshqaruv paneli\n", + + 'Jan' => 'Yan', + 'Feb' => 'Fev', + 'Mar' => 'Mart', + 'Apr' => 'Apr', + 'May' => 'May', + 'Jun' => 'Iyun', + 'Jul' => 'Iyul', + 'Aug' => 'Avg', + 'Sep' => 'Sen', + 'Oct' => 'Okt', + 'Nov' => 'Noy', + 'Dec' => 'Dek', + + 'Configuring Server' => "Server sozlamalari", + 'Hostname' => 'Xost nomi', + 'Time Zone' => 'Vaqt zonasi', + 'default Language' => 'Standart til', + 'Proxy Server' => 'Proxy Server', + 'Web Server' => 'Web Server', + 'Backend Server' => 'Backend Server', + 'Backend Pool Mode' => 'Backend Pool Mode', + 'DNS Server' => 'DNS Сервер', + 'DNS Cluster' => 'DNS Кластер', + 'MAIL Server' => 'MAIL Сервер', + 'Antivirus' => 'Antivirus', + 'AntiSpam' => 'AntiSpam', + 'use Web Domain SSL Certificate' => "Veb-domen uchun SSL sertifikatidan foydalaning", + 'Webmail URL' => 'Webmail URL', + 'MySQL Support' => "MySQL-ni qo'llab-quvvatlash", + 'phpMyAdmin URL' => 'phpMyAdmin URL', + 'PostgreSQL Support' => 'Поддержка PostgreSQL', + 'phpPgAdmin URL' => 'phpPgAdmin URL', + 'Maximum Number Of Databases' => "Ma'lumotlar bazalarining maksimal soni", + 'Current Number Of Databases' => "Ma'lumotlar bazalarining joriy soni", + 'Local backup' => "Mahalliy arxiv", + 'Compression level' => "siqish darajasi", + 'Directory' => 'Katalog', + 'Remote backup' => 'masofaviy arxiv', + 'ftp' => 'FTP', + 'sftp' => 'SFTP', + 'SFTP Chroot' => 'SFTP Chroot', + 'FileSystem Disk Quota' => "Fayl tizimi disk kvotasi", + 'Vesta Control Panel Plugins' => 'Плагины Vesta Control Panel', + 'preview' => "oldindan ko'rish", + 'Reseller Role' => 'Sotuvchi roli', + 'Web Config Editor' => "Veb konfiguratsiya muharriri", + 'Template Manager' => "Shablon menejeri", + 'Backup Migration Manager' => "Zaxiraviy migratsiya menejeri", + 'FileManager' => "Fayl menejeri", + 'show: CPU / MEM / NET / DISK' => "ko'rsatkichlar: CPU / MEMORY / NETWORK / DISK", + + 'sort by' => 'tartiblash', + 'Date' => 'Sana', + 'Starred' => 'Sevimlilar', + 'Name' => 'Nomi', + + 'save to favorites' => "Sevimlilarga qo'shish", + + 'File Manager' => 'Fayllar', + 'size' => 'hajmi', + 'date' => 'sana', + 'name' => 'nomi', + 'Initializing' => 'Initializatsiya', + 'UPLOAD' => 'YUKLASH', + 'new FILE' => 'Yangi fayl', + 'new DIR' => 'Yangi papka', + 'DELETE' => 'OʻCHIRISH', + 'RENAME' => 'NOMINI O‘GARTIRISH', + 'MOVE' => "KO'CHIRISH", + 'RIGHTS' => 'HUQUQLAR', + 'COPY' => 'NUSHALASH', + 'ARCHIVE' => 'ARXIVLASH', + 'EXTRACT' => 'OCHISH', + 'DOWNLOAD' => 'YUKLAB OLISH', + 'Are you sure ? ' => "Ishonchingiz komilmi", + 'Hit' => 'bosing', + 'to reload the page' => "sahifani qayta yuklash", + 'Directory name cannot be empty' => "Katalog nomi bo'sh bo'lishi mumkin emas", + 'File name cannot be empty' => "Fayl nomi bo'sh bo'lishi mumkin emas", + 'No file selected' => "Hech narsa tanlanmagan", + 'No file or folder selected' => "Hech qanday fayl yoki papka tanlanmagan", + 'File type not supported' => "Ushbu fayl turi qo'llab-quvvatlanmaydi", + 'Directory download not available in current version' => "Panelning ushbu versiyasida papkalarni yuklash hali qo'llab-quvvatlanmaydi", + 'Directory not available' => "Papka mavjud emas", + 'Done' => 'bajarildi', + 'Close' => 'Yopish', + 'Copy' => 'Nushalash', + 'Cancel' => 'Bekor qilish', + 'Rename' => "Nomini o'zgartirish", + 'Move' => "Ko'chirish", + 'Change Rights' => "Huquqlarni o'zgartirish", + 'Delete' => "Oʻchirish", + 'Extract' => "Paketdan chiqaring", + 'Create' => 'Yaratish', + 'Compress' => 'Siqish', + 'OK' => 'OK', + 'YOU ARE COPYING' => 'ВЫ КОПИРУЕТЕ', + 'YOU ARE REMOVING' => 'ВЫ УДАЛЯЕТЕ', + 'Delete items' => "Elementlarni o'chirish", + 'Copy files' => "Fayllarni nusxalash", + 'Move files' => "Fayllarni ko'chirish", + 'Are you sure you want to copy' => "Nusxa olmoqchimisiz", + 'Are you sure you want to move' => "Ko'chmoqchimisiz", + 'Are you sure you want to delete' => "Oʻchirib tashlamoqchimisiz", + 'into' => 'ichiga', + 'existing files will be replaced' => "mavjud fayllar ustiga yoziladi", + 'Original name' => "Asl ism", + 'File' => "Fayl", + 'already exists' => "allaqachon mavjud", + 'Create file' => "Fayl yaratish", + 'Create directory' => "Jild yaratish", + 'read by owner' => "egasi uchun o'qish", + 'write by owner' => "egasi uchun kirish", + 'execute / search by owner' => "boshlash/egasini qidirish", + 'read by group' => 'чтение для группы', + 'write by group' => 'запись для группы', + 'execute / search by group' => 'запуск / поиск для группы', + 'read by others' => 'чтение для остальных', + 'write by others' => 'запись для остальных', + 'execute / search by others' => 'запуск / поиск для остальных', + + 'Shortcuts' => 'Qisqartmalar', + 'Add new object' => 'Перейти к Форме Добавления', + 'Save Form' => "Formani saqlang", + 'Cancel saving form' => "Saqlashni bekor qilish", + 'Go to USER list' => "USERga o'tish", + 'Go to WEB list' => 'WEB ga o\'tish', + 'Go to DNS list' => 'DNS ga o\'tish', + 'Go to MAIL list' => 'MAIL ga o\'tish', + 'Go to DB list' => 'DB ga o\'tish', + 'Go to CRON list' => 'CRON ga o\'tish', + 'Go to BACKUP list' => 'BACKUP ga o\'tish', + 'Focus on search' => "Qidiruv formasiga e'tibor qarating", + 'Display / Close shortcuts' => "Tezkor tugmalar ro'yxatini ko'rsatish/yashirish", + 'Move backward through top menu' => "E'tiborni oldingi menyu bandiga qarating", + 'Move forward through top menu' => "Keyingi menyu bandiga e'tibor qarating", + 'Enter focused element' => "Menyuning faol bandiga o'ting", + 'Move up through elements list' => "E'tiborni oldingi ro'yxat bandiga qarating", + 'Move down through elements list' => "Ro'yxatning keyingi elementiga e'tibor qarating", + + 'Upload' => "Faylni yuklash", + 'new File' => "Fayl yaratish", + 'new Folder' => "Jild yaratish", + 'Download' => 'Yuklab olish', + 'Archive' => 'Arxivlash', + 'Save File(in text editor)' => "Faylni saqlash (matn muharriri ichida)", + 'Close Popup / Cancel' => "Qalqib chiquvchi oynani yopish / Bekor qilish", + 'Move Cursor Up' => "Kursorni yuqoriga siljitish", + 'Move Cursor Down' => "Kursorni pastga siljitish", + 'switch to Left Tab' => "Chapga o'tish", + 'switch to Right Tab' => "O'ngga o'tish", + 'switch Tab' => "Faol varaqni almashtirish", + 'Go to the Top of the File list' => "Birinchi faylga o'ting", + 'Go to the Last File' => "Oxirgi faylga o'tish", + 'Open File / Enter Directory' => "Fayl/papkani ochish", + 'Edit File' => "Faylni tahrirlash", + 'Go to Parent Directory' => "Bosh katalogga o'tish", + 'Select Current File' => "Joriy faylni tanlang", + 'Select Bunch of Files' => "Fayllar to'plamini tanlang", + 'Add File to the Current Selection' => "Tanlanganga fayl qo'shish", + 'Select All Files' => "Barcha fayllarni tanlash", + + 'shortcuts are inspired by magnificent GNU < a href = "https://www.midnight-commander.org/" > Midnight Commander file manager' => + 'tezkor tugmalar ajoyib GNU fayl menejeridan olingan < a href = "https://www.midnight-commander.org/" > Midnight Commander ', + + 'Licence Key' => 'Litsenziya kaliti', + 'Enter License Key' => 'Litsenziya kalitini kiriting', + 'Buy Licence' => 'Litsenziya kalitini sotib oling', + 'Buy Lifetime License' => 'Cheksiz litsenziya kalitini sotib oling ', + 'Disable and Cancel Licence' => "Litsenziyani o'chirish va yopish", + 'Licence Activated' => "Litsenziya faollashtirilgan", + 'Licence Deactivated' => "Litsenziya o'chirilgan", + 'Restrict users so that they cannot use SSH and access only their home directory.' => "Foydalanuvchilarni cheklang, shunda ular SSH-dan foydalana olmaydilar va faqat bosh papkaga kira oladilar.", + 'Browse, copy, edit, view, and retrieve all of your web domain files using fully featured File Manager.' => "To'liq ishlaydigan Fayl menejeri bilan barcha veb-domen fayllarini ko'ring, nusxa ko'chiring, tahrirlang, ko'ring va foydalaning.", + 'This is a commercial module, you would need to purchace license key to enable it.' => "Bu tijorat moduli, uni yoqish uchun litsenziya sotib olishingiz kerak.", + + 'Minutes' => 'daqiqada', + 'Hourly' => "soatda", + 'Run Command' => 'Buyruqni ishga tushirish', + 'every month' => 'har oy', + 'every odd month' => 'har toq oy', + 'every even month' => 'otda bir marta', + 'every day' => 'har kuni', + 'every odd day' => 'kunora', + 'every even day' => 'har bir kun', + 'weekdays(5 days)' => 'ish kunlari', + 'weekend(2 days)' => 'dam olish kunlari', + 'Monday' => 'dushanba', + 'Tuesday' => 'seshanba', + 'Wednesday' => 'chorshanba', + 'Thursday' => 'payshanba', + 'Friday' => 'juma', + 'Saturday' => 'shanba', + 'Sunday' => 'yakshanba', + 'every hour' => 'har soatda', + 'every two hours' => 'har ikki soatda', + 'every minute' => 'har daqiqada', + 'every two minutes' => 'har 2 daqiqada', + 'every' => 'har', + 'Generate' => 'Yaratish', + + 'webalizer' => 'webalizer', + 'awstats' => 'awstats', + + 'Vesta SSL' => 'Vesta SSL', + 'SUBJECT' => "OB'YEKT", + 'ALIASES' => 'ALIASES', + 'NOT_BEFORE' => 'НЕДОСТУПЕН ДО', + 'NOT_AFTER' => 'НЕДОСТУПЕН ПОСЛЕ', + 'SIGNATURE' => 'IMZO', + 'PUB_KEY' => 'OMAVIY KALT', + 'ISSUER' => 'ISSUER', + + 'use server hostname' => "Server host nomidan foydalanish", + 'use domain hostname' => "Xost domen nomidan foydalanish", + 'use STARTTLS' => "STARTTLS dan foydalanish", + 'use SSL / TLS' => "SSL/TLS dan foydalanish", + 'No encryption' => 'Shifrlashsiz', + 'do not use encryption' => "Shifrlashdan foydalanmang", + + 'maximum characters length, including prefix' => "maxsus % s belgilar soni, shu jumladan prefiks", + + 'Email Credentials' => "Elektron pochta ma'lumotlari", +]; diff --git a/web/static/css/main.0c07ea6c.chunk.css b/web/static/css/main.0c07ea6c.chunk.css deleted file mode 100644 index e8abb0bbd..000000000 --- a/web/static/css/main.0c07ea6c.chunk.css +++ /dev/null @@ -1,2 +0,0 @@ -body{margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}code{font-family:source-code-pro,Menlo,Monaco,Consolas,"Courier New",monospace}.spinner-wrapper{position:absolute;bottom:5px;width:15%;left:42%;height:10px}.dropdown-menu ul{height:150px}.dropdown-menu ul li{display:inline-flex}.lists-container .dropdown-menu.show{-webkit-transform:translate3d(-57%,39px,0)!important;transform:translate3d(-57%,39px,0)!important}.path{display:flex;justify-content:space-between;font-size:15px;padding:1px 0 0 5px;height:40px;background:#222e44;color:#999;box-shadow:0 2px 10px -4px #222e44}.path .btn-group{width:75px;margin-left:15px;background:none;box-shadow:none}.path .btn-group .btn-secondary:not(:disabled):not(.disabled).active,.path .btn-group .btn-secondary:not(:disabled):not(.disabled):active,.path .btn-group .show>.btn-secondary.dropdown-toggle{background:#222e44;border:#222e44}.path .btn-group button{padding-left:0;padding-right:5px;color:#999;background:#222e44;border:#222e44;transition:none}.path .btn-group button span{color:#999;padding:0 0 0 5px}.path .btn-group button:active,.path .btn-group button:focus{background:#222e44;border:#222e44}.path .btn-group .btn.active.focus,.path .btn-group .btn.active:focus,.path .btn-group .btn.focus,.path .btn-group .btn:active.focus,.path .btn-group .btn:active:focus,.path .btn-group .btn:focus{box-shadow:none;outline:none;background:#222e44;border:#222e44}.path .btn-group .btn-secondary{display:flex;justify-content:center;align-items:center}.path .clickable{padding-top:8px;cursor:pointer}.active-path{display:flex;justify-content:space-between;font-size:15px;padding:1px 0 0 5px;height:40px;background:#d7dcef;color:#fff;box-shadow:0 2px 6px -2px #d7dcef}.active-path .clickable-wrapper{display:flex;flex-wrap:nowrap;overflow:auto}.active-path .btn-group{width:75px;background:none;box-shadow:none}.active-path .btn-group .btn-secondary:not(:disabled):not(.disabled).active,.active-path .btn-group .btn-secondary:not(:disabled):not(.disabled):active,.active-path .btn-group .show>.btn-secondary.dropdown-toggle{border-color:#d7dcef;background:#d7dcef}.active-path .btn-group button{padding-left:0;padding-right:5px;color:#fff;border-color:#d7dcef;background:#d7dcef;transition:none}.active-path .btn-group button span{color:#fff;padding:0 0 0 5px}.active-path .btn-group button:active,.active-path .btn-group button:focus{border-color:#d7dcef;background:#d7dcef}.active-path .btn-group .btn.active.focus,.active-path .btn-group .btn.active:focus,.active-path .btn-group .btn.focus,.active-path .btn-group .btn:active.focus,.active-path .btn-group .btn:active:focus,.active-path .btn-group .btn:focus{box-shadow:none;outline:none;border-color:#d7dcef;background:#d7dcef}.active-path .btn-group .btn-secondary{display:flex;justify-content:center;align-items:center;color:#2c54ac}.active-path .btn-group .btn-secondary span{color:#2c54ac}.active-path .btn-group .btn-secondary:hover{color:#1c3876;border-color:#d7dcef;background:#d7dcef}.active-path .btn-group .btn-secondary:hover span{color:#1c3876}.active-path .clickable{color:#2c54ac;padding-top:8px;cursor:pointer}.active-path .clickable:hover{color:#1c3876}.active-path .clickable:active{color:#2c54ac}.clickable-path{display:flex;float:0 0 auto}.list .list-container ul li svg{width:25px;vertical-align:top;margin-top:9px;margin-left:10px}.html5{color:#f16529}.file-alt{color:#20d2d1}.list .list-container ul li .marker{float:left;width:4px;height:34px;margin-right:5px}.list .list-container ul li .js{width:16px;color:#f7df1c;background:#000;margin:9px 4px 0 15px}.php{color:#777bb3}.css3{color:#0079cb}.sass{color:#cd6699}.image{color:#36afae}.folder-open{color:#e29741}.file{color:#11b1b1}.archive{color:#d1ce2b}.download{color:#929ca3}.fDate,.fOwner,.fPermissions,.fSize,.fTime{font-size:14px;float:right;width:60px;padding-top:2px}.list .list-container ul li .fName{margin-left:5px;width:260px;display:inline-block;overflow:hidden;text-overflow:clip}.list .list-container ul li .fName .name{padding:0 5px;float:left;margin-left:5px;line-height:34px;font-size:15px;white-space:nowrap;transition:all .3s ease-out}.list .list-container ul li .fName .name:hover{transition:all .2s ease-out;background:#c9c7c7;border-radius:4px;cursor:pointer}.list .list-container ul li.active .fName .name:hover{background:#f0b607;color:#000}.list .list-container ul li .fPermissions{margin-left:35px;width:50px;color:#727272;font-size:11px}.list .list-container ul li .fDate .date{color:#727272;font-size:11px}.list .list-container ul li .fTime{color:#727272;font-size:11px;width:54px}.fSize{padding-right:15px;text-align:right;width:95px}.list .list-container ul li .fOwner{color:#896417;font-style:italic;width:50px;font-size:12px;margin-right:5px}.value{color:#2c54ac}.unit{font-weight:bolder;color:#727272}li.inactive{background:#c9c7c7}li.inactive .marker{float:left;width:4px;height:34px;margin-right:5px;background:#a3a3a3}.inactive-selected{background:#dcdcdc}@media (max-width:1320px){.fOwner,.fPermissions{display:none}}.list{width:50%;height:100vh;flex:1 1 50%}.list .list-container{margin-top:10px;height:calc(100% - 100px);overflow:auto}.list .list-container ul{margin-top:5px;padding:0;color:#3a3a3a}.list .list-container ul li{display:block;height:34px;line-height:30px;font-size:15px;margin-top:2px;list-style:none}.list .list-container ul li span{font-size:13px}.list .list-container ul li:hover{background:#dedede}.list .list-container ul li.active{background:#ffdc5a}.list .list-container ul li.active .marker{float:left;width:4px;height:34px;margin-right:5px;background:#79641a}.list .list-container ul li.selected{background:#fdfdbb}@media screen and (max-width:1200px){.owner,.permissions{display:none}}.spinner-wrapper .progress{position:absolute;top:0;z-index:5;width:100%;margin:0;height:6px;display:inline-table}.spinner-wrapper .progress .progress-bar{height:10px}.modal{display:block;text-align:center;position:fixed;z-index:1;padding-top:200px;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:#000;background-color:rgba(0,0,0,.4)}.modal .modal-content{box-shadow:0 2px 11px 0 rgba(0,0,0,.5);background:#222e44;border:1px solid #111824;width:25%;height:auto;color:#fff;margin:100px auto auto}.modal .modal-content .modal-body{overflow-wrap:anywhere;font-size:17px;margin-bottom:40px}.modal .modal-content .modal-body input{background:#333;border:1px solid #111;color:#fff;margin-top:10px;width:85%}.modal .modal-content .modal-header{border-bottom:none;padding-bottom:0;word-break:break-word}.modal .modal-content .modal-header h3{color:#f8b014}.modal .modal-content .modal-header .replace{position:absolute;top:10px;right:10px}.modal .modal-content .modal-header .quot{color:#fdb51c}.modal .modal-content .modal-footer{border-top:1px solid #555}.modal .modal-content .modal-footer button{color:#fff;border-color:none;background:none;text-transform:uppercase;font-size:12px}.modal .modal-content .modal-footer button:focus{outline:none;box-shadow:none}.modal .modal-content .modal-footer button.btn-danger{border-color:transparent}.modal .modal-content .modal-footer button.btn-danger:focus{outline:none;border:none}.modal .modal-content .modal-footer button.btn-danger:hover{background:#b00e5b;border-color:#b00e5b}.modal .modal-content .modal-footer button+button{padding:6px 30px;background:#fcac04;border-color:#fcac04}.modal .modal-content .modal-footer button+button:hover{background:#d7dcef;border-color:#d7dcef;color:#2c54ac}.modal .modal-content .modal-footer button+button:hover{background:#1e5cb2;border-color:#1e5cb2;color:#fff}.modal .modal-content .header .quot{color:#fdb51c}.modal .modal-content .close{top:0;right:0;color:#000}.modal .nothing-selected h3{padding:15px}.modal .nothing-selected .modal-footer{margin-top:20px}.modal .nothing-selected .modal-footer button{background:#d9534f;border-color:#d9534f;color:#fff}.modal .delete .modal-header{border-bottom:none;padding-bottom:30px}.modal .delete .modal-header .close{position:absolute;top:15px;right:15px}.modal .permissions{height:auto;width:30%;margin-top:0}.modal .permissions .error,.modal .permissions:focus{border:1px solid red}.modal .permissions input[type=text]{size:40px;width:60px;margin:auto auto 10px;display:inline-block}.modal .permissions .header h3{margin-bottom:40px;font-size:30px}.modal .permissions form{margin-top:20px}.modal .permissions form div{display:flex;flex-direction:column;justify-content:space-between;margin-bottom:30px;margin-left:40px}.modal .permissions form div label{display:inherit;cursor:pointer;font-size:18px}.modal .permissions form div label input{margin-top:6px;margin-right:5px}.menu{display:flex;background:#f8f9fa;height:40px}.menu .logo{width:7rem;padding-left:5px;display:flex;justify-content:center;align-items:center}.menu .logo img{width:82%}.menu .btn-group{padding:0 0 0 10px;margin:0;font-size:17px;border-radius:0;background:#f8f9fa}.menu .btn-group .small{display:none}.menu .btn-group #upload{line-height:0;margin-top:7px;margin-bottom:7px;padding-top:8px;padding-bottom:7px;margin-left:2px;color:#fff;border-radius:4px;background:#2c54ac}.menu .btn-group #upload:hover{color:#2c54ac;background:#d7dcef}.menu .btn-group button{text-transform:uppercase;font-size:12px;padding-top:11px;padding-bottom:12px;margin:0 25px 0 2px;text-align:center}.menu .btn-group button:hover{color:#2c54ac}.menu .btn-group button:focus{box-shadow:none;outline:none}.menu .btn-group .btn-hidden,.menu .btn-group .upload{display:none}.menu .btn-group .delete:hover{color:#dd3939}@media screen and (max-width:1200px){.menu .btn-group .small{font-size:18px;padding-top:8px;display:inline-block}.menu .btn-group .icon{color:#777}.menu .btn-group .small:hover .copy,.menu .btn-group .small:hover .download,.menu .btn-group .small:hover .file,.menu .btn-group .small:hover .folder-close{color:#2c54ac}.menu .btn-group .small:hover .italic,.menu .btn-group .small:hover .paste,.menu .btn-group .small:hover .user{color:#2c54ac}.menu .btn-group .small:hover .trash{color:#dd3939}.menu .btn-group .small:hover .book{color:#2c54ac}.big{display:none}}html{overflow-y:scroll}.App{font-size:25px;font-family:Arial}.window{background:#ececec;height:100vh;width:100%;display:flex;flex-direction:column;overflow:hidden}.window .lists-container{display:flex;flex-direction:row}.active{background:#fff}.progress{height:10px;transition:all .1s ease-out}.Toastify__toast-body{font-size:20px;word-break:break-word}.Toastify__toast-container{top:15em}.actions div a.link-download:hover,.actions div a.link-edit:hover,.actions div button.link-download:hover,.actions div button.link-edit:hover{background:#2c54ac!important}.actions div a.link-list:hover,.actions div button.link-list:hover{background:#2c54ac!important}.actions div a.link-delete:hover,.actions div button.link-delete:hover{background:#b00e5b!important}.actions div a.link-gray:hover,.actions div button.link-gray:hover{background:#afafac!important}.actions div button{text-transform:inherit;font-weight:bolder;background:#dfdedd;border:none}.period:active,a:active,button:active{color:#1e5cb2}.list-item:first-child{margin-top:5px}.list-item .text-status{display:none}button:active,button:focus,button:hover{outline:none}.fixed-buttons.fm{position:fixed;right:15px;bottom:15px;display:flex;justify-content:space-around;align-items:center}.fixed-buttons.fm>div{width:40px;height:40px;padding:5px;margin:5px;border-radius:50%;background:#c3c3c3;display:flex;justify-content:center;align-items:center}.fixed-buttons.fm>div:hover{color:#2c54ac;background:#d7dcef}.fixed-buttons.fm>div:active{color:#fff;background:#1e5cb2}.fixed-buttons.fm>div button{display:flex;justify-content:center;align-items:center;background:none;border:none;width:100%;height:100%;border-radius:50%;-webkit-transform:scale(1.32);transform:scale(1.32)}.fixed-buttons.fm>div button svg{color:#fff;height:70%}.fixed-buttons.fm>div:first-child{background:#2c54ac}.fixed-buttons.fm>div:first-child:hover{color:#2c54ac;background:#d7dcef}.fixed-buttons.fm>div:first-child:hover button svg{color:#2c54ac}.fixed-buttons.fm>div:first-child:active{color:#fff;background:#1e5cb2}.fixed-buttons.fm>div:first-child:active button svg{color:#fff}.fixed-buttons.fm>div:first-child button{padding:0}.fixed-buttons.fm>div:first-child button svg{color:#fff}.editor{width:100%}.editor .panel-editor{display:flex;justify-content:flex-end;width:100%;height:40px;position:absolute;padding:3px;margin:0;background:rgba(0,0,0,.75);z-index:4;transition:all .5s ease-in-out;border-bottom:1px solid #000;border-radius:0}.editor .panel-editor button{font-size:17px;height:98%;margin:0 0 0 30px;padding:0 10px}.editor .panel-editor button:focus{outline:none;box-shadow:none}.editor .close{z-index:4;position:absolute;top:5px;right:5px;font-size:40px;opacity:1;color:#000}.editor .close:hover{color:#8b8b8b}.editor .CodeMirror{height:100vh;padding-top:4vh}.editor .CodeMirror .CodeMirror-selected{background:#accef7}.editor .CodeMirror .CodeMirror-scroll{font-size:14px}.editor .save{font-size:20px;left:95%;bottom:10px;position:absolute}.carousel{width:100%;position:relative}.carousel a{width:5%}.carousel .carousel-inner .carousel-item{background:#000;width:100%;height:100vh}.carousel .carousel-inner .carousel-item .gif{height:50%;width:50%}.carousel .carousel-inner .carousel-item .img{width:90%}.carousel .carousel-indicators .indicator{margin:0 15px;width:80px;height:80px}.carousel .carousel-indicators .indicator .control-photo{width:100px;height:80px}.carousel .carousel-indicators .indicator:hover{cursor:pointer}.carousel .carousel-indicators .indicator.active>img{border:3px solid #3cc3f0}.carousel .carousel-indicators .indicator .active{border:3px solid #3cc3f0}span.close{z-index:10;font-size:30px;position:absolute;top:5px;right:10px;opacity:1;color:#fff;cursor:pointer}span.close:hover{color:#fff}.video-preview{padding-bottom:17px;width:100%;background:#000}.video-preview .close{z-index:1;font-size:30px;position:absolute;top:5px;right:2px;opacity:1;color:#fff}.video-preview .close:hover{color:#000}.video-preview .video{width:100%;height:auto}.video-preview .video:focus{outline:none}.l-col{padding-left:15px}.r-col{font-size:13px}.w-14{width:14.3%}.w-20{width:20%}.w-25{width:25%}.w-30{width:30%}.w-35{width:35%}.w-40{width:40%}.w-45{width:45%}.w-50{width:50%}.w-60{width:60%}.w-85{width:85%}.content .edit-template{padding-bottom:2rem}.content .edit-template .toolbar{justify-content:unset}.content .edit-template .toolbar>div{width:14.3%;display:flex;align-items:center}.content .edit-template .toolbar div.error,.content .edit-template .toolbar div.success{width:-webkit-max-content!important;width:max-content!important}.content .edit-template .toolbar div.error span,.content .edit-template .toolbar div.success span{font-weight:700;font-size:14px}.content .edit-template .toolbar div.error span svg,.content .edit-template .toolbar div.success span svg{font-size:13px;margin-right:10px}.content .edit-template .toolbar div.error span.error-message,.content .edit-template .toolbar div.success span.error-message{color:#be5abf}.content .edit-template .toolbar div.error span.error-message svg,.content .edit-template .toolbar div.success span.error-message svg{margin-right:7px;font-size:13px;color:#be5abf}.content .edit-template .toolbar div.error span.ok-message,.content .edit-template .toolbar div.error span.ok-message svg,.content .edit-template .toolbar div.success span.ok-message,.content .edit-template .toolbar div.success span.ok-message svg{color:#2c54ac}.content .edit-template .toolbar .search-toolbar-name{padding:10px 0;margin-left:0}.show{display:flex}.edit-item,.login-layout{display:flex;font-size:15px;margin-top:3rem;margin-bottom:1rem}.edit-item .l-col,.login-layout .l-col{margin-right:1.75%}.edit-item form,.login-layout form{width:100%}.edit-item form a,.edit-item form button,.login-layout form a,.login-layout form button{color:#2c54ac;font-weight:700}.edit-item form a:hover,.edit-item form button:hover,.login-layout form a:hover,.login-layout form button:hover{color:#f8b014}.edit-item form a:active,.edit-item form button:active,.login-layout form a:active,.login-layout form button:active{color:#fdb51c}.edit-item form button.optional:hover,.login-layout form button.optional:hover{color:#2c54ac}.edit-item form button.optional:active,.login-layout form button.optional:active{color:#d7dcef}.edit-item form button.delete:hover,.login-layout form button.delete:hover{color:#b00e5b}.edit-item form button.delete:active,.login-layout form button.delete:active{color:#b11661}.edit-item form .form-group input[type=email],.edit-item form .form-group input[type=password],.edit-item form .form-group input[type=text],.edit-item form .form-group select,.edit-item form .form-group textarea,.login-layout form .form-group input[type=email],.login-layout form .form-group input[type=password],.login-layout form .form-group input[type=text],.login-layout form .form-group select,.login-layout form .form-group textarea{width:50%}.edit-item form .form-group select,.edit-item form .form-group textarea,.login-layout form .form-group select,.login-layout form .form-group textarea{border-radius:0}.edit-item form .form-group select:hover,.edit-item form .form-group textarea:hover,.login-layout form .form-group select:hover,.login-layout form .form-group textarea:hover{border-color:#909090}.edit-item form .form-group select:active,.edit-item form .form-group select:focus,.edit-item form .form-group textarea:active,.edit-item form .form-group textarea:focus,.login-layout form .form-group select:active,.login-layout form .form-group select:focus,.login-layout form .form-group textarea:active,.login-layout form .form-group textarea:focus{outline:none;border-color:#1e5cb2;box-shadow:unset}.edit-item form input:-webkit-autofill,.edit-item form input:-webkit-autofill:active,.edit-item form input:-webkit-autofill:focus,.edit-item form input:-webkit-autofill:hover,.login-layout form input:-webkit-autofill,.login-layout form input:-webkit-autofill:active,.login-layout form input:-webkit-autofill:focus,.login-layout form input:-webkit-autofill:hover{background-color:#d7dcef;border-color:#1e5cb2;-webkit-filter:none;filter:none;box-shadow:none}.edit-item form input:autofill,.edit-item form input:autofill:active,.edit-item form input:autofill:focus,.edit-item form input:autofill:hover,.login-layout form input:autofill,.login-layout form input:autofill:active,.login-layout form input:autofill:focus,.login-layout form input:autofill:hover{background-color:#d7dcef;border-color:#1e5cb2;-webkit-filter:none;filter:none;box-shadow:none}.edit-item form button,.login-layout form button{background:unset;border:none;box-shadow:unset}.edit-item form button:active,.edit-item form button:focus,.login-layout form button:active,.login-layout form button:focus{outline:none}.edit-item form input,.login-layout form input{height:calc(1.5em + .75rem + 6px);border-radius:0}.edit-item form input:hover,.login-layout form input:hover{border-color:#909090}.edit-item form input:active,.edit-item form input:focus,.login-layout form input:active,.login-layout form input:focus{box-shadow:unset;border-color:#1e5cb2;background:rgba(215,220,239,.62)}.edit-item form label,.login-layout form label{color:#555;font-weight:700}.edit-item form label.label-wrapper,.login-layout form label.label-wrapper{display:flex;align-items:flex-end;width:-webkit-max-content;width:max-content}.edit-item form label.label-wrapper span,.login-layout form label.label-wrapper span{font-weight:400;text-transform:uppercase;margin-left:5px;font-size:12px}.edit-item form .checkbox-wrapper,.login-layout form .checkbox-wrapper{display:flex;align-items:center}.edit-item form .checkbox-wrapper label,.login-layout form .checkbox-wrapper label{margin:0 12px}.edit-item form input,.login-layout form input{color:#555}.edit-item form .buttons-wrapper,.login-layout form .buttons-wrapper{margin-top:2.5rem}.edit-item form .buttons-wrapper button,.login-layout form .buttons-wrapper button{font-weight:700;font-size:13px;margin-right:10px;padding:.35rem 2.25rem;border-radius:4px;transition:all .2s cubic-bezier(.4,.1,.5,.85)}.edit-item form .buttons-wrapper .add,.login-layout form .buttons-wrapper .add{color:#fff;background:#2c54ac}.edit-item form .buttons-wrapper .add:hover,.login-layout form .buttons-wrapper .add:hover{color:#2c54ac;background:#d7dcef}.edit-item form .buttons-wrapper .add:active,.login-layout form .buttons-wrapper .add:active{color:#fff;background:#1e5cb2}.edit-item form .buttons-wrapper .back,.login-layout form .buttons-wrapper .back{color:#777;background:#dfdedd}.edit-item form .buttons-wrapper .back:hover,.login-layout form .buttons-wrapper .back:hover{color:#fff;background:#999}.edit-item .l-col,.login-layout .l-col{padding:20px 0 0}.edit-item .l-col .date,.edit-item .l-col .time,.login-layout .l-col .date,.login-layout .l-col .time{margin:10px 0 0;color:#777;font-size:12px;letter-spacing:1px}.edit-item .l-col .time,.login-layout .l-col .time{margin:6px 0 10px}.edit-item .l-col .status,.login-layout .l-col .status{color:#2c54ac;font-size:11px;letter-spacing:1px;text-transform:uppercase;font-weight:700}.toolbar{display:flex;flex-direction:row;justify-content:space-between;background:#fff;position:fixed;top:0;left:0;width:100%;z-index:1;padding:3px 13% 1px;border-top:1px solid #e0e0e0;border-bottom:1px solid #e0e0e0}.toolbar .r-menu{display:flex;justify-content:center;align-items:center}.toolbar .r-menu a.button-extra,.toolbar .r-menu button.button-extra{background:none;border:none;padding:0 .75rem;text-decoration:none;color:#817d7d;font-size:14px;display:flex;justify-content:center;align-items:center;margin-right:10px;border-radius:3px}.toolbar .r-menu a.button-extra:hover,.toolbar .r-menu button.button-extra:hover{background:#d7dcef;color:#2c54ac}.toolbar .r-menu a.button-extra:active,.toolbar .r-menu button.button-extra:active{background:#1e5cb2;color:#fff}.toolbar .r-menu .input-group .input-group-prepend{height:30px;margin-right:15px}.toolbar .r-menu .input-group .input-group-prepend div,.toolbar .r-menu .input-group .input-group-prepend span{padding-left:0;background:none;border:none}.toolbar .r-menu .input-group .input-group-prepend label{margin-bottom:0}.toolbar .r-menu #inputGroupSelect04{height:30px;padding-top:2px;outline:none}.toolbar .r-menu #inputGroupSelect04:focus{outline:none;box-shadow:none}.toolbar .r-menu select+div:focus{outline:none}.toolbar .r-menu select+div:hover{background:#b3b8bd}.toolbar .r-menu select+div button{border-color:#ced4da}.toolbar .r-menu .input-group-append{height:30px}.toolbar .r-menu .input-group-append button{padding-top:3px}.toolbar .r-menu .btn:focus,.toolbar .r-menu .button:focus,.toolbar .r-menu button:focus{outline:none;box-shadow:none;border-color:none}.toolbar .r-menu .btn.btn-sm{height:30px;margin-left:15px}.toolbar .r-menu .btn.btn-sm:hover{color:#212529;background-color:#fff;border-color:none}.toolbar .r-menu .btn.btn-sm:active{background:#fff}.toolbar .r-menu .btn.btn-sm div{padding-top:3px}.toolbar .r-menu .btn-group.show .btn-outline-secondary{background-color:#fff;color:#212529}.toolbar .r-menu .btn-group.show .btn-outline-secondary:hover{background-color:#fff}.toolbar.justify-right{justify-content:flex-end}.toolbar.justify-right .r-menu>div>*{margin:0 10px}.toolbar.t-shadow{box-shadow:0 5px 3px 0 hsla(0,0%,78.4%,.5)}@media (max-width:1350px){.toolbar{padding:3px 10% 1px}}@media (max-width:450px){.mobile-toolbar .toolbar{display:flex;flex-direction:column-reverse;padding-bottom:5px;height:100%}.mobile-toolbar .toolbar .r-menu{height:50%;margin-top:15px}.mobile-toolbar .toolbar .r-menu .input-group>div:first-child{width:100%;display:flex;justify-content:center;margin:15px 0}.mobile-toolbar .toolbar .r-menu .input-group select{margin-left:100px}.mobile-toolbar .toolbar .r-menu .input-group select+div{margin-right:85px}.mobile-toolbar .toolbar .r-menu .input-group>.btn-group{width:60%;margin-left:75px;margin-top:15px}.mobile-toolbar .toolbar .l-menu{display:flex;flex-direction:column-reverse;justify-content:flex-end;align-items:center;-webkit-transform:none;transform:none;height:50%;margin-top:40px}.mobile-toolbar .toolbar .l-menu button{width:30px;height:30px}.mobile-toolbar .toolbar .l-menu button svg{width:17px;height:30px}}.edit-ip form .dedicated-form-group{-webkit-transform:translateX(3rem);transform:translateX(3rem);margin-bottom:2rem}div.edit-item form label.label-wrapper{align-items:center}div.edit-item form label.label-wrapper span{text-transform:lowercase}div.edit-item form div.assigned-user{padding-left:25px}div.edit-item form div.assigned-user select{width:48.4%}.content .edit-template.edit-nginx .toolbar .search-toolbar-name{width:-webkit-max-content;width:max-content}.content .edit-template.edit-nginx .toolbar .link{width:-webkit-max-content;width:max-content;margin-left:15px}.content .edit-template.edit-nginx .toolbar .link a{text-decoration:none;font-size:12px;text-transform:uppercase;color:#777;font-weight:700}.content .edit-template.edit-nginx .toolbar .link a:hover{color:#f8b014}.content .edit-template.edit-nginx textarea{width:75%}.content .edit-template.edit-nginx .checkbox-wrapper label{text-transform:capitalize}.content .edit-template.edit-nginx svg{margin-left:5px}.content .edit-template.edit-pgsql .toolbar .search-toolbar-name{width:-webkit-max-content;width:max-content}.content .edit-template.edit-pgsql textarea{width:75%}.content .edit-template.edit-pgsql .checkbox-wrapper label{text-transform:capitalize}.content .edit-backup-exclusions .toolbar .search-toolbar-name{width:auto}.btn-group button{border:0}.btn-group button>span{display:inline-block;vertical-align:bottom;margin-left:5px;height:100%;width:auto}.btn-group button:after{display:none}.dropdown-menu{padding:0;border-radius:0;font-size:13px;width:200px}.dropdown-menu ul{padding:0;margin:0;display:inline-block;list-style:none;height:auto;width:100%;color:#333}.dropdown-menu ul li{display:flex;width:100%;height:37.5px;border-top:1px solid #dbdbdb}.dropdown-menu ul li .arrow-down{float:right}.dropdown-menu ul li .dropdown-item:hover{background:#bdbdbd}.dropdown-menu ul li>span:first-child{width:75%;padding:0 5px}.dropdown-menu ul li>span:nth-child(2){display:flex;justify-content:center;align-items:center;width:25%}.dropdown-menu ul li span{padding:0 5px 0 10px;line-height:38px}.dropdown-menu ul li span.active{background:#ffc900}.dropdown-menu ul li span+span{text-align:center}.dropdown-menu ul li:first-child{border-width:0 0 1px}.search-input-form{display:flex;width:180px}.search-input-form input{height:30px;margin-left:10px;border-radius:0}.search-input-form button{display:flex;align-items:center;justify-content:center;border-radius:0;border:1px groove #fff;height:30px}.list-item{display:flex;justify-content:flex-start;align-items:flex-start;font-size:18px;position:relative;padding:25px 0;border-left:2px solid #fff;border-bottom:1px solid #ddd;color:#686868}.list-item:hover .actions,.list-item:hover .l-col div.star div svg{opacity:1}.list-item .l-col .suspended{letter-spacing:3px}.list-item .l-col .text-status{font-size:10px}.list-item .l-col div.star{display:flex;align-items:center}.list-item .l-col div.star div.checkbox{margin:0 25% 4px 0}.list-item .r-col .stats div>span{width:50%;text-align:left}.list-item .r-col .stats .c-2 div>span{width:50%}.list-item .r-col div.bandwidth span,.list-item .r-col div.disk span{width:auto}.list-item .date{font-size:13px;margin:20px 0 10px}.list-item.toggled{background:#feef9a}.list-item.starred{border-left:2px solid #2c54ac}.list-item.starred .l-col div.star div>svg{opacity:1;color:#2c54ac}.list-item.suspended{background:#eaeaea;color:silver}.list-item.suspended .r-col div,.list-item.suspended .r-col span{color:silver!important}.list-item.suspended.toggled{background:#f2eab8;color:#b2ac87}.list-item.suspended.toggled .l-col,.list-item.suspended.toggled .r-col .name,.list-item.suspended.toggled .r-col .stats{color:#b2ac87!important}.list-item.outdated{background:#ffcaca;border-left:5px solid #ff6f6f}.list-item.toggled.outdated{background:#755d5d;color:#000}.list-item.toggled.outdated .stat{color:#000}.list-item.stopped{background:#eaeaea}.list-item.focused{border-left:2px solid #f8b014}.list-item.focused .l-col div.star div>svg{color:#f8b014}.list-item.focused .actions{opacity:1}.list-item.focused .actions div>a,.list-item.focused .actions div>button{padding-top:6.5px;padding-bottom:6.5px}.list-item.focused .actions div>a .shortcut-button,.list-item.focused .actions div>button .shortcut-button{border-radius:50%;width:25px;height:25px;margin-left:15px;background:#f8b014;color:#fff;display:flex;justify-content:center;align-items:center;font-size:14px}.list-item.focused .actions div>a .shortcut-button.html-unicode,.list-item.focused .actions div>button .shortcut-button.html-unicode{align-items:flex-end}.list-item.focused .actions div>a .shortcut-button.del,.list-item.focused .actions div>button .shortcut-button.del{text-transform:capitalize;font-size:10px}.l-menu{-webkit-transform:translate(35px,50%);transform:translate(35px,50%)}.l-menu a,.l-menu button{display:flex;justify-content:center;align-items:center;background:#2c54ac;border-radius:100%;color:#fff;width:45px;height:43px;outline:none;border:none;text-decoration:none}.l-menu a:hover,.l-menu button:hover{background:#d7dcef}.l-menu a:hover span.add,.l-menu button:hover span.add{display:block;color:#2c54ac;background:#d7dcef}.l-menu a:hover svg,.l-menu button:hover svg{color:#2c54ac}.l-menu a:active,.l-menu button:active{background:#2c54ac}.l-menu a:active span.add,.l-menu button:active span.add{display:block;color:#fff;background:#2c54ac}.l-menu a:active svg,.l-menu button:active svg{color:#fff}.l-menu a span.add,.l-menu button span.add{width:-webkit-max-content;width:max-content;display:none;padding:4px 10px 4px 25px;background:#2c54ac;border-radius:15px;color:#fff;font-size:15px;position:absolute;left:25px;z-index:-1;text-align:right}.l-menu a svg,.l-menu button svg{width:31px;height:21px}.l-menu.none{display:none}.exclusions-list .l-menu.backup-details-icon,.servers-list .l-menu.backup-details-icon{-webkit-transform:translateX(2px);transform:translateX(2px)}input{border-radius:0}.select-wrapper{display:flex}.select-wrapper button,.select-wrapper select{border-radius:0}div.modal{z-index:2}div.content .modal .modal-content{width:75%}div.content .modal .modal-content .modal-header button.close{color:#fff}div.content .modal .modal-content .modal-footer .btn-primary{background:#2c54ac;border:1px solid #2c54ac}.edit-web .additional-ftp .title .indexed-name{font-weight:700}.additional-ftp .title span:first-child{color:#555;font-size:15px;font-weight:700}.additional-ftp .form-transform{margin-top:15px;-webkit-transform:translateX(3rem);transform:translateX(3rem)}.additional-ftp .form-transform .form-group.username{display:flex;flex-direction:column}.additional-ftp .form-transform .form-group.username label{margin:0}.additional-ftp .form-transform .form-group.username span{font-size:10pt;color:#777;font-weight:700;margin-bottom:10px}.additional-ftp .form-transform .form-group.username .input-wrapper{display:flex;align-items:center}.additional-ftp .form-transform .form-group.username .input-wrapper span{color:#777;font-size:15px;font-style:italic;font-weight:400;margin-left:15px}.additional-ftp .path-note{font-weight:700;color:#555}.ssl-support{-webkit-transform:translateX(3rem);transform:translateX(3rem)}.ssl-support .lets-encrypt-span{font-style:italic;color:#89a40a}.statistics-authorization,.web-stats-wrapper{-webkit-transform:translateX(3rem);transform:translateX(3rem)}.web-stats-wrapper{display:flex;flex-direction:column}.add-web form .form-group .checkbox-wrapper{display:flex;align-items:center}.add-web form .form-group .checkbox-wrapper label{margin:0 10px}.add-web form .advanced-options-button button{display:flex;align-items:center;padding:0}.add-web form .advanced-options-button button svg{margin-left:10px}.add-web #c-panel-modal{padding:2rem}.add-web #c-panel-modal form .form-group input[type=text]{width:90%!important}.add-web #c-panel-modal label{color:#fff}.add-web #c-panel-modal .form-group{padding-left:1.5rem}.add-web #c-panel-modal .form-group textarea{width:90%!important}.add-web #c-panel-modal .l-col{display:none}.form-group.text-on-the-right .input-wrapper{display:flex;align-items:center}.form-group.text-on-the-right .input-wrapper span{margin-left:15px;color:#777}.input-wrapper{display:flex;align-items:center}.input-wrapper span.italic{margin-left:15px;color:#777}.edit-firewall form .form-group .label-wrapper span{text-transform:none}.hotkeys-list{position:fixed;bottom:0;right:0;display:flex;flex-direction:column;-webkit-transform:translateX(-45%);transform:translateX(-45%);width:53%;background:rgba(34,46,68,.87);font-size:13px}.hotkeys-list .head{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #fcac04}.hotkeys-list .head .name{text-transform:uppercase;font-size:12px;font-weight:700;color:#fcac04;letter-spacing:2px;padding:15px}.hotkeys-list .head .close{padding:12px;opacity:1!important}.hotkeys-list .head .close svg{color:#fcac04}.hotkeys-list .head .close:hover{cursor:pointer;background:#222e44}.hotkeys-list .body{display:flex}.hotkeys-list .body ul{padding:25px 10px;width:50%;list-style:none;margin:0 0 0 3rem}.hotkeys-list .body ul li{padding:5px}.hotkeys-list .body ul li span.name{margin-right:15px;color:#fcac04;font-weight:700}.hotkeys-list .body ul li span.description{color:#fff}.hotkeys-list .body ul li.space-top{padding-top:30px}.hide{display:none}.edit-template.add-db form span.italic{font-style:italic}.edit-template.add-db form .form-group .label-wrapper{display:flex}.edit-template.add-db form .form-group .label-wrapper span.italic{margin-left:1.5rem;color:#555}.edit-template.add-db form .form-group .input-wrapper{display:flex;align-items:center}.edit-template.add-db form .form-group .input-wrapper span.italic{font-size:15px;font-weight:700;margin-left:1.5rem;color:#777;font-weight:400}.edit-template.add-db form .form-group.database{margin-top:1rem}.edit-template.add-db form span.prefix{color:#777;font-style:italic}.content .edit-template.add-firewall .toolbar .search-toolbar-name{width:-webkit-max-content;width:max-content}.content .edit-template.add-firewall label.label-wrapper[for=ip] span{text-transform:unset!important}.cron-form-body .fourth-tab-selects,.cron-form-body .third-tab-selects{display:flex}.cron-form-body .fourth-tab-selects div.hour select,.cron-form-body .third-tab-selects div.hour select{width:70px;margin-left:4.8rem}.cron-form-body .fourth-tab-selects div.minute label,.cron-form-body .fourth-tab-selects div.minute select,.cron-form-body .third-tab-selects div.minute label,.cron-form-body .third-tab-selects div.minute select{margin:0}.cron-form-body .fifth-tab-selects{display:flex}.cron-form-body .fifth-tab-selects>div{width:10%}.cron-form-body .fifth-tab-selects>div select{width:70px}.cron-form-body .fifth-tab-selects>div.date{margin:0 0 1rem}.cron-form-body .fifth-tab-selects>div.minute{width:200px}.cron-form-body .fifth-tab-selects>div.hour{width:155px;margin-left:1rem}.cron-form-body .fifth-tab-selects>div.hour select{margin-left:.75rem}.cron-form-body .fifth-tab-selects>div.date{width:240px}.cron-form-body .fifth-tab-selects>div.date select{margin-left:5.85rem}.cron-job-generator{border:1px solid #d9d9d9;padding:1rem 1.5rem;margin-left:2rem;width:90%}.cron-job-generator .header{display:flex;padding:.4rem 0}.cron-job-generator .header a{color:#222;text-transform:uppercase;font-size:11px;font-weight:bolder;margin-right:2.3rem;text-decoration:none}.cron-job-generator .header a:hover{color:#f8b014}.cron-job-generator .header a:active{color:#1e5cb2}.cron-job-generator .header a.active{color:#fdb51c}.cron-job-generator .body{padding:2rem 0 .4rem}.cron-job-generator .body form .form-group{display:flex;align-items:center}.cron-job-generator .body form .form-group label{width:26%;font-size:13px;margin:0}.cron-job-generator .body form .form-group input{width:auto}.cron-job-generator .body form .form-group.minute select{width:70px}.cron-job-generator .body form .form-group select,.cron-job-generator .body form .form-group textarea{border-radius:0}.cron-job-generator .body form .form-group select:hover,.cron-job-generator .body form .form-group textarea:hover{border-color:#909090}.cron-job-generator .body form .form-group select:active,.cron-job-generator .body form .form-group select:focus,.cron-job-generator .body form .form-group textarea:active,.cron-job-generator .body form .form-group textarea:focus{outline:none;border-color:#1e5cb2;box-shadow:unset}.cron-job-generator .body form .form-group select{padding:.4rem .25rem;border-color:#d9d9d9;color:#555}.cron-job-generator .body form .form-actions button{background:#2c54ac;color:#fff;border-radius:3px;padding:.35rem 1.1rem;font-size:14px}.cron-job-generator .body form .form-actions button:hover{color:#2c54ac;background:#d7dcef}.cron-job-generator .body form .form-actions button:active{color:#fff;background:#1e5cb2}.cron-job-generator .body form .form-group.show{display:block}.cron-job-generator .body form .form-group.hide{display:none}.edit-cron form .form-group{width:100%}.edit-cron form .form-group input{width:inherit}.edit-cron form .form-group.command{width:100%}.edit-cron form .cron-form-body{display:flex}.edit-cron form .cron-form-body .body-col-1{width:30%}.edit-cron form .cron-form-body .body-col-1 input{width:100%}.edit-cron form .cron-form-body .body-col-2{display:flex;justify-content:flex-start;align-items:flex-start;padding:1.7rem 1rem;width:70%}#edit-cron>.form-group input{width:95%!important}.edit-package form .form-group .input-wrapper{display:flex;align-items:center}.edit-package form .form-group .input-wrapper button{-webkit-transform:translateX(5px);transform:translateX(5px)}.content .edit-template.edit-httpd .toolbar .search-toolbar-name{width:-webkit-max-content;width:max-content}.content .edit-template.edit-httpd .toolbar .search-toolbar-name a{color:#fcac04;text-decoration:none}.content .edit-template.edit-httpd .toolbar .search-toolbar-name a:hover{color:#777}.content .edit-template.edit-httpd .toolbar .link{width:-webkit-max-content;width:max-content;margin-left:15px}.content .edit-template.edit-httpd .toolbar .link a{text-decoration:none;font-size:12px;text-transform:uppercase;color:#777;font-weight:700}.content .edit-template.edit-httpd .toolbar .link a:hover{color:#f8b014}.content .edit-template.edit-httpd textarea{width:75%}.content .edit-template.edit-httpd .checkbox-wrapper label{text-transform:capitalize}.content .edit-template.edit-httpd svg{margin-left:5px}.edit-template.add-cron form .form-group{width:100%}.edit-template.add-cron form .form-group input{width:inherit}.edit-template.add-cron form .form-group.command{width:100%}.edit-template.add-cron form .cron-form-body{display:flex}.edit-template.add-cron form .cron-form-body .body-col-1{width:30%}.edit-template.add-cron form .cron-form-body .body-col-2{display:flex;justify-content:flex-start;align-items:flex-start;padding:1.7rem 1rem;width:70%}.edit-template.add-package form label.label-wrapper{display:flex;align-items:flex-end;width:-webkit-max-content;width:max-content}.edit-template.add-package form label.label-wrapper span{font-weight:400;text-transform:uppercase;margin-left:5px;font-size:12px}.edit-template.add-package form label.label-wrapper span.lowercase{text-transform:lowercase}.edit-template.add-package form .input-wrapper{display:flex;align-items:center}.edit-template.add-package form .input-wrapper svg{cursor:pointer;color:#bec4ca;margin-left:10px}.edit-template.add-package form .input-wrapper svg:hover{color:#abb1b6}.edit-server .modules{display:flex;flex-direction:column;align-items:flex-start}.edit-server .modules>div{display:flex;align-items:center;width:100%;margin:5px 0}.edit-server .modules>button{margin:15px 0}.edit-server .modules>button svg{margin-left:10px}.edit-server .modules .form-group a{text-decoration:none;color:#2c54ac;font-weight:700;font-size:14px}.edit-server .modules .form-group a:hover{color:#d7dcef}.edit-server .modules .additional-info{margin-top:10px;-webkit-transform:translateX(3rem);transform:translateX(3rem)}.edit-server .modules .additional-info>div{display:flex;margin:5px 0}.edit-server .modules .additional-info>div span{font-size:12px;color:#555}.edit-server .modules .additional-info>div span:first-child{width:180px}.edit-server .modules .server-dns-option,.edit-server .modules .server-mail-option,.edit-server .modules .server-mail-option .hosts,.edit-server .modules .server-mail-option .mail-cert-info,.edit-server .modules .server-plugins-option,.edit-server .modules .server-plugins-option .fm-module,.edit-server .modules .server-plugins-option .sftp-module,.edit-server .modules .server-plugins-option .soft-module,.edit-server .modules .server-ssl-option,.edit-server .modules .server-ssl-option .domain-group,.edit-server .modules .server-web-option{-webkit-transform:translateX(3rem);transform:translateX(3rem)}.edit-server .modules .server-plugins-option .fm-module,.edit-server .modules .server-plugins-option .sftp-module{font-size:15px;color:#555}.edit-server .modules .server-plugins-option .buy-license{display:flex;margin:5px 0}.edit-server .modules .server-plugins-option .buy-license a{color:#fff;background:#2c54ac;border:none;border-radius:3px;font-size:13px;font-weight:700;padding:7px 15px;text-transform:capitalize;text-decoration:none;width:-webkit-max-content;width:max-content;margin-right:10px}.edit-server .modules .server-plugins-option .buy-license a:hover{color:#2c54ac;background:#d7dcef}.edit-server .modules .server-plugins-option .buy-license a:hover{color:#fff;background:#1e5cb2}.edit-server .modules .server-plugins-option .buy-license+span{display:block;margin-top:15px;font-style:italic;font-size:12px}.edit-server .modules .server-plugins-option .license-description{display:flex;align-items:center;margin:1rem 0}.edit-server .modules .server-plugins-option .license-description>span{color:#2c54ac}.edit-server .modules .server-plugins-option .license-description .form-group{margin:0 0 0 20px;width:60%}.edit-server .modules .server-plugins-option .license-description .form-group label{display:none}.mail-info-block .select-group select{margin-bottom:10px;margin-top:5px;padding:0;border:none;color:#2c54ac;text-transform:uppercase;font-size:11px;font-weight:700;cursor:pointer}.mail-info-block .select-group .details{font-size:14px;color:#777}.mail-info-block .select-group .details>div{display:flex}.mail-info-block .select-group .details>div span:first-child{width:50%}.content .edit-template.edit-service .toolbar .search-toolbar-name{width:-webkit-max-content;width:max-content}.content .edit-template.edit-service textarea{width:75%}.content .edit-template.edit-service .checkbox-wrapper label{text-transform:capitalize}.content .edit-template.add-mail-account .search-toolbar-name{width:-webkit-max-content;width:max-content}.content .edit-template.add-mail-account form .r-1{display:flex}.content .edit-template.add-mail-account form .r-1 .c-1{width:55%}.content .edit-template.add-mail-account form .r-1 .c-1 .form-group>*{width:85%}.content .edit-template.add-mail-account form .r-1 .c-1 .form-group .password-wrapper input{width:100%}.content .edit-template.add-mail-account form .r-1 .c-1 .form-group:nth-child(3)>div{display:flex}.content .edit-template.add-mail-account form .r-1 .c-1 .form-group:nth-child(3)>div input{width:100%}.content .edit-template.add-mail-account form .r-1 .c-1 .form-group:nth-child(3)>div input+button{padding-left:10px}.content .edit-template.add-mail-account form .r-1 .c-2{width:45%;height:100%;border:1px solid #d9d9d9;padding:0 5px 12px 20px}.content .edit-template.add-mail-account form .r-2>button{padding-left:0;margin-bottom:1.5rem}.content .edit-template.add-mail-account form .r-2>button svg{margin-left:.75rem}.content .edit-template.add-mail-account form .r-2 .form-group .input-wrapper{display:flex}.edit-dns .label-wrapper span{text-transform:uppercase!important}.edit-web .ssl-support .additional-info{display:flex;flex-direction:column}.edit-web .ssl-support .additional-info span:first-child{width:120px;display:inline-block}.edit-web .ssl-support .additional-info span:nth-child(2){width:-webkit-max-content;width:max-content}.edit-web .ssl-support a.generate-csr{text-transform:none;text-decoration:none;color:#2c54ac;font-weight:700}.edit-web .ssl-support a.generate-csr:hover{color:#f8b014}.edit-web .web-stat-additional{-webkit-transform:translateX(3rem);transform:translateX(3rem)}.edit-web #c-panel-modal{padding:2rem}.edit-web #c-panel-modal form .form-group input[type=text]{width:90%!important}.edit-web #c-panel-modal label{color:#fff}.edit-web #c-panel-modal .form-group{padding-left:1.5rem}.edit-web #c-panel-modal .form-group textarea{width:90%!important}.edit-web #c-panel-modal .l-col{display:none}.content .edit-template.edit-php .toolbar .search-toolbar-name{width:-webkit-max-content;width:max-content;color:#555}.content .edit-template.edit-php .toolbar .link,.content .edit-template.edit-php .toolbar .search-toolbar-name{width:-webkit-max-content;width:max-content}.content .edit-template.edit-php .toolbar .link a,.content .edit-template.edit-php .toolbar .search-toolbar-name a{text-decoration:none;font-size:12px;text-transform:uppercase;color:#555;font-weight:700}.content .edit-template.edit-php .toolbar .link a:hover,.content .edit-template.edit-php .toolbar .search-toolbar-name a:hover{color:#f8b014}.content .edit-template.edit-php .toolbar .link{margin-left:15px}.content .edit-template.edit-php .toolbar .link a{color:#fcac04}.content .edit-template.edit-php .toolbar .link a:hover{color:#555}.content .edit-template.edit-php textarea{width:75%}.content .edit-template.edit-php .checkbox-wrapper label{text-transform:capitalize}.content .edit-template.edit-php svg{margin-left:5px}.r-menu>div>button{color:grey}.r-menu>div>button:hover{color:grey}.firewalls .list-item .l-col .date{display:none}.firewalls .list-item .r-col .stats{margin-top:15px}.firewalls .list-item .r-col .stats .cron-col div span{font-weight:unset;font-size:13px}.firewalls .list-item .r-col .stats .cron-col div span.stat{font-weight:700}.firewalls-wrapper .r-col .stats>div{flex:none;width:17%}.content .edit-template.edit-bind9 .toolbar .search-toolbar-name{width:-webkit-max-content;width:max-content}.content .edit-template.edit-bind9 textarea{width:75%}.content .edit-template.edit-bind9 .checkbox-wrapper label{text-transform:capitalize}.content .edit-template.edit-mysql .toolbar .search-toolbar-name{width:-webkit-max-content;width:max-content}.content .edit-template.edit-mysql textarea{width:75%}.content .edit-template.edit-mysql .checkbox-wrapper label{text-transform:capitalize}.add-dns form .advanced-options-button svg,.content .edit-template.edit-mysql svg{margin-left:5px}.edit-item form div.name-server-input-wrapper{display:flex;align-items:center;margin:10px 0}.edit-item form div.name-server-input-wrapper button{margin-left:10px}.edit-item form .exp-date .optional{font-size:12px;padding:0 0 0 6px;font-weight:400}.backups-restore-settings .list-item .r-col .stats .c-1{margin:12px 0 0}.backups-restore-settings .list-item .actions>div{font-weight:bolder;text-transform:uppercase;height:38px}.backups-restore-settings .list-item .actions>div a,.backups-restore-settings .list-item .actions>div button{display:flex;justify-content:center;align-items:center;color:#555;padding:10px 15px;text-decoration:none}.backups-restore-settings .list-item .actions>div a:hover,.backups-restore-settings .list-item .actions>div button:hover{background:#ececec;color:#fff}.backups-restore-settings .list-item .actions>div a:hover svg,.backups-restore-settings .list-item .actions>div button:hover svg{color:#fff}.backups-restore-settings .list-item .actions>div svg{color:#555}.backups-restore-settings .list-item .actions .link-restore svg{color:#fff}.backups-restore-settings .list-item .actions .link-restore:hover{color:#2c54ac;background-color:#d7dcef}.backups-restore-settings .list-item .actions .link-restore:hover{color:#fff;background-color:#1e5cb2}.backups-restore-settings .toolbar .backup-details-icon svg{-webkit-transform:translateX(2px);transform:translateX(2px)}.backups-restore-settings .mail-accounts-wrapper .list-item .l-col .star .checkbox+div{display:none}.backups-wrapper .list-item .c-1 div>span{padding-left:15px}.backups-restore-details .list-item .star{display:none}.cron-jobs-list.r-col .name{font-size:25px}.cron-col>div{display:flex;flex-direction:column}.cron-col>div span{font-size:18px;font-weight:bolder}.r-menu>div>button{font-size:13px;background:#fff;border-color:#fff;color:#555}.r-menu>div>button:hover{background:#fff;border-color:#fff;color:#555}.cron-wrapper .r-col .stats>div{flex:none;width:17%}.cron-wrapper .actions>div:first-child a:hover,.cron-wrapper .actions>div:first-child button:hover{background:#d7dcef}.cron-wrapper .actions>div:nth-child(2) a:hover,.cron-wrapper .actions>div:nth-child(2) button:hover{background:#ff3438}.packages .r-col .stats .c-2{padding-left:2rem}.packages .r-col .stats .c-2 div>span{width:50%}.packages .r-col .stats .c-3{margin-left:0}.packages .r-col .stats .c-3 div.ns{margin-top:5px}.packages-wrapper .r-col .stats .c-1 .stat{margin-left:1rem}.packages-wrapper .r-col .stats .c-2{padding:0}.password-wrapper{display:flex}.password-wrapper button{color:#2c54ac}.password-wrapper button:hover{color:#f8b014}.password-wrapper span.eye{margin-left:9px}.password-wrapper span.eye-slash{margin-left:7px}button.generate-password{color:#2c54ac;font-weight:700}button.generate-password:hover{color:#f8b014}button.generate-password:active{color:#fdb51c}input{color:#555}label[for=email]{width:100%;display:flex;align-items:center}label[for=email]>div{display:flex;align-items:center}label[for=email]>div input{height:-webkit-fit-content;height:fit-content;margin:0 10px}label[for=email]>div label{margin:0;font-size:12px}.statistics-list.updates .text-status{display:flex;margin-top:20px}.statistics-list.updates .text-status>div.checkbox{margin-bottom:0;margin-right:10px}.statistics-list.updates .list-item .star{display:none}.statistics-list.updates .r-col .c-1{margin-right:10px}.statistics-list.updates .toolbar{height:44px}.servers-list .servers-wrapper .list-item.sys-info .r-col{padding:0}.servers-list .servers-wrapper .list-item.sys-info .r-col .name{font-size:35px}.servers-list .servers-wrapper .list-item.sys-info .r-col .c-2 span>span.stat{margin-left:10px}.servers-list .servers-wrapper .list-item.sys-info .r-col .c-3{padding-right:0}.servers-list .servers-wrapper .list-item.sys-info .r-col .c-3>div>span{width:100%}.servers-list .actions a.link-gray.restart svg,.servers-list .actions button.link-gray.restart svg{width:1rem;height:1rem}.servers-list .list-item .star{display:none}.servers-list .r-col .stats .c-2,.servers-wrapper .list-item .r-col .stats .c-3{padding:0}.servers-wrapper .list-item .r-col .stats .c-3 span.stat{margin-left:0}.servers-wrapper .r-col{padding-left:2rem}.servers-wrapper .r-col .server-name{color:#000;font-size:28px}.servers-wrapper .list-item .r-col .c-3>div>span{-webkit-transform:translateX(-10px);transform:translateX(-10px)}.servers-wrapper .list-item .r-col .stats div>span{width:100%}.servers-list .l-col .text-status{display:block}.servers-list .l-col div.star{display:none}.servers-list .l-col .servers-wrapper .list-item:first-child{margin-top:0}.servers-list .l-col .servers-wrapper .l-col{width:16.3%}.servers-list .l-col .servers-wrapper .l-col .server-name{font-size:28px}.menu-wrapper{position:fixed;width:100%;font-size:15px;background:#fff}.menu-wrapper .menu-stat{display:flex;flex-direction:row;margin-top:70px;min-height:45px;max-height:135px;height:145px;width:100%;padding:0 13%}.menu-wrapper .menu-stat>div{border-bottom:3px solid #fff;overflow:hidden;width:14.3%}.menu-wrapper .menu-stat>div div,.menu-wrapper .menu-stat>div h3{width:100%}.menu-wrapper .menu-stat>div h3{font-weight:700;font-size:14px;text-transform:uppercase;margin-bottom:30px}.menu-wrapper .menu-stat>div div{display:flex;justify-content:space-between;font-size:12px;color:#a0a0a0;text-align:left}.menu-wrapper .menu-stat>div div>span:first-child{width:120px}.menu-wrapper .menu-stat>div div>span:nth-child(2){width:80px;padding-left:10px}.menu-wrapper .menu-stat .stat a,.menu-wrapper .menu-stat .stat button{display:flex;flex-direction:column;width:100%;height:100%;color:#000;text-decoration:none;text-align:left}.menu-wrapper .menu-stat .stat button{background:none;border:none;padding:0}.menu-wrapper .menu-stat .stat h3{font-size:14px}.menu-wrapper .menu-stat .stat:hover{cursor:pointer;border-bottom:3px solid #f8b014}.menu-wrapper .menu-stat .stat:hover h3{color:#fcac04}.menu-wrapper .menu-stat .stat:hover .stats{overflow:hidden}.menu-wrapper .menu-stat .stat:active{border-color:#fdb51c}.menu-wrapper .menu-stat .stat:active h3{color:#fcac04}.menu-wrapper .menu-stat .stat .stats{display:flex;flex-direction:column;padding-left:0}.menu-wrapper .menu-stat .stat.last{flex:1 1}.menu-wrapper .menu-stat .l-active{border-bottom:3px solid #2c54ac}.menu-wrapper .menu-stat .l-active h3{color:#2c54ac;font-size:18px;margin-bottom:25px}.menu-wrapper .menu-stat .stat.focus{border-bottom:3px solid #f8b014!important}.menu-wrapper .menu-stat .stat.focus a,.menu-wrapper .menu-stat .stat.focus h3{color:#f8b014!important}.menu-wrapper.shadow{box-shadow:hsla(0,0%,78.4%,.5)}@media (max-width:1350px){.menu-wrapper .menu-stat{padding:0 10%}}@media screen and (max-width:1200px){.menu-wrapper{padding:0 10%}.menu-wrapper .menu-stat{padding:0}}@media screen and (max-width:1024px){.menu-wrapper{padding:0 10%}}@media (max-width:900px){.menu-wrapper{padding:1%}.menu-wrapper .menu-stat{height:auto;min-height:auto}.menu-wrapper .menu-stat .stat{flex-grow:1;height:30px;padding-left:5px;min-width:14%;text-align:left}.menu-wrapper .menu-stat .stat h3{padding:0}.menu-wrapper .menu-stat .stat .stats{display:none}}@media (max-width:450px){.main-nav .mobile-top-nav-wrapper.show .mobile-stat-menu{border:1px solid #000;border-width:1px 0;margin-top:15px}.main-nav .mobile-top-nav-wrapper.show .mobile-stat-menu .menu-wrapper{height:100%;padding:0}.main-nav .mobile-top-nav-wrapper.show .mobile-stat-menu .menu-wrapper .menu-stat{flex-wrap:wrap;max-height:100%;min-height:100%}.main-nav .mobile-top-nav-wrapper.show .mobile-stat-menu .menu-wrapper .menu-stat .stat{display:flex;align-items:center;border:none;padding:5px 5px 5px 15px;min-width:50%;height:auto}.main-nav .mobile-top-nav-wrapper.show .mobile-stat-menu .menu-wrapper .menu-stat .stat h3{margin:0}.main-nav .mobile-top-nav-wrapper.show .mobile-stat-menu .menu-wrapper .menu-stat .stat.l-active{background:rgba(253,172,2,.05)}}.mobile-top-nav-wrapper.hide{opacity:0}.mobile-top-nav-wrapper.show{opacity:1;position:fixed;width:100%;height:100vh;background:#fff;display:flex;flex-direction:column;-webkit-animation:showMobileNav .3s forwards;animation:showMobileNav .3s forwards;margin-top:34px}.mobile-top-nav-wrapper.show>div{height:33.33%;display:flex;justify-content:center;align-items:center}.mobile-top-nav-wrapper.show .toolbar{margin:0;position:relative;border:none}.mobile-top-nav-wrapper.show .mobile-stat-menu .menu-wrapper{position:relative;height:auto;min-height:auto}.mobile-top-nav-wrapper.show .mobile-stat-menu .menu-wrapper .menu-stat{margin:0}@media (max-width:900px){.mobile-toolbar .toolbar{padding:0 1%}}@media (max-width:450px){.mobile-top-nav-wrapper.show .mobile-menu{padding:15px 0 0 15px;font-size:19px;height:27%}.mobile-top-nav-wrapper.show .mobile-menu>div{width:50%;height:100%}.mobile-top-nav-wrapper.show .mobile-menu>div>div{padding:2px}.mobile-top-nav-wrapper.show .mobile-menu>div>div:hover{color:#f8b014}}@-webkit-keyframes showMobileNav{0%{opacity:0}to{opacity:1}}@keyframes showMobileNav{0%{opacity:0}to{opacity:1}}.top-panel .profile-menu div{width:auto;height:auto}.top-panel .profile-menu button{cursor:default;background:none;box-shadow:unset;width:100%;height:100%}.top-panel .profile-menu button:hover{background:none}.top-panel .profile-menu button:active,.top-panel .profile-menu button:focus{outline:none;border:unset;background:unset;background-color:unset;border-color:unset}.top-panel .profile-menu .btn-danger:not(:disabled):not(.disabled).active,.top-panel .profile-menu .btn-danger:not(:disabled):not(.disabled):active,.top-panel .profile-menu .show>.btn-danger.dropdown-toggle{background-color:unset;border-color:unset;box-shadow:unset}.top-panel .profile-menu .dropdown-menu{display:none;height:auto;max-height:75vh;overflow:auto;cursor:default;background:#222e44;border:solid #fcac04;border-width:1px 0 0;box-shadow:0 0 10px -1px #222e44}.top-panel .profile-menu .dropdown-menu>div{cursor:default}.top-panel .profile-menu .dropdown-menu.show{display:flex;flex-direction:column;width:auto;width:340px;margin:0}.top-panel .profile-menu .dropdown-menu.show .dropdown-item{display:flex;justify-content:space-between;align-items:center;width:100%;padding-left:0;padding-right:5px}.top-panel .profile-menu .dropdown-menu.show .dropdown-item span.title{display:block;width:100%;padding:10px 0 0 10px;text-align:left;color:#fcac04}.top-panel .profile-menu .dropdown-menu.show .dropdown-item span.delete-notification{width:10px;height:10px;background:#fcac04;border-radius:50%;cursor:pointer}.top-panel .profile-menu .dropdown-menu.show .dropdown-item span.delete-notification:hover{border:2px solid #f8b014;background:transparent}.top-panel .profile-menu .dropdown-menu.show .dropdown-item:hover{background:none}.top-panel .profile-menu .dropdown-menu.show .dropdown-item+div{text-align:left;width:100%;padding:0 10px 20px;color:#ababab}.top-panel .profile-menu .dropdown-menu.show .dropdown-item+div a{display:contents;color:#e49d45}.top-panel .profile-menu .dropdown-menu.show .dropdown-item+div a:hover{color:#de9234}.top-panel .profile-menu .dropdown-menu.show .dropdown-divider{margin:0;border-color:#555;width:100%}.top-panel .profile-menu .dropdown-menu.show .dropdown-divider:last-child{display:none}.top-panel.small-device{display:none}.top-panel{display:flex;flex-direction:row;font-size:12px;position:fixed;width:100%;text-align:center;color:#fff;background:#222e44;height:34px;align-items:center;padding:0 13%;z-index:2}.top-panel .container{display:flex;flex-direction:row;width:80%;height:100%}.top-panel .container .logo div img{width:82%}.top-panel .container .logo div:hover{background-color:transparent}.top-panel .container div{display:flex;justify-content:center;align-items:center}.top-panel .container div a,.top-panel .container div button{display:flex;justify-content:center;align-items:center;padding:0 10px!important;width:100%;height:100%;text-decoration:none;color:#fff}.top-panel .container div button{background:none;border:none}.top-panel .container div:hover{cursor:pointer}.top-panel .container div.active{background:#fff}.top-panel .container div.active a,.top-panel .container div.active button{color:#fcac04;font-weight:700}.top-panel .container div.active a:hover,.top-panel .container div.active button:hover{color:#fff}.top-panel .container div.active a:active,.top-panel .container div.active button:active{background:#fdb51c;color:#fff}.top-panel .container div.active:hover{background:#f8b014}.top-panel .left-menu{width:75%;padding-left:0;margin-left:0;justify-content:space-between}.top-panel .left-menu div{flex:1 1 auto;height:100%;-webkit-transform:translateX(-5px);transform:translateX(-5px)}.top-panel .left-menu div:hover{background:#f8b014}.top-panel .left-menu div.logo{width:7rem;padding-left:0}.top-panel .left-menu div.logo a div{padding:0;width:6rem;flex:none}.top-panel .left-menu div.logo a div img{width:90%}.top-panel .left-menu div.logo:hover{background:transparent}.top-panel .left-menu div.fm{width:10rem}.top-panel .left-menu .top-link.focus a,.top-panel .left-menu .top-link.focus button{color:#fdb51c}.top-panel .profile-menu{width:auto}.top-panel .profile-menu div{width:4rem;height:100%}.top-panel .profile-menu div.bell{width:auto;color:#fcac04;padding:3px 0}.top-panel .profile-menu div.bell svg{border-radius:30px;width:100%;height:100%;padding:3px}.top-panel .profile-menu div.bell svg:hover{background:rgba(121,82,34,.58)}.top-panel .profile-menu div.bell svg:active{background:#866032}.top-panel .profile-menu div+div a{color:#a4abad;font-weight:700}.top-panel .profile-menu div+div a:hover{color:#f8b014}.top-panel .profile-menu div+div a:active{color:#fdb51c}.top-panel .profile-menu div+div+div a,.top-panel .profile-menu div+div+div button{color:#fff;cursor:pointer;font-weight:100}.top-panel .profile-menu div+div+div a:hover,.top-panel .profile-menu div+div+div button:hover{color:#f8b014}.top-panel .profile-menu div+div+div a:active,.top-panel .profile-menu div+div+div button:active{color:#fdb51c}.top-panel.long-profile .left-menu{justify-content:start}.top-panel.long-profile .left-menu>div{width:-webkit-max-content;width:max-content;flex:unset;padding:0 1rem}.top-panel.long-profile .left-menu .logo{width:7rem;padding:0;margin-right:1rem}.top-panel.long-profile .profile-menu{justify-content:space-between;align-items:center}.top-panel.long-profile .profile-menu>div+div{width:-webkit-max-content;width:max-content}.top-panel.long-profile .profile-menu .long-username{display:flex;justify-content:center;align-items:center;width:auto}.top-panel.long-profile .profile-menu .long-username>span:first-child{margin-right:5px}.top-panel.long-profile .profile-menu .long-username>span:nth-child(3){margin-left:5px}@media screen and (max-width:1350px){.top-panel{padding:0 10%}}@media screen and (max-width:1024px){.top-panel{padding:0 5%}}@media (max-width:900px){.top-panel{display:none}.top-panel.small-device{display:flex;padding:0}.top-panel.small-device>.container{justify-content:center;align-items:center;width:30%}.top-panel.small-device .profile-menu{padding-left:10%}.top-panel.small-device .hamburger{display:flex;flex-direction:column;justify-content:center;align-items:center;cursor:pointer}.top-panel.small-device .hamburger .bar{height:2px;margin:2px;width:20px;background:#fff}}@media (max-width:420px){.top-panel.small-device .profile-menu{padding:0;margin-right:5px}.top-panel.small-device .profile-menu .bell{width:20%}.top-panel.small-device .profile-menu .bell+div{width:40%}.top-panel.small-device .profile-menu .bell+div+div{width:40%}}.main-nav{width:100%;height:249px}.main-nav .nav-wrapper{position:fixed;width:100%;-webkit-animation:toggleNav .75s forwards;animation:toggleNav .75s forwards;z-index:1}@media (max-width:900px){.main-nav{height:0}@-webkit-keyframes toggleNav{0%{-webkit-transform:translateY(-150px);transform:translateY(-150px)}to{-webkit-transform:translateY(50px);transform:translateY(50px)}}@keyframes toggleNav{0%{-webkit-transform:translateY(-150px);transform:translateY(-150px)}to{-webkit-transform:translateY(50px);transform:translateY(50px)}}}.statistic-item{flex:1 1 auto}.statistic-item .l-col{padding-left:0;flex-basis:14.3%}.statistic-item .r-col{flex-basis:85.7%}.statistic-item .r-col .stats{align-items:center}.statistic-item .r-col .stats .name{font-size:24px;color:#111}.statistic-item .r-col .stats .exclusion-items{flex-basis:83.4%}.statistic-item .r-col .stats>div{flex:unset;flex-basis:16.6%}.mail-accounts div.subtitle{color:#2c54ac;font-size:12px;margin:30px 0 18px 14.3%;text-transform:uppercase;font-weight:700}.mail-accounts .mail-accounts-wrapper>div:nth-child(2){border-top:1px solid #ddd}.mail-accounts .mail-accounts-wrapper div.list-item .r-col .stat.email{width:-webkit-max-content;width:max-content;text-transform:none}.mail-accounts .footer-actions-wrapper{display:flex;align-items:center;margin-top:2rem;padding-bottom:1.5rem}.mail-accounts .footer-actions-wrapper .total{margin:0 3.5rem 0 14.3%}.mail-accounts .footer-actions-wrapper .back a{padding:8px 38px;color:#777;background:#dfdedd;border:1px solid #dfdedd;border-radius:3px;font-size:13px;font-weight:700}.crossed{text-decoration:line-through}.catchall-mail{text-transform:none}.dns-records div.subtitle{color:#2c54ac;font-size:12px;margin:30px 0 18px 14.3%;text-transform:uppercase;font-weight:700}.dns-records .dns-records-wrapper>div:nth-child(2){border-top:1px solid #ddd}.dns-records .dns-records-wrapper div.list-item .r-col .stats>div{flex:unset}.dns-records .dns-records-wrapper div.list-item .r-col .stats .c-1{width:14.3%}.dns-records .dns-records-wrapper div.list-item .r-col .stats .c-2{margin-left:10px;width:14.3%}.dns-records .dns-records-wrapper div.list-item .r-col .stats .c-3{margin-left:0;width:14.3%}.dns-records .dns-records-wrapper div.list-item .r-col .stats .c-3 span{color:#888;font-weight:400}.dns-records .dns-records-wrapper div.list-item .r-col .stats .c-4{width:550px}.dns-records .dns-records-wrapper div.list-item .r-col .stats .c-4 .stat{display:block;white-space:normal;overflow:hidden;width:100%;text-overflow:ellipsis}.dns-records .footer-actions-wrapper{display:flex;align-items:center;margin-top:2rem;padding-bottom:1.5rem}.dns-records .footer-actions-wrapper .total{margin:0 3.5rem 0 14.3%}.dns-records .footer-actions-wrapper .back a{padding:8px 38px;color:#777;background:#dfdedd;border:1px solid #dfdedd;border-radius:3px;font-size:13px;font-weight:700}span.dns-records{padding-left:25px;font-size:18px;font-weight:400;font-style:italic;color:grey}.r-col .stats .c-2.w-30{padding-left:0}.statistic-item{display:flex;justify-content:center;padding:25px 0;border-bottom:1px solid #eee}.statistic-item .l-col .date{font-size:13px;margin-top:3rem}.statistic-item .r-col .name{font-size:32px}.statistic-item .r-col .c-1 .bandwidth,.statistic-item .r-col .c-1 .disk{width:220px}.statistic-item .r-col .c-1 div.sub-disk-stats{width:250px}.statistic-item .r-col .c-2{margin-right:0}.statistic-item .r-col .c-2 div>span:nth-child(2){margin:0;padding:0}.statistic-item .r-col .c-3.w-35 span.stat{width:80px}.statistic-item .r-col .c-3.w-35 div>span{width:50%;text-align:left}.statistic-item .r-col .c-3.w-35 div>span:nth-child(2){width:100px}.statistics-list{color:#686868}.statistics-list .toolbar{padding:6px 13%}.statistics-list .l-col{width:14.3%}.statistics-list .l-col div.date,.total{margin-top:25px}.total{margin-left:15%;font-size:12px;color:#929292}.statistic-item.focused{border-left:2px solid #5edad0;-webkit-transform:translateX(-2px);transform:translateX(-2px)}.statistic-item.focused .r-col .date{color:#5edad0}@media (max-width:1350px){.statistics-list .toolbar{padding:6px 9.5%}}.checkbox{margin-bottom:10px}.date{margin:10px 0}.l-col div.star{text-align:center}.l-col div.star div>svg{cursor:pointer;opacity:0;color:grey;padding:8px;width:35px;height:35px;border-radius:50%}.l-col div.star div>svg:hover{background:hsla(0,0%,70.6%,.47);color:#2c54ac}span.stat.email{display:block;width:-webkit-max-content;width:max-content;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.r-col .name{font-size:35px;margin-bottom:5px;color:#000}.r-col>div:nth-child(2){text-transform:capitalize}.r-col .stats{display:flex;justify-content:flex-start;align-items:flex-start}.r-col .stats .c-1,.r-col .stats .c-2,.r-col .stats .c-3{width:32%}.r-col .stats .c-1>div,.r-col .stats .c-2>div,.r-col .stats .c-3>div{display:flex;margin:5px 0}.r-col .stats .c-1 .bandwidth,.r-col .stats .c-1 .disk,.r-col .stats .c-2 .bandwidth,.r-col .stats .c-2 .disk,.r-col .stats .c-3 .bandwidth,.r-col .stats .c-3 .disk{width:200px;justify-content:space-between;margin-bottom:25px;border-bottom:1px dotted grey}.r-col .stats .c-1 .sub-disk-stats,.r-col .stats .c-2 .sub-disk-stats,.r-col .stats .c-3 .sub-disk-stats{width:250px}.r-col .stats .c-1 .sub-disk-stats>div,.r-col .stats .c-2 .sub-disk-stats>div,.r-col .stats .c-3 .sub-disk-stats>div{width:50%;display:flex;flex-direction:column;justify-content:space-between;font-size:11px}.r-col .stats .c-1 .sub-disk-stats>div span:first-child,.r-col .stats .c-2 .sub-disk-stats>div span:first-child,.r-col .stats .c-3 .sub-disk-stats>div span:first-child{width:40px}.r-col .stats .c-1 .sub-disk-stats>div:nth-child(2),.r-col .stats .c-2 .sub-disk-stats>div:nth-child(2),.r-col .stats .c-3 .sub-disk-stats>div:nth-child(2){width:70%;justify-content:flex-end}.r-col .stats .c-1 .sub-disk-stats>div:nth-child(2) span:first-child,.r-col .stats .c-2 .sub-disk-stats>div:nth-child(2) span:first-child,.r-col .stats .c-3 .sub-disk-stats>div:nth-child(2) span:first-child{width:80px}.r-col .stats .c-1{margin:15px 0 0}.r-col .stats .c-2{margin:15px 20px}.r-col .stats .c-2 div>span:first-child{width:120px}.r-col .stats .c-2 div>span:nth-child(2){width:150px;padding-left:15px}.r-col .stats .c-3 div>span:first-child{width:120px}.r-col .stats .c-3 div>span:nth-child(2){width:200px}.r-col .stats .c-3 div.ns{margin-top:20px}.r-col .stats>div{margin:15px 0;flex:1 1}.r-col .stats .stat{font-weight:700;color:#5f5f5f}.actions{position:absolute;top:0;right:0;opacity:0;display:flex;justify-content:center;align-items:center;font-size:12px;background:#dfdedd}.actions>div{font-weight:bolder;text-transform:uppercase;height:38px}.actions>div a,.actions>div button{display:flex;justify-content:center;align-items:center;color:#777;padding:10px 15px;text-decoration:none}.actions>div a:hover,.actions>div button:hover{background:#919191;color:#fff}.actions>div a:hover svg,.actions>div button:hover svg{color:#fff}.actions>div svg{color:#777}.actions>div:nth-child(2) a:hover{background:#2c54ac}.actions>div:nth-child(4) a:hover{background:#b00e5b}.actions svg{margin-left:12px}.list-item.focused .r-col .name{color:#f8b014}.content .Toastify__toast-container{bottom:1em!important;top:unset}.timer-wrapper{display:flex;justify-content:center;align-items:center}.timer-wrapper button{border:none;background:none}.timer-wrapper button:active,.timer-wrapper button:focus{outline:none}.timer-wrapper .circle-wrapper{display:flex;justify-content:center;align-items:center;width:30px;height:30px}.timer-wrapper .circle-wrapper span.seconds:active,.timer-wrapper .circle-wrapper span.seconds:hover{background:unset}.timer-wrapper .circle-wrapper svg{height:30px;width:30px}.timer-wrapper .circle-wrapper svg circle{stroke:#000;fill:#fff;stroke-width:3%;stroke-dasharray:72;stroke-dashoffset:9;transform-box:fill-box;-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate(270deg);transform:rotate(270deg);transition:all 1s linear}.rrd-item{display:flex;justify-content:center;align-items:center;border-bottom:1px solid #eee;position:relative}.rrd-item .l-col .date{font-size:13px;margin-top:3rem}.rrd-item .l-col .time{font-size:13px;margin-top:2rem;text-align:left}.rrd-item .r-col .name{font-size:32px}.rrd-item .r-col .rrd-image{font-size:20px;text-transform:lowercase}.rrd-item.focused{border-left:2px solid #5edad0}.rrd-item.focused .l-col{padding-left:11px}.rrd-item.focused div.actions{opacity:1}div.content{margin-top:0}.rrd-list{color:#555}.rrd-list .toolbar{padding:6px 13%}.rrd-list .rrd-item{padding:25px 0;align-items:flex-start}.rrd-list .rrd-item .actions{opacity:0}.rrd-list .rrd-item .l-col{display:flex;flex-direction:column;margin:15px 40px 0 0}.rrd-list .rrd-item .l-col .date{margin:0}.rrd-list .rrd-item:hover .actions{opacity:1}.periods-wrapper{display:flex;align-items:center}.periods-wrapper>div:first-child{margin-left:8px}.periods-wrapper>div{cursor:pointer;margin:0 15px;font-size:14px}.periods-wrapper>div:hover{color:#f8b014}.periods-wrapper>div:active{color:#1e5cb2}.periods-wrapper .timer-wrapper>button svg:hover{color:#f8b014}.periods-wrapper .timer-wrapper>button svg:active{color:#1e5cb2}.periods-wrapper .timer-wrapper>div.circle-wrapper{cursor:default}.periods-wrapper>div.active{color:#fdb51c}@media (max-width:1350px){.rrd-list .toolbar{padding:6px 9.5%}}.banlist-wrapper{display:flex;flex-direction:column}.banlist-wrapper>div{margin-right:15px}.banlist-wrapper .list-item .l-col div.star .checkbox+div{display:none}.banlist-wrapper .buttons-wrapper{width:100%;display:flex;margin-top:4rem;align-items:center}.banlist-wrapper .buttons-wrapper .total{margin-right:15px;margin-top:0}.banlist-wrapper .buttons-wrapper button.back{font-weight:700;font-size:13px;margin-right:10px;padding:.35rem 2.25rem;border-radius:4px;transition:all .2s cubic-bezier(.4,.1,.5,.85);color:#777;background:#dfdedd;border:none;box-shadow:unset}.banlist-wrapper .buttons-wrapper button.back:hover{color:#fff;background:#999}.add-ftp,.web-stats{text-decoration:line-through}.r-col .stats .c-2{margin-left:20px}.r-col .c-2 span.stat,.r-col .c-3 span.stat{margin-left:1rem}.r-col .name{display:flex;align-items:center}.r-col .name>div:first-child{margin-right:2rem}.r-col .name .dns-name-span{font-style:italic;color:#858585;font-size:14px}div.crossed{text-decoration:line-through}.content .toolbar .search-toolbar-name{font-size:12px;text-transform:uppercase;color:#fcac04;font-weight:700;margin-left:14.3%;padding-left:7px;align-self:center}.content .toolbar .search-toolbar-right{display:flex;justify-content:center;align-items:center}.content .toolbar .search-toolbar-right .btn-group button{border:none;background:none;box-shadow:none}.content .toolbar .search-toolbar-right .btn-group button:active,.content .toolbar .search-toolbar-right .btn-group button:focus,.content .toolbar .search-toolbar-right .btn-group button:hover{background:none;box-shadow:none;outline:none;border:none;color:#686868}.content .toolbar .search-toolbar-right .search-input-form{padding-top:2px}.content .statistics-wrapper>.list-item:first-child{margin-top:0}.content .statistics-wrapper .list-item .l-col>.star{display:none}.content .statistics-wrapper .list-item .r-col div.object{text-transform:uppercase}.content .statistics-wrapper .list-item .r-col .c-2 .owner span,.content .statistics-wrapper .list-item .r-col .c-3 .status span{text-align:center;font-weight:700;text-transform:lowercase}.logs-list .toolbar{padding:6px 13%}.logs-list .statistic-item .l-col{font-size:13px;color:#888}.logs-list .statistic-item .l-col .date{margin:1rem 0 1.5rem}.logs-list .statistic-item .r-col .name{margin-top:.7rem;font-size:18px}.logs-list .statistic-item.focused{border-left:2px solid #5edad0}.logs-list .statistic-item.focused div.name{color:#5edad0}@media (max-width:1350px){.logs-list .toolbar{padding:6px 9.5%}}.logs-list .toolbar .search-input-form input{margin-bottom:5px}.logs-list .l-col{width:14%}.content{padding:0 13% 1%;margin-top:5px}.content>div>div.total{margin-top:25px;margin-left:14%;font-size:12px;color:#929292}@media (max-width:1350px){.content{padding:0 10%}}@media (max-width:1000px){.content{padding:5%}}@media (max-width:800px){.content{padding-top:5%}}.fixed-buttons{position:fixed;right:15px;bottom:15px;display:flex;justify-content:space-around;align-items:center}.fixed-buttons>div{width:40px;height:40px;padding:5px;margin:5px;border-radius:50%;background:#c3c3c3;display:flex;justify-content:center;align-items:center}.fixed-buttons>div:hover{color:#2c54ac;background:#d7dcef}.fixed-buttons>div:active{color:#fff;background:#1e5cb2}.fixed-buttons>div button{display:flex;justify-content:center;align-items:center;background:none;border:none;width:100%;height:100%;border-radius:50%;-webkit-transform:scale(1.32);transform:scale(1.32)}.fixed-buttons>div button svg{color:#fff;height:70%}.fixed-buttons>div:first-child{color:#c3c3c3;background:none}.fixed-buttons>div:first-child:hover{background:#d7dcef}.fixed-buttons>div:first-child:hover button svg{color:#fff}.fixed-buttons>div:first-child:active{color:#fff;background:#1e5cb2}.fixed-buttons>div:first-child button{padding:0}.fixed-buttons>div:first-child button svg{color:#c3c3c3}.panel-wrapper .logo-img img{width:82%}.panel-wrapper .logo-img:hover{background-color:transparent}.panel-wrapper .nav-link{padding:0}.panel-wrapper .left-menu a,.panel-wrapper .left-menu button{padding:0!important;outline:none}.panel-wrapper .left-menu>div.nav-link{padding:0}.panel-wrapper .profile-menu>div:first-child a:hover{color:#f8b014}.panel-wrapper .profile-menu>div:first-child a:active{color:#fdb51c}.panel-wrapper .profile-menu>div:nth-child(2) a:hover{color:#fdb51c}.panel-wrapper .profile-menu>div:nth-child(2) a:active{color:#fdb51c}.panel-wrapper .profile-menu .user{color:#a4abad;font-weight:700}.panel-wrapper .profile-menu .user:hover{color:#f8b014}.panel-wrapper .profile-menu .user:active{color:#fdb51c}.panel-wrapper .profile-menu .log-out{color:#fff;cursor:pointer;font-weight:100}.panel-wrapper .profile-menu .log-out:hover{color:#d7dcef}.panel-wrapper .profile-menu .log-out:active{color:#fdb51c}.web-logs .content{padding:50px 10px 0;color:#7d7d7d;font-size:20px}.web-logs .nav-link:nth-child(3),.web-logs .nav-link:nth-child(4){width:9rem}.login-layout{margin-top:1rem;padding:2rem 3rem}.login-page{display:flex;justify-content:center;align-items:center;width:100%;height:100vh;background-color:#eee}.login-page .login-form-wrapper{background-color:#fff;box-shadow:0 2px 6px hsla(0,0%,39.2%,.3);font-family:Arial,Helvetica,sans-serif;margin:0;padding:0;text-align:left;width:575px}.login-page .login-form-wrapper .login-layout{position:relative}.login-page .login-form-wrapper .login-layout>span{position:absolute;bottom:0;right:20px;font-size:11px}.login-page .login-form-wrapper .login-layout>span a{color:#505050}.login-page .login-form-wrapper form{display:flex;position:relative}.login-page .login-form-wrapper form>div input[type=password],.login-page .login-form-wrapper form>div input[type=text]{width:100%}.login-page .login-form-wrapper form .c1{display:flex;justify-content:center;align-items:center;width:35%}.login-page .login-form-wrapper form .c1 img{width:110%}.login-page .login-form-wrapper form .c2{width:65%;margin-left:3.5rem}.login-page .login-form-wrapper form .c2 .forgot-password{font-size:11px;text-transform:uppercase;letter-spacing:.75px;text-decoration:none}.login-page .login-form-wrapper form .c2 button[type=submit]{background-color:#2c54ac;border:1px solid #2c54ac;padding:1px 16px 3px;font-size:13px;height:35px;color:#fafafa;border-radius:3px}.login-page .login-form-wrapper form .c2 button[type=submit]:hover{color:#2c54ac;border:1px solid #d7dcef;background-color:#d7dcef}.login-page .login-form-wrapper form .c2 button[type=submit]:active{color:#fafafa;border:1px solid #2c54ac;background-color:#2c54ac}.login-page .login-form-wrapper form .c2 button[type=submit] .disabled{cursor:not-allowed}.login-page .login-form-wrapper form .c2 div.error-message{margin-top:1rem;color:#be5abf}.service-info .content{font-size:14px;color:#555;padding-top:4rem} -/*# sourceMappingURL=main.0c07ea6c.chunk.css.map */ \ No newline at end of file diff --git a/web/static/css/main.0c07ea6c.chunk.css.map b/web/static/css/main.0c07ea6c.chunk.css.map deleted file mode 100644 index 513e6288c..000000000 --- a/web/static/css/main.0c07ea6c.chunk.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["index.css","Spinner.scss","Dropdown.scss","Path.scss","Row.scss","List.scss","ProgressBar.scss","Modal.scss","Menu.scss","App.scss","Editor.scss","Photo.scss","Video.scss","Container.scss","AddItemLayout.scss","Toolbar.scss","EditInternetProtocol.scss","AddInternetProtocol.scss","EditServerNginx.scss","Postgresql.scss","style.scss","DropdownFilter.scss","SearchInput.scss","ListItem.scss","LeftButton.scss","Checkbox.scss","Select.scss","AdditionalFtpForEditing.scss","AdditionalFtpWrapper.scss","SslSupport.scss","AdvancedOptions.scss","AddWebDomain.scss","TextInputWithTextOnTheRight.scss","EditDatabase.scss","EditFirewall.scss","Hotkeys.scss","AddDatabase.scss","AddFirewall.scss","SelectsWrapper.scss","Generator.scss","EditCronJob.scss","EditPackage.scss","EditHttpd.scss","AddCronJob.scss","AddPackage.scss","EditServer.scss","MailInfoBlock.scss","Service.scss","AddMailAccount.scss","EditDomainNameSystem.scss","EditWeb.scss","EditPhp.scss","Databases.scss","Firewall.scss","Firewalls.scss","Bind9.scss","Mysql.scss","AddDomainNameSystem.scss","RestoreSetting.scss","BackupRestoreSettings.scss","Backup.scss","CronJob.scss","CronJobs.scss","Package.scss","Packages.scss","AddUser.scss","Update.scss","Updates.scss","ServerSys.scss","Server.scss","Servers.scss","MobileTopNav.scss","Notifications.scss","Panel.scss","MainNav.scss","MailAccounts.scss","Mail.scss","DNSRecords.scss","DomainNameSystem.scss","Statistic.scss","Statistics.scss","User.scss","Users.scss","Timer.scss","RRD.scss","RRDs.scss","styles.scss","WebDomain.scss","Search.scss","Log.scss","Logs.scss","ControlPanelContent.scss","TopPanel.scss","WebLogs.scss","LoginLayout.scss","Login.scss"],"names":[],"mappings":"AAAA,KACE,QAAS,CACT,SAAU,CACV,mJAEY,CACZ,kCAAmC,CACnC,iCACF,CAEA,KACE,yEAEF,CCbA,iBACE,iBAAkB,CAClB,UAAW,CACX,SAAU,CACV,QAAS,CACT,WAAY,CCDd,kBAQI,YAEW,CAVf,qBAaM,mBAG6B,CAuB5B,qCAML,oDAAA,CAAA,4CAAiD,CCpCnD,MACE,YAAa,CACb,6BAA8B,CAC9B,cAAe,CACf,mBAAoB,CACpB,WAAY,CACZ,kBAAmB,CACnB,UAAW,CACX,kCAAmC,CARrC,iBAWI,UAAW,CACX,gBAAiB,CACjB,eAAgB,CAChB,eAAgB,CAdpB,gMAiBM,kBAAmB,CACnB,cAAe,CAlBrB,wBAsBM,cAAe,CACf,iBAAkB,CAClB,UAAW,CACX,kBAAmB,CACnB,cAAe,CACf,eAAgB,CA3BtB,6BA8BQ,UAAW,CACX,iBAAkB,CA/B1B,6DAmCQ,kBAAmB,CACnB,cAAe,CApCvB,oMAyCM,eAAgB,CAChB,YAAa,CACb,kBAAmB,CACnB,cAAe,CA5CrB,gCAgDM,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CAlDzB,iBAuDI,eAAgB,CAChB,cAAe,CAChB,aAID,YAAa,CACb,6BAA8B,CAC9B,cAAe,CACf,mBAAoB,CACpB,WAAY,CACZ,kBAAmB,CACnB,UAhFU,CAiFV,iCAAkC,CARpC,gCAWI,YAAa,CACb,gBAAiB,CACjB,aAAc,CAblB,wBAiBI,UAAW,CACX,eAAgB,CAChB,eAAgB,CAnBpB,qNAsBM,oBAAqB,CACrB,kBAAmB,CAvBzB,+BA2BM,cAAe,CACf,iBAAkB,CAClB,UAAY,CACZ,oBAAqB,CACrB,kBAAmB,CACnB,eAAgB,CAhCtB,oCAmCQ,UAAW,CACX,iBAAkB,CApC1B,2EAwCQ,oBAAqB,CACrB,kBAAmB,CAzC3B,8OA8CM,eAAgB,CAChB,YAAa,CACb,oBAAqB,CACrB,kBAAmB,CAjDzB,uCAqDM,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CACnB,aA/HW,CAuEjB,4CA2DQ,aAlIS,CAuEjB,6CA+DQ,aAAc,CACd,oBAAqB,CACrB,kBAAmB,CAjE3B,kDAoEU,aAAc,CApExB,wBA2EI,aAlJa,CAmJb,eAAgB,CAChB,cAAe,CA7EnB,8BAgFM,aAAc,CAhFpB,+BAoFM,aA3JW,CA4JZ,gBAKH,YAAa,CACb,cAAe,CCzJjB,gCACE,UAAW,CACX,kBAAmB,CACnB,cAAe,CACf,gBAAiB,CAClB,OAGC,aAAc,CACf,UAGC,aAAc,CACf,oCAIG,UAAW,CACX,SAAU,CACV,WAAY,CACZ,gBAAiB,CAClB,gCAID,UAAW,CACX,aAAc,CACd,eAAiB,CACjB,qBAAsB,CACvB,KAGC,aAAc,CACf,MAGC,aAAc,CACf,MAGC,aAAc,CACf,OAGC,aAAc,CACf,aAGC,aAAc,CACf,MAGC,aAAc,CACf,SAGC,aAAwB,CACzB,UAGC,aAAc,CACf,2CAOC,cAAe,CACf,WAAY,CACZ,UAAW,CACX,eAAgB,CACjB,mCAGC,eAAgB,CAChB,WAAY,CACZ,oBAAqB,CACrB,eAAgB,CAChB,kBAAmB,CALrB,yCAQI,aAAc,CACd,UAAW,CACX,eAAgB,CAChB,gBAAiB,CACjB,cAAe,CACf,kBAAmB,CACnB,2BAA4B,CAdhC,+CAiBM,2BAA4B,CAC5B,kBAA8B,CAC9B,iBAAkB,CAClB,cAAe,CAChB,sDAKH,kBAAmB,CACnB,UAAY,CACb,0CAGC,gBAAiB,CACjB,UAAW,CACX,aAAc,CACd,cAAe,CAChB,yCAGC,aAAc,CACd,cAAe,CAChB,mCAEC,aAAc,CACd,cAAe,CACf,UAAW,CACZ,OAGC,kBAAmB,CACnB,gBAAiB,CACjB,UAAW,CACZ,oCAGC,aAAc,CACd,iBAAkB,CAClB,UAAW,CACX,cAAe,CACf,gBAAiB,CAClB,OAGC,aAlJe,CAmJhB,MAGC,kBAAmB,CACnB,aAAc,CACf,YAWC,kBAA8B,CAThC,oBAEI,UAAW,CACX,SAAU,CACV,WAAY,CACZ,gBAAiB,CACjB,kBAA8B,CAC/B,mBAMD,kBAA8B,CAC/B,0BAGC,sBACE,YAAa,CACd,CC9KH,MACE,SAAU,CACV,YAAa,CACb,YAAa,CAHf,sBAMI,eAAgB,CAChB,yBAA0B,CAC1B,aAAc,CARlB,yBAWM,cAAe,CACf,SAAU,CACV,aAAc,CAbpB,4BAgBQ,aAAc,CACd,WAAY,CACZ,gBAAiB,CACjB,cAAe,CACf,cAAe,CACf,eAAgB,CArBxB,iCAwBU,cAAe,CAxBzB,kCA4BU,kBAAmB,CA5B7B,mCAiCQ,kBAAmB,CAjC3B,2CAoCU,UAAW,CACX,SAAU,CACV,WAAY,CACZ,gBAAiB,CACjB,kBAAmB,CAxC7B,qCA6CQ,kBAAmB,CACpB,qCAML,oBACE,YAAa,CACd,CCtDH,2BACE,iBAAkB,CAClB,KAAM,CACN,SAAU,CACV,UAAW,CACX,QAAS,CACT,UAAW,CACX,oBAAqB,CAPvB,yCAUI,WAAY,CCGhB,OACE,aAAc,CACd,iBAAkB,CAClB,cAAe,CACf,SAAU,CACV,iBAAkB,CAClB,MAAO,CACP,KAAM,CACN,UAAW,CACX,WAAY,CACZ,aAAc,CACd,qBAbU,CAcV,+BAAiC,CAZnC,sBAeI,sCAA2C,CAC3C,kBAAmB,CACnB,wBAAyB,CAEzB,SAAU,CACV,WAAY,CACZ,UAAY,CACZ,sBAAiB,CAtBrB,kCAyBM,sBAAuB,CACvB,cAAe,CACf,kBAAmB,CA3BzB,wCA8BQ,eAAgB,CAChB,qBAAsB,CACtB,UAAY,CACZ,eAAgB,CAChB,SAAU,CAlClB,oCAuCM,kBAAmB,CACnB,gBAAiB,CACjB,qBAAsB,CAzC5B,uCA4CQ,aApDgB,CAQxB,6CAgDQ,iBAAkB,CAClB,QAAS,CACT,UAAW,CAlDnB,0CAsDQ,aA5DiB,CAMzB,oCA2DM,yBAA0B,CA3DhC,2CA8DQ,UAAY,CACZ,iBAAkB,CAClB,eAAgB,CAChB,wBAAyB,CACzB,cAAe,CAlEvB,iDAqEU,YAAa,CACb,eAAgB,CAtE1B,sDA2EQ,wBAAyB,CA3EjC,4DA8EU,YAAa,CACb,WAAY,CA/EtB,4DAoFQ,kBA3FQ,CA4FR,oBA5FQ,CAOhB,kDAyFQ,gBAAiB,CACjB,kBAnGW,CAoGX,oBApGW,CASnB,wDA8FU,kBAzGY,CA0GZ,oBA1GY,CA2GZ,aArGe,CAKzB,wDAoGU,kBA9Ga,CA+Gb,oBA/Ga,CAgHb,UA1Ga,CAIvB,oCA4GM,aAlHmB,CAMzB,6BAgHM,KAAM,CACN,OAAQ,CACR,UApHM,CAEZ,4BAwHM,YAAa,CAxHnB,uCA4HM,eAAgB,CA5HtB,8CA+HQ,kBAAmB,CACnB,oBAAqB,CACrB,UAAY,CAjIpB,6BAuII,kBAAmB,CACnB,mBAAoB,CAxIxB,oCA2IM,iBAAkB,CAClB,QAAS,CACT,UAAW,CA7IjB,oBAkJI,WAAY,CACZ,SAAU,CACV,YAAa,CApJjB,qDAuJM,oBAAqB,CAvJ3B,qCA2JM,SAAU,CACV,UAAW,CACX,qBAA2B,CAC3B,oBAAqB,CA9J3B,+BAkKM,kBAAmB,CACnB,cAAe,CAnKrB,yBAuKM,eAAgB,CAvKtB,6BA0KQ,YAAa,CACb,qBAAsB,CACtB,6BAA8B,CAC9B,kBAAmB,CACnB,gBAAiB,CA9KzB,mCAiLU,eAAgB,CAChB,cAAe,CACf,cAAe,CAnLzB,yCAsLY,cAAe,CACf,gBAAiB,CCzL7B,MACE,YAAa,CACb,kBAAmB,CACnB,WAAY,CAHd,YAMI,UAAW,CACX,gBAAiB,CACjB,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CAVvB,gBAaM,SAAU,CAbhB,iBAkBI,kBAAmB,CACnB,QAAS,CACT,cAAe,CACf,eAAgB,CAChB,kBAAmB,CAtBvB,wBAyBM,YAAa,CAzBnB,yBA6BM,aAAc,CACd,cAAe,CACf,iBAAkB,CAClB,eAAgB,CAChB,kBAAmB,CACnB,eAAgB,CAChB,UAAY,CACZ,iBAAkB,CAClB,kBA/CW,CAUjB,+BAwCQ,aAlDS,CAmDT,kBAlDc,CAStB,wBA8CM,wBAAyB,CACzB,cAAe,CAEf,gBAAiB,CACjB,mBAAoB,CAGpB,mBAAkB,CAClB,iBAAkB,CAtDxB,8BAyDQ,aAnES,CAUjB,8BA6DQ,eAAgB,CAChB,YAAa,CA9DrB,sDAuEM,YAAa,CAvEnB,+BA2EM,aAAuB,CACxB,qCAKH,wBAEI,cAAe,CACf,eAAgB,CAChB,oBAAqB,CAJzB,uBAQI,UAAW,CARf,4JAcQ,aAzGO,CA2Ff,+GAkBQ,aA7GO,CA2Ff,qCAsBQ,aAAuB,CAtB/B,oCA0BQ,aArHO,CAsHR,KAML,YAAa,CACd,CClHH,KACE,iBAAkB,CACnB,KAGC,cAAe,CACf,iBAAkB,CACnB,QAGC,kBAAmB,CACnB,YAAa,CACb,UAAW,CACX,YAAa,CACb,qBAAsB,CACtB,eAAgB,CANlB,yBASI,YAAa,CACb,kBAAmB,CACpB,QAID,eAAgB,CACjB,UAGC,WAAY,CACZ,2BAA6B,CAC9B,sBAGC,cAAe,CACf,qBAAsB,CACvB,2BAEC,QAAS,CACV,8IAMK,4BAA+B,CAJrC,mEASM,4BAA+B,CATrC,uEAcM,4BAA8B,CAdpC,mEAmBM,4BAA8B,CAnBpC,oBAuBM,sBAAuB,CACvB,kBAAmB,CACnB,kBAAmB,CACnB,WAAY,CACb,sCAKH,aAjFqB,CAkFtB,uBAGC,cAAe,CAChB,wBAGC,YAAa,CACd,wCAIG,YAAa,CACd,kBAID,cAAe,CACf,UAAW,CACX,WAAY,CACZ,YAAa,CACb,4BAA6B,CAC7B,kBAAmB,CANrB,sBASI,UAAW,CACX,WAAY,CACZ,WAAY,CACZ,UAAW,CACX,iBAAkB,CAClB,kBAAmB,CACnB,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CAjBvB,4BAoBM,aAjHmB,CAkHnB,kBAxHgB,CAmGtB,6BAyBM,UArHiB,CAsHjB,kBA5HiB,CAkGvB,6BA8BM,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CACnB,eAAgB,CAChB,WAAY,CACZ,UAAW,CACX,WAAY,CACZ,iBAAkB,CAClB,6BAAA,CAAA,qBAAsB,CAtC5B,iCAyCQ,UAAY,CACZ,UAAW,CA1CnB,kCAgDI,kBApJa,CAoGjB,wCAmDM,aAhJmB,CAiJnB,kBAvJgB,CAmGtB,mDAuDQ,aApJiB,CA6FzB,yCA4DM,UAxJiB,CAyJjB,kBA/JiB,CAkGvB,oDAgEQ,UA5Je,CA4FvB,yCAqEM,SAAU,CArEhB,6CAwEQ,UApKe,CCTvB,QACE,UAAW,CADb,sBAII,YAAa,CACb,wBAAyB,CACzB,UAAW,CACX,WAAY,CACZ,iBAAkB,CAClB,WAAY,CACZ,QAAS,CACT,0BAAqB,CACrB,SAAU,CACV,8BAAgC,CAChC,4BAA8B,CAC9B,eAAgB,CAfpB,6BAkBQ,cAAe,CACf,UAAW,CACX,iBAAkB,CAClB,cAAe,CArBvB,mCAwBU,YAAa,CACb,eAAgB,CAzB1B,eA+BI,SAAU,CACV,iBAAkB,CAClB,OAAQ,CACR,SAAU,CACV,cAAe,CACf,SAAU,CACV,UAAW,CArCf,qBAwCM,aAAyB,CAxC/B,oBA6CI,YAAa,CACb,eAAgB,CA9CpB,yCAiDM,kBAAkB,CAjDxB,uCAqDM,cAAe,CArDrB,cA0DI,cAAe,CACf,QAAS,CACT,WAAY,CACZ,iBAAkB,CC7DtB,UACE,UAAW,CACX,iBAAkB,CAFpB,YAKI,QAAS,CALb,yCAUM,eAAgB,CAChB,UAAW,CACX,YAAa,CAZnB,8CAeU,UAAW,CACX,SAAU,CAhBpB,8CAoBU,SAAU,CApBpB,0CA2BI,aAAc,CACd,UAAW,CACX,WAAY,CA7BhB,yDAgCQ,WAAY,CACZ,WAAY,CAjCpB,gDAqCQ,cAAe,CArCvB,qDAyCQ,wBAAyB,CAzCjC,kDA6CQ,wBAAyB,CAC1B,WAML,UAAW,CACX,cAAe,CACf,iBAAkB,CAClB,OAAQ,CACR,UAAW,CACX,SAAU,CACV,UAAY,CACZ,cAAe,CARjB,iBAWI,UAAY,CC9DhB,eACE,mBAAoB,CACpB,UAAW,CACX,eAAgB,CAHlB,sBAMI,SAAU,CACV,cAAe,CACf,iBAAkB,CAClB,OAAQ,CACR,SAAU,CACV,SAAU,CACV,UAAW,CAZf,4BAeM,UAAW,CAfjB,sBAoBI,UAAW,CACX,WAAY,CArBhB,4BAwBM,YAAa,CCxBnB,OACE,iBAAkB,CACnB,OAGC,cAAe,CAChB,MAGC,WAAY,CACb,MAGC,SAAU,CACX,MAGC,SAAU,CACX,MAGC,SAAU,CACX,MAGC,SAAU,CACX,MAGC,SAAU,CACX,MAGC,SAAU,CACX,MAGC,SAAU,CACX,MAGC,SAAU,CACX,MAGC,SAAU,CCzBZ,wBACE,mBAAoB,CADtB,iCAII,qBAAsB,CAJ1B,qCAOM,WAAY,CACZ,YAAa,CACb,kBAAmB,CATzB,wFAcM,mCAAA,CAAA,2BAA6B,CAdnC,kGAiBQ,eAAiB,CACjB,cAAe,CAlBvB,0GAqBU,cAAe,CACf,iBAAkB,CAtB5B,8HA2BQ,aA7BY,CAEpB,sIA8BU,gBAAiB,CACjB,cAAe,CACf,aAlCU,CAEpB,wPAwCU,aA3DO,CAmBjB,sDA8CM,cAAe,CACf,aAAc,CAOnB,MAGC,YAAa,CACd,yBAIC,YAAa,CACb,cAAe,CACf,eAAgB,CAChB,kBAAmB,CALrB,uCAQI,kBAAmB,CARvB,mCAwDI,UAAW,CAxDf,wFAcM,aA7FW,CA8FX,eAAiB,CAfvB,gHAkBQ,aA7FgB,CA2ExB,oHAsBQ,aAhGiB,CA0EzB,+EA4BQ,aA3GS,CA+EjB,iFAgCQ,aA9Gc,CA8EtB,2EAsCQ,aAzGwB,CAmEhC,6EA0CQ,aA5GyB,CAkEjC,ubAoDQ,SAAU,CApDlB,sJA4DM,eAAgB,CA5DtB,8KA+DQ,oBAAqB,CA/D7B,gWAoEQ,YAAa,CACb,oBAlJe,CAmJf,gBAAiB,CAtEzB,0WA8EM,wBA5JgB,CA6JhB,oBA5JiB,CA6JjB,mBAAY,CAAZ,WAAY,CACZ,eAAgB,CAjFtB,0SAwFM,wBAtKgB,CAuKhB,oBAtKiB,CAuKjB,mBAAY,CAAZ,WAAY,CACZ,eAAgB,CA3FtB,iDA+FM,gBAAiB,CACjB,WAAY,CACZ,gBAAiB,CAjGvB,4HAqGQ,YAAa,CArGrB,+CA0GM,iCAAmC,CACnC,eAAgB,CA3GtB,2DA8GQ,oBAAqB,CA9G7B,wHAmHQ,gBAAiB,CACjB,oBAjMe,CAkMf,gCAAqB,CArH7B,+CA0HM,UAjMU,CAkMV,eAAiB,CA3HvB,2EA+HM,YAAa,CACb,oBAAqB,CACrB,yBAAA,CAAA,iBAAkB,CAjIxB,qFAoIQ,eAAmB,CACnB,wBAAyB,CACzB,eAAgB,CAChB,cAAe,CAvIvB,uEA4IM,YAAa,CACb,kBAAmB,CA7IzB,mFAgJQ,aAAc,CAhJtB,+CAqJM,UA5NU,CAuEhB,qEAyJM,iBAAkB,CAzJxB,mFA4JQ,eAAiB,CACjB,cAAe,CACf,iBAAkB,CAClB,sBAAuB,CACvB,iBAAkB,CAClB,6CAhOgD,CA+DxD,+EAqKQ,UA7Oe,CA8Of,kBArPS,CA+EjB,2FAyKU,aAlPe,CAmPf,kBAxPY,CA8EtB,6FA8KU,UAtPa,CAuPb,kBA5Pa,CA6EvB,iFAoLQ,UAAW,CACX,kBAtPsB,CAiE9B,6FAwLU,UAAY,CACZ,eAzPsB,CAgEhC,uCAgMI,gBAAiB,CAhMrB,sGAoMM,eAAgB,CAChB,UAAW,CACX,cAAe,CACf,kBAAmB,CAvMzB,mDA2MM,iBAAkB,CA3MxB,uDA+MM,aA9RW,CA+RX,cAAe,CACf,kBAAmB,CACnB,wBAAyB,CACzB,eAAiB,CCtRvB,SACE,YAAa,CACb,kBAAmB,CACnB,6BAA8B,CAC9B,eAAiB,CACjB,cAAe,CACf,KAAM,CACN,MAAO,CACP,UAAW,CACX,SAAU,CACV,mBAAoB,CACpB,4BAA6B,CAC7B,+BAAgC,CAZlC,iBAeI,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CAjBvB,qEAqBM,eAAgB,CAChB,WAAY,CACZ,gBAAkB,CAClB,oBAAqB,CACrB,aAAyB,CACzB,cAAe,CACf,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CACnB,iBAAkB,CAClB,iBAAkB,CA/BxB,iFAkCQ,kBA5Cc,CA6Cd,aAvCiB,CAIzB,mFAuCQ,kBAhDe,CAiDf,UA3Ce,CAGvB,mDA6CM,WAAY,CACZ,iBAAkB,CA9CxB,+GAiDQ,cAAe,CACf,eAAgB,CAChB,WAAY,CAnDpB,yDAuDQ,eAAgB,CAvDxB,qCA4DM,WAAY,CACZ,eAAgB,CAChB,YAAa,CA9DnB,2CAiEQ,YAAa,CACb,eAAgB,CAlExB,kCAwEQ,YAAa,CAxErB,kCA4EQ,kBAAmB,CA5E3B,mCAgFQ,oBAAqB,CAhF7B,qCAqFM,WAAY,CArFlB,4CAwFQ,eAAgB,CAxFxB,yFA6FM,YAAa,CACb,eAAgB,CAChB,iBAAkB,CA/FxB,6BAmGM,WAAY,CACZ,gBAAiB,CApGvB,mCAuGQ,aAAc,CACd,qBAAuB,CACvB,iBAAmB,CAzG3B,oCA6GQ,eAAiB,CA7GzB,iCAiHQ,eAAgB,CAjHxB,wDAsHM,qBAAuB,CACvB,aAAc,CAvHpB,8DA0HQ,qBAAuB,CACxB,uBAML,wBAAyB,CAD3B,qCAII,aAAc,CACf,kBAID,0CAAoD,CACrD,0BAGC,SACE,mBAAoB,CACrB,CAGH,yBACE,yBACE,YAAa,CACb,6BAA8B,CAC9B,kBAAmB,CACnB,WAAY,CAJd,iCAOI,UAAW,CACX,eAAgB,CARpB,8DAYQ,UAAW,CACX,YAAa,CACb,sBAAuB,CACvB,aAAc,CAftB,qDAmBQ,iBAAkB,CAnB1B,yDAuBQ,iBAAkB,CAvB1B,yDA2BQ,SAAU,CACV,gBAAiB,CACjB,eAAgB,CA7BxB,iCAmCI,YAAa,CACb,6BAA8B,CAC9B,wBAAyB,CACzB,kBAAmB,CACnB,sBAAe,CAAf,cAAe,CACf,UAAW,CACX,eAAgB,CAzCpB,wCA4CM,UAAW,CACX,WAAY,CA7ClB,4CAgDQ,UAAW,CACX,WAAY,CACb,CClNT,oCAGM,kCAA2B,CAA3B,0BAA2B,CAC3B,kBAAmB,CCJzB,uCAGM,kBAAmB,CAHzB,4CAMQ,wBAAyB,CANjC,qCAWM,iBAAkB,CAXxB,4CAcQ,WAAY,CCZpB,iEAGM,yBAAA,CAAA,iBAAkB,CAHxB,kDAOM,yBAAkB,CAAlB,iBAAkB,CAClB,gBAAiB,CARvB,oDAWQ,oBAAqB,CACrB,cAAe,CACf,wBAAyB,CACzB,UAAyB,CACzB,eAAgB,CAfxB,0DAkBU,aApBc,CAExB,4CAyBI,SAAU,CAzBd,2DA6BI,yBAA0B,CA7B9B,uCAiCI,eAAgB,CCnCpB,iEAGM,yBAAA,CAAA,iBAAkB,CAHxB,4CAQI,SAAU,CARd,2DAYI,yBAA0B,CCZ9B,+DACE,UAAW,CCDb,kBACE,QAAS,CADX,uBAII,oBAAqB,CACrB,qBAAsB,CACtB,eAAgB,CAChB,WAAY,CACZ,UAAW,CARf,wBAYI,YAAa,CACd,eAID,SAAU,CACV,eAAgB,CAChB,cAAe,CACf,WAAY,CAJd,kBAOI,SAAU,CACV,QAAS,CACT,oBAAqB,CACrB,eAAgB,CAChB,WAAY,CACZ,UAAW,CACX,UAAW,CAbf,qBAgBM,YAAa,CACb,UAAW,CACX,aAAc,CACd,4BAA6B,CAnBnC,iCAsBQ,WAAY,CAtBpB,0CA2BU,kBAAmB,CA3B7B,sCAgCQ,SAAU,CACV,aAAc,CAjCtB,uCAqCQ,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CACnB,SAAU,CAxClB,0BA4CQ,oBAAqB,CACrB,gBAAiB,CA7CzB,iCAiDQ,kBAAmB,CAjD3B,+BAqDQ,iBAAkB,CArD1B,iCA0DM,oBAAuB,CC1E7B,mBACE,YAAa,CACb,WAAY,CAFd,yBAKI,WAAY,CACZ,gBAAiB,CACjB,eAAgB,CAPpB,0BAWI,YAAa,CACb,kBAAmB,CACnB,sBAAuB,CACvB,eAAgB,CAChB,sBAA0B,CAC1B,WAAY,CCRhB,WACE,YAAa,CACb,0BAA2B,CAC3B,sBAAuB,CAEvB,cAAe,CACf,iBAAkB,CAClB,cAAe,CACf,0BAA4B,CAC5B,4BAA6B,CAC7B,aAAyB,CAV3B,mEAcI,SAAU,CAdd,6BAmBM,kBAAmB,CAnBzB,+BAuBM,cAAe,CAvBrB,2BA2BM,YAAa,CACb,kBAAmB,CA5BzB,wCA+BQ,kBAAmB,CA/B3B,kCAuCQ,SAAU,CACV,eAAgB,CAxCxB,uCA4CQ,SAAU,CA5ClB,qEAkDM,UAAW,CAlDjB,iBAuDI,cAAe,CACf,kBAAmB,CACpB,mBAID,kBAAmB,CACpB,mBAGC,6BAxEe,CAuEjB,2CAKM,SAAU,CACV,aA7EW,CA8EZ,qBAKH,kBAAmB,CACnB,YAAc,CAFhB,iEAKI,sBAAyB,CAC1B,6BAID,kBAAmB,CACnB,aAAc,CAFhB,yHAOI,uBAAyB,CAC1B,oBAID,kBAAmB,CACnB,6BAA8B,CAC/B,4BAGC,kBAAmB,CACnB,UAAY,CAFd,kCAKI,UAAY,CACb,mBAID,kBAAmB,CACpB,mBAGC,6BAtHsB,CAqHxB,2CAKM,aA1HkB,CAqHxB,4BAUI,SAAU,CAVd,yEAcM,iBAAkB,CAClB,oBAAqB,CAf3B,2GAkBQ,iBAAkB,CAClB,UAAW,CACX,WAAY,CACZ,gBAAiB,CACjB,kBA3IgB,CA4IhB,UAAY,CACZ,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CACnB,cAAe,CA3BvB,qIA+BQ,oBAAqB,CA/B7B,mHAmCQ,yBAA0B,CAC1B,cAAe,CClJvB,QACE,qCAAA,CAAA,6BAA+B,CADjC,yBAII,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CACnB,kBAjBa,CAkBb,kBAAmB,CACnB,UAAY,CACZ,UAAW,CACX,WAAY,CACZ,YAAa,CACb,WAAY,CACZ,oBAAqB,CAdzB,qCAiBM,kBA1BgB,CAStB,uDAoBQ,aAAc,CACd,aAzBiB,CA0BjB,kBA/Bc,CAStB,6CA0BQ,aA9BiB,CAIzB,uCA+BM,kBAzCW,CAUjB,yDAkCQ,aAAc,CACd,UAtCe,CAuCf,kBA9CS,CAUjB,+CAwCQ,UA3Ce,CAGvB,2CA6CM,yBAAkB,CAAlB,iBAAkB,CAClB,YAAa,CACb,yBAA0B,CAC1B,kBA1DW,CA2DX,kBAAmB,CACnB,UAAY,CACZ,cAAe,CACf,iBAAkB,CAClB,SAAU,CACV,UAAW,CACX,gBAAiB,CAvDvB,iCA2DM,UAAW,CACX,WAAY,CACb,aAKH,YAAa,CACd,uFAMK,iCAAA,CAAA,yBAA0B,CCpFhC,MACE,eAAgB,CCDlB,gBACE,YAAa,CADf,8CAII,eAAgB,CnBFpB,UACE,SAAU,CACX,kCAGC,SAAU,CADZ,6DAII,UAAY,CAJhB,6DASM,kBAfW,CAgBX,wBAhBW,CoBAjB,+CAGM,eAAiB,CCHvB,wCAGM,UAAW,CACX,cAAe,CACf,eAAiB,CALvB,gCAUI,eAAgB,CAChB,kCAAA,CAAA,0BAA2B,CAX/B,qDAcM,YAAa,CACb,qBAAsB,CAf5B,2DAkBQ,QAAS,CAlBjB,0DAsBQ,cAAe,CACf,UAAW,CACX,eAAiB,CACjB,kBAAmB,CAzB3B,oEA6BQ,YAAa,CACb,kBAAmB,CA9B3B,yEAiCU,UAAW,CACX,cAAe,CACf,iBAAkB,CAClB,eAAmB,CACnB,gBAAiB,CArC3B,2BA4CI,eAAiB,CACjB,UAAW,CC7Cf,aACE,kCAAA,CAAA,0BAA2B,CAD7B,gCAII,iBAAkB,CAClB,aAAc,CCHjB,6CADC,kCAAA,CAAA,0BAM2B,CAL5B,mBAGC,YAAa,CACb,qBAC2B,CCP7B,4CAIQ,YAAa,CACb,kBAAmB,CAL3B,kDAQU,aAAc,CARxB,8CAeQ,YAAa,CACb,kBAAmB,CACnB,SAAU,CAjBlB,kDAoBU,gBAAiB,CApB3B,wBA2BI,YAAa,CA3BjB,0DA8BM,mBAAqB,CA9B3B,8BAkCM,UAAY,CAlClB,oCAsCM,mBAAoB,CAtC1B,6CAyCQ,mBAAqB,CAzC7B,+BA8CM,YAAa,CC9CnB,6CAEI,YAAa,CACb,kBAAmB,CAHvB,kDAMM,gBAAiB,CACjB,UAAW,CCPjB,eACE,YAAa,CACb,kBAAmB,CAFrB,2BAKI,gBAAiB,CACjB,UAAW,CCNf,oDAKU,mBAAuB,CCHjC,cACE,cAAe,CACf,QAAS,CACT,OAAQ,CACR,YAAa,CACb,qBAAsB,CACtB,kCAA2B,CAA3B,0BAA2B,CAC3B,SAAU,CACV,6BAAqB,CACrB,cAAe,CATjB,oBAYI,YAAa,CACb,6BAA8B,CAC9B,kBAAmB,CACnB,+BAjBe,CAEnB,0BAkBM,wBAAyB,CAEzB,cAAe,CACf,eAAiB,CACjB,aAxBa,CAyBb,kBAAmB,CACnB,YAAa,CAxBnB,2BA4BM,YAAa,CACb,mBAAqB,CA7B3B,+BAgCQ,aAlCW,CAEnB,iCAoCQ,cAAe,CACf,kBAAmB,CArC3B,oBA2CI,YAAa,CA3CjB,uBA8CM,iBAAkB,CAElB,SAAU,CACV,eAAgB,CAChB,iBAAiB,CAlDvB,0BAqDQ,WAAY,CArDpB,oCAwDU,iBAAkB,CAClB,aA3DS,CA4DT,eAAiB,CA1D3B,2CA8DU,UAAY,CA9DtB,oCAmEQ,gBAAiB,CAClB,MAML,YAAa,CC5Ef,uCAGM,iBAAkB,CAHxB,sDAQQ,YAAa,CARrB,kEAWU,kBAAmB,CACnB,UAAW,CAZrB,sDAiBQ,YAAa,CACb,kBAAmB,CAlB3B,kEAqBU,cAAe,CACf,eAAiB,CACjB,kBAAmB,CACnB,UAAA,CAMA,eANW,CAxBrB,gDAoCM,eAAgB,CApCtB,uCAwCM,UAAW,CACX,iBAAkB,CCzCxB,mEAEI,yBAAA,CAAA,iBAAkB,CAFtB,sEAMI,8BAAgC,CCNpC,uEAGI,YAAa,CAHjB,uGAOQ,UAAW,CACX,kBAAmB,CAR3B,oNAkBQ,QAAS,CAlBjB,mCAwBI,YAAa,CAxBjB,uCA2BM,SAAU,CA3BhB,8CA8BQ,UAAW,CA9BnB,4CAmCM,eAAkB,CAnCxB,8CAuCM,WAAY,CAvClB,4CA2CM,WAAY,CACZ,gBAAiB,CA5CvB,mDA+CQ,kBAAmB,CA/C3B,4CAoDM,WAAY,CApDlB,mDAuDQ,mBAAoB,CC5C5B,oBACE,wBAAyB,CACzB,mBAAoB,CACpB,gBAAiB,CACjB,SAAU,CAJZ,4BAOI,YAAa,CACb,eAAgB,CARpB,8BAWM,UAAc,CACd,wBAAyB,CACzB,cAAe,CACf,kBAAmB,CACnB,mBAAoB,CACpB,oBAAqB,CAhB3B,oCAmBQ,aAzBgB,CAMxB,qCAuBQ,aA/Be,CAQvB,qCA4BM,aAjCmB,CAKzB,0BAiCI,oBAAqB,CAjCzB,2CAsCQ,YAAa,CACb,kBAAmB,CAvC3B,iDA0CU,SAAU,CACV,cAAe,CACf,QAAS,CA5CnB,iDAgDU,UAAW,CAhDrB,yDAqDQ,UAAW,CArDnB,sGA0DQ,eAAgB,CA1DxB,kHA6DU,oBAAqB,CA7D/B,sOAkEU,YAAa,CACb,oBA3Ea,CA4Eb,gBAAiB,CApE3B,kDAyEQ,oBAAqB,CACrB,oBAAqB,CACrB,UAAW,CA3EnB,oDAgFU,kBA1FO,CA2FP,UAAY,CACZ,iBAAkB,CAClB,qBAAsB,CACtB,cAAe,CApFzB,0DAuFY,aA3Fa,CA4Fb,kBAjGU,CAStB,2DA4FY,UA/FW,CAgGX,kBArGW,CAQvB,gDAmGQ,aAAc,CAnGtB,gDAuGQ,YAAa,CClHrB,4BAGM,UAAW,CAHjB,kCAMQ,aAAc,CANtB,oCAWM,UAAW,CAXjB,gCAeM,YAAa,CAfnB,4CAkBQ,SAAU,CAlBlB,kDAqBU,UAAW,CArBrB,4CA0BQ,YAAa,CACb,0BAA2B,CAC3B,sBAAuB,CACvB,mBAAoB,CACpB,SAAU,CACX,6BAML,mBAAqB,CCrCvB,8CAIQ,YAAa,CACb,kBAAmB,CAL3B,qDAQU,iCAAA,CAAA,yBAA0B,CCLpC,iEAGM,yBAAA,CAAA,iBAAkB,CAHxB,mEAMQ,aATW,CAUX,oBAAqB,CAP7B,yEAUU,UAAyB,CAVnC,kDAgBM,yBAAkB,CAAlB,iBAAkB,CAClB,gBAAiB,CAjBvB,oDAoBQ,oBAAqB,CACrB,cAAe,CACf,wBAAyB,CACzB,UAAyB,CACzB,eAAgB,CAxBxB,0DA2BU,aA7Bc,CAExB,4CAkCI,SAAU,CAlCd,2DAsCI,yBAA0B,CAtC9B,uCA0CI,eAAgB,CC7CpB,yCAGM,UAAW,CAHjB,+CAMQ,aAAc,CANtB,iDAWM,UAAW,CAXjB,6CAeM,YAAa,CAfnB,yDAkBQ,SAAU,CAlBlB,yDAsBQ,YAAa,CACb,0BAA2B,CAC3B,sBAAuB,CACvB,mBAAoB,CACpB,SAAU,CC1BlB,oDAGM,YAAa,CACb,oBAAqB,CACrB,yBAAA,CAAA,iBAAkB,CALxB,yDAQQ,eAAmB,CACnB,wBAAyB,CACzB,eAAgB,CAChB,cAAe,CAXvB,mEAeQ,wBAAyB,CAfjC,+CAoBM,YAAa,CACb,kBAAmB,CArBzB,mDAwBQ,cAAe,CACf,aAAc,CACd,gBAAiB,CA1BzB,yDA6BU,aAAc,CCjBxB,sBAEI,YAAa,CACb,qBAAsB,CACtB,sBAAuB,CAJ3B,0BAOM,YAAa,CACb,kBAAmB,CACnB,UAAW,CACX,YAAa,CAVnB,6BAcM,aAAc,CAdpB,iCAiBQ,gBAAiB,CAjBzB,oCAuBQ,oBAAqB,CACrB,aAnCS,CAoCT,eAAiB,CACjB,cAAe,CA1BvB,0CA6BU,aAvCY,CAUtB,uCAmCM,eAAgB,CAChB,kCAAA,CAAA,0BAA2B,CApCjC,2CAuCQ,YAAa,CACb,YAAa,CAxCrB,gDA2CU,cAAe,CACf,UAAW,CA5CrB,4DAgDU,WAAY,CAhDtB,giBAwFQ,kCAAA,CAAA,0BAA2B,CAxFnC,kHA6FQ,cAAe,CACf,UAhGQ,CAEhB,0DAkGQ,YAAa,CACb,YAAa,CAnGrB,4DAsGU,UAAW,CACX,kBAlHO,CAmHP,WAAY,CACZ,iBAAkB,CAClB,cAAe,CACf,eAAiB,CACjB,gBAAiB,CACjB,yBAA0B,CAC1B,oBAAqB,CACrB,yBAAkB,CAAlB,iBAAkB,CAClB,iBAAkB,CAhH5B,kEAmHY,aAvHa,CAwHb,kBA9HU,CAUtB,kEAwHY,UA3HW,CA4HX,kBAlIW,CASvB,+DA8HU,aAAc,CACd,eAAgB,CAChB,iBAAkB,CAClB,cAAe,CAjIzB,kEAsIQ,YAAa,CACb,kBAAmB,CACnB,aAAc,CAxItB,uEA2IU,aAtJO,CAWjB,8EA+IU,iBAAkB,CAClB,SAAU,CAhJpB,oFAmJY,YAAa,CC7JzB,sCAGM,kBAAmB,CACnB,cAAe,CACf,SAAU,CACV,WAAY,CACZ,aATW,CAUX,wBAAyB,CACzB,cAAe,CACf,eAAiB,CACjB,cAAe,CAXrB,wCAeM,cAAe,CACf,UAAW,CAhBjB,4CAmBQ,YAAa,CAnBrB,6DAsBU,SAAU,CCxBpB,mEAGM,yBAAA,CAAA,iBAAkB,CAHxB,8CAQI,SAAU,CARd,6DAYI,yBAA0B,CCZ9B,8DAEI,yBAAA,CAAA,iBAAkB,CAFtB,mDAOM,YAAa,CAPnB,wDAUQ,SAAU,CAVlB,sEAcY,SAAU,CAdtB,4FAmBc,UAAW,CAnBzB,qFA0BY,YAAa,CA1BzB,2FA6Bc,UAAW,CA7BzB,kGAiCc,iBAAkB,CAjChC,wDAwCQ,SAAU,CACV,WAAY,CACZ,wBAAyB,CACzB,uBAA0B,CA3ClC,0DAiDQ,cAAe,CACf,oBAAqB,CAlD7B,8DAqDU,kBAAmB,CArD7B,8EA0DQ,YAAa,CC1DrB,8BAGM,kCAAoC,CpBM1C,wCAGM,YAAa,CACb,qBAAsB,CAJ5B,yDAQU,WAAY,CACZ,oBAAqB,CAT/B,0DAaU,yBAAA,CAAA,iBAAkB,CAb5B,sCAmBM,mBAAuB,CACvB,oBAAqB,CACrB,aA7BW,CA8BX,eAAiB,CAtBvB,4CAyBQ,aA7BgB,CqBLxB,+BAEI,kCAAA,CAAA,0BAA2B,CAF/B,yBAMI,YAAa,CANjB,2DASM,mBAAqB,CAT3B,+BAaM,UAAY,CAblB,qCAiBM,mBAAoB,CAjB1B,8CAoBQ,mBAAqB,CApB7B,gCAyBM,YAAa,CCrBnB,+DAGM,yBAAkB,CAAlB,iBAAkB,CAClB,UANU,CAEhB,+GASM,yBAAA,CAAA,iBAAkB,CATxB,mHAYQ,oBAAqB,CACrB,cAAe,CACf,wBAAyB,CACzB,UAjBQ,CAkBR,eAAgB,CAhBxB,+HAmBU,aAtBc,CAGxB,gDAyBM,gBAAiB,CAzBvB,kDA4BQ,aAhCW,CAInB,wDA+BU,UAjCM,CAEhB,0CAsCI,SAAU,CAtCd,yDA0CI,yBAA0B,CA1C9B,qCA8CI,eAAgB,CClDpB,mBAMM,UAAW,CANjB,yBAWQ,UAAW,CCXnB,mCAEI,YAAa,CAFjB,oCAMI,eAAgB,CANpB,uDAUQ,iBAAkB,CAClB,cAAe,CAXvB,4DAeQ,eAAiB,CCfzB,qCACE,SAAU,CACV,SAAU,CCFZ,iEAGM,yBAAA,CAAA,iBAAkB,CAHxB,4CAQI,SAAU,CARd,2DAYI,yBAA0B,CCZ9B,iEAGM,yBAAA,CAAA,iBAAkB,CAHxB,4CAQI,SAAU,CARd,2DAYI,yBAA0B,CCZ9B,kFAEI,eAAgB,C3BFpB,8CAEE,YAAa,CACb,kBAAmB,CACnB,aAAc,CAJhB,qDAOI,gBAAiB,CAPrB,oCAYE,cAAe,CACf,iBAAkB,CAClB,eAAmB,C4BHrB,wDAKU,eAAgB,CAL1B,kDAYQ,kBAAmB,CACnB,wBAAyB,CACzB,WAAY,CAdpB,6GAiBU,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CACnB,UAtBM,CAuBN,iBAAkB,CAClB,oBAAqB,CAtB/B,yHAyBY,kBApCa,CAqCb,UAAY,CA1BxB,iIA6Bc,UAAY,CA7B1B,sDAmCU,UArCM,CAEhB,gEAyCU,UAAY,CAzCtB,kEA6CU,aAjDe,CAkDf,wBAvDY,CAStB,kEAkDU,UArDa,CAsDb,wBA3Da,CCHvB,4DAIQ,iCAAA,CAAA,yBAA0B,CAJlC,uFAcY,YAAa,CCdzB,0CACE,iBAAkB,CACnB,0CAGC,YAAa,CCLf,4BACE,cAAe,CAChB,cAGC,YAAa,CACb,qBAAsB,CAFxB,mBAKI,cAAe,CACf,kBAAmB,CCEvB,mBAGM,cAAe,CACf,eAAiB,CACjB,iBAAmB,CACnB,UARU,CAEhB,yBASQ,eAAiB,CACjB,iBAAmB,CACnB,UAbQ,CAcT,gCAOH,SAAU,CACV,SAAU,CAHd,mGASM,kBApCgB,CA2BtB,qGAcM,kBAAmB,CC3CzB,6BAIQ,iBAAkB,CAJ1B,sCAOU,SAAU,CAPpB,6BAYQ,aAAc,CAZtB,oCAeU,cAAe,CCfzB,2CAGM,gBAAiB,CAHvB,qCAOM,SAAU,CCKhB,kBACE,YAAa,CADf,yBAII,aAfa,CAWjB,+BAOM,aAdkB,CAOxB,2BAYI,eAAgB,CAZpB,iCAgBI,eAAgB,CACjB,yBAID,aAhCe,CAiCf,eAAiB,CAFnB,+BAKI,aAhCoB,CA2BxB,gCASI,aAlCqB,CAmCtB,MAID,UApCc,CAqCf,iBAGC,UAAW,CACX,YAAa,CACb,kBAAmB,CAHrB,qBAMI,YAAa,CACb,kBAAmB,CAPvB,2BAUM,0BAAmB,CAAnB,kBAAmB,CACnB,aAAc,CAXpB,2BAeM,QAAS,CACT,cAAe,CCjErB,sCAEI,YAAa,CACb,eAAgB,CAHpB,mDAMM,eAAgB,CAChB,iBAAkB,CAPxB,0CAYI,YAAa,CAZjB,qCAgBI,iBAAkB,CChBtB,kCACE,WAAY,CCDd,0DAGM,SAAU,CAHhB,gEAMQ,cAAe,CANvB,8EAUQ,gBAAiB,CAVzB,+DAcQ,eAAgB,CAdxB,wEAiBU,UAAW,CAjBrB,mGAyBI,UAAW,CACX,WAAY,CC1BhB,+BACE,YAAa,CAKd,gFAGC,SAAU,CADZ,yDAII,aAAc,CACf,wBAID,iBAAkB,CADpB,qCAII,UAAY,CACZ,cAAe,CAChB,iDAKC,mCAAA,CAAA,2BAA4B,CAFhC,mDAMI,UAAW,CC/Bf,kCAEI,aAAc,CAFlB,8BAMI,YAAa,CANjB,6DAWM,YAAa,CAXnB,6CAeM,WAAY,CAflB,0DAkBQ,cAAe,C9DPvB,cACE,cAAe,CACf,UAAW,CACX,cAAe,CACf,eAAiB,CAJnB,yBAOI,YAAa,CACb,kBAAmB,CACnB,eAAgB,CAChB,eAAgB,CAChB,gBAAiB,CACjB,YAAa,CACb,UAAW,CACX,aAAc,CAdlB,6BAiBM,4BAA8B,CAC9B,eAAgB,CAChB,WAAY,CAnBlB,iEAsBQ,UAAW,CAtBnB,gCA0BQ,eAAiB,CACjB,cAAe,CACf,wBAAyB,CACzB,kBAAmB,CA7B3B,iCAiCQ,YAAa,CACb,6BAA8B,CAC9B,cAAe,CACf,aAAc,CACd,eAAgB,CArCxB,kDAwCU,WAAY,CAxCtB,mDA4CU,UAAW,CACX,iBAAkB,CA7C5B,uEAoDQ,YAAa,CACb,qBAAsB,CACtB,UAAW,CACX,WAAY,CACZ,UAAY,CACZ,oBAAqB,CACrB,eAAgB,CA1DxB,sCA8DQ,eAAgB,CAChB,WAAY,CACZ,SAAU,CAhElB,kCAoEQ,cAAe,CApEvB,qCAwEQ,cAAe,CACf,+BA/EgB,CAMxB,wCA4EU,aAnFS,CAOnB,4CAgFU,eAAgB,CAhF1B,sCAqFQ,oBA1FiB,CAKzB,yCAwFU,aA/FS,CAOnB,sCA6FQ,YAAa,CACb,qBAAsB,CACtB,cAAe,CA/FvB,oCAoGM,QAAO,CApGb,mCAwGM,+BAlHW,CAUjB,sCA2GQ,aArHS,CAsHT,cAAe,CACf,kBAAmB,CA7G3B,qCAkHM,yCAAmD,CAlHzD,+EAqHQ,uBAAiC,CAClC,qBAML,8BAAoC,CACrC,0BAGC,yBACE,aAAc,CACf,CAGH,qCACE,cACE,aAAc,CADhB,yBAII,SAAU,CACX,CAIL,qCACE,cACE,aAAc,CACf,CAGH,yBACE,cACE,UAAW,CADb,yBAII,WAAY,CACZ,eAAgB,CALpB,+BAQM,WAAY,CACZ,WAAY,CACZ,gBAAiB,CACjB,aAAc,CACd,eAAgB,CAZtB,kCAeQ,SAAU,CAflB,sCAmBQ,YAAa,CACd,CAMT,yBACE,yDAEE,qBAAmB,CAAnB,kBAAmB,CACnB,eAAgB,CAHlB,uEAMI,WAAY,CACZ,SAAU,CAPd,kFAUM,cAAe,CACf,eAAgB,CAChB,eAAgB,CAZtB,wFAeQ,YAAa,CACb,kBAAmB,CACnB,WAAY,CACZ,wBAAyB,CACzB,aAAc,CACd,WAAY,CApBpB,2FAuBU,QAAS,CAvBnB,iGA4BQ,8BAAqB,CACtB,C+DvNT,6BACE,SAAU,CACX,6BAGC,SAAU,CACV,cAAe,CACf,UAAW,CACX,YAAa,CACb,eAAiB,CACjB,YAAa,CACb,qBAAsB,CACtB,4CAAqC,CAArC,oCAAqC,CACrC,eAAgB,CATlB,iCAYI,aAAc,CACd,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CAfvB,sCAmBI,QAAS,CACT,iBAAkB,CAClB,WAAY,CArBhB,6DA0BI,iBAAkB,CAClB,WAAY,CACZ,eAAgB,CA5BpB,wEA+BM,QAAS,CACV,yBAKH,yBACE,YAAa,CACd,CAGH,yBACE,0CACE,qBAAsB,CACtB,cAAe,CACf,UAAW,CAHb,8CAMI,SAAU,CACV,WAAY,CAPhB,kDAUM,WAAY,CAVlB,wDAaQ,aA9Dc,CA+Df,CAMT,iCACE,GACE,SAAU,CAGZ,GACE,SAAU,CAAA,CANd,yBACE,GACE,SAAU,CAGZ,GACE,SAAU,CAAA,CC7Dd,6BAEI,UAAW,CACX,WAAY,CAHhB,gCAOI,cAAe,CACf,eAAgB,CAChB,gBAAiB,CACjB,UAAW,CACX,WAAY,CAXhB,sCAcM,eAAgB,CAdtB,6EAkBM,YAAa,CACb,YAAa,CACb,gBAAiB,CACjB,sBAAuB,CACvB,kBAAmB,CAtBzB,+MA6BI,sBAAuB,CACvB,kBAAmB,CACnB,gBAAiB,CA/BrB,wCAmCI,YAAa,CACb,WAAY,CACZ,eAAgB,CAChB,aAAc,CACd,cAAe,CACf,kBAAmB,CAEnB,oBAAuB,CAAvB,oBAAuB,CACvB,gCAA6C,CA3CjD,4CA8CM,cAAe,CA9CrB,6CAmDI,YAAa,CACb,qBAAsB,CACtB,UAAW,CACX,WAAY,CACZ,QAAS,CAvDb,4DA0DM,YAAa,CACb,6BAA8B,CAC9B,kBAAmB,CACnB,UAAW,CACX,cAAe,CACf,iBAAkB,CA/DxB,uEAkEQ,aAAc,CACd,UAAW,CACX,qBAAsB,CACtB,eAAgB,CAChB,aAhFW,CAUnB,qFA0EQ,UAAW,CACX,WAAY,CACZ,kBAtFW,CAuFX,iBAAkB,CAClB,cAAe,CA9EvB,2FAiFU,wBA1Fc,CA2Fd,sBAAuB,CAlFjC,kEAuFQ,eAAgB,CAvFxB,gEA4FM,eAAgB,CAChB,UAAW,CACX,mBAAyB,CACzB,aAAc,CA/FpB,kEAkGQ,gBAAiB,CACjB,aAxGe,CAKvB,wEAsGU,aA1GkB,CAI5B,+DA4GM,QAAS,CACT,iBAAkB,CAClB,UAAW,CA9GjB,0EAiHQ,YAAa,CCpHrB,wBACE,YAAa,CACd,WAGC,YAAa,CACb,kBAAmB,CACnB,cAAe,CACf,cAAe,CACf,UAAW,CACX,iBAAkB,CAClB,UAAY,CACZ,kBAAmB,CACnB,WAAY,CACZ,kBAAmB,CACnB,aAAc,CACd,SAAU,CAZZ,sBAeI,YAAa,CACb,kBAAmB,CACnB,SAAU,CACV,WAAY,CAlBhB,oCAsBQ,SAAU,CAtBlB,sCA0BQ,4BAA6B,CA1BrC,0BA+BM,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CAjCzB,6DAoCQ,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CACnB,wBAA0B,CAC1B,UAAW,CACX,WAAY,CACZ,oBAAqB,CACrB,UAAY,CA3CpB,iCA+CQ,eAAgB,CAChB,WAAY,CAhDpB,gCAoDQ,cAAe,CApDvB,iCAyDM,eAAiB,CAzDvB,2EA4DQ,aAvEW,CAwEX,eAAiB,CA7DzB,uFAgEU,UAAY,CAhEtB,yFAoEU,kBA7Ee,CA8Ef,UAAY,CArEtB,uCA0EQ,kBApFgB,CAUxB,sBAgFI,SAAU,CACV,cAAe,CACf,aAAc,CACd,6BAA8B,CAnFlC,0BAsFM,aAAc,CACd,WAAY,CACZ,kCAAA,CAAA,0BAA2B,CAxFjC,gCA2FQ,kBArGgB,CAUxB,+BAgGM,UAAW,CACX,cAAe,CAjGrB,qCAqGU,SAAU,CACV,UAAW,CACX,SAAU,CAvGpB,yCA0GY,SAAU,CA1GtB,qCAgHQ,sBAAuB,CAhH/B,6BAqHM,WAAY,CArHlB,qFA0HQ,aAnIiB,CASzB,yBAgII,UAAW,CAhIf,6BAmIM,UAAW,CACX,WAAY,CApIlB,kCAwIM,UAAW,CACX,aApJa,CAqJb,aAAc,CA1IpB,sCA6IQ,kBAAmB,CACnB,UAAW,CACX,WAAY,CACZ,WAAY,CAhJpB,4CAmJU,8BAAqB,CAnJ/B,6CAuJU,kBAAmB,CAvJ7B,mCA6JM,aAAc,CACd,eAAgB,CA9JtB,yCAiKQ,aA3KgB,CAUxB,0CAqKQ,aA9KiB,CASzB,mFA2KM,UAAY,CACZ,cAAe,CACf,eAAgB,CA7KtB,+FAgLQ,aA1LgB,CAUxB,iGAoLQ,aA7LiB,CA8LlB,mCAOH,qBAAsB,CAF1B,uCAKM,yBAAkB,CAAlB,iBAAkB,CAClB,UAAW,CACX,cAAe,CAPrB,yCAWM,UAAW,CACX,SAAU,CACV,iBAAkB,CAbxB,sCAkBI,6BAA8B,CAC9B,kBAAmB,CAnBvB,8CAsBM,yBAAA,CAAA,iBAAkB,CAtBxB,qDA0BM,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CACnB,UAAW,CA7BjB,sEAgCQ,gBAAiB,CAhCzB,uEAoCQ,eAAgB,CACjB,qCAML,WACE,aAAc,CACf,CAGH,qCACE,WACE,YAAa,CACd,CAIH,yBACE,WACE,YAAa,CACd,wBAGC,YAAa,CACb,SAAU,CAFZ,mCAKI,sBAAuB,CACvB,kBAAmB,CACnB,SAAU,CAPd,sCAWI,gBAAiB,CAXrB,mCAeI,YAAa,CACb,qBAAsB,CACtB,sBAAuB,CACvB,kBAAmB,CACnB,cAAe,CAnBnB,wCAsBM,UAAW,CACX,UAAW,CACX,UAAW,CACX,eAAiB,CAWQ,CAKjC,yBACE,sCAEI,SAAU,CACV,gBAAiB,CAHrB,4CAMM,SAAU,CANhB,gDAUM,SAAU,CAVhB,oDAcM,SAAU,CACX,CC9TP,UACE,UAAW,CACX,YAAa,CAFf,uBAKI,cAAe,CACf,UAAW,CACX,yCAAkC,CAAlC,iCAAkC,CAClC,SAAU,CACX,yBAKD,UACE,QAAS,CACV,6BAGC,GACE,oCAAA,CAAA,4BAA6B,CAG/B,GACE,kCAAA,CAAA,0BAA2B,CAAA,CAR9B,qBAGC,GACE,oCAAA,CAAA,4BAA6B,CAG/B,GACE,kCAAA,CAAA,0BAA2B,CAAA,CAAA,CtDxBjC,gBAEE,aAE6B,CAJ/B,uBAOI,cAAe,CACf,gBAAiB,CARrB,uBAYI,gBAAiB,CAZrB,8BAeM,kBAAmB,CAfzB,oCAkBQ,cAAe,CACf,UAAW,CAnBnB,+CAuBQ,gBAAiB,CAvBzB,kCA2BQ,UAAW,CACX,gBAAiB,CuD1BzB,4BAEI,aAJa,CAKb,cAAe,CACf,wBAAyB,CACzB,wBAAyB,CACzB,eAAiB,CANrB,uDAWM,yBAA0B,CAXhC,uEAiBY,yBAAkB,CAAlB,iBAAkB,CAClB,mBAAoB,CAlBhC,uCAyBI,YAAa,CACb,kBAAmB,CACnB,eAAgB,CAChB,qBAAsB,CA5B1B,8CA+BM,uBAAwB,CA/B9B,+CAoCQ,gBAAiB,CACjB,UAAW,CACX,kBAAmB,CACnB,wBAAyB,CACzB,iBAAkB,CAClB,cAAe,CACf,eAAiB,CC5CzB,SACE,4BAA6B,CAC9B,eAGC,mBAAoB,CCOtB,0BAEI,aAba,CAcb,cAAe,CACf,wBAAyB,CACzB,wBAAyB,CACzB,eAAiB,CANrB,mDAWM,yBAA0B,CAXhC,kEAkBY,UAAW,CAlBvB,mEAsBY,WAAY,CAtBxB,mEA0BY,gBAAiB,CACjB,WAAY,CA3BxB,mEA+BY,aAAc,CACd,WAAY,CAhCxB,wEAmCc,UAAW,CACX,eAAmB,CApCjC,mEAyCY,WAAY,CAzCxB,yEA4Cc,aAAc,CACd,kBAAmB,CACnB,eAAgB,CAChB,UAAW,CACX,sBAAuB,CAhDrC,qCAyDI,YAAa,CACb,kBAAmB,CACnB,eAAgB,CAChB,qBAAsB,CA5D1B,4CA+DM,uBAAwB,CA/D9B,6CAoEQ,gBAAiB,CACjB,UAAW,CACX,kBAAmB,CACnB,wBAAyB,CACzB,iBAAkB,CAClB,cAAe,CACf,eAAiB,CCtFzB,iBACE,iBAAkB,CAClB,cAAe,CACf,eAAmB,CACnB,iBAAkB,CAClB,UAAW,CACZ,wBAKK,cAAe,CCXrB,gBACE,YAAa,CACb,sBAAuB,CACvB,cAAe,CACf,4BAA6B,CAJ/B,6BAQM,cAAe,CACf,eAAgB,CATtB,6BAeM,cAAe,CAfrB,yEAoBQ,WAAY,CApBpB,+CAwBQ,WAAY,CAxBpB,4BA6BM,cAAe,CA7BrB,kDAgCQ,QAAS,CACT,SAAU,CAjClB,2CAuCQ,UAAW,CAvCnB,0CA4CQ,SAAU,CACV,eAAgB,CA7CxB,uDAiDQ,WAAY,CCjDpB,iBACE,aAAc,CADhB,0BAII,eAAgB,CAJpB,wBAQI,WAAY,CAIX,wCADC,eASU,CARX,OAMH,eAAgB,CAChB,cAAe,CACf,aAAc,CACf,wBAGC,6BAA8B,CAC9B,kCAAA,CAAA,0BAA2B,CAF7B,qCAKI,aAAc,CACf,0BAID,0BACE,gBAAiB,CAClB,CCvBH,UACE,kBAAmB,CACpB,MAGC,aAAc,CACf,gBAGC,iBAAkB,CADpB,wBAII,cAAe,CACf,SAAU,CACV,UAAW,CACX,WAAY,CACZ,UAAW,CACX,WAAY,CACZ,iBAAkB,CAVtB,8BAaM,+BAAqB,CACrB,aAjCW,CAkCZ,gBAKH,aAAc,CACd,yBAAkB,CAAlB,iBAAkB,CAClB,sBAAuB,CACvB,kBAAmB,CACnB,eAAgB,CACjB,aAIG,cAAe,CACf,iBAAkB,CAClB,UAAY,CAJhB,wBAQI,yBAA0B,CAR9B,cAYI,YAAa,CACb,0BAA2B,CAC3B,sBAAuB,CAd3B,yDAiBM,SAAU,CAjBhB,qEAoBQ,YAAa,CACb,YAAa,CArBrB,qKA0BQ,WAAY,CACZ,6BAA8B,CAC9B,kBAAmB,CACnB,6BAA8B,CA7BtC,yGAiCQ,WAAY,CAjCpB,qHAoCU,SAAU,CACV,YAAa,CACb,qBAAsB,CACtB,6BAA8B,CAC9B,cAAe,CAxCzB,wKA2CY,UAAW,CA3CvB,4JAgDU,SAAU,CACV,wBAAyB,CAjDnC,+MAoDY,UAAW,CApDvB,mBA4DM,eAAgB,CA5DtB,mBAgEM,gBAAiB,CAhEvB,wCAoEU,WAAY,CApEtB,yCAwEU,WAAY,CACZ,iBAAkB,CAzE5B,wCAiFU,WAAY,CAjFtB,yCAqFU,WAAY,CArFtB,0BA0FQ,eAAgB,CA1FxB,kBA+FM,aAAc,CACd,QAAW,CAhGjB,oBAoGM,eAAiB,CACjB,aAAc,CACf,SAKH,iBAAkB,CAClB,KAAM,CACN,OAAQ,CACR,SAAU,CACV,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CACnB,cAAe,CACf,kBAAmB,CATrB,aAYI,kBAAmB,CACnB,wBAAyB,CACzB,WAAY,CAdhB,mCAiBM,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CACnB,UAAW,CACX,iBAAkB,CAClB,oBAAqB,CAtB3B,+CAyBQ,kBAA8B,CAC9B,UAAY,CA1BpB,uDA6BU,UAAY,CA7BtB,iBAmCM,UAAW,CAnCjB,kCAwCI,kBAhMa,CAwJjB,kCA4CI,kBA/LY,CAmJhB,aAgDI,gBAAiB,CAClB,gCAID,aAzMsB,CCLxB,oCACE,oBAAsB,CACtB,SAAU,CCFZ,eACE,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CAHrB,sBAMI,WAAY,CACZ,eAAgB,CAPpB,yDAUM,YAAa,CAVnB,+BAeI,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CACnB,UAAW,CACX,WAAY,CAnBhB,qGAuBQ,gBAAiB,CAvBzB,mCA4BM,WAAY,CACZ,UAAW,CA7BjB,0CAgCQ,WAAa,CACb,SAAW,CACX,eAAgB,CAChB,mBAAoB,CACpB,mBAAoB,CACpB,sBAAuB,CACvB,+BAAwB,CAAxB,uBAAwB,CACxB,gCAAyB,CAAzB,wBAAyB,CACzB,wBAAyB,CCxCjC,UACE,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CACnB,4BAA6B,CAC7B,iBAAkB,CALpB,uBASM,cAAe,CACf,eAAgB,CAVtB,uBAcM,cAAe,CACf,eAAgB,CAChB,eAAgB,CAhBtB,uBAsBM,cAAe,CAtBrB,4BA0BM,cAAe,CACf,wBAAyB,CAC1B,kBAKH,6BAA8B,CADhC,yBAII,iBAAkB,CAJtB,8BAQI,SAAU,CC5Bd,YACE,YAAa,CACd,UAGC,UAPc,CAMhB,mBAII,eAAgB,CAJpB,oBAQI,cAAe,CACf,sBAAuB,CAT3B,6BAYM,SAAU,CAZhB,2BAgBM,YAAa,CACb,qBAAsB,CACtB,oBAAqB,CAlB3B,iCAqBQ,QAAS,CArBjB,mCA2BQ,SAAU,CACX,iBAML,YAAa,CACb,kBAAmB,CAFrB,iCAKI,eAAgB,CALpB,qBASI,cAAe,CACf,aAAc,CACd,cAAe,CAXnB,2BAcM,aA1DkB,CA4CxB,4BAkBM,aAhEiB,CA8CvB,iDA0BQ,aAtEgB,CA4CxB,kDA8BQ,aA5Ee,CA8CvB,mDAmCM,cAAe,CAnCrB,4BAwCI,aAlFqB,CAmFtB,0BAID,mBACE,gBAAiB,CAClB,CChGH,iBACE,YAAa,CACb,qBAAsB,CAFxB,qBAKI,iBAAkB,CALtB,0DAYU,YAAa,CAZvB,kCAmBI,UAAW,CACX,YAAa,CACb,eAAgB,CAChB,kBAAmB,CAtBvB,yCAyBM,iBAAkB,CAClB,YAAa,CA1BnB,8CA8BM,eAAgB,CAChB,cAAe,CACf,iBAAkB,CAClB,sBAAuB,CACvB,iBAAkB,CAClB,6CAA8C,CAC9C,UAAW,CACX,kBAAmB,CACnB,WAAY,CACZ,gBAAiB,CAvCvB,oDA0CQ,UAAW,CACX,eAAgB,CC3CxB,oBAEE,4BAA6B,CAC9B,mBAKK,gBAAiB,CAClB,4CAOD,gBAAiB,CAHrB,aAOI,YAAa,CACb,kBAAmB,CARvB,6BAWM,iBAAkB,CAXxB,4BAeM,iBAAkB,CAClB,aAAc,CACd,cAAe,CAChB,YAKH,4BAA6B,CClC/B,uCAGM,cAAe,CACf,wBAAyB,CACzB,aAPa,CAQb,eAAiB,CACjB,iBAAkB,CAClB,gBAAiB,CACjB,iBAAkB,CATxB,wCAaM,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CAfzB,0DAmBU,WAAY,CACZ,eAAgB,CAChB,eAAgB,CArB1B,iMAwBY,eAAgB,CAChB,eAAgB,CAChB,YAAa,CACb,WAAY,CACZ,aAAc,CA5B1B,2DAkCQ,eAAgB,CAlCxB,oDAyCM,YAAa,CAzCnB,qDA+CU,YAAa,CA/CvB,0DAqDU,wBAAyB,CArDnC,iIA0DU,iBAAkB,CAClB,eAAiB,CACjB,wBAAyB,CC9DnC,oBAEI,eAAgB,CAFpB,kCAOM,cAAe,CACf,UAAW,CARjB,wCAYQ,oBAAqB,CAZ7B,wCAkBQ,gBAAiB,CACjB,cAAe,CAnBvB,mCAyBI,6BAA8B,CAzBlC,4CA4BM,aAAc,CACf,0BAKH,oBACE,gBAAiB,CAClB,CCpCH,6CACE,iBAAkB,CACnB,kBAGC,SAAU,CCOZ,SAEE,gBAAkB,CAClB,cAAe,CAHjB,uBAMI,eAAgB,CAChB,eAAgB,CAChB,cAAe,CACf,aAAc,CACf,0BAID,SACE,aAAc,CACf,CAGH,0BACE,SACE,UAAW,CACZ,CAGH,yBACE,SACE,cAAe,CAChB,CAGH,eACE,cAAe,CACf,UAAW,CACX,WAAY,CACZ,YAAa,CACb,4BAA6B,CAC7B,kBAAmB,CANrB,mBASI,UAAW,CACX,WAAY,CACZ,WAAY,CACZ,UAAW,CACX,iBAAkB,CAClB,kBAAmB,CACnB,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CAjBvB,yBAoBM,aAvDmB,CAwDnB,kBA9DgB,CAyCtB,0BAyBM,UA3DiB,CA4DjB,kBAlEiB,CAwCvB,0BA8BM,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CACnB,eAAgB,CAChB,WAAY,CACZ,UAAW,CACX,WAAY,CACZ,iBAAkB,CAClB,6BAAA,CAAA,qBAAsB,CAtC5B,8BAyCQ,UAAY,CACZ,UAAW,CA1CnB,+BAgDI,aAAc,CACd,eAAgB,CAjDpB,qCAoDM,kBA7FgB,CAyCtB,gDAuDQ,UAzFe,CAkCvB,sCA4DM,UA9FiB,CA+FjB,kBArGiB,CAwCvB,sCAiEM,SAAU,CAjEhB,0CAoEQ,aAAc,CCnGtB,6BAGM,SAAU,CAHhB,+BAOM,4BAA6B,CAPnC,yBAYI,SAAU,CAZd,6DAiBM,mBAAqB,CACrB,YAAa,CAlBnB,uCAsBM,SAAU,CAtBhB,qDA6BQ,aApCgB,CAOxB,sDAiCQ,aAtCiB,CAKzB,sDAuCQ,aA5CiB,CAKzB,uDA2CQ,aAhDiB,CAKzB,mCAgDM,aAAc,CACd,eAAgB,CAjDtB,yCAoDQ,aA3DgB,CAOxB,0CAwDQ,aA7DiB,CAKzB,sCA6DM,UAAY,CACZ,cAAe,CACf,eAAgB,CA/DtB,4CAkEQ,aA5Ec,CAUtB,6CAsEQ,aA3EiB,CCPzB,mBAEI,mBAAoB,CACpB,aAAc,CACd,cAAe,CAJnB,kEASI,UAAW,CCTf,cACE,eAAgB,CAChB,iBAAkB,CCSpB,YACE,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CACnB,UAAW,CACX,YAAa,CACb,qBAAsB,CANxB,gCASI,qBAAsB,CACtB,wCAA8C,CAC9C,sCAAuC,CACvC,QAAS,CACT,SAAU,CACV,eAAgB,CAChB,WAAY,CAfhB,8CAkBM,iBAAkB,CAlBxB,mDAqBQ,iBAAkB,CAClB,QAAS,CACT,UAAW,CACX,cAAe,CAxBvB,qDA2BU,aAAc,CA3BxB,qCAiCM,YAAa,CACb,iBAAkB,CAlCxB,wHAuCU,UAAW,CAvCrB,yCA4CQ,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CACnB,SAAU,CA/ClB,6CAkDU,UAAW,CAlDrB,yCAuDQ,SAAU,CACV,kBAAmB,CAxD3B,0DA2DU,cAAe,CACf,wBAAyB,CACzB,oBAAqB,CACrB,oBAAqB,CA9D/B,6DAkEU,wBA5EO,CA6EP,wBA7EO,CA8EP,oBAAqB,CACrB,cAAe,CACf,WAAY,CACZ,aAAc,CACd,iBAAkB,CAxE5B,mEA2EY,aArFK,CAsFL,wBArFU,CAsFV,wBAtFU,CAStB,oEAiFY,aAAc,CACd,wBA5FK,CA6FL,wBA7FK,CAUjB,uEAuFY,kBAAmB,CAvF/B,2DA4FU,eAAgB,CAChB,aAAc,CTxGxB,uBAEI,cAAe,CACf,UAAW,CACX,gBAAiB","file":"main.0c07ea6c.chunk.css","sourcesContent":["body {\n margin: 0;\n padding: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\",\n \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\",\n sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\ncode {\n font-family: source-code-pro, Menlo, Monaco, Consolas, \"Courier New\",\n monospace;\n}\n",".spinner-wrapper {\n position: absolute;\n bottom: 5px;\n width: 15%;\n left: 42%;\n height: 10px;\n}\n",".btn-group button {\n border: 0;\n}\n\n.dropdown-menu {\n padding: 0;\n\n ul {\n padding: 0;\n margin: 0;\n display: inline-block;\n list-style: none;\n height: 150px;\n width: 100%;\n color: #333;\n\n li {\n display: inline-flex;\n width: 100%;\n height: 37.5px;\n border-top: 1px solid #dbdbdb;\n\n .arrow-down {\n float: right;\n }\n\n .dropdown-item {\n &:hover {\n background: #bdbdbd;\n }\n }\n\n span {\n padding: 0 5px 0 10px;\n line-height: 38px;\n }\n\n span.active{\n background: #ffc900;\n }\n\n span + span {\n text-align: center;\n }\n }\n }\n}\n\n.lists-container .dropdown-menu.show{\n transform: translate3d(-57%, 39px, 0px)!important;\n}","$white: #fff;\n$whiteBackground: #ececec;\n$primary: #2c54ac;\n$primaryLight: #d7dcef;\n$primaryActive: #1e5cb2;\n$secondary: #fcac04;\n$secondaryLight: #f8b014;\n$danger: #b00e5b;\n$secondaryActive: #fdb51c;\n$hoverButtonText: #2c54ac;\n$activeButtonText: #fff;\n$textColor: #555;\n\n.path {\n display: flex;\n justify-content: space-between;\n font-size: 15px;\n padding: 1px 0 0 5px;\n height: 40px;\n background: #222e44;\n color: #999;\n box-shadow: 0 2px 10px -4px #222e44;\n\n .btn-group {\n width: 75px;\n margin-left: 15px;\n background: none;\n box-shadow: none;\n\n .btn-secondary:not(:disabled):not(.disabled).active, .btn-secondary:not(:disabled):not(.disabled):active, .show>.btn-secondary.dropdown-toggle {\n background: #222e44;\n border: #222e44;\n }\n\n button {\n padding-left: 0;\n padding-right: 5px;\n color: #999;\n background: #222e44;\n border: #222e44;\n transition: none;\n \n span {\n color: #999;\n padding: 0 0 0 5px;\n }\n\n &:active, &:focus {\n background: #222e44;\n border: #222e44;\n }\n }\n\n .btn.active.focus, .btn.active:focus, .btn.focus, .btn:active.focus, .btn:active:focus, .btn:focus {\n box-shadow: none;\n outline: none;\n background: #222e44;\n border: #222e44;\n }\n\n .btn-secondary {\n display: flex;\n justify-content: center;\n align-items: center;\n }\n }\n\n .clickable {\n padding-top: 8px;\n cursor: pointer;\n }\n}\n\n.active-path {\n display: flex;\n justify-content: space-between;\n font-size: 15px;\n padding: 1px 0 0 5px;\n height: 40px;\n background: #d7dcef;\n color: $white;\n box-shadow: 0 2px 6px -2px #d7dcef;\n\n .clickable-wrapper {\n display: flex;\n flex-wrap: nowrap;\n overflow: auto;\n }\n\n .btn-group {\n width: 75px;\n background: none;\n box-shadow: none;\n\n .btn-secondary:not(:disabled):not(.disabled).active, .btn-secondary:not(:disabled):not(.disabled):active, .show>.btn-secondary.dropdown-toggle {\n border-color: #d7dcef;\n background: #d7dcef;\n }\n\n button {\n padding-left: 0;\n padding-right: 5px;\n color: white;\n border-color: #d7dcef;\n background: #d7dcef;\n transition: none;\n\n span {\n color: #fff;\n padding: 0 0 0 5px;\n }\n\n &:active, &:focus {\n border-color: #d7dcef;\n background: #d7dcef;\n }\n }\n\n .btn.active.focus, .btn.active:focus, .btn.focus, .btn:active.focus, .btn:active:focus, .btn:focus {\n box-shadow: none;\n outline: none;\n border-color: #d7dcef;\n background: #d7dcef;\n }\n\n .btn-secondary {\n display: flex;\n justify-content: center;\n align-items: center;\n color: $primary;\n\n span {\n color: $primary;\n }\n\n &:hover {\n color: #1c3876;\n border-color: #d7dcef;\n background: #d7dcef;\n\n span {\n color: #1c3876;\n }\n }\n }\n }\n\n .clickable {\n color: $primary;\n padding-top: 8px;\n cursor: pointer;\n \n &:hover {\n color: #1c3876;\n }\n\n &:active {\n color: $primary;\n }\n }\n}\n\n.clickable-path {\n display: flex;\n float: 0 0 auto;\n}","$whiteBackground: #ececec;\n$primary: #2c54ac;\n$primaryLight: #d7dcef;\n$primaryActive: #1e5cb2;\n$secondary: #fcac04;\n$secondaryLight: #f8b014;\n$secondaryActive: #fdb51c;\n$hoverButtonText: #2c54ac;\n$activeButtonText: #fff;\n$textColor: #555;\n\n.list .list-container ul li svg {\n width: 25px;\n vertical-align: top;\n margin-top: 9px;\n margin-left: 10px;\n}\n\n.html5 {\n color: #f16529;\n}\n\n.file-alt {\n color: #20d2d1;\n}\n\n.list .list-container ul li {\n .marker {\n float: left;\n width: 4px;\n height: 34px;\n margin-right: 5px;\n }\n}\n\n.list .list-container ul li .js {\n width: 16px;\n color: #f7df1c;\n background: black;\n margin: 9px 4px 0 15px;\n}\n\n.php {\n color: #777bb3;\n}\n\n.css3 {\n color: #0079cb;\n}\n\n.sass {\n color: #cd6699;\n}\n\n.image {\n color: #36afae;\n}\n\n.folder-open {\n color: #e29741;\n}\n\n.file {\n color: #11b1b1;\n}\n\n.archive {\n color: rgb(209, 206, 43);\n}\n\n.download {\n color: #929ca3;\n}\n\n.fOwner,\n.fPermissions,\n.fSize,\n.fDate,\n.fTime {\n font-size: 14px;\n float: right;\n width: 60px;\n padding-top: 2px;\n}\n\n.list .list-container ul li .fName {\n margin-left: 5px;\n width: 260px;\n display: inline-block;\n overflow: hidden;\n text-overflow: clip;\n\n .name {\n padding: 0 5px;\n float: left;\n margin-left: 5px;\n line-height: 34px;\n font-size: 15px;\n white-space: nowrap; \n transition: all ease-out .3s;\n \n &:hover {\n transition: all ease-out .2s;\n background: rgb(201, 199, 199);\n border-radius: 4px;\n cursor: pointer;\n }\n }\n}\n\n.list .list-container ul li.active .fName .name:hover {\n background: #F0B607;\n color: black;\n}\n\n.list .list-container ul li .fPermissions {\n margin-left: 35px;\n width: 50px;\n color: #727272;\n font-size: 11px;\n}\n\n.list .list-container ul li .fDate .date {\n color: #727272;\n font-size: 11px;\n}\n.list .list-container ul li .fTime {\n color: #727272;\n font-size: 11px;\n width: 54px;\n}\n\n.fSize {\n padding-right: 15px;\n text-align: right;\n width: 95px;\n}\n\n.list .list-container ul li .fOwner {\n color: #896417;\n font-style: italic;\n width: 50px;\n font-size: 12px;\n margin-right: 5px;\n}\n\n.value {\n color: $primary;\n}\n\n.unit {\n font-weight: bolder;\n color: #727272;\n}\n\nli.inactive {\n .marker {\n float: left;\n width: 4px;\n height: 34px;\n margin-right: 5px;\n background: rgb(163, 163, 163);\n }\n\n background: rgb(201, 199, 199);\n}\n\n.inactive-selected {\n background: rgb(220, 220, 220);\n}\n\n@media (max-width: 1320px){\n .fPermissions, .fOwner {\n display: none;\n }\n}\n",".list {\n width: 50%;\n height: 100vh;\n flex: 1 1 50%;\n\n .list-container {\n margin-top: 10px;\n height: calc(100% - 100px);\n overflow: auto;\n\n ul {\n margin-top: 5px;\n padding: 0;\n color: #3a3a3a;\n \n li {\n display: block;\n height: 34px;\n line-height: 30px;\n font-size: 15px;\n margin-top: 2px;\n list-style: none;\n\n span {\n font-size: 13px;\n }\n \n &:hover{\n background: #DEDEDE;\n }\n }\n \n li.active {\n background: #FFDC5A;\n\n .marker {\n float: left;\n width: 4px;\n height: 34px;\n margin-right: 5px;\n background: #79641a;\n }\n }\n \n li.selected {\n background: #fdfdbb;\n }\n }\n }\n}\n\n@media screen and (max-width: 1200px){\n .permissions, .owner {\n display: none;\n }\n}",".spinner-wrapper .progress {\n position: absolute;\n top: 0;\n z-index: 5;\n width: 100%;\n margin: 0;\n height: 6px;\n display: inline-table;\n\n .progress-bar {\n height: 10px;\n }\n}","$primary: #2c54ac;\n\ndiv.modal {\n z-index: 2;\n}\n\ndiv.content .modal .modal-content {\n width: 75%;\n\n .modal-header button.close {\n color: white;\n }\n\n .modal-footer {\n .btn-primary {\n background: $primary;\n border: 1px solid $primary;\n }\n }\n}\n","$whiteBackground: #ececec;\n$primary: #2c54ac;\n$primaryLight: #d7dcef;\n$primaryActive: #1e5cb2;\n$secondary: #fcac04;\n$secondaryLight: #f8b014;\n$secondaryActive: #fdb51c;\n$hoverButtonText: #2c54ac;\n$activeButtonText: #fff;\n$textColor: #555;\n\n.menu-wrapper {\n position: fixed;\n width: 100%;\n font-size: 15px;\n background: white;\n\n .menu-stat {\n display: flex;\n flex-direction: row;\n margin-top: 70px;\n min-height: 45px;\n max-height: 135px;\n height: 145px;\n width: 100%;\n padding: 0 13%;\n \n > div {\n border-bottom: 3px solid white;\n overflow: hidden;\n width: 14.3%;\n\n h3, div {\n width: 100%;\n }\n\n h3 {\n font-weight: bold;\n font-size: 14px;\n text-transform: uppercase;\n margin-bottom: 30px;\n }\n \n div {\n display: flex;\n justify-content: space-between;\n font-size: 12px;\n color: #a0a0a0;\n text-align: left;\n\n > span:nth-child(1) {\n width: 120px;\n }\n\n > span:nth-child(2) {\n width: 80px;\n padding-left: 10px;\n }\n }\n }\n\n .stat {\n a, button {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n color: black;\n text-decoration: none;\n text-align: left;\n }\n\n button {\n background: none;\n border: none;\n padding: 0;\n }\n\n h3 {\n font-size: 14px;\n }\n\n &:hover {\n cursor: pointer;\n border-bottom: 3px solid $secondaryLight;\n \n h3 {\n color: $secondary;\n }\n\n .stats {\n overflow: hidden;\n }\n }\n\n &:active {\n border-color: $secondaryActive;\n\n h3 {\n color: $secondary;\n }\n }\n\n .stats {\n display: flex;\n flex-direction: column;\n padding-left: 0;\n }\n }\n\n .stat.last {\n flex: 1;\n }\n\n .l-active {\n border-bottom: 3px solid $primary;\n\n h3 {\n color: $primary;\n font-size: 18px;\n margin-bottom: 25px;\n }\n }\n\n .stat.focus {\n border-bottom: 3px solid $secondaryLight !important;\n \n a, h3 {\n color: $secondaryLight !important;\n }\n }\n }\n}\n\n.menu-wrapper.shadow {\n box-shadow: rgba(200, 200, 200, 0.5);\n}\n\n@media (max-width: 1350px) {\n .menu-wrapper .menu-stat {\n padding: 0 10%;\n }\n}\n\n@media screen and (max-width: 1200px) {\n .menu-wrapper {\n padding: 0 10%;\n\n .menu-stat {\n padding: 0;\n }\n }\n}\n\n@media screen and (max-width: 1024px) {\n .menu-wrapper {\n padding: 0 10%;\n }\n}\n\n@media (max-width: 900px) {\n .menu-wrapper {\n padding: 1%;\n\n .menu-stat {\n height: auto;\n min-height: auto;\n\n .stat {\n flex-grow: 1;\n height: 30px;\n padding-left: 5px;\n min-width: 14%;\n text-align: left;\n\n h3 {\n padding: 0;\n }\n\n .stats {\n display: none;\n }\n }\n }\n }\n}\n\n@media (max-width: 450px) {\n .main-nav .mobile-top-nav-wrapper.show .mobile-stat-menu {\n border: 1px solid black;\n border-width: 1px 0;\n margin-top: 15px;\n\n .menu-wrapper {\n height: 100%;\n padding: 0;\n\n .menu-stat {\n flex-wrap: wrap;\n max-height: 100%;\n min-height: 100%;\n\n .stat {\n display: flex;\n align-items: center;\n border: none;\n padding: 5px 5px 5px 15px;\n min-width: 50%;\n height: auto;\n\n h3 {\n margin: 0;\n }\n }\n\n .stat.l-active {\n background: #fdac020d;\n }\n }\n }\n }\n}\n","$whiteBackground: #ececec;\n$primary: #2c54ac;\n$primaryLight: #d7dcef;\n$primaryActive: #1e5cb2;\n$secondary: #fcac04;\n$secondaryLight: #f8b014;\n$danger: #b00e5b;\n$secondaryActive: #fdb51c;\n$hoverButtonText: #2c54ac;\n$activeButtonText: #fff;\n$textColor: #555;\n\nhtml {\n overflow-y: scroll;\n}\n\n.App {\n font-size: 25px;\n font-family: Arial;\n}\n\n.window {\n background: #ececec;\n height: 100vh;\n width: 100%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n\n .lists-container {\n display: flex;\n flex-direction: row;\n }\n}\n\n.active {\n background: #fff;\n}\n\n.progress {\n height: 10px;\n transition: all ease-out 0.1s;\n}\n\n.Toastify__toast-body {\n font-size: 20px;\n word-break: break-word;\n}\n.Toastify__toast-container {\n top: 15em;\n}\n\n.actions {\n div {\n a.link-download:hover, button.link-download:hover,\n a.link-edit:hover, button.link-edit:hover {\n background: $primary !important;\n }\n \n a.link-list:hover,\n button.link-list:hover {\n background: $primary !important;\n }\n\n a.link-delete:hover,\n button.link-delete:hover {\n background: $danger !important;\n }\n\n a.link-gray:hover,\n button.link-gray:hover {\n background: #afafac !important;\n }\n\n button {\n text-transform: inherit;\n font-weight: bolder;\n background: #dfdedd;\n border: none;\n }\n }\n}\n\nbutton:active, a:active, .period:active {\n color: $primaryActive;\n}\n\n.list-item:first-child {\n margin-top: 5px;\n}\n\n.list-item .text-status {\n display: none;\n}\n\nbutton {\n &:hover, &:active, &:focus {\n outline: none;\n }\n}\n\n.fixed-buttons.fm {\n position: fixed;\n right: 15px;\n bottom: 15px;\n display: flex;\n justify-content: space-around;\n align-items: center;\n\n > div {\n width: 40px;\n height: 40px;\n padding: 5px;\n margin: 5px;\n border-radius: 50%;\n background: #c3c3c3;\n display: flex;\n justify-content: center;\n align-items: center;\n \n &:hover {\n color: $hoverButtonText;\n background: $primaryLight;\n }\n \n &:active {\n color: $activeButtonText;\n background: $primaryActive;\n }\n \n button {\n display: flex;\n justify-content: center;\n align-items: center;\n background: none;\n border: none;\n width: 100%;\n height: 100%;\n border-radius: 50%;\n transform: scale(1.32);\n \n svg {\n color: white;\n height: 70%;\n }\n }\n }\n\n > div:first-child {\n background: $primary;\n\n &:hover {\n color: $hoverButtonText;\n background: $primaryLight;\n\n button svg {\n color: $hoverButtonText;\n }\n }\n\n &:active {\n color: $activeButtonText;\n background: $primaryActive;\n\n button svg {\n color: $activeButtonText;\n }\n }\n\n button {\n padding: 0;\n\n svg {\n color: $activeButtonText;\n }\n }\n }\n}\n",".editor {\n width: 100%;\n\n .panel-editor {\n display: flex;\n justify-content: flex-end;\n width: 100%;\n height: 40px;\n position: absolute;\n padding: 3px;\n margin: 0;\n background: #000000bf;\n z-index: 4;\n transition: 0.5s all ease-in-out;\n border-bottom: 1px solid black;\n border-radius: 0;\n\n button {\n font-size: 17px;\n height: 98%;\n margin: 0 0 0 30px;\n padding: 0 10px;\n\n &:focus {\n outline: none;\n box-shadow: none;\n }\n }\n }\n\n .close {\n z-index: 4;\n position: absolute;\n top: 5px;\n right: 5px;\n font-size: 40px;\n opacity: 1;\n color: #000;\n\n &:hover {\n color: rgb(139, 139, 139);\n }\n }\n\n .CodeMirror {\n height: 100vh;\n padding-top: 4vh;\n\n .CodeMirror-selected {\n background:#ACCEF7;\n }\n\n .CodeMirror-scroll {\n font-size: 14px;\n }\n }\n\n .save {\n font-size: 20px;\n left: 95%;\n bottom: 10px;\n position: absolute;\n }\n}",".carousel {\n width: 100%;\n position: relative;\n\n a {\n width: 5%;\n }\n\n .carousel-inner {\n .carousel-item {\n background: #000;\n width: 100%;\n height: 100vh;\n \n .gif {\n height: 50%;\n width: 50%;\n }\n\n .img {\n width: 90%;\n }\n }\n }\n\n .carousel-indicators {\n .indicator {\n margin: 0 15px;\n width: 80px;\n height: 80px;\n\n .control-photo {\n width: 100px;\n height: 80px;\n }\n \n &:hover {\n cursor: pointer;\n }\n\n &.active > img {\n border: 3px solid #3cc3f0;\n }\n\n .active {\n border: 3px solid #3cc3f0;\n }\n }\n }\n}\n\nspan.close {\n z-index: 10;\n font-size: 30px;\n position: absolute;\n top: 5px;\n right: 10px;\n opacity: 1;\n color: white;\n cursor: pointer;\n\n &:hover {\n color: white;\n }\n}",".video-preview {\n padding-bottom: 17px;\n width: 100%;\n background: #000;\n \n .close {\n z-index: 1;\n font-size: 30px;\n position: absolute;\n top: 5px;\n right: 2px;\n opacity: 1;\n color: #fff;\n\n &:hover {\n color: #000;\n }\n }\n\n .video {\n width: 100%;\n height: auto;\n\n &:focus {\n outline: none;\n }\n }\n}",".l-col {\n padding-left: 15px;\n}\n\n.r-col {\n font-size: 13px;\n}\n\n.w-14 {\n width: 14.3%;\n}\n\n.w-20 {\n width: 20%;\n}\n\n.w-25 {\n width: 25%;\n}\n\n.w-30 {\n width: 30%;\n}\n\n.w-35 {\n width: 35%;\n}\n\n.w-40 {\n width: 40%;\n}\n\n.w-45 {\n width: 45%;\n}\n\n.w-50 {\n width: 50%;\n}\n\n.w-60 {\n width: 60%;\n}\n\n.w-85 {\n width: 85%;\n}","$whiteBackground: #ececec;\n$primary: #2c54ac;\n$primaryLight: #d7dcef;\n$primaryActive: #1e5cb2;\n$secondary: #fcac04;\n$secondaryLight: #f8b014;\n$secondaryActive: #fdb51c;\n$hoverButtonText: #2c54ac;\n$activeButtonText: #fff;\n$textColor: #555;\n\n$optionalButtonHover: $primary;\n$optionalButtonActive: $primaryLight;\n$deleteButtonColorHover: #b00e5b;\n$deleteButtonColorActive: #b11661;\n$backButtonBackground: #DFDEDD;\n$backButtonBackgroundHover: #999;\n$transition: all 200ms cubic-bezier(0.4, 0.1, 0.5, 0.85);\n$errorColor: #BE5ABF;\n\n.content .edit-template {\n padding-bottom: 2rem;\n\n .toolbar {\n justify-content: unset;\n \n > div {\n width: 14.3%;\n display: flex;\n align-items: center;\n }\n \n div.error,\n div.success {\n width: max-content !important;\n \n span {\n font-weight: bold;\n font-size: 14px;\n \n svg {\n font-size: 13px;\n margin-right: 10px;\n }\n }\n \n span.error-message {\n color: $errorColor;\n \n svg {\n margin-right: 7px;\n font-size: 13px;\n color: $errorColor;\n }\n }\n \n span.ok-message {\n color: $primary;\n \n svg {\n color: $primary;\n }\n }\n }\n \n .search-toolbar-name {\n padding: 10px 0;\n margin-left: 0;\n }\n }\n}\n\n.hide {\n display: none;\n}\n\n.show {\n display: flex;\n}\n\n.edit-item,\n.login-layout {\n display: flex;\n font-size: 15px;\n margin-top: 3rem;\n margin-bottom: 1rem;\n\n .l-col {\n margin-right: 1.75%;\n }\n\n form {\n button,\n a {\n color:$primary;\n font-weight: bold;\n \n &:hover {\n color: $secondaryLight;\n }\n \n &:active {\n color: $secondaryActive;\n }\n }\n\n button.optional {\n &:hover {\n color: $optionalButtonHover;\n }\n\n &:active {\n color: $optionalButtonActive;\n }\n }\n\n button.delete {\n &:hover {\n color: $deleteButtonColorHover;\n }\n\n &:active {\n color: $deleteButtonColorActive;\n }\n }\n\n .form-group {\n input[type=text],\n input[type=password],\n input[type=email],\n textarea,\n select {\n width: 50%;\n }\n }\n\n width: 100%;\n\n .form-group select,\n .form-group textarea {\n border-radius: 0;\n\n &:hover {\n border-color: #909090;\n }\n\n &:focus,\n &:active {\n outline: none;\n border-color: $primaryActive;\n box-shadow: unset;\n }\n }\n\n input:-webkit-autofill,\n input:-webkit-autofill:hover,\n input:-webkit-autofill:focus,\n input:-webkit-autofill:active {\n background-color: $primaryLight;\n border-color: $primaryActive;\n filter: none;\n box-shadow: none;\n }\n\n input:autofill,\n input:autofill:hover,\n input:autofill:focus,\n input:autofill:active {\n background-color: $primaryLight;\n border-color: $primaryActive;\n filter: none;\n box-shadow: none;\n }\n\n button {\n background: unset;\n border: none;\n box-shadow: unset;\n \n &:focus,\n &:active {\n outline: none;\n }\n }\n \n input {\n height: calc(1.5em + 0.75rem + 6px);\n border-radius: 0;\n\n &:hover {\n border-color: #909090;\n }\n\n &:focus,\n &:active {\n box-shadow: unset;\n border-color: $primaryActive;\n background: #d7dcef9e;\n }\n }\n \n label {\n color: $textColor;\n font-weight: bold;\n }\n \n label.label-wrapper {\n display: flex;\n align-items: flex-end;\n width: max-content;\n\n span {\n font-weight: normal;\n text-transform: uppercase;\n margin-left: 5px;\n font-size: 12px;\n }\n }\n\n .checkbox-wrapper {\n display: flex;\n align-items: center;\n\n label {\n margin: 0 12px;\n }\n }\n\n input {\n color: $textColor;\n }\n\n .buttons-wrapper {\n margin-top: 2.5rem;\n\n button {\n font-weight: bold;\n font-size: 13px;\n margin-right: 10px;\n padding: .35rem 2.25rem;\n border-radius: 4px;\n transition: $transition;\n }\n\n .add {\n color: $activeButtonText;\n background: $primary;\n\n &:hover {\n color: $hoverButtonText;\n background: $primaryLight;\n }\n \n &:active {\n color: $activeButtonText;\n background: $primaryActive;\n }\n }\n\n .back {\n color: #777;\n background: $backButtonBackground;\n\n &:hover {\n color: white;\n background: $backButtonBackgroundHover;\n }\n }\n }\n }\n\n .l-col {\n padding: 20px 0 0;\n\n .date,\n .time {\n margin: 10px 0 0;\n color: #777;\n font-size: 12px;\n letter-spacing: 1px;\n }\n\n .time {\n margin: 6px 0 10px;\n }\n\n .status {\n color: $primary;\n font-size: 11px;\n letter-spacing: 1px;\n text-transform: uppercase;\n font-weight: bold;\n }\n }\n}","$primary: #2c54ac;\n$whiteBackground: #ececec;\n$primary: #2c54ac;\n$primaryLight: #d7dcef;\n$primaryActive: #1e5cb2;\n$secondary: #fcac04;\n$secondaryLight: #f8b014;\n$danger: #b00e5b;\n$secondaryActive: #fdb51c;\n$hoverButtonText: #2c54ac;\n$activeButtonText: #fff;\n$textColor: #555;\n\n.toolbar {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n background: white;\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n z-index: 1;\n padding: 3px 13% 1px;\n border-top: 1px solid #e0e0e0;\n border-bottom: 1px solid #e0e0e0;\n\n .r-menu {\n display: flex;\n justify-content: center;\n align-items: center;\n\n a.button-extra,\n button.button-extra {\n background: none;\n border: none;\n padding: 0 0.75rem;\n text-decoration: none;\n color: rgb(129, 125, 125);\n font-size: 14px;\n display: flex;\n justify-content: center;\n align-items: center;\n margin-right: 10px;\n border-radius: 3px;\n\n &:hover {\n background: $primaryLight;\n color: $hoverButtonText;\n }\n\n &:active {\n background: $primaryActive;\n color: $activeButtonText;\n }\n }\n \n .input-group .input-group-prepend {\n height: 30px;\n margin-right: 15px;\n\n div, span {\n padding-left: 0;\n background: none;\n border: none;\n }\n\n label {\n margin-bottom: 0;\n }\n }\n\n #inputGroupSelect04 {\n height: 30px;\n padding-top: 2px;\n outline: none;\n\n &:focus {\n outline: none;\n box-shadow: none;\n }\n }\n\n select + div {\n &:focus {\n outline: none;\n }\n\n &:hover {\n background: #b3b8bd;\n }\n \n button {\n border-color: #ced4da;\n }\n }\n\n .input-group-append {\n height: 30px;\n\n button {\n padding-top: 3px;\n }\n }\n\n .btn:focus, button:focus, .button:focus {\n outline: none;\n box-shadow: none;\n border-color: none;\n }\n\n .btn.btn-sm {\n height: 30px;\n margin-left: 15px;\n\n &:hover {\n color: #212529;\n background-color: white;\n border-color: none ;\n }\n\n &:active {\n background: white;\n }\n \n div {\n padding-top: 3px;\n }\n }\n\n .btn-group.show .btn-outline-secondary {\n background-color: white;\n color: #212529;\n\n &:hover {\n background-color: white;\n }\n }\n }\n}\n\n.toolbar.justify-right {\n justify-content: flex-end;\n\n .r-menu > div > * {\n margin: 0 10px;\n }\n}\n\n.toolbar.t-shadow {\n box-shadow: rgba(200, 200, 200, 0.5) 0px 5px 3px 0px;\n}\n\n@media (max-width: 1350px) {\n .toolbar {\n padding: 3px 10% 1px;\n }\n}\n\n@media (max-width: 450px) {\n .mobile-toolbar .toolbar {\n display: flex;\n flex-direction: column-reverse;\n padding-bottom: 5px;\n height: 100%;\n \n .r-menu {\n height: 50%;\n margin-top: 15px;\n\n .input-group {\n > div:nth-child(1) {\n width: 100%;\n display: flex;\n justify-content: center;\n margin: 15px 0;\n }\n\n select {\n margin-left: 100px;\n }\n\n select + div {\n margin-right: 85px;\n }\n\n > .btn-group {\n width: 60%;\n margin-left: 75px;\n margin-top: 15px;\n }\n }\n }\n\n .l-menu {\n display: flex;\n flex-direction: column-reverse;\n justify-content: flex-end;\n align-items: center;\n transform: none;\n height: 50%;\n margin-top: 40px;\n\n button {\n width: 30px;\n height: 30px;\n\n svg {\n width: 17px;\n height: 30px;\n }\n }\n }\n }\n}",".edit-ip {\n form {\n .dedicated-form-group {\n transform: translateX(3rem);\n margin-bottom: 2rem;\n }\n }\n}","div.edit-item {\n form {\n label.label-wrapper {\n align-items: center;\n\n span {\n text-transform: lowercase;\n }\n }\n\n div.assigned-user {\n padding-left: 25px;\n\n select {\n width: 48.4%;\n }\n }\n }\n}","$secondaryLight: #f8b014;\n\n.content .edit-template.edit-nginx {\n .toolbar {\n .search-toolbar-name {\n width: max-content;\n }\n\n .link {\n width: max-content;\n margin-left: 15px;\n\n a {\n text-decoration: none;\n font-size: 12px;\n text-transform: uppercase;\n color: rgb(119, 119, 119);\n font-weight: 700;\n\n &:hover {\n color: $secondaryLight;\n }\n }\n }\n }\n\n textarea {\n width: 75%;\n }\n\n .checkbox-wrapper label {\n text-transform: capitalize;\n }\n\n svg {\n margin-left: 5px;\n }\n}",".content .edit-template.edit-pgsql {\n .toolbar {\n .search-toolbar-name {\n width: max-content;\n }\n }\n\n textarea {\n width: 75%;\n }\n\n .checkbox-wrapper label {\n text-transform: capitalize;\n }\n}",".statistic-item {\n display: flex;\n flex: 1 1 auto;\n padding: 25px 0;\n border-bottom: 1px solid #eee;\n\n .l-col {\n padding-left: 0;\n flex-basis: 14.3%;\n }\n\n .r-col {\n flex-basis: 85.7%;\n\n .stats {\n align-items: center;\n\n .name {\n font-size: 24px;\n color: #111;\n }\n\n .exclusion-items {\n flex-basis: 83.4%;\n }\n\n > div {\n flex: unset;\n flex-basis: 16.6%;\n }\n }\n }\n}\n",".btn-group button {\n border: 0;\n\n > span {\n display: inline-block;\n vertical-align: bottom;\n margin-left: 5px;\n height: 100%;\n width: auto;\n }\n\n &::after {\n display: none;\n }\n}\n\n.dropdown-menu {\n padding: 0;\n border-radius: 0;\n font-size: 13px;\n width: 200px;\n\n ul {\n padding: 0;\n margin: 0;\n display: inline-block;\n list-style: none;\n height: auto;\n width: 100%;\n color: #333;\n\n li {\n display: flex;\n width: 100%;\n height: 37.5px;\n border-top: 1px solid #dbdbdb;\n\n .arrow-down {\n float: right;\n }\n\n .dropdown-item {\n &:hover {\n background: #bdbdbd;\n }\n }\n\n > span:nth-child(1) {\n width: 75%;\n padding: 0 5px;\n }\n\n > span:nth-child(2) {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 25%;\n }\n\n span {\n padding: 0 5px 0 10px;\n line-height: 38px;\n }\n\n span.active{\n background: #ffc900;\n }\n\n span + span {\n text-align: center;\n }\n }\n\n li:nth-child(1) {\n border-width: 0 0 1px 0;\n }\n }\n}",".search-input-form {\n display: flex;\n width: 180px;\n\n input {\n height: 30px;\n margin-left: 10px;\n border-radius: 0;\n }\n\n button {\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 0;\n border: 1px groove #ffffff;\n height: 30px;\n }\n}","$whiteBackground: #ececec;\n$primary: #2c54ac;\n$primaryLight: #2e5bb1;\n$secondary: #fcac04;\n$secondaryLight: #f8b014;\n$secondaryActive: #fdb51c;\n$textColor: #555;\n\n.list-item {\n display: flex;\n justify-content: flex-start;\n align-items: flex-start;\n padding-left: 15px;\n font-size: 18px;\n position: relative;\n padding: 25px 0;\n border-left: 2px solid white;\n border-bottom: 1px solid #ddd;\n color: rgb(104, 104, 104);\n\n &:hover .l-col div.star div svg,\n &:hover .actions {\n opacity: 1;\n }\n\n .l-col {\n .suspended {\n letter-spacing: 3px;\n }\n \n .text-status {\n font-size: 10px;\n }\n\n div.star {\n display: flex;\n align-items: center;\n \n div.checkbox {\n margin: 0 25% 4px 0;\n }\n }\n }\n\n .r-col {\n .stats {\n div > span {\n width: 50%;\n text-align: left;\n }\n \n .c-2 div > span {\n width: 50%;\n }\n }\n\n div.bandwidth span,\n div.disk span {\n width: auto;\n }\n }\n\n .date {\n font-size: 13px;\n margin: 20px 0 10px;\n }\n}\n\n.list-item.toggled {\n background: #feef9a;\n}\n\n.list-item.starred {\n border-left: 2px solid $primary;\n\n .l-col div.star {\n div > svg {\n opacity: 1;\n color: $primary;\n }\n }\n}\n\n.list-item.suspended {\n background: #eaeaea;\n color: #c0c0c0;\n\n .r-col div, .r-col span {\n color: #c0c0c0 !important;\n }\n}\n\n.list-item.suspended.toggled {\n background: #f2eab8;\n color: #b2ac87;\n\n .l-col,\n .r-col .name,\n .r-col .stats {\n color: #b2ac87 !important;\n }\n}\n\n.list-item.outdated {\n background: #ffcaca;\n border-left: 5px solid #ff6f6f;\n}\n\n.list-item.toggled.outdated {\n background: #755d5d;\n color: black;\n\n .stat {\n color: black;\n }\n}\n\n.list-item.stopped {\n background: #eaeaea;\n}\n\n.list-item.focused {\n border-left: 2px solid $secondaryLight;\n\n .l-col div.star {\n div > svg {\n color: $secondaryLight;\n }\n }\n\n .actions {\n opacity: 1;\n\n div > a,\n div > button {\n padding-top: 6.5px;\n padding-bottom: 6.5px;\n\n .shortcut-button {\n border-radius: 50%;\n width: 25px;\n height: 25px;\n margin-left: 15px;\n background: $secondaryLight;\n color: white;\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: 14px;\n }\n\n .shortcut-button.html-unicode {\n align-items: flex-end;\n }\n\n .shortcut-button.del {\n text-transform: capitalize;\n font-size: 10px;\n }\n }\n }\n}","$whiteBackground: #ececec;\n$primary: #2c54ac;\n$primaryLight: #d7dcef;\n$primaryActive: #1e5cb2;\n$secondary: #fcac04;\n$secondaryLight: #f8b014;\n$secondaryActive: #fdb51c;\n$hoverButtonText: #2c54ac;\n$activeButtonText: #fff;\n$textColor: #555;\n\n.l-menu {\n transform: translate(35px, 50%);\n\n a, button {\n display: flex;\n justify-content: center;\n align-items: center;\n background: $primary;\n border-radius: 100%;\n color: white;\n width: 45px;\n height: 43px;\n outline: none;\n border: none;\n text-decoration: none;\n\n &:hover {\n background: $primaryLight;\n\n span.add {\n display: block;\n color: $hoverButtonText;\n background: $primaryLight;\n }\n\n svg {\n color: $hoverButtonText;\n }\n }\n\n &:active {\n background: $primary;\n\n span.add {\n display: block;\n color: $activeButtonText;\n background: $primary;\n }\n\n svg {\n color: $activeButtonText;\n }\n }\n\n span.add {\n width: max-content;\n display: none;\n padding: 4px 10px 4px 25px;\n background: $primary;\n border-radius: 15px;\n color: white;\n font-size: 15px;\n position: absolute;\n left: 25px;\n z-index: -1;\n text-align: right;\n }\n\n svg {\n width: 31px;\n height: 21px;\n }\n }\n}\n\n.l-menu.none {\n display: none;\n}\n\n.servers-list,\n.exclusions-list {\n .l-menu {\n &.backup-details-icon {\n transform: translateX(2px);\n }\n }\n}\n","input {\n border-radius: 0;\n}",".select-wrapper {\n display: flex;\n\n select, button {\n border-radius: 0;\n }\n}",".edit-web {\n .additional-ftp {\n .title .indexed-name {\n font-weight: bold;\n }\n }\n}",".additional-ftp {\n .title {\n span:nth-child(1) {\n color: #555;\n font-size: 15px;\n font-weight: bold;\n }\n }\n\n .form-transform {\n margin-top: 15px;\n transform: translateX(3rem);\n\n .form-group.username {\n display: flex;\n flex-direction: column;\n \n label {\n margin: 0;\n }\n \n span {\n font-size: 10pt;\n color: #777;\n font-weight: bold;\n margin-bottom: 10px;\n }\n\n .input-wrapper {\n display: flex;\n align-items: center;\n\n span {\n color: #777;\n font-size: 15px;\n font-style: italic;\n font-weight: normal;\n margin-left: 15px;\n }\n }\n }\n }\n\n .path-note {\n font-weight: bold;\n color: #555;\n }\n}","$whiteBackground: #ececec;\n$primary: #2c54ac;\n$primaryLight: #2e5bb1;\n$primaryActive: #1e5cb2;\n$secondary: #fcac04;\n$secondaryLight: #f8b014;\n$secondaryActive: #fdb51c;\n$textColor: #555;\n\n.edit-web {\n .ssl-support {\n .additional-info {\n display: flex;\n flex-direction: column;\n\n span {\n &:nth-child(1) {\n width: 120px;\n display: inline-block;\n }\n\n &:nth-child(2) {\n width: max-content;\n }\n }\n }\n\n a.generate-csr {\n text-transform: initial;\n text-decoration: none;\n color: $primary;\n font-weight: bold;\n\n &:hover {\n color: $secondaryLight;\n }\n }\n }\n}",".edit-item form {\n div.name-server-input-wrapper {\n display: flex;\n align-items: center;\n margin: 10px 0;\n\n button {\n margin-left: 10px;\n }\n}\n\n.exp-date .optional {\n font-size: 12px;\n padding: 0 0 0 6px;\n font-weight: normal;\n}\n}",".add-web {\n form {\n .form-group {\n .checkbox-wrapper {\n display: flex;\n align-items: center;\n\n label {\n margin: 0 10px;\n };\n }\n }\n\n .advanced-options-button {\n button {\n display: flex;\n align-items: center; \n padding: 0; \n\n svg {\n margin-left: 10px;\n }\n }\n }\n }\n\n #c-panel-modal {\n padding: 2rem;\n\n form .form-group input[type=\"text\"] {\n width: 90% !important;\n }\n\n label {\n color: white;\n }\n\n .form-group {\n padding-left: 1.5rem;\n\n textarea {\n width: 90% !important;\n }\n }\n\n .l-col {\n display: none;\n }\n }\n}",".form-group.text-on-the-right {\n .input-wrapper {\n display: flex;\n align-items: center;\n\n span {\n margin-left: 15px;\n color: #777;\n }\n }\n}",".input-wrapper {\n display: flex;\n align-items: center;\n\n span.italic {\n margin-left: 15px;\n color: #777;\n }\n}",".edit-firewall {\n form {\n .form-group {\n .label-wrapper {\n span {\n text-transform: initial;\n }\n }\n }\n }\n}","$secondary: #fcac04;\n\n.hotkeys-list {\n position: fixed;\n bottom: 0;\n right: 0;\n display: flex;\n flex-direction: column;\n transform: translateX(-45%);\n width: 53%;\n background: #222e44de;\n font-size: 13px;\n\n .head {\n display: flex;\n justify-content: space-between;\n align-items: center;\n border-bottom: 1px solid $secondary;\n\n .name {\n text-transform: uppercase;\n padding: 5px 0 5px 10px;\n font-size: 12px;\n font-weight: bold;\n color: $secondary;\n letter-spacing: 2px;\n padding: 15px;\n }\n\n .close {\n padding: 12px;\n opacity: 1 !important;\n\n svg {\n color: $secondary;\n }\n\n &:hover {\n cursor: pointer;\n background: #222e44;\n }\n }\n }\n\n .body {\n display: flex;\n\n ul {\n padding: 25px 10px;\n margin: 0;\n width: 50%;\n list-style: none;\n margin-left: 3rem;\n\n li {\n padding: 5px;\n\n span.name {\n margin-right: 15px;\n color: $secondary;\n font-weight: bold;\n }\n \n span.description {\n color: white;\n }\n }\n\n li.space-top {\n padding-top: 30px;\n }\n }\n }\n}\n\n.hide {\n display: none;\n}",".edit-template.add-db {\n form {\n span.italic {\n font-style: italic;\n }\n\n .form-group {\n .label-wrapper {\n display: flex;\n\n span.italic {\n margin-left: 1.5rem;\n color: #555;\n }\n }\n\n .input-wrapper {\n display: flex;\n align-items: center;\n\n span.italic {\n font-size: 15px;\n font-weight: bold;\n margin-left: 1.5rem;\n color: #777;\n }\n }\n\n .input-wrapper {\n span.italic {\n font-weight: normal;\n }\n }\n }\n\n .form-group.database {\n margin-top: 1rem;\n }\n\n span.prefix {\n color: #777;\n font-style: italic;\n }\n }\n}",".content .edit-template.add-firewall {\n .toolbar .search-toolbar-name {\n width: max-content;\n }\n\n label.label-wrapper[for=ip] span {\n text-transform: unset !important;\n }\n}",".cron-form-body {\n .third-tab-selects,\n .fourth-tab-selects {\n display: flex; \n\n div.hour {\n select {\n width: 70px;\n margin-left: 4.8rem;\n }\n }\n\n div.minute {\n label {\n margin: 0;\n }\n\n select {\n margin: 0;\n }\n }\n }\n\n .fifth-tab-selects {\n display: flex;\n\n > div {\n width: 10%;\n\n select {\n width: 70px;\n }\n }\n\n > div.date {\n margin: 0 0 1rem 0;\n }\n\n > div.minute {\n width: 200px;\n }\n\n > div.hour {\n width: 155px;\n margin-left: 1rem;\n\n select {\n margin-left: .75rem;\n }\n }\n\n > div.date {\n width: 240px;\n\n select {\n margin-left: 5.85rem;\n }\n }\n }\n}","$whiteBackground: #ececec;\n$primary: #2c54ac;\n$primaryLight: #d7dcef;\n$primaryActive: #1e5cb2;\n$secondary: #fcac04;\n$secondaryLight: #f8b014;\n$secondaryActive: #fdb51c;\n$hoverButtonText: #2c54ac;\n$activeButtonText: #fff;\n$textColor: #555;\n\n.cron-job-generator {\n border: 1px solid #d9d9d9;\n padding: 1rem 1.5rem;\n margin-left: 2rem;\n width: 90%;\n\n .header {\n display: flex;\n padding: .4rem 0;\n\n a {\n color: #222222;\n text-transform: uppercase;\n font-size: 11px;\n font-weight: bolder;\n margin-right: 2.3rem;\n text-decoration: none;\n\n &:hover {\n color: $secondaryLight;\n }\n\n &:active {\n color: $primaryActive;\n }\n }\n\n a.active {\n color: $secondaryActive;\n }\n }\n\n .body {\n padding: 2rem 0 .4rem;\n\n form {\n\n .form-group {\n display: flex;\n align-items: center;\n\n label {\n width: 26%;\n font-size: 13px;\n margin: 0;\n }\n\n input {\n width: auto;\n }\n }\n\n .form-group.minute select {\n width: 70px;\n }\n\n .form-group select,\n .form-group textarea {\n border-radius: 0;\n \n &:hover {\n border-color: #909090;\n }\n \n &:focus,\n &:active {\n outline: none;\n border-color: $primaryActive;\n box-shadow: unset;\n }\n }\n\n .form-group select {\n padding: .4rem .25rem;\n border-color: #d9d9d9;\n color: #555;\n }\n\n .form-actions { \n button {\n background: $primary;\n color: white;\n border-radius: 3px;\n padding: .35rem 1.1rem;\n font-size: 14px;\n \n &:hover {\n color: $hoverButtonText;\n background: $primaryLight;\n }\n \n &:active {\n color: $activeButtonText;\n background: $primaryActive;\n }\n }\n }\n\n .form-group.show {\n display: block;\n }\n \n .form-group.hide {\n display: none;\n }\n }\n }\n}",".edit-cron {\n form {\n .form-group {\n width: 100%;\n \n input {\n width: inherit;\n }\n }\n \n .form-group.command {\n width: 100%;\n }\n \n .cron-form-body {\n display: flex;\n \n .body-col-1 {\n width: 30%;\n\n input {\n width: 100%;\n }\n }\n \n .body-col-2 {\n display: flex;\n justify-content: flex-start;\n align-items: flex-start;\n padding: 1.7rem 1rem;\n width: 70%;\n }\n }\n }\n}\n\n#edit-cron > .form-group input {\n width: 95% !important;\n}",".edit-package {\n form {\n .form-group {\n .input-wrapper {\n display: flex;\n align-items: center;\n\n button {\n transform: translateX(5px);\n }\n }\n }\n }\n}","$secondary: #fcac04;\n$secondaryLight: #f8b014;\n\n.content .edit-template.edit-httpd {\n .toolbar {\n .search-toolbar-name {\n width: max-content;\n\n a {\n color: $secondary;\n text-decoration: none;\n\n &:hover {\n color: rgb(119, 119, 119);\n }\n }\n }\n\n .link {\n width: max-content;\n margin-left: 15px;\n\n a {\n text-decoration: none;\n font-size: 12px;\n text-transform: uppercase;\n color: rgb(119, 119, 119);\n font-weight: 700;\n\n &:hover {\n color: $secondaryLight;\n }\n }\n }\n }\n\n textarea {\n width: 75%;\n }\n\n .checkbox-wrapper label {\n text-transform: capitalize;\n }\n\n svg {\n margin-left: 5px;\n }\n}",".edit-template.add-cron {\n form {\n .form-group {\n width: 100%;\n\n input {\n width: inherit;\n }\n }\n\n .form-group.command {\n width: 100%;\n }\n\n .cron-form-body {\n display: flex;\n\n .body-col-1 {\n width: 30%;\n }\n\n .body-col-2 {\n display: flex;\n justify-content: flex-start;\n align-items: flex-start;\n padding: 1.7rem 1rem;\n width: 70%;\n }\n }\n }\n}",".edit-template.add-package {\n form {\n label.label-wrapper {\n display: flex;\n align-items: flex-end;\n width: max-content;\n\n span {\n font-weight: normal;\n text-transform: uppercase;\n margin-left: 5px;\n font-size: 12px;\n }\n\n span.lowercase {\n text-transform: lowercase;\n }\n }\n\n .input-wrapper {\n display: flex;\n align-items: center;\n\n svg {\n cursor: pointer;\n color: #bec4ca;\n margin-left: 10px;\n\n &:hover {\n color: #abb1b6;\n }\n }\n }\n }\n}","$whiteBackground: #ececec;\n$primary: #2c54ac;\n$primaryLight: #d7dcef;\n$primaryActive: #1e5cb2;\n$secondary: #fcac04;\n$secondaryLight: #f8b014;\n$danger: #b00e5b;\n$secondaryActive: #fdb51c;\n$hoverButtonText: #2c54ac;\n$activeButtonText: #fff;\n$textColor: #555;\n\n.edit-server {\n .modules {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n\n > div {\n display: flex;\n align-items: center;\n width: 100%;\n margin: 5px 0;\n }\n\n > button {\n margin: 15px 0;\n\n svg {\n margin-left: 10px;\n }\n }\n\n .form-group {\n a {\n text-decoration: none;\n color: $primary;\n font-weight: bold;\n font-size: 14px;\n\n &:hover {\n color: $primaryLight;\n }\n }\n }\n\n .additional-info {\n margin-top: 10px;\n transform: translateX(3rem);\n\n > div {\n display: flex;\n margin: 5px 0;\n\n span {\n font-size: 12px;\n color: #555;\n }\n\n span:nth-child(1) {\n width: 180px;\n }\n }\n }\n\n .server-web-option,\n .server-dns-option,\n .server-ssl-option,\n .server-mail-option {\n transform: translateX(3rem);\n }\n\n .server-mail-option {\n transform: translateX(3rem);\n\n .mail-cert-info {\n transform: translateX(3rem);\n }\n }\n\n .server-mail-option {\n .hosts {\n transform: translateX(3rem);\n }\n }\n\n .server-ssl-option {\n transform: translateX(3rem);\n\n .domain-group {\n transform: translateX(3rem);\n }\n }\n\n .server-plugins-option {\n transform: translateX(3rem);\n\n .sftp-module,\n .soft-module,\n .fm-module {\n transform: translateX(3rem);\n }\n\n .sftp-module,\n .fm-module {\n font-size: 15px;\n color: $textColor;\n }\n\n .buy-license {\n display: flex;\n margin: 5px 0;\n\n a {\n color: #FFF;\n background: $primary;\n border: none;\n border-radius: 3px;\n font-size: 13px;\n font-weight: bold;\n padding: 7px 15px;\n text-transform: capitalize;\n text-decoration: none;\n width: max-content;\n margin-right: 10px;\n\n &:hover {\n color: $hoverButtonText;\n background: $primaryLight;\n }\n\n &:hover {\n color: $activeButtonText;\n background: $primaryActive;\n }\n }\n\n + span {\n display: block;\n margin-top: 15px;\n font-style: italic;\n font-size: 12px;\n }\n }\n\n .license-description {\n display: flex;\n align-items: center;\n margin: 1rem 0;\n\n > span {\n color: $primary;\n }\n\n .form-group {\n margin: 0 0 0 20px;\n width: 60%;\n\n label {\n display: none;\n }\n }\n }\n }\n }\n}","$primary: #2c54ac;\n\n.mail-info-block {\n .select-group {\n select {\n margin-bottom: 10px;\n margin-top: 5px;\n padding: 0;\n border: none;\n color: $primary;\n text-transform: uppercase;\n font-size: 11px;\n font-weight: bold;\n cursor: pointer;\n }\n\n .details {\n font-size: 14px;\n color: #777;\n\n > div {\n display: flex;\n\n span:nth-child(1) {\n width: 50%;\n }\n }\n }\n }\n}",".content .edit-template.edit-service {\n .toolbar {\n .search-toolbar-name {\n width: max-content;\n }\n }\n\n textarea {\n width: 75%;\n }\n\n .checkbox-wrapper label {\n text-transform: capitalize;\n }\n}",".content .edit-template.add-mail-account {\n .search-toolbar-name {\n width: max-content;\n }\n\n form {\n .r-1 {\n display: flex;\n\n .c-1 {\n width: 55%;\n\n .form-group {\n > * {\n width: 85%;\n }\n\n .password-wrapper {\n input {\n width: 100%;\n }\n }\n }\n\n .form-group:nth-child(3) {\n > div {\n display: flex;\n\n input {\n width: 100%;\n }\n\n input + button {\n padding-left: 10px;\n }\n }\n }\n }\n\n .c-2 {\n width: 45%;\n height: 100%;\n border: 1px solid #d9d9d9;\n padding: 0px 5px 12px 20px;\n }\n }\n\n .r-2 {\n > button {\n padding-left: 0;\n margin-bottom: 1.5rem;\n\n svg {\n margin-left: .75rem;\n }\n }\n\n .form-group .input-wrapper {\n display: flex;\n }\n }\n }\n}",".edit-dns {\n .label-wrapper {\n span {\n text-transform: uppercase !important;\n }\n }\n}",".edit-web {\n .web-stat-additional {\n transform: translateX(3rem);\n }\n\n #c-panel-modal {\n padding: 2rem;\n\n form .form-group input[type=\"text\"] {\n width: 90% !important;\n }\n\n label {\n color: white;\n }\n\n .form-group {\n padding-left: 1.5rem;\n\n textarea {\n width: 90% !important;\n }\n }\n\n .l-col {\n display: none;\n }\n }\n}","$secondary: #fcac04;\n$secondaryLight: #f8b014;\n$textColor: #555;\n\n.content .edit-template.edit-php {\n .toolbar {\n .search-toolbar-name {\n width: max-content;\n color: $textColor;\n }\n \n .search-toolbar-name,\n .link {\n width: max-content;\n\n a {\n text-decoration: none;\n font-size: 12px;\n text-transform: uppercase;\n color: $textColor;\n font-weight: 700;\n\n &:hover {\n color: $secondaryLight;\n }\n }\n }\n\n .link {\n margin-left: 15px;\n\n a {\n color: $secondary;\n\n &:hover {\n color: $textColor;\n }\n }\n }\n }\n\n textarea {\n width: 75%;\n }\n\n .checkbox-wrapper label {\n text-transform: capitalize;\n }\n\n svg {\n margin-left: 5px;\n }\n}",".r-menu {\n > div {\n > button {\n font-size: 13px;\n background: white;\n border-color: white;\n color: gray;\n\n &:hover {\n background: white;\n border-color: white;\n color: gray;\n }\n }\n }\n}",".firewalls .list-item {\n .l-col .date {\n display: none;\n }\n\n .r-col .stats {\n margin-top: 15px;\n\n .cron-col {\n div span {\n font-weight: unset;\n font-size: 13px;\n }\n\n div span.stat {\n font-weight: bold;\n }\n }\n }\n}",".firewalls-wrapper .r-col .stats > div {\n flex: none;\n width: 17%;\n}",".content .edit-template.edit-bind9 {\n .toolbar {\n .search-toolbar-name {\n width: max-content;\n }\n }\n\n textarea {\n width: 75%;\n }\n\n .checkbox-wrapper label {\n text-transform: capitalize;\n }\n}",".content .edit-template.edit-mysql {\n .toolbar {\n .search-toolbar-name {\n width: max-content;\n }\n }\n\n textarea {\n width: 75%;\n }\n\n .checkbox-wrapper label {\n text-transform: capitalize;\n }\n\n svg {\n margin-left: 5px;\n }\n}",".add-dns form .advanced-options-button {\n svg {\n margin-left: 5px;\n }\n}","$whiteBackground: #ececec;\n$primary: #2c54ac;\n$primaryLight: #d7dcef;\n$primaryActive: #1e5cb2;\n$secondary: #fcac04;\n$secondaryLight: #f8b014;\n$secondaryActive: #fdb51c;\n$hoverButtonText: #2c54ac;\n$activeButtonText: #fff;\n$textColor: #555;\n\n.backups-restore-settings {\n .list-item {\n .r-col {\n .stats {\n .c-1 {\n margin: 12px 0 0;\n }\n }\n }\n\n .actions {\n > div {\n font-weight: bolder;\n text-transform: uppercase;\n height: 38px;\n \n a, button {\n display: flex;\n justify-content: center;\n align-items: center;\n color: $textColor;\n padding: 10px 15px;\n text-decoration: none;\n \n &:hover {\n background: $whiteBackground;\n color: white;\n \n svg {\n color: white;\n }\n }\n }\n \n svg {\n color: $textColor;\n }\n }\n\n .link-restore {\n svg {\n color: white;\n }\n\n &:hover {\n color: $hoverButtonText;\n background-color: $primaryLight;\n }\n \n &:hover {\n color: $activeButtonText;\n background-color: $primaryActive;\n }\n }\n }\n }\n}\n",".backups-restore-settings {\n .toolbar {\n .backup-details-icon {\n svg {\n transform: translateX(2px);\n }\n }\n }\n\n .mail-accounts-wrapper {\n .list-item {\n .l-col {\n .star {\n .checkbox + div {\n display: none;\n }\n }\n }\n }\n }\n}\n",".backups-wrapper .list-item .c-1 div > span {\n padding-left: 15px;\n}\n\n.backups-restore-details .list-item .star {\n display: none;\n}",".cron-jobs-list.r-col .name {\n font-size: 25px;\n}\n\n.cron-col > div {\n display: flex;\n flex-direction: column;\n\n span {\n font-size: 18px;\n font-weight: bolder;\n }\n}","$whiteBackground: #ececec;\n$primary: #2c54ac;\n$primaryLight: #d7dcef;\n$primaryActive: #1e5cb2;\n$secondary: #fcac04;\n$secondaryLight: #f8b014;\n$danger: #b00e5b;\n$secondaryActive: #fdb51c;\n$hoverButtonText: #2c54ac;\n$activeButtonText: #fff;\n$textColor: #555;\n\n.r-menu {\n > div {\n > button {\n font-size: 13px;\n background: white;\n border-color: white;\n color: $textColor;\n\n &:hover {\n background: white;\n border-color: white;\n color: $textColor;\n }\n }\n }\n}\n\n.cron-wrapper {\n .r-col .stats > div {\n flex: none;\n width: 17%;\n }\n\n .actions {\n > div:nth-child(1) a:hover,\n > div:nth-child(1) button:hover {\n background: $primaryLight;\n }\n\n > div:nth-child(2) a:hover,\n > div:nth-child(2) button:hover {\n background: #ff3438;\n }\n }\n}",".packages {\n .r-col {\n .stats {\n .c-2 {\n padding-left: 2rem;\n\n div > span {\n width: 50%;\n }\n }\n\n .c-3 {\n margin-left: 0;\n\n div.ns {\n margin-top: 5px;\n }\n }\n }\n }\n}",".packages-wrapper {\n .r-col .stats {\n .c-1 .stat {\n margin-left: 1rem;\n }\n\n .c-2 {\n padding: 0;\n }\n }\n}","$whiteBackground: #ececec;\n$primary: #2c54ac;\n$primaryLight: #d7dcef;\n$primaryActive: #1e5cb2;\n$secondary: #fcac04;\n$secondaryLight: #f8b014;\n$danger: #b00e5b;\n$secondaryActive: #fdb51c;\n$hoverButtonText: #2c54ac;\n$activeButtonText: #fff;\n$textColor: #555;\n\n.password-wrapper {\n display: flex;\n\n button {\n color: $primary;\n\n &:hover {\n color: $secondaryLight;\n }\n }\n\n span.eye {\n margin-left: 9px;\n }\n\n span.eye-slash {\n margin-left: 7px;\n }\n}\n\nbutton.generate-password {\n color:$primary;\n font-weight: bold;\n\n &:hover {\n color: $secondaryLight;\n }\n\n &:active {\n color: $secondaryActive;\n }\n}\n\ninput {\n color: $textColor;\n}\n\nlabel[for=email] {\n width: 100%;\n display: flex;\n align-items: center;\n\n > div {\n display: flex;\n align-items: center;\n\n input {\n height: fit-content;\n margin: 0 10px;\n }\n\n label {\n margin: 0;\n font-size: 12px;\n }\n }\n}",".statistics-list.updates {\n .text-status {\n display: flex;\n margin-top: 20px;\n\n > div.checkbox {\n margin-bottom: 0;\n margin-right: 10px;\n }\n }\n\n .list-item .star {\n display: none;\n }\n\n .r-col .c-1 {\n margin-right: 10px;\n }\n}",".statistics-list.updates .toolbar {\n height: 44px;\n}",".servers-list {\n .servers-wrapper .list-item.sys-info {\n .r-col {\n padding: 0;\n\n .name {\n font-size: 35px;\n }\n\n .c-2 span > span.stat {\n margin-left: 10px;\n }\n\n .c-3 {\n padding-right: 0;\n\n > div > span {\n width: 100%;\n }\n }\n }\n }\n\n .actions a.link-gray.restart svg,\n .actions button.link-gray.restart svg {\n width: 1rem;\n height: 1rem;\n }\n}",".servers-list .list-item .star {\n display: none;\n}\n\n.servers-list .r-col .stats .c-2 {\n padding: 0;\n}\n\n.servers-wrapper .list-item .r-col .stats .c-3 {\n padding: 0;\n\n span.stat {\n margin-left: 0;\n }\n}\n\n.servers-wrapper .r-col {\n padding-left: 2rem;\n\n .server-name {\n color: black;\n font-size: 28px;\n }\n}\n\n.servers-wrapper .list-item .r-col {\n .c-3 > div > span {\n transform: translateX(-10px);\n }\n\n .stats div>span {\n width: 100%;\n }\n}",".servers-list .l-col {\n .text-status {\n display: block;\n }\n\n div.star {\n display: none;\n }\n\n .servers-wrapper {\n .list-item:first-child {\n margin-top: 0;\n }\n\n .l-col {\n width: 16.3%;\n\n .server-name {\n font-size: 28px;\n }\n }\n }\n}","$secondaryLight: #f8b014;\n\n.mobile-top-nav-wrapper.hide {\n opacity: 0;\n}\n\n.mobile-top-nav-wrapper.show {\n opacity: 1;\n position: fixed;\n width: 100%;\n height: 100vh;\n background: white;\n display: flex;\n flex-direction: column;\n animation: showMobileNav forwards .3s;\n margin-top: 34px;\n\n > div {\n height: 33.33%;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n\n .toolbar {\n margin: 0;\n position: relative;\n border: none;\n }\n\n\n .mobile-stat-menu .menu-wrapper {\n position: relative;\n height: auto;\n min-height: auto;\n\n .menu-stat {\n margin: 0;\n }\n }\n}\n\n@media (max-width: 900px) {\n .mobile-toolbar .toolbar {\n padding: 0 1%;\n }\n}\n\n@media (max-width: 450px) {\n .mobile-top-nav-wrapper.show .mobile-menu {\n padding: 15px 0 0 15px;\n font-size: 19px;\n height: 27%;\n\n > div {\n width: 50%;\n height: 100%;\n\n > div {\n padding: 2px;\n\n &:hover {\n color: $secondaryLight;\n }\n }\n }\n }\n}\n\n@keyframes showMobileNav {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n","$whiteBackground: #ececec;\n$primary: #2c54ac;\n$primaryLight: #d7dcef;\n$primaryActive: #1e5cb2;\n$secondary: #fcac04;\n$secondaryLight: #f8b014;\n$secondaryActive: #fdb51c;\n$hoverButtonText: #2c54ac;\n$activeButtonText: #fff;\n$notifications: #e49d45;\n$notificationsLight: #de9234;\n$notificationsActive: #6f4e2b;\n$textColor: #555;\n\n.top-panel .profile-menu {\n div {\n width: auto;\n height: auto;\n }\n\n button {\n cursor: default;\n background: none;\n box-shadow: unset;\n width: 100%;\n height: 100%;\n\n &:hover {\n background: none;\n }\n\n &:active, &:focus {\n outline: none;\n border: unset;\n background: unset;\n background-color: unset;\n border-color: unset;\n }\n }\n\n .btn-danger:not(:disabled):not(.disabled).active,\n .btn-danger:not(:disabled):not(.disabled):active,\n .show>.btn-danger.dropdown-toggle {\n background-color: unset;\n border-color: unset;\n box-shadow: unset;\n }\n\n .dropdown-menu {\n display: none;\n height: auto;\n max-height: 75vh;\n overflow: auto;\n cursor: default;\n background: #222e44;\n border: 1px solid #fcac04;\n border-width: 1px 0 0 0;\n box-shadow: rgb(34, 46, 68) 0px 0px 10px -1px;\n\n > div {\n cursor: default;\n }\n }\n \n .dropdown-menu.show {\n display: flex;\n flex-direction: column;\n width: auto;\n width: 340px;\n margin: 0;\n\n .dropdown-item {\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n padding-left: 0;\n padding-right: 5px;\n\n span.title {\n display: block;\n width: 100%;\n padding: 10px 0 0 10px;\n text-align: left;\n color: $secondary;\n }\n\n span.delete-notification {\n width: 10px;\n height: 10px;\n background: $secondary;\n border-radius: 50%;\n cursor: pointer;\n\n &:hover {\n border: 2px solid $secondaryLight;\n background: transparent;\n }\n }\n\n &:hover {\n background: none;\n }\n }\n\n .dropdown-item + div {\n text-align: left;\n width: 100%;\n padding: 0 10px 20px 10px;\n color: #ABABAB;\n\n a {\n display: contents;\n color: $notifications;\n\n &:hover {\n color: $notificationsLight;\n }\n }\n }\n\n .dropdown-divider {\n margin: 0;\n border-color: #555;\n width: 100%;\n\n &:last-child {\n display: none;\n }\n }\n }\n}","$whiteBackground: #ececec;\n$primary: #2c54ac;\n$primaryLight: #d7dcef;\n$primaryActive: #1e5cb2;\n$secondary: #fcac04;\n$secondaryLight: #f8b014;\n$secondaryActive: #fdb51c;\n$hoverButtonText: #2c54ac;\n$activeButtonText: #fff;\n$textColor: #555;\n\n.top-panel.small-device {\n display: none;\n}\n\n.top-panel {\n display: flex;\n flex-direction: row;\n font-size: 12px;\n position: fixed;\n width: 100%;\n text-align: center;\n color: white;\n background: #222e44;\n height: 34px;\n align-items: center;\n padding: 0 13%;\n z-index: 2;\n\n .container {\n display: flex;\n flex-direction: row;\n width: 80%;\n height: 100%;\n\n .logo div {\n img {\n width: 82%;\n }\n\n &:hover {\n background-color: transparent;\n }\n }\n\n div {\n display: flex;\n justify-content: center;\n align-items: center;\n \n a, button {\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 0 10px !important;\n width: 100%;\n height: 100%;\n text-decoration: none;\n color: white;\n }\n\n button {\n background: none;\n border: none;\n }\n\n &:hover {\n cursor: pointer;\n }\n }\n\n div.active {\n background: white;\n \n a, button {\n color: $secondary;\n font-weight: bold;\n\n &:hover {\n color: white;\n }\n\n &:active {\n background: $secondaryActive;\n color: white;\n }\n }\n\n &:hover {\n background: $secondaryLight;\n }\n }\n }\n\n .left-menu {\n width: 75%;\n padding-left: 0;\n margin-left: 0;\n justify-content: space-between;\n\n div {\n flex: 1 1 auto;\n height: 100%;\n transform: translateX(-5px);\n\n &:hover {\n background: $secondaryLight;\n }\n }\n\n div.logo {\n width: 7rem;\n padding-left: 0;\n\n a {\n div {\n padding: 0;\n width: 6rem;\n flex: none;\n\n img {\n width: 90%;\n }\n }\n }\n\n &:hover {\n background: transparent;\n }\n }\n\n div.fm {\n width: 10rem;\n }\n\n .top-link.focus {\n a, button {\n color: $secondaryActive;\n }\n }\n }\n\n .profile-menu {\n width: auto;\n\n div {\n width: 4rem;\n height: 100%;\n }\n\n div.bell {\n width: auto;\n color: $secondary;\n padding: 3px 0;\n\n svg {\n border-radius: 30px;\n width: 100%;\n height: 100%;\n padding: 3px;\n\n &:hover {\n background: #79522294;\n }\n\n &:active {\n background: #866032;\n }\n }\n }\n\n div + div a {\n color: #a4abad;\n font-weight: 700;\n \n &:hover {\n color: $secondaryLight;\n }\n\n &:active {\n color: $secondaryActive;\n }\n }\n\n div + div + div a,\n div + div + div button {\n color: white;\n cursor: pointer;\n font-weight: 100;\n\n &:hover {\n color: $secondaryLight;\n }\n\n &:active {\n color: $secondaryActive;\n }\n }\n }\n}\n\n.top-panel.long-profile {\n .left-menu {\n justify-content: start;\n\n > div {\n width: max-content;\n flex: unset;\n padding: 0 1rem;\n }\n\n .logo {\n width: 7rem;\n padding: 0;\n margin-right: 1rem;\n }\n }\n\n .profile-menu {\n justify-content: space-between;\n align-items: center;\n\n > div + div {\n width: max-content;\n }\n\n .long-username {\n display: flex;\n justify-content: center;\n align-items: center;\n width: auto;\n\n > span:nth-child(1) {\n margin-right: 5px;\n }\n\n > span:nth-child(3) {\n margin-left: 5px;\n }\n }\n }\n}\n\n@media screen and (max-width: 1350px) {\n .top-panel {\n padding: 0 10%;\n }\n}\n\n@media screen and (max-width: 1024px) {\n .top-panel {\n padding: 0 5%;\n }\n}\n\n//Small Devices\n@media (max-width: 900px) {\n .top-panel {\n display: none;\n }\n\n .top-panel.small-device {\n display: flex;\n padding: 0;\n\n > .container {\n justify-content: center;\n align-items: center;\n width: 30%;\n }\n\n .profile-menu {\n padding-left: 10%;\n }\n\n .hamburger {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n\n .bar {\n height: 2px;\n margin: 2px;\n width: 20px;\n background: white;\n }\n }\n }\n\n @keyframes toggleNav {\n from {\n transform: translateY(-20px);\n }\n\n to {\n transform: translateY(50px);\n }\n }\n}\n\n@media (max-width: 420px) {\n .top-panel.small-device {\n .profile-menu {\n padding: 0;\n margin-right: 5px;\n\n .bell {\n width: 20%;\n }\n\n .bell + div {\n width: 40%;\n }\n\n .bell + div + div {\n width: 40%;\n }\n }\n }\n}",".main-nav {\n width: 100%;\n height: 249px;\n\n .nav-wrapper {\n position: fixed;\n width: 100%;\n animation: toggleNav .75s forwards;\n z-index: 1;\n }\n}\n\n// Small Devices\n@media (max-width: 900px) {\n .main-nav {\n height: 0;\n }\n\n @keyframes toggleNav {\n from {\n transform: translateY(-150px);\n }\n \n to {\n transform: translateY(50px);\n }\n }\n}","$primary: #2c54ac;\n\n.mail-accounts {\n div.subtitle {\n color: $primary;\n font-size: 12px;\n margin: 30px 0 18px 14.3%;\n text-transform: uppercase;\n font-weight: bold;\n }\n\n .mail-accounts-wrapper {\n > div:nth-child(2) {\n border-top: 1px solid #ddd;\n }\n\n div.list-item {\n .r-col {\n .stat.email {\n width: max-content;\n text-transform: none;\n }\n }\n }\n }\n\n .footer-actions-wrapper {\n display: flex;\n align-items: center;\n margin-top: 2rem;\n padding-bottom: 1.5rem;\n\n .total {\n margin: 0 3.5rem 0 14.3%;\n }\n\n .back {\n a {\n padding: 8px 38px;\n color: #777;\n background: #DFDEDD;\n border: 1px solid #DFDEDD;\n border-radius: 3px;\n font-size: 13px;\n font-weight: bold;\n }\n }\n }\n}",".crossed {\n text-decoration: line-through;\n}\n\n.catchall-mail {\n text-transform: none;\n}\n","$whiteBackground: #ececec;\n$primary: #2c54ac;\n$primaryLight: #d7dcef;\n$primaryActive: #1e5cb2;\n$secondary: #fcac04;\n$secondaryLight: #f8b014;\n$danger: #b00e5b;\n$secondaryActive: #fdb51c;\n$hoverButtonText: #2c54ac;\n$activeButtonText: #fff;\n$textColor: #555;\n\n.dns-records {\n div.subtitle {\n color: $primary;\n font-size: 12px;\n margin: 30px 0 18px 14.3%;\n text-transform: uppercase;\n font-weight: bold;\n }\n\n .dns-records-wrapper {\n > div:nth-child(2) {\n border-top: 1px solid #ddd;\n }\n\n div.list-item {\n .r-col {\n .stats {\n > div {\n flex: unset;\n }\n\n .c-1 {\n width: 14.3%;\n }\n\n .c-2 {\n margin-left: 10px;\n width: 14.3%;\n }\n\n .c-3 {\n margin-left: 0;\n width: 14.3%;\n\n span {\n color: #888;\n font-weight: normal;\n }\n }\n\n .c-4 {\n width: 550px;\n\n .stat {\n display: block;\n white-space: normal;\n overflow: hidden;\n width: 100%;\n text-overflow: ellipsis;\n }\n }\n }\n }\n }\n }\n\n .footer-actions-wrapper {\n display: flex;\n align-items: center;\n margin-top: 2rem;\n padding-bottom: 1.5rem;\n\n .total {\n margin: 0 3.5rem 0 14.3%;\n }\n\n .back {\n a {\n padding: 8px 38px;\n color: #777;\n background: #DFDEDD;\n border: 1px solid #DFDEDD;\n border-radius: 3px;\n font-size: 13px;\n font-weight: bold;\n }\n }\n }\n}","span.dns-records {\n padding-left: 25px;\n font-size: 18px;\n font-weight: normal;\n font-style: italic;\n color: gray;\n}\n\n.r-col {\n .stats {\n .c-2.w-30 {\n padding-left: 0;\n }\n }\n}",".statistic-item {\n display: flex;\n justify-content: center;\n padding: 25px 0;\n border-bottom: 1px solid #eee;\n\n .l-col {\n .date {\n font-size: 13px;\n margin-top: 3rem;\n }\n }\n\n .r-col {\n .name {\n font-size: 32px;\n }\n\n .c-1 {\n .bandwidth, .disk {\n width: 220px;\n }\n\n div.sub-disk-stats {\n width: 250px;\n }\n }\n\n .c-2 {\n margin-right: 0;\n\n div>span:nth-child(2) {\n margin: 0;\n padding: 0;\n }\n }\n\n .c-3.w-35 {\n span.stat {\n width: 80px;\n }\n\n \n div > span {\n width: 50%;\n text-align: left;\n }\n\n div>span:nth-child(2) {\n width: 100px;\n }\n }\n }\n}",".statistics-list {\n color: #686868;\n\n .toolbar {\n padding: 6px 13%;\n }\n\n .l-col {\n width: 14.3%;\n\n div.date {\n margin-top: 25px;\n }\n }\n}\n\n.total {\n margin-top: 25px;\n margin-left: 15%;\n font-size: 12px;\n color: #929292;\n}\n\n.statistic-item.focused {\n border-left: 2px solid #5edad0;\n transform: translateX(-2px);\n\n .r-col .date {\n color: #5edad0;\n }\n}\n\n@media (max-width: 1350px) {\n .statistics-list .toolbar {\n padding: 6px 9.5%;\n }\n}","$whiteBackground: #ececec;\n$primary: #2c54ac;\n$primaryLight: #d7dcef;\n$primaryActive: #1e5cb2;\n$secondary: #fcac04;\n$secondaryLight: #f8b014;\n$danger: #b00e5b;\n$secondaryActive: #fdb51c;\n$hoverButtonText: #2c54ac;\n$activeButtonText: #fff;\n$textColor: #555;\n\n.checkbox {\n margin-bottom: 10px;\n}\n\n.date {\n margin: 10px 0;\n}\n\n.l-col div.star {\n text-align: center;\n\n div > svg {\n cursor: pointer;\n opacity: 0;\n color: gray;\n padding: 8px;\n width: 35px;\n height: 35px;\n border-radius: 50%;\n\n &:hover {\n background: #b4b4b478;\n color: $primary;\n }\n }\n}\n\nspan.stat.email{\n display: block;\n width: max-content;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n\n.r-col {\n .name {\n font-size: 35px;\n margin-bottom: 5px;\n color: black;\n }\n \n > div:nth-child(2) {\n text-transform: capitalize;\n }\n\n .stats {\n display: flex;\n justify-content: flex-start;\n align-items: flex-start;\n\n .c-1, .c-2, .c-3 {\n width: 32%;\n\n > div {\n display: flex;\n margin: 5px 0;\n }\n\n .bandwidth,\n .disk {\n width: 200px;\n justify-content: space-between;\n margin-bottom: 25px;\n border-bottom: 1px dotted gray;\n }\n\n .sub-disk-stats {\n width: 250px;\n\n > div {\n width: 50%;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n font-size: 11px;\n\n span:nth-child(1) {\n width: 40px;\n }\n }\n\n > div:nth-child(2) {\n width: 70%;\n justify-content: flex-end;\n\n span:nth-child(1) {\n width: 80px;\n }\n }\n }\n }\n\n .c-1 {\n margin: 0;\n margin-top: 15px;\n }\n\n .c-2 {\n margin: 15px 20px;\n\n div {\n > span:nth-child(1) {\n width: 120px;\n }\n\n > span:nth-child(2) {\n width: 150px;\n padding-left: 15px;\n }\n }\n }\n\n .c-3 {\n div {\n > span:nth-child(1) {\n width: 120px;\n }\n\n > span:nth-child(2) {\n width: 200px; \n }\n }\n\n div.ns {\n margin-top: 20px;\n }\n }\n\n > div {\n margin: 15px 0;\n flex: 1 1 0;\n }\n\n .stat {\n font-weight: bold;\n color: #5f5f5f;\n }\n }\n}\n\n.actions {\n position: absolute;\n top: 0;\n right: 0;\n opacity: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: 12px;\n background: #dfdedd;\n\n > div {\n font-weight: bolder;\n text-transform: uppercase;\n height: 38px;\n\n a, button {\n display: flex;\n justify-content: center;\n align-items: center;\n color: #777;\n padding: 10px 15px;\n text-decoration: none;\n\n &:hover {\n background: rgb(145, 145, 145);\n color: white;\n\n svg {\n color: white;\n }\n }\n }\n\n svg {\n color: #777;\n }\n }\n\n > div:nth-child(2) a:hover {\n background: $primary;\n }\n\n > div:nth-child(4) a:hover {\n background: $danger;\n }\n\n svg {\n margin-left: 12px;\n }\n}\n\n.list-item.focused .r-col .name {\n color: $secondaryLight;\n}",".content .Toastify__toast-container {\n bottom: 1em !important;\n top: unset;\n}",".timer-wrapper {\n display: flex;\n justify-content: center;\n align-items: center;\n\n button {\n border: none;\n background: none;\n\n &:active, &:focus {\n outline: none;\n }\n }\n\n .circle-wrapper {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 30px;\n height: 30px;\n\n span.seconds {\n &:hover, &:active {\n background: unset;\n }\n }\n\n svg {\n height: 30px;\n width: 30px;\n\n circle {\n stroke: black;\n fill: white;\n stroke-width: 3%;\n stroke-dasharray: 72;\n stroke-dashoffset: 9;\n transform-box: fill-box;\n transform-origin: center;\n transform: rotate(270deg);\n transition: all 1s linear;\n }\n }\n }\n}",".rrd-item {\n display: flex;\n justify-content: center;\n align-items: center;\n border-bottom: 1px solid #eee;\n position: relative;\n\n .l-col {\n .date {\n font-size: 13px;\n margin-top: 3rem;\n }\n\n .time {\n font-size: 13px;\n margin-top: 2rem;\n text-align: left;\n }\n }\n\n .r-col {\n .name {\n font-size: 32px;\n }\n\n .rrd-image {\n font-size: 20px;\n text-transform: lowercase;\n }\n }\n}\n\n.rrd-item.focused {\n border-left: 2px solid #5edad0;\n\n .l-col {\n padding-left: 11px;\n }\n\n div.actions {\n opacity: 1;\n }\n}","$whiteBackground: #ececec;\n$primary: #2c54ac;\n$primaryLight: #d7dcef;\n$primaryActive: #1e5cb2;\n$secondary: #fcac04;\n$secondaryLight: #f8b014;\n$danger: #b00e5b;\n$secondaryActive: #fdb51c;\n$hoverButtonText: #2c54ac;\n$activeButtonText: #fff;\n$textColor: #555;\n\ndiv.content {\n margin-top: 0;\n}\n\n.rrd-list {\n color: $textColor;\n\n .toolbar {\n padding: 6px 13%;\n }\n\n .rrd-item {\n padding: 25px 0;\n align-items: flex-start;\n\n .actions {\n opacity: 0;\n }\n\n .l-col {\n display: flex;\n flex-direction: column;\n margin: 15px 40px 0 0;\n\n .date {\n margin: 0;\n }\n }\n\n &:hover {\n .actions {\n opacity: 1;\n }\n }\n }\n}\n\n.periods-wrapper {\n display: flex;\n align-items: center;\n\n > div:nth-child(1) {\n margin-left: 8px;\n }\n\n > div {\n cursor: pointer;\n margin: 0 15px;\n font-size: 14px;\n\n &:hover {\n color: $secondaryLight;\n }\n\n &:active {\n color: $primaryActive;\n }\n }\n\n .timer-wrapper {\n > button svg {\n\n &:hover {\n color: $secondaryLight;\n }\n\n &:active {\n color: $primaryActive;\n }\n }\n\n > div.circle-wrapper {\n cursor: default;\n }\n }\n\n > div.active {\n color: $secondaryActive;\n }\n}\n\n@media (max-width: 1350px) {\n .rrd-list .toolbar {\n padding: 6px 9.5%;\n }\n}\n",".service-info {\n .content {\n font-size: 14px;\n color: #555;\n padding-top: 4rem;\n }\n}\n",".web-stats,\n.add-ftp {\n text-decoration: line-through;\n}\n\n.r-col {\n .stats {\n .c-2 {\n margin-left: 20px;\n }\n }\n}\n\n.r-col {\n .c-2 span.stat,\n .c-3 span.stat {\n margin-left: 1rem;\n }\n\n .name {\n display: flex;\n align-items: center;\n\n > div:nth-child(1) {\n margin-right: 2rem;\n }\n\n .dns-name-span {\n font-style: italic;\n color: #858585;\n font-size: 14px;\n }\n }\n}\n\ndiv.crossed {\n text-decoration: line-through;\n}","$secondary: #fcac04;\n\n.content {\n .toolbar {\n .search-toolbar-name {\n font-size: 12px;\n text-transform: uppercase;\n color: $secondary;\n font-weight: bold;\n margin-left: 14.3%;\n padding-left: 7px;\n align-self: center;\n }\n\n .search-toolbar-right {\n display: flex;\n justify-content: center;\n align-items: center;\n\n .btn-group {\n button {\n border: none;\n background: none;\n box-shadow: none;\n\n &:focus, &:active, &:hover {\n background: none;\n box-shadow: none;\n outline: none;\n border: none;\n color: #686868;\n }\n }\n }\n\n .search-input-form {\n padding-top: 2px;\n }\n }\n }\n\n .statistics-wrapper {\n > .list-item:first-child {\n margin-top: 0;\n }\n\n .list-item {\n .l-col {\n > .star {\n display: none;\n }\n }\n\n .r-col {\n div.object {\n text-transform: uppercase;\n }\n\n .c-2 .owner span,\n .c-3 .status span {\n text-align: center;\n font-weight: bold;\n text-transform: lowercase;\n }\n }\n }\n }\n}",".logs-list {\n .toolbar {\n padding: 6px 13%;\n }\n\n .statistic-item {\n .l-col {\n font-size: 13px;\n color: #888;\n \n .date {\n margin: 1rem 0;\n margin-bottom: 1.5rem;\n }\n }\n \n .r-col {\n .name {\n margin-top: .7rem;\n font-size: 18px;\n }\n }\n }\n\n .statistic-item.focused {\n border-left: 2px solid #5edad0;\n\n div.name {\n color: #5edad0;\n }\n }\n}\n\n@media (max-width: 1350px) {\n .logs-list .toolbar {\n padding: 6px 9.5%;\n }\n}",".logs-list .toolbar .search-input-form input {\n margin-bottom: 5px;\n}\n\n.logs-list .l-col {\n width: 14%;\n}","$whiteBackground: #ececec;\n$primary: #2c54ac;\n$primaryLight: #d7dcef;\n$primaryActive: #1e5cb2;\n$secondary: #fcac04;\n$secondaryLight: #f8b014;\n$danger: #b00e5b;\n$secondaryActive: #fdb51c;\n$hoverButtonText: #2c54ac;\n$activeButtonText: #fff;\n$textColor: #555;\n\n.content {\n padding: 0 13%;\n padding-bottom: 1%;\n margin-top: 5px;\n\n > div > div.total {\n margin-top: 25px;\n margin-left: 14%;\n font-size: 12px;\n color: #929292;\n }\n}\n\n@media (max-width: 1350px) {\n .content {\n padding: 0 10%;\n }\n}\n\n@media (max-width: 1000px) {\n .content {\n padding: 5%;\n }\n}\n\n@media (max-width: 800px) {\n .content {\n padding-top: 5%;\n }\n}\n\n.fixed-buttons {\n position: fixed;\n right: 15px;\n bottom: 15px;\n display: flex;\n justify-content: space-around;\n align-items: center;\n\n > div {\n width: 40px;\n height: 40px;\n padding: 5px;\n margin: 5px;\n border-radius: 50%;\n background: #c3c3c3;\n display: flex;\n justify-content: center;\n align-items: center;\n \n &:hover {\n color: $hoverButtonText;\n background: $primaryLight;\n }\n \n &:active {\n color: $activeButtonText;\n background: $primaryActive;\n }\n \n button {\n display: flex;\n justify-content: center;\n align-items: center;\n background: none;\n border: none;\n width: 100%;\n height: 100%;\n border-radius: 50%;\n transform: scale(1.32);\n \n svg {\n color: white;\n height: 70%;\n }\n }\n }\n\n > div:first-child {\n color: #c3c3c3;\n background: none;\n\n &:hover {\n background: $primaryLight;\n\n button svg {\n color: $activeButtonText;\n }\n }\n\n &:active {\n color: $activeButtonText;\n background: $primaryActive;\n }\n\n button {\n padding: 0;\n\n svg {\n color: #c3c3c3;\n }\n }\n }\n}\n","$whiteBackground: #ececec;\n$primary: #2c54ac;\n$primaryLight: #d7dcef;\n$primaryActive: #1e5cb2;\n$secondary: #fcac04;\n$secondaryLight: #f8b014;\n$danger: #b00e5b;\n$secondaryActive: #fdb51c;\n$hoverButtonText: #2c54ac;\n$activeButtonText: #fff;\n$textColor: #555;\n\n.panel-wrapper {\n .logo-img {\n img {\n width: 82%;\n }\n\n &:hover {\n background-color: transparent;\n }\n }\n\n .nav-link {\n padding: 0;\n }\n\n .left-menu {\n a, button {\n padding: 0 !important;\n outline: none;\n }\n \n > div.nav-link {\n padding: 0;\n }\n }\n\n .profile-menu {\n > div:nth-child(1) a {\n &:hover {\n color: $secondaryLight;\n }\n\n &:active {\n color: $secondaryActive;\n }\n }\n\n > div:nth-child(2) a {\n &:hover {\n color: $secondaryActive;\n }\n\n &:active {\n color: $secondaryActive;\n }\n }\n\n .user {\n color: #a4abad;\n font-weight: 700;\n \n &:hover {\n color: $secondaryLight;\n }\n\n &:active {\n color: $secondaryActive;\n }\n }\n\n .log-out {\n color: white;\n cursor: pointer;\n font-weight: 100;\n\n &:hover {\n color: $primaryLight;\n }\n\n &:active {\n color: $secondaryActive;\n }\n }\n }\n}\n",".web-logs {\n .content {\n padding: 50px 10px 0;\n color: #7d7d7d;\n font-size: 20px;\n }\n\n .nav-link:nth-child(3),\n .nav-link:nth-child(4) {\n width: 9rem;\n }\n}",".login-layout {\n margin-top: 1rem;\n padding: 2rem 3rem;\n}","$whiteBackground: #ececec;\n$primary: #2c54ac;\n$primaryLight: #d7dcef;\n$primaryActive: #1e5cb2;\n$secondary: #fcac04;\n$secondaryLight: #f8b014;\n$secondaryActive: #fdb51c;\n$hoverButtonText: #2c54ac;\n$activeButtonText: #fff;\n$textColor: #555;\n\n.login-page {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100vh;\n background-color: #eee;\n\n .login-form-wrapper {\n background-color: #fff;\n box-shadow: 0 2px 6px rgba(100, 100, 100, 0.3);\n font-family: Arial,Helvetica,sans-serif;\n margin: 0;\n padding: 0;\n text-align: left;\n width: 575px;\n\n .login-layout {\n position: relative;\n\n > span {\n position: absolute;\n bottom: 0;\n right: 20px;\n font-size: 11px;\n \n a {\n color: #505050;\n }\n }\n }\n\n form {\n display: flex;\n position: relative;\n\n > div {\n input[type=\"text\"],\n input[type=\"password\"] {\n width: 100%;\n }\n }\n\n .c1 {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 35%;\n\n img {\n width: 110%;\n }\n }\n\n .c2 {\n width: 65%;\n margin-left: 3.5rem;\n\n .forgot-password {\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: .75px;\n text-decoration: none;\n }\n\n button[type=\"submit\"] {\n background-color: $primary;\n border: 1px solid $primary;\n padding: 1px 16px 3px;\n font-size: 13px;;\n height: 35px;\n color: #fafafa;\n border-radius: 3px;\n\n &:hover {\n color: $primary;\n border: 1px solid $primaryLight;\n background-color: $primaryLight;\n }\n\n &:active {\n color: #fafafa;\n border: 1px solid $primary;\n background-color: $primary;\n }\n\n .disabled {\n cursor: not-allowed;\n }\n }\n\n div.error-message {\n margin-top: 1rem;\n color: #BE5ABF;\n }\n }\n }\n }\n}"]} \ No newline at end of file diff --git a/web/static/css/main.9f0c683e.chunk.css b/web/static/css/main.9f0c683e.chunk.css new file mode 100644 index 000000000..e8b1f965e --- /dev/null +++ b/web/static/css/main.9f0c683e.chunk.css @@ -0,0 +1,2 @@ +body{margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}code{font-family:source-code-pro,Menlo,Monaco,Consolas,"Courier New",monospace}.spinner-wrapper{position:absolute;bottom:5px;width:150px;left:42%;height:10px}.dropdown-menu ul{height:150px}.dropdown-menu ul li{display:inline-flex}.lists-container .dropdown-menu.show{-webkit-transform:translate3d(-57%,39px,0)!important;transform:translate3d(-57%,39px,0)!important}.path{display:flex;justify-content:space-between;font-size:15px;padding:1px 0 0 5px;height:40px;background:#222e44;color:#999;box-shadow:0 2px 10px -4px #222e44}.path .btn-group{width:75px;margin-left:15px;background:none;box-shadow:none}.path .btn-group .btn-secondary:not(:disabled):not(.disabled).active,.path .btn-group .btn-secondary:not(:disabled):not(.disabled):active,.path .btn-group .show>.btn-secondary.dropdown-toggle{background:#222e44;border:#222e44}.path .btn-group button{padding-left:0;padding-right:5px;color:#999;background:#222e44;border:#222e44;transition:none}.path .btn-group button span{color:#999;padding:0 0 0 5px}.path .btn-group button:active,.path .btn-group button:focus{background:#222e44;border:#222e44}.path .btn-group .btn.active.focus,.path .btn-group .btn.active:focus,.path .btn-group .btn.focus,.path .btn-group .btn:active.focus,.path .btn-group .btn:active:focus,.path .btn-group .btn:focus{box-shadow:none;outline:none;background:#222e44;border:#222e44}.path .btn-group .btn-secondary{display:flex;justify-content:center;align-items:center}.path .clickable{padding-top:8px;cursor:pointer}.active-path{display:flex;justify-content:space-between;font-size:15px;padding:1px 0 0 5px;height:40px;background:#d7dcef;color:#fff;box-shadow:0 2px 6px -2px #d7dcef}.active-path .clickable-wrapper{display:flex;flex-wrap:nowrap;overflow:auto}.active-path .btn-group{width:75px;background:none;box-shadow:none}.active-path .btn-group .btn-secondary:not(:disabled):not(.disabled).active,.active-path .btn-group .btn-secondary:not(:disabled):not(.disabled):active,.active-path .btn-group .show>.btn-secondary.dropdown-toggle{border-color:#d7dcef;background:#d7dcef}.active-path .btn-group button{padding-left:0;padding-right:5px;color:#fff;border-color:#d7dcef;background:#d7dcef;transition:none}.active-path .btn-group button span{color:#fff;padding:0 0 0 5px}.active-path .btn-group button:active,.active-path .btn-group button:focus{border-color:#d7dcef;background:#d7dcef}.active-path .btn-group .btn.active.focus,.active-path .btn-group .btn.active:focus,.active-path .btn-group .btn.focus,.active-path .btn-group .btn:active.focus,.active-path .btn-group .btn:active:focus,.active-path .btn-group .btn:focus{box-shadow:none;outline:none;border-color:#d7dcef;background:#d7dcef}.active-path .btn-group .btn-secondary{display:flex;justify-content:center;align-items:center;color:#2c54ac}.active-path .btn-group .btn-secondary span{color:#2c54ac}.active-path .btn-group .btn-secondary:hover{color:#1c3876;border-color:#d7dcef;background:#d7dcef}.active-path .btn-group .btn-secondary:hover span{color:#1c3876}.active-path .clickable{color:#2c54ac;padding-top:8px;cursor:pointer}.active-path .clickable:hover{color:#1c3876}.active-path .clickable:active{color:#2c54ac}.clickable-path{display:flex;float:0 0 auto}.list .list-container ul li svg{width:25px;vertical-align:top;margin-top:9px;margin-left:10px}.html5{color:#f16529}.file-alt{color:#20d2d1}.list .list-container ul li .marker{float:left;width:4px;height:34px;margin-right:5px}.list .list-container ul li .js{width:16px;color:#f7df1c;background:#000;margin:9px 4px 0 15px}.php{color:#777bb3}.css3{color:#0079cb}.sass{color:#cd6699}.image{color:#36afae}.folder-open{color:#e29741}.file{color:#11b1b1}.archive{color:#d1ce2b}.download{color:#929ca3}.fDate,.fOwner,.fPermissions,.fSize,.fTime{font-size:14px;float:right;width:60px;padding-top:2px}.list .list-container ul li .fName{margin-left:5px;width:260px;display:inline-block;overflow:hidden;text-overflow:clip}.list .list-container ul li .fName .name{padding:0 5px;float:left;margin-left:5px;line-height:34px;font-size:15px;white-space:nowrap;transition:all .3s ease-out}.list .list-container ul li .fName .name:hover{transition:all .2s ease-out;background:#c9c7c7;border-radius:4px;cursor:pointer}.list .list-container ul li.active .fName .name:hover{background:#f0b607;color:#000}.list .list-container ul li .fPermissions{margin-left:35px;width:50px;color:#727272;font-size:11px}.list .list-container ul li .fDate .date{color:#727272;font-size:11px}.list .list-container ul li .fTime{color:#727272;font-size:11px;width:54px}.fSize{padding-right:15px;text-align:right;width:95px}.list .list-container ul li .fOwner{color:#896417;font-style:italic;width:50px;font-size:12px;margin-right:5px}.value{color:#2c54ac}.unit{font-weight:bolder;color:#727272}li.inactive{background:#c9c7c7}li.inactive .marker{float:left;width:4px;height:34px;margin-right:5px;background:#a3a3a3}.inactive-selected{background:#dcdcdc}@media (max-width:1320px){.list .list-container ul li .fName{width:210px}.list .list-container ul li .fSize{width:75px}.list .list-container ul li .fDate{width:40px}.list .list-container ul li .fTime{width:50px}.list .list-container ul li .fPermissions{margin:0}}.list{width:50%;height:100vh;flex:1 1 50%}.list .list-container{margin-top:10px;height:calc(100% - 100px);overflow:auto}.list .list-container ul{margin-top:5px;padding:0;color:#3a3a3a}.list .list-container ul li{display:block;height:34px;line-height:30px;font-size:15px;margin-top:2px;list-style:none}.list .list-container ul li span{font-size:13px}.list .list-container ul li:hover{background:#dedede}.list .list-container ul li.active{background:#ffdc5a}.list .list-container ul li.active .marker{float:left;width:4px;height:34px;margin-right:5px;background:#79641a}.list .list-container ul li.selected{background:#fdfdbb}@media screen and (max-width:1200px){.owner,.permissions{display:none}}.progress.upload{left:0;top:0;z-index:9999;height:5px;position:fixed;width:100%;margin:0;display:inline-table;background:transparent}.progress.upload .progress-bar{height:5px}.modal{display:block;text-align:center;position:fixed;z-index:1;padding-top:200px;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:#000;background-color:rgba(0,0,0,.4)}.modal .modal-content{box-shadow:0 2px 11px 0 rgba(0,0,0,.5);background:#222e44;border:1px solid #111824;width:25%;height:auto;color:#fff;margin:100px auto auto}.modal .modal-content .modal-body{display:flex;flex-direction:column;justify-content:center;align-items:center;overflow-wrap:anywhere;font-size:17px;margin-bottom:40px}.modal .modal-content .modal-body small{margin-top:5px;font-size:13px}.modal .modal-content .modal-body small.error{color:red}.modal .modal-content .modal-body input{background:#333;border:1px solid #111;color:#fff;margin-top:10px;width:85%}.modal .modal-content .modal-header{border-bottom:none;padding-bottom:0;word-break:break-word}.modal .modal-content .modal-header h3{font-size:20px;color:#f8b014}.modal .modal-content .modal-header .replace{position:absolute;top:10px;right:10px}.modal .modal-content .modal-header .quot{color:#fdb51c}.modal .modal-content .modal-footer{border-top:1px solid #555}.modal .modal-content .modal-footer button{color:#fff;border-color:none;background:none;text-transform:uppercase;font-size:11px}.modal .modal-content .modal-footer button:focus{outline:none;box-shadow:none}.modal .modal-content .modal-footer button.btn-danger{border-color:transparent}.modal .modal-content .modal-footer button.btn-danger:focus{outline:none;border:none}.modal .modal-content .modal-footer button.btn-danger:hover{background:#b00e5b;border-color:#b00e5b}.modal .modal-content .modal-footer button+button{padding:6px 30px;background:#fcac04;border-color:#fcac04}.modal .modal-content .modal-footer button+button:hover{background:#d7dcef;border-color:#d7dcef;color:#2c54ac}.modal .modal-content .modal-footer button+button:hover{background:#1e5cb2;border-color:#1e5cb2;color:#fff}.modal .modal-content .header .quot{color:#fdb51c}.modal .modal-content .close{top:0;right:0;color:#000}.modal .nothing-selected h3{padding:15px}.modal .nothing-selected .modal-footer{margin-top:20px}.modal .nothing-selected .modal-footer button{background:#d9534f;border-color:#d9534f;color:#fff}.modal .delete .modal-header{border-bottom:none;padding-bottom:30px}.modal .delete .modal-header .close{position:absolute;top:15px;right:15px}.modal .permissions{height:auto;width:30%;margin-top:0}.modal .permissions .error,.modal .permissions:focus{border:1px solid red}.modal .permissions input[type=text]{size:40px;width:60px;margin:auto auto 10px;display:inline-block}.modal .permissions .header h3{margin-bottom:40px;font-size:30px}.modal .permissions form{margin-top:20px}.modal .permissions form div{display:flex;flex-direction:column;justify-content:space-between;margin-bottom:30px;margin-left:40px}.modal .permissions form div label{display:inherit;cursor:pointer;font-size:18px}.modal .permissions form div label input{margin-top:6px;margin-right:5px}.menu{display:flex;background:#f8f9fa;height:40px}.menu .logo{width:7rem;padding-left:5px;display:flex;justify-content:center;align-items:center}.menu .logo img{width:82%}.menu .btn-group{padding:0 0 0 10px;margin:0;font-size:17px;border-radius:0;background:#f8f9fa}.menu .btn-group .small{display:none}.menu .btn-group #upload{line-height:0;margin-top:7px;margin-bottom:7px;padding-top:8px;padding-bottom:7px;margin-left:2px;color:#fff;border-radius:4px;background:#2c54ac}.menu .btn-group #upload:hover{color:#2c54ac;background:#d7dcef}.menu .btn-group button{text-transform:uppercase;font-size:12px;padding-top:11px;padding-bottom:12px;margin:0 25px 0 2px;text-align:center}.menu .btn-group button:hover{color:#2c54ac}.menu .btn-group button:focus{box-shadow:none;outline:none}.menu .btn-group .btn-hidden,.menu .btn-group .upload{display:none}.menu .btn-group .delete:hover{color:#dd3939}@media screen and (max-width:1200px){.menu .btn-group .small{font-size:18px;padding-top:8px;display:inline-block}.menu .btn-group .icon{color:#777}.menu .btn-group .small:hover .copy,.menu .btn-group .small:hover .download,.menu .btn-group .small:hover .file,.menu .btn-group .small:hover .folder-close{color:#2c54ac}.menu .btn-group .small:hover .italic,.menu .btn-group .small:hover .paste,.menu .btn-group .small:hover .user{color:#2c54ac}.menu .btn-group .small:hover .trash{color:#dd3939}.menu .btn-group .small:hover .book{color:#2c54ac}.big{display:none}}html{overflow-y:scroll}.App{font-size:25px;font-family:Arial}.window{background:#ececec;height:100vh;width:100%;display:flex;flex-direction:column;overflow:hidden}.window .lists-container{display:flex;flex-direction:row}.active{background:#fff}.progress{height:10px;transition:all .1s ease-out}.Toastify__toast-body{font-size:20px;word-break:break-word}.Toastify__toast-container{top:15em}.actions div a.link-download:hover,.actions div a.link-edit:hover,.actions div button.link-download:hover,.actions div button.link-edit:hover{background:#2c54ac!important}.actions div a.link-list:hover,.actions div button.link-list:hover{background:#2c54ac!important}.actions div a.link-delete:hover,.actions div button.link-delete:hover{background:#b00e5b!important}.actions div a.link-gray:hover,.actions div button.link-gray:hover{background:#afafac!important}.actions div button{text-transform:inherit;font-weight:bolder;background:#dfdedd;border:none}@media screen and (max-width:700px){.actions{background:unset!important;flex-wrap:wrap;justify-content:flex-end!important}.actions div{height:30px!important}.actions div a,.actions div button{background:#dfdedd!important;padding:0 10px!important;height:100%!important;font-size:10px!important}}.period:active,a:active,button:active{color:#1e5cb2}.list-item:first-child{margin-top:5px}.list-item .text-status{display:none}button:active,button:focus,button:hover{outline:none}.fixed-buttons.fm{position:fixed;right:15px;bottom:15px;display:flex;justify-content:space-around;align-items:center}.fixed-buttons.fm>div{width:40px;height:40px;padding:5px;margin:5px;border-radius:50%;background:#c3c3c3;display:flex;justify-content:center;align-items:center}.fixed-buttons.fm>div:hover{color:#2c54ac;background:#d7dcef}.fixed-buttons.fm>div:active{color:#fff;background:#1e5cb2}.fixed-buttons.fm>div button{display:flex;justify-content:center;align-items:center;background:none;border:none;width:100%;height:100%;border-radius:50%;-webkit-transform:scale(1.32);transform:scale(1.32)}.fixed-buttons.fm>div button svg{color:#fff;height:70%}.fixed-buttons.fm>div:first-child{background:#2c54ac}.fixed-buttons.fm>div:first-child:hover{color:#2c54ac;background:#d7dcef}.fixed-buttons.fm>div:first-child:hover button svg{color:#2c54ac}.fixed-buttons.fm>div:first-child:active{color:#fff;background:#1e5cb2}.fixed-buttons.fm>div:first-child:active button svg{color:#fff}.fixed-buttons.fm>div:first-child button{padding:0}.fixed-buttons.fm>div:first-child button svg{color:#fff}@media (min-width:1067px){.App div.content{padding-top:0!important;margin-top:-20px!important}}@media (max-width:1066px){.App div.content{padding-top:0!important;margin-top:-20px!important}.content>div .l-col{margin-top:2rem;padding-left:5px}.content>div .r-col{margin-top:1rem}.content>div .r-col .name{margin-top:2rem}.content>div .r-col .stats{flex-wrap:wrap}.content>div .r-col .stats>div{margin:1rem 0!important;padding:0!important;width:100%!important}.content .servers-list .servers-wrapper .l-col{display:flex;align-items:center;height:55px;margin-top:.75rem}.content .servers-list .servers-wrapper .l-col .checkbox{margin:0}}@media (max-width:900px){.App div.content{padding-top:77px!important;margin-top:0!important}.content>div .l-col{padding-left:5px}.content>div .r-col{padding-left:2rem}}@media (max-width:725px){.content .r-col{padding-left:3.5rem}}.editor{width:100%}.editor .panel-editor{display:flex;justify-content:flex-end;width:100%;height:40px;position:absolute;padding:3px;margin:0;background:rgba(0,0,0,.75);z-index:4;transition:all .5s ease-in-out;border-bottom:1px solid #000;border-radius:0}.editor .panel-editor button{font-size:17px;height:98%;margin:0 0 0 30px;padding:0 10px}.editor .panel-editor button:focus{outline:none;box-shadow:none}.editor .close{z-index:4;position:absolute;top:5px;right:5px;font-size:40px;opacity:1;color:#000}.editor .close:hover{color:#8b8b8b}.editor .CodeMirror{height:100vh;padding-top:4vh}.editor .CodeMirror .CodeMirror-selected{background:#accef7}.editor .CodeMirror .CodeMirror-scroll{font-size:14px}.editor .save{font-size:20px;left:95%;bottom:10px;position:absolute}.carousel{width:100%;position:relative}.carousel a{width:5%}.carousel .carousel-inner .carousel-item{background:#000;width:100%;height:100vh}.carousel .carousel-inner .carousel-item .gif{height:50%;width:50%}.carousel .carousel-inner .carousel-item .img{width:90%}.carousel .carousel-indicators .indicator{margin:0 15px;width:80px;height:80px}.carousel .carousel-indicators .indicator .control-photo{width:100px;height:80px}.carousel .carousel-indicators .indicator:hover{cursor:pointer}.carousel .carousel-indicators .indicator.active>img{border:3px solid #3cc3f0}.carousel .carousel-indicators .indicator .active{border:3px solid #3cc3f0}span.close{z-index:10;font-size:30px;position:absolute;top:5px;right:10px;opacity:1;color:#fff;cursor:pointer}span.close:hover{color:#fff}.video-preview{padding-bottom:17px;width:100%;background:#000}.video-preview .close{z-index:1;font-size:30px;position:absolute;top:5px;right:2px;opacity:1;color:#fff}.video-preview .close:hover{color:#000}.video-preview .video{width:100%;height:auto}.video-preview .video:focus{outline:none}.l-col{padding-left:15px}.r-col{font-size:13px}.w-14{width:14.3%}.w-20{width:20%}.w-25{width:25%}.w-30{width:30%}.w-35{width:35%}.w-40{width:40%}.w-45{width:45%}.w-50{width:50%}.w-60{width:60%}.w-85{width:85%}.content .edit-template{padding-bottom:2rem}.content .edit-template .toolbar{justify-content:unset}.content .edit-template .toolbar>div{width:14.3%;display:flex;align-items:center}.content .edit-template .toolbar div.error,.content .edit-template .toolbar div.success{width:-webkit-fit-content!important;width:fit-content!important}.content .edit-template .toolbar div.error span,.content .edit-template .toolbar div.success span{font-weight:700;font-size:14px}.content .edit-template .toolbar div.error span svg,.content .edit-template .toolbar div.success span svg{font-size:13px;margin-right:10px}.content .edit-template .toolbar div.error span.error-message,.content .edit-template .toolbar div.success span.error-message{color:#be5abf}.content .edit-template .toolbar div.error span.error-message svg,.content .edit-template .toolbar div.success span.error-message svg{margin-right:7px;font-size:13px;color:#be5abf}.content .edit-template .toolbar div.error span.ok-message,.content .edit-template .toolbar div.error span.ok-message svg,.content .edit-template .toolbar div.success span.ok-message,.content .edit-template .toolbar div.success span.ok-message svg{color:#2c54ac}.content .edit-template .toolbar .search-toolbar-name{width:auto!important;padding:10px 0;margin-left:0;margin-right:10px}.show{display:flex}.edit-item,.login-layout{display:flex;font-size:15px;margin-top:3rem;margin-bottom:1rem}.edit-item .l-col,.login-layout .l-col{margin-right:1.75%}.edit-item form,.login-layout form{width:100%}.edit-item form a,.edit-item form button,.login-layout form a,.login-layout form button{color:#2c54ac;font-weight:700}.edit-item form a:hover,.edit-item form button:hover,.login-layout form a:hover,.login-layout form button:hover{color:#f8b014}.edit-item form a:active,.edit-item form button:active,.login-layout form a:active,.login-layout form button:active{color:#fdb51c}.edit-item form button.optional:hover,.login-layout form button.optional:hover{color:#2c54ac}.edit-item form button.optional:active,.login-layout form button.optional:active{color:#d7dcef}.edit-item form button.delete:hover,.login-layout form button.delete:hover{color:#b00e5b}.edit-item form button.delete:active,.login-layout form button.delete:active{color:#b11661}.edit-item form .form-group input[type=email],.edit-item form .form-group input[type=password],.edit-item form .form-group input[type=text],.edit-item form .form-group select,.edit-item form .form-group textarea,.login-layout form .form-group input[type=email],.login-layout form .form-group input[type=password],.login-layout form .form-group input[type=text],.login-layout form .form-group select,.login-layout form .form-group textarea{width:50%}@media screen and (max-width:900px){.edit-item form .form-group input[type=email],.edit-item form .form-group input[type=password],.edit-item form .form-group input[type=text],.edit-item form .form-group select,.edit-item form .form-group textarea,.login-layout form .form-group input[type=email],.login-layout form .form-group input[type=password],.login-layout form .form-group input[type=text],.login-layout form .form-group select,.login-layout form .form-group textarea{width:100%}}.edit-item form .form-group select,.edit-item form .form-group textarea,.login-layout form .form-group select,.login-layout form .form-group textarea{border-radius:0}.edit-item form .form-group select:hover,.edit-item form .form-group textarea:hover,.login-layout form .form-group select:hover,.login-layout form .form-group textarea:hover{border-color:#909090}.edit-item form .form-group select:active,.edit-item form .form-group select:focus,.edit-item form .form-group textarea:active,.edit-item form .form-group textarea:focus,.login-layout form .form-group select:active,.login-layout form .form-group select:focus,.login-layout form .form-group textarea:active,.login-layout form .form-group textarea:focus{outline:none;border-color:#1e5cb2;box-shadow:unset}.edit-item form input:-webkit-autofill,.edit-item form input:-webkit-autofill:active,.edit-item form input:-webkit-autofill:focus,.edit-item form input:-webkit-autofill:hover,.login-layout form input:-webkit-autofill,.login-layout form input:-webkit-autofill:active,.login-layout form input:-webkit-autofill:focus,.login-layout form input:-webkit-autofill:hover{background:#d7dcef;border-color:#1e5cb2;-webkit-filter:none;filter:none;box-shadow:none}.edit-item form input:autofill,.edit-item form input:autofill:active,.edit-item form input:autofill:focus,.edit-item form input:autofill:hover,.login-layout form input:autofill,.login-layout form input:autofill:active,.login-layout form input:autofill:focus,.login-layout form input:autofill:hover{background:#d7dcef;border-color:#1e5cb2;-webkit-filter:none;filter:none;box-shadow:none}.edit-item form button,.login-layout form button{background:unset;border:none;box-shadow:unset}.edit-item form button:active,.edit-item form button:focus,.login-layout form button:active,.login-layout form button:focus{outline:none}.edit-item form input,.login-layout form input{height:calc(1.5em + .75rem + 6px);border-radius:0}.edit-item form input:hover,.login-layout form input:hover{border-color:#909090}.edit-item form input:active,.edit-item form input:focus,.login-layout form input:active,.login-layout form input:focus{box-shadow:unset;border-color:#1e5cb2;background:rgba(215,220,239,.62)}.edit-item form label,.login-layout form label{color:#555;font-weight:700}.edit-item form label.label-wrapper,.login-layout form label.label-wrapper{display:flex;align-items:flex-end;width:-webkit-fit-content;width:fit-content}.edit-item form label.label-wrapper span,.login-layout form label.label-wrapper span{font-weight:400;text-transform:uppercase;margin-left:5px;font-size:12px}.edit-item form .checkbox-wrapper,.login-layout form .checkbox-wrapper{display:flex;align-items:center}.edit-item form .checkbox-wrapper label,.login-layout form .checkbox-wrapper label{margin:0 12px}.edit-item form input,.login-layout form input{color:#555}.edit-item form .buttons-wrapper,.login-layout form .buttons-wrapper{margin-top:2.5rem}.edit-item form .buttons-wrapper button,.login-layout form .buttons-wrapper button{font-weight:700;font-size:13px;margin-right:10px;padding:.35rem 2.25rem;border-radius:4px;transition:all .2s cubic-bezier(.4,.1,.5,.85)}.edit-item form .buttons-wrapper .add,.login-layout form .buttons-wrapper .add{color:#fff;background:#2c54ac}.edit-item form .buttons-wrapper .add:hover,.login-layout form .buttons-wrapper .add:hover{color:#2c54ac;background:#d7dcef}.edit-item form .buttons-wrapper .add:active,.login-layout form .buttons-wrapper .add:active{color:#fff;background:#1e5cb2}.edit-item form .buttons-wrapper .back,.login-layout form .buttons-wrapper .back{color:#777;background:#dfdedd}.edit-item form .buttons-wrapper .back:hover,.login-layout form .buttons-wrapper .back:hover{color:#fff;background:#999}.edit-item .l-col,.login-layout .l-col{padding:20px 0 0}.edit-item .l-col .date,.edit-item .l-col .time,.login-layout .l-col .date,.login-layout .l-col .time{margin:10px 0 0;color:#777;font-size:12px;letter-spacing:1px}.edit-item .l-col .time,.login-layout .l-col .time{margin:6px 0 10px}.edit-item .l-col .status,.login-layout .l-col .status{color:#2c54ac;font-size:11px;letter-spacing:1px;text-transform:uppercase;font-weight:700}@media screen and (max-width:1066px){.form-group input[type=email],.form-group input[type=password],.form-group input[type=text],.form-group select,.form-group textarea{width:75%}}.toolbar{display:flex;flex-direction:row;justify-content:space-between;background:#fff;position:fixed;top:0;left:0;width:100%;z-index:1;padding:3px 13% 1px;border-top:1px solid #e0e0e0;border-bottom:1px solid #e0e0e0}.toolbar .r-menu{display:flex;align-items:center}.toolbar .r-menu>div{display:flex;flex-wrap:unset;width:100%;align-items:center;justify-content:flex-end}.toolbar .r-menu a.button-extra,.toolbar .r-menu button.button-extra{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;justify-content:flex-start;padding:5px 10px;background:none;border:none;text-decoration:none;color:#817d7d;font-size:14px;display:flex;align-items:center;margin-right:10px;border-radius:3px}.toolbar .r-menu a.button-extra:hover,.toolbar .r-menu button.button-extra:hover{background:#d7dcef;color:#2c54ac}.toolbar .r-menu a.button-extra:active,.toolbar .r-menu button.button-extra:active{background:#1e5cb2;color:#fff}.toolbar .r-menu .input-group .input-group-prepend{height:30px;margin-right:15px}.toolbar .r-menu .input-group .input-group-prepend div,.toolbar .r-menu .input-group .input-group-prepend span{padding-left:0;background:none;border:none}.toolbar .r-menu .input-group .input-group-prepend label{margin-bottom:0}.toolbar .r-menu #inputGroupSelect04{height:30px;padding-top:2px;outline:none}.toolbar .r-menu #inputGroupSelect04:focus{outline:none;box-shadow:none}.toolbar .r-menu select+div:focus{outline:none}.toolbar .r-menu select+div:hover{background:#b3b8bd}.toolbar .r-menu select+div button{border-color:#ced4da}.toolbar .r-menu .input-group-append{height:30px}.toolbar .r-menu .input-group-append button{padding-top:3px}.toolbar .r-menu .btn:focus,.toolbar .r-menu .button:focus,.toolbar .r-menu button:focus{outline:none;box-shadow:none;border-color:none}.toolbar .r-menu .btn.btn-sm{height:30px;margin-left:15px}.toolbar .r-menu .btn.btn-sm:hover{color:#212529;background-color:#fff;border-color:none}.toolbar .r-menu .btn.btn-sm:active{background:#fff}.toolbar .r-menu .btn.btn-sm div{padding-top:3px}.toolbar .r-menu .btn-group.show .btn-outline-secondary{background-color:#fff;color:#212529}.toolbar .r-menu .btn-group.show .btn-outline-secondary:hover{background-color:#fff}.toolbar.justify-right{justify-content:flex-end}.toolbar.justify-right .r-menu>div>*{margin:0 10px}.toolbar.t-shadow{box-shadow:0 5px 3px 0 hsla(0,0%,78.4%,.5)}@media (max-width:1390px){.toolbar{padding:3px 10% 1px}}@media (max-width:1250px){.toolbar .r-menu a.button-extra,.toolbar .r-menu button.button-extra{max-width:30%}}@media (max-width:900px){.toolbar .r-menu{overflow:scroll}.toolbar .r-menu a.button-extra,.toolbar .r-menu button.button-extra{overflow:unset;max-width:100%}.toolbar .r-menu>div{margin-left:3rem;position:relative;display:flex;flex-wrap:unset;width:100%;align-items:center;justify-content:flex-start}.toolbar .r-menu .select-wrapper+div{display:none}}@media (max-width:450px){.toolbar{padding:3px 1% 1px}}@media (max-width:450px){.mobile-toolbar .toolbar{display:flex;flex-direction:column-reverse;padding-bottom:5px;height:100%}.mobile-toolbar .toolbar .r-menu{height:50%;margin-top:15px}.mobile-toolbar .toolbar .r-menu .input-group>div:first-child{width:100%;display:flex;justify-content:center;margin:15px 0}.mobile-toolbar .toolbar .r-menu .input-group select{margin-left:100px}.mobile-toolbar .toolbar .r-menu .input-group select+div{margin-right:85px}.mobile-toolbar .toolbar .r-menu .input-group>.btn-group{width:60%;margin-left:75px;margin-top:15px}.mobile-toolbar .toolbar .l-menu{display:flex;flex-direction:column-reverse;justify-content:flex-end;align-items:center;-webkit-transform:none;transform:none;height:50%;margin-top:40px}.mobile-toolbar .toolbar .l-menu button{width:30px;height:30px}.mobile-toolbar .toolbar .l-menu button svg{width:17px;height:30px}}.edit-ip form .dedicated-form-group{-webkit-transform:translateX(3rem);transform:translateX(3rem);margin-bottom:2rem}div.edit-item form label.label-wrapper{align-items:center}div.edit-item form label.label-wrapper span{text-transform:lowercase}div.edit-item form div.assigned-user{padding-left:25px}div.edit-item form div.assigned-user select{width:48.4%}.content .edit-template.edit-nginx .toolbar .search-toolbar-name{width:-webkit-fit-content;width:fit-content}.content .edit-template.edit-nginx .toolbar .link{width:-webkit-fit-content;width:fit-content;margin-left:15px}.content .edit-template.edit-nginx .toolbar .link a{text-decoration:none;font-size:12px;text-transform:uppercase;color:#777;font-weight:700}.content .edit-template.edit-nginx .toolbar .link a:hover{color:#f8b014}.content .edit-template.edit-nginx textarea{width:75%}.content .edit-template.edit-nginx .checkbox-wrapper label{text-transform:capitalize}.content .edit-template.edit-nginx svg{margin-left:5px}.content .edit-template.edit-pgsql .toolbar .search-toolbar-name{width:-webkit-fit-content;width:fit-content}.content .edit-template.edit-pgsql textarea{width:75%}.content .edit-template.edit-pgsql .checkbox-wrapper label{text-transform:capitalize}.content .edit-backup-exclusions .toolbar .search-toolbar-name{width:auto}.btn-group button{border:0}.btn-group button>span{display:inline-block;vertical-align:bottom;margin-left:5px;height:100%;width:auto}.btn-group button:after{display:none}.dropdown-menu{padding:0;border-radius:0;font-size:13px;width:200px}.dropdown-menu ul{padding:0;margin:0;display:inline-block;list-style:none;height:auto;width:100%;color:#333}.dropdown-menu ul li{display:flex;width:100%;height:37.5px;border-top:1px solid #dbdbdb}.dropdown-menu ul li .arrow-down{float:right}.dropdown-menu ul li .dropdown-item:hover{background:#bdbdbd}.dropdown-menu ul li>span:first-child{width:75%;padding:0 5px}.dropdown-menu ul li>span:nth-child(2){display:flex;justify-content:center;align-items:center;width:25%}.dropdown-menu ul li span{padding:0 5px 0 10px;line-height:38px}.dropdown-menu ul li span.active{background:#ffc900}.dropdown-menu ul li span+span{text-align:center}.dropdown-menu ul li:first-child{border-width:0 0 1px}.search-input-form{display:flex;width:180px}.search-input-form input{height:30px;margin-left:10px;border-radius:0}.search-input-form button{display:flex;align-items:center;justify-content:center;border-radius:0;border:1px groove #fff;height:30px}.list-item{display:flex;justify-content:flex-start;align-items:flex-start;font-size:18px;position:relative;padding:25px 0;border-left:2px solid #fff;border-bottom:1px solid #ddd;color:#686868}.list-item:hover .actions,.list-item:hover .l-col div.star div svg{opacity:1}.list-item .l-col .suspended{letter-spacing:3px}.list-item .l-col .text-status{font-size:10px}.list-item .l-col div.star{display:flex;align-items:center}.list-item .l-col div.star div.checkbox{margin:0 25% 4px 0}.list-item .r-col .stats div>span{width:50%;text-align:left}.list-item .r-col .stats .c-2 div>span{width:50%}.list-item .r-col div.bandwidth span,.list-item .r-col div.disk span{width:auto}.list-item .date{font-size:13px;margin:20px 0 10px}.list-item.toggled{background:#feef9a}.list-item.starred{border-left:2px solid #2c54ac}.list-item.starred .l-col div.star div>svg{opacity:1;color:#2c54ac}.list-item.suspended{background:#eaeaea;color:silver}.list-item.suspended .r-col div,.list-item.suspended .r-col span{color:silver!important}.list-item.suspended.toggled{background:#f2eab8;color:#b2ac87}.list-item.suspended.toggled .l-col,.list-item.suspended.toggled .r-col .name,.list-item.suspended.toggled .r-col .stats{color:#b2ac87!important}.list-item.outdated{background:#ffcaca;border-left:5px solid #ff6f6f}.list-item.toggled.outdated{background:#755d5d;color:#000}.list-item.toggled.outdated .stat{color:#000}.list-item.stopped{background:#eaeaea}.list-item.focused{border-left:2px solid #f8b014}.list-item.focused .l-col div.star div>svg{color:#f8b014}.list-item.focused .actions{opacity:1}.list-item.focused .actions div>a,.list-item.focused .actions div>button{padding-top:6.5px;padding-bottom:6.5px}.list-item.focused .actions div>a .shortcut-button,.list-item.focused .actions div>button .shortcut-button{border-radius:50%;width:25px;height:25px;margin-left:15px;background:#f8b014;color:#fff;display:flex;justify-content:center;align-items:center;font-size:14px}.list-item.focused .actions div>a .shortcut-button.html-unicode,.list-item.focused .actions div>button .shortcut-button.html-unicode{align-items:flex-end}.list-item.focused .actions div>a .shortcut-button.del,.list-item.focused .actions div>button .shortcut-button.del{text-transform:capitalize;font-size:10px}.internetProtocols .ip-wrapper .name svg{margin:0 10px;font-size:20px}.l-menu{-webkit-transform:translate(35px,50%);transform:translate(35px,50%)}.l-menu a,.l-menu button{display:flex;justify-content:center;align-items:center;background:#2c54ac;border-radius:100%;color:#fff;width:45px;height:43px;outline:none;border:none;text-decoration:none}.l-menu a:hover,.l-menu button:hover{background:#d7dcef}.l-menu a:hover span.add,.l-menu button:hover span.add{display:block;color:#2c54ac;background:#d7dcef}.l-menu a:hover svg,.l-menu button:hover svg{color:#2c54ac}@media screen and (max-width:900px){.l-menu a span.add,.l-menu button span.add{display:none!important}}.l-menu a:active,.l-menu button:active{background:#2c54ac}.l-menu a:active span.add,.l-menu button:active span.add{display:block;color:#fff;background:#2c54ac}.l-menu a:active svg,.l-menu button:active svg{color:#fff}.l-menu a span.add,.l-menu button span.add{width:-webkit-max-content;width:max-content;display:none;padding:4px 10px 4px 25px;background:#2c54ac;border-radius:15px;color:#fff;font-size:15px;position:absolute;left:25px;z-index:-1;text-align:right}.l-menu a svg,.l-menu button svg{width:31px;height:21px}@media screen and (max-width:900px){.l-menu{-webkit-transform:unset;transform:unset}}.l-menu.none{display:none}.exclusions-list .l-menu.backup-details-icon,.servers-list .l-menu.backup-details-icon{-webkit-transform:translateX(2px);transform:translateX(2px)}input{border-radius:0}.select-wrapper{display:flex}.select-wrapper select{width:auto}.select-wrapper button,.select-wrapper select{border-radius:0}div.modal{z-index:2}div.content .modal .modal-content{width:75%}div.content .modal .modal-content .modal-header button.close{color:#fff}div.content .modal .modal-content .modal-footer .btn-primary{background:#2c54ac;border:1px solid #2c54ac}.edit-web .additional-ftp .title .indexed-name{font-weight:700}.additional-ftp .title span:first-child{color:#555;font-size:15px;font-weight:700}.additional-ftp .form-transform{margin-top:15px;-webkit-transform:translateX(3rem);transform:translateX(3rem)}.additional-ftp .form-transform .form-group.username{display:flex;flex-direction:column}.additional-ftp .form-transform .form-group.username label{margin:0}.additional-ftp .form-transform .form-group.username span{font-size:10pt;color:#777;font-weight:700;margin-bottom:10px}.additional-ftp .form-transform .form-group.username .input-wrapper{display:flex;align-items:center}.additional-ftp .form-transform .form-group.username .input-wrapper span{color:#777;font-size:15px;font-style:italic;font-weight:400;margin-left:15px}.additional-ftp .path-note{font-weight:700;color:#555}.ssl-support{-webkit-transform:translateX(3rem);transform:translateX(3rem)}.ssl-support .lets-encrypt-span{font-style:italic;color:#89a40a}.statistics-authorization,.web-stats-wrapper{-webkit-transform:translateX(3rem);transform:translateX(3rem)}.web-stats-wrapper{display:flex;flex-direction:column}.add-web form .form-group .checkbox-wrapper{display:flex;align-items:center}.add-web form .form-group .checkbox-wrapper label{margin:0 10px}.add-web form .advanced-options-button button{display:flex;align-items:center;padding:0}.add-web form .advanced-options-button button svg{margin-left:10px}.add-web #c-panel-modal{padding:2rem}.add-web #c-panel-modal form .form-group input[type=text]{width:90%!important}.add-web #c-panel-modal label{color:#fff}.add-web #c-panel-modal .form-group{padding-left:1.5rem}.add-web #c-panel-modal .form-group textarea{width:90%!important}.add-web #c-panel-modal .l-col{display:none}.form-group.text-on-the-right .input-wrapper{display:flex;align-items:center}.form-group.text-on-the-right .input-wrapper span{margin-left:15px;color:#777}.input-wrapper{display:flex;align-items:center}.input-wrapper span.italic{margin-left:15px;color:#777}.edit-firewall form .form-group .label-wrapper span{text-transform:none}.hotkeys-list{position:fixed;bottom:0;right:0;display:flex;flex-direction:column;-webkit-transform:translateX(-45%);transform:translateX(-45%);width:53%;background:rgba(34,46,68,.87);font-size:13px}.hotkeys-list .head{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #fcac04}.hotkeys-list .head .name{text-transform:uppercase;font-size:12px;font-weight:700;color:#fcac04;letter-spacing:2px;padding:15px}.hotkeys-list .head .close{padding:12px;opacity:1!important}.hotkeys-list .head .close svg{color:#fcac04}.hotkeys-list .head .close:hover{cursor:pointer;background:#222e44}.hotkeys-list .body{display:flex}.hotkeys-list .body ul{padding:25px 10px;width:50%;list-style:none;margin:0 0 0 3rem}.hotkeys-list .body ul li{padding:5px}.hotkeys-list .body ul li span.name{margin-right:15px;color:#fcac04;font-weight:700}.hotkeys-list .body ul li span.description{color:#fff}.hotkeys-list .body ul li.space-top{padding-top:30px}.hide{display:none}.edit-template.add-db form span.italic{font-style:italic}.edit-template.add-db form .form-group .label-wrapper{display:flex}.edit-template.add-db form .form-group .label-wrapper span.italic{margin-left:1.5rem;color:#555}.edit-template.add-db form .form-group .input-wrapper{display:flex;align-items:center}.edit-template.add-db form .form-group .input-wrapper span.italic{font-size:15px;font-weight:700;margin-left:1.5rem;color:#777;font-weight:400}.edit-template.add-db form .form-group.database{margin-top:1rem}.edit-template.add-db form span.prefix{color:#777;font-style:italic}.content .edit-template.add-firewall .toolbar .search-toolbar-name{width:-webkit-fit-content;width:fit-content}.content .edit-template.add-firewall label.label-wrapper[for=ip] span{text-transform:unset!important}.cron-form-body .fourth-tab-selects,.cron-form-body .third-tab-selects{display:flex}.cron-form-body .fourth-tab-selects div.hour select,.cron-form-body .third-tab-selects div.hour select{width:70px;margin-left:4.8rem}.cron-form-body .fourth-tab-selects div.minute label,.cron-form-body .fourth-tab-selects div.minute select,.cron-form-body .third-tab-selects div.minute label,.cron-form-body .third-tab-selects div.minute select{margin:0}.cron-form-body .fifth-tab-selects{display:flex}.cron-form-body .fifth-tab-selects>div{width:10%}.cron-form-body .fifth-tab-selects>div select{width:70px}.cron-form-body .fifth-tab-selects>div.date{margin:0 0 1rem}.cron-form-body .fifth-tab-selects>div.minute{width:200px}.cron-form-body .fifth-tab-selects>div.hour{width:155px;margin-left:1rem}.cron-form-body .fifth-tab-selects>div.hour select{margin-left:.75rem}.cron-form-body .fifth-tab-selects>div.date{width:240px}.cron-form-body .fifth-tab-selects>div.date select{margin-left:5.85rem}.cron-job-generator{border:1px solid #d9d9d9;padding:1rem 1.5rem;margin-left:2rem;width:90%}.cron-job-generator .header{display:flex;padding:.4rem 0}.cron-job-generator .header a{color:#222;text-transform:uppercase;font-size:11px;font-weight:bolder;margin-right:2.3rem;text-decoration:none}.cron-job-generator .header a:hover{color:#f8b014}.cron-job-generator .header a:active{color:#1e5cb2}.cron-job-generator .header a.active{color:#fdb51c}.cron-job-generator .body{padding:2rem 0 .4rem}.cron-job-generator .body form .form-group{display:flex;align-items:center}.cron-job-generator .body form .form-group label{width:26%;font-size:13px;margin:0}.cron-job-generator .body form .form-group input{width:auto}.cron-job-generator .body form .form-group.minute select{width:70px}.cron-job-generator .body form .form-group select,.cron-job-generator .body form .form-group textarea{border-radius:0}.cron-job-generator .body form .form-group select:hover,.cron-job-generator .body form .form-group textarea:hover{border-color:#909090}.cron-job-generator .body form .form-group select:active,.cron-job-generator .body form .form-group select:focus,.cron-job-generator .body form .form-group textarea:active,.cron-job-generator .body form .form-group textarea:focus{outline:none;border-color:#1e5cb2;box-shadow:unset}.cron-job-generator .body form .form-group select{padding:.4rem .25rem;border-color:#d9d9d9;color:#555}.cron-job-generator .body form .form-actions button{background:#2c54ac;color:#fff;border-radius:3px;padding:.35rem 1.1rem;font-size:14px}.cron-job-generator .body form .form-actions button:hover{color:#2c54ac;background:#d7dcef}.cron-job-generator .body form .form-actions button:active{color:#fff;background:#1e5cb2}.cron-job-generator .body form .form-group.show{display:block}.cron-job-generator .body form .form-group.hide{display:none}.edit-cron form .form-group{width:100%}.edit-cron form .form-group input{width:inherit}.edit-cron form .form-group.command{width:100%}.edit-cron form .cron-form-body{display:flex}.edit-cron form .cron-form-body .body-col-1{width:30%}.edit-cron form .cron-form-body .body-col-1 input{width:100%}.edit-cron form .cron-form-body .body-col-2{display:flex;justify-content:flex-start;align-items:flex-start;padding:1.7rem 1rem;width:70%}#edit-cron>.form-group input{width:95%!important}.edit-package form .form-group .input-wrapper{display:flex;align-items:center}.edit-package form .form-group .input-wrapper button{-webkit-transform:translateX(5px);transform:translateX(5px)}.content .edit-template.edit-httpd .toolbar .search-toolbar-name{width:-webkit-fit-content;width:fit-content}.content .edit-template.edit-httpd .toolbar .search-toolbar-name a{color:#fcac04;text-decoration:none}.content .edit-template.edit-httpd .toolbar .search-toolbar-name a:hover{color:#777}.content .edit-template.edit-httpd .toolbar .link{width:-webkit-fit-content;width:fit-content;margin-left:15px}.content .edit-template.edit-httpd .toolbar .link a{text-decoration:none;font-size:12px;text-transform:uppercase;color:#777;font-weight:700}.content .edit-template.edit-httpd .toolbar .link a:hover{color:#f8b014}.content .edit-template.edit-httpd textarea{width:75%}.content .edit-template.edit-httpd .checkbox-wrapper label{text-transform:capitalize}.content .edit-template.edit-httpd svg{margin-left:5px}.edit-template.add-cron form .form-group{width:100%}.edit-template.add-cron form .form-group input{width:inherit}.edit-template.add-cron form .form-group.command{width:100%}.edit-template.add-cron form .cron-form-body{display:flex}.edit-template.add-cron form .cron-form-body .body-col-1{width:30%}.edit-template.add-cron form .cron-form-body .body-col-2{display:flex;justify-content:flex-start;align-items:flex-start;padding:1.7rem 1rem;width:70%}.edit-template.add-package form label.label-wrapper{display:flex;align-items:flex-end;width:-webkit-fit-content;width:fit-content}.edit-template.add-package form label.label-wrapper span{font-weight:400;text-transform:uppercase;margin-left:5px;font-size:12px}.edit-template.add-package form label.label-wrapper span.lowercase{text-transform:lowercase}.edit-template.add-package form .input-wrapper{display:flex;align-items:center}.edit-template.add-package form .input-wrapper svg{cursor:pointer;color:#bec4ca;margin-left:10px}.edit-template.add-package form .input-wrapper svg:hover{color:#abb1b6}.edit-server .modules{display:flex;flex-direction:column;align-items:flex-start}.edit-server .modules>div{display:flex;align-items:center;width:100%;margin:5px 0}.edit-server .modules>button{margin:15px 0}.edit-server .modules>button svg{margin-left:10px}.edit-server .modules .form-group a{text-decoration:none;color:#2c54ac;font-weight:700;font-size:14px}.edit-server .modules .form-group a:hover{color:#d7dcef}.edit-server .modules .additional-info{margin-top:10px;-webkit-transform:translateX(3rem);transform:translateX(3rem)}.edit-server .modules .additional-info>div{display:flex;margin:5px 0}.edit-server .modules .additional-info>div span{font-size:12px;color:#555}.edit-server .modules .additional-info>div span:first-child{width:180px}.edit-server .modules .server-dns-option,.edit-server .modules .server-mail-option,.edit-server .modules .server-mail-option .hosts,.edit-server .modules .server-mail-option .mail-cert-info,.edit-server .modules .server-plugins-option,.edit-server .modules .server-plugins-option .fm-module,.edit-server .modules .server-plugins-option .sftp-module,.edit-server .modules .server-plugins-option .soft-module,.edit-server .modules .server-ssl-option,.edit-server .modules .server-ssl-option .domain-group,.edit-server .modules .server-web-option{-webkit-transform:translateX(3rem);transform:translateX(3rem)}.edit-server .modules .server-plugins-option .fm-module,.edit-server .modules .server-plugins-option .sftp-module{font-size:15px;color:#555}.edit-server .modules .server-plugins-option .buy-license{display:flex;margin:5px 0}.edit-server .modules .server-plugins-option .buy-license a{color:#fff;background:#2c54ac;border:none;border-radius:3px;font-size:13px;font-weight:700;padding:7px 15px;text-transform:capitalize;text-decoration:none;width:-webkit-fit-content;width:fit-content;margin-right:10px}.edit-server .modules .server-plugins-option .buy-license a:hover{color:#2c54ac;background:#d7dcef}.edit-server .modules .server-plugins-option .buy-license a:hover{color:#fff;background:#1e5cb2}.edit-server .modules .server-plugins-option .buy-license+span{display:block;margin-top:15px;font-style:italic;font-size:12px}.edit-server .modules .server-plugins-option .license-description{display:flex;align-items:center;margin:1rem 0}.edit-server .modules .server-plugins-option .license-description>span{color:#2c54ac}.edit-server .modules .server-plugins-option .license-description .form-group{margin:0 0 0 20px;width:60%}.edit-server .modules .server-plugins-option .license-description .form-group label{display:none}.mail-info-block .select-group select{margin-bottom:10px;margin-top:5px;padding:0;border:none;color:#2c54ac;text-transform:uppercase;font-size:11px;font-weight:700;cursor:pointer}.mail-info-block .select-group .details{font-size:14px;color:#777}.mail-info-block .select-group .details>div{display:flex}.mail-info-block .select-group .details>div span:first-child{width:50%}.content .edit-template.edit-service .toolbar .search-toolbar-name{width:-webkit-fit-content;width:fit-content}.content .edit-template.edit-service textarea{width:75%}.content .edit-template.edit-service .checkbox-wrapper label{text-transform:capitalize}.content .edit-template.add-mail-account .search-toolbar-name{width:-webkit-fit-content;width:fit-content}.content .edit-template.add-mail-account form .r-1{display:flex}.content .edit-template.add-mail-account form .r-1 .c-1{width:55%}.content .edit-template.add-mail-account form .r-1 .c-1 .form-group>*{width:85%}.content .edit-template.add-mail-account form .r-1 .c-1 .form-group .password-wrapper input{width:100%}.content .edit-template.add-mail-account form .r-1 .c-1 .form-group:nth-child(3)>div{display:flex}.content .edit-template.add-mail-account form .r-1 .c-1 .form-group:nth-child(3)>div input{width:100%}.content .edit-template.add-mail-account form .r-1 .c-1 .form-group:nth-child(3)>div input+button{padding-left:10px}.content .edit-template.add-mail-account form .r-1 .c-2{width:45%;height:100%;border:1px solid #d9d9d9;padding:0 5px 12px 20px}.content .edit-template.add-mail-account form .r-2>button{padding-left:0;margin-bottom:1.5rem}.content .edit-template.add-mail-account form .r-2>button svg{margin-left:.75rem}.content .edit-template.add-mail-account form .r-2 .form-group .input-wrapper{display:flex}.edit-dns .label-wrapper span{text-transform:uppercase!important}.edit-web .ssl-support .additional-info{display:flex;flex-direction:column}.edit-web .ssl-support .additional-info span:first-child{width:120px;display:inline-block}.edit-web .ssl-support .additional-info span:nth-child(2){width:-webkit-fit-content;width:fit-content}.edit-web .ssl-support a.generate-csr{text-transform:none;text-decoration:none;color:#2c54ac;font-weight:700}.edit-web .ssl-support a.generate-csr:hover{color:#f8b014}.edit-web .web-stat-additional{-webkit-transform:translateX(3rem);transform:translateX(3rem)}.edit-web #c-panel-modal{padding:2rem}.edit-web #c-panel-modal form .form-group input[type=text]{width:90%!important}.edit-web #c-panel-modal label{color:#fff}.edit-web #c-panel-modal .form-group{padding-left:1.5rem}.edit-web #c-panel-modal .form-group textarea{width:90%!important}.edit-web #c-panel-modal .l-col{display:none}.content .edit-template.edit-php .toolbar .search-toolbar-name{width:-webkit-fit-content;width:fit-content;color:#555}.content .edit-template.edit-php .toolbar .link,.content .edit-template.edit-php .toolbar .search-toolbar-name{width:-webkit-fit-content;width:fit-content}.content .edit-template.edit-php .toolbar .link a,.content .edit-template.edit-php .toolbar .search-toolbar-name a{text-decoration:none;font-size:12px;text-transform:uppercase;color:#555;font-weight:700}.content .edit-template.edit-php .toolbar .link a:hover,.content .edit-template.edit-php .toolbar .search-toolbar-name a:hover{color:#f8b014}.content .edit-template.edit-php .toolbar .link{margin-left:15px}.content .edit-template.edit-php .toolbar .link a{color:#fcac04}.content .edit-template.edit-php .toolbar .link a:hover{color:#555}.content .edit-template.edit-php textarea{width:75%}.content .edit-template.edit-php .checkbox-wrapper label{text-transform:capitalize}.content .edit-template.edit-php svg{margin-left:5px}.r-menu>div>button{color:grey}.r-menu>div>button:hover{color:grey}.firewalls .list-item .l-col .date{display:none}.firewalls .list-item .r-col .stats{margin-top:15px}.firewalls .list-item .r-col .stats .cron-col div span{font-weight:unset;font-size:13px}.firewalls .list-item .r-col .stats .cron-col div span.stat{font-weight:700}.firewalls-wrapper .r-col .stats>div{flex:none;width:17%}.content .edit-template.edit-bind9 .toolbar .search-toolbar-name{width:-webkit-fit-content;width:fit-content}.content .edit-template.edit-bind9 textarea{width:75%}.content .edit-template.edit-bind9 .checkbox-wrapper label{text-transform:capitalize}.content .edit-template.edit-mysql .toolbar .search-toolbar-name{width:-webkit-fit-content;width:fit-content}.content .edit-template.edit-mysql textarea{width:75%}.content .edit-template.edit-mysql .checkbox-wrapper label{text-transform:capitalize}.add-dns form .advanced-options-button svg,.content .edit-template.edit-mysql svg{margin-left:5px}.edit-item form div.name-server-input-wrapper{display:flex;align-items:center;margin:10px 0}.edit-item form div.name-server-input-wrapper button{margin-left:10px}.edit-item form .exp-date .optional{font-size:12px;padding:0 0 0 6px;font-weight:400}.backups-restore-settings .list-item .r-col .stats .c-1{margin:12px 0 0}.backups-restore-settings .list-item .actions>div{font-weight:bolder;text-transform:uppercase;height:38px}.backups-restore-settings .list-item .actions>div a,.backups-restore-settings .list-item .actions>div button{display:flex;justify-content:center;align-items:center;color:#555;padding:10px 15px;text-decoration:none}.backups-restore-settings .list-item .actions>div a:hover,.backups-restore-settings .list-item .actions>div button:hover{background:#ececec;color:#fff}.backups-restore-settings .list-item .actions>div a:hover svg,.backups-restore-settings .list-item .actions>div button:hover svg{color:#fff}.backups-restore-settings .list-item .actions>div svg{color:#555}.backups-restore-settings .list-item .actions .link-restore svg{color:#fff}.backups-restore-settings .list-item .actions .link-restore:hover{color:#2c54ac;background-color:#d7dcef}.backups-restore-settings .list-item .actions .link-restore:hover{color:#fff;background-color:#1e5cb2}.backups-restore-settings .toolbar .backup-details-icon svg{-webkit-transform:translateX(2px);transform:translateX(2px)}.backups-restore-settings .mail-accounts-wrapper .list-item .l-col .star .checkbox+div{display:none}.backups-wrapper .list-item .c-1 div>span{padding-left:15px}.backups-restore-details .list-item .star{display:none}.cron-jobs-list.r-col .name{font-size:25px}.cron-col>div{display:flex;flex-direction:column}.cron-col>div span{font-size:18px;font-weight:bolder}.r-menu>div>button{font-size:13px;background:#fff;border-color:#fff;color:#555}.r-menu>div>button:hover{background:#fff;border-color:#fff;color:#555}.cron-wrapper .r-col .stats>div{flex:none;width:17%}.cron-wrapper .actions>div:first-child a:hover,.cron-wrapper .actions>div:first-child button:hover{background:#d7dcef}.cron-wrapper .actions>div:nth-child(2) a:hover,.cron-wrapper .actions>div:nth-child(2) button:hover{background:#ff3438}.packages .r-col .stats .c-2{padding-left:2rem}.packages .r-col .stats .c-2 div>span{width:50%}.packages .r-col .stats .c-3{margin-left:0}.packages .r-col .stats .c-3 div.ns{margin-top:5px}.packages-wrapper .r-col .stats .c-1 .stat{margin-left:1rem}.packages-wrapper .r-col .stats .c-2{padding:0}.password-wrapper{display:flex}.password-wrapper button{color:#2c54ac}.password-wrapper button:hover{color:#f8b014}.password-wrapper span.eye{margin-left:9px}.password-wrapper span.eye-slash{margin-left:7px}button.generate-password{color:#2c54ac;font-weight:700}button.generate-password:hover{color:#f8b014}button.generate-password:active{color:#fdb51c}input{color:#555}label[for=email]{width:100%;display:flex;align-items:center}label[for=email]>div{display:flex;align-items:center}label[for=email]>div input{height:-webkit-fit-content;height:fit-content;margin:0 10px}label[for=email]>div label{margin:0;font-size:12px}.statistics-list.updates .text-status{display:flex;margin-top:20px}.statistics-list.updates .text-status>div.checkbox{margin-bottom:0;margin-right:10px}.statistics-list.updates .list-item .star{display:none}.statistics-list.updates .r-col .c-1{margin-right:10px}.statistics-list.updates .toolbar{height:44px}.servers-list .servers-wrapper .list-item.sys-info .r-col{padding:0}.servers-list .servers-wrapper .list-item.sys-info .r-col .name{font-size:35px}.servers-list .servers-wrapper .list-item.sys-info .r-col .c-2 span>span.stat{margin-left:10px}.servers-list .servers-wrapper .list-item.sys-info .r-col .c-3{padding-right:0}.servers-list .servers-wrapper .list-item.sys-info .r-col .c-3>div>span{width:100%}.servers-list .actions a.link-gray.restart svg,.servers-list .actions button.link-gray.restart svg{width:1rem;height:1rem}.servers-list .list-item .star{display:none}.servers-list .r-col .stats .c-2,.servers-wrapper .list-item .r-col .stats .c-3{padding:0}.servers-wrapper .list-item .r-col .stats .c-3 span.stat{margin-left:0}.servers-wrapper .l-col{display:flex;align-items:center;height:55px}.servers-wrapper .l-col .checkbox{margin:0}.servers-wrapper .r-col{padding-left:2rem}.servers-wrapper .r-col .server-name{color:#000;font-size:28px}.servers-wrapper .list-item .r-col .c-3>div>span{-webkit-transform:translateX(-10px);transform:translateX(-10px)}.servers-wrapper .list-item .r-col .stats div>span{width:100%}.servers-list .l-col .text-status{display:block}.servers-list .l-col div.star{display:none}.servers-list .l-col .servers-wrapper .list-item:first-child{margin-top:0}.servers-list .l-col .servers-wrapper .l-col{width:16.3%}.servers-list .l-col .servers-wrapper .l-col .server-name{font-size:28px}.menu-wrapper{position:fixed;width:100%;font-size:15px;background:#fff}.menu-wrapper .menu-stat{display:flex;flex-direction:row;margin-top:50px;min-height:45px;max-height:135px;height:145px;width:100%;padding:0 13%}.menu-wrapper .menu-stat>div{border-bottom:3px solid #fff;overflow:hidden;width:14.3%}.menu-wrapper .menu-stat>div div,.menu-wrapper .menu-stat>div h3{width:100%}.menu-wrapper .menu-stat>div h3{font-weight:700;font-size:14px;text-transform:uppercase;margin-bottom:30px}.menu-wrapper .menu-stat>div div{display:flex;justify-content:space-between;font-size:12px;color:#a0a0a0;text-align:left}.menu-wrapper .menu-stat>div div>span:first-child{width:120px}.menu-wrapper .menu-stat>div div>span:nth-child(2){width:80px;padding-left:10px}.menu-wrapper .menu-stat .stat a,.menu-wrapper .menu-stat .stat button{display:flex;flex-direction:column;width:100%;height:100%;color:#000;text-decoration:none;text-align:left}.menu-wrapper .menu-stat .stat button{background:none;border:none;padding:0}.menu-wrapper .menu-stat .stat h3{font-size:14px}.menu-wrapper .menu-stat .stat:hover{cursor:pointer;border-bottom:3px solid #f8b014}.menu-wrapper .menu-stat .stat:hover h3{color:#fcac04}.menu-wrapper .menu-stat .stat:hover .stats{overflow:hidden}.menu-wrapper .menu-stat .stat:active{border-color:#fdb51c}.menu-wrapper .menu-stat .stat:active h3{color:#fcac04}.menu-wrapper .menu-stat .stat .stats{display:flex;flex-direction:column;padding-left:0}.menu-wrapper .menu-stat .l-active{border-bottom:3px solid #2c54ac}.menu-wrapper .menu-stat .l-active h3{color:#2c54ac;font-size:18px;margin-bottom:25px}.menu-wrapper .menu-stat .stat.focus{border-bottom:3px solid #f8b014!important}.menu-wrapper .menu-stat .stat.focus a,.menu-wrapper .menu-stat .stat.focus h3{color:#f8b014!important}.menu-wrapper.shadow{box-shadow:hsla(0,0%,78.4%,.5)}@media (max-width:1350px){.menu-wrapper .menu-stat{padding:0 10%}}@media screen and (max-width:1200px){.menu-wrapper{padding:0 10%}.menu-wrapper .menu-stat{padding:0}}@media screen and (max-width:1066px){.menu-wrapper .menu-stat{padding:0 10%;margin-top:40px}}@media screen and (max-width:1024px){.menu-wrapper .menu-stat{padding:0 10%}}@media (max-width:1066px){.menu-wrapper{padding:1%}.menu-wrapper .menu-stat{height:auto;min-height:auto}.menu-wrapper .menu-stat .stat h3{padding:0}}.mobile-top-nav-wrapper.hide{opacity:0}.mobile-top-nav-wrapper.show{z-index:5;opacity:1;position:fixed;width:100%;height:111px;background:#fff;display:flex;flex-direction:column;-webkit-animation:showMobileNav .3s forwards;animation:showMobileNav .3s forwards;margin-top:82px}.mobile-top-nav-wrapper.show .mobile-menu{padding:0 10%;flex-wrap:wrap;margin-top:15px}.mobile-top-nav-wrapper.show>div .top-link{display:flex;font-size:14px;padding:4px 0}.mobile-top-nav-wrapper.show>div .top-link:hover{background:#f8b014}.mobile-top-nav-wrapper.show>div .top-link:hover a,.mobile-top-nav-wrapper.show>div .top-link:hover button{color:#fff}.mobile-top-nav-wrapper.show div{display:flex}.mobile-top-nav-wrapper.show div a,.mobile-top-nav-wrapper.show div button{display:flex;justify-content:center;align-items:center;padding:0 10px!important;width:-webkit-fit-content;width:fit-content;height:100%;text-decoration:none;color:#000}.mobile-top-nav-wrapper.show div button{background:none;border:none}.mobile-top-nav-wrapper.show div:hover{cursor:pointer}.mobile-top-nav-wrapper.show div.active{background:#fff}.mobile-top-nav-wrapper.show div.active a,.mobile-top-nav-wrapper.show div.active button{color:#fcac04;font-weight:700}.mobile-top-nav-wrapper.show div.active a:hover,.mobile-top-nav-wrapper.show div.active button:hover{color:#fff}.mobile-top-nav-wrapper.show div.active a:active,.mobile-top-nav-wrapper.show div.active button:active{background:#fdb51c;color:#fff}.mobile-top-nav-wrapper.show div.active:hover{color:#fff;background:#f8b014}.mobile-top-nav-wrapper.show .toolbar{margin:0;position:relative;border:none}.mobile-top-nav-wrapper.show .mobile-stat-menu{box-shadow:0 5px 3px 0 hsla(0,0%,78.4%,.5)}.mobile-top-nav-wrapper.show .mobile-stat-menu .menu-wrapper{position:relative;height:auto;min-height:auto;padding:0;margin-top:9px}.mobile-top-nav-wrapper.show .mobile-stat-menu .menu-wrapper .menu-stat{margin:0}.mobile-top-nav-wrapper.show .mobile-stat-menu .menu-wrapper .menu-stat .stat{text-align:left;flex:1 1 auto;margin-bottom:15px}@media (max-width:1066px){.mobile-stat-menu .menu-wrapper .menu-stat{margin-top:40px}.mobile-stat-menu .menu-wrapper .menu-stat .stat .stats{display:none}}@media (max-width:900px){.mobile-toolbar .toolbar{padding:0 1%}}@media (max-width:725px){.mobile-top-nav-wrapper.show .menu-stat{display:flex;flex-wrap:wrap}.mobile-menu{padding:0 10%}}@-webkit-keyframes showMobileNav{0%{opacity:0}to{opacity:1}}@keyframes showMobileNav{0%{opacity:0}to{opacity:1}}.top-panel .profile-menu div{width:auto;height:auto}.top-panel .profile-menu button{cursor:default;background:none;box-shadow:unset;width:100%;height:100%}.top-panel .profile-menu button:hover{background:none}.top-panel .profile-menu button:active,.top-panel .profile-menu button:focus{outline:none;border:unset;background:unset;background-color:unset;border-color:unset}.top-panel .profile-menu .btn-danger:not(:disabled):not(.disabled).active,.top-panel .profile-menu .btn-danger:not(:disabled):not(.disabled):active,.top-panel .profile-menu .show>.btn-danger.dropdown-toggle{background-color:unset;border-color:unset;box-shadow:unset}.top-panel .profile-menu .dropdown-menu{display:none;height:auto;max-height:75vh;overflow:auto;cursor:default;background:#222e44;border:solid #fcac04;border-width:1px 0 0;box-shadow:0 0 10px -1px #222e44}.top-panel .profile-menu .dropdown-menu>div{cursor:default}.top-panel .profile-menu .dropdown-menu.show{display:flex;flex-direction:column;width:auto;width:340px;margin:0}.top-panel .profile-menu .dropdown-menu.show .dropdown-item{display:flex;justify-content:space-between;align-items:center;width:100%;padding-left:0;padding-right:5px}.top-panel .profile-menu .dropdown-menu.show .dropdown-item span.title{display:block;width:100%;padding:10px 0 0 10px;text-align:left;color:#fcac04}.top-panel .profile-menu .dropdown-menu.show .dropdown-item span.delete-notification{width:10px;height:10px;background:#fcac04;border-radius:50%;cursor:pointer}.top-panel .profile-menu .dropdown-menu.show .dropdown-item span.delete-notification:hover{border:2px solid #f8b014;background:transparent}.top-panel .profile-menu .dropdown-menu.show .dropdown-item:hover{background:none}.top-panel .profile-menu .dropdown-menu.show .dropdown-item+div{text-align:left;width:100%;padding:0 10px 20px;color:#ababab}.top-panel .profile-menu .dropdown-menu.show .dropdown-item+div a{display:contents;color:#e49d45}.top-panel .profile-menu .dropdown-menu.show .dropdown-item+div a:hover{color:#de9234}.top-panel .profile-menu .dropdown-menu.show .dropdown-divider{margin:0;border-color:#555;width:100%}.top-panel .profile-menu .dropdown-menu.show .dropdown-divider:last-child{display:none}.top-panel.small-device{display:none}.top-panel{display:flex;flex-direction:row;font-size:12px;position:fixed;width:100%;text-align:center;color:#fff;background:#222e44;height:34px;align-items:center;justify-content:space-between;padding:0 13%;z-index:2}.top-panel .container{display:flex;flex-direction:row;width:80%;height:100%}.top-panel .container .logo div img{width:82%}.top-panel .container .logo div:hover{background-color:transparent}.top-panel .container div{display:flex;justify-content:center;align-items:center}.top-panel .container div a,.top-panel .container div button{display:flex;justify-content:center;align-items:center;padding:0 10px!important;width:-webkit-fit-content;width:fit-content;height:100%;text-decoration:none;color:#fff}.top-panel .container div button{background:none;border:none}.top-panel .container div:hover{cursor:pointer}.top-panel .container div.active{background:#fff}.top-panel .container div.active a,.top-panel .container div.active button{color:#fcac04;font-weight:700}.top-panel .container div.active a:hover,.top-panel .container div.active button:hover{color:#fff}.top-panel .container div.active a:active,.top-panel .container div.active button:active{background:#fdb51c;color:#fff}.top-panel .container div.active:hover{background:#f8b014}.top-panel .left-menu{width:75%;margin:0;padding:0;justify-content:space-between}.top-panel .left-menu div.nav-link,.top-panel .left-menu div.top-link{flex:1 1 auto;height:100%;-webkit-transform:translateX(-5px);transform:translateX(-5px)}.top-panel .left-menu div.nav-link:hover,.top-panel .left-menu div.top-link:hover{background:#f8b014}.top-panel .left-menu div.logo{width:7rem;padding-left:0}.top-panel .left-menu div.logo a div{padding:0;width:6rem;flex:none}.top-panel .left-menu div.logo a div img{width:90%}.top-panel .left-menu div.logo:hover{background:transparent}.top-panel .left-menu div.fm{width:10rem}.top-panel .left-menu .top-link.focus a,.top-panel .left-menu .top-link.focus button{color:#fdb51c}.top-panel .profile-menu{width:25%;margin:0;padding:0;justify-content:flex-end}.top-panel .profile-menu div{height:100%}.top-panel .profile-menu div.bell{width:auto;color:#fcac04;padding:3px 0}.top-panel .profile-menu div.bell svg{border-radius:30px;width:40px;height:30px;padding:3px}.top-panel .profile-menu div.bell svg:hover{background:rgba(121,82,34,.58)}.top-panel .profile-menu div.bell svg:active{background:#866032}.top-panel .profile-menu .edit-user a{color:#a4abad;font-weight:700}.top-panel .profile-menu .edit-user a:hover{color:#f8b014}.top-panel .profile-menu .edit-user a:active{color:#fdb51c}.top-panel .profile-menu .logout-button a,.top-panel .profile-menu .logout-button button{color:#fff;cursor:pointer;font-weight:100}.top-panel .profile-menu .logout-button a:hover,.top-panel .profile-menu .logout-button button:hover{color:#f8b014}.top-panel .profile-menu .logout-button a:active,.top-panel .profile-menu .logout-button button:active{color:#fdb51c}.top-panel.long-profile .left-menu{justify-content:start}.top-panel.long-profile .left-menu>div{width:-webkit-fit-content;width:fit-content;flex:unset;padding:0 1rem}.top-panel.long-profile .left-menu .logo{width:7rem;padding:0;margin-right:1rem}.top-panel.long-profile .profile-menu{align-items:center}.top-panel.long-profile .profile-menu>.edit-user{width:-webkit-fit-content;width:fit-content}.top-panel.long-profile .profile-menu .long-username{display:flex;justify-content:center;align-items:center;width:auto}.top-panel.long-profile .profile-menu .long-username>span:first-child{margin-right:5px}.top-panel.long-profile .profile-menu .long-username>span:nth-child(3){margin-left:5px}@media screen and (max-width:1350px){.top-panel{padding:0 10%}}@media screen and (max-width:1025px){.top-panel{padding:0 8%}}@media (max-width:900px){.top-panel{display:none}.top-panel.small-device{display:flex;justify-content:space-between;padding:0 10%}.top-panel.small-device>.container{align-items:center;width:auto}.top-panel.small-device .hamburger{display:flex;flex-direction:column;justify-content:center;align-items:center;cursor:pointer}.top-panel.small-device .hamburger .bar{height:2px;margin:2px;width:20px;background:#fff}}@media (max-width:480px){.top-panel.small-device{padding:0}.top-panel .left-menu div.logo{width:unset}.top-panel .left-menu div.logo a div{width:5rem}}.main-nav{width:100%;height:249px}.main-nav .nav-wrapper{position:fixed;width:100%;-webkit-animation:toggleNav .75s forwards;animation:toggleNav .75s forwards;z-index:1}@media (max-width:900px){.main-nav{height:0}@-webkit-keyframes toggleNav{0%{-webkit-transform:translateY(-150px);transform:translateY(-150px)}to{-webkit-transform:translateY(50px);transform:translateY(50px)}}@keyframes toggleNav{0%{-webkit-transform:translateY(-150px);transform:translateY(-150px)}to{-webkit-transform:translateY(50px);transform:translateY(50px)}}}.statistic-item{flex:1 1 auto}.statistic-item .l-col{padding-left:0;flex-basis:14.3%}.statistic-item .r-col{flex-basis:85.7%}.statistic-item .r-col .stats{align-items:center}.statistic-item .r-col .stats .name{font-size:24px;color:#111}.statistic-item .r-col .stats .exclusion-items{flex-basis:83.4%}.statistic-item .r-col .stats>div{flex:unset;flex-basis:16.6%}.mail-accounts div.subtitle{color:#2c54ac;font-size:12px;margin:30px 0 18px 14.3%;text-transform:uppercase;font-weight:700}.mail-accounts .mail-accounts-wrapper>div:nth-child(2){border-top:1px solid #ddd}.mail-accounts .mail-accounts-wrapper div.list-item .r-col .stat.email{width:-webkit-fit-content;width:fit-content;text-transform:none}.mail-accounts .footer-actions-wrapper{display:flex;align-items:center;margin-top:2rem;padding-bottom:1.5rem}.mail-accounts .footer-actions-wrapper .total{margin:0 3.5rem 0 14.3%}.mail-accounts .footer-actions-wrapper .back a{padding:8px 38px;color:#777;background:#dfdedd;border:1px solid #dfdedd;border-radius:3px;font-size:13px;font-weight:700}.crossed{text-decoration:line-through}.catchall-mail{text-transform:none}.dns-records div.subtitle{color:#2c54ac;font-size:12px;margin:30px 0 18px 14.3%;text-transform:uppercase;font-weight:700}.dns-records .dns-records-wrapper>div:nth-child(2){border-top:1px solid #ddd}.dns-records .dns-records-wrapper div.list-item .r-col .stats>div{flex:unset}.dns-records .dns-records-wrapper div.list-item .r-col .stats .c-1{width:14.3%}.dns-records .dns-records-wrapper div.list-item .r-col .stats .c-2{margin-left:10px;width:14.3%}.dns-records .dns-records-wrapper div.list-item .r-col .stats .c-3{margin-left:0;width:14.3%}.dns-records .dns-records-wrapper div.list-item .r-col .stats .c-3 span{color:#888;font-weight:400}.dns-records .dns-records-wrapper div.list-item .r-col .stats .c-4{width:550px}.dns-records .dns-records-wrapper div.list-item .r-col .stats .c-4 .stat{display:block;white-space:normal;overflow:hidden;width:100%;text-overflow:ellipsis}.dns-records .footer-actions-wrapper{display:flex;align-items:center;margin-top:2rem;padding-bottom:1.5rem}.dns-records .footer-actions-wrapper .total{margin:0 3.5rem 0 14.3%}.dns-records .footer-actions-wrapper .back a{padding:8px 38px;color:#777;background:#dfdedd;border:1px solid #dfdedd;border-radius:3px;font-size:13px;font-weight:700}span.dns-records{padding-left:25px;font-size:18px;font-weight:400;font-style:italic;color:grey}.r-col .stats .c-2.w-30{padding-left:0}.statistic-item{display:flex;justify-content:center;padding:25px 0;border-bottom:1px solid #eee}.statistic-item .l-col .date{font-size:13px;margin-top:3rem}.statistic-item .r-col .name{font-size:32px}.statistic-item .r-col .c-1 .bandwidth,.statistic-item .r-col .c-1 .disk{width:220px}.statistic-item .r-col .c-1 div.sub-disk-stats{width:250px}.statistic-item .r-col .c-2{margin-right:0}.statistic-item .r-col .c-2 div>span:nth-child(2){margin:0;padding:0}.statistic-item .r-col .c-3.w-35 span.stat{width:80px}.statistic-item .r-col .c-3.w-35 div>span{width:50%;text-align:left}.statistic-item .r-col .c-3.w-35 div>span:nth-child(2){width:100px}.statistics-list{color:#686868}.statistics-list .toolbar{padding:6px 13%}.statistics-list .l-col{width:14.3%}.statistics-list .l-col div.date,.total{margin-top:25px}.total{margin-left:15%;font-size:12px;color:#929292}.statistic-item.focused{border-left:2px solid #5edad0;-webkit-transform:translateX(-2px);transform:translateX(-2px)}.statistic-item.focused .r-col .date{color:#5edad0}@media (max-width:1350px){.statistics-list .toolbar{padding:6px 9.5%}}.checkbox{margin-bottom:10px}.date{margin:10px 0}.l-col div.star{text-align:center}.l-col div.star div>svg{cursor:pointer;opacity:0;color:grey;padding:8px;width:35px;height:35px;border-radius:50%}.l-col div.star div>svg:hover{background:hsla(0,0%,70.6%,.47);color:#2c54ac}span.stat.email{display:block;width:-webkit-fit-content;width:fit-content;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.r-col .name{font-size:35px;margin-bottom:5px;color:#000}.r-col>div:nth-child(2){text-transform:capitalize}.r-col .stats{display:flex;justify-content:flex-start;align-items:flex-start}.r-col .stats .c-1,.r-col .stats .c-2,.r-col .stats .c-3{width:32%}.r-col .stats .c-1>div,.r-col .stats .c-2>div,.r-col .stats .c-3>div{display:flex;margin:5px 0}.r-col .stats .c-1 .bandwidth,.r-col .stats .c-1 .disk,.r-col .stats .c-2 .bandwidth,.r-col .stats .c-2 .disk,.r-col .stats .c-3 .bandwidth,.r-col .stats .c-3 .disk{width:200px;justify-content:space-between;margin-bottom:25px;border-bottom:1px dotted grey;position:relative}.r-col .stats .c-1 .bandwidth .percent,.r-col .stats .c-1 .disk .percent,.r-col .stats .c-2 .bandwidth .percent,.r-col .stats .c-2 .disk .percent,.r-col .stats .c-3 .bandwidth .percent,.r-col .stats .c-3 .disk .percent{position:absolute;left:0;bottom:-1px;height:2px;background:#2c54ac;width:0}.r-col .stats .c-1 .sub-disk-stats,.r-col .stats .c-2 .sub-disk-stats,.r-col .stats .c-3 .sub-disk-stats{width:250px}.r-col .stats .c-1 .sub-disk-stats>div,.r-col .stats .c-2 .sub-disk-stats>div,.r-col .stats .c-3 .sub-disk-stats>div{width:50%;display:flex;flex-direction:column;justify-content:space-between;font-size:11px}.r-col .stats .c-1 .sub-disk-stats>div span:first-child,.r-col .stats .c-2 .sub-disk-stats>div span:first-child,.r-col .stats .c-3 .sub-disk-stats>div span:first-child{width:40px}.r-col .stats .c-1 .sub-disk-stats>div:nth-child(2),.r-col .stats .c-2 .sub-disk-stats>div:nth-child(2),.r-col .stats .c-3 .sub-disk-stats>div:nth-child(2){width:70%;justify-content:flex-end}.r-col .stats .c-1 .sub-disk-stats>div:nth-child(2) span:first-child,.r-col .stats .c-2 .sub-disk-stats>div:nth-child(2) span:first-child,.r-col .stats .c-3 .sub-disk-stats>div:nth-child(2) span:first-child{width:80px}.r-col .stats .c-1{margin:15px 0 0}.r-col .stats .c-2{margin:15px 20px}.r-col .stats .c-2 div>span:first-child{width:120px}.r-col .stats .c-2 div>span:nth-child(2){width:150px;padding-left:15px}.r-col .stats .c-3 div>span:first-child{width:120px}.r-col .stats .c-3 div>span:nth-child(2){width:200px}.r-col .stats .c-3 div.ns{margin-top:20px}.r-col .stats>div{margin:15px 0;flex:1 1}.r-col .stats .stat{font-weight:700;color:#5f5f5f}.actions{position:absolute;top:0;right:0;opacity:0;display:flex;justify-content:center;align-items:center;font-size:12px;background:#dfdedd}.actions>div{font-weight:bolder;text-transform:uppercase;height:38px}.actions>div a,.actions>div button{display:flex;justify-content:center;align-items:center;color:#777;padding:10px 15px;text-decoration:none}.actions>div a:hover,.actions>div button:hover{background:#919191;color:#fff}.actions>div a:hover svg,.actions>div button:hover svg{color:#fff}.actions>div svg{color:#777}.actions>div:nth-child(2) a:hover{background:#2c54ac}.actions>div:nth-child(4) a:hover{background:#b00e5b}.actions svg{margin-left:12px}@media (max-width:1066px){.actions{opacity:1}}@media (max-width:850px){.actions>div{width:-webkit-fit-content;width:fit-content}.actions>div a,.actions>div button{width:100%}}.list-item.focused .r-col .name{color:#f8b014}@media (max-width:1066px){div.star div>svg{opacity:1!important}}.content .Toastify__toast-container{bottom:1em!important;top:unset}.timer-wrapper{display:flex;justify-content:center;align-items:center}.timer-wrapper button{border:none;background:none}.timer-wrapper button:active,.timer-wrapper button:focus{outline:none}.timer-wrapper .circle-wrapper{display:flex;justify-content:center;align-items:center;width:30px;height:30px}.timer-wrapper .circle-wrapper span.seconds:active,.timer-wrapper .circle-wrapper span.seconds:hover{background:unset}.timer-wrapper .circle-wrapper svg{height:30px;width:30px}.timer-wrapper .circle-wrapper svg circle{stroke:#000;fill:#fff;stroke-width:3%;stroke-dasharray:72;stroke-dashoffset:9;transform-box:fill-box;-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate(270deg);transform:rotate(270deg);transition:all 1s linear}.rrd-item{display:flex;justify-content:center;align-items:center;border-bottom:1px solid #eee;position:relative}.rrd-item .l-col .date{font-size:13px;margin-top:3rem}.rrd-item .l-col .time{font-size:13px;margin-top:2rem;text-align:left}.rrd-item .r-col .name{font-size:32px}.rrd-item .r-col .rrd-image{font-size:20px;text-transform:lowercase}.rrd-item.focused{border-left:2px solid #5edad0}.rrd-item.focused .l-col{padding-left:11px}.rrd-item.focused div.actions{opacity:1}div.content{margin-top:0}.rrd-list{color:#555}.rrd-list .toolbar{padding:6px 13%}.rrd-list .rrd-item{padding:25px 0;align-items:flex-start}.rrd-list .rrd-item .actions{opacity:0}.rrd-list .rrd-item .l-col{display:flex;flex-direction:column;margin:15px 40px 0 0}.rrd-list .rrd-item .l-col .date{margin:0}.rrd-list .rrd-item:hover .actions{opacity:1}.periods-wrapper{display:flex;align-items:center}.periods-wrapper>div:first-child{margin-left:8px}.periods-wrapper>div{cursor:pointer;margin:0 15px;font-size:14px}.periods-wrapper>div:hover{color:#f8b014}.periods-wrapper>div:active{color:#1e5cb2}.periods-wrapper .timer-wrapper>button svg:hover{color:#f8b014}.periods-wrapper .timer-wrapper>button svg:active{color:#1e5cb2}.periods-wrapper .timer-wrapper>div.circle-wrapper{cursor:default}.periods-wrapper>div.active{color:#fdb51c}@media (max-width:1350px){.rrd-list .toolbar{padding:6px 9.5%}}.banlist-wrapper{display:flex;flex-direction:column}.banlist-wrapper>div{margin-right:15px}.banlist-wrapper .list-item .l-col div.star .checkbox+div{display:none}.banlist-wrapper .buttons-wrapper{width:100%;display:flex;margin-top:4rem;align-items:center}.banlist-wrapper .buttons-wrapper .total{margin-right:15px;margin-top:0}.banlist-wrapper .buttons-wrapper button.back{font-weight:700;font-size:13px;margin-right:10px;padding:.35rem 2.25rem;border-radius:4px;transition:all .2s cubic-bezier(.4,.1,.5,.85);color:#777;background:#dfdedd;border:none;box-shadow:unset}.banlist-wrapper .buttons-wrapper button.back:hover{color:#fff;background:#999}.add-ftp,.web-stats{text-decoration:line-through}.r-col .stats .c-2{margin-left:20px}.r-col .c-2 span.stat,.r-col .c-3 span.stat{margin-left:1rem}.r-col .name{display:flex}.r-col .name>div:first-child{margin-right:2rem}.r-col .name>div+div{line-height:10px;margin-top:.75rem}.r-col .name .dns-name-span{font-style:italic;color:#858585;font-size:14px}div.crossed{text-decoration:line-through}.content .toolbar .search-toolbar-name{font-size:12px;text-transform:uppercase;color:#fcac04;font-weight:700;margin-left:14.3%;padding-left:7px;align-self:center}.content .toolbar .search-toolbar-right{display:flex;justify-content:center;align-items:center}.content .toolbar .search-toolbar-right .btn-group button{border:none;background:none;box-shadow:none}.content .toolbar .search-toolbar-right .btn-group button:active,.content .toolbar .search-toolbar-right .btn-group button:focus,.content .toolbar .search-toolbar-right .btn-group button:hover{background:none;box-shadow:none;outline:none;border:none;color:#686868}.content .toolbar .search-toolbar-right .search-input-form{padding-top:2px}.content .statistics-wrapper>.list-item:first-child{margin-top:0}.content .statistics-wrapper .list-item .l-col>.star{display:none}.content .statistics-wrapper .list-item .r-col div.object{text-transform:uppercase}.content .statistics-wrapper .list-item .r-col .c-2 .owner span,.content .statistics-wrapper .list-item .r-col .c-3 .status span{text-align:center;font-weight:700;text-transform:lowercase}.logs-list .toolbar{padding:6px 13%}.logs-list .statistic-item .l-col{font-size:13px;color:#888}.logs-list .statistic-item .l-col .date{margin:1rem 0 1.5rem}.logs-list .statistic-item .r-col .name{margin-top:.7rem;font-size:18px}.logs-list .statistic-item.focused{border-left:2px solid #5edad0}.logs-list .statistic-item.focused div.name{color:#5edad0}@media (max-width:1350px){.logs-list .toolbar{padding:6px 9.5%}}.logs-list .toolbar .search-input-form input{margin-bottom:5px}.logs-list .l-col{width:14%}.content{padding:0 13% 1%;margin-top:5px}.content>div>div.total{margin-top:25px;margin-left:14%;font-size:12px;color:#929292}@media (max-width:1350px){.content{padding:0 10%}}@media (max-width:1066px){.content{padding:5% 10%}}@media (max-width:900px){.content{margin-top:40px}}@media (max-width:800px){.content{padding-top:5%}}.fixed-buttons{position:fixed;right:15px;bottom:15px;display:flex;justify-content:space-around;align-items:center}.fixed-buttons>div{width:40px;height:40px;padding:5px;margin:5px;border-radius:50%;background:#c3c3c3;display:flex;justify-content:center;align-items:center}.fixed-buttons>div:hover{color:#2c54ac;background:#d7dcef}.fixed-buttons>div:active{color:#fff;background:#1e5cb2}.fixed-buttons>div button{display:flex;justify-content:center;align-items:center;background:none;border:none;width:100%;height:100%;border-radius:50%;-webkit-transform:scale(1.32);transform:scale(1.32)}.fixed-buttons>div button svg{color:#fff;height:70%}.fixed-buttons>div:first-child{color:#c3c3c3;background:none}.fixed-buttons>div:first-child:hover{background:#d7dcef}.fixed-buttons>div:first-child:hover button svg{color:#fff}.fixed-buttons>div:first-child:active{color:#fff;background:#1e5cb2}.fixed-buttons>div:first-child button{padding:0}.fixed-buttons>div:first-child button svg{color:#c3c3c3}@media screen and (max-width:1066px){.fixed-buttons>div:first-child{display:none}}@media screen and (max-width:450px){.content{padding:5% 1%}}.panel-wrapper .logo-img img{width:82%}.panel-wrapper .logo-img:hover{background-color:transparent}.panel-wrapper .nav-link{padding:0}.panel-wrapper .left-menu{justify-content:unset}.panel-wrapper .left-menu .logo{width:-webkit-fit-content;width:fit-content;flex:unset}.panel-wrapper .left-menu .scrollbar-container:hover{background:none}.panel-wrapper .left-menu .scrollbar-container .nav-link{flex:unset;padding:0 5px}.panel-wrapper .left-menu a,.panel-wrapper .left-menu button{padding:0!important;outline:none}.panel-wrapper .left-menu>div.nav-link{padding:0}.panel-wrapper .profile-menu>div:first-child a:hover{color:#f8b014}.panel-wrapper .profile-menu>div:first-child a:active{color:#fdb51c}.panel-wrapper .profile-menu>div:nth-child(2) a:hover{color:#fdb51c}.panel-wrapper .profile-menu>div:nth-child(2) a:active{color:#fdb51c}.panel-wrapper .profile-menu .user{color:#a4abad;font-weight:700}.panel-wrapper .profile-menu .user:hover{color:#f8b014}.panel-wrapper .profile-menu .user:active{color:#fdb51c}.panel-wrapper .profile-menu .log-out{color:#fff;cursor:pointer;font-weight:100}.panel-wrapper .profile-menu .log-out:hover{color:#d7dcef}.panel-wrapper .profile-menu .log-out:active{color:#fdb51c}.App .web-logs .top-panel .left-menu .logo{justify-content:start;margin:0}.App .web-logs .top-panel .left-menu .logo a{padding:0!important}.App .web-logs .content{font-size:14px;color:#555;padding-top:4rem}@media screen and (min-width:1067px){.App .web-logs .content{padding-top:5rem!important;margin-top:0!important}}@media screen and (max-width:1066px){.App .web-logs .content{padding-top:5rem!important;margin-top:0!important}}.login-layout{margin-top:1rem;padding:2rem 3rem}.login-page{display:flex;justify-content:center;align-items:center;width:100%;height:100vh;background-color:#eee}.login-page .login-form-wrapper{background-color:#fff;box-shadow:0 2px 6px hsla(0,0%,39.2%,.3);font-family:Arial,Helvetica,sans-serif;margin:0;padding:0;text-align:left;width:575px}.login-page .login-form-wrapper .login-layout{position:relative}.login-page .login-form-wrapper .login-layout>span{position:absolute;bottom:0;right:20px;font-size:11px}.login-page .login-form-wrapper .login-layout>span a{color:#505050}.login-page .login-form-wrapper form{display:flex;position:relative}.login-page .login-form-wrapper form>div input[type=password],.login-page .login-form-wrapper form>div input[type=text]{width:100%}.login-page .login-form-wrapper form .c1{display:flex;justify-content:center;align-items:center;width:35%}.login-page .login-form-wrapper form .c1 img{width:110%}.login-page .login-form-wrapper form .c2{width:65%;margin-left:3.5rem}.login-page .login-form-wrapper form .c2 .forgot-password{font-size:11px;text-transform:uppercase;letter-spacing:.75px;text-decoration:none}.login-page .login-form-wrapper form .c2 button[type=submit]{background-color:#2c54ac;border:1px solid #2c54ac;padding:1px 16px 3px;font-size:13px;height:35px;color:#fafafa;border-radius:3px}.login-page .login-form-wrapper form .c2 button[type=submit]:hover{color:#2c54ac;border:1px solid #d7dcef;background-color:#d7dcef}.login-page .login-form-wrapper form .c2 button[type=submit]:active{color:#fafafa;border:1px solid #2c54ac;background-color:#2c54ac}.login-page .login-form-wrapper form .c2 button[type=submit] .disabled{cursor:not-allowed}.login-page .login-form-wrapper form .c2 div.error-message{margin-top:1rem;color:#be5abf}@media (max-width:768px){.login-page .login-form-wrapper{margin:2rem}.login-page .login-form-wrapper .login-layout form{flex-direction:column;justify-content:center;align-items:center}.login-page .login-form-wrapper .login-layout form .c1{width:100%;margin-bottom:1.5rem}.login-page .login-form-wrapper .login-layout form .c1 a{text-align:center}.login-page .login-form-wrapper .login-layout form .c1 a img{width:75%}.login-page .login-form-wrapper .login-layout form .c2{margin:0;width:100%}.login-page .login-form-wrapper .login-layout form .buttons-wrapper .add{margin-bottom:10px}}@media screen and (max-width:1066px){.App .service-info .top-panel{display:flex}}@media screen and (min-width:1200px){.App .service-info .top-panel{padding:0 13%}}.App .service-info .content{font-size:14px;color:#555;padding-top:4rem}@media screen and (min-width:1067px){.App .service-info .content{padding-top:5rem!important;margin-top:0!important}}@media screen and (max-width:1066px){.App .service-info .content{padding-top:5rem!important;margin-top:0!important}}.App .service-info .content table td,.App .service-info .content table th{padding:5px 10px;border:1px solid #000} +/*# sourceMappingURL=main.9f0c683e.chunk.css.map */ \ No newline at end of file diff --git a/web/static/css/main.9f0c683e.chunk.css.map b/web/static/css/main.9f0c683e.chunk.css.map new file mode 100644 index 000000000..476eaaf52 --- /dev/null +++ b/web/static/css/main.9f0c683e.chunk.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["index.css","Spinner.scss","Dropdown.scss","Path.scss","../../utils/scss/_variables.scss","Row.scss","../../../utils/scss/_variables.scss","List.scss","ProgressBar.scss","Modal.scss","Menu.scss","App.scss","Editor.scss","Photo.scss","Video.scss","Container.scss","AddItemLayout.scss","Toolbar.scss","EditInternetProtocol.scss","AddInternetProtocol.scss","EditServerNginx.scss","Postgresql.scss","style.scss","DropdownFilter.scss","SearchInput.scss","ListItem.scss","InternetProtocol.scss","LeftButton.scss","../../../../utils/scss/_variables.scss","Checkbox.scss","Select.scss","AdditionalFtpForEditing.scss","AdditionalFtpWrapper.scss","SslSupport.scss","AdvancedOptions.scss","AddWebDomain.scss","TextInputWithTextOnTheRight.scss","EditDatabase.scss","EditFirewall.scss","Hotkeys.scss","AddDatabase.scss","AddFirewall.scss","SelectsWrapper.scss","Generator.scss","EditCronJob.scss","EditPackage.scss","EditHttpd.scss","AddCronJob.scss","AddPackage.scss","EditServer.scss","MailInfoBlock.scss","Service.scss","AddMailAccount.scss","EditDomainNameSystem.scss","EditWeb.scss","EditPhp.scss","Databases.scss","Firewall.scss","Firewalls.scss","Bind9.scss","Mysql.scss","AddDomainNameSystem.scss","RestoreSetting.scss","BackupRestoreSettings.scss","Backup.scss","CronJob.scss","CronJobs.scss","Package.scss","Packages.scss","AddUser.scss","Update.scss","Updates.scss","ServerSys.scss","Server.scss","Servers.scss","MobileTopNav.scss","Notifications.scss","Panel.scss","MainNav.scss","MailAccounts.scss","Mail.scss","DNSRecords.scss","DomainNameSystem.scss","Statistic.scss","Statistics.scss","User.scss","Users.scss","Timer.scss","RRD.scss","RRDs.scss","styles.scss","WebDomain.scss","Search.scss","Log.scss","Logs.scss","ControlPanelContent.scss","TopPanel.scss","WebLogs.scss","LoginLayout.scss","Login.scss"],"names":[],"mappings":"AAAA,KACE,QAAS,CACT,SAAU,CACV,mJAEY,CACZ,kCAAmC,CACnC,iCACF,CAEA,KACE,yEAEF,CCbA,iBACE,iBAAkB,CAClB,UAAW,CACX,WAAY,CACZ,QAAS,CACT,WAAY,CCDd,kBAQI,YAEW,CAVf,qBAaM,mBAG6B,CAuB5B,qCAML,oDAAA,CAAA,4CAAiD,CC/CnD,MACE,YAAa,CACb,6BAA8B,CAC9B,cAAe,CACf,mBAAoB,CACpB,WAAY,CACZ,kBAAmB,CACnB,UAAW,CACX,kCAAmC,CARrC,iBAWI,UAAW,CACX,gBAAiB,CACjB,eAAgB,CAChB,eAAgB,CAdpB,gMAiBM,kBAAmB,CACnB,cAAe,CAlBrB,wBAsBM,cAAe,CACf,iBAAkB,CAClB,UAAW,CACX,kBAAmB,CACnB,cAAe,CACf,eAAgB,CA3BtB,6BA8BQ,UAAW,CACX,iBAAkB,CA/B1B,6DAmCQ,kBAAmB,CACnB,cAAe,CApCvB,oMAyCM,eAAgB,CAChB,YAAa,CACb,kBAAmB,CACnB,cAAe,CA5CrB,gCAgDM,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CAlDzB,iBAuDI,eAAgB,CAChB,cAAe,CAChB,aAID,YAAa,CACb,6BAA8B,CAC9B,cAAe,CACf,mBAAoB,CACpB,WAAY,CACZ,kBAAmB,CACnB,UCzDU,CD0DV,iCAAkC,CARpC,gCAWI,YAAa,CACb,gBAAiB,CACjB,aAAc,CAblB,wBAiBI,UAAW,CACX,eAAgB,CAChB,eAAgB,CAnBpB,qNAsBM,oBAAqB,CACrB,kBAAmB,CAvBzB,+BA2BM,cAAe,CACf,iBAAkB,CAClB,UAAY,CACZ,oBAAqB,CACrB,kBAAmB,CACnB,eAAgB,CAhCtB,oCAmCQ,UAAW,CACX,iBAAkB,CApC1B,2EAwCQ,oBAAqB,CACrB,kBAAmB,CAzC3B,8OA8CM,eAAgB,CAChB,YAAa,CACb,oBAAqB,CACrB,kBAAmB,CAjDzB,uCAqDM,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CACnB,aCrHW,CD6DjB,4CA2DQ,aCxHS,CD6DjB,6CA+DQ,aAAc,CACd,oBAAqB,CACrB,kBAAmB,CAjE3B,kDAoEU,aAAc,CApExB,wBA2EI,aCxIa,CDyIb,eAAgB,CAChB,cAAe,CA7EnB,8BAgFM,aAAc,CAhFpB,+BAoFM,aCjJW,CDkJZ,gBAKH,YAAa,CACb,cAAe,CEvJjB,gCACE,UAAW,CACX,kBAAmB,CACnB,cAAe,CACf,gBAAiB,CAClB,OAGC,aAAc,CACf,UAGC,aAAc,CACf,oCAIG,UAAW,CACX,SAAU,CACV,WAAY,CACZ,gBAAiB,CAClB,gCAID,UAAW,CACX,aAAc,CACd,eAAiB,CACjB,qBAAsB,CACvB,KAGC,aAAc,CACf,MAGC,aAAc,CACf,MAGC,aAAc,CACf,OAGC,aAAc,CACf,aAGC,aAAc,CACf,MAGC,aAAc,CACf,SAGC,aAAwB,CACzB,UAGC,aAAc,CACf,2CAOC,cAAe,CACf,WAAY,CACZ,UAAW,CACX,eAAgB,CACjB,mCAGC,eAAgB,CAChB,WAAY,CACZ,oBAAqB,CACrB,eAAgB,CAChB,kBAAmB,CALrB,yCAQI,aAAc,CACd,UAAW,CACX,eAAgB,CAChB,gBAAiB,CACjB,cAAe,CACf,kBAAmB,CACnB,2BAA6B,CAdjC,+CAiBM,2BAA6B,CAC7B,kBAA8B,CAC9B,iBAAkB,CAClB,cAAe,CAChB,sDAKH,kBAAmB,CACnB,UAAY,CACb,0CAGC,gBAAiB,CACjB,UAAW,CACX,aAAc,CACd,cAAe,CAChB,yCAGC,aAAc,CACd,cAAe,CAChB,mCAEC,aAAc,CACd,cAAe,CACf,UAAW,CACZ,OAGC,kBAAmB,CACnB,gBAAiB,CACjB,UAAW,CACZ,oCAGC,aAAc,CACd,iBAAkB,CAClB,UAAW,CACX,cAAe,CACf,gBAAiB,CAClB,OAGC,aCzIe,CD0IhB,MAGC,kBAAmB,CACnB,aAAc,CACf,YAWC,kBAA8B,CAThC,oBAEI,UAAW,CACX,SAAU,CACV,WAAY,CACZ,gBAAiB,CACjB,kBAA8B,CAC/B,mBAMD,kBAA8B,CAC/B,0BAGC,mCAEI,WAAY,CAFhB,mCAKI,UAAW,CALf,mCAQI,UAAW,CARf,mCAWI,UAAW,CAXf,0CAcI,QAAS,CACV,CElLL,MACE,SAAU,CACV,YAAa,CACb,YAAa,CAHf,sBAMI,eAAgB,CAChB,yBAA0B,CAC1B,aAAc,CARlB,yBAWM,cAAe,CACf,SAAU,CACV,aAAc,CAbpB,4BAgBQ,aAAc,CACd,WAAY,CACZ,gBAAiB,CACjB,cAAe,CACf,cAAe,CACf,eAAgB,CArBxB,iCAwBU,cAAe,CAxBzB,kCA4BU,kBAAmB,CA5B7B,mCAiCQ,kBAAmB,CAjC3B,2CAoCU,UAAW,CACX,SAAU,CACV,WAAY,CACZ,gBAAiB,CACjB,kBAAmB,CAxC7B,qCA6CQ,kBAAmB,CACpB,qCAML,oBACE,YAAa,CACd,CCtDH,iBAEE,MAAS,CACT,KAAQ,CACR,YAAa,CACb,UAAW,CACX,cAAe,CACf,UAAW,CACX,QAAS,CACT,oBAAqB,CACrB,sBAAuB,CAVzB,+BAaI,UAAW,CCXf,OACE,aAAc,CACd,iBAAkB,CAClB,cAAe,CACf,SAAU,CACV,iBAAkB,CAClB,MAAO,CACP,KAAM,CACN,UAAW,CACX,WAAY,CACZ,aAAc,CACd,qBLFU,CKGV,+BAAoC,CAZtC,sBAeI,sCAA2C,CAC3C,kBAAmB,CACnB,wBAAyB,CAEzB,SAAU,CACV,WAAY,CACZ,UAAY,CACZ,sBAAiB,CAtBrB,kCAyBM,YAAa,CACb,qBAAsB,CACtB,sBAAuB,CACvB,kBAAmB,CACnB,sBAAuB,CACvB,cAAe,CACf,kBAAmB,CA/BzB,wCAkCQ,cAAe,CACf,cAAe,CAnCvB,8CAsCU,SAAU,CAtCpB,wCA2CQ,eAAgB,CAChB,qBAAsB,CACtB,UAAY,CACZ,eAAgB,CAChB,SAAU,CA/ClB,oCAoDM,kBAAmB,CACnB,gBAAiB,CACjB,qBAAsB,CAtD5B,uCAyDQ,cAAe,CACf,aLvDgB,CKHxB,6CA8DQ,iBAAkB,CAClB,QAAS,CACT,UAAW,CAhEnB,0CAoEQ,aLhEiB,CKJzB,oCAyEM,yBAA0B,CAzEhC,2CA4EQ,UAAY,CACZ,iBAAkB,CAClB,eAAgB,CAChB,wBAAyB,CACzB,cAAe,CAhFvB,iDAmFU,YAAa,CACb,eAAgB,CApF1B,sDAyFQ,wBAAyB,CAzFjC,4DA4FU,YAAa,CACb,WAAY,CA7FtB,4DAkGQ,kBL1FQ,CK2FR,oBL3FQ,CKRhB,kDAuGQ,gBAAiB,CACjB,kBLtGW,CKuGX,oBLvGW,CKFnB,wDA4GU,kBL5GY,CK6GZ,oBL7GY,CK8GZ,aLzGe,CKLzB,wDAkHU,kBLjHa,CKkHb,oBLlHa,CKmHb,UL9Ga,CKNvB,oCA0HM,aLtHmB,CKJzB,6BA8HM,KAAM,CACN,OAAQ,CACR,ULvHM,CKTZ,4BAsIM,YAAa,CAtInB,uCA0IM,eAAgB,CA1ItB,8CA6IQ,kBAAmB,CACnB,oBAAqB,CACrB,UAAY,CA/IpB,6BAqJI,kBAAmB,CACnB,mBAAoB,CAtJxB,oCAyJM,iBAAkB,CAClB,QAAS,CACT,UAAW,CA3JjB,oBAgKI,WAAY,CACZ,SAAU,CACV,YAAa,CAlKjB,qDAsKM,oBAAqB,CAtK3B,qCA0KM,SAAU,CACV,UAAW,CACX,qBAA2B,CAC3B,oBAAqB,CA7K3B,+BAiLM,kBAAmB,CACnB,cAAe,CAlLrB,yBAsLM,eAAgB,CAtLtB,6BAyLQ,YAAa,CACb,qBAAsB,CACtB,6BAA8B,CAC9B,kBAAmB,CACnB,gBAAiB,CA7LzB,mCAgMU,eAAgB,CAChB,cAAe,CACf,cAAe,CAlMzB,yCAqMY,cAAe,CACf,gBAAiB,CCtM7B,MACE,YAAa,CACb,kBAAmB,CACnB,WAAY,CAHd,YAMI,UAAW,CACX,gBAAiB,CACjB,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CAVvB,gBAaM,SAAU,CAbhB,iBAkBI,kBAAmB,CACnB,QAAS,CACT,cAAe,CACf,eAAgB,CAChB,kBAAmB,CAtBvB,wBAyBM,YAAa,CAzBnB,yBA6BM,aAAc,CACd,cAAe,CACf,iBAAkB,CAClB,eAAgB,CAChB,kBAAmB,CACnB,eAAgB,CAChB,UAAY,CACZ,iBAAkB,CAClB,kBNtCW,CMCjB,+BAwCQ,aNzCS,CM0CT,kBNzCc,CMAtB,wBA8CM,wBAAyB,CACzB,cAAe,CAEf,gBAAiB,CACjB,mBAAoB,CAGpB,mBAAkB,CAClB,iBAAkB,CAtDxB,8BAyDQ,aN1DS,CMCjB,8BA6DQ,eAAgB,CAChB,YAAa,CA9DrB,sDAuEM,YAAa,CAvEnB,+BA2EM,aAAuB,CACxB,qCAKH,wBAEI,cAAe,CACf,eAAgB,CAChB,oBAAqB,CAJzB,uBAQI,UAAW,CARf,4JAcQ,aNhGO,CMkFf,+GAkBQ,aNpGO,CMkFf,qCAsBQ,aAAuB,CAtB/B,oCA0BQ,aN5GO,CM6GR,KAML,YAAa,CACd,CCnHH,KACE,iBAAkB,CACnB,KAGC,cAAe,CACf,iBAAkB,CACnB,QAGC,kBAAmB,CACnB,YAAa,CACb,UAAW,CACX,YAAa,CACb,qBAAsB,CACtB,eAAgB,CANlB,yBASI,YAAa,CACb,kBAAmB,CACpB,QAID,eAAgB,CACjB,UAGC,WAAY,CACZ,2BAA6B,CAC9B,sBAGC,cAAe,CACf,qBAAsB,CACvB,2BAEC,QAAS,CACV,8IAMK,4BAA+B,CAJrC,mEASM,4BAA+B,CATrC,uEAcM,4BAA8B,CAdpC,mEAmBM,4BAA8B,CAnBpC,oBAuBM,sBAAuB,CACvB,kBAAmB,CACnB,kBAAmB,CACnB,WAAY,CACb,oCAKH,SACE,0BAA4B,CAC5B,cAAe,CACf,kCAAoC,CAHtC,aAMI,qBAAuB,CAN3B,mCASM,4BAA8B,CAC9B,wBAA4B,CAC5B,qBAAuB,CACvB,wBAA0B,CAC3B,CAKP,sCACE,aP1FqB,CO2FtB,uBAGC,cAAe,CAChB,wBAGC,YAAa,CACd,wCAIG,YAAa,CACd,kBAID,cAAe,CACf,UAAW,CACX,WAAY,CACZ,YAAa,CACb,4BAA6B,CAC7B,kBAAmB,CANrB,sBASI,UAAW,CACX,WAAY,CACZ,WAAY,CACZ,UAAW,CACX,iBAAkB,CAClB,kBAAmB,CACnB,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CAjBvB,4BAoBM,aP3HmB,CO4HnB,kBPjIgB,CO4GtB,6BAyBM,UP/HiB,COgIjB,kBPrIiB,CO2GvB,6BA8BM,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CACnB,eAAgB,CAChB,WAAY,CACZ,UAAW,CACX,WAAY,CACZ,iBAAkB,CAClB,6BAAA,CAAA,qBAAsB,CAtC5B,iCAyCQ,UAAY,CACZ,UAAW,CA1CnB,kCAgDI,kBP7Ja,CO6GjB,wCAmDM,aP1JmB,CO2JnB,kBPhKgB,CO4GtB,mDAuDQ,aP9JiB,COuGzB,yCA4DM,UPlKiB,COmKjB,kBPxKiB,CO2GvB,oDAgEQ,UPtKe,COsGvB,yCAqEM,SAAU,CArEhB,6CAwEQ,UP9Ke,CO+KhB,0BAML,iBACE,uBAAyB,CACzB,0BAA4B,CAC7B,CAGH,0BACE,iBACE,uBAAyB,CACzB,0BAA4B,CAC7B,oBAIG,eAAgB,CAChB,gBAAiB,CAHrB,oBAOI,eAAgB,CAPpB,0BASM,eAAgB,CATtB,2BAaM,cAAe,CAbrB,+BAgBQ,uBAAyB,CACzB,mBAAqB,CACrB,oBAAsB,CACvB,+CAML,YAAa,CACb,kBAAmB,CACnB,WAAY,CACZ,iBAAkB,CAJpB,yDAOI,QAAW,CACZ,CAIL,yBACE,iBACE,0BAA4B,CAC5B,sBAAwB,CACzB,oBAIG,gBAAiB,CAFrB,oBAMI,iBAAkB,CACnB,CAIL,yBACE,gBAEI,mBAAoB,CACrB,CClQL,QACE,UAAW,CADb,sBAII,YAAa,CACb,wBAAyB,CACzB,UAAW,CACX,WAAY,CACZ,iBAAkB,CAClB,WAAY,CACZ,QAAS,CACT,0BAAqB,CACrB,SAAU,CACV,8BAAgC,CAChC,4BAA8B,CAC9B,eAAgB,CAfpB,6BAkBQ,cAAe,CACf,UAAW,CACX,iBAAkB,CAClB,cAAe,CArBvB,mCAwBU,YAAa,CACb,eAAgB,CAzB1B,eA+BI,SAAU,CACV,iBAAkB,CAClB,OAAQ,CACR,SAAU,CACV,cAAe,CACf,SAAU,CACV,UAAW,CArCf,qBAwCM,aAAyB,CAxC/B,oBA6CI,YAAa,CACb,eAAgB,CA9CpB,yCAiDM,kBAAkB,CAjDxB,uCAqDM,cAAe,CArDrB,cA0DI,cAAe,CACf,QAAS,CACT,WAAY,CACZ,iBAAkB,CC7DtB,UACE,UAAW,CACX,iBAAkB,CAFpB,YAKI,QAAS,CALb,yCAUM,eAAgB,CAChB,UAAW,CACX,YAAa,CAZnB,8CAeU,UAAW,CACX,SAAU,CAhBpB,8CAoBU,SAAU,CApBpB,0CA2BI,aAAc,CACd,UAAW,CACX,WAAY,CA7BhB,yDAgCQ,WAAY,CACZ,WAAY,CAjCpB,gDAqCQ,cAAe,CArCvB,qDAyCQ,wBAAyB,CAzCjC,kDA6CQ,wBAAyB,CAC1B,WAML,UAAW,CACX,cAAe,CACf,iBAAkB,CAClB,OAAQ,CACR,UAAW,CACX,SAAU,CACV,UAAY,CACZ,cAAe,CARjB,iBAWI,UAAY,CC9DhB,eACE,mBAAoB,CACpB,UAAW,CACX,eAAgB,CAHlB,sBAMI,SAAU,CACV,cAAe,CACf,iBAAkB,CAClB,OAAQ,CACR,SAAU,CACV,SAAU,CACV,UAAW,CAZf,4BAeM,UAAW,CAfjB,sBAoBI,UAAW,CACX,WAAY,CArBhB,4BAwBM,YAAa,CCxBnB,OACE,iBAAkB,CACnB,OAGC,cAAe,CAChB,MAGC,WAAY,CACb,MAGC,SAAU,CACX,MAGC,SAAU,CACX,MAGC,SAAU,CACX,MAGC,SAAU,CACX,MAGC,SAAU,CACX,MAGC,SAAU,CACX,MAGC,SAAU,CACX,MAGC,SAAU,CACX,MAGC,SAAU,CClCZ,wBACE,mBAAoB,CADtB,iCAII,qBAAsB,CAJ1B,qCAOM,WAAY,CACZ,YAAa,CACb,kBAAmB,CATzB,wFAcM,mCAAA,CAAA,2BAA6B,CAdnC,kGAiBQ,eAAiB,CACjB,cAAe,CAlBvB,0GAqBU,cAAe,CACf,iBAAkB,CAtB5B,8HA2BQ,aA7BY,CAEpB,sIA8BU,gBAAiB,CACjB,cAAe,CACf,aAlCU,CAEpB,wPAwCU,aVlDO,CUUjB,sDA8CM,oBAAsB,CACtB,cAAe,CACf,aAAc,CACd,iBAAkB,CAOvB,MAGC,YAAa,CACd,yBAIC,YAAa,CACb,cAAe,CACf,eAAgB,CAChB,kBAAmB,CALrB,uCAQI,kBAAmB,CARvB,mCAoEI,UAAW,CApEf,wFAcM,aVtFW,CUuFX,eAAiB,CAfvB,gHAkBQ,aVtFgB,CUoExB,oHAsBQ,aVzFiB,CUmEzB,+EA4BQ,aVpGS,CUwEjB,iFAgCQ,aVvGc,CUuEtB,2EAsCQ,aA3GwB,CAqEhC,6EA0CQ,aA9GyB,CAoEjC,ubAoDQ,SAAU,CACX,oCArDP,ubA+DU,UAAW,CACZ,CAhET,sJAwEM,eAAgB,CAxEtB,8KA2EQ,oBAAqB,CA3E7B,gWAgFQ,YAAa,CACb,oBVvJe,CUwJf,gBAAiB,CAlFzB,0WA0FM,kBVjKgB,CUkKhB,oBVjKiB,CUkKjB,mBAAY,CAAZ,WAAY,CACZ,eAAgB,CA7FtB,0SAoGM,kBV3KgB,CU4KhB,oBV3KiB,CU4KjB,mBAAY,CAAZ,WAAY,CACZ,eAAgB,CAvGtB,iDA2GM,gBAAiB,CACjB,WAAY,CACZ,gBAAiB,CA7GvB,4HAiHQ,YAAa,CAjHrB,+CAsHM,iCAAmC,CACnC,eAAgB,CAvHtB,2DA0HQ,oBAAqB,CA1H7B,wHA+HQ,gBAAiB,CACjB,oBVtMe,CUuMf,gCAAqB,CAjI7B,+CAsIM,UVtMU,CUuMV,eAAiB,CAvIvB,2EA2IM,YAAa,CACb,oBAAqB,CACrB,yBAAA,CAAA,iBAAkB,CA7IxB,qFAgJQ,eAAmB,CACnB,wBAAyB,CACzB,eAAgB,CAChB,cAAe,CAnJvB,uEAwJM,YAAa,CACb,kBAAmB,CAzJzB,mFA4JQ,aAAc,CA5JtB,+CAiKM,UVjOU,CUgEhB,qEAqKM,iBAAkB,CArKxB,mFAwKQ,eAAiB,CACjB,cAAe,CACf,iBAAkB,CAClB,sBAAuB,CACvB,iBAAkB,CAClB,6CA9OgD,CAiExD,+EAiLQ,UVlPe,CUmPf,kBV1PS,CUwEjB,2FAqLU,aVvPe,CUwPf,kBV7PY,CUuEtB,6FA0LU,UV3Pa,CU4Pb,kBVjQa,CUsEvB,iFAgMQ,UAAW,CACX,kBApQsB,CAmE9B,6FAoMU,UAAY,CACZ,eAvQsB,CAkEhC,uCA4MI,gBAAiB,CA5MrB,sGAgNM,eAAgB,CAChB,UAAW,CACX,cAAe,CACf,kBAAmB,CAnNzB,mDAuNM,iBAAkB,CAvNxB,uDA2NM,aVnSW,CUoSX,cAAe,CACf,kBAAmB,CACnB,wBAAyB,CACzB,eAAiB,CAClB,qCAKH,oIAMI,SAAU,CACX,CCnTL,SACE,YAAa,CACb,kBAAmB,CACnB,6BAA8B,CAC9B,eAAiB,CACjB,cAAe,CACf,KAAM,CACN,MAAO,CACP,UAAW,CACX,SAAU,CACV,mBAAoB,CACpB,4BAA6B,CAC7B,+BAAgC,CAZlC,iBAeI,YAAa,CACb,kBAAmB,CAhBvB,qBAmBM,YAAa,CACb,eAAgB,CAChB,UAAW,CACX,kBAAmB,CACnB,wBAAyB,CAvB/B,qEA4BM,kBAAmB,CACnB,eAAgB,CAChB,sBAAuB,CACvB,cAAe,CACf,0BAA2B,CAC3B,gBAAiB,CACjB,eAAgB,CAChB,WAAY,CACZ,oBAAqB,CACrB,aAAyB,CACzB,cAAe,CACf,YAAa,CACb,kBAAmB,CACnB,iBAAkB,CAClB,iBAAkB,CA1CxB,iFA6CQ,kBX7Cc,CW8Cd,aXzCiB,CWLzB,mFAkDQ,kBXjDe,CWkDf,UX7Ce,CWNvB,mDAwDM,WAAY,CACZ,iBAAkB,CAzDxB,+GA4DQ,cAAe,CACf,eAAgB,CAChB,WAAY,CA9DpB,yDAkEQ,eAAgB,CAlExB,qCAuEM,WAAY,CACZ,eAAgB,CAChB,YAAa,CAzEnB,2CA4EQ,YAAa,CACb,eAAgB,CA7ExB,kCAmFQ,YAAa,CAnFrB,kCAuFQ,kBAAmB,CAvF3B,mCA2FQ,oBAAqB,CA3F7B,qCAgGM,WAAY,CAhGlB,4CAmGQ,eAAgB,CAnGxB,yFAwGM,YAAa,CACb,eAAgB,CAChB,iBAAkB,CA1GxB,6BA8GM,WAAY,CACZ,gBAAiB,CA/GvB,mCAkHQ,aAAc,CACd,qBAAuB,CACvB,iBAAmB,CApH3B,oCAwHQ,eAAiB,CAxHzB,iCA4HQ,eAAgB,CA5HxB,wDAiIM,qBAAuB,CACvB,aAAc,CAlIpB,8DAqIQ,qBAAuB,CACxB,uBAML,wBAAyB,CAD3B,qCAII,aAAc,CACf,kBAID,0CAAoD,CACrD,0BAGC,SACE,mBAAoB,CACrB,CAGH,0BACE,qEAIM,aAAc,CACf,CAKP,yBACE,iBAEI,eAAgB,CAFpB,qEAMM,cAAe,CACf,cAAe,CAPrB,qBAWM,gBAAiB,CACjB,iBAAkB,CAClB,YAAa,CACb,eAAgB,CAChB,UAAW,CACX,kBAAmB,CACnB,0BAA2B,CAjBjC,qCAqBM,YAAa,CACd,CAKP,yBACE,SACE,kBAAmB,CACpB,CAGH,yBACE,yBACE,YAAa,CACb,6BAA8B,CAC9B,kBAAmB,CACnB,WAAY,CAJd,iCAOI,UAAW,CACX,eAAgB,CARpB,8DAYQ,UAAW,CACX,YAAa,CACb,sBAAuB,CACvB,aAAc,CAftB,qDAmBQ,iBAAkB,CAnB1B,yDAuBQ,iBAAkB,CAvB1B,yDA2BQ,SAAU,CACV,gBAAiB,CACjB,eAAgB,CA7BxB,iCAmCI,YAAa,CACb,6BAA8B,CAC9B,wBAAyB,CACzB,kBAAmB,CACnB,sBAAe,CAAf,cAAe,CACf,UAAW,CACX,eAAgB,CAzCpB,wCA4CM,UAAW,CACX,WAAY,CA7ClB,4CAgDQ,UAAW,CACX,WAAY,CACb,CC/PT,oCAGM,kCAA2B,CAA3B,0BAA2B,CAC3B,kBAAmB,CCJzB,uCAGM,kBAAmB,CAHzB,4CAMQ,wBAAyB,CANjC,qCAWM,iBAAkB,CAXxB,4CAcQ,WAAY,CCZpB,iEAGM,yBAAA,CAAA,iBAAkB,CAHxB,kDAOM,yBAAkB,CAAlB,iBAAkB,CAClB,gBAAiB,CARvB,oDAWQ,oBAAqB,CACrB,cAAe,CACf,wBAAyB,CACzB,UAAyB,CACzB,eAAgB,CAfxB,0DAkBU,aApBc,CAExB,4CAyBI,SAAU,CAzBd,2DA6BI,yBAA0B,CA7B9B,uCAiCI,eAAgB,CCnCpB,iEAGM,yBAAA,CAAA,iBAAkB,CAHxB,4CAQI,SAAU,CARd,2DAYI,yBAA0B,CCZ9B,+DACE,UAAW,CCDb,kBACE,QAAS,CADX,uBAII,oBAAqB,CACrB,qBAAsB,CACtB,eAAgB,CAChB,WAAY,CACZ,UAAW,CARf,wBAYI,YAAa,CACd,eAID,SAAU,CACV,eAAgB,CAChB,cAAe,CACf,WAAY,CAJd,kBAOI,SAAU,CACV,QAAS,CACT,oBAAqB,CACrB,eAAgB,CAChB,WAAY,CACZ,UAAW,CACX,UAAW,CAbf,qBAgBM,YAAa,CACb,UAAW,CACX,aAAc,CACd,4BAA6B,CAnBnC,iCAsBQ,WAAY,CAtBpB,0CA2BU,kBAAmB,CA3B7B,sCAgCQ,SAAU,CACV,aAAc,CAjCtB,uCAqCQ,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CACnB,SAAU,CAxClB,0BA4CQ,oBAAqB,CACrB,gBAAiB,CA7CzB,iCAiDQ,kBAAmB,CAjD3B,+BAqDQ,iBAAkB,CArD1B,iCA0DM,oBAAuB,CC1E7B,mBACE,YAAa,CACb,WAAY,CAFd,yBAKI,WAAY,CACZ,gBAAiB,CACjB,eAAgB,CAPpB,0BAWI,YAAa,CACb,kBAAmB,CACnB,sBAAuB,CACvB,eAAgB,CAChB,sBAA0B,CAC1B,WAAY,CCdhB,WACE,YAAa,CACb,0BAA2B,CAC3B,sBAAuB,CAEvB,cAAe,CACf,iBAAkB,CAClB,cAAe,CACf,0BAA4B,CAC5B,4BAA6B,CAC7B,aAAyB,CAV3B,mEAcI,SAAU,CAdd,6BAmBM,kBAAmB,CAnBzB,+BAuBM,cAAe,CAvBrB,2BA2BM,YAAa,CACb,kBAAmB,CA5BzB,wCA+BQ,kBAAmB,CA/B3B,kCAuCQ,SAAU,CACV,eAAgB,CAxCxB,uCA4CQ,SAAU,CA5ClB,qEAkDM,UAAW,CAlDjB,iBAuDI,cAAe,CACf,kBAAmB,CACpB,mBAID,kBAAmB,CACpB,mBAGC,6BnBlEe,CmBiEjB,2CAKM,SAAU,CACV,anBvEW,CmBwEZ,qBAKH,kBAAmB,CACnB,YAAc,CAFhB,iEAKI,sBAAyB,CAC1B,6BAID,kBAAmB,CACnB,aAAc,CAFhB,yHAOI,uBAAyB,CAC1B,oBAID,kBAAmB,CACnB,6BAA8B,CAC/B,4BAGC,kBAAmB,CACnB,UAAY,CAFd,kCAKI,UAAY,CACb,mBAID,kBAAmB,CACpB,mBAGC,6BnB/GsB,CmB8GxB,2CAKM,anBnHkB,CmB8GxB,4BAUI,SAAU,CAVd,yEAcM,iBAAkB,CAClB,oBAAqB,CAf3B,2GAkBQ,iBAAkB,CAClB,UAAW,CACX,WAAY,CACZ,gBAAiB,CACjB,kBnBpIgB,CmBqIhB,UAAY,CACZ,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CACnB,cAAe,CA3BvB,qIA+BQ,oBAAqB,CA/B7B,mHAmCQ,yBAA0B,CAC1B,cAAe,CCvJvB,yCAGM,aAAc,CACd,cAAe,CCFrB,QACE,qCAAA,CAAA,6BAA+B,CADjC,yBAII,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CACnB,kBCRa,CDSb,kBAAmB,CACnB,UAAY,CACZ,UAAW,CACX,WAAY,CACZ,YAAa,CACb,WAAY,CACZ,oBAAqB,CAdzB,qCAiBM,kBCjBgB,CDAtB,uDAoBQ,aAAc,CACd,aChBiB,CDiBjB,kBCtBc,CDAtB,6CA0BQ,aCrBiB,CDsBlB,oCA3BP,2CAgCQ,sBAAwB,CACzB,CAjCP,uCAqCM,kBCtCW,CDCjB,yDAwCQ,aAAc,CACd,UCnCe,CDoCf,kBC3CS,CDCjB,+CA8CQ,UCxCe,CDNvB,2CAmDM,yBAAkB,CAAlB,iBAAkB,CAClB,YAAa,CACb,yBAA0B,CAC1B,kBCvDW,CDwDX,kBAAmB,CACnB,UAAY,CACZ,cAAe,CACf,iBAAkB,CAClB,SAAU,CACV,UAAW,CACX,gBAAiB,CA7DvB,iCAiEM,UAAW,CACX,WAAY,CACb,oCAnEL,QAuEI,uBAAA,CAAA,eAAgB,CAEnB,CAED,aACE,YAAa,CACd,uFAMK,iCAAA,CAAA,yBAA0B,CErFhC,MACE,eAAgB,CCDlB,gBACE,YAAa,CADf,uBAII,UAAW,CAJf,8CAQI,eAAgB,CrBNpB,UACE,SAAU,CACX,kCAGC,SAAU,CADZ,6DAII,UAAY,CAJhB,6DASM,kBHdW,CGeX,wBHfW,CyBDjB,+CAGM,eAAiB,CCHvB,wCAGM,UAAW,CACX,cAAe,CACf,eAAiB,CALvB,gCAUI,eAAgB,CAChB,kCAAA,CAAA,0BAA2B,CAX/B,qDAcM,YAAa,CACb,qBAAsB,CAf5B,2DAkBQ,QAAS,CAlBjB,0DAsBQ,cAAe,CACf,UAAW,CACX,eAAiB,CACjB,kBAAmB,CAzB3B,oEA6BQ,YAAa,CACb,kBAAmB,CA9B3B,yEAiCU,UAAW,CACX,cAAe,CACf,iBAAkB,CAClB,eAAmB,CACnB,gBAAiB,CArC3B,2BA4CI,eAAiB,CACjB,UAAW,CC7Cf,aACE,kCAAA,CAAA,0BAA2B,CAD7B,gCAII,iBAAkB,CAClB,aAAc,CCHjB,6CADC,kCAAA,CAAA,0BAM2B,CAL5B,mBAGC,YAAa,CACb,qBAC2B,CCP7B,4CAIQ,YAAa,CACb,kBAAmB,CAL3B,kDAQU,aAAc,CARxB,8CAeQ,YAAa,CACb,kBAAmB,CACnB,SAAU,CAjBlB,kDAoBU,gBAAiB,CApB3B,wBA2BI,YAAa,CA3BjB,0DA8BM,mBAAqB,CA9B3B,8BAkCM,UAAY,CAlClB,oCAsCM,mBAAoB,CAtC1B,6CAyCQ,mBAAqB,CAzC7B,+BA8CM,YAAa,CC9CnB,6CAEI,YAAa,CACb,kBAAmB,CAHvB,kDAMM,gBAAiB,CACjB,UAAW,CCPjB,eACE,YAAa,CACb,kBAAmB,CAFrB,2BAKI,gBAAiB,CACjB,UAAW,CCNf,oDAKU,mBAAuB,CCHjC,cACE,cAAe,CACf,QAAS,CACT,OAAQ,CACR,YAAa,CACb,qBAAsB,CACtB,kCAA2B,CAA3B,0BAA2B,CAC3B,SAAU,CACV,6BAAqB,CACrB,cAAe,CATjB,oBAYI,YAAa,CACb,6BAA8B,CAC9B,kBAAmB,CACnB,+BAjBe,CAEnB,0BAkBM,wBAAyB,CAEzB,cAAe,CACf,eAAiB,CACjB,aAxBa,CAyBb,kBAAmB,CACnB,YAAa,CAxBnB,2BA4BM,YAAa,CACb,mBAAqB,CA7B3B,+BAgCQ,aAlCW,CAEnB,iCAoCQ,cAAe,CACf,kBAAmB,CArC3B,oBA2CI,YAAa,CA3CjB,uBA8CM,iBAAkB,CAElB,SAAU,CACV,eAAgB,CAChB,iBAAiB,CAlDvB,0BAqDQ,WAAY,CArDpB,oCAwDU,iBAAkB,CAClB,aA3DS,CA4DT,eAAiB,CA1D3B,2CA8DU,UAAY,CA9DtB,oCAmEQ,gBAAiB,CAClB,MAML,YAAa,CC5Ef,uCAGM,iBAAkB,CAHxB,sDAQQ,YAAa,CARrB,kEAWU,kBAAmB,CACnB,UAAW,CAZrB,sDAiBQ,YAAa,CACb,kBAAmB,CAlB3B,kEAqBU,cAAe,CACf,eAAiB,CACjB,kBAAmB,CACnB,UAAA,CAMA,eANW,CAxBrB,gDAoCM,eAAgB,CApCtB,uCAwCM,UAAW,CACX,iBAAkB,CCzCxB,mEAEI,yBAAA,CAAA,iBAAkB,CAFtB,sEAMI,8BAAgC,CCNpC,uEAGI,YAAa,CAHjB,uGAOQ,UAAW,CACX,kBAAmB,CAR3B,oNAkBQ,QAAS,CAlBjB,mCAwBI,YAAa,CAxBjB,uCA2BM,SAAU,CA3BhB,8CA8BQ,UAAW,CA9BnB,4CAmCM,eAAkB,CAnCxB,8CAuCM,WAAY,CAvClB,4CA2CM,WAAY,CACZ,gBAAiB,CA5CvB,mDA+CQ,kBAAmB,CA/C3B,4CAoDM,WAAY,CApDlB,mDAuDQ,mBAAoB,CCrD5B,oBACE,wBAAyB,CACzB,mBAAoB,CACpB,gBAAiB,CACjB,SAAU,CAJZ,4BAOI,YAAa,CACb,eAAgB,CARpB,8BAWM,UAAc,CACd,wBAAyB,CACzB,cAAe,CACf,kBAAmB,CACnB,mBAAoB,CACpB,oBAAqB,CAhB3B,oCAmBQ,arChBgB,CqCHxB,qCAuBQ,arCtBe,CqCDvB,qCA4BM,arCxBmB,CqCJzB,0BAiCI,oBAAqB,CAjCzB,2CAsCQ,YAAa,CACb,kBAAmB,CAvC3B,iDA0CU,SAAU,CACV,cAAe,CACf,QAAS,CA5CnB,iDAgDU,UAAW,CAhDrB,yDAqDQ,UAAW,CArDnB,sGA0DQ,eAAgB,CA1DxB,kHA6DU,oBAAqB,CA7D/B,sOAkEU,YAAa,CACb,oBrClEa,CqCmEb,gBAAiB,CApE3B,kDAyEQ,oBAAqB,CACrB,oBAAqB,CACrB,UAAW,CA3EnB,oDAgFU,kBrCjFO,CqCkFP,UAAY,CACZ,iBAAkB,CAClB,qBAAsB,CACtB,cAAe,CApFzB,0DAuFY,arClFa,CqCmFb,kBrCxFU,CqCAtB,2DA4FY,UrCtFW,CqCuFX,kBrC5FW,CqCDvB,gDAmGQ,aAAc,CAnGtB,gDAuGQ,YAAa,CCzGrB,4BAGM,UAAW,CAHjB,kCAMQ,aAAc,CANtB,oCAWM,UAAW,CAXjB,gCAeM,YAAa,CAfnB,4CAkBQ,SAAU,CAlBlB,kDAqBU,UAAW,CArBrB,4CA0BQ,YAAa,CACb,0BAA2B,CAC3B,sBAAuB,CACvB,mBAAoB,CACpB,SAAU,CACX,6BAML,mBAAqB,CCrCvB,8CAIQ,YAAa,CACb,kBAAmB,CAL3B,qDAQU,iCAAA,CAAA,yBAA0B,CCLpC,iEAGM,yBAAA,CAAA,iBAAkB,CAHxB,mEAMQ,aATW,CAUX,oBAAqB,CAP7B,yEAUU,UAAyB,CAVnC,kDAgBM,yBAAkB,CAAlB,iBAAkB,CAClB,gBAAiB,CAjBvB,oDAoBQ,oBAAqB,CACrB,cAAe,CACf,wBAAyB,CACzB,UAAyB,CACzB,eAAgB,CAxBxB,0DA2BU,aA7Bc,CAExB,4CAkCI,SAAU,CAlCd,2DAsCI,yBAA0B,CAtC9B,uCA0CI,eAAgB,CC7CpB,yCAGM,UAAW,CAHjB,+CAMQ,aAAc,CANtB,iDAWM,UAAW,CAXjB,6CAeM,YAAa,CAfnB,yDAkBQ,SAAU,CAlBlB,yDAsBQ,YAAa,CACb,0BAA2B,CAC3B,sBAAuB,CACvB,mBAAoB,CACpB,SAAU,CC1BlB,oDAGM,YAAa,CACb,oBAAqB,CACrB,yBAAA,CAAA,iBAAkB,CALxB,yDAQQ,eAAmB,CACnB,wBAAyB,CACzB,eAAgB,CAChB,cAAe,CAXvB,mEAeQ,wBAAyB,CAfjC,+CAoBM,YAAa,CACb,kBAAmB,CArBzB,mDAwBQ,cAAe,CACf,aAAc,CACd,gBAAiB,CA1BzB,yDA6BU,aAAc,CC3BxB,sBAEI,YAAa,CACb,qBAAsB,CACtB,sBAAuB,CAJ3B,0BAOM,YAAa,CACb,kBAAmB,CACnB,UAAW,CACX,YAAa,CAVnB,6BAcM,aAAc,CAdpB,iCAiBQ,gBAAiB,CAjBzB,oCAuBQ,oBAAqB,CACrB,a3CzBS,C2C0BT,eAAiB,CACjB,cAAe,CA1BvB,0CA6BU,a3C7BY,C2CAtB,uCAmCM,eAAgB,CAChB,kCAAA,CAAA,0BAA2B,CApCjC,2CAuCQ,YAAa,CACb,YAAa,CAxCrB,gDA2CU,cAAe,CACf,UAAW,CA5CrB,4DAgDU,WAAY,CAhDtB,giBAwFQ,kCAAA,CAAA,0BAA2B,CAxFnC,kHA6FQ,cAAe,CACf,U3CvFQ,C2CPhB,0DAkGQ,YAAa,CACb,YAAa,CAnGrB,4DAsGU,UAAW,CACX,kB3CxGO,C2CyGP,WAAY,CACZ,iBAAkB,CAClB,cAAe,CACf,eAAiB,CACjB,gBAAiB,CACjB,yBAA0B,CAC1B,oBAAqB,CACrB,yBAAkB,CAAlB,iBAAkB,CAClB,iBAAkB,CAhH5B,kEAmHY,a3C9Ga,C2C+Gb,kB3CpHU,C2CAtB,kEAwHY,U3ClHW,C2CmHX,kB3CxHW,C2CDvB,+DA8HU,aAAc,CACd,eAAgB,CAChB,iBAAkB,CAClB,cAAe,CAjIzB,kEAsIQ,YAAa,CACb,kBAAmB,CACnB,aAAc,CAxItB,uEA2IU,a3C5IO,C2CCjB,8EA+IU,iBAAkB,CAClB,SAAU,CAhJpB,oFAmJY,YAAa,CCnJzB,sCAGM,kBAAmB,CACnB,cAAe,CACf,SAAU,CACV,WAAY,CACZ,a5CRW,C4CSX,wBAAyB,CACzB,cAAe,CACf,eAAiB,CACjB,cAAe,CAXrB,wCAeM,cAAe,CACf,UAAW,CAhBjB,4CAmBQ,YAAa,CAnBrB,6DAsBU,SAAU,CCxBpB,mEAGM,yBAAA,CAAA,iBAAkB,CAHxB,8CAQI,SAAU,CARd,6DAYI,yBAA0B,CCZ9B,8DAEI,yBAAA,CAAA,iBAAkB,CAFtB,mDAOM,YAAa,CAPnB,wDAUQ,SAAU,CAVlB,sEAcY,SAAU,CAdtB,4FAmBc,UAAW,CAnBzB,qFA0BY,YAAa,CA1BzB,2FA6Bc,UAAW,CA7BzB,kGAiCc,iBAAkB,CAjChC,wDAwCQ,SAAU,CACV,WAAY,CACZ,wBAAyB,CACzB,uBAA0B,CA3ClC,0DAiDQ,cAAe,CACf,oBAAqB,CAlD7B,8DAqDU,kBAAmB,CArD7B,8EA0DQ,YAAa,CC1DrB,8BAGM,kCAAoC,CpBD1C,wCAGM,YAAa,CACb,qBAAsB,CAJ5B,yDAQU,WAAY,CACZ,oBAAqB,CAT/B,0DAaU,yBAAA,CAAA,iBAAkB,CAb5B,sCAmBM,mBAAuB,CACvB,oBAAqB,CACrB,aLtBW,CKuBX,eAAiB,CAtBvB,4CAyBQ,aLtBgB,C0BLxB,+BAEI,kCAAA,CAAA,0BAA2B,CAF/B,yBAMI,YAAa,CANjB,2DASM,mBAAqB,CAT3B,+BAaM,UAAY,CAblB,qCAiBM,mBAAoB,CAjB1B,8CAoBQ,mBAAqB,CApB7B,gCAyBM,YAAa,CCrBnB,+DAGM,yBAAkB,CAAlB,iBAAkB,CAClB,UANU,CAEhB,+GASM,yBAAA,CAAA,iBAAkB,CATxB,mHAYQ,oBAAqB,CACrB,cAAe,CACf,wBAAyB,CACzB,UAjBQ,CAkBR,eAAgB,CAhBxB,+HAmBU,aAtBc,CAGxB,gDAyBM,gBAAiB,CAzBvB,kDA4BQ,aAhCW,CAInB,wDA+BU,UAjCM,CAEhB,0CAsCI,SAAU,CAtCd,yDA0CI,yBAA0B,CA1C9B,qCA8CI,eAAgB,CClDpB,mBAMM,UAAW,CANjB,yBAWQ,UAAW,CCXnB,mCAEI,YAAa,CAFjB,oCAMI,eAAgB,CANpB,uDAUQ,iBAAkB,CAClB,cAAe,CAXvB,4DAeQ,eAAiB,CCfzB,qCACE,SAAU,CACV,SAAU,CCFZ,iEAGM,yBAAA,CAAA,iBAAkB,CAHxB,4CAQI,SAAU,CARd,2DAYI,yBAA0B,CCZ9B,iEAGM,yBAAA,CAAA,iBAAkB,CAHxB,4CAQI,SAAU,CARd,2DAYI,yBAA0B,CCZ9B,kFAEI,eAAgB,C3BFpB,8CAEE,YAAa,CACb,kBAAmB,CACnB,aAAc,CAJhB,qDAOI,gBAAiB,CAPrB,oCAYE,cAAe,CACf,iBAAkB,CAClB,eAAmB,C4BZrB,wDAKU,eAAgB,CAL1B,kDAYQ,kBAAmB,CACnB,wBAAyB,CACzB,WAAY,CAdpB,6GAiBU,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CACnB,UxDbM,CwDcN,iBAAkB,CAClB,oBAAqB,CAtB/B,yHAyBY,kBxD3Ba,CwD4Bb,UAAY,CA1BxB,iIA6Bc,UAAY,CA7B1B,sDAmCU,UxD5BM,CwDPhB,gEAyCU,UAAY,CAzCtB,kEA6CU,axDxCe,CwDyCf,wBxD9CY,CwDAtB,kEAkDU,UxD5Ca,CwD6Cb,wBxDlDa,CyDHvB,4DAIQ,iCAAA,CAAA,yBAA0B,CAJlC,uFAcY,YAAa,CCdzB,0CACE,iBAAkB,CACnB,0CAGC,YAAa,CCLf,4BACE,cAAe,CAChB,cAGC,YAAa,CACb,qBAAsB,CAFxB,mBAKI,cAAe,CACf,kBAAmB,CCRvB,mBAGM,cAAe,CACf,eAAiB,CACjB,iBAAmB,CACnB,U9DCU,C8DPhB,yBASQ,eAAiB,CACjB,iBAAmB,CACnB,U9DJQ,C8DKT,gCAOH,SAAU,CACV,SAAU,CAHd,mGASM,kB9D1BgB,C8DiBtB,qGAcM,kBAAmB,CCjCzB,6BAIQ,iBAAkB,CAJ1B,sCAOU,SAAU,CAPpB,6BAYQ,aAAc,CAZtB,oCAeU,cAAe,CCfzB,2CAGM,gBAAiB,CAHvB,qCAOM,SAAU,CCLhB,kBACE,YAAa,CADf,yBAII,a/DLa,C+DCjB,+BAOM,a/DJkB,C+DHxB,2BAYI,eAAgB,CAZpB,iCAgBI,eAAgB,CACjB,yBAID,a/DtBe,C+DuBf,eAAiB,CAFnB,+BAKI,a/DtBoB,C+DiBxB,gCASI,a/DzBqB,C+D0BtB,MAID,U/D3Bc,C+D4Bf,iBAGC,UAAW,CACX,YAAa,CACb,kBAAmB,CAHrB,qBAMI,YAAa,CACb,kBAAmB,CAPvB,2BAUM,0BAAmB,CAAnB,kBAAmB,CACnB,aAAc,CAXpB,2BAeM,QAAS,CACT,cAAe,CCvDrB,sCAEI,YAAa,CACb,eAAgB,CAHpB,mDAMM,eAAgB,CAChB,iBAAkB,CAPxB,0CAYI,YAAa,CAZjB,qCAgBI,iBAAkB,CChBtB,kCACE,WAAY,CCDd,0DAGM,SAAU,CAHhB,gEAMQ,cAAe,CANvB,8EAUQ,gBAAiB,CAVzB,+DAcQ,eAAgB,CAdxB,wEAiBU,UAAW,CAjBrB,mGAyBI,UAAW,CACX,WAAY,CC1BhB,+BACE,YAAa,CAKd,gFAGC,SAAU,CADZ,yDAII,aAAc,CACf,wBAID,YAAa,CACb,kBAAmB,CACnB,WAAY,CAHd,kCAMI,QAAW,CACZ,wBAID,iBAAkB,CADpB,qCAII,UAAY,CACZ,cAAe,CAChB,iDAKC,mCAAA,CAAA,2BAA4B,CAFhC,mDAMI,UAAW,CCzCf,kCAEI,aAAc,CAFlB,8BAMI,YAAa,CANjB,6DAWM,YAAa,CAXnB,6CAeM,WAAY,CAflB,0DAkBQ,cAAe,ChEhBvB,cACE,cAAe,CACf,UAAW,CACX,cAAe,CACf,eAAiB,CAJnB,yBAOI,YAAa,CACb,kBAAmB,CACnB,eAAgB,CAChB,eAAgB,CAChB,gBAAiB,CACjB,YAAa,CACb,UAAW,CACX,aAAc,CAdlB,6BAiBM,4BAA8B,CAC9B,eAAgB,CAChB,WAAY,CAnBlB,iEAsBQ,UAAW,CAtBnB,gCA0BQ,eAAiB,CACjB,cAAe,CACf,wBAAyB,CACzB,kBAAmB,CA7B3B,iCAiCQ,YAAa,CACb,6BAA8B,CAC9B,cAAe,CACf,aAAc,CACd,eAAgB,CArCxB,kDAwCU,WAAY,CAxCtB,mDA4CU,UAAW,CACX,iBAAkB,CA7C5B,uEAoDQ,YAAa,CACb,qBAAsB,CACtB,UAAW,CACX,WAAY,CACZ,UAAY,CACZ,oBAAqB,CACrB,eAAgB,CA1DxB,sCA8DQ,eAAgB,CAChB,WAAY,CACZ,SAAU,CAhElB,kCAoEQ,cAAe,CApEvB,qCAwEQ,cAAe,CACf,+BJtEgB,CIHxB,wCA4EU,aJ1ES,CIFnB,4CAgFU,eAAgB,CAhF1B,sCAqFQ,oBJjFiB,CIJzB,yCAwFU,aJtFS,CIFnB,sCA6FQ,YAAa,CACb,qBAAsB,CACtB,cAAe,CA/FvB,mCAoGM,+BJrGW,CICjB,sCAuGQ,aJxGS,CIyGT,cAAe,CACf,kBAAmB,CAzG3B,qCA8GM,yCAAmD,CA9GzD,+EAiHQ,uBAAiC,CAClC,qBAML,8BAAoC,CACrC,0BAGC,yBACE,aAAc,CACf,CAGH,qCACE,cACE,aAAc,CADhB,yBAII,SAAU,CACX,CAIL,qCACE,yBAEI,aAAc,CACd,eAAgB,CACjB,CAIL,qCACE,yBAEI,aAAc,CACf,CAIL,0BACE,cACE,UAAW,CADb,yBAII,WAAY,CACZ,eAAgB,CALpB,kCASQ,SAAU,CACX,CiEtKT,6BACE,SAAU,CACX,6BAGC,SAAU,CACV,SAAU,CACV,cAAe,CACf,UAAW,CACX,YAAa,CACb,eAAiB,CACjB,YAAa,CACb,qBAAsB,CACtB,4CAAqC,CAArC,oCAAqC,CACrC,eAAgB,CAVlB,0CAaI,aAAc,CACd,cAAe,CACf,eAAgB,CAfpB,2CAmBI,YAAa,CACb,cAAe,CACf,aAAc,CArBlB,iDAwBM,kBrE1BkB,CqEExB,2GA2BQ,UrEtBI,CqELZ,iCAiCI,YAAa,CAjCjB,2EAoCM,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CACnB,wBAA0B,CAC1B,yBAAkB,CAAlB,iBAAkB,CAClB,WAAY,CACZ,oBAAqB,CACrB,UrEvCM,CqEJZ,wCA+CM,eAAgB,CAChB,WAAY,CAhDlB,uCAoDM,cAAe,CApDrB,wCAyDI,eAAiB,CAzDrB,yFA4DM,arE/Da,CqEgEb,eAAiB,CA7DvB,qGAgEQ,UAAY,CAhEpB,uGAoEQ,kBrErEiB,CqEsEjB,UAAY,CArEpB,8CA0EM,UAAY,CACZ,kBrE7EkB,CqEExB,sCAgFI,QAAS,CACT,iBAAkB,CAClB,WAAY,CAlFhB,+CAuFI,0CAA2C,CAvF/C,6DA0FM,iBAAkB,CAClB,WAAY,CACZ,eAAgB,CAChB,SAAU,CACV,cAAe,CA9FrB,wEAiGQ,QAAS,CAjGjB,8EAoGU,eAAgB,CAChB,aAAc,CACd,kBAAmB,CACpB,0BAOP,2CACE,eAAgB,CADlB,wDAKM,YAAa,CACd,CAKP,yBACE,yBACE,YAAa,CACd,CAGH,yBACE,wCAEI,YAAa,CACb,cAAe,CAChB,aAID,aAAc,CACf,CAGH,iCACE,GACE,SAAU,CAGZ,GACE,SAAU,CAAA,CANd,yBACE,GACE,SAAU,CAGZ,GACE,SAAU,CAAA,CC3Id,6BAEI,UAAW,CACX,WAAY,CAHhB,gCAOI,cAAe,CACf,eAAgB,CAChB,gBAAiB,CACjB,UAAW,CACX,WAAY,CAXhB,sCAcM,eAAgB,CAdtB,6EAkBM,YAAa,CACb,YAAa,CACb,gBAAiB,CACjB,sBAAuB,CACvB,kBAAmB,CAtBzB,+MA6BI,sBAAuB,CACvB,kBAAmB,CACnB,gBAAiB,CA/BrB,wCAmCI,YAAa,CACb,WAAY,CACZ,eAAgB,CAChB,aAAc,CACd,cAAe,CACf,kBAAmB,CAEnB,oBAAuB,CAAvB,oBAAuB,CACvB,gCAA6C,CA3CjD,4CA8CM,cAAe,CA9CrB,6CAmDI,YAAa,CACb,qBAAsB,CACtB,UAAW,CACX,WAAY,CACZ,QAAS,CAvDb,4DA0DM,YAAa,CACb,6BAA8B,CAC9B,kBAAmB,CACnB,UAAW,CACX,cAAe,CACf,iBAAkB,CA/DxB,uEAkEQ,aAAc,CACd,UAAW,CACX,qBAAsB,CACtB,eAAgB,CAChB,aAhFW,CAUnB,qFA0EQ,UAAW,CACX,WAAY,CACZ,kBAtFW,CAuFX,iBAAkB,CAClB,cAAe,CA9EvB,2FAiFU,wBA1Fc,CA2Fd,sBAAuB,CAlFjC,kEAuFQ,eAAgB,CAvFxB,gEA4FM,eAAgB,CAChB,UAAW,CACX,mBAAyB,CACzB,aAAc,CA/FpB,kEAkGQ,gBAAiB,CACjB,aAxGe,CAKvB,wEAsGU,aA1GkB,CAI5B,+DA4GM,QAAS,CACT,iBAAkB,CAClB,UAAW,CA9GjB,0EAiHQ,YAAa,CC5HrB,wBACE,YAAa,CACd,WAGC,YAAa,CACb,kBAAmB,CACnB,cAAe,CACf,cAAe,CACf,UAAW,CACX,iBAAkB,CAClB,UAAY,CACZ,kBAAmB,CACnB,WAAY,CACZ,kBAAmB,CACnB,6BAA8B,CAC9B,aAAc,CACd,SAAU,CAbZ,sBAgBI,YAAa,CACb,kBAAmB,CACnB,SAAU,CACV,WAAY,CAnBhB,oCAuBQ,SAAU,CAvBlB,sCA2BQ,4BAA6B,CA3BrC,0BAgCM,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CAlCzB,6DAqCQ,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CACnB,wBAA0B,CAC1B,yBAAkB,CAAlB,iBAAkB,CAClB,WAAY,CACZ,oBAAqB,CACrB,UAAY,CA5CpB,iCAgDQ,eAAgB,CAChB,WAAY,CAjDpB,gCAqDQ,cAAe,CArDvB,iCA0DM,eAAiB,CA1DvB,2EA6DQ,avEhEW,CuEiEX,eAAiB,CA9DzB,uFAiEU,UAAY,CAjEtB,yFAqEU,kBvEtEe,CuEuEf,UAAY,CAtEtB,uCA2EQ,kBvE7EgB,CuEExB,sBAiFI,SAAU,CACV,QAAS,CACT,SAAU,CACV,6BAA8B,CApFlC,sEAwFM,aAAc,CACd,WAAY,CACZ,kCAAA,CAAA,0BAA2B,CA1FjC,kFA6FQ,kBvE/FgB,CuEExB,+BAkGM,UAAW,CACX,cAAe,CAnGrB,qCAuGU,SAAU,CACV,UAAW,CACX,SAAU,CAzGpB,yCA4GY,SAAU,CA5GtB,qCAkHQ,sBAAuB,CAlH/B,6BAuHM,WAAY,CAvHlB,qFA4HQ,avE7HiB,CuECzB,yBAkII,SAAU,CACV,QAAS,CACT,SAAU,CACV,wBAAyB,CArI7B,6BAwIM,WAAY,CAxIlB,kCA4IM,UAAW,CACX,avEhJa,CuEiJb,aAAc,CA9IpB,sCAiJQ,kBAAmB,CACnB,UAAW,CACX,WAAY,CACZ,WAAY,CApJpB,4CAuJU,8BAAqB,CAvJ/B,6CA2JU,kBAAmB,CA3J7B,sCAiKM,aAAc,CACd,eAAgB,CAlKtB,4CAqKQ,avEvKgB,CuEExB,6CAyKQ,avE1KiB,CuECzB,yFA+KM,UAAY,CACZ,cAAe,CACf,eAAgB,CAjLtB,qGAoLQ,avEtLgB,CuEExB,uGAwLQ,avEzLiB,CuE0LlB,mCAOH,qBAAsB,CAF1B,uCAKM,yBAAkB,CAAlB,iBAAkB,CAClB,UAAW,CACX,cAAe,CAPrB,yCAWM,UAAW,CACX,SAAU,CACV,iBAAkB,CAbxB,sCAkBI,kBAAmB,CAlBvB,iDAqBM,yBAAA,CAAA,iBAAkB,CArBxB,qDAyBM,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CACnB,UAAW,CA5BjB,sEA+BQ,gBAAiB,CA/BzB,uEAmCQ,eAAgB,CACjB,qCAML,WACE,aAAc,CACf,CAGH,qCACE,WACE,YAAa,CACd,CAGH,yBACE,WACE,YAAa,CACd,wBAGC,YAAa,CACb,6BAA8B,CAC9B,aAAc,CAHhB,mCAMI,kBAAmB,CACnB,UAAW,CAPf,mCAWI,YAAa,CACb,qBAAsB,CACtB,sBAAuB,CACvB,kBAAmB,CACnB,cAAe,CAfnB,wCAkBM,UAAW,CACX,UAAW,CACX,UAAW,CACX,eAAiB,CAClB,CAKP,yBACE,wBACE,SAAU,CACX,+BAGC,WAAY,CADd,qCAII,UAAW,CACZ,CCpSL,UACE,UAAW,CACX,YAAa,CAFf,uBAKI,cAAe,CACf,UAAW,CACX,yCAAkC,CAAlC,iCAAkC,CAClC,SAAU,CACX,yBAKD,UACE,QAAS,CACV,6BAGC,GACE,oCAAA,CAAA,4BAA6B,CAG/B,GACE,kCAAA,CAAA,0BAA2B,CAAA,CAR9B,qBAGC,GACE,oCAAA,CAAA,4BAA6B,CAG/B,GACE,kCAAA,CAAA,0BAA2B,CAAA,CAAA,CxDxBjC,gBAEE,aAE6B,CAJ/B,uBAOI,cAAe,CACf,gBAAiB,CARrB,uBAYI,gBAAiB,CAZrB,8BAeM,kBAAmB,CAfzB,oCAkBQ,cAAe,CACf,UAAW,CAnBnB,+CAuBQ,gBAAiB,CAvBzB,kCA2BQ,UAAW,CACX,gBAAiB,CyD1BzB,4BAEI,a3EHa,C2EIb,cAAe,CACf,wBAAyB,CACzB,wBAAyB,CACzB,eAAiB,CANrB,uDAWM,yBAA0B,CAXhC,uEAiBY,yBAAkB,CAAlB,iBAAkB,CAClB,mBAAoB,CAlBhC,uCAyBI,YAAa,CACb,kBAAmB,CACnB,eAAgB,CAChB,qBAAsB,CA5B1B,8CA+BM,uBAAwB,CA/B9B,+CAoCQ,gBAAiB,CACjB,UAAW,CACX,kBAAmB,CACnB,wBAAyB,CACzB,iBAAkB,CAClB,cAAe,CACf,eAAiB,CC5CzB,SACE,4BAA6B,CAC9B,eAGC,mBAAoB,CCHtB,0BAEI,a7EHa,C6EIb,cAAe,CACf,wBAAyB,CACzB,wBAAyB,CACzB,eAAiB,CANrB,mDAWM,yBAA0B,CAXhC,kEAkBY,UAAW,CAlBvB,mEAsBY,WAAY,CAtBxB,mEA0BY,gBAAiB,CACjB,WAAY,CA3BxB,mEA+BY,aAAc,CACd,WAAY,CAhCxB,wEAmCc,UAAW,CACX,eAAmB,CApCjC,mEAyCY,WAAY,CAzCxB,yEA4Cc,aAAc,CACd,kBAAmB,CACnB,eAAgB,CAChB,UAAW,CACX,sBAAuB,CAhDrC,qCAyDI,YAAa,CACb,kBAAmB,CACnB,eAAgB,CAChB,qBAAsB,CA5D1B,4CA+DM,uBAAwB,CA/D9B,6CAoEQ,gBAAiB,CACjB,UAAW,CACX,kBAAmB,CACnB,wBAAyB,CACzB,iBAAkB,CAClB,cAAe,CACf,eAAiB,CC5EzB,iBACE,iBAAkB,CAClB,cAAe,CACf,eAAmB,CACnB,iBAAkB,CAClB,UAAW,CACZ,wBAKK,cAAe,CCXrB,gBACE,YAAa,CACb,sBAAuB,CACvB,cAAe,CACf,4BAA6B,CAJ/B,6BAQM,cAAe,CACf,eAAgB,CATtB,6BAeM,cAAe,CAfrB,yEAoBQ,WAAY,CApBpB,+CAwBQ,WAAY,CAxBpB,4BA6BM,cAAe,CA7BrB,kDAgCQ,QAAS,CACT,SAAU,CAjClB,2CAuCQ,UAAW,CAvCnB,0CA4CQ,SAAU,CACV,eAAgB,CA7CxB,uDAiDQ,WAAY,CCjDpB,iBACE,aAAc,CADhB,0BAII,eAAgB,CAJpB,wBAQI,WAAY,CAIX,wCADC,eASU,CARX,OAMH,eAAgB,CAChB,cAAe,CACf,aAAc,CACf,wBAGC,6BAA8B,CAC9B,kCAAA,CAAA,0BAA2B,CAF7B,qCAKI,aAAc,CACf,0BAID,0BACE,gBAAiB,CAClB,CCjCH,UACE,kBAAmB,CACpB,MAGC,aAAc,CACf,gBAGC,iBAAkB,CADpB,wBAII,cAAe,CACf,SAAU,CACV,UAAW,CACX,WAAY,CACZ,UAAW,CACX,WAAY,CACZ,iBAAkB,CAVtB,8BAaM,+BAAqB,CACrB,ajFvBW,CiFwBZ,gBAKH,aAAc,CACd,yBAAkB,CAAlB,iBAAkB,CAClB,sBAAuB,CACvB,kBAAmB,CACnB,eAAgB,CACjB,aAIG,cAAe,CACf,iBAAkB,CAClB,UAAY,CAJhB,wBAQI,yBAA0B,CAR9B,cAYI,YAAa,CACb,0BAA2B,CAC3B,sBAAuB,CAd3B,yDAiBM,SAAU,CAjBhB,qEAoBQ,YAAa,CACb,YAAa,CArBrB,qKA0BQ,WAAY,CACZ,6BAA8B,CAC9B,kBAAmB,CACnB,6BAA8B,CAC9B,iBAAkB,CA9B1B,2NAiCU,iBAAkB,CAClB,MAAS,CACT,WAAY,CACZ,UAAW,CACX,kBjFzEO,CiF0EP,OAAS,CAtCnB,yGA2CQ,WAAY,CA3CpB,qHA8CU,SAAU,CACV,YAAa,CACb,qBAAsB,CACtB,6BAA8B,CAC9B,cAAe,CAlDzB,wKAqDY,UAAW,CArDvB,4JA0DU,SAAU,CACV,wBAAyB,CA3DnC,+MA8DY,UAAW,CA9DvB,mBAsEM,eAAgB,CAtEtB,mBA0EM,gBAAiB,CA1EvB,wCA8EU,WAAY,CA9EtB,yCAkFU,WAAY,CACZ,iBAAkB,CAnF5B,wCA2FU,WAAY,CA3FtB,yCA+FU,WAAY,CA/FtB,0BAoGQ,eAAgB,CApGxB,kBAyGM,aAAc,CACd,QAAW,CA1GjB,oBA8GM,eAAiB,CACjB,aAAc,CACf,SAKH,iBAAkB,CAClB,KAAM,CACN,OAAQ,CACR,SAAU,CACV,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CACnB,cAAe,CACf,kBAAmB,CATrB,aAYI,kBAAmB,CACnB,wBAAyB,CACzB,WAAY,CAdhB,mCAiBM,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CACnB,UAAW,CACX,iBAAkB,CAClB,oBAAqB,CAtB3B,+CAyBQ,kBAA8B,CAC9B,UAAY,CA1BpB,uDA6BU,UAAY,CA7BtB,iBAmCM,UAAW,CAnCjB,kCAwCI,kBjFhMa,CiFwJjB,kCA4CI,kBjF3LY,CiF+IhB,aAgDI,gBAAiB,CAClB,0BAjDH,SAoDI,SAAU,CAYb,CATC,yBAvDF,aAyDM,yBAAA,CAAA,iBAAkB,CAzDxB,mCA4DQ,UAAW,CACZ,CAKP,gCACE,ajFvNsB,CiFwNvB,0BAGC,iBACE,mBAAqB,CACtB,CClOH,oCACE,oBAAsB,CACtB,SAAU,CCFZ,eACE,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CAHrB,sBAMI,WAAY,CACZ,eAAgB,CAPpB,yDAUM,YAAa,CAVnB,+BAeI,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CACnB,UAAW,CACX,WAAY,CAnBhB,qGAuBQ,gBAAiB,CAvBzB,mCA4BM,WAAY,CACZ,UAAW,CA7BjB,0CAgCQ,WAAa,CACb,SAAW,CACX,eAAgB,CAChB,mBAAoB,CACpB,mBAAoB,CACpB,sBAAuB,CACvB,+BAAwB,CAAxB,uBAAwB,CACxB,gCAAyB,CAAzB,wBAAyB,CACzB,wBAAyB,CCxCjC,UACE,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CACnB,4BAA6B,CAC7B,iBAAkB,CALpB,uBASM,cAAe,CACf,eAAgB,CAVtB,uBAcM,cAAe,CACf,eAAgB,CAChB,eAAgB,CAhBtB,uBAsBM,cAAe,CAtBrB,4BA0BM,cAAe,CACf,wBAAyB,CAC1B,kBAKH,6BAA8B,CADhC,yBAII,iBAAkB,CAJtB,8BAQI,SAAU,CCtCd,YACE,YAAa,CACd,UAGC,UrFEc,CqFHhB,mBAII,eAAgB,CAJpB,oBAQI,cAAe,CACf,sBAAuB,CAT3B,6BAYM,SAAU,CAZhB,2BAgBM,YAAa,CACb,qBAAsB,CACtB,oBAAqB,CAlB3B,iCAqBQ,QAAS,CArBjB,mCA2BQ,SAAU,CACX,iBAML,YAAa,CACb,kBAAmB,CAFrB,iCAKI,eAAgB,CALpB,qBASI,cAAe,CACf,aAAc,CACd,cAAe,CAXnB,2BAcM,arFhDkB,CqFkCxB,4BAkBM,arFtDiB,CqFoCvB,iDA0BQ,arF5DgB,CqFkCxB,kDA8BQ,arFlEe,CqFoCvB,mDAmCM,cAAe,CAnCrB,4BAwCI,arFzEqB,CqF0EtB,0BAID,mBACE,gBAAiB,CAClB,CCtFH,iBACE,YAAa,CACb,qBAAsB,CAFxB,qBAKI,iBAAkB,CALtB,0DAYU,YAAa,CAZvB,kCAmBI,UAAW,CACX,YAAa,CACb,eAAgB,CAChB,kBAAmB,CAtBvB,yCAyBM,iBAAkB,CAClB,YAAa,CA1BnB,8CA8BM,eAAgB,CAChB,cAAe,CACf,iBAAkB,CAClB,sBAAuB,CACvB,iBAAkB,CAClB,6CAA8C,CAC9C,UAAW,CACX,kBAAmB,CACnB,WAAY,CACZ,gBAAiB,CAvCvB,oDA0CQ,UAAW,CACX,eAAgB,CC3CxB,oBAEE,4BAA6B,CAC9B,mBAKK,gBAAiB,CAClB,4CAOD,gBAAiB,CAHrB,aAOI,YAAa,CAPjB,6BAUM,iBAAkB,CAVxB,qBAcM,gBAAiB,CACjB,iBAAkB,CAfxB,4BAmBM,iBAAkB,CAClB,aAAc,CACd,cAAe,CAChB,YAKH,4BAA6B,CCtC/B,uCAGM,cAAe,CACf,wBAAyB,CACzB,aAPa,CAQb,eAAiB,CACjB,iBAAkB,CAClB,gBAAiB,CACjB,iBAAkB,CATxB,wCAaM,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CAfzB,0DAmBU,WAAY,CACZ,eAAgB,CAChB,eAAgB,CArB1B,iMAwBY,eAAgB,CAChB,eAAgB,CAChB,YAAa,CACb,WAAY,CACZ,aAAc,CA5B1B,2DAkCQ,eAAgB,CAlCxB,oDAyCM,YAAa,CAzCnB,qDA+CU,YAAa,CA/CvB,0DAqDU,wBAAyB,CArDnC,iIA0DU,iBAAkB,CAClB,eAAiB,CACjB,wBAAyB,CC9DnC,oBAEI,eAAgB,CAFpB,kCAOM,cAAe,CACf,UAAW,CARjB,wCAYQ,oBAAqB,CAZ7B,wCAkBQ,gBAAiB,CACjB,cAAe,CAnBvB,mCAyBI,6BAA8B,CAzBlC,4CA4BM,aAAc,CACf,0BAKH,oBACE,gBAAiB,CAClB,CCpCH,6CACE,iBAAkB,CACnB,kBAGC,SAAU,CCHZ,SAEE,gBAAkB,CAClB,cAAe,CAHjB,uBAMI,eAAgB,CAChB,eAAgB,CAChB,cAAe,CACf,aAAc,CACf,0BAID,SACE,aAAc,CACf,CAGH,0BACE,SACE,cAAe,CAChB,CAGH,yBACE,SACE,eAAgB,CACjB,CAGH,yBACE,SACE,cAAe,CAChB,CAGH,eACE,cAAe,CACf,UAAW,CACX,WAAY,CACZ,YAAa,CACb,4BAA6B,CAC7B,kBAAmB,CANrB,mBASI,UAAW,CACX,WAAY,CACZ,WAAY,CACZ,UAAW,CACX,iBAAkB,CAClB,kBAAmB,CACnB,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CAjBvB,yBAoBM,a3FpDmB,C2FqDnB,kB3F1DgB,C2FqCtB,0BAyBM,U3FxDiB,C2FyDjB,kB3F9DiB,C2FoCvB,0BA8BM,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CACnB,eAAgB,CAChB,WAAY,CACZ,UAAW,CACX,WAAY,CACZ,iBAAkB,CAClB,6BAAA,CAAA,qBAAsB,CAtC5B,8BAyCQ,UAAY,CACZ,UAAW,CA1CnB,+BAgDI,aAAc,CACd,eAAgB,CAjDpB,qCAoDM,kB3FzFgB,C2FqCtB,gDAuDQ,U3FtFe,C2F+BvB,sCA4DM,U3F3FiB,C2F4FjB,kB3FjGiB,C2FoCvB,sCAiEM,SAAU,CAjEhB,0CAoEQ,aAAc,CACf,qCAML,+BACE,YAAa,CACd,CAGH,oCACE,SACE,aAAc,CACf,CCxHH,6BAGM,SAAU,CAHhB,+BAOM,4BAA6B,CAPnC,yBAYI,SAAU,CAZd,0BAgBI,qBAAsB,CAhB1B,gCAmBM,yBAAkB,CAAlB,iBAAkB,CAClB,UAAW,CApBjB,qDAyBQ,eAAgB,CAzBxB,yDA6BQ,UAAW,CACX,aAAc,CA9BtB,6DAmCM,mBAAqB,CACrB,YAAa,CApCnB,uCAwCM,SAAU,CAxChB,qDA+CQ,a5F5CgB,C4FHxB,sDAmDQ,a5F/CiB,C4FJzB,sDAyDQ,a5FrDiB,C4FJzB,uDA6DQ,a5FzDiB,C4FJzB,mCAkEM,aAAc,CACd,eAAgB,CAnEtB,yCAsEQ,a5FnEgB,C4FHxB,0CA0EQ,a5FtEiB,C4FJzB,sCA+EM,UAAY,CACZ,cAAe,CACf,eAAgB,CAjFtB,4CAoFQ,a5FpFc,C4FAtB,6CAwFQ,a5FpFiB,C6FNzB,2CAIQ,qBAAsB,CACtB,QAAS,CALjB,6CAQU,mBAAqB,CAR/B,wBAeI,cAAe,CACf,UAAW,CACX,gBAAiB,CAEjB,qCAnBJ,wBAoBM,0BAA4B,CAC5B,sBAA0B,CAO7B,CAJC,qCAxBJ,wBAyBM,0BAA4B,CAC5B,sBAA0B,CAE7B,CC5BH,cACE,eAAgB,CAChB,iBAAkB,CCCpB,YACE,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CACnB,UAAW,CACX,YAAa,CACb,qBAAsB,CANxB,gCASI,qBAAsB,CACtB,wCAA8C,CAC9C,sCAAuC,CACvC,QAAS,CACT,SAAU,CACV,eAAgB,CAChB,WAAY,CAfhB,8CAkBM,iBAAkB,CAlBxB,mDAqBQ,iBAAkB,CAClB,QAAS,CACT,UAAW,CACX,cAAe,CAxBvB,qDA2BU,aAAc,CA3BxB,qCAiCM,YAAa,CACb,iBAAkB,CAlCxB,wHAuCU,UAAW,CAvCrB,yCA4CQ,YAAa,CACb,sBAAuB,CACvB,kBAAmB,CACnB,SAAU,CA/ClB,6CAkDU,UAAW,CAlDrB,yCAuDQ,SAAU,CACV,kBAAmB,CAxD3B,0DA2DU,cAAe,CACf,wBAAyB,CACzB,oBAAqB,CACrB,oBAAqB,CA9D/B,6DAkEU,wB/FpEO,C+FqEP,wB/FrEO,C+FsEP,oBAAqB,CACrB,cAAe,CACf,WAAY,CACZ,aAAc,CACd,iBAAkB,CAxE5B,mEA2EY,a/F7EK,C+F8EL,wB/F7EU,C+F8EV,wB/F9EU,C+FCtB,oEAiFY,aAAc,CACd,wB/FpFK,C+FqFL,wB/FrFK,C+FEjB,uEAuFY,kBAAmB,CAvF/B,2DA4FU,eAAgB,CAChB,aAAc,CACf,yBA9FT,gCAqGM,WAAY,CArGlB,mDAyGU,qBAAsB,CACtB,sBAAuB,CACvB,kBAAmB,CA3G7B,uDA8GY,UAAW,CACX,oBAAqB,CA/GjC,yDAkHc,iBAAkB,CAlHhC,6DAqHgB,SAAU,CArH1B,uDA2HY,QAAS,CACT,UAAW,CA5HvB,yEAiIc,kBAAmB,CACpB,CTpIX,qCADF,8BAGM,YAAa,CACd,CAGH,qCAPF,8BASM,aAAc,CACf,CAVL,4BAcI,cAAe,CACf,UAAW,CACX,gBAAiB,CAEjB,qCAlBJ,4BAmBM,0BAA4B,CAC5B,sBAA0B,CAc7B,CAXC,qCAvBJ,4BAwBM,0BAA4B,CAC5B,sBAA0B,CAS7B,CAlCH,0EA8BQ,gBAAiB,CACjB,qBAAuB","file":"main.9f0c683e.chunk.css","sourcesContent":["body {\n margin: 0;\n padding: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\",\n \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\",\n sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\ncode {\n font-family: source-code-pro, Menlo, Monaco, Consolas, \"Courier New\",\n monospace;\n}\n",".spinner-wrapper {\n position: absolute;\n bottom: 5px;\n width: 150px;\n left: 42%;\n height: 10px;\n}\n",".btn-group button {\n border: 0;\n}\n\n.dropdown-menu {\n padding: 0;\n\n ul {\n padding: 0;\n margin: 0;\n display: inline-block;\n list-style: none;\n height: 150px;\n width: 100%;\n color: #333;\n\n li {\n display: inline-flex;\n width: 100%;\n height: 37.5px;\n border-top: 1px solid #dbdbdb;\n\n .arrow-down {\n float: right;\n }\n\n .dropdown-item {\n &:hover {\n background: #bdbdbd;\n }\n }\n\n span {\n padding: 0 5px 0 10px;\n line-height: 38px;\n }\n\n span.active{\n background: #ffc900;\n }\n\n span + span {\n text-align: center;\n }\n }\n }\n}\n\n.lists-container .dropdown-menu.show{\n transform: translate3d(-57%, 39px, 0px)!important;\n}","@import 'src/utils/scss/variables';\n\n.path {\n display: flex;\n justify-content: space-between;\n font-size: 15px;\n padding: 1px 0 0 5px;\n height: 40px;\n background: #222e44;\n color: #999;\n box-shadow: 0 2px 10px -4px #222e44;\n\n .btn-group {\n width: 75px;\n margin-left: 15px;\n background: none;\n box-shadow: none;\n\n .btn-secondary:not(:disabled):not(.disabled).active, .btn-secondary:not(:disabled):not(.disabled):active, .show>.btn-secondary.dropdown-toggle {\n background: #222e44;\n border: #222e44;\n }\n\n button {\n padding-left: 0;\n padding-right: 5px;\n color: #999;\n background: #222e44;\n border: #222e44;\n transition: none;\n \n span {\n color: #999;\n padding: 0 0 0 5px;\n }\n\n &:active, &:focus {\n background: #222e44;\n border: #222e44;\n }\n }\n\n .btn.active.focus, .btn.active:focus, .btn.focus, .btn:active.focus, .btn:active:focus, .btn:focus {\n box-shadow: none;\n outline: none;\n background: #222e44;\n border: #222e44;\n }\n\n .btn-secondary {\n display: flex;\n justify-content: center;\n align-items: center;\n }\n }\n\n .clickable {\n padding-top: 8px;\n cursor: pointer;\n }\n}\n\n.active-path {\n display: flex;\n justify-content: space-between;\n font-size: 15px;\n padding: 1px 0 0 5px;\n height: 40px;\n background: #d7dcef;\n color: $white;\n box-shadow: 0 2px 6px -2px #d7dcef;\n\n .clickable-wrapper {\n display: flex;\n flex-wrap: nowrap;\n overflow: auto;\n }\n\n .btn-group {\n width: 75px;\n background: none;\n box-shadow: none;\n\n .btn-secondary:not(:disabled):not(.disabled).active, .btn-secondary:not(:disabled):not(.disabled):active, .show>.btn-secondary.dropdown-toggle {\n border-color: #d7dcef;\n background: #d7dcef;\n }\n\n button {\n padding-left: 0;\n padding-right: 5px;\n color: white;\n border-color: #d7dcef;\n background: #d7dcef;\n transition: none;\n\n span {\n color: #fff;\n padding: 0 0 0 5px;\n }\n\n &:active, &:focus {\n border-color: #d7dcef;\n background: #d7dcef;\n }\n }\n\n .btn.active.focus, .btn.active:focus, .btn.focus, .btn:active.focus, .btn:active:focus, .btn:focus {\n box-shadow: none;\n outline: none;\n border-color: #d7dcef;\n background: #d7dcef;\n }\n\n .btn-secondary {\n display: flex;\n justify-content: center;\n align-items: center;\n color: $primary;\n\n span {\n color: $primary;\n }\n\n &:hover {\n color: #1c3876;\n border-color: #d7dcef;\n background: #d7dcef;\n\n span {\n color: #1c3876;\n }\n }\n }\n }\n\n .clickable {\n color: $primary;\n padding-top: 8px;\n cursor: pointer;\n \n &:hover {\n color: #1c3876;\n }\n\n &:active {\n color: $primary;\n }\n }\n}\n\n.clickable-path {\n display: flex;\n float: 0 0 auto;\n}","$whiteBackground: #ececec;\n$primary: #2c54ac;\n$primaryLight: #d7dcef;\n$primaryActive: #1e5cb2;\n$secondary: #fcac04;\n$secondaryLight: #f8b014;\n$secondaryActive: #fdb51c;\n$hoverButtonText: #2c54ac;\n$activeButtonText: #fff;\n$textColor: #555;\n$danger: #b00e5b;\n$black: #000;\n$white: #fff;\n","@import 'src/utils/scss/variables';\n\n.list .list-container ul li svg {\n width: 25px;\n vertical-align: top;\n margin-top: 9px;\n margin-left: 10px;\n}\n\n.html5 {\n color: #f16529;\n}\n\n.file-alt {\n color: #20d2d1;\n}\n\n.list .list-container ul li {\n .marker {\n float: left;\n width: 4px;\n height: 34px;\n margin-right: 5px;\n }\n}\n\n.list .list-container ul li .js {\n width: 16px;\n color: #f7df1c;\n background: black;\n margin: 9px 4px 0 15px;\n}\n\n.php {\n color: #777bb3;\n}\n\n.css3 {\n color: #0079cb;\n}\n\n.sass {\n color: #cd6699;\n}\n\n.image {\n color: #36afae;\n}\n\n.folder-open {\n color: #e29741;\n}\n\n.file {\n color: #11b1b1;\n}\n\n.archive {\n color: rgb(209, 206, 43);\n}\n\n.download {\n color: #929ca3;\n}\n\n.fOwner,\n.fPermissions,\n.fSize,\n.fDate,\n.fTime {\n font-size: 14px;\n float: right;\n width: 60px;\n padding-top: 2px;\n}\n\n.list .list-container ul li .fName {\n margin-left: 5px;\n width: 260px;\n display: inline-block;\n overflow: hidden;\n text-overflow: clip;\n\n .name {\n padding: 0 5px;\n float: left;\n margin-left: 5px;\n line-height: 34px;\n font-size: 15px;\n white-space: nowrap;\n transition: all ease-out 0.3s;\n\n &:hover {\n transition: all ease-out 0.2s;\n background: rgb(201, 199, 199);\n border-radius: 4px;\n cursor: pointer;\n }\n }\n}\n\n.list .list-container ul li.active .fName .name:hover {\n background: #f0b607;\n color: black;\n}\n\n.list .list-container ul li .fPermissions {\n margin-left: 35px;\n width: 50px;\n color: #727272;\n font-size: 11px;\n}\n\n.list .list-container ul li .fDate .date {\n color: #727272;\n font-size: 11px;\n}\n.list .list-container ul li .fTime {\n color: #727272;\n font-size: 11px;\n width: 54px;\n}\n\n.fSize {\n padding-right: 15px;\n text-align: right;\n width: 95px;\n}\n\n.list .list-container ul li .fOwner {\n color: #896417;\n font-style: italic;\n width: 50px;\n font-size: 12px;\n margin-right: 5px;\n}\n\n.value {\n color: $primary;\n}\n\n.unit {\n font-weight: bolder;\n color: #727272;\n}\n\nli.inactive {\n .marker {\n float: left;\n width: 4px;\n height: 34px;\n margin-right: 5px;\n background: rgb(163, 163, 163);\n }\n\n background: rgb(201, 199, 199);\n}\n\n.inactive-selected {\n background: rgb(220, 220, 220);\n}\n\n@media (max-width: 1320px) {\n .list .list-container ul li {\n .fName {\n width: 210px;\n }\n .fSize {\n width: 75px;\n }\n .fDate {\n width: 40px;\n }\n .fTime {\n width: 50px;\n }\n .fPermissions {\n margin: 0;\n }\n }\n}\n","$whiteBackground: #ececec;\n$primary: #2c54ac;\n$primaryLight: #d7dcef;\n$primaryActive: #1e5cb2;\n$secondary: #fcac04;\n$secondaryLight: #f8b014;\n$secondaryActive: #fdb51c;\n$hoverButtonText: #2c54ac;\n$activeButtonText: #fff;\n$textColor: #555;\n$danger: #b00e5b;\n$black: #000;\n$white: #fff;\n",".list {\n width: 50%;\n height: 100vh;\n flex: 1 1 50%;\n\n .list-container {\n margin-top: 10px;\n height: calc(100% - 100px);\n overflow: auto;\n\n ul {\n margin-top: 5px;\n padding: 0;\n color: #3a3a3a;\n \n li {\n display: block;\n height: 34px;\n line-height: 30px;\n font-size: 15px;\n margin-top: 2px;\n list-style: none;\n\n span {\n font-size: 13px;\n }\n \n &:hover{\n background: #DEDEDE;\n }\n }\n \n li.active {\n background: #FFDC5A;\n\n .marker {\n float: left;\n width: 4px;\n height: 34px;\n margin-right: 5px;\n background: #79641a;\n }\n }\n \n li.selected {\n background: #fdfdbb;\n }\n }\n }\n}\n\n@media screen and (max-width: 1200px){\n .permissions, .owner {\n display: none;\n }\n}",".progress.upload {\n position: fixed;\n left: 0px;\n top: 0px;\n z-index: 9999;\n height: 5px;\n position: fixed;\n width: 100%;\n margin: 0;\n display: inline-table;\n background: transparent;\n\n .progress-bar {\n height: 5px;\n }\n}\n","@import 'src/utils/scss/variables';\n\ndiv.modal {\n z-index: 2;\n}\n\ndiv.content .modal .modal-content {\n width: 75%;\n\n .modal-header button.close {\n color: white;\n }\n\n .modal-footer {\n .btn-primary {\n background: $primary;\n border: 1px solid $primary;\n }\n }\n}\n","@import 'src/utils/scss/variables';\n\n.menu-wrapper {\n position: fixed;\n width: 100%;\n font-size: 15px;\n background: white;\n\n .menu-stat {\n display: flex;\n flex-direction: row;\n margin-top: 50px;\n min-height: 45px;\n max-height: 135px;\n height: 145px;\n width: 100%;\n padding: 0 13%;\n \n > div {\n border-bottom: 3px solid white;\n overflow: hidden;\n width: 14.3%;\n\n h3, div {\n width: 100%;\n }\n\n h3 {\n font-weight: bold;\n font-size: 14px;\n text-transform: uppercase;\n margin-bottom: 30px;\n }\n \n div {\n display: flex;\n justify-content: space-between;\n font-size: 12px;\n color: #a0a0a0;\n text-align: left;\n\n > span:nth-child(1) {\n width: 120px;\n }\n\n > span:nth-child(2) {\n width: 80px;\n padding-left: 10px;\n }\n }\n }\n\n .stat {\n a, button {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n color: black;\n text-decoration: none;\n text-align: left;\n }\n\n button {\n background: none;\n border: none;\n padding: 0;\n }\n\n h3 {\n font-size: 14px;\n }\n\n &:hover {\n cursor: pointer;\n border-bottom: 3px solid $secondaryLight;\n \n h3 {\n color: $secondary;\n }\n\n .stats {\n overflow: hidden;\n }\n }\n\n &:active {\n border-color: $secondaryActive;\n\n h3 {\n color: $secondary;\n }\n }\n\n .stats {\n display: flex;\n flex-direction: column;\n padding-left: 0;\n }\n }\n\n .l-active {\n border-bottom: 3px solid $primary;\n\n h3 {\n color: $primary;\n font-size: 18px;\n margin-bottom: 25px;\n }\n }\n\n .stat.focus {\n border-bottom: 3px solid $secondaryLight !important;\n \n a, h3 {\n color: $secondaryLight !important;\n }\n }\n }\n}\n\n.menu-wrapper.shadow {\n box-shadow: rgba(200, 200, 200, 0.5);\n}\n\n@media (max-width: 1350px) {\n .menu-wrapper .menu-stat {\n padding: 0 10%;\n }\n}\n\n@media screen and (max-width: 1200px) {\n .menu-wrapper {\n padding: 0 10%;\n\n .menu-stat {\n padding: 0;\n }\n }\n}\n\n@media screen and (max-width: 1066px) {\n .menu-wrapper {\n .menu-stat {\n padding: 0 10%;\n margin-top: 40px;\n }\n }\n}\n\n@media screen and (max-width: 1024px) {\n .menu-wrapper {\n .menu-stat {\n padding: 0 10%;\n }\n }\n}\n\n@media (max-width: 1066px) {\n .menu-wrapper {\n padding: 1%;\n\n .menu-stat {\n height: auto;\n min-height: auto;\n\n .stat {\n h3 {\n padding: 0;\n }\n }\n }\n }\n}\n","@import 'src/utils/scss/variables';\n\nhtml {\n overflow-y: scroll;\n}\n\n.App {\n font-size: 25px;\n font-family: Arial;\n}\n\n.window {\n background: #ececec;\n height: 100vh;\n width: 100%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n\n .lists-container {\n display: flex;\n flex-direction: row;\n }\n}\n\n.active {\n background: #fff;\n}\n\n.progress {\n height: 10px;\n transition: all ease-out 0.1s;\n}\n\n.Toastify__toast-body {\n font-size: 20px;\n word-break: break-word;\n}\n.Toastify__toast-container {\n top: 15em;\n}\n\n.actions {\n div {\n a.link-download:hover, button.link-download:hover,\n a.link-edit:hover, button.link-edit:hover {\n background: $primary !important;\n }\n \n a.link-list:hover,\n button.link-list:hover {\n background: $primary !important;\n }\n\n a.link-delete:hover,\n button.link-delete:hover {\n background: $danger !important;\n }\n\n a.link-gray:hover,\n button.link-gray:hover {\n background: #afafac !important;\n }\n\n button {\n text-transform: inherit;\n font-weight: bolder;\n background: #dfdedd;\n border: none;\n }\n }\n}\n\n@media screen and (max-width: 700px) {\n .actions {\n background: unset !important;\n flex-wrap: wrap;\n justify-content: flex-end !important;\n\n div {\n height: 30px !important;\n\n a,button {\n background: #dfdedd !important;\n padding: 0px 10px !important;\n height: 100% !important;\n font-size: 10px !important;\n }\n }\n }\n}\n\nbutton:active, a:active, .period:active {\n color: $primaryActive;\n}\n\n.list-item:first-child {\n margin-top: 5px;\n}\n\n.list-item .text-status {\n display: none;\n}\n\nbutton {\n &:hover, &:active, &:focus {\n outline: none;\n }\n}\n\n.fixed-buttons.fm {\n position: fixed;\n right: 15px;\n bottom: 15px;\n display: flex;\n justify-content: space-around;\n align-items: center;\n\n > div {\n width: 40px;\n height: 40px;\n padding: 5px;\n margin: 5px;\n border-radius: 50%;\n background: #c3c3c3;\n display: flex;\n justify-content: center;\n align-items: center;\n \n &:hover {\n color: $hoverButtonText;\n background: $primaryLight;\n }\n \n &:active {\n color: $activeButtonText;\n background: $primaryActive;\n }\n \n button {\n display: flex;\n justify-content: center;\n align-items: center;\n background: none;\n border: none;\n width: 100%;\n height: 100%;\n border-radius: 50%;\n transform: scale(1.32);\n \n svg {\n color: white;\n height: 70%;\n }\n }\n }\n\n > div:first-child {\n background: $primary;\n\n &:hover {\n color: $hoverButtonText;\n background: $primaryLight;\n\n button svg {\n color: $hoverButtonText;\n }\n }\n\n &:active {\n color: $activeButtonText;\n background: $primaryActive;\n\n button svg {\n color: $activeButtonText;\n }\n }\n\n button {\n padding: 0;\n\n svg {\n color: $activeButtonText;\n }\n }\n }\n}\n\n@media (min-width: 1067px) {\n .App div.content {\n padding-top: 0 !important;\n margin-top: -20px !important;\n }\n}\n\n@media (max-width: 1066px) {\n .App div.content {\n padding-top: 0 !important;\n margin-top: -20px !important;\n }\n\n .content > div {\n .l-col {\n margin-top: 2rem;\n padding-left: 5px;\n }\n\n .r-col {\n margin-top: 1rem;\n .name {\n margin-top: 2rem;\n }\n\n .stats {\n flex-wrap: wrap;\n\n > div {\n margin: 1rem 0 !important;\n padding: 0 !important;\n width: 100% !important;\n }\n }\n }\n }\n\n .content .servers-list .servers-wrapper .l-col {\n display: flex;\n align-items: center;\n height: 55px;\n margin-top: .75rem;\n\n .checkbox {\n margin: 0px;\n }\n }\n}\n\n@media (max-width: 900px) {\n .App div.content {\n padding-top: 77px !important;\n margin-top: 0 !important;\n }\n\n .content > div {\n .l-col {\n padding-left: 5px;\n }\n\n .r-col {\n padding-left: 2rem;\n }\n }\n}\n\n@media (max-width: 725px) {\n .content {\n .r-col {\n padding-left: 3.5rem;\n }\n }\n}\n",".editor {\n width: 100%;\n\n .panel-editor {\n display: flex;\n justify-content: flex-end;\n width: 100%;\n height: 40px;\n position: absolute;\n padding: 3px;\n margin: 0;\n background: #000000bf;\n z-index: 4;\n transition: 0.5s all ease-in-out;\n border-bottom: 1px solid black;\n border-radius: 0;\n\n button {\n font-size: 17px;\n height: 98%;\n margin: 0 0 0 30px;\n padding: 0 10px;\n\n &:focus {\n outline: none;\n box-shadow: none;\n }\n }\n }\n\n .close {\n z-index: 4;\n position: absolute;\n top: 5px;\n right: 5px;\n font-size: 40px;\n opacity: 1;\n color: #000;\n\n &:hover {\n color: rgb(139, 139, 139);\n }\n }\n\n .CodeMirror {\n height: 100vh;\n padding-top: 4vh;\n\n .CodeMirror-selected {\n background:#ACCEF7;\n }\n\n .CodeMirror-scroll {\n font-size: 14px;\n }\n }\n\n .save {\n font-size: 20px;\n left: 95%;\n bottom: 10px;\n position: absolute;\n }\n}",".carousel {\n width: 100%;\n position: relative;\n\n a {\n width: 5%;\n }\n\n .carousel-inner {\n .carousel-item {\n background: #000;\n width: 100%;\n height: 100vh;\n \n .gif {\n height: 50%;\n width: 50%;\n }\n\n .img {\n width: 90%;\n }\n }\n }\n\n .carousel-indicators {\n .indicator {\n margin: 0 15px;\n width: 80px;\n height: 80px;\n\n .control-photo {\n width: 100px;\n height: 80px;\n }\n \n &:hover {\n cursor: pointer;\n }\n\n &.active > img {\n border: 3px solid #3cc3f0;\n }\n\n .active {\n border: 3px solid #3cc3f0;\n }\n }\n }\n}\n\nspan.close {\n z-index: 10;\n font-size: 30px;\n position: absolute;\n top: 5px;\n right: 10px;\n opacity: 1;\n color: white;\n cursor: pointer;\n\n &:hover {\n color: white;\n }\n}",".video-preview {\n padding-bottom: 17px;\n width: 100%;\n background: #000;\n \n .close {\n z-index: 1;\n font-size: 30px;\n position: absolute;\n top: 5px;\n right: 2px;\n opacity: 1;\n color: #fff;\n\n &:hover {\n color: #000;\n }\n }\n\n .video {\n width: 100%;\n height: auto;\n\n &:focus {\n outline: none;\n }\n }\n}",".l-col {\n padding-left: 15px;\n}\n\n.r-col {\n font-size: 13px;\n}\n\n.w-14 {\n width: 14.3%;\n}\n\n.w-20 {\n width: 20%;\n}\n\n.w-25 {\n width: 25%;\n}\n\n.w-30 {\n width: 30%;\n}\n\n.w-35 {\n width: 35%;\n}\n\n.w-40 {\n width: 40%;\n}\n\n.w-45 {\n width: 45%;\n}\n\n.w-50 {\n width: 50%;\n}\n\n.w-60 {\n width: 60%;\n}\n\n.w-85 {\n width: 85%;\n}","@import 'src/utils/scss/variables';\n\n$optionalButtonHover: $primary;\n$optionalButtonActive: $primaryLight;\n$deleteButtonColorHover: #b00e5b;\n$deleteButtonColorActive: #b11661;\n$backButtonBackground: #DFDEDD;\n$backButtonBackgroundHover: #999;\n$transition: all 200ms cubic-bezier(0.4, 0.1, 0.5, 0.85);\n$errorColor: #BE5ABF;\n\n.content .edit-template {\n padding-bottom: 2rem;\n\n .toolbar {\n justify-content: unset;\n \n > div {\n width: 14.3%;\n display: flex;\n align-items: center;\n }\n \n div.error,\n div.success {\n width: fit-content !important;\n \n span {\n font-weight: bold;\n font-size: 14px;\n \n svg {\n font-size: 13px;\n margin-right: 10px;\n }\n }\n \n span.error-message {\n color: $errorColor;\n \n svg {\n margin-right: 7px;\n font-size: 13px;\n color: $errorColor;\n }\n }\n \n span.ok-message {\n color: $primary;\n \n svg {\n color: $primary;\n }\n }\n }\n \n .search-toolbar-name {\n width: auto !important;\n padding: 10px 0;\n margin-left: 0;\n margin-right: 10px;\n }\n }\n}\n\n.hide {\n display: none;\n}\n\n.show {\n display: flex;\n}\n\n.edit-item,\n.login-layout {\n display: flex;\n font-size: 15px;\n margin-top: 3rem;\n margin-bottom: 1rem;\n\n .l-col {\n margin-right: 1.75%;\n }\n\n form {\n button,\n a {\n color:$primary;\n font-weight: bold;\n \n &:hover {\n color: $secondaryLight;\n }\n \n &:active {\n color: $secondaryActive;\n }\n }\n\n button.optional {\n &:hover {\n color: $optionalButtonHover;\n }\n\n &:active {\n color: $optionalButtonActive;\n }\n }\n\n button.delete {\n &:hover {\n color: $deleteButtonColorHover;\n }\n\n &:active {\n color: $deleteButtonColorActive;\n }\n }\n\n .form-group {\n input[type=text],\n input[type=password],\n input[type=email],\n textarea,\n select {\n width: 50%;\n }\n }\n\n @media screen and (max-width: 900px) {\n .form-group {\n input[type=text],\n input[type=password],\n input[type=email],\n textarea,\n select {\n width: 100%;\n }\n }\n }\n\n width: 100%;\n\n .form-group select,\n .form-group textarea {\n border-radius: 0;\n\n &:hover {\n border-color: #909090;\n }\n\n &:focus,\n &:active {\n outline: none;\n border-color: $primaryActive;\n box-shadow: unset;\n }\n }\n\n input:-webkit-autofill,\n input:-webkit-autofill:hover,\n input:-webkit-autofill:focus,\n input:-webkit-autofill:active {\n background: $primaryLight;\n border-color: $primaryActive;\n filter: none;\n box-shadow: none;\n }\n\n input:autofill,\n input:autofill:hover,\n input:autofill:focus,\n input:autofill:active {\n background: $primaryLight;\n border-color: $primaryActive;\n filter: none;\n box-shadow: none;\n }\n\n button {\n background: unset;\n border: none;\n box-shadow: unset;\n \n &:focus,\n &:active {\n outline: none;\n }\n }\n \n input {\n height: calc(1.5em + 0.75rem + 6px);\n border-radius: 0;\n\n &:hover {\n border-color: #909090;\n }\n\n &:focus,\n &:active {\n box-shadow: unset;\n border-color: $primaryActive;\n background: #d7dcef9e;\n }\n }\n \n label {\n color: $textColor;\n font-weight: bold;\n }\n \n label.label-wrapper {\n display: flex;\n align-items: flex-end;\n width: fit-content;\n\n span {\n font-weight: normal;\n text-transform: uppercase;\n margin-left: 5px;\n font-size: 12px;\n }\n }\n\n .checkbox-wrapper {\n display: flex;\n align-items: center;\n\n label {\n margin: 0 12px;\n }\n }\n\n input {\n color: $textColor;\n }\n\n .buttons-wrapper {\n margin-top: 2.5rem;\n\n button {\n font-weight: bold;\n font-size: 13px;\n margin-right: 10px;\n padding: .35rem 2.25rem;\n border-radius: 4px;\n transition: $transition;\n }\n\n .add {\n color: $activeButtonText;\n background: $primary;\n\n &:hover {\n color: $hoverButtonText;\n background: $primaryLight;\n }\n \n &:active {\n color: $activeButtonText;\n background: $primaryActive;\n }\n }\n\n .back {\n color: #777;\n background: $backButtonBackground;\n\n &:hover {\n color: white;\n background: $backButtonBackgroundHover;\n }\n }\n }\n }\n\n .l-col {\n padding: 20px 0 0;\n\n .date,\n .time {\n margin: 10px 0 0;\n color: #777;\n font-size: 12px;\n letter-spacing: 1px;\n }\n\n .time {\n margin: 6px 0 10px;\n }\n\n .status {\n color: $primary;\n font-size: 11px;\n letter-spacing: 1px;\n text-transform: uppercase;\n font-weight: bold;\n }\n }\n}\n\n@media screen and (max-width: 1066px) {\n .form-group {\n input[type=text],\n input[type=password],\n input[type=email],\n textarea,\n select {\n width: 75%;\n }\n }\n}\n","@import 'src/utils/scss/variables';\n\n.toolbar {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n background: white;\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n z-index: 1;\n padding: 3px 13% 1px;\n border-top: 1px solid #e0e0e0;\n border-bottom: 1px solid #e0e0e0;\n\n .r-menu {\n display: flex;\n align-items: center;\n\n > div {\n display: flex;\n flex-wrap: unset;\n width: 100%;\n align-items: center;\n justify-content: flex-end;\n }\n\n a.button-extra,\n button.button-extra {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100%;\n justify-content: flex-start;\n padding: 5px 10px;\n background: none;\n border: none;\n text-decoration: none;\n color: rgb(129, 125, 125);\n font-size: 14px;\n display: flex;\n align-items: center;\n margin-right: 10px;\n border-radius: 3px;\n\n &:hover {\n background: $primaryLight;\n color: $hoverButtonText;\n }\n\n &:active {\n background: $primaryActive;\n color: $activeButtonText;\n }\n }\n \n .input-group .input-group-prepend {\n height: 30px;\n margin-right: 15px;\n\n div, span {\n padding-left: 0;\n background: none;\n border: none;\n }\n\n label {\n margin-bottom: 0;\n }\n }\n\n #inputGroupSelect04 {\n height: 30px;\n padding-top: 2px;\n outline: none;\n\n &:focus {\n outline: none;\n box-shadow: none;\n }\n }\n\n select + div {\n &:focus {\n outline: none;\n }\n\n &:hover {\n background: #b3b8bd;\n }\n \n button {\n border-color: #ced4da;\n }\n }\n\n .input-group-append {\n height: 30px;\n\n button {\n padding-top: 3px;\n }\n }\n\n .btn:focus, button:focus, .button:focus {\n outline: none;\n box-shadow: none;\n border-color: none;\n }\n\n .btn.btn-sm {\n height: 30px;\n margin-left: 15px;\n\n &:hover {\n color: #212529;\n background-color: white;\n border-color: none ;\n }\n\n &:active {\n background: white;\n }\n \n div {\n padding-top: 3px;\n }\n }\n\n .btn-group.show .btn-outline-secondary {\n background-color: white;\n color: #212529;\n\n &:hover {\n background-color: white;\n }\n }\n }\n}\n\n.toolbar.justify-right {\n justify-content: flex-end;\n\n .r-menu > div > * {\n margin: 0 10px;\n }\n}\n\n.toolbar.t-shadow {\n box-shadow: rgba(200, 200, 200, 0.5) 0px 5px 3px 0px;\n}\n\n@media (max-width: 1390px) {\n .toolbar {\n padding: 3px 10% 1px;\n }\n}\n\n@media (max-width: 1250px) {\n .toolbar {\n .r-menu {\n a.button-extra,\n button.button-extra {\n max-width: 30%;\n }\n }\n }\n}\n\n@media (max-width: 900px) {\n .toolbar {\n .r-menu {\n overflow: scroll;\n\n a.button-extra,\n button.button-extra {\n overflow: unset;\n max-width: 100%;\n }\n\n > div {\n margin-left: 3rem;\n position: relative;\n display: flex;\n flex-wrap: unset;\n width: 100%;\n align-items: center;\n justify-content: flex-start;\n }\n\n .select-wrapper + div {\n display: none;\n }\n }\n }\n}\n\n@media (max-width: 450px) {\n .toolbar {\n padding: 3px 1% 1px;\n }\n}\n\n@media (max-width: 450px) {\n .mobile-toolbar .toolbar {\n display: flex;\n flex-direction: column-reverse;\n padding-bottom: 5px;\n height: 100%;\n \n .r-menu {\n height: 50%;\n margin-top: 15px;\n\n .input-group {\n > div:nth-child(1) {\n width: 100%;\n display: flex;\n justify-content: center;\n margin: 15px 0;\n }\n\n select {\n margin-left: 100px;\n }\n\n select + div {\n margin-right: 85px;\n }\n\n > .btn-group {\n width: 60%;\n margin-left: 75px;\n margin-top: 15px;\n }\n }\n }\n\n .l-menu {\n display: flex;\n flex-direction: column-reverse;\n justify-content: flex-end;\n align-items: center;\n transform: none;\n height: 50%;\n margin-top: 40px;\n\n button {\n width: 30px;\n height: 30px;\n\n svg {\n width: 17px;\n height: 30px;\n }\n }\n }\n }\n}",".edit-ip {\n form {\n .dedicated-form-group {\n transform: translateX(3rem);\n margin-bottom: 2rem;\n }\n }\n}","div.edit-item {\n form {\n label.label-wrapper {\n align-items: center;\n\n span {\n text-transform: lowercase;\n }\n }\n\n div.assigned-user {\n padding-left: 25px;\n\n select {\n width: 48.4%;\n }\n }\n }\n}","$secondaryLight: #f8b014;\n\n.content .edit-template.edit-nginx {\n .toolbar {\n .search-toolbar-name {\n width: fit-content;\n }\n\n .link {\n width: fit-content;\n margin-left: 15px;\n\n a {\n text-decoration: none;\n font-size: 12px;\n text-transform: uppercase;\n color: rgb(119, 119, 119);\n font-weight: 700;\n\n &:hover {\n color: $secondaryLight;\n }\n }\n }\n }\n\n textarea {\n width: 75%;\n }\n\n .checkbox-wrapper label {\n text-transform: capitalize;\n }\n\n svg {\n margin-left: 5px;\n }\n}",".content .edit-template.edit-pgsql {\n .toolbar {\n .search-toolbar-name {\n width: fit-content;\n }\n }\n\n textarea {\n width: 75%;\n }\n\n .checkbox-wrapper label {\n text-transform: capitalize;\n }\n}",".statistic-item {\n display: flex;\n flex: 1 1 auto;\n padding: 25px 0;\n border-bottom: 1px solid #eee;\n\n .l-col {\n padding-left: 0;\n flex-basis: 14.3%;\n }\n\n .r-col {\n flex-basis: 85.7%;\n\n .stats {\n align-items: center;\n\n .name {\n font-size: 24px;\n color: #111;\n }\n\n .exclusion-items {\n flex-basis: 83.4%;\n }\n\n > div {\n flex: unset;\n flex-basis: 16.6%;\n }\n }\n }\n}\n",".btn-group button {\n border: 0;\n\n > span {\n display: inline-block;\n vertical-align: bottom;\n margin-left: 5px;\n height: 100%;\n width: auto;\n }\n\n &::after {\n display: none;\n }\n}\n\n.dropdown-menu {\n padding: 0;\n border-radius: 0;\n font-size: 13px;\n width: 200px;\n\n ul {\n padding: 0;\n margin: 0;\n display: inline-block;\n list-style: none;\n height: auto;\n width: 100%;\n color: #333;\n\n li {\n display: flex;\n width: 100%;\n height: 37.5px;\n border-top: 1px solid #dbdbdb;\n\n .arrow-down {\n float: right;\n }\n\n .dropdown-item {\n &:hover {\n background: #bdbdbd;\n }\n }\n\n > span:nth-child(1) {\n width: 75%;\n padding: 0 5px;\n }\n\n > span:nth-child(2) {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 25%;\n }\n\n span {\n padding: 0 5px 0 10px;\n line-height: 38px;\n }\n\n span.active{\n background: #ffc900;\n }\n\n span + span {\n text-align: center;\n }\n }\n\n li:nth-child(1) {\n border-width: 0 0 1px 0;\n }\n }\n}",".search-input-form {\n display: flex;\n width: 180px;\n\n input {\n height: 30px;\n margin-left: 10px;\n border-radius: 0;\n }\n\n button {\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 0;\n border: 1px groove #ffffff;\n height: 30px;\n }\n}","@import 'src/utils/scss/variables';\n\n.list-item {\n display: flex;\n justify-content: flex-start;\n align-items: flex-start;\n padding-left: 15px;\n font-size: 18px;\n position: relative;\n padding: 25px 0;\n border-left: 2px solid white;\n border-bottom: 1px solid #ddd;\n color: rgb(104, 104, 104);\n\n &:hover .l-col div.star div svg,\n &:hover .actions {\n opacity: 1;\n }\n\n .l-col {\n .suspended {\n letter-spacing: 3px;\n }\n \n .text-status {\n font-size: 10px;\n }\n\n div.star {\n display: flex;\n align-items: center;\n \n div.checkbox {\n margin: 0 25% 4px 0;\n }\n }\n }\n\n .r-col {\n .stats {\n div > span {\n width: 50%;\n text-align: left;\n }\n \n .c-2 div > span {\n width: 50%;\n }\n }\n\n div.bandwidth span,\n div.disk span {\n width: auto;\n }\n }\n\n .date {\n font-size: 13px;\n margin: 20px 0 10px;\n }\n}\n\n.list-item.toggled {\n background: #feef9a;\n}\n\n.list-item.starred {\n border-left: 2px solid $primary;\n\n .l-col div.star {\n div > svg {\n opacity: 1;\n color: $primary;\n }\n }\n}\n\n.list-item.suspended {\n background: #eaeaea;\n color: #c0c0c0;\n\n .r-col div, .r-col span {\n color: #c0c0c0 !important;\n }\n}\n\n.list-item.suspended.toggled {\n background: #f2eab8;\n color: #b2ac87;\n\n .l-col,\n .r-col .name,\n .r-col .stats {\n color: #b2ac87 !important;\n }\n}\n\n.list-item.outdated {\n background: #ffcaca;\n border-left: 5px solid #ff6f6f;\n}\n\n.list-item.toggled.outdated {\n background: #755d5d;\n color: black;\n\n .stat {\n color: black;\n }\n}\n\n.list-item.stopped {\n background: #eaeaea;\n}\n\n.list-item.focused {\n border-left: 2px solid $secondaryLight;\n\n .l-col div.star {\n div > svg {\n color: $secondaryLight;\n }\n }\n\n .actions {\n opacity: 1;\n\n div > a,\n div > button {\n padding-top: 6.5px;\n padding-bottom: 6.5px;\n\n .shortcut-button {\n border-radius: 50%;\n width: 25px;\n height: 25px;\n margin-left: 15px;\n background: $secondaryLight;\n color: white;\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: 14px;\n }\n\n .shortcut-button.html-unicode {\n align-items: flex-end;\n }\n\n .shortcut-button.del {\n text-transform: capitalize;\n font-size: 10px;\n }\n }\n }\n}",".internetProtocols {\n .ip-wrapper {\n .name svg {\n margin: 0 10px;\n font-size: 20px;\n }\n }\n}\n","@import 'src/utils/scss/variables';\n\n.l-menu {\n transform: translate(35px, 50%);\n\n a, button {\n display: flex;\n justify-content: center;\n align-items: center;\n background: $primary;\n border-radius: 100%;\n color: white;\n width: 45px;\n height: 43px;\n outline: none;\n border: none;\n text-decoration: none;\n\n &:hover {\n background: $primaryLight;\n\n span.add {\n display: block;\n color: $hoverButtonText;\n background: $primaryLight;\n }\n\n svg {\n color: $hoverButtonText;\n }\n }\n\n @media screen and (max-width: 900px) {\n span.add {\n display: none !important;\n }\n }\n\n &:active {\n background: $primary;\n\n span.add {\n display: block;\n color: $activeButtonText;\n background: $primary;\n }\n\n svg {\n color: $activeButtonText;\n }\n }\n\n span.add {\n width: max-content;\n display: none;\n padding: 4px 10px 4px 25px;\n background: $primary;\n border-radius: 15px;\n color: white;\n font-size: 15px;\n position: absolute;\n left: 25px;\n z-index: -1;\n text-align: right;\n }\n\n svg {\n width: 31px;\n height: 21px;\n }\n }\n\n @media screen and (max-width: 900px) {\n transform: unset;\n }\n}\n\n.l-menu.none {\n display: none;\n}\n\n.servers-list,\n.exclusions-list {\n .l-menu {\n &.backup-details-icon {\n transform: translateX(2px);\n }\n }\n}\n","$whiteBackground: #ececec;\n$primary: #2c54ac;\n$primaryLight: #d7dcef;\n$primaryActive: #1e5cb2;\n$secondary: #fcac04;\n$secondaryLight: #f8b014;\n$secondaryActive: #fdb51c;\n$hoverButtonText: #2c54ac;\n$activeButtonText: #fff;\n$textColor: #555;\n$danger: #b00e5b;\n$black: #000;\n$white: #fff;\n","input {\n border-radius: 0;\n}",".select-wrapper {\n display: flex;\n\n select {\n width: auto;\n }\n\n select, button {\n border-radius: 0;\n }\n}",".edit-web {\n .additional-ftp {\n .title .indexed-name {\n font-weight: bold;\n }\n }\n}",".additional-ftp {\n .title {\n span:nth-child(1) {\n color: #555;\n font-size: 15px;\n font-weight: bold;\n }\n }\n\n .form-transform {\n margin-top: 15px;\n transform: translateX(3rem);\n\n .form-group.username {\n display: flex;\n flex-direction: column;\n \n label {\n margin: 0;\n }\n \n span {\n font-size: 10pt;\n color: #777;\n font-weight: bold;\n margin-bottom: 10px;\n }\n\n .input-wrapper {\n display: flex;\n align-items: center;\n\n span {\n color: #777;\n font-size: 15px;\n font-style: italic;\n font-weight: normal;\n margin-left: 15px;\n }\n }\n }\n }\n\n .path-note {\n font-weight: bold;\n color: #555;\n }\n}","@import 'src/utils/scss/variables';\n\n.edit-web {\n .ssl-support {\n .additional-info {\n display: flex;\n flex-direction: column;\n\n span {\n &:nth-child(1) {\n width: 120px;\n display: inline-block;\n }\n\n &:nth-child(2) {\n width: fit-content;\n }\n }\n }\n\n a.generate-csr {\n text-transform: initial;\n text-decoration: none;\n color: $primary;\n font-weight: bold;\n\n &:hover {\n color: $secondaryLight;\n }\n }\n }\n}",".edit-item form {\n div.name-server-input-wrapper {\n display: flex;\n align-items: center;\n margin: 10px 0;\n\n button {\n margin-left: 10px;\n }\n}\n\n.exp-date .optional {\n font-size: 12px;\n padding: 0 0 0 6px;\n font-weight: normal;\n}\n}",".add-web {\n form {\n .form-group {\n .checkbox-wrapper {\n display: flex;\n align-items: center;\n\n label {\n margin: 0 10px;\n };\n }\n }\n\n .advanced-options-button {\n button {\n display: flex;\n align-items: center; \n padding: 0; \n\n svg {\n margin-left: 10px;\n }\n }\n }\n }\n\n #c-panel-modal {\n padding: 2rem;\n\n form .form-group input[type=\"text\"] {\n width: 90% !important;\n }\n\n label {\n color: white;\n }\n\n .form-group {\n padding-left: 1.5rem;\n\n textarea {\n width: 90% !important;\n }\n }\n\n .l-col {\n display: none;\n }\n }\n}",".form-group.text-on-the-right {\n .input-wrapper {\n display: flex;\n align-items: center;\n\n span {\n margin-left: 15px;\n color: #777;\n }\n }\n}",".input-wrapper {\n display: flex;\n align-items: center;\n\n span.italic {\n margin-left: 15px;\n color: #777;\n }\n}",".edit-firewall {\n form {\n .form-group {\n .label-wrapper {\n span {\n text-transform: initial;\n }\n }\n }\n }\n}","$secondary: #fcac04;\n\n.hotkeys-list {\n position: fixed;\n bottom: 0;\n right: 0;\n display: flex;\n flex-direction: column;\n transform: translateX(-45%);\n width: 53%;\n background: #222e44de;\n font-size: 13px;\n\n .head {\n display: flex;\n justify-content: space-between;\n align-items: center;\n border-bottom: 1px solid $secondary;\n\n .name {\n text-transform: uppercase;\n padding: 5px 0 5px 10px;\n font-size: 12px;\n font-weight: bold;\n color: $secondary;\n letter-spacing: 2px;\n padding: 15px;\n }\n\n .close {\n padding: 12px;\n opacity: 1 !important;\n\n svg {\n color: $secondary;\n }\n\n &:hover {\n cursor: pointer;\n background: #222e44;\n }\n }\n }\n\n .body {\n display: flex;\n\n ul {\n padding: 25px 10px;\n margin: 0;\n width: 50%;\n list-style: none;\n margin-left: 3rem;\n\n li {\n padding: 5px;\n\n span.name {\n margin-right: 15px;\n color: $secondary;\n font-weight: bold;\n }\n \n span.description {\n color: white;\n }\n }\n\n li.space-top {\n padding-top: 30px;\n }\n }\n }\n}\n\n.hide {\n display: none;\n}",".edit-template.add-db {\n form {\n span.italic {\n font-style: italic;\n }\n\n .form-group {\n .label-wrapper {\n display: flex;\n\n span.italic {\n margin-left: 1.5rem;\n color: #555;\n }\n }\n\n .input-wrapper {\n display: flex;\n align-items: center;\n\n span.italic {\n font-size: 15px;\n font-weight: bold;\n margin-left: 1.5rem;\n color: #777;\n }\n }\n\n .input-wrapper {\n span.italic {\n font-weight: normal;\n }\n }\n }\n\n .form-group.database {\n margin-top: 1rem;\n }\n\n span.prefix {\n color: #777;\n font-style: italic;\n }\n }\n}",".content .edit-template.add-firewall {\n .toolbar .search-toolbar-name {\n width: fit-content;\n }\n\n label.label-wrapper[for=ip] span {\n text-transform: unset !important;\n }\n}",".cron-form-body {\n .third-tab-selects,\n .fourth-tab-selects {\n display: flex; \n\n div.hour {\n select {\n width: 70px;\n margin-left: 4.8rem;\n }\n }\n\n div.minute {\n label {\n margin: 0;\n }\n\n select {\n margin: 0;\n }\n }\n }\n\n .fifth-tab-selects {\n display: flex;\n\n > div {\n width: 10%;\n\n select {\n width: 70px;\n }\n }\n\n > div.date {\n margin: 0 0 1rem 0;\n }\n\n > div.minute {\n width: 200px;\n }\n\n > div.hour {\n width: 155px;\n margin-left: 1rem;\n\n select {\n margin-left: .75rem;\n }\n }\n\n > div.date {\n width: 240px;\n\n select {\n margin-left: 5.85rem;\n }\n }\n }\n}","@import 'src/utils/scss/variables';\n\n.cron-job-generator {\n border: 1px solid #d9d9d9;\n padding: 1rem 1.5rem;\n margin-left: 2rem;\n width: 90%;\n\n .header {\n display: flex;\n padding: .4rem 0;\n\n a {\n color: #222222;\n text-transform: uppercase;\n font-size: 11px;\n font-weight: bolder;\n margin-right: 2.3rem;\n text-decoration: none;\n\n &:hover {\n color: $secondaryLight;\n }\n\n &:active {\n color: $primaryActive;\n }\n }\n\n a.active {\n color: $secondaryActive;\n }\n }\n\n .body {\n padding: 2rem 0 .4rem;\n\n form {\n\n .form-group {\n display: flex;\n align-items: center;\n\n label {\n width: 26%;\n font-size: 13px;\n margin: 0;\n }\n\n input {\n width: auto;\n }\n }\n\n .form-group.minute select {\n width: 70px;\n }\n\n .form-group select,\n .form-group textarea {\n border-radius: 0;\n \n &:hover {\n border-color: #909090;\n }\n \n &:focus,\n &:active {\n outline: none;\n border-color: $primaryActive;\n box-shadow: unset;\n }\n }\n\n .form-group select {\n padding: .4rem .25rem;\n border-color: #d9d9d9;\n color: #555;\n }\n\n .form-actions { \n button {\n background: $primary;\n color: white;\n border-radius: 3px;\n padding: .35rem 1.1rem;\n font-size: 14px;\n \n &:hover {\n color: $hoverButtonText;\n background: $primaryLight;\n }\n \n &:active {\n color: $activeButtonText;\n background: $primaryActive;\n }\n }\n }\n\n .form-group.show {\n display: block;\n }\n \n .form-group.hide {\n display: none;\n }\n }\n }\n}",".edit-cron {\n form {\n .form-group {\n width: 100%;\n \n input {\n width: inherit;\n }\n }\n \n .form-group.command {\n width: 100%;\n }\n \n .cron-form-body {\n display: flex;\n \n .body-col-1 {\n width: 30%;\n\n input {\n width: 100%;\n }\n }\n \n .body-col-2 {\n display: flex;\n justify-content: flex-start;\n align-items: flex-start;\n padding: 1.7rem 1rem;\n width: 70%;\n }\n }\n }\n}\n\n#edit-cron > .form-group input {\n width: 95% !important;\n}",".edit-package {\n form {\n .form-group {\n .input-wrapper {\n display: flex;\n align-items: center;\n\n button {\n transform: translateX(5px);\n }\n }\n }\n }\n}","$secondary: #fcac04;\n$secondaryLight: #f8b014;\n\n.content .edit-template.edit-httpd {\n .toolbar {\n .search-toolbar-name {\n width: fit-content;\n\n a {\n color: $secondary;\n text-decoration: none;\n\n &:hover {\n color: rgb(119, 119, 119);\n }\n }\n }\n\n .link {\n width: fit-content;\n margin-left: 15px;\n\n a {\n text-decoration: none;\n font-size: 12px;\n text-transform: uppercase;\n color: rgb(119, 119, 119);\n font-weight: 700;\n\n &:hover {\n color: $secondaryLight;\n }\n }\n }\n }\n\n textarea {\n width: 75%;\n }\n\n .checkbox-wrapper label {\n text-transform: capitalize;\n }\n\n svg {\n margin-left: 5px;\n }\n}",".edit-template.add-cron {\n form {\n .form-group {\n width: 100%;\n\n input {\n width: inherit;\n }\n }\n\n .form-group.command {\n width: 100%;\n }\n\n .cron-form-body {\n display: flex;\n\n .body-col-1 {\n width: 30%;\n }\n\n .body-col-2 {\n display: flex;\n justify-content: flex-start;\n align-items: flex-start;\n padding: 1.7rem 1rem;\n width: 70%;\n }\n }\n }\n}",".edit-template.add-package {\n form {\n label.label-wrapper {\n display: flex;\n align-items: flex-end;\n width: fit-content;\n\n span {\n font-weight: normal;\n text-transform: uppercase;\n margin-left: 5px;\n font-size: 12px;\n }\n\n span.lowercase {\n text-transform: lowercase;\n }\n }\n\n .input-wrapper {\n display: flex;\n align-items: center;\n\n svg {\n cursor: pointer;\n color: #bec4ca;\n margin-left: 10px;\n\n &:hover {\n color: #abb1b6;\n }\n }\n }\n }\n}","@import 'src/utils/scss/variables';\n\n.edit-server {\n .modules {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n\n > div {\n display: flex;\n align-items: center;\n width: 100%;\n margin: 5px 0;\n }\n\n > button {\n margin: 15px 0;\n\n svg {\n margin-left: 10px;\n }\n }\n\n .form-group {\n a {\n text-decoration: none;\n color: $primary;\n font-weight: bold;\n font-size: 14px;\n\n &:hover {\n color: $primaryLight;\n }\n }\n }\n\n .additional-info {\n margin-top: 10px;\n transform: translateX(3rem);\n\n > div {\n display: flex;\n margin: 5px 0;\n\n span {\n font-size: 12px;\n color: #555;\n }\n\n span:nth-child(1) {\n width: 180px;\n }\n }\n }\n\n .server-web-option,\n .server-dns-option,\n .server-ssl-option,\n .server-mail-option {\n transform: translateX(3rem);\n }\n\n .server-mail-option {\n transform: translateX(3rem);\n\n .mail-cert-info {\n transform: translateX(3rem);\n }\n }\n\n .server-mail-option {\n .hosts {\n transform: translateX(3rem);\n }\n }\n\n .server-ssl-option {\n transform: translateX(3rem);\n\n .domain-group {\n transform: translateX(3rem);\n }\n }\n\n .server-plugins-option {\n transform: translateX(3rem);\n\n .sftp-module,\n .soft-module,\n .fm-module {\n transform: translateX(3rem);\n }\n\n .sftp-module,\n .fm-module {\n font-size: 15px;\n color: $textColor;\n }\n\n .buy-license {\n display: flex;\n margin: 5px 0;\n\n a {\n color: #FFF;\n background: $primary;\n border: none;\n border-radius: 3px;\n font-size: 13px;\n font-weight: bold;\n padding: 7px 15px;\n text-transform: capitalize;\n text-decoration: none;\n width: fit-content;\n margin-right: 10px;\n\n &:hover {\n color: $hoverButtonText;\n background: $primaryLight;\n }\n\n &:hover {\n color: $activeButtonText;\n background: $primaryActive;\n }\n }\n\n + span {\n display: block;\n margin-top: 15px;\n font-style: italic;\n font-size: 12px;\n }\n }\n\n .license-description {\n display: flex;\n align-items: center;\n margin: 1rem 0;\n\n > span {\n color: $primary;\n }\n\n .form-group {\n margin: 0 0 0 20px;\n width: 60%;\n\n label {\n display: none;\n }\n }\n }\n }\n }\n}","@import 'src/utils/scss/variables';\n\n.mail-info-block {\n .select-group {\n select {\n margin-bottom: 10px;\n margin-top: 5px;\n padding: 0;\n border: none;\n color: $primary;\n text-transform: uppercase;\n font-size: 11px;\n font-weight: bold;\n cursor: pointer;\n }\n\n .details {\n font-size: 14px;\n color: #777;\n\n > div {\n display: flex;\n\n span:nth-child(1) {\n width: 50%;\n }\n }\n }\n }\n}",".content .edit-template.edit-service {\n .toolbar {\n .search-toolbar-name {\n width: fit-content;\n }\n }\n\n textarea {\n width: 75%;\n }\n\n .checkbox-wrapper label {\n text-transform: capitalize;\n }\n}",".content .edit-template.add-mail-account {\n .search-toolbar-name {\n width: fit-content;\n }\n\n form {\n .r-1 {\n display: flex;\n\n .c-1 {\n width: 55%;\n\n .form-group {\n > * {\n width: 85%;\n }\n\n .password-wrapper {\n input {\n width: 100%;\n }\n }\n }\n\n .form-group:nth-child(3) {\n > div {\n display: flex;\n\n input {\n width: 100%;\n }\n\n input + button {\n padding-left: 10px;\n }\n }\n }\n }\n\n .c-2 {\n width: 45%;\n height: 100%;\n border: 1px solid #d9d9d9;\n padding: 0px 5px 12px 20px;\n }\n }\n\n .r-2 {\n > button {\n padding-left: 0;\n margin-bottom: 1.5rem;\n\n svg {\n margin-left: .75rem;\n }\n }\n\n .form-group .input-wrapper {\n display: flex;\n }\n }\n }\n}",".edit-dns {\n .label-wrapper {\n span {\n text-transform: uppercase !important;\n }\n }\n}",".edit-web {\n .web-stat-additional {\n transform: translateX(3rem);\n }\n\n #c-panel-modal {\n padding: 2rem;\n\n form .form-group input[type=\"text\"] {\n width: 90% !important;\n }\n\n label {\n color: white;\n }\n\n .form-group {\n padding-left: 1.5rem;\n\n textarea {\n width: 90% !important;\n }\n }\n\n .l-col {\n display: none;\n }\n }\n}","$secondary: #fcac04;\n$secondaryLight: #f8b014;\n$textColor: #555;\n\n.content .edit-template.edit-php {\n .toolbar {\n .search-toolbar-name {\n width: fit-content;\n color: $textColor;\n }\n \n .search-toolbar-name,\n .link {\n width: fit-content;\n\n a {\n text-decoration: none;\n font-size: 12px;\n text-transform: uppercase;\n color: $textColor;\n font-weight: 700;\n\n &:hover {\n color: $secondaryLight;\n }\n }\n }\n\n .link {\n margin-left: 15px;\n\n a {\n color: $secondary;\n\n &:hover {\n color: $textColor;\n }\n }\n }\n }\n\n textarea {\n width: 75%;\n }\n\n .checkbox-wrapper label {\n text-transform: capitalize;\n }\n\n svg {\n margin-left: 5px;\n }\n}",".r-menu {\n > div {\n > button {\n font-size: 13px;\n background: white;\n border-color: white;\n color: gray;\n\n &:hover {\n background: white;\n border-color: white;\n color: gray;\n }\n }\n }\n}",".firewalls .list-item {\n .l-col .date {\n display: none;\n }\n\n .r-col .stats {\n margin-top: 15px;\n\n .cron-col {\n div span {\n font-weight: unset;\n font-size: 13px;\n }\n\n div span.stat {\n font-weight: bold;\n }\n }\n }\n}",".firewalls-wrapper .r-col .stats > div {\n flex: none;\n width: 17%;\n}",".content .edit-template.edit-bind9 {\n .toolbar {\n .search-toolbar-name {\n width: fit-content;\n }\n }\n\n textarea {\n width: 75%;\n }\n\n .checkbox-wrapper label {\n text-transform: capitalize;\n }\n}",".content .edit-template.edit-mysql {\n .toolbar {\n .search-toolbar-name {\n width: fit-content;\n }\n }\n\n textarea {\n width: 75%;\n }\n\n .checkbox-wrapper label {\n text-transform: capitalize;\n }\n\n svg {\n margin-left: 5px;\n }\n}",".add-dns form .advanced-options-button {\n svg {\n margin-left: 5px;\n }\n}","@import 'src/utils/scss/variables';\n\n.backups-restore-settings {\n .list-item {\n .r-col {\n .stats {\n .c-1 {\n margin: 12px 0 0;\n }\n }\n }\n\n .actions {\n > div {\n font-weight: bolder;\n text-transform: uppercase;\n height: 38px;\n \n a, button {\n display: flex;\n justify-content: center;\n align-items: center;\n color: $textColor;\n padding: 10px 15px;\n text-decoration: none;\n \n &:hover {\n background: $whiteBackground;\n color: white;\n \n svg {\n color: white;\n }\n }\n }\n \n svg {\n color: $textColor;\n }\n }\n\n .link-restore {\n svg {\n color: white;\n }\n\n &:hover {\n color: $hoverButtonText;\n background-color: $primaryLight;\n }\n \n &:hover {\n color: $activeButtonText;\n background-color: $primaryActive;\n }\n }\n }\n }\n}\n",".backups-restore-settings {\n .toolbar {\n .backup-details-icon {\n svg {\n transform: translateX(2px);\n }\n }\n }\n\n .mail-accounts-wrapper {\n .list-item {\n .l-col {\n .star {\n .checkbox + div {\n display: none;\n }\n }\n }\n }\n }\n}\n",".backups-wrapper .list-item .c-1 div > span {\n padding-left: 15px;\n}\n\n.backups-restore-details .list-item .star {\n display: none;\n}",".cron-jobs-list.r-col .name {\n font-size: 25px;\n}\n\n.cron-col > div {\n display: flex;\n flex-direction: column;\n\n span {\n font-size: 18px;\n font-weight: bolder;\n }\n}","@import 'src/utils/scss/variables';\n\n.r-menu {\n > div {\n > button {\n font-size: 13px;\n background: white;\n border-color: white;\n color: $textColor;\n\n &:hover {\n background: white;\n border-color: white;\n color: $textColor;\n }\n }\n }\n}\n\n.cron-wrapper {\n .r-col .stats > div {\n flex: none;\n width: 17%;\n }\n\n .actions {\n > div:nth-child(1) a:hover,\n > div:nth-child(1) button:hover {\n background: $primaryLight;\n }\n\n > div:nth-child(2) a:hover,\n > div:nth-child(2) button:hover {\n background: #ff3438;\n }\n }\n}",".packages {\n .r-col {\n .stats {\n .c-2 {\n padding-left: 2rem;\n\n div > span {\n width: 50%;\n }\n }\n\n .c-3 {\n margin-left: 0;\n\n div.ns {\n margin-top: 5px;\n }\n }\n }\n }\n}",".packages-wrapper {\n .r-col .stats {\n .c-1 .stat {\n margin-left: 1rem;\n }\n\n .c-2 {\n padding: 0;\n }\n }\n}","@import 'src/utils/scss/variables';\n\n.password-wrapper {\n display: flex;\n\n button {\n color: $primary;\n\n &:hover {\n color: $secondaryLight;\n }\n }\n\n span.eye {\n margin-left: 9px;\n }\n\n span.eye-slash {\n margin-left: 7px;\n }\n}\n\nbutton.generate-password {\n color:$primary;\n font-weight: bold;\n\n &:hover {\n color: $secondaryLight;\n }\n\n &:active {\n color: $secondaryActive;\n }\n}\n\ninput {\n color: $textColor;\n}\n\nlabel[for=email] {\n width: 100%;\n display: flex;\n align-items: center;\n\n > div {\n display: flex;\n align-items: center;\n\n input {\n height: fit-content;\n margin: 0 10px;\n }\n\n label {\n margin: 0;\n font-size: 12px;\n }\n }\n}",".statistics-list.updates {\n .text-status {\n display: flex;\n margin-top: 20px;\n\n > div.checkbox {\n margin-bottom: 0;\n margin-right: 10px;\n }\n }\n\n .list-item .star {\n display: none;\n }\n\n .r-col .c-1 {\n margin-right: 10px;\n }\n}",".statistics-list.updates .toolbar {\n height: 44px;\n}",".servers-list {\n .servers-wrapper .list-item.sys-info {\n .r-col {\n padding: 0;\n\n .name {\n font-size: 35px;\n }\n\n .c-2 span > span.stat {\n margin-left: 10px;\n }\n\n .c-3 {\n padding-right: 0;\n\n > div > span {\n width: 100%;\n }\n }\n }\n }\n\n .actions a.link-gray.restart svg,\n .actions button.link-gray.restart svg {\n width: 1rem;\n height: 1rem;\n }\n}",".servers-list .list-item .star {\n display: none;\n}\n\n.servers-list .r-col .stats .c-2 {\n padding: 0;\n}\n\n.servers-wrapper .list-item .r-col .stats .c-3 {\n padding: 0;\n\n span.stat {\n margin-left: 0;\n }\n}\n\n.servers-wrapper .l-col {\n display: flex;\n align-items: center;\n height: 55px;\n\n .checkbox {\n margin: 0px;\n }\n}\n\n.servers-wrapper .r-col {\n padding-left: 2rem;\n\n .server-name {\n color: black;\n font-size: 28px;\n }\n}\n\n.servers-wrapper .list-item .r-col {\n .c-3 > div > span {\n transform: translateX(-10px);\n }\n\n .stats div > span {\n width: 100%;\n }\n}\n",".servers-list .l-col {\n .text-status {\n display: block;\n }\n\n div.star {\n display: none;\n }\n\n .servers-wrapper {\n .list-item:first-child {\n margin-top: 0;\n }\n\n .l-col {\n width: 16.3%;\n\n .server-name {\n font-size: 28px;\n }\n }\n }\n}","@import 'src/utils/scss/variables';\n@import 'src/utils/scss/breakpoints';\n\n.mobile-top-nav-wrapper.hide {\n opacity: 0;\n}\n\n.mobile-top-nav-wrapper.show {\n z-index: 5;\n opacity: 1;\n position: fixed;\n width: 100%;\n height: 111px;\n background: white;\n display: flex;\n flex-direction: column;\n animation: showMobileNav forwards .3s;\n margin-top: 82px;\n\n .mobile-menu {\n padding: 0 10%;\n flex-wrap: wrap;\n margin-top: 15px;\n }\n\n > div .top-link {\n display: flex;\n font-size: 14px;\n padding: 4px 0;\n\n &:hover {\n background: $secondaryLight;\n \n a, button {\n color: $white;\n }\n }\n }\n\n div {\n display: flex;\n \n a, button {\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 0 10px !important;\n width: fit-content;\n height: 100%;\n text-decoration: none;\n color: $black;\n }\n\n button {\n background: none;\n border: none;\n }\n\n &:hover {\n cursor: pointer;\n }\n }\n\n div.active {\n background: white;\n \n a, button {\n color: $secondary;\n font-weight: bold;\n\n &:hover {\n color: white;\n }\n\n &:active {\n background: $secondaryActive;\n color: white;\n }\n }\n\n &:hover {\n color: white;\n background: $secondaryLight;\n }\n }\n\n .toolbar {\n margin: 0;\n position: relative;\n border: none;\n }\n\n\n .mobile-stat-menu {\n box-shadow: 0 5px 3px 0 hsla(0,0%,78.4%,.5);\n\n .menu-wrapper {\n position: relative;\n height: auto;\n min-height: auto;\n padding: 0;\n margin-top: 9px;\n\n .menu-stat {\n margin: 0;\n\n .stat {\n text-align: left;\n flex: 1 1 auto;\n margin-bottom: 15px;\n }\n }\n }\n }\n}\n\n@media (max-width: 1066px) {\n .mobile-stat-menu .menu-wrapper .menu-stat {\n margin-top: 40px;\n\n .stat {\n .stats {\n display: none;\n }\n }\n }\n}\n\n@media (max-width: 900px) {\n .mobile-toolbar .toolbar {\n padding: 0 1%;\n }\n}\n\n@media (max-width: 725px) {\n .mobile-top-nav-wrapper.show {\n .menu-stat {\n display: flex;\n flex-wrap: wrap;\n }\n }\n\n .mobile-menu {\n padding: 0 10%;\n }\n}\n\n@keyframes showMobileNav {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n","$whiteBackground: #ececec;\n$primary: #2c54ac;\n$primaryLight: #d7dcef;\n$primaryActive: #1e5cb2;\n$secondary: #fcac04;\n$secondaryLight: #f8b014;\n$secondaryActive: #fdb51c;\n$hoverButtonText: #2c54ac;\n$activeButtonText: #fff;\n$notifications: #e49d45;\n$notificationsLight: #de9234;\n$notificationsActive: #6f4e2b;\n$textColor: #555;\n\n.top-panel .profile-menu {\n div {\n width: auto;\n height: auto;\n }\n\n button {\n cursor: default;\n background: none;\n box-shadow: unset;\n width: 100%;\n height: 100%;\n\n &:hover {\n background: none;\n }\n\n &:active, &:focus {\n outline: none;\n border: unset;\n background: unset;\n background-color: unset;\n border-color: unset;\n }\n }\n\n .btn-danger:not(:disabled):not(.disabled).active,\n .btn-danger:not(:disabled):not(.disabled):active,\n .show>.btn-danger.dropdown-toggle {\n background-color: unset;\n border-color: unset;\n box-shadow: unset;\n }\n\n .dropdown-menu {\n display: none;\n height: auto;\n max-height: 75vh;\n overflow: auto;\n cursor: default;\n background: #222e44;\n border: 1px solid #fcac04;\n border-width: 1px 0 0 0;\n box-shadow: rgb(34, 46, 68) 0px 0px 10px -1px;\n\n > div {\n cursor: default;\n }\n }\n \n .dropdown-menu.show {\n display: flex;\n flex-direction: column;\n width: auto;\n width: 340px;\n margin: 0;\n\n .dropdown-item {\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n padding-left: 0;\n padding-right: 5px;\n\n span.title {\n display: block;\n width: 100%;\n padding: 10px 0 0 10px;\n text-align: left;\n color: $secondary;\n }\n\n span.delete-notification {\n width: 10px;\n height: 10px;\n background: $secondary;\n border-radius: 50%;\n cursor: pointer;\n\n &:hover {\n border: 2px solid $secondaryLight;\n background: transparent;\n }\n }\n\n &:hover {\n background: none;\n }\n }\n\n .dropdown-item + div {\n text-align: left;\n width: 100%;\n padding: 0 10px 20px 10px;\n color: #ABABAB;\n\n a {\n display: contents;\n color: $notifications;\n\n &:hover {\n color: $notificationsLight;\n }\n }\n }\n\n .dropdown-divider {\n margin: 0;\n border-color: #555;\n width: 100%;\n\n &:last-child {\n display: none;\n }\n }\n }\n}","@import 'src/utils/scss/variables';\n@import 'src/utils/scss/breakpoints';\n\n.top-panel.small-device {\n display: none;\n}\n\n.top-panel {\n display: flex;\n flex-direction: row;\n font-size: 12px;\n position: fixed;\n width: 100%;\n text-align: center;\n color: white;\n background: #222e44;\n height: 34px;\n align-items: center;\n justify-content: space-between;\n padding: 0 13%;\n z-index: 2;\n\n .container {\n display: flex;\n flex-direction: row;\n width: 80%;\n height: 100%;\n\n .logo div {\n img {\n width: 82%;\n }\n\n &:hover {\n background-color: transparent;\n }\n }\n\n div {\n display: flex;\n justify-content: center;\n align-items: center;\n \n a, button {\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 0 10px !important;\n width: fit-content;\n height: 100%;\n text-decoration: none;\n color: white;\n }\n\n button {\n background: none;\n border: none;\n }\n\n &:hover {\n cursor: pointer;\n }\n }\n\n div.active {\n background: white;\n \n a, button {\n color: $secondary;\n font-weight: bold;\n\n &:hover {\n color: white;\n }\n\n &:active {\n background: $secondaryActive;\n color: white;\n }\n }\n\n &:hover {\n background: $secondaryLight;\n }\n }\n }\n\n .left-menu {\n width: 75%;\n margin: 0;\n padding: 0;\n justify-content: space-between;\n\n div.top-link,\n div.nav-link {\n flex: 1 1 auto;\n height: 100%;\n transform: translateX(-5px);\n\n &:hover {\n background: $secondaryLight;\n }\n }\n\n div.logo {\n width: 7rem;\n padding-left: 0;\n\n a {\n div {\n padding: 0;\n width: 6rem;\n flex: none;\n\n img {\n width: 90%;\n }\n }\n }\n\n &:hover {\n background: transparent;\n }\n }\n\n div.fm {\n width: 10rem;\n }\n\n .top-link.focus {\n a, button {\n color: $secondaryActive;\n }\n }\n }\n\n .profile-menu {\n width: 25%;\n margin: 0;\n padding: 0;\n justify-content: flex-end;\n\n div {\n height: 100%;\n }\n\n div.bell {\n width: auto;\n color: $secondary;\n padding: 3px 0;\n\n svg {\n border-radius: 30px;\n width: 40px;\n height: 30px;\n padding: 3px;\n\n &:hover {\n background: #79522294;\n }\n\n &:active {\n background: #866032;\n }\n }\n }\n\n .edit-user a {\n color: #a4abad;\n font-weight: 700;\n \n &:hover {\n color: $secondaryLight;\n }\n\n &:active {\n color: $secondaryActive;\n }\n }\n\n .logout-button a,\n .logout-button button {\n color: white;\n cursor: pointer;\n font-weight: 100;\n\n &:hover {\n color: $secondaryLight;\n }\n\n &:active {\n color: $secondaryActive;\n }\n }\n }\n}\n\n.top-panel.long-profile {\n .left-menu {\n justify-content: start;\n\n > div {\n width: fit-content;\n flex: unset;\n padding: 0 1rem;\n }\n\n .logo {\n width: 7rem;\n padding: 0;\n margin-right: 1rem;\n }\n }\n\n .profile-menu {\n align-items: center;\n\n > .edit-user {\n width: fit-content;\n }\n\n .long-username {\n display: flex;\n justify-content: center;\n align-items: center;\n width: auto;\n\n > span:nth-child(1) {\n margin-right: 5px;\n }\n\n > span:nth-child(3) {\n margin-left: 5px;\n }\n }\n }\n}\n\n@media screen and (max-width: 1350px) {\n .top-panel {\n padding: 0 10%;\n }\n}\n\n@media screen and (max-width: $desktopMin) {\n .top-panel {\n padding: 0 8%;\n }\n}\n\n@media (max-width: 900px) {\n .top-panel {\n display: none;\n }\n\n .top-panel.small-device {\n display: flex;\n justify-content: space-between;\n padding: 0 10%;\n\n > .container {\n align-items: center;\n width: auto;\n }\n\n .hamburger {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n\n .bar {\n height: 2px;\n margin: 2px;\n width: 20px;\n background: white;\n }\n }\n }\n}\n\n@media (max-width: $phoneMax) {\n .top-panel.small-device {\n padding: 0;\n }\n\n .top-panel .left-menu div.logo {\n width: unset;\n\n a div {\n width: 5rem;\n }\n }\n}\n",".main-nav {\n width: 100%;\n height: 249px;\n\n .nav-wrapper {\n position: fixed;\n width: 100%;\n animation: toggleNav .75s forwards;\n z-index: 1;\n }\n}\n\n// Small Devices\n@media (max-width: 900px) {\n .main-nav {\n height: 0;\n }\n\n @keyframes toggleNav {\n from {\n transform: translateY(-150px);\n }\n \n to {\n transform: translateY(50px);\n }\n }\n}","@import 'src/utils/scss/variables';\n\n.mail-accounts {\n div.subtitle {\n color: $primary;\n font-size: 12px;\n margin: 30px 0 18px 14.3%;\n text-transform: uppercase;\n font-weight: bold;\n }\n\n .mail-accounts-wrapper {\n > div:nth-child(2) {\n border-top: 1px solid #ddd;\n }\n\n div.list-item {\n .r-col {\n .stat.email {\n width: fit-content;\n text-transform: none;\n }\n }\n }\n }\n\n .footer-actions-wrapper {\n display: flex;\n align-items: center;\n margin-top: 2rem;\n padding-bottom: 1.5rem;\n\n .total {\n margin: 0 3.5rem 0 14.3%;\n }\n\n .back {\n a {\n padding: 8px 38px;\n color: #777;\n background: #DFDEDD;\n border: 1px solid #DFDEDD;\n border-radius: 3px;\n font-size: 13px;\n font-weight: bold;\n }\n }\n }\n}",".crossed {\n text-decoration: line-through;\n}\n\n.catchall-mail {\n text-transform: none;\n}\n","@import 'src/utils/scss/variables';\n\n.dns-records {\n div.subtitle {\n color: $primary;\n font-size: 12px;\n margin: 30px 0 18px 14.3%;\n text-transform: uppercase;\n font-weight: bold;\n }\n\n .dns-records-wrapper {\n > div:nth-child(2) {\n border-top: 1px solid #ddd;\n }\n\n div.list-item {\n .r-col {\n .stats {\n > div {\n flex: unset;\n }\n\n .c-1 {\n width: 14.3%;\n }\n\n .c-2 {\n margin-left: 10px;\n width: 14.3%;\n }\n\n .c-3 {\n margin-left: 0;\n width: 14.3%;\n\n span {\n color: #888;\n font-weight: normal;\n }\n }\n\n .c-4 {\n width: 550px;\n\n .stat {\n display: block;\n white-space: normal;\n overflow: hidden;\n width: 100%;\n text-overflow: ellipsis;\n }\n }\n }\n }\n }\n }\n\n .footer-actions-wrapper {\n display: flex;\n align-items: center;\n margin-top: 2rem;\n padding-bottom: 1.5rem;\n\n .total {\n margin: 0 3.5rem 0 14.3%;\n }\n\n .back {\n a {\n padding: 8px 38px;\n color: #777;\n background: #DFDEDD;\n border: 1px solid #DFDEDD;\n border-radius: 3px;\n font-size: 13px;\n font-weight: bold;\n }\n }\n }\n}","span.dns-records {\n padding-left: 25px;\n font-size: 18px;\n font-weight: normal;\n font-style: italic;\n color: gray;\n}\n\n.r-col {\n .stats {\n .c-2.w-30 {\n padding-left: 0;\n }\n }\n}",".statistic-item {\n display: flex;\n justify-content: center;\n padding: 25px 0;\n border-bottom: 1px solid #eee;\n\n .l-col {\n .date {\n font-size: 13px;\n margin-top: 3rem;\n }\n }\n\n .r-col {\n .name {\n font-size: 32px;\n }\n\n .c-1 {\n .bandwidth, .disk {\n width: 220px;\n }\n\n div.sub-disk-stats {\n width: 250px;\n }\n }\n\n .c-2 {\n margin-right: 0;\n\n div>span:nth-child(2) {\n margin: 0;\n padding: 0;\n }\n }\n\n .c-3.w-35 {\n span.stat {\n width: 80px;\n }\n\n \n div > span {\n width: 50%;\n text-align: left;\n }\n\n div>span:nth-child(2) {\n width: 100px;\n }\n }\n }\n}",".statistics-list {\n color: #686868;\n\n .toolbar {\n padding: 6px 13%;\n }\n\n .l-col {\n width: 14.3%;\n\n div.date {\n margin-top: 25px;\n }\n }\n}\n\n.total {\n margin-top: 25px;\n margin-left: 15%;\n font-size: 12px;\n color: #929292;\n}\n\n.statistic-item.focused {\n border-left: 2px solid #5edad0;\n transform: translateX(-2px);\n\n .r-col .date {\n color: #5edad0;\n }\n}\n\n@media (max-width: 1350px) {\n .statistics-list .toolbar {\n padding: 6px 9.5%;\n }\n}","@import 'src/utils/scss/variables';\n\n.checkbox {\n margin-bottom: 10px;\n}\n\n.date {\n margin: 10px 0;\n}\n\n.l-col div.star {\n text-align: center;\n\n div > svg {\n cursor: pointer;\n opacity: 0;\n color: gray;\n padding: 8px;\n width: 35px;\n height: 35px;\n border-radius: 50%;\n\n &:hover {\n background: #b4b4b478;\n color: $primary;\n }\n }\n}\n\nspan.stat.email{\n display: block;\n width: fit-content;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n\n.r-col {\n .name {\n font-size: 35px;\n margin-bottom: 5px;\n color: black;\n }\n \n > div:nth-child(2) {\n text-transform: capitalize;\n }\n\n .stats {\n display: flex;\n justify-content: flex-start;\n align-items: flex-start;\n\n .c-1, .c-2, .c-3 {\n width: 32%;\n\n > div {\n display: flex;\n margin: 5px 0;\n }\n\n .bandwidth,\n .disk {\n width: 200px;\n justify-content: space-between;\n margin-bottom: 25px;\n border-bottom: 1px dotted gray;\n position: relative;\n\n .percent {\n position: absolute;\n left: 0px;\n bottom: -1px;\n height: 2px;\n background: $primary;\n width: 0%;\n }\n }\n\n .sub-disk-stats {\n width: 250px;\n\n > div {\n width: 50%;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n font-size: 11px;\n\n span:nth-child(1) {\n width: 40px;\n }\n }\n\n > div:nth-child(2) {\n width: 70%;\n justify-content: flex-end;\n\n span:nth-child(1) {\n width: 80px;\n }\n }\n }\n }\n\n .c-1 {\n margin: 0;\n margin-top: 15px;\n }\n\n .c-2 {\n margin: 15px 20px;\n\n div {\n > span:nth-child(1) {\n width: 120px;\n }\n\n > span:nth-child(2) {\n width: 150px;\n padding-left: 15px;\n }\n }\n }\n\n .c-3 {\n div {\n > span:nth-child(1) {\n width: 120px;\n }\n\n > span:nth-child(2) {\n width: 200px; \n }\n }\n\n div.ns {\n margin-top: 20px;\n }\n }\n\n > div {\n margin: 15px 0;\n flex: 1 1 0;\n }\n\n .stat {\n font-weight: bold;\n color: #5f5f5f;\n }\n }\n}\n\n.actions {\n position: absolute;\n top: 0;\n right: 0;\n opacity: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: 12px;\n background: #dfdedd;\n\n > div {\n font-weight: bolder;\n text-transform: uppercase;\n height: 38px;\n\n a, button {\n display: flex;\n justify-content: center;\n align-items: center;\n color: #777;\n padding: 10px 15px;\n text-decoration: none;\n\n &:hover {\n background: rgb(145, 145, 145);\n color: white;\n\n svg {\n color: white;\n }\n }\n }\n\n svg {\n color: #777;\n }\n }\n\n > div:nth-child(2) a:hover {\n background: $primary;\n }\n\n > div:nth-child(4) a:hover {\n background: $danger;\n }\n\n svg {\n margin-left: 12px;\n }\n\n @media (max-width: 1066px) {\n opacity: 1;\n }\n\n @media (max-width: 850px) {\n > div {\n width: fit-content;\n\n a, button {\n width: 100%;\n }\n }\n }\n}\n\n.list-item.focused .r-col .name {\n color: $secondaryLight;\n}\n\n@media (max-width: 1066px) {\n div.star div > svg {\n opacity: 1 !important;\n }\n}\n",".content .Toastify__toast-container {\n bottom: 1em !important;\n top: unset;\n}",".timer-wrapper {\n display: flex;\n justify-content: center;\n align-items: center;\n\n button {\n border: none;\n background: none;\n\n &:active, &:focus {\n outline: none;\n }\n }\n\n .circle-wrapper {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 30px;\n height: 30px;\n\n span.seconds {\n &:hover, &:active {\n background: unset;\n }\n }\n\n svg {\n height: 30px;\n width: 30px;\n\n circle {\n stroke: black;\n fill: white;\n stroke-width: 3%;\n stroke-dasharray: 72;\n stroke-dashoffset: 9;\n transform-box: fill-box;\n transform-origin: center;\n transform: rotate(270deg);\n transition: all 1s linear;\n }\n }\n }\n}",".rrd-item {\n display: flex;\n justify-content: center;\n align-items: center;\n border-bottom: 1px solid #eee;\n position: relative;\n\n .l-col {\n .date {\n font-size: 13px;\n margin-top: 3rem;\n }\n\n .time {\n font-size: 13px;\n margin-top: 2rem;\n text-align: left;\n }\n }\n\n .r-col {\n .name {\n font-size: 32px;\n }\n\n .rrd-image {\n font-size: 20px;\n text-transform: lowercase;\n }\n }\n}\n\n.rrd-item.focused {\n border-left: 2px solid #5edad0;\n\n .l-col {\n padding-left: 11px;\n }\n\n div.actions {\n opacity: 1;\n }\n}","@import 'src/utils/scss/variables';\n\ndiv.content {\n margin-top: 0;\n}\n\n.rrd-list {\n color: $textColor;\n\n .toolbar {\n padding: 6px 13%;\n }\n\n .rrd-item {\n padding: 25px 0;\n align-items: flex-start;\n\n .actions {\n opacity: 0;\n }\n\n .l-col {\n display: flex;\n flex-direction: column;\n margin: 15px 40px 0 0;\n\n .date {\n margin: 0;\n }\n }\n\n &:hover {\n .actions {\n opacity: 1;\n }\n }\n }\n}\n\n.periods-wrapper {\n display: flex;\n align-items: center;\n\n > div:nth-child(1) {\n margin-left: 8px;\n }\n\n > div {\n cursor: pointer;\n margin: 0 15px;\n font-size: 14px;\n\n &:hover {\n color: $secondaryLight;\n }\n\n &:active {\n color: $primaryActive;\n }\n }\n\n .timer-wrapper {\n > button svg {\n\n &:hover {\n color: $secondaryLight;\n }\n\n &:active {\n color: $primaryActive;\n }\n }\n\n > div.circle-wrapper {\n cursor: default;\n }\n }\n\n > div.active {\n color: $secondaryActive;\n }\n}\n\n@media (max-width: 1350px) {\n .rrd-list .toolbar {\n padding: 6px 9.5%;\n }\n}\n",".App .service-info {\n @media screen and (max-width: 1066px) {\n .top-panel {\n display: flex;\n }\n }\n\n @media screen and (min-width: 1200px) {\n .top-panel {\n padding: 0 13%;\n }\n }\n\n .content {\n font-size: 14px;\n color: #555;\n padding-top: 4rem;\n\n @media screen and (min-width: 1067px) {\n padding-top: 5rem !important;\n margin-top: 0px !important;\n }\n\n @media screen and (max-width: 1066px) {\n padding-top: 5rem !important;\n margin-top: 0px !important;\n }\n\n table {\n td,th {\n padding: 5px 10px;\n border: 1px solid black;\n }\n }\n }\n}\n",".web-stats,\n.add-ftp {\n text-decoration: line-through;\n}\n\n.r-col {\n .stats {\n .c-2 {\n margin-left: 20px;\n }\n }\n}\n\n.r-col {\n .c-2 span.stat,\n .c-3 span.stat {\n margin-left: 1rem;\n }\n\n .name {\n display: flex;\n\n > div:nth-child(1) {\n margin-right: 2rem;\n }\n\n > div + div {\n line-height: 10px;\n margin-top: .75rem;\n }\n\n .dns-name-span {\n font-style: italic;\n color: #858585;\n font-size: 14px;\n }\n }\n}\n\ndiv.crossed {\n text-decoration: line-through;\n}","$secondary: #fcac04;\n\n.content {\n .toolbar {\n .search-toolbar-name {\n font-size: 12px;\n text-transform: uppercase;\n color: $secondary;\n font-weight: bold;\n margin-left: 14.3%;\n padding-left: 7px;\n align-self: center;\n }\n\n .search-toolbar-right {\n display: flex;\n justify-content: center;\n align-items: center;\n\n .btn-group {\n button {\n border: none;\n background: none;\n box-shadow: none;\n\n &:focus, &:active, &:hover {\n background: none;\n box-shadow: none;\n outline: none;\n border: none;\n color: #686868;\n }\n }\n }\n\n .search-input-form {\n padding-top: 2px;\n }\n }\n }\n\n .statistics-wrapper {\n > .list-item:first-child {\n margin-top: 0;\n }\n\n .list-item {\n .l-col {\n > .star {\n display: none;\n }\n }\n\n .r-col {\n div.object {\n text-transform: uppercase;\n }\n\n .c-2 .owner span,\n .c-3 .status span {\n text-align: center;\n font-weight: bold;\n text-transform: lowercase;\n }\n }\n }\n }\n}",".logs-list {\n .toolbar {\n padding: 6px 13%;\n }\n\n .statistic-item {\n .l-col {\n font-size: 13px;\n color: #888;\n \n .date {\n margin: 1rem 0;\n margin-bottom: 1.5rem;\n }\n }\n \n .r-col {\n .name {\n margin-top: .7rem;\n font-size: 18px;\n }\n }\n }\n\n .statistic-item.focused {\n border-left: 2px solid #5edad0;\n\n div.name {\n color: #5edad0;\n }\n }\n}\n\n@media (max-width: 1350px) {\n .logs-list .toolbar {\n padding: 6px 9.5%;\n }\n}",".logs-list .toolbar .search-input-form input {\n margin-bottom: 5px;\n}\n\n.logs-list .l-col {\n width: 14%;\n}","@import 'src/utils/scss/variables';\n\n.content {\n padding: 0 13%;\n padding-bottom: 1%;\n margin-top: 5px;\n\n > div > div.total {\n margin-top: 25px;\n margin-left: 14%;\n font-size: 12px;\n color: #929292;\n }\n}\n\n@media (max-width: 1350px) {\n .content {\n padding: 0 10%;\n }\n}\n\n@media (max-width: 1066px) {\n .content {\n padding: 5% 10%;\n }\n}\n\n@media (max-width: 900px) {\n .content {\n margin-top: 40px;\n }\n}\n\n@media (max-width: 800px) {\n .content {\n padding-top: 5%;\n }\n}\n\n.fixed-buttons {\n position: fixed;\n right: 15px;\n bottom: 15px;\n display: flex;\n justify-content: space-around;\n align-items: center;\n\n > div {\n width: 40px;\n height: 40px;\n padding: 5px;\n margin: 5px;\n border-radius: 50%;\n background: #c3c3c3;\n display: flex;\n justify-content: center;\n align-items: center;\n \n &:hover {\n color: $hoverButtonText;\n background: $primaryLight;\n }\n \n &:active {\n color: $activeButtonText;\n background: $primaryActive;\n }\n \n button {\n display: flex;\n justify-content: center;\n align-items: center;\n background: none;\n border: none;\n width: 100%;\n height: 100%;\n border-radius: 50%;\n transform: scale(1.32);\n \n svg {\n color: white;\n height: 70%;\n }\n }\n }\n\n > div:first-child {\n color: #c3c3c3;\n background: none;\n\n &:hover {\n background: $primaryLight;\n\n button svg {\n color: $activeButtonText;\n }\n }\n\n &:active {\n color: $activeButtonText;\n background: $primaryActive;\n }\n\n button {\n padding: 0;\n\n svg {\n color: #c3c3c3;\n }\n }\n }\n}\n\n@media screen and (max-width: 1066px) {\n .fixed-buttons > div:first-child {\n display: none;\n }\n}\n\n@media screen and (max-width: 450px) {\n .content {\n padding: 5% 1%;\n }\n}\n","@import 'src/utils/scss/variables';\n\n.panel-wrapper {\n .logo-img {\n img {\n width: 82%;\n }\n\n &:hover {\n background-color: transparent;\n }\n }\n\n .nav-link {\n padding: 0;\n }\n\n .left-menu {\n justify-content: unset;\n\n .logo {\n width: fit-content;\n flex: unset;\n }\n\n .scrollbar-container {\n &:hover {\n background: none;\n }\n\n .nav-link {\n flex: unset;\n padding: 0 5px;\n }\n }\n\n a, button {\n padding: 0 !important;\n outline: none;\n }\n \n > div.nav-link {\n padding: 0;\n }\n }\n\n .profile-menu {\n > div:nth-child(1) a {\n &:hover {\n color: $secondaryLight;\n }\n\n &:active {\n color: $secondaryActive;\n }\n }\n\n > div:nth-child(2) a {\n &:hover {\n color: $secondaryActive;\n }\n\n &:active {\n color: $secondaryActive;\n }\n }\n\n .user {\n color: #a4abad;\n font-weight: 700;\n \n &:hover {\n color: $secondaryLight;\n }\n\n &:active {\n color: $secondaryActive;\n }\n }\n\n .log-out {\n color: white;\n cursor: pointer;\n font-weight: 100;\n\n &:hover {\n color: $primaryLight;\n }\n\n &:active {\n color: $secondaryActive;\n }\n }\n }\n}\n",".App .web-logs {\n .top-panel {\n .left-menu {\n .logo {\n justify-content: start;\n margin: 0;\n \n a {\n padding: 0 !important;\n }\n }\n }\n }\n\n .content {\n font-size: 14px;\n color: #555;\n padding-top: 4rem;\n\n @media screen and (min-width: 1067px) {\n padding-top: 5rem !important;\n margin-top: 0px !important;\n }\n\n @media screen and (max-width: 1066px) {\n padding-top: 5rem !important;\n margin-top: 0px !important;\n }\n }\n}\n",".login-layout {\n margin-top: 1rem;\n padding: 2rem 3rem;\n}","@import 'src/utils/scss/variables';\n@import 'src/utils/scss/breakpoints';\n\n.login-page {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100vh;\n background-color: #eee;\n\n .login-form-wrapper {\n background-color: #fff;\n box-shadow: 0 2px 6px rgba(100, 100, 100, 0.3);\n font-family: Arial,Helvetica,sans-serif;\n margin: 0;\n padding: 0;\n text-align: left;\n width: 575px;\n\n .login-layout {\n position: relative;\n\n > span {\n position: absolute;\n bottom: 0;\n right: 20px;\n font-size: 11px;\n \n a {\n color: #505050;\n }\n }\n }\n\n form {\n display: flex;\n position: relative;\n\n > div {\n input[type=\"text\"],\n input[type=\"password\"] {\n width: 100%;\n }\n }\n\n .c1 {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 35%;\n\n img {\n width: 110%;\n }\n }\n\n .c2 {\n width: 65%;\n margin-left: 3.5rem;\n\n .forgot-password {\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: .75px;\n text-decoration: none;\n }\n\n button[type=\"submit\"] {\n background-color: $primary;\n border: 1px solid $primary;\n padding: 1px 16px 3px;\n font-size: 13px;\n height: 35px;\n color: #fafafa;\n border-radius: 3px;\n\n &:hover {\n color: $primary;\n border: 1px solid $primaryLight;\n background-color: $primaryLight;\n }\n\n &:active {\n color: #fafafa;\n border: 1px solid $primary;\n background-color: $primary;\n }\n\n .disabled {\n cursor: not-allowed;\n }\n }\n\n div.error-message {\n margin-top: 1rem;\n color: #BE5ABF;\n }\n }\n }\n }\n\n @media (max-width: $tabletMax) {\n .login-form-wrapper {\n margin: 2rem;\n\n .login-layout {\n form {\n flex-direction: column;\n justify-content: center;\n align-items: center;\n\n .c1 {\n width: 100%;\n margin-bottom: 1.5rem;\n\n a {\n text-align: center;\n\n img {\n width: 75%;\n }\n }\n }\n\n .c2 {\n margin: 0;\n width: 100%;\n }\n\n .buttons-wrapper {\n .add {\n margin-bottom: 10px;\n }\n }\n }\n }\n }\n }\n}\n"]} \ No newline at end of file diff --git a/web/static/index.html b/web/static/index.html index e9aeb2bef..427a1a185 100644 --- a/web/static/index.html +++ b/web/static/index.html @@ -1 +1 @@ -Vesta
    \ No newline at end of file +Vesta
    \ No newline at end of file diff --git a/web/static/js/2.01285f6b.chunk.js b/web/static/js/2.01285f6b.chunk.js deleted file mode 100644 index 85dbf6f7b..000000000 --- a/web/static/js/2.01285f6b.chunk.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! For license information please see 2.01285f6b.chunk.js.LICENSE.txt */ -(this["webpackJsonpreact-control-panel"]=this["webpackJsonpreact-control-panel"]||[]).push([[2],[function(e,t,n){"use strict";e.exports=n(96)},function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var r=n(15);function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0;r--){var i=t[r](e);if(i)return i}return function(t,r){throw new Error("Invalid value of type "+typeof e+" for "+n+" argument when connecting component "+r.wrappedComponentName+".")}}function F(e,t){return e===t}function z(e){var t=void 0===e?{}:e,n=t.connectHOC,r=void 0===n?S:n,i=t.mapStateToPropsFactories,o=void 0===i?L:i,a=t.mapDispatchToPropsFactories,s=void 0===a?D:a,l=t.mergePropsFactories,u=void 0===l?P:l,c=t.selectorFactory,p=void 0===c?R:c;return function(e,t,n,i){void 0===i&&(i={});var a=i,l=a.pure,c=void 0===l||l,h=a.areStatesEqual,m=void 0===h?F:h,g=a.areOwnPropsEqual,v=void 0===g?T:g,y=a.areStatePropsEqual,b=void 0===y?T:y,w=a.areMergedPropsEqual,x=void 0===w?T:w,_=Object(d.a)(a,["pure","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","areMergedPropsEqual"]),k=q(e,o,"mapStateToProps"),S=q(t,s,"mapDispatchToProps"),E=q(n,u,"mergeProps");return r(p,Object(f.a)({methodName:"connect",getDisplayName:function(e){return"Connect("+e+")"},shouldHandleStateChanges:Boolean(e),initMapStateToProps:k,initMapDispatchToProps:S,initMergeProps:E,pure:c,areStatesEqual:m,areOwnPropsEqual:v,areStatePropsEqual:b,areMergedPropsEqual:x},_))}}var B=z();function H(){return Object(r.useContext)(o)}function U(e){void 0===e&&(e=o);var t=e===o?H:function(){return Object(r.useContext)(e)};return function(){return t().store}}var W=U();function V(e){void 0===e&&(e=o);var t=e===o?W:U(e);return function(){return t().dispatch}}var $=V(),Y=function(e,t){return e===t};function G(e){void 0===e&&(e=o);var t=e===o?H:function(){return Object(r.useContext)(e)};return function(e,n){void 0===n&&(n=Y);var i=t(),o=function(e,t,n,i){var o,a=Object(r.useReducer)((function(e){return e+1}),0)[1],s=Object(r.useMemo)((function(){return new u(n,i)}),[n,i]),l=Object(r.useRef)(),c=Object(r.useRef)(),f=Object(r.useRef)(),d=Object(r.useRef)(),p=n.getState();try{o=e!==c.current||p!==f.current||l.current?e(p):d.current}catch(h){throw l.current&&(h.message+="\nThe error may be correlated with this previous error:\n"+l.current.stack+"\n\n"),h}return g((function(){c.current=e,f.current=p,d.current=o,l.current=void 0})),g((function(){function e(){try{var e=c.current(n.getState());if(t(e,d.current))return;d.current=e}catch(h){l.current=h}a()}return s.onStateChange=e,s.trySubscribe(),e(),function(){return s.tryUnsubscribe()}}),[n,s]),o}(e,n,i.store,i.subscription);return Object(r.useDebugValue)(o),o}}var K,X=G(),Q=n(31);K=Q.unstable_batchedUpdates,a=K},function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(34);function i(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"!==typeof Symbol&&Symbol.iterator in Object(e)){var n=[],r=!0,i=!1,o=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(l){i=!0,o=l}finally{try{r||null==s.return||s.return()}finally{if(i)throw o}}return n}}(e,t)||Object(r.a)(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}},function(e,t,n){"use strict";n.d(t,"a",(function(){return y}));var r=n(42),i=n(7),o=n.n(i),a=n(0),s=n.n(a);function l(e){return(l="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function u(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function c(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function d(e){return function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t0||!Array.isArray(t)&&t?u({},e,t):{}}function y(e){var t=e.icon,n=e.mask,i=e.symbol,o=e.className,a=e.title,s=g(t),l=v("classes",[].concat(d(function(e){var t,n=e.spin,r=e.pulse,i=e.fixedWidth,o=e.inverse,a=e.border,s=e.listItem,l=e.flip,c=e.size,f=e.rotation,d=e.pull,p=(u(t={"fa-spin":n,"fa-pulse":r,"fa-fw":i,"fa-inverse":o,"fa-border":a,"fa-li":s,"fa-flip-horizontal":"horizontal"===l||"both"===l,"fa-flip-vertical":"vertical"===l||"both"===l},"fa-".concat(c),"undefined"!==typeof c&&null!==c),u(t,"fa-rotate-".concat(f),"undefined"!==typeof f&&null!==f),u(t,"fa-pull-".concat(d),"undefined"!==typeof d&&null!==d),u(t,"fa-swap-opacity",e.swapOpacity),t);return Object.keys(p).map((function(e){return p[e]?e:null})).filter((function(e){return e}))}(e)),d(o.split(" ")))),f=v("transform","string"===typeof e.transform?r.c.transform(e.transform):e.transform),p=v("mask",g(n)),h=Object(r.a)(s,c({},l,f,p,{symbol:i,title:a}));if(!h)return function(){var e;!m&&console&&"function"===typeof console.error&&(e=console).error.apply(e,arguments)}("Could not find icon",s),null;var w=h.abstract,x={};return Object.keys(e).forEach((function(t){y.defaultProps.hasOwnProperty(t)||(x[t]=e[t])})),b(w[0],x)}y.displayName="FontAwesomeIcon",y.propTypes={border:o.a.bool,className:o.a.string,mask:o.a.oneOfType([o.a.object,o.a.array,o.a.string]),fixedWidth:o.a.bool,inverse:o.a.bool,flip:o.a.oneOf(["horizontal","vertical","both"]),icon:o.a.oneOfType([o.a.object,o.a.array,o.a.string]),listItem:o.a.bool,pull:o.a.oneOf(["right","left"]),pulse:o.a.bool,rotation:o.a.oneOf([90,180,270]),size:o.a.oneOf(["lg","xs","sm","1x","2x","3x","4x","5x","6x","7x","8x","9x","10x"]),spin:o.a.bool,symbol:o.a.oneOfType([o.a.bool,o.a.string]),title:o.a.string,transform:o.a.oneOfType([o.a.string,o.a.object]),swapOpacity:o.a.bool},y.defaultProps={border:!1,className:"",mask:null,fixedWidth:!1,inverse:!1,flip:null,icon:null,listItem:!1,pull:null,pulse:!1,rotation:null,size:null,spin:!1,symbol:!1,title:"",transform:null,swapOpacity:!1};var b=function e(t,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if("string"===typeof n)return n;var i=(n.children||[]).map((function(n){return e(t,n)})),o=Object.keys(n.attributes||{}).reduce((function(e,t){var r=n.attributes[t];switch(t){case"class":e.attrs.className=r,delete n.attributes.class;break;case"style":e.attrs.style=h(r);break;default:0===t.indexOf("aria-")||0===t.indexOf("data-")?e.attrs[t.toLowerCase()]=r:e.attrs[p(t)]=r}return e}),{attrs:{}}),a=r.style,s=void 0===a?{}:a,l=f(r,["style"]);return o.attrs.style=c({},o.attrs.style,s),t.apply(void 0,[n.tag,c({},o.attrs,l)].concat(d(i)))}.bind(null,s.a.createElement)},function(e,t,n){"use strict";n.d(t,"a",(function(){return f})),n.d(t,"b",(function(){return v}));var r=n(16),i=n(25),o=n(0),a=n.n(o),s=n(27),l=(n(7),n(14)),u=n(18),c=n(26),f=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),i=0;i=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n},B=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==typeof t&&"function"!==typeof t?e:t},H=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return!1===t?String(e):String(e).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")},U=function(e){var t=G(e,g.TITLE),n=G(e,M);if(n&&t)return n.replace(/%s/g,(function(){return Array.isArray(t)?t.join(""):t}));var r=G(e,A);return t||r||void 0},W=function(e){return G(e,L)||function(){}},V=function(e,t){return t.filter((function(t){return"undefined"!==typeof t[e]})).map((function(t){return t[e]})).reduce((function(e,t){return F({},e,t)}),{})},$=function(e,t){return t.filter((function(e){return"undefined"!==typeof e[g.BASE]})).map((function(e){return e[g.BASE]})).reverse().reduce((function(t,n){if(!t.length)for(var r=Object.keys(n),i=0;i=0;n--){var r=e[n];if(r.hasOwnProperty(t))return r[t]}return null},K=function(){var e=Date.now();return function(t){var n=Date.now();n-e>16?(e=n,t(n)):setTimeout((function(){K(t)}),0)}}(),X=function(e){return clearTimeout(e)},Q="undefined"!==typeof window?window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||K:e.requestAnimationFrame||K,J="undefined"!==typeof window?window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||X:e.cancelAnimationFrame||X,Z=function(e){return console&&"function"===typeof console.warn&&console.warn(e)},ee=null,te=function(e,t){var n=e.baseTag,r=e.bodyAttributes,i=e.htmlAttributes,o=e.linkTags,a=e.metaTags,s=e.noscriptTags,l=e.onChangeClientState,u=e.scriptTags,c=e.styleTags,f=e.title,d=e.titleAttributes;ie(g.BODY,r),ie(g.HTML,i),re(f,d);var p={baseTag:oe(g.BASE,n),linkTags:oe(g.LINK,o),metaTags:oe(g.META,a),noscriptTags:oe(g.NOSCRIPT,s),scriptTags:oe(g.SCRIPT,u),styleTags:oe(g.STYLE,c)},h={},m={};Object.keys(p).forEach((function(e){var t=p[e],n=t.newTags,r=t.oldTags;n.length&&(h[e]=n),r.length&&(m[e]=p[e].oldTags)})),t&&t(),l(e,h,m)},ne=function(e){return Array.isArray(e)?e.join(""):e},re=function(e,t){"undefined"!==typeof e&&document.title!==e&&(document.title=ne(e)),ie(g.TITLE,t)},ie=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute("data-react-helmet"),i=r?r.split(","):[],o=[].concat(i),a=Object.keys(t),s=0;s=0;f--)n.removeAttribute(o[f]);i.length===o.length?n.removeAttribute("data-react-helmet"):n.getAttribute("data-react-helmet")!==a.join(",")&&n.setAttribute("data-react-helmet",a.join(","))}},oe=function(e,t){var n=document.head||document.querySelector(g.HEAD),r=n.querySelectorAll(e+"[data-react-helmet]"),i=Array.prototype.slice.call(r),o=[],a=void 0;return t&&t.length&&t.forEach((function(t){var n=document.createElement(e);for(var r in t)if(t.hasOwnProperty(r))if(r===x)n.innerHTML=t.innerHTML;else if(r===y)n.styleSheet?n.styleSheet.cssText=t.cssText:n.appendChild(document.createTextNode(t.cssText));else{var s="undefined"===typeof t[r]?"":t[r];n.setAttribute(r,s)}n.setAttribute("data-react-helmet","true"),i.some((function(e,t){return a=t,n.isEqualNode(e)}))?i.splice(a,1):o.push(n)})),i.forEach((function(e){return e.parentNode.removeChild(e)})),o.forEach((function(e){return n.appendChild(e)})),{oldTags:i,newTags:o}},ae=function(e){return Object.keys(e).reduce((function(t,n){var r="undefined"!==typeof e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r}),"")},se=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(e).reduce((function(t,n){return t[O[n]||n]=e[n],t}),t)},le=function(e,t,n){switch(e){case g.TITLE:return{toComponent:function(){return function(e,t,n){var r,i=((r={key:t})["data-react-helmet"]=!0,r),o=se(n,i);return[c.a.createElement(g.TITLE,o,t)]}(0,t.title,t.titleAttributes)},toString:function(){return function(e,t,n,r){var i=ae(n),o=ne(t);return i?"<"+e+' data-react-helmet="true" '+i+">"+H(o,r)+"":"<"+e+' data-react-helmet="true">'+H(o,r)+""}(e,t.title,t.titleAttributes,n)}};case p:case h:return{toComponent:function(){return se(t)},toString:function(){return ae(t)}};default:return{toComponent:function(){return function(e,t){return t.map((function(t,n){var r,i=((r={key:n})["data-react-helmet"]=!0,r);return Object.keys(t).forEach((function(e){var n=O[e]||e;if(n===x||n===y){var r=t.innerHTML||t.cssText;i.dangerouslySetInnerHTML={__html:r}}else i[n]=t[e]})),c.a.createElement(e,i)}))}(e,t)},toString:function(){return function(e,t,n){return t.reduce((function(t,r){var i=Object.keys(r).filter((function(e){return!(e===x||e===y)})).reduce((function(e,t){var i="undefined"===typeof r[t]?t:t+'="'+H(r[t],n)+'"';return e?e+" "+i:i}),""),o=r.innerHTML||r.cssText||"",a=-1===j.indexOf(e);return t+"<"+e+' data-react-helmet="true" '+i+(a?"/>":">"+o+"")}),"")}(e,t,n)}}}},ue=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,i=e.htmlAttributes,o=e.linkTags,a=e.metaTags,s=e.noscriptTags,l=e.scriptTags,u=e.styleTags,c=e.title,f=void 0===c?"":c,d=e.titleAttributes;return{base:le(g.BASE,t,r),bodyAttributes:le(p,n,r),htmlAttributes:le(h,i,r),link:le(g.LINK,o,r),meta:le(g.META,a,r),noscript:le(g.NOSCRIPT,s,r),script:le(g.SCRIPT,l,r),style:le(g.STYLE,u,r),title:le(g.TITLE,{title:f,titleAttributes:d},r)}},ce=function(e){var t,n;return n=t=function(t){function n(){return R(this,n),B(this,t.apply(this,arguments))}return function(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(n,t),n.prototype.shouldComponentUpdate=function(e){return!l()(this.props,e)},n.prototype.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case g.SCRIPT:case g.NOSCRIPT:return{innerHTML:t};case g.STYLE:return{cssText:t}}throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")},n.prototype.flattenArrayTypeChildren=function(e){var t,n=e.child,r=e.arrayTypeChildren,i=e.newChildProps,o=e.nestedChildren;return F({},r,((t={})[n.type]=[].concat(r[n.type]||[],[F({},i,this.mapNestedChildrenToProps(n,o))]),t))},n.prototype.mapObjectTypeChildren=function(e){var t,n,r=e.child,i=e.newProps,o=e.newChildProps,a=e.nestedChildren;switch(r.type){case g.TITLE:return F({},i,((t={})[r.type]=a,t.titleAttributes=F({},o),t));case g.BODY:return F({},i,{bodyAttributes:F({},o)});case g.HTML:return F({},i,{htmlAttributes:F({},o)})}return F({},i,((n={})[r.type]=F({},o),n))},n.prototype.mapArrayTypeChildrenToProps=function(e,t){var n=F({},t);return Object.keys(e).forEach((function(t){var r;n=F({},n,((r={})[t]=e[t],r))})),n},n.prototype.warnOnInvalidChildren=function(e,t){return!0},n.prototype.mapChildrenToProps=function(e,t){var n=this,r={};return c.a.Children.forEach(e,(function(e){if(e&&e.props){var i=e.props,o=i.children,a=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(e).reduce((function(t,n){return t[P[n]||n]=e[n],t}),t)}(z(i,["children"]));switch(n.warnOnInvalidChildren(e,o),e.type){case g.LINK:case g.META:case g.NOSCRIPT:case g.SCRIPT:case g.STYLE:r=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:r,newChildProps:a,nestedChildren:o});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:a,nestedChildren:o})}}})),t=this.mapArrayTypeChildrenToProps(r,t)},n.prototype.render=function(){var t=this.props,n=t.children,r=z(t,["children"]),i=F({},r);return n&&(i=this.mapChildrenToProps(n,i)),c.a.createElement(e,i)},q(n,null,[{key:"canUseDOM",set:function(t){e.canUseDOM=t}}]),n}(c.a.Component),t.propTypes={base:i.a.object,bodyAttributes:i.a.object,children:i.a.oneOfType([i.a.arrayOf(i.a.node),i.a.node]),defaultTitle:i.a.string,defer:i.a.bool,encodeSpecialCharacters:i.a.bool,htmlAttributes:i.a.object,link:i.a.arrayOf(i.a.object),meta:i.a.arrayOf(i.a.object),noscript:i.a.arrayOf(i.a.object),onChangeClientState:i.a.func,script:i.a.arrayOf(i.a.object),style:i.a.arrayOf(i.a.object),title:i.a.string,titleAttributes:i.a.object,titleTemplate:i.a.string},t.defaultProps={defer:!0,encodeSpecialCharacters:!0},t.peek=e.peek,t.rewind=function(){var t=e.rewind();return t||(t=ue({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}})),t},n}(a()((function(e){return{baseTag:$([b,C],e),bodyAttributes:V(p,e),defer:G(e,N),encode:G(e,D),htmlAttributes:V(h,e),linkTags:Y(g.LINK,[E,b],e),metaTags:Y(g.META,[k,v,w,S,_],e),noscriptTags:Y(g.NOSCRIPT,[x],e),onChangeClientState:W(e),scriptTags:Y(g.SCRIPT,[T,x],e),styleTags:Y(g.STYLE,[y],e),title:U(e),titleAttributes:V(m,e)}}),(function(e){ee&&J(ee),e.defer?ee=Q((function(){te(e,(function(){ee=null}))})):(te(e),ee=null)}),ue)((function(){return null})));ce.renderStatic=ce.rewind}).call(this,n(28))},function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var r=n(41);var i=n(34);function o(e){return function(e){if(Array.isArray(e))return Object(r.a)(e)}(e)||function(e){if("undefined"!==typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||Object(i.a)(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.htmlparser2=t.convertNodeToElement=t.processNodes=void 0;var r=n(50);Object.defineProperty(t,"processNodes",{enumerable:!0,get:function(){return s(r).default}});var i=n(71);Object.defineProperty(t,"convertNodeToElement",{enumerable:!0,get:function(){return s(i).default}});var o=n(33);Object.defineProperty(t,"htmlparser2",{enumerable:!0,get:function(){return s(o).default}});var a=s(n(201));function s(e){return e&&e.__esModule?e:{default:e}}t.default=a.default},function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(34);function i(e){if("undefined"===typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(e=Object(r.a)(e))){var t=0,n=function(){};return{s:n,n:function(){return t>=e.length?{done:!0}:{done:!1,value:e[t++]}},e:function(e){throw e},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o,a=!0,s=!1;return{s:function(){i=e[Symbol.iterator]()},n:function(){var e=i.next();return a=e.done,e},e:function(e){s=!0,o=e},f:function(){try{a||null==i.return||i.return()}finally{if(s)throw o}}}}},function(e,t,n){"use strict";n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return i})),n.d(t,"c",(function(){return o})),n.d(t,"d",(function(){return a})),n.d(t,"e",(function(){return s})),n.d(t,"f",(function(){return l})),n.d(t,"g",(function(){return u})),n.d(t,"h",(function(){return c})),n.d(t,"i",(function(){return f})),n.d(t,"j",(function(){return d})),n.d(t,"k",(function(){return p})),n.d(t,"l",(function(){return h})),n.d(t,"m",(function(){return m})),n.d(t,"n",(function(){return g})),n.d(t,"o",(function(){return v})),n.d(t,"p",(function(){return y})),n.d(t,"q",(function(){return b})),n.d(t,"r",(function(){return w})),n.d(t,"s",(function(){return x})),n.d(t,"t",(function(){return _})),n.d(t,"u",(function(){return k})),n.d(t,"v",(function(){return S})),n.d(t,"w",(function(){return E})),n.d(t,"x",(function(){return T})),n.d(t,"y",(function(){return C})),n.d(t,"z",(function(){return O})),n.d(t,"A",(function(){return A})),n.d(t,"B",(function(){return N})),n.d(t,"C",(function(){return D})),n.d(t,"D",(function(){return L})),n.d(t,"E",(function(){return M})),n.d(t,"F",(function(){return P})),n.d(t,"G",(function(){return j})),n.d(t,"H",(function(){return I})),n.d(t,"I",(function(){return R})),n.d(t,"J",(function(){return q})),n.d(t,"K",(function(){return F})),n.d(t,"L",(function(){return z})),n.d(t,"M",(function(){return B})),n.d(t,"N",(function(){return H})),n.d(t,"O",(function(){return U}));var r={prefix:"fas",iconName:"angle-right",icon:[256,512,[],"f105","M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z"]},i={prefix:"fas",iconName:"arrow-down",icon:[448,512,[],"f063","M413.1 222.5l22.2 22.2c9.4 9.4 9.4 24.6 0 33.9L241 473c-9.4 9.4-24.6 9.4-33.9 0L12.7 278.6c-9.4-9.4-9.4-24.6 0-33.9l22.2-22.2c9.5-9.5 25-9.3 34.3.4L184 343.4V56c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24v287.4l114.8-120.5c9.3-9.8 24.8-10 34.3-.4z"]},o={prefix:"fas",iconName:"arrow-up",icon:[448,512,[],"f062","M34.9 289.5l-22.2-22.2c-9.4-9.4-9.4-24.6 0-33.9L207 39c9.4-9.4 24.6-9.4 33.9 0l194.3 194.3c9.4 9.4 9.4 24.6 0 33.9L413 289.4c-9.5 9.5-25 9.3-34.3-.4L264 168.6V456c0 13.3-10.7 24-24 24h-32c-13.3 0-24-10.7-24-24V168.6L69.2 289.1c-9.3 9.8-24.8 10-34.3.4z"]},a={prefix:"fas",iconName:"bell",icon:[448,512,[],"f0f3","M224 512c35.32 0 63.97-28.65 63.97-64H160.03c0 35.35 28.65 64 63.97 64zm215.39-149.71c-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32 .05-7.55-2.61-15.27-8.61-21.71z"]},s={prefix:"fas",iconName:"book",icon:[448,512,[],"f02d","M448 360V24c0-13.3-10.7-24-24-24H96C43 0 0 43 0 96v320c0 53 43 96 96 96h328c13.3 0 24-10.7 24-24v-16c0-7.5-3.5-14.3-8.9-18.7-4.2-15.4-4.2-59.3 0-74.7 5.4-4.3 8.9-11.1 8.9-18.6zM128 134c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm0 64c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm253.4 250H96c-17.7 0-32-14.3-32-32 0-17.6 14.4-32 32-32h285.4c-1.9 17.1-1.9 46.9 0 64z"]},l={prefix:"fas",iconName:"box-open",icon:[640,512,[],"f49e","M425.7 256c-16.9 0-32.8-9-41.4-23.4L320 126l-64.2 106.6c-8.7 14.5-24.6 23.5-41.5 23.5-4.5 0-9-.6-13.3-1.9L64 215v178c0 14.7 10 27.5 24.2 31l216.2 54.1c10.2 2.5 20.9 2.5 31 0L551.8 424c14.2-3.6 24.2-16.4 24.2-31V215l-137 39.1c-4.3 1.3-8.8 1.9-13.3 1.9zm212.6-112.2L586.8 41c-3.1-6.2-9.8-9.8-16.7-8.9L320 64l91.7 152.1c3.8 6.3 11.4 9.3 18.5 7.3l197.9-56.5c9.9-2.9 14.7-13.9 10.2-23.1zM53.2 41L1.7 143.8c-4.6 9.2.3 20.2 10.1 23l197.9 56.5c7.1 2 14.7-1 18.5-7.3L320 64 69.8 32.1c-6.9-.8-13.5 2.7-16.6 8.9z"]},u={prefix:"fas",iconName:"caret-down",icon:[320,512,[],"f0d7","M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z"]},c={prefix:"fas",iconName:"caret-up",icon:[320,512,[],"f0d8","M288.662 352H31.338c-17.818 0-26.741-21.543-14.142-34.142l128.662-128.662c7.81-7.81 20.474-7.81 28.284 0l128.662 128.662c12.6 12.599 3.676 34.142-14.142 34.142z"]},f={prefix:"fas",iconName:"cog",icon:[512,512,[],"f013","M487.4 315.7l-42.6-24.6c4.3-23.2 4.3-47 0-70.2l42.6-24.6c4.9-2.8 7.1-8.6 5.5-14-11.1-35.6-30-67.8-54.7-94.6-3.8-4.1-10-5.1-14.8-2.3L380.8 110c-17.9-15.4-38.5-27.3-60.8-35.1V25.8c0-5.6-3.9-10.5-9.4-11.7-36.7-8.2-74.3-7.8-109.2 0-5.5 1.2-9.4 6.1-9.4 11.7V75c-22.2 7.9-42.8 19.8-60.8 35.1L88.7 85.5c-4.9-2.8-11-1.9-14.8 2.3-24.7 26.7-43.6 58.9-54.7 94.6-1.7 5.4.6 11.2 5.5 14L67.3 221c-4.3 23.2-4.3 47 0 70.2l-42.6 24.6c-4.9 2.8-7.1 8.6-5.5 14 11.1 35.6 30 67.8 54.7 94.6 3.8 4.1 10 5.1 14.8 2.3l42.6-24.6c17.9 15.4 38.5 27.3 60.8 35.1v49.2c0 5.6 3.9 10.5 9.4 11.7 36.7 8.2 74.3 7.8 109.2 0 5.5-1.2 9.4-6.1 9.4-11.7v-49.2c22.2-7.9 42.8-19.8 60.8-35.1l42.6 24.6c4.9 2.8 11 1.9 14.8-2.3 24.7-26.7 43.6-58.9 54.7-94.6 1.5-5.5-.7-11.3-5.6-14.1zM256 336c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"]},d={prefix:"fas",iconName:"cogs",icon:[640,512,[],"f085","M512.1 191l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0L552 6.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zm-10.5-58.8c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.7-82.4 14.3-52.8 52.8zM386.3 286.1l33.7 16.8c10.1 5.8 14.5 18.1 10.5 29.1-8.9 24.2-26.4 46.4-42.6 65.8-7.4 8.9-20.2 11.1-30.3 5.3l-29.1-16.8c-16 13.7-34.6 24.6-54.9 31.7v33.6c0 11.6-8.3 21.6-19.7 23.6-24.6 4.2-50.4 4.4-75.9 0-11.5-2-20-11.9-20-23.6V418c-20.3-7.2-38.9-18-54.9-31.7L74 403c-10 5.8-22.9 3.6-30.3-5.3-16.2-19.4-33.3-41.6-42.2-65.7-4-10.9.4-23.2 10.5-29.1l33.3-16.8c-3.9-20.9-3.9-42.4 0-63.4L12 205.8c-10.1-5.8-14.6-18.1-10.5-29 8.9-24.2 26-46.4 42.2-65.8 7.4-8.9 20.2-11.1 30.3-5.3l29.1 16.8c16-13.7 34.6-24.6 54.9-31.7V57.1c0-11.5 8.2-21.5 19.6-23.5 24.6-4.2 50.5-4.4 76-.1 11.5 2 20 11.9 20 23.6v33.6c20.3 7.2 38.9 18 54.9 31.7l29.1-16.8c10-5.8 22.9-3.6 30.3 5.3 16.2 19.4 33.2 41.6 42.1 65.8 4 10.9.1 23.2-10 29.1l-33.7 16.8c3.9 21 3.9 42.5 0 63.5zm-117.6 21.1c59.2-77-28.7-164.9-105.7-105.7-59.2 77 28.7 164.9 105.7 105.7zm243.4 182.7l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0l8.2-14.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zM501.6 431c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.6-82.4 14.3-52.8 52.8z"]},p={prefix:"fas",iconName:"copy",icon:[448,512,[],"f0c5","M320 448v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V120c0-13.255 10.745-24 24-24h72v296c0 30.879 25.121 56 56 56h168zm0-344V0H152c-13.255 0-24 10.745-24 24v368c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24V128H344c-13.2 0-24-10.8-24-24zm120.971-31.029L375.029 7.029A24 24 0 0 0 358.059 0H352v96h96v-6.059a24 24 0 0 0-7.029-16.97z"]},h={prefix:"fas",iconName:"download",icon:[512,512,[],"f019","M216 0h80c13.3 0 24 10.7 24 24v168h87.7c17.8 0 26.7 21.5 14.1 34.1L269.7 378.3c-7.5 7.5-19.8 7.5-27.3 0L90.1 226.1c-12.6-12.6-3.7-34.1 14.1-34.1H192V24c0-13.3 10.7-24 24-24zm296 376v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h146.7l49 49c20.1 20.1 52.5 20.1 72.6 0l49-49H488c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z"]},m={prefix:"fas",iconName:"ellipsis-h",icon:[512,512,[],"f141","M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z"]},g={prefix:"fas",iconName:"eye",icon:[576,512,[],"f06e","M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z"]},v={prefix:"fas",iconName:"eye-slash",icon:[640,512,[],"f070","M320 400c-75.85 0-137.25-58.71-142.9-133.11L72.2 185.82c-13.79 17.3-26.48 35.59-36.72 55.59a32.35 32.35 0 0 0 0 29.19C89.71 376.41 197.07 448 320 448c26.91 0 52.87-4 77.89-10.46L346 397.39a144.13 144.13 0 0 1-26 2.61zm313.82 58.1l-110.55-85.44a331.25 331.25 0 0 0 81.25-102.07 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64a308.15 308.15 0 0 0-147.32 37.7L45.46 3.37A16 16 0 0 0 23 6.18L3.37 31.45A16 16 0 0 0 6.18 53.9l588.36 454.73a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zm-183.72-142l-39.3-30.38A94.75 94.75 0 0 0 416 256a94.76 94.76 0 0 0-121.31-92.21A47.65 47.65 0 0 1 304 192a46.64 46.64 0 0 1-1.54 10l-73.61-56.89A142.31 142.31 0 0 1 320 112a143.92 143.92 0 0 1 144 144c0 21.63-5.29 41.79-13.9 60.11z"]},y={prefix:"fas",iconName:"file",icon:[384,512,[],"f15b","M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm160-14.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"]},b={prefix:"fas",iconName:"file-alt",icon:[384,512,[],"f15c","M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 236c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-64c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-72v8c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm96-114.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"]},w={prefix:"fas",iconName:"file-download",icon:[384,512,[],"f56d","M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm76.45 211.36l-96.42 95.7c-6.65 6.61-17.39 6.61-24.04 0l-96.42-95.7C73.42 337.29 80.54 320 94.82 320H160v-80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v80h65.18c14.28 0 21.4 17.29 11.27 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z"]},x={prefix:"fas",iconName:"folder",icon:[512,512,[],"f07b","M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48z"]},_={prefix:"fas",iconName:"folder-open",icon:[576,512,[],"f07c","M572.694 292.093L500.27 416.248A63.997 63.997 0 0 1 444.989 448H45.025c-18.523 0-30.064-20.093-20.731-36.093l72.424-124.155A64 64 0 0 1 152 256h399.964c18.523 0 30.064 20.093 20.73 36.093zM152 224h328v-48c0-26.51-21.49-48-48-48H272l-64-64H48C21.49 64 0 85.49 0 112v278.046l69.077-118.418C86.214 242.25 117.989 224 152 224z"]},k={prefix:"fas",iconName:"image",icon:[512,512,[],"f03e","M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56zM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48z"]},S={prefix:"fas",iconName:"infinity",icon:[640,512,[],"f534","M471.1 96C405 96 353.3 137.3 320 174.6 286.7 137.3 235 96 168.9 96 75.8 96 0 167.8 0 256s75.8 160 168.9 160c66.1 0 117.8-41.3 151.1-78.6 33.3 37.3 85 78.6 151.1 78.6 93.1 0 168.9-71.8 168.9-160S564.2 96 471.1 96zM168.9 320c-40.2 0-72.9-28.7-72.9-64s32.7-64 72.9-64c38.2 0 73.4 36.1 94 64-20.4 27.6-55.9 64-94 64zm302.2 0c-38.2 0-73.4-36.1-94-64 20.4-27.6 55.9-64 94-64 40.2 0 72.9 28.7 72.9 64s-32.7 64-72.9 64z"]},E={prefix:"fas",iconName:"italic",icon:[320,512,[],"f033","M320 48v32a16 16 0 0 1-16 16h-62.76l-80 320H208a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h62.76l80-320H112a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h192a16 16 0 0 1 16 16z"]},T={prefix:"fas",iconName:"list",icon:[512,512,[],"f03a","M80 368H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm0-320H16A16 16 0 0 0 0 64v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16V64a16 16 0 0 0-16-16zm0 160H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm416 176H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"]},C={prefix:"fas",iconName:"lock",icon:[448,512,[],"f023","M400 224h-24v-72C376 68.2 307.8 0 224 0S72 68.2 72 152v72H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zm-104 0H152v-72c0-39.7 32.3-72 72-72s72 32.3 72 72v72z"]},O={prefix:"fas",iconName:"long-arrow-alt-right",icon:[448,512,[],"f30b","M313.941 216H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h301.941v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.569 0-33.941l-86.059-86.059c-15.119-15.119-40.971-4.411-40.971 16.971V216z"]},A={prefix:"fas",iconName:"long-arrow-alt-up",icon:[256,512,[],"f30c","M88 166.059V468c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12V166.059h46.059c21.382 0 32.09-25.851 16.971-40.971l-86.059-86.059c-9.373-9.373-24.569-9.373-33.941 0l-86.059 86.059c-15.119 15.119-4.411 40.971 16.971 40.971H88z"]},N={prefix:"fas",iconName:"paste",icon:[448,512,[],"f0ea","M128 184c0-30.879 25.122-56 56-56h136V56c0-13.255-10.745-24-24-24h-80.61C204.306 12.89 183.637 0 160 0s-44.306 12.89-55.39 32H24C10.745 32 0 42.745 0 56v336c0 13.255 10.745 24 24 24h104V184zm32-144c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24zm184 248h104v200c0 13.255-10.745 24-24 24H184c-13.255 0-24-10.745-24-24V184c0-13.255 10.745-24 24-24h136v104c0 13.2 10.8 24 24 24zm104-38.059V256h-96v-96h6.059a24 24 0 0 1 16.97 7.029l65.941 65.941a24.002 24.002 0 0 1 7.03 16.971z"]},D={prefix:"fas",iconName:"pause",icon:[448,512,[],"f04c","M144 479H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zm304-48V79c0-26.5-21.5-48-48-48h-96c-26.5 0-48 21.5-48 48v352c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48z"]},L={prefix:"fas",iconName:"pen",icon:[512,512,[],"f304","M290.74 93.24l128.02 128.02-277.99 277.99-114.14 12.6C11.35 513.54-1.56 500.62.14 485.34l12.7-114.22 277.9-277.88zm207.2-19.06l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.76 18.75-49.16 0-67.91z"]},M={prefix:"fas",iconName:"play",icon:[448,512,[],"f04b","M424.4 214.7L72.4 6.6C43.8-10.3 0 6.1 0 47.9V464c0 37.5 40.7 60.1 72.4 41.3l352-208c31.4-18.5 31.5-64.1 0-82.6z"]},P={prefix:"fas",iconName:"plus",icon:[448,512,[],"f067","M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"]},j={prefix:"fas",iconName:"search",icon:[512,512,[],"f002","M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"]},I={prefix:"fas",iconName:"star",icon:[576,512,[],"f005","M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z"]},R={prefix:"fas",iconName:"stop",icon:[448,512,[],"f04d","M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z"]},q={prefix:"fas",iconName:"times",icon:[352,512,[],"f00d","M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"]},F={prefix:"fas",iconName:"trash",icon:[448,512,[],"f1f8","M432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32z"]},z={prefix:"fas",iconName:"unlock",icon:[448,512,[],"f09c","M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z"]},B={prefix:"fas",iconName:"user",icon:[448,512,[],"f007","M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"]},H={prefix:"fas",iconName:"user-lock",icon:[640,512,[],"f502","M224 256A128 128 0 1 0 96 128a128 128 0 0 0 128 128zm96 64a63.08 63.08 0 0 1 8.1-30.5c-4.8-.5-9.5-1.5-14.5-1.5h-16.7a174.08 174.08 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h280.9a63.54 63.54 0 0 1-8.9-32zm288-32h-32v-80a80 80 0 0 0-160 0v80h-32a32 32 0 0 0-32 32v160a32 32 0 0 0 32 32h224a32 32 0 0 0 32-32V320a32 32 0 0 0-32-32zM496 432a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm32-144h-64v-80a32 32 0 0 1 64 0z"]},U={prefix:"fas",iconName:"wrench",icon:[512,512,[],"f0ad","M507.73 109.1c-2.24-9.03-13.54-12.09-20.12-5.51l-74.36 74.36-67.88-11.31-11.31-67.88 74.36-74.36c6.62-6.62 3.43-17.9-5.66-20.16-47.38-11.74-99.55.91-136.58 37.93-39.64 39.64-50.55 97.1-34.05 147.2L18.74 402.76c-24.99 24.99-24.99 65.51 0 90.5 24.99 24.99 65.51 24.99 90.5 0l213.21-213.21c50.12 16.71 107.47 5.68 147.37-34.22 37.07-37.07 49.7-89.32 37.91-136.73zM64 472c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"]}},function(e,t,n){"use strict";var r=n(136),i=n(137),o=n(63);e.exports={formats:o,parse:i,stringify:r}},function(e,t,n){"use strict";function r(){return(r=Object.assign||function(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";function r(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r=0||(i[n]=e[n]);return i}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";function r(e,t){for(var n=0;n=0;d--){var p=a[d];"."===p?o(a,d):".."===p?(o(a,d),f++):f&&(o(a,d),f--)}if(!u)for(;f--;f)a.unshift("..");!u||""===a[0]||a[0]&&i(a[0])||a.unshift("");var h=a.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h};function s(e){return e.valueOf?e.valueOf():Object.prototype.valueOf.call(e)}var l=function e(t,n){if(t===n)return!0;if(null==t||null==n)return!1;if(Array.isArray(t))return Array.isArray(n)&&t.length===n.length&&t.every((function(t,r){return e(t,n[r])}));if("object"===typeof t||"object"===typeof n){var r=s(t),i=s(n);return r!==t||i!==n?e(r,i):Object.keys(Object.assign({},t,n)).every((function(r){return e(t[r],n[r])}))}return!1},u=n(26);function c(e){return"/"===e.charAt(0)?e:"/"+e}function f(e){return"/"===e.charAt(0)?e.substr(1):e}function d(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function p(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function h(e){var t=e.pathname,n=e.search,r=e.hash,i=t||"/";return n&&"?"!==n&&(i+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(i+="#"===r.charAt(0)?r:"#"+r),i}function m(e,t,n,i){var o;"string"===typeof e?(o=function(e){var t=e||"/",n="",r="",i=t.indexOf("#");-1!==i&&(r=t.substr(i),t=t.substr(0,i));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e)).state=t:(void 0===(o=Object(r.a)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(s){throw s instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):s}return n&&(o.key=n),i?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=a(o.pathname,i.pathname)):o.pathname=i.pathname:o.pathname||(o.pathname="/"),o}function g(e,t){return e.pathname===t.pathname&&e.search===t.search&&e.hash===t.hash&&e.key===t.key&&l(e.state,t.state)}function v(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,i){if(null!=e){var o="function"===typeof e?e(t,n):e;"string"===typeof o?"function"===typeof r?r(o,i):i(!0):i(!1!==o)}else i(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,r):n.push(r),f({action:"PUSH",location:r,index:t,entries:n})}}))},replace:function(e,t){var r=m(e,t,d(),w.location);c.confirmTransitionTo(r,"REPLACE",n,(function(e){e&&(w.entries[w.index]=r,f({action:"REPLACE",location:r}))}))},go:b,goBack:function(){b(-1)},goForward:function(){b(1)},canGo:function(e){var t=w.index+e;return t>=0&&t2),g=/Android/.test(e),v=m||g||/webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(e),y=m||/Mac/.test(t),b=/\bCrOS\b/.test(e),w=/win/i.test(t),x=f&&e.match(/Version\/(\d*\.\d*)/);x&&(x=Number(x[1])),x&&x>=15&&(f=!1,l=!0);var _=y&&(u||f&&(null==x||x<12.11)),k=n||a&&s>=9;function S(e){return new RegExp("(^|\\s)"+e+"(?:$|\\s)\\s*")}var E,T=function(e,t){var n=e.className,r=S(t).exec(n);if(r){var i=n.slice(r.index+r[0].length);e.className=n.slice(0,r.index)+(i?r[1]+i:"")}};function C(e){for(var t=e.childNodes.length;t>0;--t)e.removeChild(e.firstChild);return e}function O(e,t){return C(e).appendChild(t)}function A(e,t,n,r){var i=document.createElement(e);if(n&&(i.className=n),r&&(i.style.cssText=r),"string"==typeof t)i.appendChild(document.createTextNode(t));else if(t)for(var o=0;o=t)return a+(t-o);a+=s-o,a+=n-a%n,o=s+1}}m?j=function(e){e.selectionStart=0,e.selectionEnd=e.value.length}:a&&(j=function(e){try{e.select()}catch(t){}});var F=function(){this.id=null,this.f=null,this.time=0,this.handler=I(this.onTimeout,this)};function z(e,t){for(var n=0;n=t)return r+Math.min(a,t-i);if(i+=o-r,r=o+1,(i+=n-i%n)>=t)return r}}var $=[""];function Y(e){for(;$.length<=e;)$.push(G($)+" ");return $[e]}function G(e){return e[e.length-1]}function K(e,t){for(var n=[],r=0;r"\x80"&&(e.toUpperCase()!=e.toLowerCase()||J.test(e))}function ee(e,t){return t?!!(t.source.indexOf("\\w")>-1&&Z(e))||t.test(e):Z(e)}function te(e){for(var t in e)if(e.hasOwnProperty(t)&&e[t])return!1;return!0}var ne=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;function re(e){return e.charCodeAt(0)>=768&&ne.test(e)}function ie(e,t,n){for(;(n<0?t>0:tn?-1:1;;){if(t==n)return t;var i=(t+n)/2,o=r<0?Math.ceil(i):Math.floor(i);if(o==t)return e(o)?t:n;e(o)?n=o:t=o+r}}var ae=null;function se(e,t,n){var r;ae=null;for(var i=0;it)return i;o.to==t&&(o.from!=o.to&&"before"==n?r=i:ae=i),o.from==t&&(o.from!=o.to&&"before"!=n?r=i:ae=i)}return null!=r?r:ae}var le=function(){var e=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,t=/[stwN]/,n=/[LRr]/,r=/[Lb1n]/,i=/[1n]/;function o(e,t,n){this.level=e,this.from=t,this.to=n}return function(a,s){var l="ltr"==s?"L":"R";if(0==a.length||"ltr"==s&&!e.test(a))return!1;for(var u,c=a.length,f=[],d=0;d-1&&(r[t]=i.slice(0,o).concat(i.slice(o+1)))}}}function he(e,t){var n=de(e,t);if(n.length)for(var r=Array.prototype.slice.call(arguments,2),i=0;i0}function ye(e){e.prototype.on=function(e,t){fe(this,e,t)},e.prototype.off=function(e,t){pe(this,e,t)}}function be(e){e.preventDefault?e.preventDefault():e.returnValue=!1}function we(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0}function xe(e){return null!=e.defaultPrevented?e.defaultPrevented:0==e.returnValue}function _e(e){be(e),we(e)}function ke(e){return e.target||e.srcElement}function Se(e){var t=e.which;return null==t&&(1&e.button?t=1:2&e.button?t=3:4&e.button&&(t=2)),y&&e.ctrlKey&&1==t&&(t=3),t}var Ee,Te,Ce=function(){if(a&&s<9)return!1;var e=A("div");return"draggable"in e||"dragDrop"in e}();function Oe(e){if(null==Ee){var t=A("span","\u200b");O(e,A("span",[t,document.createTextNode("x")])),0!=e.firstChild.offsetHeight&&(Ee=t.offsetWidth<=1&&t.offsetHeight>2&&!(a&&s<8))}var n=Ee?A("span","\u200b"):A("span","\xa0",null,"display: inline-block; width: 1px; margin-right: -1px");return n.setAttribute("cm-text",""),n}function Ae(e){if(null!=Te)return Te;var t=O(e,document.createTextNode("A\u062eA")),n=E(t,0,1).getBoundingClientRect(),r=E(t,1,2).getBoundingClientRect();return C(e),!(!n||n.left==n.right)&&(Te=r.right-n.right<3)}var Ne=3!="\n\nb".split(/\n/).length?function(e){for(var t=0,n=[],r=e.length;t<=r;){var i=e.indexOf("\n",t);-1==i&&(i=e.length);var o=e.slice(t,"\r"==e.charAt(i-1)?i-1:i),a=o.indexOf("\r");-1!=a?(n.push(o.slice(0,a)),t+=a+1):(n.push(o),t=i+1)}return n}:function(e){return e.split(/\r\n?|\n/)},De=window.getSelection?function(e){try{return e.selectionStart!=e.selectionEnd}catch(t){return!1}}:function(e){var t;try{t=e.ownerDocument.selection.createRange()}catch(n){}return!(!t||t.parentElement()!=e)&&0!=t.compareEndPoints("StartToEnd",t)},Le=function(){var e=A("div");return"oncopy"in e||(e.setAttribute("oncopy","return;"),"function"==typeof e.oncopy)}(),Me=null,Pe={},je={};function Ie(e,t){arguments.length>2&&(t.dependencies=Array.prototype.slice.call(arguments,2)),Pe[e]=t}function Re(e){if("string"==typeof e&&je.hasOwnProperty(e))e=je[e];else if(e&&"string"==typeof e.name&&je.hasOwnProperty(e.name)){var t=je[e.name];"string"==typeof t&&(t={name:t}),(e=Q(t,e)).name=t.name}else{if("string"==typeof e&&/^[\w\-]+\/[\w\-]+\+xml$/.test(e))return Re("application/xml");if("string"==typeof e&&/^[\w\-]+\/[\w\-]+\+json$/.test(e))return Re("application/json")}return"string"==typeof e?{name:e}:e||{name:"null"}}function qe(e,t){t=Re(t);var n=Pe[t.name];if(!n)return qe(e,"text/plain");var r=n(e,t);if(Fe.hasOwnProperty(t.name)){var i=Fe[t.name];for(var o in i)i.hasOwnProperty(o)&&(r.hasOwnProperty(o)&&(r["_"+o]=r[o]),r[o]=i[o])}if(r.name=t.name,t.helperType&&(r.helperType=t.helperType),t.modeProps)for(var a in t.modeProps)r[a]=t.modeProps[a];return r}var Fe={};function ze(e,t){R(t,Fe.hasOwnProperty(e)?Fe[e]:Fe[e]={})}function Be(e,t){if(!0===t)return t;if(e.copyState)return e.copyState(t);var n={};for(var r in t){var i=t[r];i instanceof Array&&(i=i.concat([])),n[r]=i}return n}function He(e,t){for(var n;e.innerMode&&(n=e.innerMode(t))&&n.mode!=e;)t=n.state,e=n.mode;return n||{mode:e,state:t}}function Ue(e,t,n){return!e.startState||e.startState(t,n)}var We=function(e,t,n){this.pos=this.start=0,this.string=e,this.tabSize=t||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0,this.lineOracle=n};function Ve(e,t){if((t-=e.first)<0||t>=e.size)throw new Error("There is no line "+(t+e.first)+" in the document.");for(var n=e;!n.lines;)for(var r=0;;++r){var i=n.children[r],o=i.chunkSize();if(t=e.first&&tn?Ze(n,Ve(e,n).text.length):function(e,t){var n=e.ch;return null==n||n>t?Ze(e.line,t):n<0?Ze(e.line,0):e}(t,Ve(e,t.line).text.length)}function st(e,t){for(var n=[],r=0;r=this.string.length},We.prototype.sol=function(){return this.pos==this.lineStart},We.prototype.peek=function(){return this.string.charAt(this.pos)||void 0},We.prototype.next=function(){if(this.post},We.prototype.eatSpace=function(){for(var e=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e},We.prototype.skipToEnd=function(){this.pos=this.string.length},We.prototype.skipTo=function(e){var t=this.string.indexOf(e,this.pos);if(t>-1)return this.pos=t,!0},We.prototype.backUp=function(e){this.pos-=e},We.prototype.column=function(){return this.lastColumnPos0?null:(r&&!1!==t&&(this.pos+=r[0].length),r)}var i=function(e){return n?e.toLowerCase():e};if(i(this.string.substr(this.pos,e.length))==i(e))return!1!==t&&(this.pos+=e.length),!0},We.prototype.current=function(){return this.string.slice(this.start,this.pos)},We.prototype.hideFirstChars=function(e,t){this.lineStart+=e;try{return t()}finally{this.lineStart-=e}},We.prototype.lookAhead=function(e){var t=this.lineOracle;return t&&t.lookAhead(e)},We.prototype.baseToken=function(){var e=this.lineOracle;return e&&e.baseToken(this.pos)};var lt=function(e,t){this.state=e,this.lookAhead=t},ut=function(e,t,n,r){this.state=t,this.doc=e,this.line=n,this.maxLookAhead=r||0,this.baseTokens=null,this.baseTokenPos=1};function ct(e,t,n,r){var i=[e.state.modeGen],o={};bt(e,t.text,e.doc.mode,n,(function(e,t){return i.push(e,t)}),o,r);for(var a=n.state,s=function(r){n.baseTokens=i;var s=e.state.overlays[r],l=1,u=0;n.state=!0,bt(e,t.text,s.mode,n,(function(e,t){for(var n=l;ue&&i.splice(l,1,e,i[l+1],r),l+=2,u=Math.min(e,r)}if(t)if(s.opaque)i.splice(n,l-n,e,"overlay "+t),l=n+2;else for(;ne.options.maxHighlightLength&&Be(e.doc.mode,r.state),o=ct(e,t,r);i&&(r.state=i),t.stateAfter=r.save(!i),t.styles=o.styles,o.classes?t.styleClasses=o.classes:t.styleClasses&&(t.styleClasses=null),n===e.doc.highlightFrontier&&(e.doc.modeFrontier=Math.max(e.doc.modeFrontier,++e.doc.highlightFrontier))}return t.styles}function dt(e,t,n){var r=e.doc,i=e.display;if(!r.mode.startState)return new ut(r,!0,t);var o=function(e,t,n){for(var r,i,o=e.doc,a=n?-1:t-(e.doc.mode.innerMode?1e3:100),s=t;s>a;--s){if(s<=o.first)return o.first;var l=Ve(o,s-1),u=l.stateAfter;if(u&&(!n||s+(u instanceof lt?u.lookAhead:0)<=o.modeFrontier))return s;var c=q(l.text,null,e.options.tabSize);(null==i||r>c)&&(i=s-1,r=c)}return i}(e,t,n),a=o>r.first&&Ve(r,o-1).stateAfter,s=a?ut.fromSaved(r,a,o):new ut(r,Ue(r.mode),o);return r.iter(o,t,(function(n){pt(e,n.text,s);var r=s.line;n.stateAfter=r==t-1||r%5==0||r>=i.viewFrom&&rt.start)return o}throw new Error("Mode "+e.name+" failed to advance stream.")}ut.prototype.lookAhead=function(e){var t=this.doc.getLine(this.line+e);return null!=t&&e>this.maxLookAhead&&(this.maxLookAhead=e),t},ut.prototype.baseToken=function(e){if(!this.baseTokens)return null;for(;this.baseTokens[this.baseTokenPos]<=e;)this.baseTokenPos+=2;var t=this.baseTokens[this.baseTokenPos+1];return{type:t&&t.replace(/( |^)overlay .*/,""),size:this.baseTokens[this.baseTokenPos]-e}},ut.prototype.nextLine=function(){this.line++,this.maxLookAhead>0&&this.maxLookAhead--},ut.fromSaved=function(e,t,n){return t instanceof lt?new ut(e,Be(e.mode,t.state),n,t.lookAhead):new ut(e,Be(e.mode,t),n)},ut.prototype.save=function(e){var t=!1!==e?Be(this.doc.mode,this.state):this.state;return this.maxLookAhead>0?new lt(t,this.maxLookAhead):t};var gt=function(e,t,n){this.start=e.start,this.end=e.pos,this.string=e.current(),this.type=t||null,this.state=n};function vt(e,t,n,r){var i,o,a=e.doc,s=a.mode,l=Ve(a,(t=at(a,t)).line),u=dt(e,t.line,n),c=new We(l.text,e.options.tabSize,u);for(r&&(o=[]);(r||c.pose.options.maxHighlightLength?(s=!1,a&&pt(e,t,r,f.pos),f.pos=t.length,l=null):l=yt(mt(n,f,r.state,d),o),d){var p=d[0].name;p&&(l="m-"+(l?p+" "+l:p))}if(!s||c!=l){for(;u=t:o.to>t);(r||(r=[])).push(new _t(a,o.from,s?null:o.to))}}return r}(n,i,a),l=function(e,t,n){var r;if(e)for(var i=0;i=t:o.to>t)||o.from==t&&"bookmark"==a.type&&(!n||o.marker.insertLeft)){var s=null==o.from||(a.inclusiveLeft?o.from<=t:o.from0&&s)for(var b=0;bt)&&(!n||Dt(n,o.marker)<0)&&(n=o.marker)}return n}function It(e,t,n,r,i){var o=Ve(e,t),a=xt&&o.markedSpans;if(a)for(var s=0;s=0&&f<=0||c<=0&&f>=0)&&(c<=0&&(l.marker.inclusiveRight&&i.inclusiveLeft?et(u.to,n)>=0:et(u.to,n)>0)||c>=0&&(l.marker.inclusiveRight&&i.inclusiveLeft?et(u.from,r)<=0:et(u.from,r)<0)))return!0}}}function Rt(e){for(var t;t=Mt(e);)e=t.find(-1,!0).line;return e}function qt(e,t){var n=Ve(e,t),r=Rt(n);return n==r?t:Ke(r)}function Ft(e,t){if(t>e.lastLine())return t;var n,r=Ve(e,t);if(!zt(e,r))return t;for(;n=Pt(r);)r=n.find(1,!0).line;return Ke(r)+1}function zt(e,t){var n=xt&&t.markedSpans;if(n)for(var r=void 0,i=0;it.maxLineLength&&(t.maxLineLength=n,t.maxLine=e)}))}var Vt=function(e,t,n){this.text=e,Ot(this,t),this.height=n?n(this):1};function $t(e){e.parent=null,Ct(e)}Vt.prototype.lineNo=function(){return Ke(this)},ye(Vt);var Yt={},Gt={};function Kt(e,t){if(!e||/^\s*$/.test(e))return null;var n=t.addModeClass?Gt:Yt;return n[e]||(n[e]=e.replace(/\S+/g,"cm-$&"))}function Xt(e,t){var n=N("span",null,null,l?"padding-right: .1px":null),r={pre:N("pre",[n],"CodeMirror-line"),content:n,col:0,pos:0,cm:e,trailingSpace:!1,splitSpaces:e.getOption("lineWrapping")};t.measure={};for(var i=0;i<=(t.rest?t.rest.length:0);i++){var o=i?t.rest[i-1]:t.line,a=void 0;r.pos=0,r.addToken=Jt,Ae(e.display.measure)&&(a=ue(o,e.doc.direction))&&(r.addToken=Zt(r.addToken,a)),r.map=[],tn(o,r,ft(e,o,t!=e.display.externalMeasured&&Ke(o))),o.styleClasses&&(o.styleClasses.bgClass&&(r.bgClass=P(o.styleClasses.bgClass,r.bgClass||"")),o.styleClasses.textClass&&(r.textClass=P(o.styleClasses.textClass,r.textClass||""))),0==r.map.length&&r.map.push(0,0,r.content.appendChild(Oe(e.display.measure))),0==i?(t.measure.map=r.map,t.measure.cache={}):((t.measure.maps||(t.measure.maps=[])).push(r.map),(t.measure.caches||(t.measure.caches=[])).push({}))}if(l){var s=r.content.lastChild;(/\bcm-tab\b/.test(s.className)||s.querySelector&&s.querySelector(".cm-tab"))&&(r.content.className="cm-tab-wrap-hack")}return he(e,"renderLine",e,t.line,r.pre),r.pre.className&&(r.textClass=P(r.pre.className,r.textClass||"")),r}function Qt(e){var t=A("span","\u2022","cm-invalidchar");return t.title="\\u"+e.charCodeAt(0).toString(16),t.setAttribute("aria-label",t.title),t}function Jt(e,t,n,r,i,o,l){if(t){var u,c=e.splitSpaces?function(e,t){if(e.length>1&&!/ /.test(e))return e;for(var n=t,r="",i=0;iu&&f.from<=u);d++);if(f.to>=c)return e(n,r,i,o,a,s,l);e(n,r.slice(0,f.to-u),i,o,null,s,l),o=null,r=r.slice(f.to-u),u=f.to}}}function en(e,t,n,r){var i=!r&&n.widgetNode;i&&e.map.push(e.pos,e.pos+t,i),!r&&e.cm.display.input.needsContentAttribute&&(i||(i=e.content.appendChild(document.createElement("span"))),i.setAttribute("cm-marker",n.id)),i&&(e.cm.display.input.setUneditable(i),e.content.appendChild(i)),e.pos+=t,e.trailingSpace=!1}function tn(e,t,n){var r=e.markedSpans,i=e.text,o=0;if(r)for(var a,s,l,u,c,f,d,p=i.length,h=0,m=1,g="",v=0;;){if(v==h){l=u=c=s="",d=null,f=null,v=1/0;for(var y=[],b=void 0,w=0;wh||_.collapsed&&x.to==h&&x.from==h)){if(null!=x.to&&x.to!=h&&v>x.to&&(v=x.to,u=""),_.className&&(l+=" "+_.className),_.css&&(s=(s?s+";":"")+_.css),_.startStyle&&x.from==h&&(c+=" "+_.startStyle),_.endStyle&&x.to==v&&(b||(b=[])).push(_.endStyle,x.to),_.title&&((d||(d={})).title=_.title),_.attributes)for(var k in _.attributes)(d||(d={}))[k]=_.attributes[k];_.collapsed&&(!f||Dt(f.marker,_)<0)&&(f=x)}else x.from>h&&v>x.from&&(v=x.from)}if(b)for(var S=0;S=p)break;for(var T=Math.min(p,v);;){if(g){var C=h+g.length;if(!f){var O=C>T?g.slice(0,T-h):g;t.addToken(t,O,a?a+l:l,c,h+O.length==v?u:"",s,d)}if(C>=T){g=g.slice(T-h),h=T;break}h=C,c=""}g=i.slice(o,o=n[m++]),a=Kt(n[m++],t.cm.options)}}else for(var A=1;An)return{map:e.measure.maps[i],cache:e.measure.caches[i],before:!0}}function An(e,t,n,r){return Ln(e,Dn(e,t),n,r)}function Nn(e,t){if(t>=e.display.viewFrom&&t=n.lineN&&t2&&o.push((l.bottom+u.top)/2-n.top)}}o.push(n.bottom-n.top)}}(e,t.view,t.rect),t.hasHeights=!0),(o=function(e,t,n,r){var i,o=jn(t.map,n,r),l=o.node,u=o.start,c=o.end,f=o.collapse;if(3==l.nodeType){for(var d=0;d<4;d++){for(;u&&re(t.line.text.charAt(o.coverStart+u));)--u;for(;o.coverStart+c1}(e))return t;var n=screen.logicalXDPI/screen.deviceXDPI,r=screen.logicalYDPI/screen.deviceYDPI;return{left:t.left*n,right:t.right*n,top:t.top*r,bottom:t.bottom*r}}(e.display.measure,i))}else{var p;u>0&&(f=r="right"),i=e.options.lineWrapping&&(p=l.getClientRects()).length>1?p["right"==r?p.length-1:0]:l.getBoundingClientRect()}if(a&&s<9&&!u&&(!i||!i.left&&!i.right)){var h=l.parentNode.getClientRects()[0];i=h?{left:h.left,right:h.left+rr(e.display),top:h.top,bottom:h.bottom}:Pn}for(var m=i.top-t.rect.top,g=i.bottom-t.rect.top,v=(m+g)/2,y=t.view.measure.heights,b=0;bt)&&(i=(o=l-s)-1,t>=l&&(a="right")),null!=i){if(r=e[u+2],s==l&&n==(r.insertLeft?"left":"right")&&(a=n),"left"==n&&0==i)for(;u&&e[u-2]==e[u-3]&&e[u-1].insertLeft;)r=e[2+(u-=3)],a="left";if("right"==n&&i==l-s)for(;u=0&&(n=e[i]).left==n.right;i--);return n}function Rn(e){if(e.measure&&(e.measure.cache={},e.measure.heights=null,e.rest))for(var t=0;t=r.text.length?(l=r.text.length,u="before"):l<=0&&(l=0,u="after"),!s)return a("before"==u?l-1:l,"before"==u);function c(e,t,n){return a(n?e-1:e,1==s[t].level!=n)}var f=se(s,l,u),d=ae,p=c(l,f,"before"==u);return null!=d&&(p.other=c(l,d,"before"!=u)),p}function Yn(e,t){var n=0;t=at(e.doc,t),e.options.lineWrapping||(n=rr(e.display)*t.ch);var r=Ve(e.doc,t.line),i=Ht(r)+_n(e.display);return{left:n,right:n,top:i,bottom:i+r.height}}function Gn(e,t,n,r,i){var o=Ze(e,t,n);return o.xRel=i,r&&(o.outside=r),o}function Kn(e,t,n){var r=e.doc;if((n+=e.display.viewOffset)<0)return Gn(r.first,0,null,-1,-1);var i=Xe(r,n),o=r.first+r.size-1;if(i>o)return Gn(r.first+r.size-1,Ve(r,o).text.length,null,1,1);t<0&&(t=0);for(var a=Ve(r,i);;){var s=Zn(e,a,i,t,n),l=jt(a,s.ch+(s.xRel>0||s.outside>0?1:0));if(!l)return s;var u=l.find(1);if(u.line==i)return u;a=Ve(r,i=u.line)}}function Xn(e,t,n,r){r-=Hn(t);var i=t.text.length,o=oe((function(t){return Ln(e,n,t-1).bottom<=r}),i,0);return{begin:o,end:i=oe((function(t){return Ln(e,n,t).top>r}),o,i)}}function Qn(e,t,n,r){return n||(n=Dn(e,t)),Xn(e,t,n,Un(e,t,Ln(e,n,r),"line").top)}function Jn(e,t,n,r){return!(e.bottom<=n)&&(e.top>n||(r?e.left:e.right)>t)}function Zn(e,t,n,r,i){i-=Ht(t);var o=Dn(e,t),a=Hn(t),s=0,l=t.text.length,u=!0,c=ue(t,e.doc.direction);if(c){var f=(e.options.lineWrapping?tr:er)(e,t,n,o,c,r,i);s=(u=1!=f.level)?f.from:f.to-1,l=u?f.to:f.from-1}var d,p,h=null,m=null,g=oe((function(t){var n=Ln(e,o,t);return n.top+=a,n.bottom+=a,!!Jn(n,r,i,!1)&&(n.top<=i&&n.left<=r&&(h=t,m=n),!0)}),s,l),v=!1;if(m){var y=r-m.left=w.bottom?1:0}return Gn(n,g=ie(t.text,g,1),p,v,r-d)}function er(e,t,n,r,i,o,a){var s=oe((function(s){var l=i[s],u=1!=l.level;return Jn($n(e,Ze(n,u?l.to:l.from,u?"before":"after"),"line",t,r),o,a,!0)}),0,i.length-1),l=i[s];if(s>0){var u=1!=l.level,c=$n(e,Ze(n,u?l.from:l.to,u?"after":"before"),"line",t,r);Jn(c,o,a,!0)&&c.top>a&&(l=i[s-1])}return l}function tr(e,t,n,r,i,o,a){var s=Xn(e,t,r,a),l=s.begin,u=s.end;/\s/.test(t.text.charAt(u-1))&&u--;for(var c=null,f=null,d=0;d=u||p.to<=l)){var h=Ln(e,r,1!=p.level?Math.min(u,p.to)-1:Math.max(l,p.from)).right,m=hm)&&(c=p,f=m)}}return c||(c=i[i.length-1]),c.fromu&&(c={from:c.from,to:u,level:c.level}),c}function nr(e){if(null!=e.cachedTextHeight)return e.cachedTextHeight;if(null==Mn){Mn=A("pre",null,"CodeMirror-line-like");for(var t=0;t<49;++t)Mn.appendChild(document.createTextNode("x")),Mn.appendChild(A("br"));Mn.appendChild(document.createTextNode("x"))}O(e.measure,Mn);var n=Mn.offsetHeight/50;return n>3&&(e.cachedTextHeight=n),C(e.measure),n||1}function rr(e){if(null!=e.cachedCharWidth)return e.cachedCharWidth;var t=A("span","xxxxxxxxxx"),n=A("pre",[t],"CodeMirror-line-like");O(e.measure,n);var r=t.getBoundingClientRect(),i=(r.right-r.left)/10;return i>2&&(e.cachedCharWidth=i),i||10}function ir(e){for(var t=e.display,n={},r={},i=t.gutters.clientLeft,o=t.gutters.firstChild,a=0;o;o=o.nextSibling,++a){var s=e.display.gutterSpecs[a].className;n[s]=o.offsetLeft+o.clientLeft+i,r[s]=o.clientWidth}return{fixedPos:or(t),gutterTotalWidth:t.gutters.offsetWidth,gutterLeft:n,gutterWidth:r,wrapperWidth:t.wrapper.clientWidth}}function or(e){return e.scroller.getBoundingClientRect().left-e.sizer.getBoundingClientRect().left}function ar(e){var t=nr(e.display),n=e.options.lineWrapping,r=n&&Math.max(5,e.display.scroller.clientWidth/rr(e.display)-3);return function(i){if(zt(e.doc,i))return 0;var o=0;if(i.widgets)for(var a=0;a0&&(l=Ve(e.doc,u.line).text).length==u.ch){var c=q(l,l.length,e.options.tabSize)-l.length;u=Ze(u.line,Math.max(0,Math.round((o-Sn(e.display).left)/rr(e.display))-c))}return u}function ur(e,t){if(t>=e.display.viewTo)return null;if((t-=e.display.viewFrom)<0)return null;for(var n=e.display.view,r=0;rt)&&(i.updateLineNumbers=t),e.curOp.viewChanged=!0,t>=i.viewTo)xt&&qt(e.doc,t)i.viewFrom?dr(e):(i.viewFrom+=r,i.viewTo+=r);else if(t<=i.viewFrom&&n>=i.viewTo)dr(e);else if(t<=i.viewFrom){var o=pr(e,n,n+r,1);o?(i.view=i.view.slice(o.index),i.viewFrom=o.lineN,i.viewTo+=r):dr(e)}else if(n>=i.viewTo){var a=pr(e,t,t,-1);a?(i.view=i.view.slice(0,a.index),i.viewTo=a.lineN):dr(e)}else{var s=pr(e,t,t,-1),l=pr(e,n,n+r,1);s&&l?(i.view=i.view.slice(0,s.index).concat(rn(e,s.lineN,l.lineN)).concat(i.view.slice(l.index)),i.viewTo+=r):dr(e)}var u=i.externalMeasured;u&&(n=i.lineN&&t=r.viewTo)){var o=r.view[ur(e,t)];if(null!=o.node){var a=o.changes||(o.changes=[]);-1==z(a,n)&&a.push(n)}}}function dr(e){e.display.viewFrom=e.display.viewTo=e.doc.first,e.display.view=[],e.display.viewOffset=0}function pr(e,t,n,r){var i,o=ur(e,t),a=e.display.view;if(!xt||n==e.doc.first+e.doc.size)return{index:o,lineN:n};for(var s=e.display.viewFrom,l=0;l0){if(o==a.length-1)return null;i=s+a[o].size-t,o++}else i=s-t;t+=i,n+=i}for(;qt(e.doc,n)!=n;){if(o==(r<0?0:a.length-1))return null;n+=r*a[o-(r<0?1:0)].size,o+=r}return{index:o,lineN:n}}function hr(e){for(var t=e.display.view,n=0,r=0;r=e.display.viewTo||s.to().linet||t==n&&a.to==t)&&(r(Math.max(a.from,t),Math.min(a.to,n),1==a.level?"rtl":"ltr",o),i=!0)}i||r(t,n,"ltr")}(m,n||0,null==r?d:r,(function(e,t,i,f){var g="ltr"==i,v=p(e,g?"left":"right"),y=p(t-1,g?"right":"left"),b=null==n&&0==e,w=null==r&&t==d,x=0==f,_=!m||f==m.length-1;if(y.top-v.top<=3){var k=(u?w:b)&&_,S=(u?b:w)&&x?s:(g?v:y).left,E=k?l:(g?y:v).right;c(S,v.top,E-S,v.bottom)}else{var T,C,O,A;g?(T=u&&b&&x?s:v.left,C=u?l:h(e,i,"before"),O=u?s:h(t,i,"after"),A=u&&w&&_?l:y.right):(T=u?h(e,i,"before"):s,C=!u&&b&&x?l:v.right,O=!u&&w&&_?s:y.left,A=u?h(t,i,"after"):l),c(T,v.top,C-T,v.bottom),v.bottom0?t.blinker=setInterval((function(){e.hasFocus()||Sr(e),t.cursorDiv.style.visibility=(n=!n)?"":"hidden"}),e.options.cursorBlinkRate):e.options.cursorBlinkRate<0&&(t.cursorDiv.style.visibility="hidden")}}function xr(e){e.hasFocus()||(e.display.input.focus(),e.state.focused||kr(e))}function _r(e){e.state.delayingBlurEvent=!0,setTimeout((function(){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1,e.state.focused&&Sr(e))}),100)}function kr(e,t){e.state.delayingBlurEvent&&!e.state.draggingText&&(e.state.delayingBlurEvent=!1),"nocursor"!=e.options.readOnly&&(e.state.focused||(he(e,"focus",e,t),e.state.focused=!0,M(e.display.wrapper,"CodeMirror-focused"),e.curOp||e.display.selForContextMenu==e.doc.sel||(e.display.input.reset(),l&&setTimeout((function(){return e.display.input.reset(!0)}),20)),e.display.input.receivedFocus()),wr(e))}function Sr(e,t){e.state.delayingBlurEvent||(e.state.focused&&(he(e,"blur",e,t),e.state.focused=!1,T(e.display.wrapper,"CodeMirror-focused")),clearInterval(e.display.blinker),setTimeout((function(){e.state.focused||(e.display.shift=!1)}),150))}function Er(e){for(var t=e.display,n=t.lineDiv.offsetTop,r=0;r.005||d<-.005)&&(Ge(i.line,l),Tr(i.line),i.rest))for(var p=0;pe.display.sizerWidth){var h=Math.ceil(u/rr(e.display));h>e.display.maxLineLength&&(e.display.maxLineLength=h,e.display.maxLine=i.line,e.display.maxLineChanged=!0)}}}}function Tr(e){if(e.widgets)for(var t=0;t=a&&(o=Xe(t,Ht(Ve(t,l))-e.wrapper.clientHeight),a=l)}return{from:o,to:Math.max(a,o+1)}}function Or(e,t){var n=e.display,r=nr(e.display);t.top<0&&(t.top=0);var i=e.curOp&&null!=e.curOp.scrollTop?e.curOp.scrollTop:n.scroller.scrollTop,o=Cn(e),a={};t.bottom-t.top>o&&(t.bottom=t.top+o);var s=e.doc.height+kn(n),l=t.tops-r;if(t.topi+o){var c=Math.min(t.top,(u?s:t.bottom)-o);c!=i&&(a.scrollTop=c)}var f=e.options.fixedGutter?0:n.gutters.offsetWidth,d=e.curOp&&null!=e.curOp.scrollLeft?e.curOp.scrollLeft:n.scroller.scrollLeft-f,p=Tn(e)-n.gutters.offsetWidth,h=t.right-t.left>p;return h&&(t.right=t.left+p),t.left<10?a.scrollLeft=0:t.leftp+d-3&&(a.scrollLeft=t.right+(h?0:10)-p),a}function Ar(e,t){null!=t&&(Lr(e),e.curOp.scrollTop=(null==e.curOp.scrollTop?e.doc.scrollTop:e.curOp.scrollTop)+t)}function Nr(e){Lr(e);var t=e.getCursor();e.curOp.scrollToPos={from:t,to:t,margin:e.options.cursorScrollMargin}}function Dr(e,t,n){null==t&&null==n||Lr(e),null!=t&&(e.curOp.scrollLeft=t),null!=n&&(e.curOp.scrollTop=n)}function Lr(e){var t=e.curOp.scrollToPos;t&&(e.curOp.scrollToPos=null,Mr(e,Yn(e,t.from),Yn(e,t.to),t.margin))}function Mr(e,t,n,r){var i=Or(e,{left:Math.min(t.left,n.left),top:Math.min(t.top,n.top)-r,right:Math.max(t.right,n.right),bottom:Math.max(t.bottom,n.bottom)+r});Dr(e,i.scrollLeft,i.scrollTop)}function Pr(e,t){Math.abs(e.doc.scrollTop-t)<2||(n||si(e,{top:t}),jr(e,t,!0),n&&si(e),ni(e,100))}function jr(e,t,n){t=Math.max(0,Math.min(e.display.scroller.scrollHeight-e.display.scroller.clientHeight,t)),(e.display.scroller.scrollTop!=t||n)&&(e.doc.scrollTop=t,e.display.scrollbars.setScrollTop(t),e.display.scroller.scrollTop!=t&&(e.display.scroller.scrollTop=t))}function Ir(e,t,n,r){t=Math.max(0,Math.min(t,e.display.scroller.scrollWidth-e.display.scroller.clientWidth)),(n?t==e.doc.scrollLeft:Math.abs(e.doc.scrollLeft-t)<2)&&!r||(e.doc.scrollLeft=t,ci(e),e.display.scroller.scrollLeft!=t&&(e.display.scroller.scrollLeft=t),e.display.scrollbars.setScrollLeft(t))}function Rr(e){var t=e.display,n=t.gutters.offsetWidth,r=Math.round(e.doc.height+kn(e.display));return{clientHeight:t.scroller.clientHeight,viewHeight:t.wrapper.clientHeight,scrollWidth:t.scroller.scrollWidth,clientWidth:t.scroller.clientWidth,viewWidth:t.wrapper.clientWidth,barLeft:e.options.fixedGutter?n:0,docHeight:r,scrollHeight:r+En(e)+t.barHeight,nativeBarWidth:t.nativeBarWidth,gutterWidth:n}}var qr=function(e,t,n){this.cm=n;var r=this.vert=A("div",[A("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),i=this.horiz=A("div",[A("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");r.tabIndex=i.tabIndex=-1,e(r),e(i),fe(r,"scroll",(function(){r.clientHeight&&t(r.scrollTop,"vertical")})),fe(i,"scroll",(function(){i.clientWidth&&t(i.scrollLeft,"horizontal")})),this.checkedZeroWidth=!1,a&&s<8&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")};qr.prototype.update=function(e){var t=e.scrollWidth>e.clientWidth+1,n=e.scrollHeight>e.clientHeight+1,r=e.nativeBarWidth;if(n){this.vert.style.display="block",this.vert.style.bottom=t?r+"px":"0";var i=e.viewHeight-(t?r:0);this.vert.firstChild.style.height=Math.max(0,e.scrollHeight-e.clientHeight+i)+"px"}else this.vert.style.display="",this.vert.firstChild.style.height="0";if(t){this.horiz.style.display="block",this.horiz.style.right=n?r+"px":"0",this.horiz.style.left=e.barLeft+"px";var o=e.viewWidth-e.barLeft-(n?r:0);this.horiz.firstChild.style.width=Math.max(0,e.scrollWidth-e.clientWidth+o)+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&e.clientHeight>0&&(0==r&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:n?r:0,bottom:t?r:0}},qr.prototype.setScrollLeft=function(e){this.horiz.scrollLeft!=e&&(this.horiz.scrollLeft=e),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz,"horiz")},qr.prototype.setScrollTop=function(e){this.vert.scrollTop!=e&&(this.vert.scrollTop=e),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert,"vert")},qr.prototype.zeroWidthHack=function(){var e=y&&!p?"12px":"18px";this.horiz.style.height=this.vert.style.width=e,this.horiz.style.pointerEvents=this.vert.style.pointerEvents="none",this.disableHoriz=new F,this.disableVert=new F},qr.prototype.enableZeroWidthBar=function(e,t,n){e.style.pointerEvents="auto",t.set(1e3,(function r(){var i=e.getBoundingClientRect();("vert"==n?document.elementFromPoint(i.right-1,(i.top+i.bottom)/2):document.elementFromPoint((i.right+i.left)/2,i.bottom-1))!=e?e.style.pointerEvents="none":t.set(1e3,r)}))},qr.prototype.clear=function(){var e=this.horiz.parentNode;e.removeChild(this.horiz),e.removeChild(this.vert)};var Fr=function(){};function zr(e,t){t||(t=Rr(e));var n=e.display.barWidth,r=e.display.barHeight;Br(e,t);for(var i=0;i<4&&n!=e.display.barWidth||r!=e.display.barHeight;i++)n!=e.display.barWidth&&e.options.lineWrapping&&Er(e),Br(e,Rr(e)),n=e.display.barWidth,r=e.display.barHeight}function Br(e,t){var n=e.display,r=n.scrollbars.update(t);n.sizer.style.paddingRight=(n.barWidth=r.right)+"px",n.sizer.style.paddingBottom=(n.barHeight=r.bottom)+"px",n.heightForcer.style.borderBottom=r.bottom+"px solid transparent",r.right&&r.bottom?(n.scrollbarFiller.style.display="block",n.scrollbarFiller.style.height=r.bottom+"px",n.scrollbarFiller.style.width=r.right+"px"):n.scrollbarFiller.style.display="",r.bottom&&e.options.coverGutterNextToScrollbar&&e.options.fixedGutter?(n.gutterFiller.style.display="block",n.gutterFiller.style.height=r.bottom+"px",n.gutterFiller.style.width=t.gutterWidth+"px"):n.gutterFiller.style.display=""}Fr.prototype.update=function(){return{bottom:0,right:0}},Fr.prototype.setScrollLeft=function(){},Fr.prototype.setScrollTop=function(){},Fr.prototype.clear=function(){};var Hr={native:qr,null:Fr};function Ur(e){e.display.scrollbars&&(e.display.scrollbars.clear(),e.display.scrollbars.addClass&&T(e.display.wrapper,e.display.scrollbars.addClass)),e.display.scrollbars=new Hr[e.options.scrollbarStyle]((function(t){e.display.wrapper.insertBefore(t,e.display.scrollbarFiller),fe(t,"mousedown",(function(){e.state.focused&&setTimeout((function(){return e.display.input.focus()}),0)})),t.setAttribute("cm-not-content","true")}),(function(t,n){"horizontal"==n?Ir(e,t):Pr(e,t)}),e),e.display.scrollbars.addClass&&M(e.display.wrapper,e.display.scrollbars.addClass)}var Wr=0;function Vr(e){var t;e.curOp={cm:e,viewChanged:!1,startHeight:e.doc.height,forceUpdate:!1,updateInput:0,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++Wr,markArrays:null},t=e.curOp,on?on.ops.push(t):t.ownsGroup=on={ops:[t],delayedCallbacks:[]}}function $r(e){var t=e.curOp;t&&function(e,t){var n=e.ownsGroup;if(n)try{!function(e){var t=e.delayedCallbacks,n=0;do{for(;n=n.viewTo)||n.maxLineChanged&&t.options.lineWrapping,e.update=e.mustUpdate&&new ii(t,e.mustUpdate&&{top:e.scrollTop,ensure:e.scrollToPos},e.forceUpdate)}function Gr(e){e.updatedDisplay=e.mustUpdate&&oi(e.cm,e.update)}function Kr(e){var t=e.cm,n=t.display;e.updatedDisplay&&Er(t),e.barMeasure=Rr(t),n.maxLineChanged&&!t.options.lineWrapping&&(e.adjustWidthTo=An(t,n.maxLine,n.maxLine.text.length).left+3,t.display.sizerWidth=e.adjustWidthTo,e.barMeasure.scrollWidth=Math.max(n.scroller.clientWidth,n.sizer.offsetLeft+e.adjustWidthTo+En(t)+t.display.barWidth),e.maxScrollLeft=Math.max(0,n.sizer.offsetLeft+e.adjustWidthTo-Tn(t))),(e.updatedDisplay||e.selectionChanged)&&(e.preparedSelection=n.input.prepareSelection())}function Xr(e){var t=e.cm;null!=e.adjustWidthTo&&(t.display.sizer.style.minWidth=e.adjustWidthTo+"px",e.maxScrollLeft(window.innerHeight||document.documentElement.clientHeight)&&(i=!1),null!=i&&!h){var o=A("div","\u200b",null,"position: absolute;\n top: "+(t.top-n.viewOffset-_n(e.display))+"px;\n height: "+(t.bottom-t.top+En(e)+n.barHeight)+"px;\n left: "+t.left+"px; width: "+Math.max(2,t.right-t.left)+"px;");e.display.lineSpace.appendChild(o),o.scrollIntoView(i),e.display.lineSpace.removeChild(o)}}}(t,function(e,t,n,r){var i;null==r&&(r=0),e.options.lineWrapping||t!=n||(n="before"==t.sticky?Ze(t.line,t.ch+1,"before"):t,t=t.ch?Ze(t.line,"before"==t.sticky?t.ch-1:t.ch,"after"):t);for(var o=0;o<5;o++){var a=!1,s=$n(e,t),l=n&&n!=t?$n(e,n):s,u=Or(e,i={left:Math.min(s.left,l.left),top:Math.min(s.top,l.top)-r,right:Math.max(s.left,l.left),bottom:Math.max(s.bottom,l.bottom)+r}),c=e.doc.scrollTop,f=e.doc.scrollLeft;if(null!=u.scrollTop&&(Pr(e,u.scrollTop),Math.abs(e.doc.scrollTop-c)>1&&(a=!0)),null!=u.scrollLeft&&(Ir(e,u.scrollLeft),Math.abs(e.doc.scrollLeft-f)>1&&(a=!0)),!a)break}return i}(t,at(r,e.scrollToPos.from),at(r,e.scrollToPos.to),e.scrollToPos.margin));var i=e.maybeHiddenMarkers,o=e.maybeUnhiddenMarkers;if(i)for(var a=0;a=e.display.viewTo)){var n=+new Date+e.options.workTime,r=dt(e,t.highlightFrontier),i=[];t.iter(r.line,Math.min(t.first+t.size,e.display.viewTo+500),(function(o){if(r.line>=e.display.viewFrom){var a=o.styles,s=o.text.length>e.options.maxHighlightLength?Be(t.mode,r.state):null,l=ct(e,o,r,!0);s&&(r.state=s),o.styles=l.styles;var u=o.styleClasses,c=l.classes;c?o.styleClasses=c:u&&(o.styleClasses=null);for(var f=!a||a.length!=o.styles.length||u!=c&&(!u||!c||u.bgClass!=c.bgClass||u.textClass!=c.textClass),d=0;!f&&dn)return ni(e,e.options.workDelay),!0})),t.highlightFrontier=r.line,t.modeFrontier=Math.max(t.modeFrontier,r.line),i.length&&Jr(e,(function(){for(var t=0;t=n.viewFrom&&t.visible.to<=n.viewTo&&(null==n.updateLineNumbers||n.updateLineNumbers>=n.viewTo)&&n.renderedView==n.view&&0==hr(e))return!1;fi(e)&&(dr(e),t.dims=ir(e));var i=r.first+r.size,o=Math.max(t.visible.from-e.options.viewportMargin,r.first),a=Math.min(i,t.visible.to+e.options.viewportMargin);n.viewFroma&&n.viewTo-a<20&&(a=Math.min(i,n.viewTo)),xt&&(o=qt(e.doc,o),a=Ft(e.doc,a));var s=o!=n.viewFrom||a!=n.viewTo||n.lastWrapHeight!=t.wrapperHeight||n.lastWrapWidth!=t.wrapperWidth;!function(e,t,n){var r=e.display;0==r.view.length||t>=r.viewTo||n<=r.viewFrom?(r.view=rn(e,t,n),r.viewFrom=t):(r.viewFrom>t?r.view=rn(e,t,r.viewFrom).concat(r.view):r.viewFromn&&(r.view=r.view.slice(0,ur(e,n)))),r.viewTo=n}(e,o,a),n.viewOffset=Ht(Ve(e.doc,n.viewFrom)),e.display.mover.style.top=n.viewOffset+"px";var u=hr(e);if(!s&&0==u&&!t.force&&n.renderedView==n.view&&(null==n.updateLineNumbers||n.updateLineNumbers>=n.viewTo))return!1;var c=function(e){if(e.hasFocus())return null;var t=L();if(!t||!D(e.display.lineDiv,t))return null;var n={activeElt:t};if(window.getSelection){var r=window.getSelection();r.anchorNode&&r.extend&&D(e.display.lineDiv,r.anchorNode)&&(n.anchorNode=r.anchorNode,n.anchorOffset=r.anchorOffset,n.focusNode=r.focusNode,n.focusOffset=r.focusOffset)}return n}(e);return u>4&&(n.lineDiv.style.display="none"),function(e,t,n){var r=e.display,i=e.options.lineNumbers,o=r.lineDiv,a=o.firstChild;function s(t){var n=t.nextSibling;return l&&y&&e.display.currentWheelTarget==t?t.style.display="none":t.parentNode.removeChild(t),n}for(var u=r.view,c=r.viewFrom,f=0;f-1&&(p=!1),un(e,d,c,n)),p&&(C(d.lineNumber),d.lineNumber.appendChild(document.createTextNode(Je(e.options,c)))),a=d.node.nextSibling}else{var h=gn(e,d,c,n);o.insertBefore(h,a)}c+=d.size}for(;a;)a=s(a)}(e,n.updateLineNumbers,t.dims),u>4&&(n.lineDiv.style.display=""),n.renderedView=n.view,function(e){if(e&&e.activeElt&&e.activeElt!=L()&&(e.activeElt.focus(),!/^(INPUT|TEXTAREA)$/.test(e.activeElt.nodeName)&&e.anchorNode&&D(document.body,e.anchorNode)&&D(document.body,e.focusNode))){var t=window.getSelection(),n=document.createRange();n.setEnd(e.anchorNode,e.anchorOffset),n.collapse(!1),t.removeAllRanges(),t.addRange(n),t.extend(e.focusNode,e.focusOffset)}}(c),C(n.cursorDiv),C(n.selectionDiv),n.gutters.style.height=n.sizer.style.minHeight=0,s&&(n.lastWrapHeight=t.wrapperHeight,n.lastWrapWidth=t.wrapperWidth,ni(e,400)),n.updateLineNumbers=null,!0}function ai(e,t){for(var n=t.viewport,r=!0;;r=!1){if(r&&e.options.lineWrapping&&t.oldDisplayWidth!=Tn(e))r&&(t.visible=Cr(e.display,e.doc,n));else if(n&&null!=n.top&&(n={top:Math.min(e.doc.height+kn(e.display)-Cn(e),n.top)}),t.visible=Cr(e.display,e.doc,n),t.visible.from>=e.display.viewFrom&&t.visible.to<=e.display.viewTo)break;if(!oi(e,t))break;Er(e);var i=Rr(e);mr(e),zr(e,i),ui(e,i),t.force=!1}t.signal(e,"update",e),e.display.viewFrom==e.display.reportedViewFrom&&e.display.viewTo==e.display.reportedViewTo||(t.signal(e,"viewportChange",e,e.display.viewFrom,e.display.viewTo),e.display.reportedViewFrom=e.display.viewFrom,e.display.reportedViewTo=e.display.viewTo)}function si(e,t){var n=new ii(e,t);if(oi(e,n)){Er(e),ai(e,n);var r=Rr(e);mr(e),zr(e,r),ui(e,r),n.finish()}}function li(e){var t=e.gutters.offsetWidth;e.sizer.style.marginLeft=t+"px",sn(e,"gutterChanged",e)}function ui(e,t){e.display.sizer.style.minHeight=t.docHeight+"px",e.display.heightForcer.style.top=t.docHeight+"px",e.display.gutters.style.height=t.docHeight+e.display.barHeight+En(e)+"px"}function ci(e){var t=e.display,n=t.view;if(t.alignWidgets||t.gutters.firstChild&&e.options.fixedGutter){for(var r=or(t)-t.scroller.scrollLeft+e.doc.scrollLeft,i=t.gutters.offsetWidth,o=r+"px",a=0;as.clientWidth,c=s.scrollHeight>s.clientHeight;if(i&&u||o&&c){if(o&&y&&l)e:for(var d=t.target,p=a.view;d!=s;d=d.parentNode)for(var h=0;h=0&&et(e,r.to())<=0)return n}return-1};var _i=function(e,t){this.anchor=e,this.head=t};function ki(e,t,n){var r=e&&e.options.selectionsMayTouch,i=t[n];t.sort((function(e,t){return et(e.from(),t.from())})),n=z(t,i);for(var o=1;o0:l>=0){var u=it(s.from(),a.from()),c=rt(s.to(),a.to()),f=s.empty()?a.from()==a.head:s.from()==s.head;o<=n&&--n,t.splice(--o,2,new _i(f?c:u,f?u:c))}}return new xi(t,n)}function Si(e,t){return new xi([new _i(e,t||e)],0)}function Ei(e){return e.text?Ze(e.from.line+e.text.length-1,G(e.text).length+(1==e.text.length?e.from.ch:0)):e.to}function Ti(e,t){if(et(e,t.from)<0)return e;if(et(e,t.to)<=0)return Ei(t);var n=e.line+t.text.length-(t.to.line-t.from.line)-1,r=e.ch;return e.line==t.to.line&&(r+=Ei(t).ch-t.to.ch),Ze(n,r)}function Ci(e,t){for(var n=[],r=0;r1&&e.remove(s.line+1,h-1),e.insert(s.line+1,v)}sn(e,"change",e,t)}function Mi(e,t,n){!function e(r,i,o){if(r.linked)for(var a=0;as-(e.cm?e.cm.options.historyEventDelay:500)||"*"==t.origin.charAt(0)))&&(o=function(e,t){return t?(qi(e.done),G(e.done)):e.done.length&&!G(e.done).ranges?G(e.done):e.done.length>1&&!e.done[e.done.length-2].ranges?(e.done.pop(),G(e.done)):void 0}(i,i.lastOp==r)))a=G(o.changes),0==et(t.from,t.to)&&0==et(t.from,a.to)?a.to=Ei(t):o.changes.push(Ri(e,t));else{var l=G(i.done);for(l&&l.ranges||Bi(e.sel,i.done),o={changes:[Ri(e,t)],generation:i.generation},i.done.push(o);i.done.length>i.undoDepth;)i.done.shift(),i.done[0].ranges||i.done.shift()}i.done.push(n),i.generation=++i.maxGeneration,i.lastModTime=i.lastSelTime=s,i.lastOp=i.lastSelOp=r,i.lastOrigin=i.lastSelOrigin=t.origin,a||he(e,"historyAdded")}function zi(e,t,n,r){var i=e.history,o=r&&r.origin;n==i.lastSelOp||o&&i.lastSelOrigin==o&&(i.lastModTime==i.lastSelTime&&i.lastOrigin==o||function(e,t,n,r){var i=t.charAt(0);return"*"==i||"+"==i&&n.ranges.length==r.ranges.length&&n.somethingSelected()==r.somethingSelected()&&new Date-e.history.lastSelTime<=(e.cm?e.cm.options.historyEventDelay:500)}(e,o,G(i.done),t))?i.done[i.done.length-1]=t:Bi(t,i.done),i.lastSelTime=+new Date,i.lastSelOrigin=o,i.lastSelOp=n,r&&!1!==r.clearRedo&&qi(i.undone)}function Bi(e,t){var n=G(t);n&&n.ranges&&n.equals(e)||t.push(e)}function Hi(e,t,n,r){var i=t["spans_"+e.id],o=0;e.iter(Math.max(e.first,n),Math.min(e.first+e.size,r),(function(n){n.markedSpans&&((i||(i=t["spans_"+e.id]={}))[o]=n.markedSpans),++o}))}function Ui(e){if(!e)return null;for(var t,n=0;n-1&&(G(s)[f]=u[f],delete u[f])}}}return r}function $i(e,t,n,r){if(r){var i=e.anchor;if(n){var o=et(t,i)<0;o!=et(n,i)<0?(i=t,t=n):o!=et(t,n)<0&&(t=n)}return new _i(i,t)}return new _i(n||t,t)}function Yi(e,t,n,r,i){null==i&&(i=e.cm&&(e.cm.display.shift||e.extend)),Ji(e,new xi([$i(e.sel.primary(),t,n,i)],0),r)}function Gi(e,t,n){for(var r=[],i=e.cm&&(e.cm.display.shift||e.extend),o=0;o=t.ch:s.to>t.ch))){if(i&&(he(l,"beforeCursorEnter"),l.explicitlyCleared)){if(o.markedSpans){--a;continue}break}if(!l.atomic)continue;if(n){var f=l.find(r<0?1:-1),d=void 0;if((r<0?c:u)&&(f=oo(e,f,-r,f&&f.line==t.line?o:null)),f&&f.line==t.line&&(d=et(f,n))&&(r<0?d<0:d>0))return ro(e,f,t,r,i)}var p=l.find(r<0?-1:1);return(r<0?u:c)&&(p=oo(e,p,r,p.line==t.line?o:null)),p?ro(e,p,t,r,i):null}}return t}function io(e,t,n,r,i){var o=r||1,a=ro(e,t,n,o,i)||!i&&ro(e,t,n,o,!0)||ro(e,t,n,-o,i)||!i&&ro(e,t,n,-o,!0);return a||(e.cantEdit=!0,Ze(e.first,0))}function oo(e,t,n,r){return n<0&&0==t.ch?t.line>e.first?at(e,Ze(t.line-1)):null:n>0&&t.ch==(r||Ve(e,t.line)).text.length?t.line0)){var c=[l,1],f=et(u.from,s.from),d=et(u.to,s.to);(f<0||!a.inclusiveLeft&&!f)&&c.push({from:u.from,to:s.from}),(d>0||!a.inclusiveRight&&!d)&&c.push({from:s.to,to:u.to}),i.splice.apply(i,c),l+=c.length-3}}return i}(e,t.from,t.to);if(r)for(var i=r.length-1;i>=0;--i)uo(e,{from:r[i].from,to:r[i].to,text:i?[""]:t.text,origin:t.origin});else uo(e,t)}}function uo(e,t){if(1!=t.text.length||""!=t.text[0]||0!=et(t.from,t.to)){var n=Ci(e,t);Fi(e,t,n,e.cm?e.cm.curOp.id:NaN),po(e,t,n,Et(e,t));var r=[];Mi(e,(function(e,n){n||-1!=z(r,e.history)||(vo(e.history,t),r.push(e.history)),po(e,t,null,Et(e,t))}))}}function co(e,t,n){var r=e.cm&&e.cm.state.suppressEdits;if(!r||n){for(var i,o=e.history,a=e.sel,s="undo"==t?o.done:o.undone,l="undo"==t?o.undone:o.done,u=0;u=0;--p){var h=d(p);if(h)return h.v}}}}function fo(e,t){if(0!=t&&(e.first+=t,e.sel=new xi(K(e.sel.ranges,(function(e){return new _i(Ze(e.anchor.line+t,e.anchor.ch),Ze(e.head.line+t,e.head.ch))})),e.sel.primIndex),e.cm)){cr(e.cm,e.first,e.first-t,t);for(var n=e.cm.display,r=n.viewFrom;re.lastLine())){if(t.from.lineo&&(t={from:t.from,to:Ze(o,Ve(e,o).text.length),text:[t.text[0]],origin:t.origin}),t.removed=$e(e,t.from,t.to),n||(n=Ci(e,t)),e.cm?function(e,t,n){var r=e.doc,i=e.display,o=t.from,a=t.to,s=!1,l=o.line;e.options.lineWrapping||(l=Ke(Rt(Ve(r,o.line))),r.iter(l,a.line+1,(function(e){if(e==i.maxLine)return s=!0,!0}))),r.sel.contains(t.from,t.to)>-1&&ge(e),Li(r,t,n,ar(e)),e.options.lineWrapping||(r.iter(l,o.line+t.text.length,(function(e){var t=Ut(e);t>i.maxLineLength&&(i.maxLine=e,i.maxLineLength=t,i.maxLineChanged=!0,s=!1)})),s&&(e.curOp.updateMaxLine=!0)),function(e,t){if(e.modeFrontier=Math.min(e.modeFrontier,t),!(e.highlightFrontiern;r--){var i=Ve(e,r).stateAfter;if(i&&(!(i instanceof lt)||r+i.lookAhead1||!(this.children[0]instanceof bo))){var s=[];this.collapse(s),this.children=[new bo(s)],this.children[0].parent=this}},collapse:function(e){for(var t=0;t50){for(var a=i.lines.length%25+25,s=a;s10);e.parent.maybeSpill()}},iterN:function(e,t,n){for(var r=0;r0||0==a&&!1!==o.clearWhenEmpty)return o;if(o.replacedWith&&(o.collapsed=!0,o.widgetNode=N("span",[o.replacedWith],"CodeMirror-widget"),r.handleMouseEvents||o.widgetNode.setAttribute("cm-ignore-events","true"),r.insertLeft&&(o.widgetNode.insertLeft=!0)),o.collapsed){if(It(e,t.line,t,n,o)||t.line!=n.line&&It(e,n.line,t,n,o))throw new Error("Inserting collapsed marker partially overlapping an existing one");xt=!0}o.addToHistory&&Fi(e,{from:t,to:n,origin:"markText"},e.sel,NaN);var s,l=t.line,u=e.cm;if(e.iter(l,n.line+1,(function(r){u&&o.collapsed&&!u.options.lineWrapping&&Rt(r)==u.display.maxLine&&(s=!0),o.collapsed&&l!=t.line&&Ge(r,0),function(e,t,n){var r=n&&window.WeakSet&&(n.markedSpans||(n.markedSpans=new WeakSet));r&&r.has(e.markedSpans)?e.markedSpans.push(t):(e.markedSpans=e.markedSpans?e.markedSpans.concat([t]):[t],r&&r.add(e.markedSpans)),t.marker.attachLine(e)}(r,new _t(o,l==t.line?t.ch:null,l==n.line?n.ch:null),e.cm&&e.cm.curOp),++l})),o.collapsed&&e.iter(t.line,n.line+1,(function(t){zt(e,t)&&Ge(t,0)})),o.clearOnEnter&&fe(o,"beforeCursorEnter",(function(){return o.clear()})),o.readOnly&&(wt=!0,(e.history.done.length||e.history.undone.length)&&e.clearHistory()),o.collapsed&&(o.id=++ko,o.atomic=!0),u){if(s&&(u.curOp.updateMaxLine=!0),o.collapsed)cr(u,t.line,n.line+1);else if(o.className||o.startStyle||o.endStyle||o.css||o.attributes||o.title)for(var c=t.line;c<=n.line;c++)fr(u,c,"text");o.atomic&&to(u.doc),sn(u,"markerAdded",u,o)}return o}So.prototype.clear=function(){if(!this.explicitlyCleared){var e=this.doc.cm,t=e&&!e.curOp;if(t&&Vr(e),ve(this,"clear")){var n=this.find();n&&sn(this,"clear",n.from,n.to)}for(var r=null,i=null,o=0;oe.display.maxLineLength&&(e.display.maxLine=u,e.display.maxLineLength=c,e.display.maxLineChanged=!0)}null!=r&&e&&this.collapsed&&cr(e,r,i+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,e&&to(e.doc)),e&&sn(e,"markerCleared",e,this,r,i),t&&$r(e),this.parent&&this.parent.clear()}},So.prototype.find=function(e,t){var n,r;null==e&&"bookmark"==this.type&&(e=1);for(var i=0;i=0;l--)lo(this,r[l]);s?Qi(this,s):this.cm&&Nr(this.cm)})),undo:ti((function(){co(this,"undo")})),redo:ti((function(){co(this,"redo")})),undoSelection:ti((function(){co(this,"undo",!0)})),redoSelection:ti((function(){co(this,"redo",!0)})),setExtending:function(e){this.extend=e},getExtending:function(){return this.extend},historySize:function(){for(var e=this.history,t=0,n=0,r=0;r=e.ch)&&t.push(i.marker.parent||i.marker)}return t},findMarks:function(e,t,n){e=at(this,e),t=at(this,t);var r=[],i=e.line;return this.iter(e.line,t.line+1,(function(o){var a=o.markedSpans;if(a)for(var s=0;s=l.to||null==l.from&&i!=e.line||null!=l.from&&i==t.line&&l.from>=t.ch||n&&!n(l.marker)||r.push(l.marker.parent||l.marker)}++i})),r},getAllMarks:function(){var e=[];return this.iter((function(t){var n=t.markedSpans;if(n)for(var r=0;re)return t=e,!0;e-=o,++n})),at(this,Ze(n,t))},indexFromPos:function(e){var t=(e=at(this,e)).ch;if(e.linet&&(t=e.from),null!=e.to&&e.to-1)return t.state.draggingText(e),void setTimeout((function(){return t.display.input.focus()}),20);try{var f=e.dataTransfer.getData("Text");if(f){var d;if(t.state.draggingText&&!t.state.draggingText.copy&&(d=t.listSelections()),Zi(t.doc,Si(n,n)),d)for(var p=0;p=0;t--)ho(e.doc,"",r[t].from,r[t].to,"+delete");Nr(e)}))}function Qo(e,t,n){var r=ie(e.text,t+n,n);return r<0||r>e.text.length?null:r}function Jo(e,t,n){var r=Qo(e,t.ch,n);return null==r?null:new Ze(t.line,r,n<0?"after":"before")}function Zo(e,t,n,r,i){if(e){"rtl"==t.doc.direction&&(i=-i);var o=ue(n,t.doc.direction);if(o){var a,s=i<0?G(o):o[0],l=i<0==(1==s.level)?"after":"before";if(s.level>0||"rtl"==t.doc.direction){var u=Dn(t,n);a=i<0?n.text.length-1:0;var c=Ln(t,u,a).top;a=oe((function(e){return Ln(t,u,e).top==c}),i<0==(1==s.level)?s.from:s.to-1,a),"before"==l&&(a=Qo(n,a,1))}else a=i<0?s.to:s.from;return new Ze(r,a,l)}}return new Ze(r,i<0?n.text.length:0,i<0?"before":"after")}Ho.basic={Left:"goCharLeft",Right:"goCharRight",Up:"goLineUp",Down:"goLineDown",End:"goLineEnd",Home:"goLineStartSmart",PageUp:"goPageUp",PageDown:"goPageDown",Delete:"delCharAfter",Backspace:"delCharBefore","Shift-Backspace":"delCharBefore",Tab:"defaultTab","Shift-Tab":"indentAuto",Enter:"newlineAndIndent",Insert:"toggleOverwrite",Esc:"singleSelection"},Ho.pcDefault={"Ctrl-A":"selectAll","Ctrl-D":"deleteLine","Ctrl-Z":"undo","Shift-Ctrl-Z":"redo","Ctrl-Y":"redo","Ctrl-Home":"goDocStart","Ctrl-End":"goDocEnd","Ctrl-Up":"goLineUp","Ctrl-Down":"goLineDown","Ctrl-Left":"goGroupLeft","Ctrl-Right":"goGroupRight","Alt-Left":"goLineStart","Alt-Right":"goLineEnd","Ctrl-Backspace":"delGroupBefore","Ctrl-Delete":"delGroupAfter","Ctrl-S":"save","Ctrl-F":"find","Ctrl-G":"findNext","Shift-Ctrl-G":"findPrev","Shift-Ctrl-F":"replace","Shift-Ctrl-R":"replaceAll","Ctrl-[":"indentLess","Ctrl-]":"indentMore","Ctrl-U":"undoSelection","Shift-Ctrl-U":"redoSelection","Alt-U":"redoSelection",fallthrough:"basic"},Ho.emacsy={"Ctrl-F":"goCharRight","Ctrl-B":"goCharLeft","Ctrl-P":"goLineUp","Ctrl-N":"goLineDown","Ctrl-A":"goLineStart","Ctrl-E":"goLineEnd","Ctrl-V":"goPageDown","Shift-Ctrl-V":"goPageUp","Ctrl-D":"delCharAfter","Ctrl-H":"delCharBefore","Alt-Backspace":"delWordBefore","Ctrl-K":"killLine","Ctrl-T":"transposeChars","Ctrl-O":"openLine"},Ho.macDefault={"Cmd-A":"selectAll","Cmd-D":"deleteLine","Cmd-Z":"undo","Shift-Cmd-Z":"redo","Cmd-Y":"redo","Cmd-Home":"goDocStart","Cmd-Up":"goDocStart","Cmd-End":"goDocEnd","Cmd-Down":"goDocEnd","Alt-Left":"goGroupLeft","Alt-Right":"goGroupRight","Cmd-Left":"goLineLeft","Cmd-Right":"goLineRight","Alt-Backspace":"delGroupBefore","Ctrl-Alt-Backspace":"delGroupAfter","Alt-Delete":"delGroupAfter","Cmd-S":"save","Cmd-F":"find","Cmd-G":"findNext","Shift-Cmd-G":"findPrev","Cmd-Alt-F":"replace","Shift-Cmd-Alt-F":"replaceAll","Cmd-[":"indentLess","Cmd-]":"indentMore","Cmd-Backspace":"delWrappedLineLeft","Cmd-Delete":"delWrappedLineRight","Cmd-U":"undoSelection","Shift-Cmd-U":"redoSelection","Ctrl-Up":"goDocStart","Ctrl-Down":"goDocEnd",fallthrough:["basic","emacsy"]},Ho.default=y?Ho.macDefault:Ho.pcDefault;var ea={selectAll:ao,singleSelection:function(e){return e.setSelection(e.getCursor("anchor"),e.getCursor("head"),H)},killLine:function(e){return Xo(e,(function(t){if(t.empty()){var n=Ve(e.doc,t.head.line).text.length;return t.head.ch==n&&t.head.line0)i=new Ze(i.line,i.ch+1),e.replaceRange(o.charAt(i.ch-1)+o.charAt(i.ch-2),Ze(i.line,i.ch-2),i,"+transpose");else if(i.line>e.doc.first){var a=Ve(e.doc,i.line-1).text;a&&(i=new Ze(i.line,1),e.replaceRange(o.charAt(0)+e.doc.lineSeparator()+a.charAt(a.length-1),Ze(i.line-1,a.length-1),i,"+transpose"))}n.push(new _i(i,i))}e.setSelections(n)}))},newlineAndIndent:function(e){return Jr(e,(function(){for(var t=e.listSelections(),n=t.length-1;n>=0;n--)e.replaceRange(e.doc.lineSeparator(),t[n].anchor,t[n].head,"+input");t=e.listSelections();for(var r=0;r-1&&(et((i=u.ranges[i]).from(),t)<0||t.xRel>0)&&(et(i.to(),t)>0||t.xRel<0)?function(e,t,n,r){var i=e.display,o=!1,u=Zr(e,(function(t){l&&(i.scroller.draggable=!1),e.state.draggingText=!1,e.state.delayingBlurEvent&&(e.hasFocus()?e.state.delayingBlurEvent=!1:_r(e)),pe(i.wrapper.ownerDocument,"mouseup",u),pe(i.wrapper.ownerDocument,"mousemove",c),pe(i.scroller,"dragstart",f),pe(i.scroller,"drop",u),o||(be(t),r.addNew||Yi(e.doc,n,null,null,r.extend),l&&!d||a&&9==s?setTimeout((function(){i.wrapper.ownerDocument.body.focus({preventScroll:!0}),i.input.focus()}),20):i.input.focus())})),c=function(e){o=o||Math.abs(t.clientX-e.clientX)+Math.abs(t.clientY-e.clientY)>=10},f=function(){return o=!0};l&&(i.scroller.draggable=!0),e.state.draggingText=u,u.copy=!r.moveOnDrag,fe(i.wrapper.ownerDocument,"mouseup",u),fe(i.wrapper.ownerDocument,"mousemove",c),fe(i.scroller,"dragstart",f),fe(i.scroller,"drop",u),e.state.delayingBlurEvent=!0,setTimeout((function(){return i.input.focus()}),20),i.scroller.dragDrop&&i.scroller.dragDrop()}(e,r,t,o):function(e,t,n,r){a&&_r(e);var i=e.display,o=e.doc;be(t);var s,l,u=o.sel,c=u.ranges;if(r.addNew&&!r.extend?(l=o.sel.contains(n),s=l>-1?c[l]:new _i(n,n)):(s=o.sel.primary(),l=o.sel.primIndex),"rectangle"==r.unit)r.addNew||(s=new _i(n,n)),n=lr(e,t,!0,!0),l=-1;else{var f=ga(e,n,r.unit);s=r.extend?$i(s,f.anchor,f.head,r.extend):f}r.addNew?-1==l?(l=c.length,Ji(o,ki(e,c.concat([s]),l),{scroll:!1,origin:"*mouse"})):c.length>1&&c[l].empty()&&"char"==r.unit&&!r.extend?(Ji(o,ki(e,c.slice(0,l).concat(c.slice(l+1)),0),{scroll:!1,origin:"*mouse"}),u=o.sel):Ki(o,l,s,U):(l=0,Ji(o,new xi([s],0),U),u=o.sel);var d=n;function p(t){if(0!=et(d,t))if(d=t,"rectangle"==r.unit){for(var i=[],a=e.options.tabSize,c=q(Ve(o,n.line).text,n.ch,a),f=q(Ve(o,t.line).text,t.ch,a),p=Math.min(c,f),h=Math.max(c,f),m=Math.min(n.line,t.line),g=Math.min(e.lastLine(),Math.max(n.line,t.line));m<=g;m++){var v=Ve(o,m).text,y=V(v,p,a);p==h?i.push(new _i(Ze(m,y),Ze(m,y))):v.length>y&&i.push(new _i(Ze(m,y),Ze(m,V(v,h,a))))}i.length||i.push(new _i(n,n)),Ji(o,ki(e,u.ranges.slice(0,l).concat(i),l),{origin:"*mouse",scroll:!1}),e.scrollIntoView(t)}else{var b,w=s,x=ga(e,t,r.unit),_=w.anchor;et(x.anchor,_)>0?(b=x.head,_=it(w.from(),x.anchor)):(b=x.anchor,_=rt(w.to(),x.head));var k=u.ranges.slice(0);k[l]=function(e,t){var n=t.anchor,r=t.head,i=Ve(e.doc,n.line);if(0==et(n,r)&&n.sticky==r.sticky)return t;var o=ue(i);if(!o)return t;var a=se(o,n.ch,n.sticky),s=o[a];if(s.from!=n.ch&&s.to!=n.ch)return t;var l,u=a+(s.from==n.ch==(1!=s.level)?0:1);if(0==u||u==o.length)return t;if(r.line!=n.line)l=(r.line-n.line)*("ltr"==e.doc.direction?1:-1)>0;else{var c=se(o,r.ch,r.sticky),f=c-a||(r.ch-n.ch)*(1==s.level?-1:1);l=c==u-1||c==u?f<0:f>0}var d=o[u+(l?-1:0)],p=l==(1==d.level),h=p?d.from:d.to,m=p?"after":"before";return n.ch==h&&n.sticky==m?t:new _i(new Ze(n.line,h,m),r)}(e,new _i(at(o,_),b)),Ji(o,ki(e,k,l),U)}}var h=i.wrapper.getBoundingClientRect(),m=0;function g(t){e.state.selectingText=!1,m=1/0,t&&(be(t),i.input.focus()),pe(i.wrapper.ownerDocument,"mousemove",v),pe(i.wrapper.ownerDocument,"mouseup",y),o.history.lastSelOrigin=null}var v=Zr(e,(function(t){0!==t.buttons&&Se(t)?function t(n){var a=++m,s=lr(e,n,!0,"rectangle"==r.unit);if(s)if(0!=et(s,d)){e.curOp.focus=L(),p(s);var l=Cr(i,o);(s.line>=l.to||s.lineh.bottom?20:0;u&&setTimeout(Zr(e,(function(){m==a&&(i.scroller.scrollTop+=u,t(n))})),50)}}(t):g(t)})),y=Zr(e,g);e.state.selectingText=y,fe(i.wrapper.ownerDocument,"mousemove",v),fe(i.wrapper.ownerDocument,"mouseup",y)}(e,r,t,o)}(t,r,o,e):ke(e)==n.scroller&&be(e):2==i?(r&&Yi(t.doc,r),setTimeout((function(){return n.input.focus()}),20)):3==i&&(k?t.display.input.onContextMenu(e):_r(t)))}}function ga(e,t,n){if("char"==n)return new _i(t,t);if("word"==n)return e.findWordAt(t);if("line"==n)return new _i(Ze(t.line,0),at(e.doc,Ze(t.line+1,0)));var r=n(e,t);return new _i(r.from,r.to)}function va(e,t,n,r){var i,o;if(t.touches)i=t.touches[0].clientX,o=t.touches[0].clientY;else try{i=t.clientX,o=t.clientY}catch(c){return!1}if(i>=Math.floor(e.display.gutters.getBoundingClientRect().right))return!1;r&&be(t);var a=e.display,s=a.lineDiv.getBoundingClientRect();if(o>s.bottom||!ve(e,n))return xe(t);o-=s.top-a.viewOffset;for(var l=0;l=i)return he(e,n,e,Xe(e.doc,o),e.display.gutterSpecs[l].className,t),xe(t)}}function ya(e,t){return va(e,t,"gutterClick",!0)}function ba(e,t){xn(e.display,t)||function(e,t){return!!ve(e,"gutterContextMenu")&&va(e,t,"gutterContextMenu",!1)}(e,t)||me(e,t,"contextmenu")||k||e.display.input.onContextMenu(t)}function wa(e){e.display.wrapper.className=e.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+e.options.theme.replace(/(^|\s)\s*/g," cm-s-"),Fn(e)}ha.prototype.compare=function(e,t,n){return this.time+400>e&&0==et(t,this.pos)&&n==this.button};var xa={toString:function(){return"CodeMirror.Init"}},_a={},ka={};function Sa(e,t,n){if(!t!=!(n&&n!=xa)){var r=e.display.dragFunctions,i=t?fe:pe;i(e.display.scroller,"dragstart",r.start),i(e.display.scroller,"dragenter",r.enter),i(e.display.scroller,"dragover",r.over),i(e.display.scroller,"dragleave",r.leave),i(e.display.scroller,"drop",r.drop)}}function Ea(e){e.options.lineWrapping?(M(e.display.wrapper,"CodeMirror-wrap"),e.display.sizer.style.minWidth="",e.display.sizerWidth=null):(T(e.display.wrapper,"CodeMirror-wrap"),Wt(e)),sr(e),cr(e),Fn(e),setTimeout((function(){return zr(e)}),100)}function Ta(e,t){var n=this;if(!(this instanceof Ta))return new Ta(e,t);this.options=t=t?R(t):{},R(_a,t,!1);var r=t.value;"string"==typeof r?r=new No(r,t.mode,null,t.lineSeparator,t.direction):t.mode&&(r.modeOption=t.mode),this.doc=r;var i=new Ta.inputStyles[t.inputStyle](this),o=this.display=new mi(e,r,i,t);for(var u in o.wrapper.CodeMirror=this,wa(this),t.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),Ur(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:-1,cutIncoming:-1,selectingText:!1,draggingText:!1,highlight:new F,keySeq:null,specialChars:null},t.autofocus&&!v&&o.input.focus(),a&&s<11&&setTimeout((function(){return n.display.input.reset(!0)}),20),function(e){var t=e.display;fe(t.scroller,"mousedown",Zr(e,ma)),fe(t.scroller,"dblclick",a&&s<11?Zr(e,(function(t){if(!me(e,t)){var n=lr(e,t);if(n&&!ya(e,t)&&!xn(e.display,t)){be(t);var r=e.findWordAt(n);Yi(e.doc,r.anchor,r.head)}}})):function(t){return me(e,t)||be(t)}),fe(t.scroller,"contextmenu",(function(t){return ba(e,t)})),fe(t.input.getField(),"contextmenu",(function(n){t.scroller.contains(n.target)||ba(e,n)}));var n,r={end:0};function i(){t.activeTouch&&(n=setTimeout((function(){return t.activeTouch=null}),1e3),(r=t.activeTouch).end=+new Date)}function o(e,t){if(null==t.left)return!0;var n=t.left-e.left,r=t.top-e.top;return n*n+r*r>400}fe(t.scroller,"touchstart",(function(i){if(!me(e,i)&&!function(e){if(1!=e.touches.length)return!1;var t=e.touches[0];return t.radiusX<=1&&t.radiusY<=1}(i)&&!ya(e,i)){t.input.ensurePolled(),clearTimeout(n);var o=+new Date;t.activeTouch={start:o,moved:!1,prev:o-r.end<=300?r:null},1==i.touches.length&&(t.activeTouch.left=i.touches[0].pageX,t.activeTouch.top=i.touches[0].pageY)}})),fe(t.scroller,"touchmove",(function(){t.activeTouch&&(t.activeTouch.moved=!0)})),fe(t.scroller,"touchend",(function(n){var r=t.activeTouch;if(r&&!xn(t,n)&&null!=r.left&&!r.moved&&new Date-r.start<300){var a,s=e.coordsChar(t.activeTouch,"page");a=!r.prev||o(r,r.prev)?new _i(s,s):!r.prev.prev||o(r,r.prev.prev)?e.findWordAt(s):new _i(Ze(s.line,0),at(e.doc,Ze(s.line+1,0))),e.setSelection(a.anchor,a.head),e.focus(),be(n)}i()})),fe(t.scroller,"touchcancel",i),fe(t.scroller,"scroll",(function(){t.scroller.clientHeight&&(Pr(e,t.scroller.scrollTop),Ir(e,t.scroller.scrollLeft,!0),he(e,"scroll",e))})),fe(t.scroller,"mousewheel",(function(t){return wi(e,t)})),fe(t.scroller,"DOMMouseScroll",(function(t){return wi(e,t)})),fe(t.wrapper,"scroll",(function(){return t.wrapper.scrollTop=t.wrapper.scrollLeft=0})),t.dragFunctions={enter:function(t){me(e,t)||_e(t)},over:function(t){me(e,t)||(function(e,t){var n=lr(e,t);if(n){var r=document.createDocumentFragment();vr(e,n,r),e.display.dragCursor||(e.display.dragCursor=A("div",null,"CodeMirror-cursors CodeMirror-dragcursors"),e.display.lineSpace.insertBefore(e.display.dragCursor,e.display.cursorDiv)),O(e.display.dragCursor,r)}}(e,t),_e(t))},start:function(t){return function(e,t){if(a&&(!e.state.draggingText||+new Date-Do<100))_e(t);else if(!me(e,t)&&!xn(e.display,t)&&(t.dataTransfer.setData("Text",e.getSelection()),t.dataTransfer.effectAllowed="copyMove",t.dataTransfer.setDragImage&&!d)){var n=A("img",null,null,"position: fixed; left: 0; top: 0;");n.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",f&&(n.width=n.height=1,e.display.wrapper.appendChild(n),n._top=n.offsetTop),t.dataTransfer.setDragImage(n,0,0),f&&n.parentNode.removeChild(n)}}(e,t)},drop:Zr(e,Lo),leave:function(t){me(e,t)||Mo(e)}};var l=t.input.getField();fe(l,"keyup",(function(t){return ca.call(e,t)})),fe(l,"keydown",Zr(e,ua)),fe(l,"keypress",Zr(e,fa)),fe(l,"focus",(function(t){return kr(e,t)})),fe(l,"blur",(function(t){return Sr(e,t)}))}(this),Io(),Vr(this),this.curOp.forceUpdate=!0,Pi(this,r),t.autofocus&&!v||this.hasFocus()?setTimeout((function(){n.hasFocus()&&!n.state.focused&&kr(n)}),20):Sr(this),ka)ka.hasOwnProperty(u)&&ka[u](this,t[u],xa);fi(this),t.finishInit&&t.finishInit(this);for(var c=0;c150)){if(!r)return;n="prev"}}else u=0,n="not";"prev"==n?u=t>o.first?q(Ve(o,t-1).text,null,a):0:"add"==n?u=l+e.options.indentUnit:"subtract"==n?u=l-e.options.indentUnit:"number"==typeof n&&(u=l+n),u=Math.max(0,u);var f="",d=0;if(e.options.indentWithTabs)for(var p=Math.floor(u/a);p;--p)d+=a,f+="\t";if(da,l=Ne(t),u=null;if(s&&r.ranges.length>1)if(Aa&&Aa.text.join("\n")==t){if(r.ranges.length%Aa.text.length==0){u=[];for(var c=0;c=0;d--){var p=r.ranges[d],h=p.from(),m=p.to();p.empty()&&(n&&n>0?h=Ze(h.line,h.ch-n):e.state.overwrite&&!s?m=Ze(m.line,Math.min(Ve(o,m.line).text.length,m.ch+G(l).length)):s&&Aa&&Aa.lineWise&&Aa.text.join("\n")==l.join("\n")&&(h=m=Ze(h.line,0)));var g={from:h,to:m,text:u?u[d%u.length]:l,origin:i||(s?"paste":e.state.cutIncoming>a?"cut":"+input")};lo(e.doc,g),sn(e,"inputRead",e,g)}t&&!s&&Ma(e,t),Nr(e),e.curOp.updateInput<2&&(e.curOp.updateInput=f),e.curOp.typing=!0,e.state.pasteIncoming=e.state.cutIncoming=-1}function La(e,t){var n=e.clipboardData&&e.clipboardData.getData("Text");if(n)return e.preventDefault(),t.isReadOnly()||t.options.disableInput||Jr(t,(function(){return Da(t,n,0,null,"paste")})),!0}function Ma(e,t){if(e.options.electricChars&&e.options.smartIndent)for(var n=e.doc.sel,r=n.ranges.length-1;r>=0;r--){var i=n.ranges[r];if(!(i.head.ch>100||r&&n.ranges[r-1].head.line==i.head.line)){var o=e.getModeAt(i.head),a=!1;if(o.electricChars){for(var s=0;s-1){a=Oa(e,i.head.line,"smart");break}}else o.electricInput&&o.electricInput.test(Ve(e.doc,i.head.line).text.slice(0,i.head.ch))&&(a=Oa(e,i.head.line,"smart"));a&&sn(e,"electricInput",e,i.head.line)}}}function Pa(e){for(var t=[],n=[],r=0;r0?0:-1));if(isNaN(u))a=null;else{var c=n>0?u>=55296&&u<56320:u>=56320&&u<57343;a=new Ze(t.line,Math.max(0,Math.min(s.text.length,t.ch+n*(c?2:1))),-n)}}else a=i?function(e,t,n,r){var i=ue(t,e.doc.direction);if(!i)return Jo(t,n,r);n.ch>=t.text.length?(n.ch=t.text.length,n.sticky="before"):n.ch<=0&&(n.ch=0,n.sticky="after");var o=se(i,n.ch,n.sticky),a=i[o];if("ltr"==e.doc.direction&&a.level%2==0&&(r>0?a.to>n.ch:a.from=a.from&&d>=c.begin)){var p=f?"before":"after";return new Ze(n.line,d,p)}}var h=function(e,t,r){for(var o=function(e,t){return t?new Ze(n.line,l(e,1),"before"):new Ze(n.line,e,"after")};e>=0&&e0==(1!=a.level),u=s?r.begin:l(r.end,-1);if(a.from<=u&&u0?c.end:l(c.begin,-1);return null==g||r>0&&g==t.text.length||!(m=h(r>0?0:i.length-1,r,u(g)))?null:m}(e.cm,s,t,n):Jo(s,t,n);if(null==a){if(o||!function(){var n=t.line+l;return!(n=e.first+e.size)&&(t=new Ze(n,t.ch,t.sticky),s=Ve(e,n))}())return!1;t=Zo(i,e.cm,s,t.line,l)}else t=a;return!0}if("char"==r||"codepoint"==r)u();else if("column"==r)u(!0);else if("word"==r||"group"==r)for(var c=null,f="group"==r,d=e.cm&&e.cm.getHelper(t,"wordChars"),p=!0;!(n<0)||u(!p);p=!1){var h=s.text.charAt(t.ch)||"\n",m=ee(h,d)?"w":f&&"\n"==h?"n":!f||/\s/.test(h)?null:"p";if(!f||p||m||(m="s"),c&&c!=m){n<0&&(n=1,u(),t.sticky="after");break}if(m&&(c=m),n>0&&!u(!p))break}var g=io(e,t,o,a,!0);return tt(o,g)&&(g.hitSide=!0),g}function qa(e,t,n,r){var i,o,a=e.doc,s=t.left;if("page"==r){var l=Math.min(e.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight),u=Math.max(l-.5*nr(e.display),3);i=(n>0?t.bottom:t.top)+n*u}else"line"==r&&(i=n>0?t.bottom+3:t.top-3);for(;(o=Kn(e,s,i)).outside;){if(n<0?i<=0:i>=a.height){o.hitSide=!0;break}i+=5*n}return o}var Fa=function(e){this.cm=e,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new F,this.composing=null,this.gracePeriod=!1,this.readDOMTimeout=null};function za(e,t){var n=Nn(e,t.line);if(!n||n.hidden)return null;var r=Ve(e.doc,t.line),i=On(n,r,t.line),o=ue(r,e.doc.direction),a="left";o&&(a=se(o,t.ch)%2?"right":"left");var s=jn(i.map,t.ch,a);return s.offset="right"==s.collapse?s.end:s.start,s}function Ba(e,t){return t&&(e.bad=!0),e}function Ha(e,t,n){var r;if(t==e.display.lineDiv){if(!(r=e.display.lineDiv.childNodes[n]))return Ba(e.clipPos(Ze(e.display.viewTo-1)),!0);t=null,n=0}else for(r=t;;r=r.parentNode){if(!r||r==e.display.lineDiv)return null;if(r.parentNode&&r.parentNode==e.display.lineDiv)break}for(var i=0;i=t.display.viewTo||o.line=t.display.viewFrom&&za(t,i)||{node:l[0].measure.map[2],offset:0},c=o.liner.firstLine()&&(a=Ze(a.line-1,Ve(r.doc,a.line-1).length)),s.ch==Ve(r.doc,s.line).text.length&&s.linei.viewTo-1)return!1;a.line==i.viewFrom||0==(e=ur(r,a.line))?(t=Ke(i.view[0].line),n=i.view[0].node):(t=Ke(i.view[e].line),n=i.view[e-1].node.nextSibling);var l,u,c=ur(r,s.line);if(c==i.view.length-1?(l=i.viewTo-1,u=i.lineDiv.lastChild):(l=Ke(i.view[c+1].line)-1,u=i.view[c+1].node.previousSibling),!n)return!1;for(var f=r.doc.splitLines(function(e,t,n,r,i){var o="",a=!1,s=e.doc.lineSeparator(),l=!1;function u(){a&&(o+=s,l&&(o+=s),a=l=!1)}function c(e){e&&(u(),o+=e)}function f(t){if(1==t.nodeType){var n=t.getAttribute("cm-text");if(n)return void c(n);var o,d=t.getAttribute("cm-marker");if(d){var p=e.findMarks(Ze(r,0),Ze(i+1,0),(g=+d,function(e){return e.id==g}));return void(p.length&&(o=p[0].find(0))&&c($e(e.doc,o.from,o.to).join(s)))}if("false"==t.getAttribute("contenteditable"))return;var h=/^(pre|div|p|li|table|br)$/i.test(t.nodeName);if(!/^br$/i.test(t.nodeName)&&0==t.textContent.length)return;h&&u();for(var m=0;m1&&d.length>1;)if(G(f)==G(d))f.pop(),d.pop(),l--;else{if(f[0]!=d[0])break;f.shift(),d.shift(),t++}for(var p=0,h=0,m=f[0],g=d[0],v=Math.min(m.length,g.length);pa.ch&&y.charCodeAt(y.length-h-1)==b.charCodeAt(b.length-h-1);)p--,h++;f[f.length-1]=y.slice(0,y.length-h).replace(/^\u200b+/,""),f[0]=f[0].slice(p).replace(/\u200b+$/,"");var x=Ze(t,p),_=Ze(l,d.length?G(d).length-h:0);return f.length>1||f[0]||et(x,_)?(ho(r.doc,f,x,_,"+input"),!0):void 0},Fa.prototype.ensurePolled=function(){this.forceCompositionEnd()},Fa.prototype.reset=function(){this.forceCompositionEnd()},Fa.prototype.forceCompositionEnd=function(){this.composing&&(clearTimeout(this.readDOMTimeout),this.composing=null,this.updateFromDOM(),this.div.blur(),this.div.focus())},Fa.prototype.readFromDOMSoon=function(){var e=this;null==this.readDOMTimeout&&(this.readDOMTimeout=setTimeout((function(){if(e.readDOMTimeout=null,e.composing){if(!e.composing.done)return;e.composing=null}e.updateFromDOM()}),80))},Fa.prototype.updateFromDOM=function(){var e=this;!this.cm.isReadOnly()&&this.pollContent()||Jr(this.cm,(function(){return cr(e.cm)}))},Fa.prototype.setUneditable=function(e){e.contentEditable="false"},Fa.prototype.onKeyPress=function(e){0==e.charCode||this.composing||(e.preventDefault(),this.cm.isReadOnly()||Zr(this.cm,Da)(this.cm,String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),0))},Fa.prototype.readOnlyChanged=function(e){this.div.contentEditable=String("nocursor"!=e)},Fa.prototype.onContextMenu=function(){},Fa.prototype.resetPosition=function(){},Fa.prototype.needsContentAttribute=!0;var Wa=function(e){this.cm=e,this.prevInput="",this.pollingFast=!1,this.polling=new F,this.hasSelection=!1,this.composing=null};Wa.prototype.init=function(e){var t=this,n=this,r=this.cm;this.createField(e);var i=this.textarea;function o(e){if(!me(r,e)){if(r.somethingSelected())Na({lineWise:!1,text:r.getSelections()});else{if(!r.options.lineWiseCopyCut)return;var t=Pa(r);Na({lineWise:!0,text:t.text}),"cut"==e.type?r.setSelections(t.ranges,null,H):(n.prevInput="",i.value=t.text.join("\n"),j(i))}"cut"==e.type&&(r.state.cutIncoming=+new Date)}}e.wrapper.insertBefore(this.wrapper,e.wrapper.firstChild),m&&(i.style.width="0px"),fe(i,"input",(function(){a&&s>=9&&t.hasSelection&&(t.hasSelection=null),n.poll()})),fe(i,"paste",(function(e){me(r,e)||La(e,r)||(r.state.pasteIncoming=+new Date,n.fastPoll())})),fe(i,"cut",o),fe(i,"copy",o),fe(e.scroller,"paste",(function(t){if(!xn(e,t)&&!me(r,t)){if(!i.dispatchEvent)return r.state.pasteIncoming=+new Date,void n.focus();var o=new Event("paste");o.clipboardData=t.clipboardData,i.dispatchEvent(o)}})),fe(e.lineSpace,"selectstart",(function(t){xn(e,t)||be(t)})),fe(i,"compositionstart",(function(){var e=r.getCursor("from");n.composing&&n.composing.range.clear(),n.composing={start:e,range:r.markText(e,r.getCursor("to"),{className:"CodeMirror-composing"})}})),fe(i,"compositionend",(function(){n.composing&&(n.poll(),n.composing.range.clear(),n.composing=null)}))},Wa.prototype.createField=function(e){this.wrapper=Ia(),this.textarea=this.wrapper.firstChild},Wa.prototype.screenReaderLabelChanged=function(e){e?this.textarea.setAttribute("aria-label",e):this.textarea.removeAttribute("aria-label")},Wa.prototype.prepareSelection=function(){var e=this.cm,t=e.display,n=e.doc,r=gr(e);if(e.options.moveInputWithCursor){var i=$n(e,n.sel.primary().head,"div"),o=t.wrapper.getBoundingClientRect(),a=t.lineDiv.getBoundingClientRect();r.teTop=Math.max(0,Math.min(t.wrapper.clientHeight-10,i.top+a.top-o.top)),r.teLeft=Math.max(0,Math.min(t.wrapper.clientWidth-10,i.left+a.left-o.left))}return r},Wa.prototype.showSelection=function(e){var t=this.cm.display;O(t.cursorDiv,e.cursors),O(t.selectionDiv,e.selection),null!=e.teTop&&(this.wrapper.style.top=e.teTop+"px",this.wrapper.style.left=e.teLeft+"px")},Wa.prototype.reset=function(e){if(!this.contextMenuPending&&!this.composing){var t=this.cm;if(t.somethingSelected()){this.prevInput="";var n=t.getSelection();this.textarea.value=n,t.state.focused&&j(this.textarea),a&&s>=9&&(this.hasSelection=n)}else e||(this.prevInput=this.textarea.value="",a&&s>=9&&(this.hasSelection=null))}},Wa.prototype.getField=function(){return this.textarea},Wa.prototype.supportsTouch=function(){return!1},Wa.prototype.focus=function(){if("nocursor"!=this.cm.options.readOnly&&(!v||L()!=this.textarea))try{this.textarea.focus()}catch(e){}},Wa.prototype.blur=function(){this.textarea.blur()},Wa.prototype.resetPosition=function(){this.wrapper.style.top=this.wrapper.style.left=0},Wa.prototype.receivedFocus=function(){this.slowPoll()},Wa.prototype.slowPoll=function(){var e=this;this.pollingFast||this.polling.set(this.cm.options.pollInterval,(function(){e.poll(),e.cm.state.focused&&e.slowPoll()}))},Wa.prototype.fastPoll=function(){var e=!1,t=this;t.pollingFast=!0,t.polling.set(20,(function n(){t.poll()||e?(t.pollingFast=!1,t.slowPoll()):(e=!0,t.polling.set(60,n))}))},Wa.prototype.poll=function(){var e=this,t=this.cm,n=this.textarea,r=this.prevInput;if(this.contextMenuPending||!t.state.focused||De(n)&&!r&&!this.composing||t.isReadOnly()||t.options.disableInput||t.state.keySeq)return!1;var i=n.value;if(i==r&&!t.somethingSelected())return!1;if(a&&s>=9&&this.hasSelection===i||y&&/[\uf700-\uf7ff]/.test(i))return t.display.input.reset(),!1;if(t.doc.sel==t.display.selForContextMenu){var o=i.charCodeAt(0);if(8203!=o||r||(r="\u200b"),8666==o)return this.reset(),this.cm.execCommand("undo")}for(var l=0,u=Math.min(r.length,i.length);l1e3||i.indexOf("\n")>-1?n.value=e.prevInput="":e.prevInput=i,e.composing&&(e.composing.range.clear(),e.composing.range=t.markText(e.composing.start,t.getCursor("to"),{className:"CodeMirror-composing"}))})),!0},Wa.prototype.ensurePolled=function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},Wa.prototype.onKeyPress=function(){a&&s>=9&&(this.hasSelection=null),this.fastPoll()},Wa.prototype.onContextMenu=function(e){var t=this,n=t.cm,r=n.display,i=t.textarea;t.contextMenuPending&&t.contextMenuPending();var o=lr(n,e),u=r.scroller.scrollTop;if(o&&!f){n.options.resetSelectionOnContextMenu&&-1==n.doc.sel.contains(o)&&Zr(n,Ji)(n.doc,Si(o),H);var c,d=i.style.cssText,p=t.wrapper.style.cssText,h=t.wrapper.offsetParent.getBoundingClientRect();t.wrapper.style.cssText="position: static",i.style.cssText="position: absolute; width: 30px; height: 30px;\n top: "+(e.clientY-h.top-5)+"px; left: "+(e.clientX-h.left-5)+"px;\n z-index: 1000; background: "+(a?"rgba(255, 255, 255, .05)":"transparent")+";\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);",l&&(c=window.scrollY),r.input.focus(),l&&window.scrollTo(null,c),r.input.reset(),n.somethingSelected()||(i.value=t.prevInput=" "),t.contextMenuPending=g,r.selForContextMenu=n.doc.sel,clearTimeout(r.detectingSelectAll),a&&s>=9&&m(),k?(_e(e),fe(window,"mouseup",(function e(){pe(window,"mouseup",e),setTimeout(g,20)}))):setTimeout(g,50)}function m(){if(null!=i.selectionStart){var e=n.somethingSelected(),o="\u200b"+(e?i.value:"");i.value="\u21da",i.value=o,t.prevInput=e?"":"\u200b",i.selectionStart=1,i.selectionEnd=o.length,r.selForContextMenu=n.doc.sel}}function g(){if(t.contextMenuPending==g&&(t.contextMenuPending=!1,t.wrapper.style.cssText=p,i.style.cssText=d,a&&s<9&&r.scrollbars.setScrollTop(r.scroller.scrollTop=u),null!=i.selectionStart)){(!a||a&&s<9)&&m();var e=0;r.detectingSelectAll=setTimeout((function o(){r.selForContextMenu==n.doc.sel&&0==i.selectionStart&&i.selectionEnd>0&&"\u200b"==t.prevInput?Zr(n,ao)(n):e++<10?r.detectingSelectAll=setTimeout(o,500):(r.selForContextMenu=null,r.input.reset())}),200)}}},Wa.prototype.readOnlyChanged=function(e){e||this.reset(),this.textarea.disabled="nocursor"==e,this.textarea.readOnly=!!e},Wa.prototype.setUneditable=function(){},Wa.prototype.needsContentAttribute=!1,function(e){var t=e.optionHandlers;function n(n,r,i,o){e.defaults[n]=r,i&&(t[n]=o?function(e,t,n){n!=xa&&i(e,t,n)}:i)}e.defineOption=n,e.Init=xa,n("value","",(function(e,t){return e.setValue(t)}),!0),n("mode",null,(function(e,t){e.doc.modeOption=t,Ai(e)}),!0),n("indentUnit",2,Ai,!0),n("indentWithTabs",!1),n("smartIndent",!0),n("tabSize",4,(function(e){Ni(e),Fn(e),cr(e)}),!0),n("lineSeparator",null,(function(e,t){if(e.doc.lineSep=t,t){var n=[],r=e.doc.first;e.doc.iter((function(e){for(var i=0;;){var o=e.text.indexOf(t,i);if(-1==o)break;i=o+t.length,n.push(Ze(r,o))}r++}));for(var i=n.length-1;i>=0;i--)ho(e.doc,t,n[i],Ze(n[i].line,n[i].ch+t.length))}})),n("specialChars",/[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b\u200e\u200f\u2028\u2029\ufeff\ufff9-\ufffc]/g,(function(e,t,n){e.state.specialChars=new RegExp(t.source+(t.test("\t")?"":"|\t"),"g"),n!=xa&&e.refresh()})),n("specialCharPlaceholder",Qt,(function(e){return e.refresh()}),!0),n("electricChars",!0),n("inputStyle",v?"contenteditable":"textarea",(function(){throw new Error("inputStyle can not (yet) be changed in a running editor")}),!0),n("spellcheck",!1,(function(e,t){return e.getInputField().spellcheck=t}),!0),n("autocorrect",!1,(function(e,t){return e.getInputField().autocorrect=t}),!0),n("autocapitalize",!1,(function(e,t){return e.getInputField().autocapitalize=t}),!0),n("rtlMoveVisually",!w),n("wholeLineUpdateBefore",!0),n("theme","default",(function(e){wa(e),hi(e)}),!0),n("keyMap","default",(function(e,t,n){var r=Ko(t),i=n!=xa&&Ko(n);i&&i.detach&&i.detach(e,r),r.attach&&r.attach(e,i||null)})),n("extraKeys",null),n("configureMouse",null),n("lineWrapping",!1,Ea,!0),n("gutters",[],(function(e,t){e.display.gutterSpecs=di(t,e.options.lineNumbers),hi(e)}),!0),n("fixedGutter",!0,(function(e,t){e.display.gutters.style.left=t?or(e.display)+"px":"0",e.refresh()}),!0),n("coverGutterNextToScrollbar",!1,(function(e){return zr(e)}),!0),n("scrollbarStyle","native",(function(e){Ur(e),zr(e),e.display.scrollbars.setScrollTop(e.doc.scrollTop),e.display.scrollbars.setScrollLeft(e.doc.scrollLeft)}),!0),n("lineNumbers",!1,(function(e,t){e.display.gutterSpecs=di(e.options.gutters,t),hi(e)}),!0),n("firstLineNumber",1,hi,!0),n("lineNumberFormatter",(function(e){return e}),hi,!0),n("showCursorWhenSelecting",!1,mr,!0),n("resetSelectionOnContextMenu",!0),n("lineWiseCopyCut",!0),n("pasteLinesPerSelection",!0),n("selectionsMayTouch",!1),n("readOnly",!1,(function(e,t){"nocursor"==t&&(Sr(e),e.display.input.blur()),e.display.input.readOnlyChanged(t)})),n("screenReaderLabel",null,(function(e,t){t=""===t?null:t,e.display.input.screenReaderLabelChanged(t)})),n("disableInput",!1,(function(e,t){t||e.display.input.reset()}),!0),n("dragDrop",!0,Sa),n("allowDropFileTypes",null),n("cursorBlinkRate",530),n("cursorScrollMargin",0),n("cursorHeight",1,mr,!0),n("singleCursorHeightPerLine",!0,mr,!0),n("workTime",100),n("workDelay",100),n("flattenSpans",!0,Ni,!0),n("addModeClass",!1,Ni,!0),n("pollInterval",100),n("undoDepth",200,(function(e,t){return e.doc.history.undoDepth=t})),n("historyEventDelay",1250),n("viewportMargin",10,(function(e){return e.refresh()}),!0),n("maxHighlightLength",1e4,Ni,!0),n("moveInputWithCursor",!0,(function(e,t){t||e.display.input.resetPosition()})),n("tabindex",null,(function(e,t){return e.display.input.getField().tabIndex=t||""})),n("autofocus",null),n("direction","ltr",(function(e,t){return e.doc.setDirection(t)}),!0),n("phrases",null)}(Ta),function(e){var t=e.optionHandlers,n=e.helpers={};e.prototype={constructor:e,focus:function(){window.focus(),this.display.input.focus()},setOption:function(e,n){var r=this.options,i=r[e];r[e]==n&&"mode"!=e||(r[e]=n,t.hasOwnProperty(e)&&Zr(this,t[e])(this,n,i),he(this,"optionChange",this,e))},getOption:function(e){return this.options[e]},getDoc:function(){return this.doc},addKeyMap:function(e,t){this.state.keyMaps[t?"push":"unshift"](Ko(e))},removeKeyMap:function(e){for(var t=this.state.keyMaps,n=0;nn&&(Oa(this,i.head.line,e,!0),n=i.head.line,r==this.doc.sel.primIndex&&Nr(this));else{var o=i.from(),a=i.to(),s=Math.max(n,o.line);n=Math.min(this.lastLine(),a.line-(a.ch?0:1))+1;for(var l=s;l0&&Ki(this.doc,r,new _i(o,u[r].to()),H)}}})),getTokenAt:function(e,t){return vt(this,e,t)},getLineTokens:function(e,t){return vt(this,Ze(e),t,!0)},getTokenTypeAt:function(e){e=at(this.doc,e);var t,n=ft(this,Ve(this.doc,e.line)),r=0,i=(n.length-1)/2,o=e.ch;if(0==o)t=n[2];else for(;;){var a=r+i>>1;if((a?n[2*a-1]:0)>=o)i=a;else{if(!(n[2*a+1]o&&(e=o,i=!0),r=Ve(this.doc,e)}else r=e;return Un(this,r,{top:0,left:0},t||"page",n||i).top+(i?this.doc.height-Ht(r):0)},defaultTextHeight:function(){return nr(this.display)},defaultCharWidth:function(){return rr(this.display)},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(e,t,n,r,i){var o=this.display,a=(e=$n(this,at(this.doc,e))).bottom,s=e.left;if(t.style.position="absolute",t.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(t),o.sizer.appendChild(t),"over"==r)a=e.top;else if("above"==r||"near"==r){var l=Math.max(o.wrapper.clientHeight,this.doc.height),u=Math.max(o.sizer.clientWidth,o.lineSpace.clientWidth);("above"==r||e.bottom+t.offsetHeight>l)&&e.top>t.offsetHeight?a=e.top-t.offsetHeight:e.bottom+t.offsetHeight<=l&&(a=e.bottom),s+t.offsetWidth>u&&(s=u-t.offsetWidth)}t.style.top=a+"px",t.style.left=t.style.right="","right"==i?(s=o.sizer.clientWidth-t.offsetWidth,t.style.right="0px"):("left"==i?s=0:"middle"==i&&(s=(o.sizer.clientWidth-t.offsetWidth)/2),t.style.left=s+"px"),n&&function(e,t){var n=Or(e,t);null!=n.scrollTop&&Pr(e,n.scrollTop),null!=n.scrollLeft&&Ir(e,n.scrollLeft)}(this,{left:s,top:a,right:s+t.offsetWidth,bottom:a+t.offsetHeight})},triggerOnKeyDown:ei(ua),triggerOnKeyPress:ei(fa),triggerOnKeyUp:ca,triggerOnMouseDown:ei(ma),execCommand:function(e){if(ea.hasOwnProperty(e))return ea[e].call(null,this)},triggerElectric:ei((function(e){Ma(this,e)})),findPosH:function(e,t,n,r){var i=1;t<0&&(i=-1,t=-t);for(var o=at(this.doc,e),a=0;a0&&a(t.charAt(n-1));)--n;for(;r.5||this.options.lineWrapping)&&sr(this),he(this,"refresh",this)})),swapDoc:ei((function(e){var t=this.doc;return t.cm=null,this.state.selectingText&&this.state.selectingText(),Pi(this,e),Fn(this),this.display.input.reset(),Dr(this,e.scrollLeft,e.scrollTop),this.curOp.forceScroll=!0,sn(this,"swapDoc",this,t),t})),phrase:function(e){var t=this.options.phrases;return t&&Object.prototype.hasOwnProperty.call(t,e)?t[e]:e},getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},ye(e),e.registerHelper=function(t,r,i){n.hasOwnProperty(t)||(n[t]=e[t]={_global:[]}),n[t][r]=i},e.registerGlobalHelper=function(t,r,i,o){e.registerHelper(t,r,o),n[t]._global.push({pred:i,val:o})}}(Ta);var Va="iter insert remove copy getEditor constructor".split(" ");for(var $a in No.prototype)No.prototype.hasOwnProperty($a)&&z(Va,$a)<0&&(Ta.prototype[$a]=function(e){return function(){return e.apply(this.doc,arguments)}}(No.prototype[$a]));return ye(No),Ta.inputStyles={textarea:Wa,contenteditable:Fa},Ta.defineMode=function(e){Ta.defaults.mode||"null"==e||(Ta.defaults.mode=e),Ie.apply(this,arguments)},Ta.defineMIME=function(e,t){je[e]=t},Ta.defineMode("null",(function(){return{token:function(e){return e.skipToEnd()}}})),Ta.defineMIME("text/plain","null"),Ta.defineExtension=function(e,t){Ta.prototype[e]=t},Ta.defineDocExtension=function(e,t){No.prototype[e]=t},Ta.fromTextArea=function(e,t){if((t=t?R(t):{}).value=e.value,!t.tabindex&&e.tabIndex&&(t.tabindex=e.tabIndex),!t.placeholder&&e.placeholder&&(t.placeholder=e.placeholder),null==t.autofocus){var n=L();t.autofocus=n==e||null!=e.getAttribute("autofocus")&&n==document.body}function r(){e.value=s.getValue()}var i;if(e.form&&(fe(e.form,"submit",r),!t.leaveSubmitMethodAlone)){var o=e.form;i=o.submit;try{var a=o.submit=function(){r(),o.submit=i,o.submit(),o.submit=a}}catch(l){}}t.finishInit=function(n){n.save=r,n.getTextArea=function(){return e},n.toTextArea=function(){n.toTextArea=isNaN,r(),e.parentNode.removeChild(n.getWrapperElement()),e.style.display="",e.form&&(pe(e.form,"submit",r),t.leaveSubmitMethodAlone||"function"!=typeof e.form.submit||(e.form.submit=i))}},e.style.display="none";var s=Ta((function(t){return e.parentNode.insertBefore(t,e.nextSibling)}),t);return s},function(e){e.off=pe,e.on=fe,e.wheelEventPixels=bi,e.Doc=No,e.splitLines=Ne,e.countColumn=q,e.findColumn=V,e.isWordChar=Z,e.Pass=B,e.signal=he,e.Line=Vt,e.changeEnd=Ei,e.scrollbarModel=Hr,e.Pos=Ze,e.cmpPos=et,e.modes=Pe,e.mimeModes=je,e.resolveMode=Re,e.getMode=qe,e.modeExtensions=Fe,e.extendMode=ze,e.copyState=Be,e.startState=Ue,e.innerMode=He,e.commands=ea,e.keyMap=Ho,e.keyName=Go,e.isModifierKey=$o,e.lookupKey=Vo,e.normalizeKeyMap=Wo,e.StringStream=We,e.SharedTextMarker=To,e.TextMarker=So,e.LineWidget=xo,e.e_preventDefault=be,e.e_stopPropagation=we,e.e_stop=_e,e.addClass=M,e.contains=D,e.rmClass=T,e.keyNames=qo}(Ta),Ta.version="5.62.3",Ta}()},function(e,t,n){"use strict";function r(e,t,n,r,i,o,a){try{var s=e[o](a),l=s.value}catch(u){return void n(u)}s.done?t(l):Promise.resolve(l).then(r,i)}function i(e){return function(){var t=this,n=arguments;return new Promise((function(i,o){var a=e.apply(t,n);function s(e){r(a,i,o,s,l,"next",e)}function l(e){r(a,i,o,s,l,"throw",e)}s(void 0)}))}}n.d(t,"a",(function(){return i}))},function(e,t,n){"use strict";!function e(){if("undefined"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE){0;try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}}(),e.exports=n(97)},function(e,t,n){"use strict";n.r(t),n.d(t,"__DO_NOT_USE__ActionTypes",(function(){return o})),n.d(t,"applyMiddleware",(function(){return g})),n.d(t,"bindActionCreators",(function(){return f})),n.d(t,"combineReducers",(function(){return u})),n.d(t,"compose",(function(){return m})),n.d(t,"createStore",(function(){return s}));var r=n(51),i=function(){return Math.random().toString(36).substring(7).split("").join(".")},o={INIT:"@@redux/INIT"+i(),REPLACE:"@@redux/REPLACE"+i(),PROBE_UNKNOWN_ACTION:function(){return"@@redux/PROBE_UNKNOWN_ACTION"+i()}};function a(e){if("object"!==typeof e||null===e)return!1;for(var t=e;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}function s(e,t,n){var i;if("function"===typeof t&&"function"===typeof n||"function"===typeof n&&"function"===typeof arguments[3])throw new Error("It looks like you are passing several store enhancers to createStore(). This is not supported. Instead, compose them together to a single function.");if("function"===typeof t&&"undefined"===typeof n&&(n=t,t=void 0),"undefined"!==typeof n){if("function"!==typeof n)throw new Error("Expected the enhancer to be a function.");return n(s)(e,t)}if("function"!==typeof e)throw new Error("Expected the reducer to be a function.");var l=e,u=t,c=[],f=c,d=!1;function p(){f===c&&(f=c.slice())}function h(){if(d)throw new Error("You may not call store.getState() while the reducer is executing. The reducer has already received the state as an argument. Pass it down from the top reducer instead of reading it from the store.");return u}function m(e){if("function"!==typeof e)throw new Error("Expected the listener to be a function.");if(d)throw new Error("You may not call store.subscribe() while the reducer is executing. If you would like to be notified after the store has been updated, subscribe from a component and invoke store.getState() in the callback to access the latest state. See https://redux.js.org/api-reference/store#subscribelistener for more details.");var t=!0;return p(),f.push(e),function(){if(t){if(d)throw new Error("You may not unsubscribe from a store listener while the reducer is executing. See https://redux.js.org/api-reference/store#subscribelistener for more details.");t=!1,p();var n=f.indexOf(e);f.splice(n,1),c=null}}}function g(e){if(!a(e))throw new Error("Actions must be plain objects. Use custom middleware for async actions.");if("undefined"===typeof e.type)throw new Error('Actions may not have an undefined "type" property. Have you misspelled a constant?');if(d)throw new Error("Reducers may not dispatch actions.");try{d=!0,u=l(u,e)}finally{d=!1}for(var t=c=f,n=0;n0}function T(e){return Object.keys(e).map((function(t){return e[t]}))}var C=!("undefined"===typeof window||!window.document||!window.document.createElement);var O,A=((O=function(e,t,n){var r=e[t];return!1===r||E(r)?null:new Error(n+" expect "+t+" \n to be a valid Number > 0 or equal to false. "+r+" given.")}).isRequired=function(e,t,n){if("undefined"===typeof e[t])return new Error("The prop "+t+" is marked as required in \n "+n+", but its value is undefined.");O(e,t,n)},O);function N(e){var t,n,i=e.delay,o=e.isRunning,a=e.closeToast,l=e.type,u=e.hide,c=e.className,d=e.style,p=e.controlledProgress,h=e.progress,m=e.rtl,g=Object(r.a)({},d,{animationDuration:i+"ms",animationPlayState:o?"running":"paused",opacity:u?0:1,transform:p?"scaleX("+h+")":null}),v=f()("Toastify__progress-bar",p?"Toastify__progress-bar--controlled":"Toastify__progress-bar--animated","Toastify__progress-bar--"+l,((t={})["Toastify__progress-bar--rtl"]=m,t),c),y=((n={})[p&&h>=1?"onTransitionEnd":"onAnimationEnd"]=p&&h<1?null:a,n);return s.a.createElement("div",Object(r.a)({className:v,style:g},y))}function D(e){return e.targetTouches&&e.targetTouches.length>=1?e.targetTouches[0].clientX:e.clientX}function L(e){return e.targetTouches&&e.targetTouches.length>=1?e.targetTouches[0].clientY:e.clientY}N.propTypes={delay:A.isRequired,isRunning:u.a.bool.isRequired,closeToast:u.a.func.isRequired,rtl:u.a.bool.isRequired,type:u.a.string,hide:u.a.bool,className:u.a.oneOfType([u.a.string,u.a.object]),progress:u.a.number,controlledProgress:u.a.bool},N.defaultProps={type:y.DEFAULT,hide:!1};var M=C&&/(msie|trident)/i.test(navigator.userAgent),P=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),i=0;it.drag.removalDistance)return void t.setState({preventExitTransition:!0},t.props.closeToast);t.ref.style.transition="transform 0.2s, opacity 0.2s",t.ref.style.transform="translateX(0)",t.ref.style.opacity=1}},t.onDragTransitionEnd=function(){if(t.boundingRect){var e=t.boundingRect,n=e.top,r=e.bottom,i=e.left,o=e.right;t.props.pauseOnHover&&t.drag.x>=i&&t.drag.x<=o&&t.drag.y>=n&&t.drag.y<=r?t.pauseToast():t.playToast()}},t.onExitTransitionEnd=function(){if(M)t.props.onExited();else{var e=t.ref.scrollHeight,n=t.ref.style;requestAnimationFrame((function(){n.minHeight="initial",n.height=e+"px",n.transition="all 0.4s ",requestAnimationFrame((function(){n.height=0,n.padding=0,n.margin=0})),setTimeout((function(){return t.props.onExited()}),400)}))}},t}Object(o.a)(t,e);var n=t.prototype;return n.componentDidMount=function(){this.props.onOpen(this.props.children.props),this.props.draggable&&this.bindDragEvents(),this.props.pauseOnFocusLoss&&this.bindFocusEvents()},n.componentDidUpdate=function(e){e.draggable!==this.props.draggable&&(this.props.draggable?this.bindDragEvents():this.unbindDragEvents()),e.pauseOnFocusLoss!==this.props.pauseOnFocusLoss&&(this.props.pauseOnFocusLoss?this.bindFocusEvents():this.unbindFocusEvents())},n.componentWillUnmount=function(){this.props.onClose(this.props.children.props),this.props.draggable&&this.unbindDragEvents(),this.props.pauseOnFocusLoss&&this.unbindFocusEvents()},n.bindFocusEvents=function(){window.addEventListener("focus",this.playToast),window.addEventListener("blur",this.pauseToast)},n.unbindFocusEvents=function(){window.removeEventListener("focus",this.playToast),window.removeEventListener("blur",this.pauseToast)},n.bindDragEvents=function(){document.addEventListener("mousemove",this.onDragMove),document.addEventListener("mouseup",this.onDragEnd),document.addEventListener("touchmove",this.onDragMove),document.addEventListener("touchend",this.onDragEnd)},n.unbindDragEvents=function(){document.removeEventListener("mousemove",this.onDragMove),document.removeEventListener("mouseup",this.onDragEnd),document.removeEventListener("touchmove",this.onDragMove),document.removeEventListener("touchend",this.onDragEnd)},n.render=function(){var e,t=this,n=this.props,i=n.closeButton,o=n.children,a=n.autoClose,l=n.pauseOnHover,u=n.onClick,c=n.closeOnClick,d=n.type,p=n.hideProgressBar,h=n.closeToast,m=n.transition,g=n.position,v=n.className,y=n.bodyClassName,b=n.progressClassName,w=n.progressStyle,x=n.updateId,_=n.role,k=n.progress,S=n.rtl,E={className:f()("Toastify__toast","Toastify__toast--"+d,(e={},e["Toastify__toast--rtl"]=S,e),v)};a&&l&&(E.onMouseEnter=this.pauseToast,E.onMouseLeave=this.playToast),c&&(E.onClick=function(e){u&&u(e),t.flag.canCloseOnClick&&h()});var T=parseFloat(k)===k;return s.a.createElement(m,{in:this.props.in,appear:!0,onExited:this.onExitTransitionEnd,position:g,preventExitTransition:this.state.preventExitTransition},s.a.createElement("div",Object(r.a)({onClick:u},E,{ref:function(e){return t.ref=e},onMouseDown:this.onDragStart,onTouchStart:this.onDragStart,onMouseUp:this.onDragTransitionEnd,onTouchEnd:this.onDragTransitionEnd}),s.a.createElement("div",Object(r.a)({},this.props.in&&{role:_},{className:f()("Toastify__toast-body",y)}),o),i&&i,(a||T)&&s.a.createElement(N,Object(r.a)({},x&&!T?{key:"pb-"+x}:{},{rtl:S,delay:a,isRunning:this.state.isRunning,closeToast:h,hide:p,type:d,style:w,className:b,controlledProgress:T,progress:k}))))},t}(a.Component);function j(e){var t=e.closeToast,n=e.type,r=e.ariaLabel;return s.a.createElement("button",{className:"Toastify__close-button Toastify__close-button--"+n,type:"button",onClick:function(e){e.stopPropagation(),t(e)},"aria-label":r},"\u2716")}function I(e){var t=e.enter,n=e.exit,o=e.duration,a=void 0===o?750:o,l=e.appendPosition,u=void 0!==l&&l;return function(e){var o,l,c=e.children,f=e.position,d=e.preventExitTransition,p=Object(i.a)(e,["children","position","preventExitTransition"]),h=u?t+"--"+f:t,g=u?n+"--"+f:n;Array.isArray(a)&&2===a.length?(o=a[0],l=a[1]):o=l=a;return s.a.createElement(m.a,Object(r.a)({},p,{timeout:d?0:{enter:o,exit:l},onEnter:function(e){e.classList.add(h),e.style.animationFillMode="forwards",e.style.animationDuration=.001*o+"s"},onEntered:function(e){e.classList.remove(h),e.style.cssText=""},onExit:d?S:function(e){e.classList.add(g),e.style.animationFillMode="forwards",e.style.animationDuration=.001*l+"s"}}),c)}}P.propTypes={closeButton:u.a.oneOfType([u.a.node,u.a.bool]).isRequired,autoClose:A.isRequired,children:u.a.node.isRequired,closeToast:u.a.func.isRequired,position:u.a.oneOf(T(v)).isRequired,pauseOnHover:u.a.bool.isRequired,pauseOnFocusLoss:u.a.bool.isRequired,closeOnClick:u.a.bool.isRequired,transition:u.a.func.isRequired,rtl:u.a.bool.isRequired,hideProgressBar:u.a.bool.isRequired,draggable:u.a.bool.isRequired,draggablePercent:u.a.number.isRequired,in:u.a.bool,onExited:u.a.func,onOpen:u.a.func,onClose:u.a.func,type:u.a.oneOf(T(y)),className:u.a.oneOfType([u.a.string,u.a.object]),bodyClassName:u.a.oneOfType([u.a.string,u.a.object]),progressClassName:u.a.oneOfType([u.a.string,u.a.object]),progressStyle:u.a.object,progress:u.a.number,updateId:u.a.oneOfType([u.a.string,u.a.number]),ariaLabel:u.a.string,containerId:u.a.oneOfType([u.a.string,u.a.number]),role:u.a.string},P.defaultProps={type:y.DEFAULT,in:!0,onOpen:S,onClose:S,className:null,bodyClassName:null,progressClassName:null,updateId:null},j.propTypes={closeToast:u.a.func,arialLabel:u.a.string},j.defaultProps={ariaLabel:"close"};var R=I({enter:"Toastify__bounce-enter",exit:"Toastify__bounce-exit",appendPosition:!0}),q=(I({enter:"Toastify__slide-enter",exit:"Toastify__slide-exit",duration:[450,750],appendPosition:!0}),I({enter:"Toastify__zoom-enter",exit:"Toastify__zoom-exit"}),I({enter:"Toastify__flip-enter",exit:"Toastify__flip-exit"}),{list:new Map,on:function(e,t){return this.list.has(e)||this.list.set(e,[]),this.list.get(e).push(t),this},off:function(e){return this.list.delete(e),this},emit:function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r0}function Y(e,t){var n=function(e){return $()?e?z.get(e):z.get(B):null}(t.containerId);if(!n)return null;var r=n.collection[e];return"undefined"===typeof r?null:r}function G(e,t){return Object(r.a)({},e,{type:t,toastId:X(e)})}function K(){return(Math.random().toString(36)+Date.now().toString(36)).substr(2,10)}function X(e){return e&&("string"===typeof e.toastId||"number"===typeof e.toastId&&!isNaN(e.toastId))?e.toastId:K()}function Q(e,t){return $()?q.emit(b,e,t):(W.push({action:b,content:e,options:t}),V&&C&&(V=!1,H=document.createElement("div"),document.body.appendChild(H),Object(g.render)(s.a.createElement(F,U),H))),t.toastId}var J=function(e,t){return Q(e,G(t,t&&t.type||y.DEFAULT))},Z=function(e){y[e]!==y.DEFAULT&&(J[y[e].toLowerCase()]=function(t,n){return Q(t,G(n,n&&n.type||y[e]))})};for(var ee in y)Z(ee);J.warn=J.warning,J.dismiss=function(e){return void 0===e&&(e=null),$()&&q.emit(w,e)},J.isActive=S,J.update=function(e,t){void 0===t&&(t={}),setTimeout((function(){var n=Y(e,t);if(n){var i=n.options,o=n.content,a=Object(r.a)({},i,{},t,{toastId:t.toastId||e});t.toastId&&t.toastId!==e?a.staleToastId=e:a.updateId=K();var s="undefined"!==typeof a.render?a.render:o;delete a.render,Q(s,a)}}),0)},J.done=function(e){J.update(e,{progress:1})},J.onChange=function(e){"function"===typeof e&&q.on(k,e)},J.configure=function(e){V=!0,U=e},J.POSITION=v,J.TYPE=y,q.on(x,(function(e){B=e.props.containerId||e,z.set(B,e),J.isActive=function(t){return e.isToastActive(t)},W.forEach((function(e){q.emit(e.action,e.content,e.options)})),W=[]})).on(_,(function(e){e?z.delete(e.props.containerId||e):z.clear(),J.isActive=S,C&&H&&document.body.removeChild(H)}))},function(e,t,n){var r;!function(){"use strict";var n={}.hasOwnProperty;function i(){for(var e=[],t=0;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n-1;i--){var o=n[i],a=(o.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(a)>-1&&(r=o)}return g.head.insertBefore(t,r),e}}function Y(){for(var e=12,t="";e-- >0;)t+="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"[62*Math.random()|0];return t}function G(e){return"".concat(e).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function K(e){return Object.keys(e||{}).reduce((function(t,n){return t+"".concat(n,": ").concat(e[n],";")}),"")}function X(e){return e.size!==V.size||e.x!==V.x||e.y!==V.y||e.rotate!==V.rotate||e.flipX||e.flipY}function Q(e){var t=e.transform,n=e.containerWidth,r=e.iconWidth,i={transform:"translate(".concat(n/2," 256)")},o="translate(".concat(32*t.x,", ").concat(32*t.y,") "),a="scale(".concat(t.size/16*(t.flipX?-1:1),", ").concat(t.size/16*(t.flipY?-1:1),") "),s="rotate(".concat(t.rotate," 0 0)");return{outer:i,inner:{transform:"".concat(o," ").concat(a," ").concat(s)},path:{transform:"translate(".concat(r/2*-1," -256)")}}}var J={x:0,y:0,width:"100%",height:"100%"};function Z(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return e.attributes&&(e.attributes.fill||t)&&(e.attributes.fill="black"),e}function ee(e){var t=e.icons,n=t.main,r=t.mask,i=e.prefix,o=e.iconName,a=e.transform,l=e.symbol,u=e.title,c=e.extra,f=e.watchable,d=void 0!==f&&f,p=r.found?r:n,h=p.width,m=p.height,g="fa-w-".concat(Math.ceil(h/m*16)),v=[S.replacementClass,o?"".concat(S.familyPrefix,"-").concat(o):"",g].filter((function(e){return-1===c.classes.indexOf(e)})).concat(c.classes).join(" "),y={children:[],attributes:s({},c.attributes,{"data-prefix":i,"data-icon":o,class:v,role:c.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(h," ").concat(m)})};d&&(y.attributes["data-fa-i2svg"]=""),u&&y.children.push({tag:"title",attributes:{id:y.attributes["aria-labelledby"]||"title-".concat(Y())},children:[u]});var b=s({},y,{prefix:i,iconName:o,main:n,mask:r,transform:a,symbol:l,styles:c.styles}),w=r.found&&n.found?function(e){var t,n=e.children,r=e.attributes,i=e.main,o=e.mask,a=e.transform,l=i.width,u=i.icon,c=o.width,f=o.icon,d=Q({transform:a,containerWidth:c,iconWidth:l}),p={tag:"rect",attributes:s({},J,{fill:"white"})},h=u.children?{children:u.children.map(Z)}:{},m={tag:"g",attributes:s({},d.inner),children:[Z(s({tag:u.tag,attributes:s({},u.attributes,d.path)},h))]},g={tag:"g",attributes:s({},d.outer),children:[m]},v="mask-".concat(Y()),y="clip-".concat(Y()),b={tag:"mask",attributes:s({},J,{id:v,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[p,g]},w={tag:"defs",children:[{tag:"clipPath",attributes:{id:y},children:(t=f,"g"===t.tag?t.children:[t])},b]};return n.push(w,{tag:"rect",attributes:s({fill:"currentColor","clip-path":"url(#".concat(y,")"),mask:"url(#".concat(v,")")},J)}),{children:n,attributes:r}}(b):function(e){var t=e.children,n=e.attributes,r=e.main,i=e.transform,o=K(e.styles);if(o.length>0&&(n.style=o),X(i)){var a=Q({transform:i,containerWidth:r.width,iconWidth:r.width});t.push({tag:"g",attributes:s({},a.outer),children:[{tag:"g",attributes:s({},a.inner),children:[{tag:r.icon.tag,children:r.icon.children,attributes:s({},r.icon.attributes,a.path)}]}]})}else t.push(r.icon);return{children:t,attributes:n}}(b),x=w.children,_=w.attributes;return b.children=x,b.attributes=_,l?function(e){var t=e.prefix,n=e.iconName,r=e.children,i=e.attributes,o=e.symbol;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:s({},i,{id:!0===o?"".concat(t,"-").concat(S.familyPrefix,"-").concat(n):o}),children:r}]}]}(b):function(e){var t=e.children,n=e.main,r=e.mask,i=e.attributes,o=e.styles,a=e.transform;if(X(a)&&n.found&&!r.found){var l={x:n.width/n.height/2,y:.5};i.style=K(s({},o,{"transform-origin":"".concat(l.x+a.x/16,"em ").concat(l.y+a.y/16,"em")}))}return[{tag:"svg",attributes:i,children:t}]}(b)}var te=function(){},ne=(S.measurePerformance&&v&&v.mark&&v.measure,function(e,t,n,r){var i,o,a,s=Object.keys(e),l=s.length,u=void 0!==r?function(e,t){return function(n,r,i,o){return e.call(t,n,r,i,o)}}(t,r):t;for(void 0===n?(i=1,a=e[s[0]]):(i=0,a=n);i2&&void 0!==arguments[2]?arguments[2]:{},r=n.skipHooks,i=void 0!==r&&r,o=Object.keys(t).reduce((function(e,n){var r=t[n];return!!r.icon?e[r.iconName]=r.icon:e[n]=r,e}),{});"function"!==typeof T.hooks.addPack||i?T.styles[e]=s({},T.styles[e]||{},o):T.hooks.addPack(e,o),"fas"===e&&re("fa",t)}var ie=T.styles,oe=T.shims,ae=function(){var e=function(e){return ne(ie,(function(t,n,r){return t[r]=ne(n,e,{}),t}),{})};e((function(e,t,n){return t[3]&&(e[t[3]]=n),e})),e((function(e,t,n){var r=t[2];return e[n]=n,r.forEach((function(t){e[t]=n})),e}));var t="far"in ie;ne(oe,(function(e,n){var r=n[0],i=n[1],o=n[2];return"far"!==i||t||(i="fas"),e[r]={prefix:i,iconName:o},e}),{})};ae();T.styles;function se(e,t,n){if(e&&e[t]&&e[t][n])return{prefix:t,iconName:n,icon:e[t][n]}}function le(e){var t=e.tag,n=e.attributes,r=void 0===n?{}:n,i=e.children,o=void 0===i?[]:i;return"string"===typeof e?G(e):"<".concat(t," ").concat(function(e){return Object.keys(e||{}).reduce((function(t,n){return t+"".concat(n,'="').concat(G(e[n]),'" ')}),"").trim()}(r),">").concat(o.map(le).join(""),"")}var ue=function(e){var t={size:16,x:0,y:0,flipX:!1,flipY:!1,rotate:0};return e?e.toLowerCase().split(" ").reduce((function(e,t){var n=t.toLowerCase().split("-"),r=n[0],i=n.slice(1).join("-");if(r&&"h"===i)return e.flipX=!0,e;if(r&&"v"===i)return e.flipY=!0,e;if(i=parseFloat(i),isNaN(i))return e;switch(r){case"grow":e.size=e.size+i;break;case"shrink":e.size=e.size-i;break;case"left":e.x=e.x-i;break;case"right":e.x=e.x+i;break;case"up":e.y=e.y-i;break;case"down":e.y=e.y+i;break;case"rotate":e.rotate=e.rotate+i}return e}),t):t};function ce(e){this.name="MissingIcon",this.message=e||"Icon unavailable",this.stack=(new Error).stack}ce.prototype=Object.create(Error.prototype),ce.prototype.constructor=ce;var fe={fill:"currentColor"},de={attributeType:"XML",repeatCount:"indefinite",dur:"2s"},pe={tag:"path",attributes:s({},fe,{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"})},he=s({},de,{attributeName:"opacity"});s({},fe,{cx:"256",cy:"364",r:"28"}),s({},de,{attributeName:"r",values:"28;14;28;28;14;28;"}),s({},he,{values:"1;0;1;1;0;1;"}),s({},fe,{opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"}),s({},he,{values:"1;0;0;0;0;1;"}),s({},fe,{opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"}),s({},he,{values:"0;0;1;1;0;0;"}),T.styles;function me(e){var t=e[0],n=e[1],r=l(e.slice(4),1)[0];return{found:!0,width:t,height:n,icon:Array.isArray(r)?{tag:"g",attributes:{class:"".concat(S.familyPrefix,"-").concat(x.GROUP)},children:[{tag:"path",attributes:{class:"".concat(S.familyPrefix,"-").concat(x.SECONDARY),fill:"currentColor",d:r[0]}},{tag:"path",attributes:{class:"".concat(S.familyPrefix,"-").concat(x.PRIMARY),fill:"currentColor",d:r[1]}}]}:{tag:"path",attributes:{fill:"currentColor",d:r}}}}T.styles;function ge(){var e="svg-inline--fa",t=S.familyPrefix,n=S.replacementClass,r='svg:not(:root).svg-inline--fa {\n overflow: visible;\n}\n\n.svg-inline--fa {\n display: inline-block;\n font-size: inherit;\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n}\n.svg-inline--fa.fa-lg {\n vertical-align: -0.225em;\n}\n.svg-inline--fa.fa-w-1 {\n width: 0.0625em;\n}\n.svg-inline--fa.fa-w-2 {\n width: 0.125em;\n}\n.svg-inline--fa.fa-w-3 {\n width: 0.1875em;\n}\n.svg-inline--fa.fa-w-4 {\n width: 0.25em;\n}\n.svg-inline--fa.fa-w-5 {\n width: 0.3125em;\n}\n.svg-inline--fa.fa-w-6 {\n width: 0.375em;\n}\n.svg-inline--fa.fa-w-7 {\n width: 0.4375em;\n}\n.svg-inline--fa.fa-w-8 {\n width: 0.5em;\n}\n.svg-inline--fa.fa-w-9 {\n width: 0.5625em;\n}\n.svg-inline--fa.fa-w-10 {\n width: 0.625em;\n}\n.svg-inline--fa.fa-w-11 {\n width: 0.6875em;\n}\n.svg-inline--fa.fa-w-12 {\n width: 0.75em;\n}\n.svg-inline--fa.fa-w-13 {\n width: 0.8125em;\n}\n.svg-inline--fa.fa-w-14 {\n width: 0.875em;\n}\n.svg-inline--fa.fa-w-15 {\n width: 0.9375em;\n}\n.svg-inline--fa.fa-w-16 {\n width: 1em;\n}\n.svg-inline--fa.fa-w-17 {\n width: 1.0625em;\n}\n.svg-inline--fa.fa-w-18 {\n width: 1.125em;\n}\n.svg-inline--fa.fa-w-19 {\n width: 1.1875em;\n}\n.svg-inline--fa.fa-w-20 {\n width: 1.25em;\n}\n.svg-inline--fa.fa-pull-left {\n margin-right: 0.3em;\n width: auto;\n}\n.svg-inline--fa.fa-pull-right {\n margin-left: 0.3em;\n width: auto;\n}\n.svg-inline--fa.fa-border {\n height: 1.5em;\n}\n.svg-inline--fa.fa-li {\n width: 2em;\n}\n.svg-inline--fa.fa-fw {\n width: 1.25em;\n}\n\n.fa-layers svg.svg-inline--fa {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.fa-layers {\n display: inline-block;\n height: 1em;\n position: relative;\n text-align: center;\n vertical-align: -0.125em;\n width: 1em;\n}\n.fa-layers svg.svg-inline--fa {\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-counter, .fa-layers-text {\n display: inline-block;\n position: absolute;\n text-align: center;\n}\n\n.fa-layers-text {\n left: 50%;\n top: 50%;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-counter {\n background-color: #ff253a;\n border-radius: 1em;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n color: #fff;\n height: 1.5em;\n line-height: 1;\n max-width: 5em;\n min-width: 1.5em;\n overflow: hidden;\n padding: 0.25em;\n right: 0;\n text-overflow: ellipsis;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-bottom-right {\n bottom: 0;\n right: 0;\n top: auto;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: bottom right;\n transform-origin: bottom right;\n}\n\n.fa-layers-bottom-left {\n bottom: 0;\n left: 0;\n right: auto;\n top: auto;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: bottom left;\n transform-origin: bottom left;\n}\n\n.fa-layers-top-right {\n right: 0;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-top-left {\n left: 0;\n right: auto;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top left;\n transform-origin: top left;\n}\n\n.fa-lg {\n font-size: 1.3333333333em;\n line-height: 0.75em;\n vertical-align: -0.0667em;\n}\n\n.fa-xs {\n font-size: 0.75em;\n}\n\n.fa-sm {\n font-size: 0.875em;\n}\n\n.fa-1x {\n font-size: 1em;\n}\n\n.fa-2x {\n font-size: 2em;\n}\n\n.fa-3x {\n font-size: 3em;\n}\n\n.fa-4x {\n font-size: 4em;\n}\n\n.fa-5x {\n font-size: 5em;\n}\n\n.fa-6x {\n font-size: 6em;\n}\n\n.fa-7x {\n font-size: 7em;\n}\n\n.fa-8x {\n font-size: 8em;\n}\n\n.fa-9x {\n font-size: 9em;\n}\n\n.fa-10x {\n font-size: 10em;\n}\n\n.fa-fw {\n text-align: center;\n width: 1.25em;\n}\n\n.fa-ul {\n list-style-type: none;\n margin-left: 2.5em;\n padding-left: 0;\n}\n.fa-ul > li {\n position: relative;\n}\n\n.fa-li {\n left: -2em;\n position: absolute;\n text-align: center;\n width: 2em;\n line-height: inherit;\n}\n\n.fa-border {\n border: solid 0.08em #eee;\n border-radius: 0.1em;\n padding: 0.2em 0.25em 0.15em;\n}\n\n.fa-pull-left {\n float: left;\n}\n\n.fa-pull-right {\n float: right;\n}\n\n.fa.fa-pull-left,\n.fas.fa-pull-left,\n.far.fa-pull-left,\n.fal.fa-pull-left,\n.fab.fa-pull-left {\n margin-right: 0.3em;\n}\n.fa.fa-pull-right,\n.fas.fa-pull-right,\n.far.fa-pull-right,\n.fal.fa-pull-right,\n.fab.fa-pull-right {\n margin-left: 0.3em;\n}\n\n.fa-spin {\n -webkit-animation: fa-spin 2s infinite linear;\n animation: fa-spin 2s infinite linear;\n}\n\n.fa-pulse {\n -webkit-animation: fa-spin 1s infinite steps(8);\n animation: fa-spin 1s infinite steps(8);\n}\n\n@-webkit-keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n.fa-rotate-90 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg);\n}\n\n.fa-rotate-180 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n}\n\n.fa-rotate-270 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";\n -webkit-transform: rotate(270deg);\n transform: rotate(270deg);\n}\n\n.fa-flip-horizontal {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";\n -webkit-transform: scale(-1, 1);\n transform: scale(-1, 1);\n}\n\n.fa-flip-vertical {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";\n -webkit-transform: scale(1, -1);\n transform: scale(1, -1);\n}\n\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";\n -webkit-transform: scale(-1, -1);\n transform: scale(-1, -1);\n}\n\n:root .fa-rotate-90,\n:root .fa-rotate-180,\n:root .fa-rotate-270,\n:root .fa-flip-horizontal,\n:root .fa-flip-vertical,\n:root .fa-flip-both {\n -webkit-filter: none;\n filter: none;\n}\n\n.fa-stack {\n display: inline-block;\n height: 2em;\n position: relative;\n width: 2.5em;\n}\n\n.fa-stack-1x,\n.fa-stack-2x {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.svg-inline--fa.fa-stack-1x {\n height: 1em;\n width: 1.25em;\n}\n.svg-inline--fa.fa-stack-2x {\n height: 2em;\n width: 2.5em;\n}\n\n.fa-inverse {\n color: #fff;\n}\n\n.sr-only {\n border: 0;\n clip: rect(0, 0, 0, 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px;\n}\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n clip: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n position: static;\n width: auto;\n}\n\n.svg-inline--fa .fa-primary {\n fill: var(--fa-primary-color, currentColor);\n opacity: 1;\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa .fa-secondary {\n fill: var(--fa-secondary-color, currentColor);\n opacity: 0.4;\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-primary {\n opacity: 0.4;\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\n opacity: 1;\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa mask .fa-primary,\n.svg-inline--fa mask .fa-secondary {\n fill: black;\n}\n\n.fad.fa-inverse {\n color: #fff;\n}';if("fa"!==t||n!==e){var i=new RegExp("\\.".concat("fa","\\-"),"g"),o=new RegExp("\\--".concat("fa","\\-"),"g"),a=new RegExp("\\.".concat(e),"g");r=r.replace(i,".".concat(t,"-")).replace(o,"--".concat(t,"-")).replace(a,".".concat(n))}return r}function ve(){S.autoAddCss&&!_e&&($(ge()),_e=!0)}function ye(e,t){return Object.defineProperty(e,"abstract",{get:t}),Object.defineProperty(e,"html",{get:function(){return e.abstract.map((function(e){return le(e)}))}}),Object.defineProperty(e,"node",{get:function(){if(y){var t=g.createElement("div");return t.innerHTML=e.html,t.children}}}),e}function be(e){var t=e.prefix,n=void 0===t?"fa":t,r=e.iconName;if(r)return se(xe.definitions,n,r)||se(T.styles,n,r)}var we,xe=new(function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.definitions={}}var t,n,r;return t=e,(n=[{key:"add",value:function(){for(var e=this,t=arguments.length,n=new Array(t),r=0;r1&&void 0!==arguments[1]?arguments[1]:{},n=t.transform,r=void 0===n?V:n,i=t.symbol,o=void 0!==i&&i,a=t.mask,l=void 0===a?null:a,u=t.title,c=void 0===u?null:u,f=t.classes,d=void 0===f?[]:f,p=t.attributes,h=void 0===p?{}:p,m=t.styles,g=void 0===m?{}:m;if(e){var v=e.prefix,y=e.iconName,b=e.icon;return ye(s({type:"icon"},e),(function(){return ve(),S.autoA11y&&(c?h["aria-labelledby"]="".concat(S.replacementClass,"-title-").concat(Y()):(h["aria-hidden"]="true",h.focusable="false")),ee({icons:{main:me(b),mask:l?me(l.icon):{found:!1,width:null,height:null,icon:{}}},prefix:v,iconName:y,transform:s({},V,r),symbol:o,title:c,extra:{attributes:h,styles:g,classes:d}})}))}},function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=(e||{}).icon?e:be(e||{}),r=t.mask;return r&&(r=(r||{}).icon?r:be(r||{})),we(n,s({},t,{mask:r}))})}).call(this,n(28),n(109).setImmediate)},function(e,t){"function"===typeof Object.create?e.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:e.exports=function(e,t){if(t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}}},function(e,t,n){"use strict";e.exports=n(102)},function(e,t,n){function r(){var e={},t={},n="";function i(t){r.each(t.split(" "),(function(t){e[t]=!!t}))}return r.each([].slice.call(arguments),(function(e){switch(r.getType(e)){case"string":case"number":i(e);break;case"array":i(r.apply(null,e));break;case"element":i(r(e.className||""));break;case"nodelist":i(r.apply(null,[].slice.call(e)));break;case"jquery":i(r.apply(null,e.get()));break;case"object":t=r.extend(t,e)}})),e=r.extend(e,t),r.each(e,(function(e,t){e&&(n+=" "+t)})),n.substr(1)}r.setTo=function(e){var t=r.getType(e);return"element"===t&&(e=[e]),"jquery"===t&&(e=e.get()),"nodelist"===t&&(e=[].slice.call(e)),function(){var t=r.apply(null,arguments);r.each(e,(function(e){e.className=t}))}},r.each=function(e,t){var n=r.getType(e);if("array"===n)for(var i=0;i1?"element":t},r.extend=function(e,t){var n={},i=[e,t];return r.each(i,(function(e){r.each(e,(function(t,r){e.hasOwnProperty(r)&&(n[r]=t)}))})),n},e.exports&&(e.exports=r)},,,function(e,t,n){"use strict";(function(t){var r=n(24),i=n(123),o=n(57),a={"Content-Type":"application/x-www-form-urlencoded"};function s(e,t){!r.isUndefined(e)&&r.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var l={transitional:{silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},adapter:function(){var e;return("undefined"!==typeof XMLHttpRequest||"undefined"!==typeof t&&"[object process]"===Object.prototype.toString.call(t))&&(e=n(58)),e}(),transformRequest:[function(e,t){return i(t,"Accept"),i(t,"Content-Type"),r.isFormData(e)||r.isArrayBuffer(e)||r.isBuffer(e)||r.isStream(e)||r.isFile(e)||r.isBlob(e)?e:r.isArrayBufferView(e)?e.buffer:r.isURLSearchParams(e)?(s(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):r.isObject(e)||t&&"application/json"===t["Content-Type"]?(s(t,"application/json"),function(e,t,n){if(r.isString(e))try{return(t||JSON.parse)(e),r.trim(e)}catch(i){if("SyntaxError"!==i.name)throw i}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional,n=t&&t.silentJSONParsing,i=t&&t.forcedJSONParsing,a=!n&&"json"===this.responseType;if(a||i&&r.isString(e)&&e.length)try{return JSON.parse(e)}catch(s){if(a){if("SyntaxError"===s.name)throw o(s,this,"E_JSON_PARSE");throw s}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};r.forEach(["delete","get","head"],(function(e){l.headers[e]={}})),r.forEach(["post","put","patch"],(function(e){l.headers[e]=r.merge(a)})),e.exports=l}).call(this,n(54))},function(e,t,n){"use strict";var r=Object.prototype.hasOwnProperty,i=Array.isArray,o=function(){for(var e=[],t=0;t<256;++t)e.push("%"+((t<16?"0":"")+t.toString(16)).toUpperCase());return e}(),a=function(e,t){for(var n=t&&t.plainObjects?Object.create(null):{},r=0;r1;){var t=e.pop(),n=t.obj[t.prop];if(i(n)){for(var r=[],o=0;o=48&&s<=57||s>=65&&s<=90||s>=97&&s<=122?i+=r.charAt(a):s<128?i+=o[s]:s<2048?i+=o[192|s>>6]+o[128|63&s]:s<55296||s>=57344?i+=o[224|s>>12]+o[128|s>>6&63]+o[128|63&s]:(a+=1,s=65536+((1023&s)<<10|1023&r.charCodeAt(a)),i+=o[240|s>>18]+o[128|s>>12&63]+o[128|s>>6&63]+o[128|63&s])}return i},isBuffer:function(e){return!(!e||"object"!==typeof e)&&!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},maybeMap:function(e,t){if(i(e)){for(var n=[],r=0;r1)for(var n=1;n!?|~^@]/,h=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;function m(e,t,n){return r=e,i=n,t}function g(e,t){var n,r=e.next();if('"'==r||"'"==r)return t.tokenize=(n=r,function(e,t){var r,i=!1;if(s&&"@"==e.peek()&&e.match(h))return t.tokenize=g,m("jsonld-keyword","meta");for(;null!=(r=e.next())&&(r!=n||i);)i=!i&&"\\"==r;return i||(t.tokenize=g),m("string","string")}),t.tokenize(e,t);if("."==r&&e.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/))return m("number","number");if("."==r&&e.match(".."))return m("spread","meta");if(/[\[\]{}\(\),;\:\.]/.test(r))return m(r);if("="==r&&e.eat(">"))return m("=>","operator");if("0"==r&&e.match(/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/))return m("number","number");if(/\d/.test(r))return e.match(/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/),m("number","number");if("/"==r)return e.eat("*")?(t.tokenize=v,v(e,t)):e.eat("/")?(e.skipToEnd(),m("comment","comment")):Je(e,t,1)?(function(e){for(var t,n=!1,r=!1;null!=(t=e.next());){if(!n){if("/"==t&&!r)return;"["==t?r=!0:r&&"]"==t&&(r=!1)}n=!n&&"\\"==t}}(e),e.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/),m("regexp","string-2")):(e.eat("="),m("operator","operator",e.current()));if("`"==r)return t.tokenize=y,y(e,t);if("#"==r&&"!"==e.peek())return e.skipToEnd(),m("meta","meta");if("#"==r&&e.eatWhile(f))return m("variable","property");if("<"==r&&e.match("!--")||"-"==r&&e.match("->")&&!/\S/.test(e.string.slice(0,e.start)))return e.skipToEnd(),m("comment","comment");if(p.test(r))return">"==r&&t.lexical&&">"==t.lexical.type||(e.eat("=")?"!"!=r&&"="!=r||e.eat("="):/[<>*+\-|&?]/.test(r)&&(e.eat(r),">"==r&&e.eat(r))),"?"==r&&e.eat(".")?m("."):m("operator","operator",e.current());if(f.test(r)){e.eatWhile(f);var i=e.current();if("."!=t.lastType){if(d.propertyIsEnumerable(i)){var o=d[i];return m(o.type,o.style,i)}if("async"==i&&e.match(/^(\s|\/\*([^*]|\*(?!\/))*?\*\/)*[\[\(\w]/,!1))return m("async","keyword",i)}return m("variable","variable",i)}}function v(e,t){for(var n,r=!1;n=e.next();){if("/"==n&&r){t.tokenize=g;break}r="*"==n}return m("comment","comment")}function y(e,t){for(var n,r=!1;null!=(n=e.next());){if(!r&&("`"==n||"$"==n&&e.eat("{"))){t.tokenize=g;break}r=!r&&"\\"==n}return m("quasi","string-2",e.current())}function b(e,t){t.fatArrowAt&&(t.fatArrowAt=null);var n=e.string.indexOf("=>",e.start);if(!(n<0)){if(c){var r=/:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(e.string.slice(e.start,n));r&&(n=r.index)}for(var i=0,o=!1,a=n-1;a>=0;--a){var s=e.string.charAt(a),l="([{}])".indexOf(s);if(l>=0&&l<3){if(!i){++a;break}if(0==--i){"("==s&&(o=!0);break}}else if(l>=3&&l<6)++i;else if(f.test(s))o=!0;else if(/["'\/`]/.test(s))for(;;--a){if(0==a)return;if(e.string.charAt(a-1)==s&&"\\"!=e.string.charAt(a-2)){a--;break}}else if(o&&!i){++a;break}}o&&!i&&(t.fatArrowAt=a)}}var w={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,this:!0,import:!0,"jsonld-keyword":!0};function x(e,t,n,r,i,o){this.indented=e,this.column=t,this.type=n,this.prev=i,this.info=o,null!=r&&(this.align=r)}function _(e,t){if(!u)return!1;for(var n=e.localVars;n;n=n.next)if(n.name==t)return!0;for(var r=e.context;r;r=r.prev)for(n=r.vars;n;n=n.next)if(n.name==t)return!0}function k(e,t,n,r,i){var o=e.cc;for(S.state=e,S.stream=i,S.marked=null,S.cc=o,S.style=t,e.lexical.hasOwnProperty("align")||(e.lexical.align=!0);;)if((o.length?o.pop():l?B:F)(n,r)){for(;o.length&&o[o.length-1].lex;)o.pop()();return S.marked?S.marked:"variable"==n&&_(e,r)?"variable-2":t}}var S={state:null,column:null,marked:null,cc:null};function E(){for(var e=arguments.length-1;e>=0;e--)S.cc.push(arguments[e])}function T(){return E.apply(null,arguments),!0}function C(e,t){for(var n=t;n;n=n.next)if(n.name==e)return!0;return!1}function O(e){var t=S.state;if(S.marked="def",u){if(t.context)if("var"==t.lexical.info&&t.context&&t.context.block){var r=function e(t,n){if(n){if(n.block){var r=e(t,n.prev);return r?r==n.prev?n:new N(r,n.vars,!0):null}return C(t,n.vars)?n:new N(n.prev,new D(t,n.vars),!1)}return null}(e,t.context);if(null!=r)return void(t.context=r)}else if(!C(e,t.localVars))return void(t.localVars=new D(e,t.localVars));n.globalVars&&!C(e,t.globalVars)&&(t.globalVars=new D(e,t.globalVars))}}function A(e){return"public"==e||"private"==e||"protected"==e||"abstract"==e||"readonly"==e}function N(e,t,n){this.prev=e,this.vars=t,this.block=n}function D(e,t){this.name=e,this.next=t}var L=new D("this",new D("arguments",null));function M(){S.state.context=new N(S.state.context,S.state.localVars,!1),S.state.localVars=L}function P(){S.state.context=new N(S.state.context,S.state.localVars,!0),S.state.localVars=null}function j(){S.state.localVars=S.state.context.vars,S.state.context=S.state.context.prev}function I(e,t){var n=function(){var n=S.state,r=n.indented;if("stat"==n.lexical.type)r=n.lexical.indented;else for(var i=n.lexical;i&&")"==i.type&&i.align;i=i.prev)r=i.indented;n.lexical=new x(r,S.stream.column(),e,null,n.lexical,t)};return n.lex=!0,n}function R(){var e=S.state;e.lexical.prev&&(")"==e.lexical.type&&(e.indented=e.lexical.indented),e.lexical=e.lexical.prev)}function q(e){return function t(n){return n==e?T():";"==e||"}"==n||")"==n||"]"==n?E():T(t)}}function F(e,t){return"var"==e?T(I("vardef",t),ke,q(";"),R):"keyword a"==e?T(I("form"),U,F,R):"keyword b"==e?T(I("form"),F,R):"keyword d"==e?S.stream.match(/^\s*$/,!1)?T():T(I("stat"),V,q(";"),R):"debugger"==e?T(q(";")):"{"==e?T(I("}"),P,se,R,j):";"==e?T():"if"==e?("else"==S.state.lexical.info&&S.state.cc[S.state.cc.length-1]==R&&S.state.cc.pop()(),T(I("form"),U,F,R,Ae)):"function"==e?T(Me):"for"==e?T(I("form"),P,Ne,F,j,R):"class"==e||c&&"interface"==t?(S.marked="keyword",T(I("form","class"==e?e:t),qe,R)):"variable"==e?c&&"declare"==t?(S.marked="keyword",T(F)):c&&("module"==t||"enum"==t||"type"==t)&&S.stream.match(/^\s*\w/,!1)?(S.marked="keyword","enum"==t?T(Xe):"type"==t?T(je,q("operator"),de,q(";")):T(I("form"),Se,q("{"),I("}"),se,R,R)):c&&"namespace"==t?(S.marked="keyword",T(I("form"),B,F,R)):c&&"abstract"==t?(S.marked="keyword",T(F)):T(I("stat"),ee):"switch"==e?T(I("form"),U,q("{"),I("}","switch"),P,se,R,R,j):"case"==e?T(B,q(":")):"default"==e?T(q(":")):"catch"==e?T(I("form"),M,z,F,R,j):"export"==e?T(I("stat"),He,R):"import"==e?T(I("stat"),We,R):"async"==e?T(F):"@"==t?T(B,F):E(I("stat"),B,q(";"),R)}function z(e){if("("==e)return T(Ie,q(")"))}function B(e,t){return W(e,t,!1)}function H(e,t){return W(e,t,!0)}function U(e){return"("!=e?E():T(I(")"),V,q(")"),R)}function W(e,t,n){if(S.state.fatArrowAt==S.stream.start){var r=n?Q:X;if("("==e)return T(M,I(")"),oe(Ie,")"),R,q("=>"),r,j);if("variable"==e)return E(M,Se,q("=>"),r,j)}var i=n?Y:$;return w.hasOwnProperty(e)?T(i):"function"==e?T(Me,i):"class"==e||c&&"interface"==t?(S.marked="keyword",T(I("form"),Re,R)):"keyword c"==e||"async"==e?T(n?H:B):"("==e?T(I(")"),V,q(")"),R,i):"operator"==e||"spread"==e?T(n?H:B):"["==e?T(I("]"),Ke,R,i):"{"==e?ae(ne,"}",null,i):"quasi"==e?E(G,i):"new"==e?T(function(e){return function(t){return"."==t?T(e?Z:J):"variable"==t&&c?T(we,e?Y:$):E(e?H:B)}}(n)):T()}function V(e){return e.match(/[;\}\)\],]/)?E():E(B)}function $(e,t){return","==e?T(V):Y(e,t,!1)}function Y(e,t,n){var r=0==n?$:Y,i=0==n?B:H;return"=>"==e?T(M,n?Q:X,j):"operator"==e?/\+\+|--/.test(t)||c&&"!"==t?T(r):c&&"<"==t&&S.stream.match(/^([^<>]|<[^<>]*>)*>\s*\(/,!1)?T(I(">"),oe(de,">"),R,r):"?"==t?T(B,q(":"),i):T(i):"quasi"==e?E(G,r):";"!=e?"("==e?ae(H,")","call",r):"."==e?T(te,r):"["==e?T(I("]"),V,q("]"),R,r):c&&"as"==t?(S.marked="keyword",T(de,r)):"regexp"==e?(S.state.lastType=S.marked="operator",S.stream.backUp(S.stream.pos-S.stream.start-1),T(i)):void 0:void 0}function G(e,t){return"quasi"!=e?E():"${"!=t.slice(t.length-2)?T(G):T(V,K)}function K(e){if("}"==e)return S.marked="string-2",S.state.tokenize=y,T(G)}function X(e){return b(S.stream,S.state),E("{"==e?F:B)}function Q(e){return b(S.stream,S.state),E("{"==e?F:H)}function J(e,t){if("target"==t)return S.marked="keyword",T($)}function Z(e,t){if("target"==t)return S.marked="keyword",T(Y)}function ee(e){return":"==e?T(R,F):E($,q(";"),R)}function te(e){if("variable"==e)return S.marked="property",T()}function ne(e,t){return"async"==e?(S.marked="property",T(ne)):"variable"==e||"keyword"==S.style?(S.marked="property","get"==t||"set"==t?T(re):(c&&S.state.fatArrowAt==S.stream.start&&(n=S.stream.match(/^\s*:\s*/,!1))&&(S.state.fatArrowAt=S.stream.pos+n[0].length),T(ie))):"number"==e||"string"==e?(S.marked=s?"property":S.style+" property",T(ie)):"jsonld-keyword"==e?T(ie):c&&A(t)?(S.marked="keyword",T(ne)):"["==e?T(B,le,q("]"),ie):"spread"==e?T(H,ie):"*"==t?(S.marked="keyword",T(ne)):":"==e?E(ie):void 0;var n}function re(e){return"variable"!=e?E(ie):(S.marked="property",T(Me))}function ie(e){return":"==e?T(H):"("==e?E(Me):void 0}function oe(e,t,n){function r(i,o){if(n?n.indexOf(i)>-1:","==i){var a=S.state.lexical;return"call"==a.info&&(a.pos=(a.pos||0)+1),T((function(n,r){return n==t||r==t?E():E(e)}),r)}return i==t||o==t?T():n&&n.indexOf(";")>-1?E(e):T(q(t))}return function(n,i){return n==t||i==t?T():E(e,r)}}function ae(e,t,n){for(var r=3;r"),de):"quasi"==e?E(ge,be):void 0}function pe(e){if("=>"==e)return T(de)}function he(e){return e.match(/[\}\)\]]/)?T():","==e||";"==e?T(he):E(me,he)}function me(e,t){return"variable"==e||"keyword"==S.style?(S.marked="property",T(me)):"?"==t||"number"==e||"string"==e?T(me):":"==e?T(de):"["==e?T(q("variable"),ue,q("]"),me):"("==e?E(Pe,me):e.match(/[;\}\)\],]/)?void 0:T()}function ge(e,t){return"quasi"!=e?E():"${"!=t.slice(t.length-2)?T(ge):T(de,ve)}function ve(e){if("}"==e)return S.marked="string-2",S.state.tokenize=y,T(ge)}function ye(e,t){return"variable"==e&&S.stream.match(/^\s*[?:]/,!1)||"?"==t?T(ye):":"==e?T(de):"spread"==e?T(ye):E(de)}function be(e,t){return"<"==t?T(I(">"),oe(de,">"),R,be):"|"==t||"."==e||"&"==t?T(de):"["==e?T(de,q("]"),be):"extends"==t||"implements"==t?(S.marked="keyword",T(de)):"?"==t?T(de,q(":"),de):void 0}function we(e,t){if("<"==t)return T(I(">"),oe(de,">"),R,be)}function xe(){return E(de,_e)}function _e(e,t){if("="==t)return T(de)}function ke(e,t){return"enum"==t?(S.marked="keyword",T(Xe)):E(Se,le,Ce,Oe)}function Se(e,t){return c&&A(t)?(S.marked="keyword",T(Se)):"variable"==e?(O(t),T()):"spread"==e?T(Se):"["==e?ae(Te,"]"):"{"==e?ae(Ee,"}"):void 0}function Ee(e,t){return"variable"!=e||S.stream.match(/^\s*:/,!1)?("variable"==e&&(S.marked="property"),"spread"==e?T(Se):"}"==e?E():"["==e?T(B,q("]"),q(":"),Ee):T(q(":"),Se,Ce)):(O(t),T(Ce))}function Te(){return E(Se,Ce)}function Ce(e,t){if("="==t)return T(H)}function Oe(e){if(","==e)return T(ke)}function Ae(e,t){if("keyword b"==e&&"else"==t)return T(I("form","else"),F,R)}function Ne(e,t){return"await"==t?T(Ne):"("==e?T(I(")"),De,R):void 0}function De(e){return"var"==e?T(ke,Le):"variable"==e?T(Le):E(Le)}function Le(e,t){return")"==e?T():";"==e?T(Le):"in"==t||"of"==t?(S.marked="keyword",T(B,Le)):E(B,Le)}function Me(e,t){return"*"==t?(S.marked="keyword",T(Me)):"variable"==e?(O(t),T(Me)):"("==e?T(M,I(")"),oe(Ie,")"),R,ce,F,j):c&&"<"==t?T(I(">"),oe(xe,">"),R,Me):void 0}function Pe(e,t){return"*"==t?(S.marked="keyword",T(Pe)):"variable"==e?(O(t),T(Pe)):"("==e?T(M,I(")"),oe(Ie,")"),R,ce,j):c&&"<"==t?T(I(">"),oe(xe,">"),R,Pe):void 0}function je(e,t){return"keyword"==e||"variable"==e?(S.marked="type",T(je)):"<"==t?T(I(">"),oe(xe,">"),R):void 0}function Ie(e,t){return"@"==t&&T(B,Ie),"spread"==e?T(Ie):c&&A(t)?(S.marked="keyword",T(Ie)):c&&"this"==e?T(le,Ce):E(Se,le,Ce)}function Re(e,t){return"variable"==e?qe(e,t):Fe(e,t)}function qe(e,t){if("variable"==e)return O(t),T(Fe)}function Fe(e,t){return"<"==t?T(I(">"),oe(xe,">"),R,Fe):"extends"==t||"implements"==t||c&&","==e?("implements"==t&&(S.marked="keyword"),T(c?de:B,Fe)):"{"==e?T(I("}"),ze,R):void 0}function ze(e,t){return"async"==e||"variable"==e&&("static"==t||"get"==t||"set"==t||c&&A(t))&&S.stream.match(/^\s+[\w$\xa1-\uffff]/,!1)?(S.marked="keyword",T(ze)):"variable"==e||"keyword"==S.style?(S.marked="property",T(Be,ze)):"number"==e||"string"==e?T(Be,ze):"["==e?T(B,le,q("]"),Be,ze):"*"==t?(S.marked="keyword",T(ze)):c&&"("==e?E(Pe,ze):";"==e||","==e?T(ze):"}"==e?T():"@"==t?T(B,ze):void 0}function Be(e,t){if("!"==t)return T(Be);if("?"==t)return T(Be);if(":"==e)return T(de,Ce);if("="==t)return T(H);var n=S.state.lexical.prev;return E(n&&"interface"==n.info?Pe:Me)}function He(e,t){return"*"==t?(S.marked="keyword",T(Ge,q(";"))):"default"==t?(S.marked="keyword",T(B,q(";"))):"{"==e?T(oe(Ue,"}"),Ge,q(";")):E(F)}function Ue(e,t){return"as"==t?(S.marked="keyword",T(q("variable"))):"variable"==e?E(H,Ue):void 0}function We(e){return"string"==e?T():"("==e?E(B):"."==e?E($):E(Ve,$e,Ge)}function Ve(e,t){return"{"==e?ae(Ve,"}"):("variable"==e&&O(t),"*"==t&&(S.marked="keyword"),T(Ye))}function $e(e){if(","==e)return T(Ve,$e)}function Ye(e,t){if("as"==t)return S.marked="keyword",T(Ve)}function Ge(e,t){if("from"==t)return S.marked="keyword",T(B)}function Ke(e){return"]"==e?T():E(oe(H,"]"))}function Xe(){return E(I("form"),Se,q("{"),I("}"),oe(Qe,"}"),R,R)}function Qe(){return E(Se,Ce)}function Je(e,t,n){return t.tokenize==g&&/^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(t.lastType)||"quasi"==t.lastType&&/\{\s*$/.test(e.string.slice(0,e.pos-(n||0)))}return j.lex=!0,R.lex=!0,{startState:function(e){var t={tokenize:g,lastType:"sof",cc:[],lexical:new x((e||0)-o,0,"block",!1),localVars:n.localVars,context:n.localVars&&new N(null,null,!1),indented:e||0};return n.globalVars&&"object"==typeof n.globalVars&&(t.globalVars=n.globalVars),t},token:function(e,t){if(e.sol()&&(t.lexical.hasOwnProperty("align")||(t.lexical.align=!1),t.indented=e.indentation(),b(e,t)),t.tokenize!=v&&e.eatSpace())return null;var n=t.tokenize(e,t);return"comment"==r?n:(t.lastType="operator"!=r||"++"!=i&&"--"!=i?r:"incdec",k(t,n,r,i,e))},indent:function(t,r){if(t.tokenize==v||t.tokenize==y)return e.Pass;if(t.tokenize!=g)return 0;var i,s=r&&r.charAt(0),l=t.lexical;if(!/^\s*else\b/.test(r))for(var u=t.cc.length-1;u>=0;--u){var c=t.cc[u];if(c==R)l=l.prev;else if(c!=Ae&&c!=j)break}for(;("stat"==l.type||"form"==l.type)&&("}"==s||(i=t.cc[t.cc.length-1])&&(i==$||i==Y)&&!/^[,\.=+\-*:?[\(]/.test(r));)l=l.prev;a&&")"==l.type&&"stat"==l.prev.type&&(l=l.prev);var f=l.type,d=s==f;return"vardef"==f?l.indented+("operator"==t.lastType||","==t.lastType?l.info.length+1:0):"form"==f&&"{"==s?l.indented:"form"==f?l.indented+o:"stat"==f?l.indented+(function(e,t){return"operator"==e.lastType||","==e.lastType||p.test(t.charAt(0))||/[,.]/.test(t.charAt(0))}(t,r)?a||o:0):"switch"!=l.info||d||0==n.doubleIndentSwitch?l.align?l.column+(d?0:1):l.indented+(d?0:o):l.indented+(/^(?:case|default)\b/.test(r)?o:2*o)},electricInput:/^\s*(?:case .*?:|default:|\{|\})$/,blockCommentStart:l?null:"/*",blockCommentEnd:l?null:"*/",blockCommentContinue:l?null:" * ",lineComment:l?null:"//",fold:"brace",closeBrackets:"()[]{}''\"\"``",helperType:l?"json":"javascript",jsonldMode:s,jsonMode:l,expressionAllowed:Je,skipExpression:function(t){k(t,"atom","atom","true",new e.StringStream("",2,null))}}})),e.registerHelper("wordChars","javascript",/[\w$]/),e.defineMIME("text/javascript","javascript"),e.defineMIME("text/ecmascript","javascript"),e.defineMIME("application/javascript","javascript"),e.defineMIME("application/x-javascript","javascript"),e.defineMIME("application/ecmascript","javascript"),e.defineMIME("application/json",{name:"javascript",json:!0}),e.defineMIME("application/x-json",{name:"javascript",json:!0}),e.defineMIME("application/manifest+json",{name:"javascript",json:!0}),e.defineMIME("application/ld+json",{name:"javascript",jsonld:!0}),e.defineMIME("text/typescript",{name:"javascript",typescript:!0}),e.defineMIME("application/typescript",{name:"javascript",typescript:!0})}(n(29))},function(e,t,n){!function(e){"use strict";var t={autoSelfClosers:{area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,menuitem:!0},implicitlyClosed:{dd:!0,li:!0,optgroup:!0,option:!0,p:!0,rp:!0,rt:!0,tbody:!0,td:!0,tfoot:!0,th:!0,tr:!0},contextGrabbers:{dd:{dd:!0,dt:!0},dt:{dd:!0,dt:!0},li:{li:!0},option:{option:!0,optgroup:!0},optgroup:{optgroup:!0},p:{address:!0,article:!0,aside:!0,blockquote:!0,dir:!0,div:!0,dl:!0,fieldset:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,menu:!0,nav:!0,ol:!0,p:!0,pre:!0,section:!0,table:!0,ul:!0},rp:{rp:!0,rt:!0},rt:{rp:!0,rt:!0},tbody:{tbody:!0,tfoot:!0},td:{td:!0,th:!0},tfoot:{tbody:!0},th:{td:!0,th:!0},thead:{tbody:!0,tfoot:!0},tr:{tr:!0}},doNotIndent:{pre:!0},allowUnquoted:!0,allowMissing:!0,caseFold:!0},n={autoSelfClosers:{},implicitlyClosed:{},contextGrabbers:{},doNotIndent:{},allowUnquoted:!1,allowMissing:!1,allowMissingTagName:!1,caseFold:!1};e.defineMode("xml",(function(r,i){var o,a,s=r.indentUnit,l={},u=i.htmlMode?t:n;for(var c in u)l[c]=u[c];for(var c in i)l[c]=i[c];function f(e,t){function n(n){return t.tokenize=n,n(e,t)}var r=e.next();return"<"==r?e.eat("!")?e.eat("[")?e.match("CDATA[")?n(p("atom","]]>")):null:e.match("--")?n(p("comment","--\x3e")):e.match("DOCTYPE",!0,!0)?(e.eatWhile(/[\w\._\-]/),n(function e(t){return function(n,r){for(var i;null!=(i=n.next());){if("<"==i)return r.tokenize=e(t+1),r.tokenize(n,r);if(">"==i){if(1==t){r.tokenize=f;break}return r.tokenize=e(t-1),r.tokenize(n,r)}}return"meta"}}(1))):null:e.eat("?")?(e.eatWhile(/[\w\._\-]/),t.tokenize=p("meta","?>"),"meta"):(o=e.eat("/")?"closeTag":"openTag",t.tokenize=d,"tag bracket"):"&"==r?(e.eat("#")?e.eat("x")?e.eatWhile(/[a-fA-F\d]/)&&e.eat(";"):e.eatWhile(/[\d]/)&&e.eat(";"):e.eatWhile(/[\w\.\-:]/)&&e.eat(";"))?"atom":"error":(e.eatWhile(/[^&<]/),null)}function d(e,t){var n=e.next();if(">"==n||"/"==n&&e.eat(">"))return t.tokenize=f,o=">"==n?"endTag":"selfcloseTag","tag bracket";if("="==n)return o="equals",null;if("<"==n){t.tokenize=f,t.state=v,t.tagName=t.tagStart=null;var r=t.tokenize(e,t);return r?r+" tag error":"tag error"}return/[\'\"]/.test(n)?(t.tokenize=function(e){var t=function(t,n){for(;!t.eol();)if(t.next()==e){n.tokenize=d;break}return"string"};return t.isInAttribute=!0,t}(n),t.stringStartCol=e.column(),t.tokenize(e,t)):(e.match(/^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/),"word")}function p(e,t){return function(n,r){for(;!n.eol();){if(n.match(t)){r.tokenize=f;break}n.next()}return e}}function h(e,t,n){this.prev=e.context,this.tagName=t||"",this.indent=e.indented,this.startOfLine=n,(l.doNotIndent.hasOwnProperty(t)||e.context&&e.context.noIndent)&&(this.noIndent=!0)}function m(e){e.context&&(e.context=e.context.prev)}function g(e,t){for(var n;;){if(!e.context)return;if(n=e.context.tagName,!l.contextGrabbers.hasOwnProperty(n)||!l.contextGrabbers[n].hasOwnProperty(t))return;m(e)}}function v(e,t,n){return"openTag"==e?(n.tagStart=t.column(),y):"closeTag"==e?b:v}function y(e,t,n){return"word"==e?(n.tagName=t.current(),a="tag",_):l.allowMissingTagName&&"endTag"==e?(a="tag bracket",_(e,0,n)):(a="error",y)}function b(e,t,n){if("word"==e){var r=t.current();return n.context&&n.context.tagName!=r&&l.implicitlyClosed.hasOwnProperty(n.context.tagName)&&m(n),n.context&&n.context.tagName==r||!1===l.matchClosing?(a="tag",w):(a="tag error",x)}return l.allowMissingTagName&&"endTag"==e?(a="tag bracket",w(e,0,n)):(a="error",x)}function w(e,t,n){return"endTag"!=e?(a="error",w):(m(n),v)}function x(e,t,n){return a="error",w(e,0,n)}function _(e,t,n){if("word"==e)return a="attribute",k;if("endTag"==e||"selfcloseTag"==e){var r=n.tagName,i=n.tagStart;return n.tagName=n.tagStart=null,"selfcloseTag"==e||l.autoSelfClosers.hasOwnProperty(r)?g(n,r):(g(n,r),n.context=new h(n,r,i==n.indented)),v}return a="error",_}function k(e,t,n){return"equals"==e?S:(l.allowMissing||(a="error"),_(e,0,n))}function S(e,t,n){return"string"==e?E:"word"==e&&l.allowUnquoted?(a="string",_):(a="error",_(e,0,n))}function E(e,t,n){return"string"==e?E:_(e,0,n)}return f.isInText=!0,{startState:function(e){var t={tokenize:f,state:v,indented:e||0,tagName:null,tagStart:null,context:null};return null!=e&&(t.baseIndent=e),t},token:function(e,t){if(!t.tagName&&e.sol()&&(t.indented=e.indentation()),e.eatSpace())return null;o=null;var n=t.tokenize(e,t);return(n||o)&&"comment"!=n&&(a=null,t.state=t.state(o||n,e,t),a&&(n="error"==a?n+" error":a)),n},indent:function(t,n,r){var i=t.context;if(t.tokenize.isInAttribute)return t.tagStart==t.indented?t.stringStartCol+1:t.indented+s;if(i&&i.noIndent)return e.Pass;if(t.tokenize!=d&&t.tokenize!=f)return r?r.match(/^(\s*)/)[0].length:0;if(t.tagName)return!1!==l.multilineTagIndentPastTag?t.tagStart+t.tagName.length+2:t.tagStart+s*(l.multilineTagIndentFactor||1);if(l.alignCDATA&&/$/,blockCommentStart:"\x3c!--",blockCommentEnd:"--\x3e",configuration:l.htmlMode?"html":"xml",helperType:l.htmlMode?"html":"xml",skipAttribute:function(e){e.state==S&&(e.state=_)},xmlCurrentTag:function(e){return e.tagName?{name:e.tagName,close:"closeTag"==e.type}:null},xmlCurrentContext:function(e){for(var t=[],n=e.context;n;n=n.prev)t.push(n.tagName);return t.reverse()}}})),e.defineMIME("text/xml","xml"),e.defineMIME("application/xml","xml"),e.mimeModes.hasOwnProperty("text/html")||e.defineMIME("text/html",{name:"xml",htmlMode:!0})}(n(29))},function(e,t,n){!function(e){"use strict";var t={script:[["lang",/(javascript|babel)/i,"javascript"],["type",/^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^module$|^$/i,"javascript"],["type",/./,"text/plain"],[null,null,"javascript"]],style:[["lang",/^css$/i,"css"],["type",/^(text\/)?(x-)?(stylesheet|css)$/i,"css"],["type",/./,"text/plain"],[null,null,"css"]]},n={};function r(e,t){var r=e.match(function(e){var t=n[e];return t||(n[e]=new RegExp("\\s+"+e+"\\s*=\\s*('|\")?([^'\"]+)('|\")?\\s*"))}(t));return r?/^\s*(.*?)\s*$/.exec(r[2])[1]:""}function i(e,t){return new RegExp((t?"^":"")+"","i")}function o(e,t){for(var n in e)for(var r=t[n]||(t[n]=[]),i=e[n],o=i.length-1;o>=0;o--)r.unshift(i[o])}e.defineMode("htmlmixed",(function(n,a){var s=e.getMode(n,{name:"xml",htmlMode:!0,multilineTagIndentFactor:a.multilineTagIndentFactor,multilineTagIndentPastTag:a.multilineTagIndentPastTag,allowMissingTagName:a.allowMissingTagName}),l={},u=a&&a.tags,c=a&&a.scriptTypes;if(o(t,l),u&&o(u,l),c)for(var f=c.length-1;f>=0;f--)l.script.unshift(["type",c[f].matches,c[f].mode]);function d(t,o){var a,u=s.token(t,o.htmlState),c=/\btag\b/.test(u);if(c&&!/[<>\s\/]/.test(t.current())&&(a=o.htmlState.tagName&&o.htmlState.tagName.toLowerCase())&&l.hasOwnProperty(a))o.inTag=a+" ";else if(o.inTag&&c&&/>$/.test(t.current())){var f=/^([\S]+) (.*)/.exec(o.inTag);o.inTag=null;var p=">"==t.current()&&function(e,t){for(var n=0;n-1?e.backUp(r.length-i):r.match(/<\/?$/)&&(e.backUp(r.length),e.match(t,!1)||e.match(r)),n}(e,g,t.localMode.token(e,t.localState))},o.localMode=h,o.localState=e.startState(h,s.indent(o.htmlState,"",""))}else o.inTag&&(o.inTag+=t.current(),t.eol()&&(o.inTag+=" "));return u}return{startState:function(){return{token:d,inTag:null,localMode:null,localState:null,htmlState:e.startState(s)}},copyState:function(t){var n;return t.localState&&(n=e.copyState(t.localMode,t.localState)),{token:t.token,inTag:t.inTag,localMode:t.localMode,localState:n,htmlState:e.copyState(s,t.htmlState)}},token:function(e,t){return t.token(e,t)},indent:function(t,n,r){return!t.localMode||/^\s*<\//.test(n)?s.indent(t.htmlState,n,r):t.localMode.indent?t.localMode.indent(t.localState,n,r):e.Pass},innerMode:function(e){return{state:e.localState||e.htmlState,mode:e.localMode||s}}}}),"xml","javascript","css"),e.defineMIME("text/html","htmlmixed")}(n(29),n(67),n(66),n(69))},function(e,t,n){!function(e){"use strict";function t(e){for(var t={},n=0;n*\/]/.test(n)?_(null,"select-op"):"."==n&&e.match(/^-?[_a-z][_a-z0-9-]*/i)?_("qualifier","qualifier"):/[:;{}\[\]\(\)]/.test(n)?_(null,n):e.match(/^[\w-.]+(?=\()/)?(/^(url(-prefix)?|domain|regexp)$/i.test(e.current())&&(t.tokenize=E),_("variable callee","variable")):/[\w\\\-]/.test(n)?(e.eatWhile(/[\w\\\-]/),_("property","word")):_(null,null):/[\d.]/.test(e.peek())?(e.eatWhile(/[\w.%]/),_("number","unit")):e.match(/^-[\w\\\-]*/)?(e.eatWhile(/[\w\\\-]/),e.match(/^\s*:/,!1)?_("variable-2","variable-definition"):_("variable-2","variable")):e.match(/^\w+-/)?_("meta","meta"):void 0}function S(e){return function(t,n){for(var r,i=!1;null!=(r=t.next());){if(r==e&&!i){")"==e&&t.backUp(1);break}i=!i&&"\\"==r}return(r==e||!i&&")"!=e)&&(n.tokenize=null),_("string","string")}}function E(e,t){return e.next(),e.match(/^\s*[\"\')]/,!1)?t.tokenize=null:t.tokenize=S(")"),_(null,"(")}function T(e,t,n){this.type=e,this.indent=t,this.prev=n}function C(e,t,n,r){return e.context=new T(n,t.indentation()+(!1===r?0:a),e.context),n}function O(e){return e.context.prev&&(e.context=e.context.prev),e.context.type}function A(e,t,n){return L[n.context.type](e,t,n)}function N(e,t,n,r){for(var i=r||1;i>0;i--)n.context=n.context.prev;return A(e,t,n)}function D(e){var t=e.current().toLowerCase();o=v.hasOwnProperty(t)?"atom":g.hasOwnProperty(t)?"keyword":"variable"}var L={top:function(e,t,n){if("{"==e)return C(n,t,"block");if("}"==e&&n.context.prev)return O(n);if(w&&/@component/i.test(e))return C(n,t,"atComponentBlock");if(/^@(-moz-)?document$/i.test(e))return C(n,t,"documentTypes");if(/^@(media|supports|(-moz-)?document|import)$/i.test(e))return C(n,t,"atBlock");if(/^@(font-face|counter-style)/i.test(e))return n.stateArg=e,"restricted_atBlock_before";if(/^@(-(moz|ms|o|webkit)-)?keyframes$/i.test(e))return"keyframes";if(e&&"@"==e.charAt(0))return C(n,t,"at");if("hash"==e)o="builtin";else if("word"==e)o="tag";else{if("variable-definition"==e)return"maybeprop";if("interpolation"==e)return C(n,t,"interpolation");if(":"==e)return"pseudo";if(y&&"("==e)return C(n,t,"parens")}return n.context.type},block:function(e,t,n){if("word"==e){var r=t.current().toLowerCase();return d.hasOwnProperty(r)?(o="property","maybeprop"):p.hasOwnProperty(r)?(o=x?"string-2":"property","maybeprop"):y?(o=t.match(/^\s*:(?:\s|$)/,!1)?"property":"tag","block"):(o+=" error","maybeprop")}return"meta"==e?"block":y||"hash"!=e&&"qualifier"!=e?L.top(e,t,n):(o="error","block")},maybeprop:function(e,t,n){return":"==e?C(n,t,"prop"):A(e,t,n)},prop:function(e,t,n){if(";"==e)return O(n);if("{"==e&&y)return C(n,t,"propBlock");if("}"==e||"{"==e)return N(e,t,n);if("("==e)return C(n,t,"parens");if("hash"!=e||/^#([0-9a-fA-f]{3,4}|[0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/.test(t.current())){if("word"==e)D(t);else if("interpolation"==e)return C(n,t,"interpolation")}else o+=" error";return"prop"},propBlock:function(e,t,n){return"}"==e?O(n):"word"==e?(o="property","maybeprop"):n.context.type},parens:function(e,t,n){return"{"==e||"}"==e?N(e,t,n):")"==e?O(n):"("==e?C(n,t,"parens"):"interpolation"==e?C(n,t,"interpolation"):("word"==e&&D(t),"parens")},pseudo:function(e,t,n){return"meta"==e?"pseudo":"word"==e?(o="variable-3",n.context.type):A(e,t,n)},documentTypes:function(e,t,n){return"word"==e&&l.hasOwnProperty(t.current())?(o="tag",n.context.type):L.atBlock(e,t,n)},atBlock:function(e,t,n){if("("==e)return C(n,t,"atBlock_parens");if("}"==e||";"==e)return N(e,t,n);if("{"==e)return O(n)&&C(n,t,y?"block":"top");if("interpolation"==e)return C(n,t,"interpolation");if("word"==e){var r=t.current().toLowerCase();o="only"==r||"not"==r||"and"==r||"or"==r?"keyword":u.hasOwnProperty(r)?"attribute":c.hasOwnProperty(r)?"property":f.hasOwnProperty(r)?"keyword":d.hasOwnProperty(r)?"property":p.hasOwnProperty(r)?x?"string-2":"property":v.hasOwnProperty(r)?"atom":g.hasOwnProperty(r)?"keyword":"error"}return n.context.type},atComponentBlock:function(e,t,n){return"}"==e?N(e,t,n):"{"==e?O(n)&&C(n,t,y?"block":"top",!1):("word"==e&&(o="error"),n.context.type)},atBlock_parens:function(e,t,n){return")"==e?O(n):"{"==e||"}"==e?N(e,t,n,2):L.atBlock(e,t,n)},restricted_atBlock_before:function(e,t,n){return"{"==e?C(n,t,"restricted_atBlock"):"word"==e&&"@counter-style"==n.stateArg?(o="variable","restricted_atBlock_before"):A(e,t,n)},restricted_atBlock:function(e,t,n){return"}"==e?(n.stateArg=null,O(n)):"word"==e?(o="@font-face"==n.stateArg&&!h.hasOwnProperty(t.current().toLowerCase())||"@counter-style"==n.stateArg&&!m.hasOwnProperty(t.current().toLowerCase())?"error":"property","maybeprop"):"restricted_atBlock"},keyframes:function(e,t,n){return"word"==e?(o="variable","keyframes"):"{"==e?C(n,t,"top"):A(e,t,n)},at:function(e,t,n){return";"==e?O(n):"{"==e||"}"==e?N(e,t,n):("word"==e?o="tag":"hash"==e&&(o="builtin"),"at")},interpolation:function(e,t,n){return"}"==e?O(n):"{"==e||";"==e?N(e,t,n):("word"==e?o="variable":"variable"!=e&&"("!=e&&")"!=e&&(o="error"),"interpolation")}};return{startState:function(e){return{tokenize:null,state:r?"block":"top",stateArg:null,context:new T(r?"block":"top",e||0,null)}},token:function(e,t){if(!t.tokenize&&e.eatSpace())return null;var n=(t.tokenize||k)(e,t);return n&&"object"==typeof n&&(i=n[1],n=n[0]),o=n,"comment"!=i&&(t.state=L[t.state](i,e,t)),o},indent:function(e,t){var n=e.context,r=t&&t.charAt(0),i=n.indent;return"prop"!=n.type||"}"!=r&&")"!=r||(n=n.prev),n.prev&&("}"!=r||"block"!=n.type&&"top"!=n.type&&"interpolation"!=n.type&&"restricted_atBlock"!=n.type?(")"!=r||"parens"!=n.type&&"atBlock_parens"!=n.type)&&("{"!=r||"at"!=n.type&&"atBlock"!=n.type)||(i=Math.max(0,n.indent-a)):i=(n=n.prev).indent),i},electricChars:"}",blockCommentStart:"/*",blockCommentEnd:"*/",blockCommentContinue:" * ",lineComment:b,fold:"brace"}}));var n=["domain","regexp","url","url-prefix"],r=t(n),i=["all","aural","braille","handheld","print","projection","screen","tty","tv","embossed"],o=t(i),a=["width","min-width","max-width","height","min-height","max-height","device-width","min-device-width","max-device-width","device-height","min-device-height","max-device-height","aspect-ratio","min-aspect-ratio","max-aspect-ratio","device-aspect-ratio","min-device-aspect-ratio","max-device-aspect-ratio","color","min-color","max-color","color-index","min-color-index","max-color-index","monochrome","min-monochrome","max-monochrome","resolution","min-resolution","max-resolution","scan","grid","orientation","device-pixel-ratio","min-device-pixel-ratio","max-device-pixel-ratio","pointer","any-pointer","hover","any-hover","prefers-color-scheme"],s=t(a),l=["landscape","portrait","none","coarse","fine","on-demand","hover","interlace","progressive","dark","light"],u=t(l),c=["align-content","align-items","align-self","alignment-adjust","alignment-baseline","all","anchor-point","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","appearance","azimuth","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","binding","bleed","block-size","bookmark-label","bookmark-level","bookmark-state","bookmark-target","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","color","color-profile","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","counter-increment","counter-reset","crop","cue","cue-after","cue-before","cursor","direction","display","dominant-baseline","drop-initial-after-adjust","drop-initial-after-align","drop-initial-before-adjust","drop-initial-before-align","drop-initial-size","drop-initial-value","elevation","empty-cells","fit","fit-content","fit-position","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","float-offset","flow-from","flow-into","font","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-size","font-size-adjust","font-stretch","font-style","font-synthesis","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-gap","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-gap","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","inline-box-align","inset","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","left","letter-spacing","line-break","line-height","line-height-step","line-stacking","line-stacking-ruby","line-stacking-shift","line-stacking-strategy","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","marquee-direction","marquee-loop","marquee-play-count","marquee-speed","marquee-style","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","move-to","nav-down","nav-index","nav-left","nav-right","nav-up","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-style","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","page-policy","pause","pause-after","pause-before","perspective","perspective-origin","pitch","pitch-range","place-content","place-items","place-self","play-during","position","presentation-level","punctuation-trim","quotes","region-break-after","region-break-before","region-break-inside","region-fragment","rendering-intent","resize","rest","rest-after","rest-before","richness","right","rotate","rotation","rotation-point","row-gap","ruby-align","ruby-overhang","ruby-position","ruby-span","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-type","shape-image-threshold","shape-inside","shape-margin","shape-outside","size","speak","speak-as","speak-header","speak-numeral","speak-punctuation","speech-rate","stress","string-set","tab-size","table-layout","target","target-name","target-new","target-position","text-align","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-height","text-indent","text-justify","text-orientation","text-outline","text-overflow","text-rendering","text-shadow","text-size-adjust","text-space-collapse","text-transform","text-underline-position","text-wrap","top","touch-action","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-select","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","z-index","clip-path","clip-rule","mask","enable-background","filter","flood-color","flood-opacity","lighting-color","stop-color","stop-opacity","pointer-events","color-interpolation","color-interpolation-filters","color-rendering","fill","fill-opacity","fill-rule","image-rendering","marker","marker-end","marker-mid","marker-start","paint-order","shape-rendering","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","text-rendering","baseline-shift","dominant-baseline","glyph-orientation-horizontal","glyph-orientation-vertical","text-anchor","writing-mode"],f=t(c),d=["accent-color","aspect-ratio","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","content-visibility","margin-block","margin-block-end","margin-block-start","margin-inline","margin-inline-end","margin-inline-start","overflow-anchor","overscroll-behavior","padding-block","padding-block-end","padding-block-start","padding-inline","padding-inline-end","padding-inline-start","scroll-snap-stop","scrollbar-3d-light-color","scrollbar-arrow-color","scrollbar-base-color","scrollbar-dark-shadow-color","scrollbar-face-color","scrollbar-highlight-color","scrollbar-shadow-color","scrollbar-track-color","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","shape-inside","zoom"],p=t(d),h=t(["font-display","font-family","src","unicode-range","font-variant","font-feature-settings","font-stretch","font-weight","font-style"]),m=t(["additive-symbols","fallback","negative","pad","prefix","range","speak-as","suffix","symbols","system"]),g=["aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen"],v=t(g),y=["above","absolute","activeborder","additive","activecaption","afar","after-white-space","ahead","alias","all","all-scroll","alphabetic","alternate","always","amharic","amharic-abegede","antialiased","appworkspace","arabic-indic","armenian","asterisks","attr","auto","auto-flow","avoid","avoid-column","avoid-page","avoid-region","axis-pan","background","backwards","baseline","below","bidi-override","binary","bengali","blink","block","block-axis","blur","bold","bolder","border","border-box","both","bottom","break","break-all","break-word","brightness","bullets","button","button-bevel","buttonface","buttonhighlight","buttonshadow","buttontext","calc","cambodian","capitalize","caps-lock-indicator","caption","captiontext","caret","cell","center","checkbox","circle","cjk-decimal","cjk-earthly-branch","cjk-heavenly-stem","cjk-ideographic","clear","clip","close-quote","col-resize","collapse","color","color-burn","color-dodge","column","column-reverse","compact","condensed","contain","content","contents","content-box","context-menu","continuous","contrast","copy","counter","counters","cover","crop","cross","crosshair","cubic-bezier","currentcolor","cursive","cyclic","darken","dashed","decimal","decimal-leading-zero","default","default-button","dense","destination-atop","destination-in","destination-out","destination-over","devanagari","difference","disc","discard","disclosure-closed","disclosure-open","document","dot-dash","dot-dot-dash","dotted","double","down","drop-shadow","e-resize","ease","ease-in","ease-in-out","ease-out","element","ellipse","ellipsis","embed","end","ethiopic","ethiopic-abegede","ethiopic-abegede-am-et","ethiopic-abegede-gez","ethiopic-abegede-ti-er","ethiopic-abegede-ti-et","ethiopic-halehame-aa-er","ethiopic-halehame-aa-et","ethiopic-halehame-am-et","ethiopic-halehame-gez","ethiopic-halehame-om-et","ethiopic-halehame-sid-et","ethiopic-halehame-so-et","ethiopic-halehame-ti-er","ethiopic-halehame-ti-et","ethiopic-halehame-tig","ethiopic-numeric","ew-resize","exclusion","expanded","extends","extra-condensed","extra-expanded","fantasy","fast","fill","fill-box","fixed","flat","flex","flex-end","flex-start","footnotes","forwards","from","geometricPrecision","georgian","grayscale","graytext","grid","groove","gujarati","gurmukhi","hand","hangul","hangul-consonant","hard-light","hebrew","help","hidden","hide","higher","highlight","highlighttext","hiragana","hiragana-iroha","horizontal","hsl","hsla","hue","hue-rotate","icon","ignore","inactiveborder","inactivecaption","inactivecaptiontext","infinite","infobackground","infotext","inherit","initial","inline","inline-axis","inline-block","inline-flex","inline-grid","inline-table","inset","inside","intrinsic","invert","italic","japanese-formal","japanese-informal","justify","kannada","katakana","katakana-iroha","keep-all","khmer","korean-hangul-formal","korean-hanja-formal","korean-hanja-informal","landscape","lao","large","larger","left","level","lighter","lighten","line-through","linear","linear-gradient","lines","list-item","listbox","listitem","local","logical","loud","lower","lower-alpha","lower-armenian","lower-greek","lower-hexadecimal","lower-latin","lower-norwegian","lower-roman","lowercase","ltr","luminosity","malayalam","manipulation","match","matrix","matrix3d","media-controls-background","media-current-time-display","media-fullscreen-button","media-mute-button","media-play-button","media-return-to-realtime-button","media-rewind-button","media-seek-back-button","media-seek-forward-button","media-slider","media-sliderthumb","media-time-remaining-display","media-volume-slider","media-volume-slider-container","media-volume-sliderthumb","medium","menu","menulist","menulist-button","menulist-text","menulist-textfield","menutext","message-box","middle","min-intrinsic","mix","mongolian","monospace","move","multiple","multiple_mask_images","multiply","myanmar","n-resize","narrower","ne-resize","nesw-resize","no-close-quote","no-drop","no-open-quote","no-repeat","none","normal","not-allowed","nowrap","ns-resize","numbers","numeric","nw-resize","nwse-resize","oblique","octal","opacity","open-quote","optimizeLegibility","optimizeSpeed","oriya","oromo","outset","outside","outside-shape","overlay","overline","padding","padding-box","painted","page","paused","persian","perspective","pinch-zoom","plus-darker","plus-lighter","pointer","polygon","portrait","pre","pre-line","pre-wrap","preserve-3d","progress","push-button","radial-gradient","radio","read-only","read-write","read-write-plaintext-only","rectangle","region","relative","repeat","repeating-linear-gradient","repeating-radial-gradient","repeat-x","repeat-y","reset","reverse","rgb","rgba","ridge","right","rotate","rotate3d","rotateX","rotateY","rotateZ","round","row","row-resize","row-reverse","rtl","run-in","running","s-resize","sans-serif","saturate","saturation","scale","scale3d","scaleX","scaleY","scaleZ","screen","scroll","scrollbar","scroll-position","se-resize","searchfield","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","self-start","self-end","semi-condensed","semi-expanded","separate","sepia","serif","show","sidama","simp-chinese-formal","simp-chinese-informal","single","skew","skewX","skewY","skip-white-space","slide","slider-horizontal","slider-vertical","sliderthumb-horizontal","sliderthumb-vertical","slow","small","small-caps","small-caption","smaller","soft-light","solid","somali","source-atop","source-in","source-out","source-over","space","space-around","space-between","space-evenly","spell-out","square","square-button","start","static","status-bar","stretch","stroke","stroke-box","sub","subpixel-antialiased","svg_masks","super","sw-resize","symbolic","symbols","system-ui","table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row","table-row-group","tamil","telugu","text","text-bottom","text-top","textarea","textfield","thai","thick","thin","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","tibetan","tigre","tigrinya-er","tigrinya-er-abegede","tigrinya-et","tigrinya-et-abegede","to","top","trad-chinese-formal","trad-chinese-informal","transform","translate","translate3d","translateX","translateY","translateZ","transparent","ultra-condensed","ultra-expanded","underline","unidirectional-pan","unset","up","upper-alpha","upper-armenian","upper-greek","upper-hexadecimal","upper-latin","upper-norwegian","upper-roman","uppercase","urdu","url","var","vertical","vertical-text","view-box","visible","visibleFill","visiblePainted","visibleStroke","visual","w-resize","wait","wave","wider","window","windowframe","windowtext","words","wrap","wrap-reverse","x-large","x-small","xor","xx-large","xx-small"],b=t(y),w=n.concat(i).concat(a).concat(l).concat(c).concat(d).concat(g).concat(y);function x(e,t){for(var n,r=!1;null!=(n=e.next());){if(r&&"/"==n){t.tokenize=null;break}r="*"==n}return["comment","comment"]}e.registerHelper("hintWords","css",w),e.defineMIME("text/css",{documentTypes:r,mediaTypes:o,mediaFeatures:s,mediaValueKeywords:u,propertyKeywords:f,nonStandardPropertyKeywords:p,fontProperties:h,counterDescriptors:m,colorKeywords:v,valueKeywords:b,tokenHooks:{"/":function(e,t){return!!e.eat("*")&&(t.tokenize=x,x(e,t))}},name:"css"}),e.defineMIME("text/x-scss",{mediaTypes:o,mediaFeatures:s,mediaValueKeywords:u,propertyKeywords:f,nonStandardPropertyKeywords:p,colorKeywords:v,valueKeywords:b,fontProperties:h,allowNested:!0,lineComment:"//",tokenHooks:{"/":function(e,t){return e.eat("/")?(e.skipToEnd(),["comment","comment"]):e.eat("*")?(t.tokenize=x,x(e,t)):["operator","operator"]},":":function(e){return!!e.match(/^\s*\{/,!1)&&[null,null]},$:function(e){return e.match(/^[\w-]+/),e.match(/^\s*:/,!1)?["variable-2","variable-definition"]:["variable-2","variable"]},"#":function(e){return!!e.eat("{")&&[null,"interpolation"]}},name:"css",helperType:"scss"}),e.defineMIME("text/x-less",{mediaTypes:o,mediaFeatures:s,mediaValueKeywords:u,propertyKeywords:f,nonStandardPropertyKeywords:p,colorKeywords:v,valueKeywords:b,fontProperties:h,allowNested:!0,lineComment:"//",tokenHooks:{"/":function(e,t){return e.eat("/")?(e.skipToEnd(),["comment","comment"]):e.eat("*")?(t.tokenize=x,x(e,t)):["operator","operator"]},"@":function(e){return e.eat("{")?[null,"interpolation"]:!e.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\b/i,!1)&&(e.eatWhile(/[\w\\\-]/),e.match(/^\s*:/,!1)?["variable-2","variable-definition"]:["variable-2","variable"])},"&":function(){return["atom","atom"]}},name:"css",helperType:"less"}),e.defineMIME("text/x-gss",{documentTypes:r,mediaTypes:o,mediaFeatures:s,propertyKeywords:f,nonStandardPropertyKeywords:p,fontProperties:h,counterDescriptors:m,colorKeywords:v,valueKeywords:b,supportsAtComponent:!0,tokenHooks:{"/":function(e,t){return!!e.eat("*")&&(t.tokenize=x,x(e,t))}},name:"css",helperType:"gss"})}(n(29))},,function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,n){return o.default[e.type](e,t,n)};var r,i=n(161),o=(r=i)&&r.__esModule?r:{default:r}},function(e,t,n){var r=n(73),i={input:!0,option:!0,optgroup:!0,select:!0,button:!0,datalist:!0,textarea:!0},o={tr:{tr:!0,th:!0,td:!0},th:{th:!0},td:{thead:!0,th:!0,td:!0},body:{head:!0,link:!0,script:!0},li:{li:!0},p:{p:!0},h1:{p:!0},h2:{p:!0},h3:{p:!0},h4:{p:!0},h5:{p:!0},h6:{p:!0},select:i,input:i,output:i,button:i,datalist:i,textarea:i,option:{option:!0},optgroup:{optgroup:!0}},a={__proto__:null,area:!0,base:!0,basefont:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,isindex:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},s={__proto__:null,math:!0,svg:!0},l={__proto__:null,mi:!0,mo:!0,mn:!0,ms:!0,mtext:!0,"annotation-xml":!0,foreignObject:!0,desc:!0,title:!0},u=/\s|\//;function c(e,t){this._options=t||{},this._cbs=e||{},this._tagname="",this._attribname="",this._attribvalue="",this._attribs=null,this._stack=[],this._foreignContext=[],this.startIndex=0,this.endIndex=null,this._lowerCaseTagNames="lowerCaseTags"in this._options?!!this._options.lowerCaseTags:!this._options.xmlMode,this._lowerCaseAttributeNames="lowerCaseAttributeNames"in this._options?!!this._options.lowerCaseAttributeNames:!this._options.xmlMode,this._options.Tokenizer&&(r=this._options.Tokenizer),this._tokenizer=new r(this._options,this),this._cbs.onparserinit&&this._cbs.onparserinit(this)}n(43)(c,n(167).EventEmitter),c.prototype._updatePosition=function(e){null===this.endIndex?this._tokenizer._sectionStart<=e?this.startIndex=0:this.startIndex=this._tokenizer._sectionStart-e:this.startIndex=this.endIndex+1,this.endIndex=this._tokenizer.getAbsoluteIndex()},c.prototype.ontext=function(e){this._updatePosition(1),this.endIndex--,this._cbs.ontext&&this._cbs.ontext(e)},c.prototype.onopentagname=function(e){if(this._lowerCaseTagNames&&(e=e.toLowerCase()),this._tagname=e,!this._options.xmlMode&&e in o)for(var t;(t=this._stack[this._stack.length-1])in o[e];this.onclosetag(t));!this._options.xmlMode&&e in a||(this._stack.push(e),e in s?this._foreignContext.push(!0):e in l&&this._foreignContext.push(!1)),this._cbs.onopentagname&&this._cbs.onopentagname(e),this._cbs.onopentag&&(this._attribs={})},c.prototype.onopentagend=function(){this._updatePosition(1),this._attribs&&(this._cbs.onopentag&&this._cbs.onopentag(this._tagname,this._attribs),this._attribs=null),!this._options.xmlMode&&this._cbs.onclosetag&&this._tagname in a&&this._cbs.onclosetag(this._tagname),this._tagname=""},c.prototype.onclosetag=function(e){if(this._updatePosition(1),this._lowerCaseTagNames&&(e=e.toLowerCase()),(e in s||e in l)&&this._foreignContext.pop(),!this._stack.length||e in a&&!this._options.xmlMode)this._options.xmlMode||"br"!==e&&"p"!==e||(this.onopentagname(e),this._closeCurrentTag());else{var t=this._stack.lastIndexOf(e);if(-1!==t)if(this._cbs.onclosetag)for(t=this._stack.length-t;t--;)this._cbs.onclosetag(this._stack.pop());else this._stack.length=t;else"p"!==e||this._options.xmlMode||(this.onopentagname(e),this._closeCurrentTag())}},c.prototype.onselfclosingtag=function(){this._options.xmlMode||this._options.recognizeSelfClosing||this._foreignContext[this._foreignContext.length-1]?this._closeCurrentTag():this.onopentagend()},c.prototype._closeCurrentTag=function(){var e=this._tagname;this.onopentagend(),this._stack[this._stack.length-1]===e&&(this._cbs.onclosetag&&this._cbs.onclosetag(e),this._stack.pop())},c.prototype.onattribname=function(e){this._lowerCaseAttributeNames&&(e=e.toLowerCase()),this._attribname=e},c.prototype.onattribdata=function(e){this._attribvalue+=e},c.prototype.onattribend=function(){this._cbs.onattribute&&this._cbs.onattribute(this._attribname,this._attribvalue),this._attribs&&!Object.prototype.hasOwnProperty.call(this._attribs,this._attribname)&&(this._attribs[this._attribname]=this._attribvalue),this._attribname="",this._attribvalue=""},c.prototype._getInstructionName=function(e){var t=e.search(u),n=t<0?e:e.substr(0,t);return this._lowerCaseTagNames&&(n=n.toLowerCase()),n},c.prototype.ondeclaration=function(e){if(this._cbs.onprocessinginstruction){var t=this._getInstructionName(e);this._cbs.onprocessinginstruction("!"+t,"!"+e)}},c.prototype.onprocessinginstruction=function(e){if(this._cbs.onprocessinginstruction){var t=this._getInstructionName(e);this._cbs.onprocessinginstruction("?"+t,"?"+e)}},c.prototype.oncomment=function(e){this._updatePosition(4),this._cbs.oncomment&&this._cbs.oncomment(e),this._cbs.oncommentend&&this._cbs.oncommentend()},c.prototype.oncdata=function(e){this._updatePosition(1),this._options.xmlMode||this._options.recognizeCDATA?(this._cbs.oncdatastart&&this._cbs.oncdatastart(),this._cbs.ontext&&this._cbs.ontext(e),this._cbs.oncdataend&&this._cbs.oncdataend()):this.oncomment("[CDATA["+e+"]]")},c.prototype.onerror=function(e){this._cbs.onerror&&this._cbs.onerror(e)},c.prototype.onend=function(){if(this._cbs.onclosetag)for(var e=this._stack.length;e>0;this._cbs.onclosetag(this._stack[--e]));this._cbs.onend&&this._cbs.onend()},c.prototype.reset=function(){this._cbs.onreset&&this._cbs.onreset(),this._tokenizer.reset(),this._tagname="",this._attribname="",this._attribs=null,this._stack=[],this._cbs.onparserinit&&this._cbs.onparserinit(this)},c.prototype.parseComplete=function(e){this.reset(),this.end(e)},c.prototype.write=function(e){this._tokenizer.write(e)},c.prototype.end=function(e){this._tokenizer.end(e)},c.prototype.pause=function(){this._tokenizer.pause()},c.prototype.resume=function(){this._tokenizer.resume()},c.prototype.parseChunk=c.prototype.write,c.prototype.done=c.prototype.end,e.exports=c},function(e,t,n){e.exports=ge;var r=n(162),i=n(164),o=n(165),a=n(166),s=0,l=s++,u=s++,c=s++,f=s++,d=s++,p=s++,h=s++,m=s++,g=s++,v=s++,y=s++,b=s++,w=s++,x=s++,_=s++,k=s++,S=s++,E=s++,T=s++,C=s++,O=s++,A=s++,N=s++,D=s++,L=s++,M=s++,P=s++,j=s++,I=s++,R=s++,q=s++,F=s++,z=s++,B=s++,H=s++,U=s++,W=s++,V=s++,$=s++,Y=s++,G=s++,K=s++,X=s++,Q=s++,J=s++,Z=s++,ee=s++,te=s++,ne=s++,re=s++,ie=s++,oe=s++,ae=s++,se=s++,le=s++,ue=0,ce=ue++,fe=ue++,de=ue++;function pe(e){return" "===e||"\n"===e||"\t"===e||"\f"===e||"\r"===e}function he(e,t,n){var r=e.toLowerCase();return e===r?function(e){e===r?this._state=t:(this._state=n,this._index--)}:function(i){i===r||i===e?this._state=t:(this._state=n,this._index--)}}function me(e,t){var n=e.toLowerCase();return function(r){r===n||r===e?this._state=t:(this._state=c,this._index--)}}function ge(e,t){this._state=l,this._buffer="",this._sectionStart=0,this._index=0,this._bufferOffset=0,this._baseState=l,this._special=ce,this._cbs=t,this._running=!0,this._ended=!1,this._xmlMode=!(!e||!e.xmlMode),this._decodeEntities=!(!e||!e.decodeEntities)}ge.prototype._stateText=function(e){"<"===e?(this._index>this._sectionStart&&this._cbs.ontext(this._getSection()),this._state=u,this._sectionStart=this._index):this._decodeEntities&&this._special===ce&&"&"===e&&(this._index>this._sectionStart&&this._cbs.ontext(this._getSection()),this._baseState=l,this._state=ie,this._sectionStart=this._index)},ge.prototype._stateBeforeTagName=function(e){"/"===e?this._state=d:"<"===e?(this._cbs.ontext(this._getSection()),this._sectionStart=this._index):">"===e||this._special!==ce||pe(e)?this._state=l:"!"===e?(this._state=_,this._sectionStart=this._index+1):"?"===e?(this._state=S,this._sectionStart=this._index+1):(this._state=this._xmlMode||"s"!==e&&"S"!==e?c:q,this._sectionStart=this._index)},ge.prototype._stateInTagName=function(e){("/"===e||">"===e||pe(e))&&(this._emitToken("onopentagname"),this._state=m,this._index--)},ge.prototype._stateBeforeCloseingTagName=function(e){pe(e)||(">"===e?this._state=l:this._special!==ce?"s"===e||"S"===e?this._state=F:(this._state=l,this._index--):(this._state=p,this._sectionStart=this._index))},ge.prototype._stateInCloseingTagName=function(e){(">"===e||pe(e))&&(this._emitToken("onclosetag"),this._state=h,this._index--)},ge.prototype._stateAfterCloseingTagName=function(e){">"===e&&(this._state=l,this._sectionStart=this._index+1)},ge.prototype._stateBeforeAttributeName=function(e){">"===e?(this._cbs.onopentagend(),this._state=l,this._sectionStart=this._index+1):"/"===e?this._state=f:pe(e)||(this._state=g,this._sectionStart=this._index)},ge.prototype._stateInSelfClosingTag=function(e){">"===e?(this._cbs.onselfclosingtag(),this._state=l,this._sectionStart=this._index+1):pe(e)||(this._state=m,this._index--)},ge.prototype._stateInAttributeName=function(e){("="===e||"/"===e||">"===e||pe(e))&&(this._cbs.onattribname(this._getSection()),this._sectionStart=-1,this._state=v,this._index--)},ge.prototype._stateAfterAttributeName=function(e){"="===e?this._state=y:"/"===e||">"===e?(this._cbs.onattribend(),this._state=m,this._index--):pe(e)||(this._cbs.onattribend(),this._state=g,this._sectionStart=this._index)},ge.prototype._stateBeforeAttributeValue=function(e){'"'===e?(this._state=b,this._sectionStart=this._index+1):"'"===e?(this._state=w,this._sectionStart=this._index+1):pe(e)||(this._state=x,this._sectionStart=this._index,this._index--)},ge.prototype._stateInAttributeValueDoubleQuotes=function(e){'"'===e?(this._emitToken("onattribdata"),this._cbs.onattribend(),this._state=m):this._decodeEntities&&"&"===e&&(this._emitToken("onattribdata"),this._baseState=this._state,this._state=ie,this._sectionStart=this._index)},ge.prototype._stateInAttributeValueSingleQuotes=function(e){"'"===e?(this._emitToken("onattribdata"),this._cbs.onattribend(),this._state=m):this._decodeEntities&&"&"===e&&(this._emitToken("onattribdata"),this._baseState=this._state,this._state=ie,this._sectionStart=this._index)},ge.prototype._stateInAttributeValueNoQuotes=function(e){pe(e)||">"===e?(this._emitToken("onattribdata"),this._cbs.onattribend(),this._state=m,this._index--):this._decodeEntities&&"&"===e&&(this._emitToken("onattribdata"),this._baseState=this._state,this._state=ie,this._sectionStart=this._index)},ge.prototype._stateBeforeDeclaration=function(e){this._state="["===e?A:"-"===e?E:k},ge.prototype._stateInDeclaration=function(e){">"===e&&(this._cbs.ondeclaration(this._getSection()),this._state=l,this._sectionStart=this._index+1)},ge.prototype._stateInProcessingInstruction=function(e){">"===e&&(this._cbs.onprocessinginstruction(this._getSection()),this._state=l,this._sectionStart=this._index+1)},ge.prototype._stateBeforeComment=function(e){"-"===e?(this._state=T,this._sectionStart=this._index+1):this._state=k},ge.prototype._stateInComment=function(e){"-"===e&&(this._state=C)},ge.prototype._stateAfterComment1=function(e){this._state="-"===e?O:T},ge.prototype._stateAfterComment2=function(e){">"===e?(this._cbs.oncomment(this._buffer.substring(this._sectionStart,this._index-2)),this._state=l,this._sectionStart=this._index+1):"-"!==e&&(this._state=T)},ge.prototype._stateBeforeCdata1=he("C",N,k),ge.prototype._stateBeforeCdata2=he("D",D,k),ge.prototype._stateBeforeCdata3=he("A",L,k),ge.prototype._stateBeforeCdata4=he("T",M,k),ge.prototype._stateBeforeCdata5=he("A",P,k),ge.prototype._stateBeforeCdata6=function(e){"["===e?(this._state=j,this._sectionStart=this._index+1):(this._state=k,this._index--)},ge.prototype._stateInCdata=function(e){"]"===e&&(this._state=I)},ge.prototype._stateAfterCdata1=function(e){this._state="]"===e?R:j},ge.prototype._stateAfterCdata2=function(e){">"===e?(this._cbs.oncdata(this._buffer.substring(this._sectionStart,this._index-2)),this._state=l,this._sectionStart=this._index+1):"]"!==e&&(this._state=j)},ge.prototype._stateBeforeSpecial=function(e){"c"===e||"C"===e?this._state=z:"t"===e||"T"===e?this._state=X:(this._state=c,this._index--)},ge.prototype._stateBeforeSpecialEnd=function(e){this._special!==fe||"c"!==e&&"C"!==e?this._special!==de||"t"!==e&&"T"!==e?this._state=l:this._state=ee:this._state=V},ge.prototype._stateBeforeScript1=me("R",B),ge.prototype._stateBeforeScript2=me("I",H),ge.prototype._stateBeforeScript3=me("P",U),ge.prototype._stateBeforeScript4=me("T",W),ge.prototype._stateBeforeScript5=function(e){("/"===e||">"===e||pe(e))&&(this._special=fe),this._state=c,this._index--},ge.prototype._stateAfterScript1=he("R",$,l),ge.prototype._stateAfterScript2=he("I",Y,l),ge.prototype._stateAfterScript3=he("P",G,l),ge.prototype._stateAfterScript4=he("T",K,l),ge.prototype._stateAfterScript5=function(e){">"===e||pe(e)?(this._special=ce,this._state=p,this._sectionStart=this._index-6,this._index--):this._state=l},ge.prototype._stateBeforeStyle1=me("Y",Q),ge.prototype._stateBeforeStyle2=me("L",J),ge.prototype._stateBeforeStyle3=me("E",Z),ge.prototype._stateBeforeStyle4=function(e){("/"===e||">"===e||pe(e))&&(this._special=de),this._state=c,this._index--},ge.prototype._stateAfterStyle1=he("Y",te,l),ge.prototype._stateAfterStyle2=he("L",ne,l),ge.prototype._stateAfterStyle3=he("E",re,l),ge.prototype._stateAfterStyle4=function(e){">"===e||pe(e)?(this._special=ce,this._state=p,this._sectionStart=this._index-5,this._index--):this._state=l},ge.prototype._stateBeforeEntity=he("#",oe,ae),ge.prototype._stateBeforeNumericEntity=he("X",le,se),ge.prototype._parseNamedEntityStrict=function(){if(this._sectionStart+16&&(t=6);t>=2;){var n=this._buffer.substr(e,t);if(o.hasOwnProperty(n))return this._emitPartial(o[n]),void(this._sectionStart+=t+1);t--}},ge.prototype._stateInNamedEntity=function(e){";"===e?(this._parseNamedEntityStrict(),this._sectionStart+1"z")&&(e<"A"||e>"Z")&&(e<"0"||e>"9")&&(this._xmlMode||this._sectionStart+1===this._index||(this._baseState!==l?"="!==e&&this._parseNamedEntityStrict():this._parseLegacyEntity()),this._state=this._baseState,this._index--)},ge.prototype._decodeNumericEntity=function(e,t){var n=this._sectionStart+e;if(n!==this._index){var i=this._buffer.substring(n,this._index),o=parseInt(i,t);this._emitPartial(r(o)),this._sectionStart=this._index}else this._sectionStart--;this._state=this._baseState},ge.prototype._stateInNumericEntity=function(e){";"===e?(this._decodeNumericEntity(2,10),this._sectionStart++):(e<"0"||e>"9")&&(this._xmlMode?this._state=this._baseState:this._decodeNumericEntity(2,10),this._index--)},ge.prototype._stateInHexEntity=function(e){";"===e?(this._decodeNumericEntity(3,16),this._sectionStart++):(e<"a"||e>"f")&&(e<"A"||e>"F")&&(e<"0"||e>"9")&&(this._xmlMode?this._state=this._baseState:this._decodeNumericEntity(3,16),this._index--)},ge.prototype._cleanup=function(){this._sectionStart<0?(this._buffer="",this._bufferOffset+=this._index,this._index=0):this._running&&(this._state===l?(this._sectionStart!==this._index&&this._cbs.ontext(this._buffer.substr(this._sectionStart)),this._buffer="",this._bufferOffset+=this._index,this._index=0):this._sectionStart===this._index?(this._buffer="",this._bufferOffset+=this._index,this._index=0):(this._buffer=this._buffer.substr(this._sectionStart),this._index-=this._sectionStart,this._bufferOffset+=this._sectionStart),this._sectionStart=0)},ge.prototype.write=function(e){this._ended&&this._cbs.onerror(Error(".write() after done!")),this._buffer+=e,this._parse()},ge.prototype._parse=function(){for(;this._index","GT":">","Gt":"\u226b","gtdot":"\u22d7","gtlPar":"\u2995","gtquest":"\u2a7c","gtrapprox":"\u2a86","gtrarr":"\u2978","gtrdot":"\u22d7","gtreqless":"\u22db","gtreqqless":"\u2a8c","gtrless":"\u2277","gtrsim":"\u2273","gvertneqq":"\u2269\ufe00","gvnE":"\u2269\ufe00","Hacek":"\u02c7","hairsp":"\u200a","half":"\xbd","hamilt":"\u210b","HARDcy":"\u042a","hardcy":"\u044a","harrcir":"\u2948","harr":"\u2194","hArr":"\u21d4","harrw":"\u21ad","Hat":"^","hbar":"\u210f","Hcirc":"\u0124","hcirc":"\u0125","hearts":"\u2665","heartsuit":"\u2665","hellip":"\u2026","hercon":"\u22b9","hfr":"\ud835\udd25","Hfr":"\u210c","HilbertSpace":"\u210b","hksearow":"\u2925","hkswarow":"\u2926","hoarr":"\u21ff","homtht":"\u223b","hookleftarrow":"\u21a9","hookrightarrow":"\u21aa","hopf":"\ud835\udd59","Hopf":"\u210d","horbar":"\u2015","HorizontalLine":"\u2500","hscr":"\ud835\udcbd","Hscr":"\u210b","hslash":"\u210f","Hstrok":"\u0126","hstrok":"\u0127","HumpDownHump":"\u224e","HumpEqual":"\u224f","hybull":"\u2043","hyphen":"\u2010","Iacute":"\xcd","iacute":"\xed","ic":"\u2063","Icirc":"\xce","icirc":"\xee","Icy":"\u0418","icy":"\u0438","Idot":"\u0130","IEcy":"\u0415","iecy":"\u0435","iexcl":"\xa1","iff":"\u21d4","ifr":"\ud835\udd26","Ifr":"\u2111","Igrave":"\xcc","igrave":"\xec","ii":"\u2148","iiiint":"\u2a0c","iiint":"\u222d","iinfin":"\u29dc","iiota":"\u2129","IJlig":"\u0132","ijlig":"\u0133","Imacr":"\u012a","imacr":"\u012b","image":"\u2111","ImaginaryI":"\u2148","imagline":"\u2110","imagpart":"\u2111","imath":"\u0131","Im":"\u2111","imof":"\u22b7","imped":"\u01b5","Implies":"\u21d2","incare":"\u2105","in":"\u2208","infin":"\u221e","infintie":"\u29dd","inodot":"\u0131","intcal":"\u22ba","int":"\u222b","Int":"\u222c","integers":"\u2124","Integral":"\u222b","intercal":"\u22ba","Intersection":"\u22c2","intlarhk":"\u2a17","intprod":"\u2a3c","InvisibleComma":"\u2063","InvisibleTimes":"\u2062","IOcy":"\u0401","iocy":"\u0451","Iogon":"\u012e","iogon":"\u012f","Iopf":"\ud835\udd40","iopf":"\ud835\udd5a","Iota":"\u0399","iota":"\u03b9","iprod":"\u2a3c","iquest":"\xbf","iscr":"\ud835\udcbe","Iscr":"\u2110","isin":"\u2208","isindot":"\u22f5","isinE":"\u22f9","isins":"\u22f4","isinsv":"\u22f3","isinv":"\u2208","it":"\u2062","Itilde":"\u0128","itilde":"\u0129","Iukcy":"\u0406","iukcy":"\u0456","Iuml":"\xcf","iuml":"\xef","Jcirc":"\u0134","jcirc":"\u0135","Jcy":"\u0419","jcy":"\u0439","Jfr":"\ud835\udd0d","jfr":"\ud835\udd27","jmath":"\u0237","Jopf":"\ud835\udd41","jopf":"\ud835\udd5b","Jscr":"\ud835\udca5","jscr":"\ud835\udcbf","Jsercy":"\u0408","jsercy":"\u0458","Jukcy":"\u0404","jukcy":"\u0454","Kappa":"\u039a","kappa":"\u03ba","kappav":"\u03f0","Kcedil":"\u0136","kcedil":"\u0137","Kcy":"\u041a","kcy":"\u043a","Kfr":"\ud835\udd0e","kfr":"\ud835\udd28","kgreen":"\u0138","KHcy":"\u0425","khcy":"\u0445","KJcy":"\u040c","kjcy":"\u045c","Kopf":"\ud835\udd42","kopf":"\ud835\udd5c","Kscr":"\ud835\udca6","kscr":"\ud835\udcc0","lAarr":"\u21da","Lacute":"\u0139","lacute":"\u013a","laemptyv":"\u29b4","lagran":"\u2112","Lambda":"\u039b","lambda":"\u03bb","lang":"\u27e8","Lang":"\u27ea","langd":"\u2991","langle":"\u27e8","lap":"\u2a85","Laplacetrf":"\u2112","laquo":"\xab","larrb":"\u21e4","larrbfs":"\u291f","larr":"\u2190","Larr":"\u219e","lArr":"\u21d0","larrfs":"\u291d","larrhk":"\u21a9","larrlp":"\u21ab","larrpl":"\u2939","larrsim":"\u2973","larrtl":"\u21a2","latail":"\u2919","lAtail":"\u291b","lat":"\u2aab","late":"\u2aad","lates":"\u2aad\ufe00","lbarr":"\u290c","lBarr":"\u290e","lbbrk":"\u2772","lbrace":"{","lbrack":"[","lbrke":"\u298b","lbrksld":"\u298f","lbrkslu":"\u298d","Lcaron":"\u013d","lcaron":"\u013e","Lcedil":"\u013b","lcedil":"\u013c","lceil":"\u2308","lcub":"{","Lcy":"\u041b","lcy":"\u043b","ldca":"\u2936","ldquo":"\u201c","ldquor":"\u201e","ldrdhar":"\u2967","ldrushar":"\u294b","ldsh":"\u21b2","le":"\u2264","lE":"\u2266","LeftAngleBracket":"\u27e8","LeftArrowBar":"\u21e4","leftarrow":"\u2190","LeftArrow":"\u2190","Leftarrow":"\u21d0","LeftArrowRightArrow":"\u21c6","leftarrowtail":"\u21a2","LeftCeiling":"\u2308","LeftDoubleBracket":"\u27e6","LeftDownTeeVector":"\u2961","LeftDownVectorBar":"\u2959","LeftDownVector":"\u21c3","LeftFloor":"\u230a","leftharpoondown":"\u21bd","leftharpoonup":"\u21bc","leftleftarrows":"\u21c7","leftrightarrow":"\u2194","LeftRightArrow":"\u2194","Leftrightarrow":"\u21d4","leftrightarrows":"\u21c6","leftrightharpoons":"\u21cb","leftrightsquigarrow":"\u21ad","LeftRightVector":"\u294e","LeftTeeArrow":"\u21a4","LeftTee":"\u22a3","LeftTeeVector":"\u295a","leftthreetimes":"\u22cb","LeftTriangleBar":"\u29cf","LeftTriangle":"\u22b2","LeftTriangleEqual":"\u22b4","LeftUpDownVector":"\u2951","LeftUpTeeVector":"\u2960","LeftUpVectorBar":"\u2958","LeftUpVector":"\u21bf","LeftVectorBar":"\u2952","LeftVector":"\u21bc","lEg":"\u2a8b","leg":"\u22da","leq":"\u2264","leqq":"\u2266","leqslant":"\u2a7d","lescc":"\u2aa8","les":"\u2a7d","lesdot":"\u2a7f","lesdoto":"\u2a81","lesdotor":"\u2a83","lesg":"\u22da\ufe00","lesges":"\u2a93","lessapprox":"\u2a85","lessdot":"\u22d6","lesseqgtr":"\u22da","lesseqqgtr":"\u2a8b","LessEqualGreater":"\u22da","LessFullEqual":"\u2266","LessGreater":"\u2276","lessgtr":"\u2276","LessLess":"\u2aa1","lesssim":"\u2272","LessSlantEqual":"\u2a7d","LessTilde":"\u2272","lfisht":"\u297c","lfloor":"\u230a","Lfr":"\ud835\udd0f","lfr":"\ud835\udd29","lg":"\u2276","lgE":"\u2a91","lHar":"\u2962","lhard":"\u21bd","lharu":"\u21bc","lharul":"\u296a","lhblk":"\u2584","LJcy":"\u0409","ljcy":"\u0459","llarr":"\u21c7","ll":"\u226a","Ll":"\u22d8","llcorner":"\u231e","Lleftarrow":"\u21da","llhard":"\u296b","lltri":"\u25fa","Lmidot":"\u013f","lmidot":"\u0140","lmoustache":"\u23b0","lmoust":"\u23b0","lnap":"\u2a89","lnapprox":"\u2a89","lne":"\u2a87","lnE":"\u2268","lneq":"\u2a87","lneqq":"\u2268","lnsim":"\u22e6","loang":"\u27ec","loarr":"\u21fd","lobrk":"\u27e6","longleftarrow":"\u27f5","LongLeftArrow":"\u27f5","Longleftarrow":"\u27f8","longleftrightarrow":"\u27f7","LongLeftRightArrow":"\u27f7","Longleftrightarrow":"\u27fa","longmapsto":"\u27fc","longrightarrow":"\u27f6","LongRightArrow":"\u27f6","Longrightarrow":"\u27f9","looparrowleft":"\u21ab","looparrowright":"\u21ac","lopar":"\u2985","Lopf":"\ud835\udd43","lopf":"\ud835\udd5d","loplus":"\u2a2d","lotimes":"\u2a34","lowast":"\u2217","lowbar":"_","LowerLeftArrow":"\u2199","LowerRightArrow":"\u2198","loz":"\u25ca","lozenge":"\u25ca","lozf":"\u29eb","lpar":"(","lparlt":"\u2993","lrarr":"\u21c6","lrcorner":"\u231f","lrhar":"\u21cb","lrhard":"\u296d","lrm":"\u200e","lrtri":"\u22bf","lsaquo":"\u2039","lscr":"\ud835\udcc1","Lscr":"\u2112","lsh":"\u21b0","Lsh":"\u21b0","lsim":"\u2272","lsime":"\u2a8d","lsimg":"\u2a8f","lsqb":"[","lsquo":"\u2018","lsquor":"\u201a","Lstrok":"\u0141","lstrok":"\u0142","ltcc":"\u2aa6","ltcir":"\u2a79","lt":"<","LT":"<","Lt":"\u226a","ltdot":"\u22d6","lthree":"\u22cb","ltimes":"\u22c9","ltlarr":"\u2976","ltquest":"\u2a7b","ltri":"\u25c3","ltrie":"\u22b4","ltrif":"\u25c2","ltrPar":"\u2996","lurdshar":"\u294a","luruhar":"\u2966","lvertneqq":"\u2268\ufe00","lvnE":"\u2268\ufe00","macr":"\xaf","male":"\u2642","malt":"\u2720","maltese":"\u2720","Map":"\u2905","map":"\u21a6","mapsto":"\u21a6","mapstodown":"\u21a7","mapstoleft":"\u21a4","mapstoup":"\u21a5","marker":"\u25ae","mcomma":"\u2a29","Mcy":"\u041c","mcy":"\u043c","mdash":"\u2014","mDDot":"\u223a","measuredangle":"\u2221","MediumSpace":"\u205f","Mellintrf":"\u2133","Mfr":"\ud835\udd10","mfr":"\ud835\udd2a","mho":"\u2127","micro":"\xb5","midast":"*","midcir":"\u2af0","mid":"\u2223","middot":"\xb7","minusb":"\u229f","minus":"\u2212","minusd":"\u2238","minusdu":"\u2a2a","MinusPlus":"\u2213","mlcp":"\u2adb","mldr":"\u2026","mnplus":"\u2213","models":"\u22a7","Mopf":"\ud835\udd44","mopf":"\ud835\udd5e","mp":"\u2213","mscr":"\ud835\udcc2","Mscr":"\u2133","mstpos":"\u223e","Mu":"\u039c","mu":"\u03bc","multimap":"\u22b8","mumap":"\u22b8","nabla":"\u2207","Nacute":"\u0143","nacute":"\u0144","nang":"\u2220\u20d2","nap":"\u2249","napE":"\u2a70\u0338","napid":"\u224b\u0338","napos":"\u0149","napprox":"\u2249","natural":"\u266e","naturals":"\u2115","natur":"\u266e","nbsp":"\xa0","nbump":"\u224e\u0338","nbumpe":"\u224f\u0338","ncap":"\u2a43","Ncaron":"\u0147","ncaron":"\u0148","Ncedil":"\u0145","ncedil":"\u0146","ncong":"\u2247","ncongdot":"\u2a6d\u0338","ncup":"\u2a42","Ncy":"\u041d","ncy":"\u043d","ndash":"\u2013","nearhk":"\u2924","nearr":"\u2197","neArr":"\u21d7","nearrow":"\u2197","ne":"\u2260","nedot":"\u2250\u0338","NegativeMediumSpace":"\u200b","NegativeThickSpace":"\u200b","NegativeThinSpace":"\u200b","NegativeVeryThinSpace":"\u200b","nequiv":"\u2262","nesear":"\u2928","nesim":"\u2242\u0338","NestedGreaterGreater":"\u226b","NestedLessLess":"\u226a","NewLine":"\\n","nexist":"\u2204","nexists":"\u2204","Nfr":"\ud835\udd11","nfr":"\ud835\udd2b","ngE":"\u2267\u0338","nge":"\u2271","ngeq":"\u2271","ngeqq":"\u2267\u0338","ngeqslant":"\u2a7e\u0338","nges":"\u2a7e\u0338","nGg":"\u22d9\u0338","ngsim":"\u2275","nGt":"\u226b\u20d2","ngt":"\u226f","ngtr":"\u226f","nGtv":"\u226b\u0338","nharr":"\u21ae","nhArr":"\u21ce","nhpar":"\u2af2","ni":"\u220b","nis":"\u22fc","nisd":"\u22fa","niv":"\u220b","NJcy":"\u040a","njcy":"\u045a","nlarr":"\u219a","nlArr":"\u21cd","nldr":"\u2025","nlE":"\u2266\u0338","nle":"\u2270","nleftarrow":"\u219a","nLeftarrow":"\u21cd","nleftrightarrow":"\u21ae","nLeftrightarrow":"\u21ce","nleq":"\u2270","nleqq":"\u2266\u0338","nleqslant":"\u2a7d\u0338","nles":"\u2a7d\u0338","nless":"\u226e","nLl":"\u22d8\u0338","nlsim":"\u2274","nLt":"\u226a\u20d2","nlt":"\u226e","nltri":"\u22ea","nltrie":"\u22ec","nLtv":"\u226a\u0338","nmid":"\u2224","NoBreak":"\u2060","NonBreakingSpace":"\xa0","nopf":"\ud835\udd5f","Nopf":"\u2115","Not":"\u2aec","not":"\xac","NotCongruent":"\u2262","NotCupCap":"\u226d","NotDoubleVerticalBar":"\u2226","NotElement":"\u2209","NotEqual":"\u2260","NotEqualTilde":"\u2242\u0338","NotExists":"\u2204","NotGreater":"\u226f","NotGreaterEqual":"\u2271","NotGreaterFullEqual":"\u2267\u0338","NotGreaterGreater":"\u226b\u0338","NotGreaterLess":"\u2279","NotGreaterSlantEqual":"\u2a7e\u0338","NotGreaterTilde":"\u2275","NotHumpDownHump":"\u224e\u0338","NotHumpEqual":"\u224f\u0338","notin":"\u2209","notindot":"\u22f5\u0338","notinE":"\u22f9\u0338","notinva":"\u2209","notinvb":"\u22f7","notinvc":"\u22f6","NotLeftTriangleBar":"\u29cf\u0338","NotLeftTriangle":"\u22ea","NotLeftTriangleEqual":"\u22ec","NotLess":"\u226e","NotLessEqual":"\u2270","NotLessGreater":"\u2278","NotLessLess":"\u226a\u0338","NotLessSlantEqual":"\u2a7d\u0338","NotLessTilde":"\u2274","NotNestedGreaterGreater":"\u2aa2\u0338","NotNestedLessLess":"\u2aa1\u0338","notni":"\u220c","notniva":"\u220c","notnivb":"\u22fe","notnivc":"\u22fd","NotPrecedes":"\u2280","NotPrecedesEqual":"\u2aaf\u0338","NotPrecedesSlantEqual":"\u22e0","NotReverseElement":"\u220c","NotRightTriangleBar":"\u29d0\u0338","NotRightTriangle":"\u22eb","NotRightTriangleEqual":"\u22ed","NotSquareSubset":"\u228f\u0338","NotSquareSubsetEqual":"\u22e2","NotSquareSuperset":"\u2290\u0338","NotSquareSupersetEqual":"\u22e3","NotSubset":"\u2282\u20d2","NotSubsetEqual":"\u2288","NotSucceeds":"\u2281","NotSucceedsEqual":"\u2ab0\u0338","NotSucceedsSlantEqual":"\u22e1","NotSucceedsTilde":"\u227f\u0338","NotSuperset":"\u2283\u20d2","NotSupersetEqual":"\u2289","NotTilde":"\u2241","NotTildeEqual":"\u2244","NotTildeFullEqual":"\u2247","NotTildeTilde":"\u2249","NotVerticalBar":"\u2224","nparallel":"\u2226","npar":"\u2226","nparsl":"\u2afd\u20e5","npart":"\u2202\u0338","npolint":"\u2a14","npr":"\u2280","nprcue":"\u22e0","nprec":"\u2280","npreceq":"\u2aaf\u0338","npre":"\u2aaf\u0338","nrarrc":"\u2933\u0338","nrarr":"\u219b","nrArr":"\u21cf","nrarrw":"\u219d\u0338","nrightarrow":"\u219b","nRightarrow":"\u21cf","nrtri":"\u22eb","nrtrie":"\u22ed","nsc":"\u2281","nsccue":"\u22e1","nsce":"\u2ab0\u0338","Nscr":"\ud835\udca9","nscr":"\ud835\udcc3","nshortmid":"\u2224","nshortparallel":"\u2226","nsim":"\u2241","nsime":"\u2244","nsimeq":"\u2244","nsmid":"\u2224","nspar":"\u2226","nsqsube":"\u22e2","nsqsupe":"\u22e3","nsub":"\u2284","nsubE":"\u2ac5\u0338","nsube":"\u2288","nsubset":"\u2282\u20d2","nsubseteq":"\u2288","nsubseteqq":"\u2ac5\u0338","nsucc":"\u2281","nsucceq":"\u2ab0\u0338","nsup":"\u2285","nsupE":"\u2ac6\u0338","nsupe":"\u2289","nsupset":"\u2283\u20d2","nsupseteq":"\u2289","nsupseteqq":"\u2ac6\u0338","ntgl":"\u2279","Ntilde":"\xd1","ntilde":"\xf1","ntlg":"\u2278","ntriangleleft":"\u22ea","ntrianglelefteq":"\u22ec","ntriangleright":"\u22eb","ntrianglerighteq":"\u22ed","Nu":"\u039d","nu":"\u03bd","num":"#","numero":"\u2116","numsp":"\u2007","nvap":"\u224d\u20d2","nvdash":"\u22ac","nvDash":"\u22ad","nVdash":"\u22ae","nVDash":"\u22af","nvge":"\u2265\u20d2","nvgt":">\u20d2","nvHarr":"\u2904","nvinfin":"\u29de","nvlArr":"\u2902","nvle":"\u2264\u20d2","nvlt":"<\u20d2","nvltrie":"\u22b4\u20d2","nvrArr":"\u2903","nvrtrie":"\u22b5\u20d2","nvsim":"\u223c\u20d2","nwarhk":"\u2923","nwarr":"\u2196","nwArr":"\u21d6","nwarrow":"\u2196","nwnear":"\u2927","Oacute":"\xd3","oacute":"\xf3","oast":"\u229b","Ocirc":"\xd4","ocirc":"\xf4","ocir":"\u229a","Ocy":"\u041e","ocy":"\u043e","odash":"\u229d","Odblac":"\u0150","odblac":"\u0151","odiv":"\u2a38","odot":"\u2299","odsold":"\u29bc","OElig":"\u0152","oelig":"\u0153","ofcir":"\u29bf","Ofr":"\ud835\udd12","ofr":"\ud835\udd2c","ogon":"\u02db","Ograve":"\xd2","ograve":"\xf2","ogt":"\u29c1","ohbar":"\u29b5","ohm":"\u03a9","oint":"\u222e","olarr":"\u21ba","olcir":"\u29be","olcross":"\u29bb","oline":"\u203e","olt":"\u29c0","Omacr":"\u014c","omacr":"\u014d","Omega":"\u03a9","omega":"\u03c9","Omicron":"\u039f","omicron":"\u03bf","omid":"\u29b6","ominus":"\u2296","Oopf":"\ud835\udd46","oopf":"\ud835\udd60","opar":"\u29b7","OpenCurlyDoubleQuote":"\u201c","OpenCurlyQuote":"\u2018","operp":"\u29b9","oplus":"\u2295","orarr":"\u21bb","Or":"\u2a54","or":"\u2228","ord":"\u2a5d","order":"\u2134","orderof":"\u2134","ordf":"\xaa","ordm":"\xba","origof":"\u22b6","oror":"\u2a56","orslope":"\u2a57","orv":"\u2a5b","oS":"\u24c8","Oscr":"\ud835\udcaa","oscr":"\u2134","Oslash":"\xd8","oslash":"\xf8","osol":"\u2298","Otilde":"\xd5","otilde":"\xf5","otimesas":"\u2a36","Otimes":"\u2a37","otimes":"\u2297","Ouml":"\xd6","ouml":"\xf6","ovbar":"\u233d","OverBar":"\u203e","OverBrace":"\u23de","OverBracket":"\u23b4","OverParenthesis":"\u23dc","para":"\xb6","parallel":"\u2225","par":"\u2225","parsim":"\u2af3","parsl":"\u2afd","part":"\u2202","PartialD":"\u2202","Pcy":"\u041f","pcy":"\u043f","percnt":"%","period":".","permil":"\u2030","perp":"\u22a5","pertenk":"\u2031","Pfr":"\ud835\udd13","pfr":"\ud835\udd2d","Phi":"\u03a6","phi":"\u03c6","phiv":"\u03d5","phmmat":"\u2133","phone":"\u260e","Pi":"\u03a0","pi":"\u03c0","pitchfork":"\u22d4","piv":"\u03d6","planck":"\u210f","planckh":"\u210e","plankv":"\u210f","plusacir":"\u2a23","plusb":"\u229e","pluscir":"\u2a22","plus":"+","plusdo":"\u2214","plusdu":"\u2a25","pluse":"\u2a72","PlusMinus":"\xb1","plusmn":"\xb1","plussim":"\u2a26","plustwo":"\u2a27","pm":"\xb1","Poincareplane":"\u210c","pointint":"\u2a15","popf":"\ud835\udd61","Popf":"\u2119","pound":"\xa3","prap":"\u2ab7","Pr":"\u2abb","pr":"\u227a","prcue":"\u227c","precapprox":"\u2ab7","prec":"\u227a","preccurlyeq":"\u227c","Precedes":"\u227a","PrecedesEqual":"\u2aaf","PrecedesSlantEqual":"\u227c","PrecedesTilde":"\u227e","preceq":"\u2aaf","precnapprox":"\u2ab9","precneqq":"\u2ab5","precnsim":"\u22e8","pre":"\u2aaf","prE":"\u2ab3","precsim":"\u227e","prime":"\u2032","Prime":"\u2033","primes":"\u2119","prnap":"\u2ab9","prnE":"\u2ab5","prnsim":"\u22e8","prod":"\u220f","Product":"\u220f","profalar":"\u232e","profline":"\u2312","profsurf":"\u2313","prop":"\u221d","Proportional":"\u221d","Proportion":"\u2237","propto":"\u221d","prsim":"\u227e","prurel":"\u22b0","Pscr":"\ud835\udcab","pscr":"\ud835\udcc5","Psi":"\u03a8","psi":"\u03c8","puncsp":"\u2008","Qfr":"\ud835\udd14","qfr":"\ud835\udd2e","qint":"\u2a0c","qopf":"\ud835\udd62","Qopf":"\u211a","qprime":"\u2057","Qscr":"\ud835\udcac","qscr":"\ud835\udcc6","quaternions":"\u210d","quatint":"\u2a16","quest":"?","questeq":"\u225f","quot":"\\"","QUOT":"\\"","rAarr":"\u21db","race":"\u223d\u0331","Racute":"\u0154","racute":"\u0155","radic":"\u221a","raemptyv":"\u29b3","rang":"\u27e9","Rang":"\u27eb","rangd":"\u2992","range":"\u29a5","rangle":"\u27e9","raquo":"\xbb","rarrap":"\u2975","rarrb":"\u21e5","rarrbfs":"\u2920","rarrc":"\u2933","rarr":"\u2192","Rarr":"\u21a0","rArr":"\u21d2","rarrfs":"\u291e","rarrhk":"\u21aa","rarrlp":"\u21ac","rarrpl":"\u2945","rarrsim":"\u2974","Rarrtl":"\u2916","rarrtl":"\u21a3","rarrw":"\u219d","ratail":"\u291a","rAtail":"\u291c","ratio":"\u2236","rationals":"\u211a","rbarr":"\u290d","rBarr":"\u290f","RBarr":"\u2910","rbbrk":"\u2773","rbrace":"}","rbrack":"]","rbrke":"\u298c","rbrksld":"\u298e","rbrkslu":"\u2990","Rcaron":"\u0158","rcaron":"\u0159","Rcedil":"\u0156","rcedil":"\u0157","rceil":"\u2309","rcub":"}","Rcy":"\u0420","rcy":"\u0440","rdca":"\u2937","rdldhar":"\u2969","rdquo":"\u201d","rdquor":"\u201d","rdsh":"\u21b3","real":"\u211c","realine":"\u211b","realpart":"\u211c","reals":"\u211d","Re":"\u211c","rect":"\u25ad","reg":"\xae","REG":"\xae","ReverseElement":"\u220b","ReverseEquilibrium":"\u21cb","ReverseUpEquilibrium":"\u296f","rfisht":"\u297d","rfloor":"\u230b","rfr":"\ud835\udd2f","Rfr":"\u211c","rHar":"\u2964","rhard":"\u21c1","rharu":"\u21c0","rharul":"\u296c","Rho":"\u03a1","rho":"\u03c1","rhov":"\u03f1","RightAngleBracket":"\u27e9","RightArrowBar":"\u21e5","rightarrow":"\u2192","RightArrow":"\u2192","Rightarrow":"\u21d2","RightArrowLeftArrow":"\u21c4","rightarrowtail":"\u21a3","RightCeiling":"\u2309","RightDoubleBracket":"\u27e7","RightDownTeeVector":"\u295d","RightDownVectorBar":"\u2955","RightDownVector":"\u21c2","RightFloor":"\u230b","rightharpoondown":"\u21c1","rightharpoonup":"\u21c0","rightleftarrows":"\u21c4","rightleftharpoons":"\u21cc","rightrightarrows":"\u21c9","rightsquigarrow":"\u219d","RightTeeArrow":"\u21a6","RightTee":"\u22a2","RightTeeVector":"\u295b","rightthreetimes":"\u22cc","RightTriangleBar":"\u29d0","RightTriangle":"\u22b3","RightTriangleEqual":"\u22b5","RightUpDownVector":"\u294f","RightUpTeeVector":"\u295c","RightUpVectorBar":"\u2954","RightUpVector":"\u21be","RightVectorBar":"\u2953","RightVector":"\u21c0","ring":"\u02da","risingdotseq":"\u2253","rlarr":"\u21c4","rlhar":"\u21cc","rlm":"\u200f","rmoustache":"\u23b1","rmoust":"\u23b1","rnmid":"\u2aee","roang":"\u27ed","roarr":"\u21fe","robrk":"\u27e7","ropar":"\u2986","ropf":"\ud835\udd63","Ropf":"\u211d","roplus":"\u2a2e","rotimes":"\u2a35","RoundImplies":"\u2970","rpar":")","rpargt":"\u2994","rppolint":"\u2a12","rrarr":"\u21c9","Rrightarrow":"\u21db","rsaquo":"\u203a","rscr":"\ud835\udcc7","Rscr":"\u211b","rsh":"\u21b1","Rsh":"\u21b1","rsqb":"]","rsquo":"\u2019","rsquor":"\u2019","rthree":"\u22cc","rtimes":"\u22ca","rtri":"\u25b9","rtrie":"\u22b5","rtrif":"\u25b8","rtriltri":"\u29ce","RuleDelayed":"\u29f4","ruluhar":"\u2968","rx":"\u211e","Sacute":"\u015a","sacute":"\u015b","sbquo":"\u201a","scap":"\u2ab8","Scaron":"\u0160","scaron":"\u0161","Sc":"\u2abc","sc":"\u227b","sccue":"\u227d","sce":"\u2ab0","scE":"\u2ab4","Scedil":"\u015e","scedil":"\u015f","Scirc":"\u015c","scirc":"\u015d","scnap":"\u2aba","scnE":"\u2ab6","scnsim":"\u22e9","scpolint":"\u2a13","scsim":"\u227f","Scy":"\u0421","scy":"\u0441","sdotb":"\u22a1","sdot":"\u22c5","sdote":"\u2a66","searhk":"\u2925","searr":"\u2198","seArr":"\u21d8","searrow":"\u2198","sect":"\xa7","semi":";","seswar":"\u2929","setminus":"\u2216","setmn":"\u2216","sext":"\u2736","Sfr":"\ud835\udd16","sfr":"\ud835\udd30","sfrown":"\u2322","sharp":"\u266f","SHCHcy":"\u0429","shchcy":"\u0449","SHcy":"\u0428","shcy":"\u0448","ShortDownArrow":"\u2193","ShortLeftArrow":"\u2190","shortmid":"\u2223","shortparallel":"\u2225","ShortRightArrow":"\u2192","ShortUpArrow":"\u2191","shy":"\xad","Sigma":"\u03a3","sigma":"\u03c3","sigmaf":"\u03c2","sigmav":"\u03c2","sim":"\u223c","simdot":"\u2a6a","sime":"\u2243","simeq":"\u2243","simg":"\u2a9e","simgE":"\u2aa0","siml":"\u2a9d","simlE":"\u2a9f","simne":"\u2246","simplus":"\u2a24","simrarr":"\u2972","slarr":"\u2190","SmallCircle":"\u2218","smallsetminus":"\u2216","smashp":"\u2a33","smeparsl":"\u29e4","smid":"\u2223","smile":"\u2323","smt":"\u2aaa","smte":"\u2aac","smtes":"\u2aac\ufe00","SOFTcy":"\u042c","softcy":"\u044c","solbar":"\u233f","solb":"\u29c4","sol":"/","Sopf":"\ud835\udd4a","sopf":"\ud835\udd64","spades":"\u2660","spadesuit":"\u2660","spar":"\u2225","sqcap":"\u2293","sqcaps":"\u2293\ufe00","sqcup":"\u2294","sqcups":"\u2294\ufe00","Sqrt":"\u221a","sqsub":"\u228f","sqsube":"\u2291","sqsubset":"\u228f","sqsubseteq":"\u2291","sqsup":"\u2290","sqsupe":"\u2292","sqsupset":"\u2290","sqsupseteq":"\u2292","square":"\u25a1","Square":"\u25a1","SquareIntersection":"\u2293","SquareSubset":"\u228f","SquareSubsetEqual":"\u2291","SquareSuperset":"\u2290","SquareSupersetEqual":"\u2292","SquareUnion":"\u2294","squarf":"\u25aa","squ":"\u25a1","squf":"\u25aa","srarr":"\u2192","Sscr":"\ud835\udcae","sscr":"\ud835\udcc8","ssetmn":"\u2216","ssmile":"\u2323","sstarf":"\u22c6","Star":"\u22c6","star":"\u2606","starf":"\u2605","straightepsilon":"\u03f5","straightphi":"\u03d5","strns":"\xaf","sub":"\u2282","Sub":"\u22d0","subdot":"\u2abd","subE":"\u2ac5","sube":"\u2286","subedot":"\u2ac3","submult":"\u2ac1","subnE":"\u2acb","subne":"\u228a","subplus":"\u2abf","subrarr":"\u2979","subset":"\u2282","Subset":"\u22d0","subseteq":"\u2286","subseteqq":"\u2ac5","SubsetEqual":"\u2286","subsetneq":"\u228a","subsetneqq":"\u2acb","subsim":"\u2ac7","subsub":"\u2ad5","subsup":"\u2ad3","succapprox":"\u2ab8","succ":"\u227b","succcurlyeq":"\u227d","Succeeds":"\u227b","SucceedsEqual":"\u2ab0","SucceedsSlantEqual":"\u227d","SucceedsTilde":"\u227f","succeq":"\u2ab0","succnapprox":"\u2aba","succneqq":"\u2ab6","succnsim":"\u22e9","succsim":"\u227f","SuchThat":"\u220b","sum":"\u2211","Sum":"\u2211","sung":"\u266a","sup1":"\xb9","sup2":"\xb2","sup3":"\xb3","sup":"\u2283","Sup":"\u22d1","supdot":"\u2abe","supdsub":"\u2ad8","supE":"\u2ac6","supe":"\u2287","supedot":"\u2ac4","Superset":"\u2283","SupersetEqual":"\u2287","suphsol":"\u27c9","suphsub":"\u2ad7","suplarr":"\u297b","supmult":"\u2ac2","supnE":"\u2acc","supne":"\u228b","supplus":"\u2ac0","supset":"\u2283","Supset":"\u22d1","supseteq":"\u2287","supseteqq":"\u2ac6","supsetneq":"\u228b","supsetneqq":"\u2acc","supsim":"\u2ac8","supsub":"\u2ad4","supsup":"\u2ad6","swarhk":"\u2926","swarr":"\u2199","swArr":"\u21d9","swarrow":"\u2199","swnwar":"\u292a","szlig":"\xdf","Tab":"\\t","target":"\u2316","Tau":"\u03a4","tau":"\u03c4","tbrk":"\u23b4","Tcaron":"\u0164","tcaron":"\u0165","Tcedil":"\u0162","tcedil":"\u0163","Tcy":"\u0422","tcy":"\u0442","tdot":"\u20db","telrec":"\u2315","Tfr":"\ud835\udd17","tfr":"\ud835\udd31","there4":"\u2234","therefore":"\u2234","Therefore":"\u2234","Theta":"\u0398","theta":"\u03b8","thetasym":"\u03d1","thetav":"\u03d1","thickapprox":"\u2248","thicksim":"\u223c","ThickSpace":"\u205f\u200a","ThinSpace":"\u2009","thinsp":"\u2009","thkap":"\u2248","thksim":"\u223c","THORN":"\xde","thorn":"\xfe","tilde":"\u02dc","Tilde":"\u223c","TildeEqual":"\u2243","TildeFullEqual":"\u2245","TildeTilde":"\u2248","timesbar":"\u2a31","timesb":"\u22a0","times":"\xd7","timesd":"\u2a30","tint":"\u222d","toea":"\u2928","topbot":"\u2336","topcir":"\u2af1","top":"\u22a4","Topf":"\ud835\udd4b","topf":"\ud835\udd65","topfork":"\u2ada","tosa":"\u2929","tprime":"\u2034","trade":"\u2122","TRADE":"\u2122","triangle":"\u25b5","triangledown":"\u25bf","triangleleft":"\u25c3","trianglelefteq":"\u22b4","triangleq":"\u225c","triangleright":"\u25b9","trianglerighteq":"\u22b5","tridot":"\u25ec","trie":"\u225c","triminus":"\u2a3a","TripleDot":"\u20db","triplus":"\u2a39","trisb":"\u29cd","tritime":"\u2a3b","trpezium":"\u23e2","Tscr":"\ud835\udcaf","tscr":"\ud835\udcc9","TScy":"\u0426","tscy":"\u0446","TSHcy":"\u040b","tshcy":"\u045b","Tstrok":"\u0166","tstrok":"\u0167","twixt":"\u226c","twoheadleftarrow":"\u219e","twoheadrightarrow":"\u21a0","Uacute":"\xda","uacute":"\xfa","uarr":"\u2191","Uarr":"\u219f","uArr":"\u21d1","Uarrocir":"\u2949","Ubrcy":"\u040e","ubrcy":"\u045e","Ubreve":"\u016c","ubreve":"\u016d","Ucirc":"\xdb","ucirc":"\xfb","Ucy":"\u0423","ucy":"\u0443","udarr":"\u21c5","Udblac":"\u0170","udblac":"\u0171","udhar":"\u296e","ufisht":"\u297e","Ufr":"\ud835\udd18","ufr":"\ud835\udd32","Ugrave":"\xd9","ugrave":"\xf9","uHar":"\u2963","uharl":"\u21bf","uharr":"\u21be","uhblk":"\u2580","ulcorn":"\u231c","ulcorner":"\u231c","ulcrop":"\u230f","ultri":"\u25f8","Umacr":"\u016a","umacr":"\u016b","uml":"\xa8","UnderBar":"_","UnderBrace":"\u23df","UnderBracket":"\u23b5","UnderParenthesis":"\u23dd","Union":"\u22c3","UnionPlus":"\u228e","Uogon":"\u0172","uogon":"\u0173","Uopf":"\ud835\udd4c","uopf":"\ud835\udd66","UpArrowBar":"\u2912","uparrow":"\u2191","UpArrow":"\u2191","Uparrow":"\u21d1","UpArrowDownArrow":"\u21c5","updownarrow":"\u2195","UpDownArrow":"\u2195","Updownarrow":"\u21d5","UpEquilibrium":"\u296e","upharpoonleft":"\u21bf","upharpoonright":"\u21be","uplus":"\u228e","UpperLeftArrow":"\u2196","UpperRightArrow":"\u2197","upsi":"\u03c5","Upsi":"\u03d2","upsih":"\u03d2","Upsilon":"\u03a5","upsilon":"\u03c5","UpTeeArrow":"\u21a5","UpTee":"\u22a5","upuparrows":"\u21c8","urcorn":"\u231d","urcorner":"\u231d","urcrop":"\u230e","Uring":"\u016e","uring":"\u016f","urtri":"\u25f9","Uscr":"\ud835\udcb0","uscr":"\ud835\udcca","utdot":"\u22f0","Utilde":"\u0168","utilde":"\u0169","utri":"\u25b5","utrif":"\u25b4","uuarr":"\u21c8","Uuml":"\xdc","uuml":"\xfc","uwangle":"\u29a7","vangrt":"\u299c","varepsilon":"\u03f5","varkappa":"\u03f0","varnothing":"\u2205","varphi":"\u03d5","varpi":"\u03d6","varpropto":"\u221d","varr":"\u2195","vArr":"\u21d5","varrho":"\u03f1","varsigma":"\u03c2","varsubsetneq":"\u228a\ufe00","varsubsetneqq":"\u2acb\ufe00","varsupsetneq":"\u228b\ufe00","varsupsetneqq":"\u2acc\ufe00","vartheta":"\u03d1","vartriangleleft":"\u22b2","vartriangleright":"\u22b3","vBar":"\u2ae8","Vbar":"\u2aeb","vBarv":"\u2ae9","Vcy":"\u0412","vcy":"\u0432","vdash":"\u22a2","vDash":"\u22a8","Vdash":"\u22a9","VDash":"\u22ab","Vdashl":"\u2ae6","veebar":"\u22bb","vee":"\u2228","Vee":"\u22c1","veeeq":"\u225a","vellip":"\u22ee","verbar":"|","Verbar":"\u2016","vert":"|","Vert":"\u2016","VerticalBar":"\u2223","VerticalLine":"|","VerticalSeparator":"\u2758","VerticalTilde":"\u2240","VeryThinSpace":"\u200a","Vfr":"\ud835\udd19","vfr":"\ud835\udd33","vltri":"\u22b2","vnsub":"\u2282\u20d2","vnsup":"\u2283\u20d2","Vopf":"\ud835\udd4d","vopf":"\ud835\udd67","vprop":"\u221d","vrtri":"\u22b3","Vscr":"\ud835\udcb1","vscr":"\ud835\udccb","vsubnE":"\u2acb\ufe00","vsubne":"\u228a\ufe00","vsupnE":"\u2acc\ufe00","vsupne":"\u228b\ufe00","Vvdash":"\u22aa","vzigzag":"\u299a","Wcirc":"\u0174","wcirc":"\u0175","wedbar":"\u2a5f","wedge":"\u2227","Wedge":"\u22c0","wedgeq":"\u2259","weierp":"\u2118","Wfr":"\ud835\udd1a","wfr":"\ud835\udd34","Wopf":"\ud835\udd4e","wopf":"\ud835\udd68","wp":"\u2118","wr":"\u2240","wreath":"\u2240","Wscr":"\ud835\udcb2","wscr":"\ud835\udccc","xcap":"\u22c2","xcirc":"\u25ef","xcup":"\u22c3","xdtri":"\u25bd","Xfr":"\ud835\udd1b","xfr":"\ud835\udd35","xharr":"\u27f7","xhArr":"\u27fa","Xi":"\u039e","xi":"\u03be","xlarr":"\u27f5","xlArr":"\u27f8","xmap":"\u27fc","xnis":"\u22fb","xodot":"\u2a00","Xopf":"\ud835\udd4f","xopf":"\ud835\udd69","xoplus":"\u2a01","xotime":"\u2a02","xrarr":"\u27f6","xrArr":"\u27f9","Xscr":"\ud835\udcb3","xscr":"\ud835\udccd","xsqcup":"\u2a06","xuplus":"\u2a04","xutri":"\u25b3","xvee":"\u22c1","xwedge":"\u22c0","Yacute":"\xdd","yacute":"\xfd","YAcy":"\u042f","yacy":"\u044f","Ycirc":"\u0176","ycirc":"\u0177","Ycy":"\u042b","ycy":"\u044b","yen":"\xa5","Yfr":"\ud835\udd1c","yfr":"\ud835\udd36","YIcy":"\u0407","yicy":"\u0457","Yopf":"\ud835\udd50","yopf":"\ud835\udd6a","Yscr":"\ud835\udcb4","yscr":"\ud835\udcce","YUcy":"\u042e","yucy":"\u044e","yuml":"\xff","Yuml":"\u0178","Zacute":"\u0179","zacute":"\u017a","Zcaron":"\u017d","zcaron":"\u017e","Zcy":"\u0417","zcy":"\u0437","Zdot":"\u017b","zdot":"\u017c","zeetrf":"\u2128","ZeroWidthSpace":"\u200b","Zeta":"\u0396","zeta":"\u03b6","zfr":"\ud835\udd37","Zfr":"\u2128","ZHcy":"\u0416","zhcy":"\u0436","zigrarr":"\u21dd","zopf":"\ud835\udd6b","Zopf":"\u2124","Zscr":"\ud835\udcb5","zscr":"\ud835\udccf","zwj":"\u200d","zwnj":"\u200c"}')},function(e){e.exports=JSON.parse('{"amp":"&","apos":"\'","gt":">","lt":"<","quot":"\\""}')},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.escape=t.encodeHTML=t.encodeXML=void 0;var i=l(r(n(79)).default),o=u(i);t.encodeXML=d(i,o);var a=l(r(n(78)).default),s=u(a);function l(e){return Object.keys(e).sort().reduce((function(t,n){return t[e[n]]="&"+n+";",t}),{})}function u(e){for(var t=[],n=[],r=0,i=Object.keys(e);r=a())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a().toString(16)+" bytes");return 0|e}function h(e,t){if(l.isBuffer(e))return e.length;if("undefined"!==typeof ArrayBuffer&&"function"===typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!==typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return z(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return B(e).length;default:if(r)return z(e).length;t=(""+t).toLowerCase(),r=!0}}function m(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return A(this,t,n);case"utf8":case"utf-8":return T(this,t,n);case"ascii":return C(this,t,n);case"latin1":case"binary":return O(this,t,n);case"base64":return E(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return N(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function g(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function v(e,t,n,r,i){if(0===e.length)return-1;if("string"===typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=i?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(i)return-1;n=e.length-1}else if(n<0){if(!i)return-1;n=0}if("string"===typeof t&&(t=l.from(t,r)),l.isBuffer(t))return 0===t.length?-1:y(e,t,n,r,i);if("number"===typeof t)return t&=255,l.TYPED_ARRAY_SUPPORT&&"function"===typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):y(e,[t],n,r,i);throw new TypeError("val must be string, number or Buffer")}function y(e,t,n,r,i){var o,a=1,s=e.length,l=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;a=2,s/=2,l/=2,n/=2}function u(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(i){var c=-1;for(o=n;os&&(n=s-l),o=n;o>=0;o--){for(var f=!0,d=0;di&&(r=i):r=i;var o=t.length;if(o%2!==0)throw new TypeError("Invalid hex string");r>o/2&&(r=o/2);for(var a=0;a>8,i=n%256,o.push(i),o.push(r);return o}(t,e.length-n),e,n,r)}function E(e,t,n){return 0===t&&n===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(t,n))}function T(e,t,n){n=Math.min(e.length,n);for(var r=[],i=t;i239?4:u>223?3:u>191?2:1;if(i+f<=n)switch(f){case 1:u<128&&(c=u);break;case 2:128===(192&(o=e[i+1]))&&(l=(31&u)<<6|63&o)>127&&(c=l);break;case 3:o=e[i+1],a=e[i+2],128===(192&o)&&128===(192&a)&&(l=(15&u)<<12|(63&o)<<6|63&a)>2047&&(l<55296||l>57343)&&(c=l);break;case 4:o=e[i+1],a=e[i+2],s=e[i+3],128===(192&o)&&128===(192&a)&&128===(192&s)&&(l=(15&u)<<18|(63&o)<<12|(63&a)<<6|63&s)>65535&&l<1114112&&(c=l)}null===c?(c=65533,f=1):c>65535&&(c-=65536,r.push(c>>>10&1023|55296),c=56320|1023&c),r.push(c),i+=f}return function(e){var t=e.length;if(t<=4096)return String.fromCharCode.apply(String,e);var n="",r=0;for(;r0&&(e=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(e+=" ... ")),""},l.prototype.compare=function(e,t,n,r,i){if(!l.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),t<0||n>e.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&t>=n)return 0;if(r>=i)return-1;if(t>=n)return 1;if(this===e)return 0;for(var o=(i>>>=0)-(r>>>=0),a=(n>>>=0)-(t>>>=0),s=Math.min(o,a),u=this.slice(r,i),c=e.slice(t,n),f=0;fi)&&(n=i),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var o=!1;;)switch(r){case"hex":return b(this,e,t,n);case"utf8":case"utf-8":return w(this,e,t,n);case"ascii":return x(this,e,t,n);case"latin1":case"binary":return _(this,e,t,n);case"base64":return k(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return S(this,e,t,n);default:if(o)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),o=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function C(e,t,n){var r="";n=Math.min(e.length,n);for(var i=t;ir)&&(n=r);for(var i="",o=t;on)throw new RangeError("Trying to access beyond buffer length")}function L(e,t,n,r,i,o){if(!l.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}function M(e,t,n,r){t<0&&(t=65535+t+1);for(var i=0,o=Math.min(e.length-n,2);i>>8*(r?i:1-i)}function P(e,t,n,r){t<0&&(t=4294967295+t+1);for(var i=0,o=Math.min(e.length-n,4);i>>8*(r?i:3-i)&255}function j(e,t,n,r,i,o){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function I(e,t,n,r,o){return o||j(e,0,n,4),i.write(e,t,n,r,23,4),n+4}function R(e,t,n,r,o){return o||j(e,0,n,8),i.write(e,t,n,r,52,8),n+8}l.prototype.slice=function(e,t){var n,r=this.length;if((e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t0&&(i*=256);)r+=this[e+--t]*i;return r},l.prototype.readUInt8=function(e,t){return t||D(e,1,this.length),this[e]},l.prototype.readUInt16LE=function(e,t){return t||D(e,2,this.length),this[e]|this[e+1]<<8},l.prototype.readUInt16BE=function(e,t){return t||D(e,2,this.length),this[e]<<8|this[e+1]},l.prototype.readUInt32LE=function(e,t){return t||D(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},l.prototype.readUInt32BE=function(e,t){return t||D(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},l.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||D(e,t,this.length);for(var r=this[e],i=1,o=0;++o=(i*=128)&&(r-=Math.pow(2,8*t)),r},l.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||D(e,t,this.length);for(var r=t,i=1,o=this[e+--r];r>0&&(i*=256);)o+=this[e+--r]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*t)),o},l.prototype.readInt8=function(e,t){return t||D(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},l.prototype.readInt16LE=function(e,t){t||D(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},l.prototype.readInt16BE=function(e,t){t||D(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},l.prototype.readInt32LE=function(e,t){return t||D(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},l.prototype.readInt32BE=function(e,t){return t||D(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},l.prototype.readFloatLE=function(e,t){return t||D(e,4,this.length),i.read(this,e,!0,23,4)},l.prototype.readFloatBE=function(e,t){return t||D(e,4,this.length),i.read(this,e,!1,23,4)},l.prototype.readDoubleLE=function(e,t){return t||D(e,8,this.length),i.read(this,e,!0,52,8)},l.prototype.readDoubleBE=function(e,t){return t||D(e,8,this.length),i.read(this,e,!1,52,8)},l.prototype.writeUIntLE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||L(this,e,t,n,Math.pow(2,8*n)-1,0);var i=1,o=0;for(this[t]=255&e;++o=0&&(o*=256);)this[t+i]=e/o&255;return t+n},l.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||L(this,e,t,1,255,0),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},l.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||L(this,e,t,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):M(this,e,t,!0),t+2},l.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||L(this,e,t,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):M(this,e,t,!1),t+2},l.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||L(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):P(this,e,t,!0),t+4},l.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||L(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):P(this,e,t,!1),t+4},l.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);L(this,e,t,n,i-1,-i)}var o=0,a=1,s=0;for(this[t]=255&e;++o>0)-s&255;return t+n},l.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);L(this,e,t,n,i-1,-i)}var o=n-1,a=1,s=0;for(this[t+o]=255&e;--o>=0&&(a*=256);)e<0&&0===s&&0!==this[t+o+1]&&(s=1),this[t+o]=(e/a>>0)-s&255;return t+n},l.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||L(this,e,t,1,127,-128),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},l.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||L(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):M(this,e,t,!0),t+2},l.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||L(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):M(this,e,t,!1),t+2},l.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||L(this,e,t,4,2147483647,-2147483648),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):P(this,e,t,!0),t+4},l.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||L(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):P(this,e,t,!1),t+4},l.prototype.writeFloatLE=function(e,t,n){return I(this,e,t,!0,n)},l.prototype.writeFloatBE=function(e,t,n){return I(this,e,t,!1,n)},l.prototype.writeDoubleLE=function(e,t,n){return R(this,e,t,!0,n)},l.prototype.writeDoubleBE=function(e,t,n){return R(this,e,t,!1,n)},l.prototype.copy=function(e,t,n,r){if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t=0;--i)e[i+t]=this[i+n];else if(o<1e3||!l.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"===typeof e)for(o=t;o55295&&n<57344){if(!i){if(n>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(a+1===r){(t-=3)>-1&&o.push(239,191,189);continue}i=n;continue}if(n<56320){(t-=3)>-1&&o.push(239,191,189),i=n;continue}n=65536+(i-55296<<10|n-56320)}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,n<128){if((t-=1)<0)break;o.push(n)}else if(n<2048){if((t-=2)<0)break;o.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;o.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return o}function B(e){return r.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(q,"")).length<2)return"";for(;e.length%4!==0;)e+="=";return e}(e))}function H(e,t,n,r){for(var i=0;i=t.length||i>=e.length);++i)t[i+n]=e[i];return i}}).call(this,n(28))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=Object.assign||function(e){for(var t=1;t=0||(i[n]=e[n]);return i}(t,["children"]);if(delete r.in,delete r.mountOnEnter,delete r.unmountOnExit,delete r.appear,delete r.enter,delete r.exit,delete r.timeout,delete r.addEndListener,delete r.onEnter,delete r.onEntering,delete r.onEntered,delete r.onExit,delete r.onExiting,delete r.onExited,"function"===typeof n)return n(e,r);var o=i.default.Children.only(n);return i.default.cloneElement(o,r)},r}(i.default.Component);function u(){}l.contextTypes={transitionGroup:r.object},l.childContextTypes={transitionGroup:function(){}},l.propTypes={},l.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:u,onEntering:u,onEntered:u,onExit:u,onExiting:u,onExited:u},l.UNMOUNTED=0,l.EXITED=1,l.ENTERING=2,l.ENTERED=3,l.EXITING=4;var c=(0,a.polyfill)(l);t.default=c},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r=s(n(7)),i=s(n(0)),o=n(65),a=n(139);function s(e){return e&&e.__esModule?e:{default:e}}function l(){return(l=Object.assign||function(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,["component","childFactory"]),o=c(this.state.children).map(n);return delete r.appear,delete r.enter,delete r.exit,null===t?o:i.default.createElement(t,r,o)},r}(i.default.Component);f.childContextTypes={transitionGroup:r.default.object.isRequired},f.propTypes={},f.defaultProps={component:"div",childFactory:function(e){return e}};var d=(0,o.polyfill)(f);t.default=d,e.exports=t.default},function(e,t,n){"use strict";var r=n(0),i=(n(31),n(7)),o=n(36),a=n(140),s=n(141);function l(e){return e?e.replace(/\r\n|\r/g,"\n"):e}var u=n(143)({propTypes:{autoFocus:i.bool,className:i.any,codeMirrorInstance:i.func,defaultValue:i.string,name:i.string,onChange:i.func,onCursorActivity:i.func,onFocusChange:i.func,onScroll:i.func,options:i.object,path:i.string,value:i.string,preserveScrollPosition:i.bool},getDefaultProps:function(){return{preserveScrollPosition:!1}},getCodeMirrorInstance:function(){return this.props.codeMirrorInstance||n(29)},getInitialState:function(){return{isFocused:!1}},componentWillMount:function(){this.componentWillReceiveProps=a(this.componentWillReceiveProps,0),this.props.path&&console.error("Warning: react-codemirror: the `path` prop has been changed to `name`")},componentDidMount:function(){var e=this.getCodeMirrorInstance();this.codeMirror=e.fromTextArea(this.textareaNode,this.props.options),this.codeMirror.on("change",this.codemirrorValueChanged),this.codeMirror.on("cursorActivity",this.cursorActivity),this.codeMirror.on("focus",this.focusChanged.bind(this,!0)),this.codeMirror.on("blur",this.focusChanged.bind(this,!1)),this.codeMirror.on("scroll",this.scrollChanged),this.codeMirror.setValue(this.props.defaultValue||this.props.value||"")},componentWillUnmount:function(){this.codeMirror&&this.codeMirror.toTextArea()},componentWillReceiveProps:function(e){if(this.codeMirror&&void 0!==e.value&&e.value!==this.props.value&&l(this.codeMirror.getValue())!==l(e.value))if(this.props.preserveScrollPosition){var t=this.codeMirror.getScrollInfo();this.codeMirror.setValue(e.value),this.codeMirror.scrollTo(t.left,t.top)}else this.codeMirror.setValue(e.value);if("object"===typeof e.options)for(var n in e.options)e.options.hasOwnProperty(n)&&this.setOptionIfChanged(n,e.options[n])},setOptionIfChanged:function(e,t){var n=this.codeMirror.getOption(e);s(n,t)||this.codeMirror.setOption(e,t)},getCodeMirror:function(){return this.codeMirror},focus:function(){this.codeMirror&&this.codeMirror.focus()},focusChanged:function(e){this.setState({isFocused:e}),this.props.onFocusChange&&this.props.onFocusChange(e)},cursorActivity:function(e){this.props.onCursorActivity&&this.props.onCursorActivity(e)},scrollChanged:function(e){this.props.onScroll&&this.props.onScroll(e.getScrollInfo())},codemirrorValueChanged:function(e,t){this.props.onChange&&"setValue"!==t.origin&&this.props.onChange(e.getValue(),t)},render:function(){var e=this,t=o("ReactCodeMirror",this.state.isFocused?"ReactCodeMirror--focused":null,this.props.className);return r.createElement("div",{className:t},r.createElement("textarea",{ref:function(t){return e.textareaNode=t},name:this.props.name||this.props.path,defaultValue:this.props.value,autoComplete:"off",autoFocus:this.props.autoFocus}))}});e.exports=u},function(e,t,n){e.exports=function(){"use strict";var e=6e4,t=36e5,n="millisecond",r="second",i="minute",o="hour",a="day",s="week",l="month",u="quarter",c="year",f="date",d="Invalid Date",p=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,h=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,m={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_")},g=function(e,t,n){var r=String(e);return!r||r.length>=t?e:""+Array(t+1-r.length).join(n)+e},v={s:g,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),r=Math.floor(n/60),i=n%60;return(t<=0?"+":"-")+g(r,2,"0")+":"+g(i,2,"0")},m:function e(t,n){if(t.date()M.length&&M.push(e)}function I(e,t,n){return null==e?0:function e(t,n,r,i){var s=typeof t;"undefined"!==s&&"boolean"!==s||(t=null);var l=!1;if(null===t)l=!0;else switch(s){case"string":case"number":l=!0;break;case"object":switch(t.$$typeof){case o:case a:l=!0}}if(l)return r(i,t,""===n?"."+R(t,0):n),1;if(l=0,n=""===n?".":n+":",Array.isArray(t))for(var u=0;u
    ',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",sanitize:!0,sanitizeFn:null,whiteList:{"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]}},Fe="show",ze={HIDE:"hide"+De,HIDDEN:"hidden"+De,SHOW:"show"+De,SHOWN:"shown"+De,INSERTED:"inserted"+De,CLICK:"click"+De,FOCUSIN:"focusin"+De,FOCUSOUT:"focusout"+De,MOUSEENTER:"mouseenter"+De,MOUSELEAVE:"mouseleave"+De},Be="fade",He="show",Ue="hover",We="focus",Ve=function(){function e(e,t){if("undefined"==typeof n)throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org/)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=e,this.config=this._getConfig(t),this.tip=null,this._setListeners()}var r=e.prototype;return r.enable=function(){this._isEnabled=!0},r.disable=function(){this._isEnabled=!1},r.toggleEnabled=function(){this._isEnabled=!this._isEnabled},r.toggle=function(e){if(this._isEnabled)if(e){var n=this.constructor.DATA_KEY,r=t(e.currentTarget).data(n);r||(r=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(n,r)),r._activeTrigger.click=!r._activeTrigger.click,r._isWithActiveTrigger()?r._enter(null,r):r._leave(null,r)}else{if(t(this.getTipElement()).hasClass(He))return void this._leave(null,this);this._enter(null,this)}},r.dispose=function(){clearTimeout(this._timeout),t.removeData(this.element,this.constructor.DATA_KEY),t(this.element).off(this.constructor.EVENT_KEY),t(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&t(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,(this._activeTrigger=null)!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},r.show=function(){var e=this;if("none"===t(this.element).css("display"))throw new Error("Please use show on visible elements");var r=t.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){t(this.element).trigger(r);var i=s.findShadowRoot(this.element),o=t.contains(null!==i?i:this.element.ownerDocument.documentElement,this.element);if(r.isDefaultPrevented()||!o)return;var a=this.getTipElement(),l=s.getUID(this.constructor.NAME);a.setAttribute("id",l),this.element.setAttribute("aria-describedby",l),this.setContent(),this.config.animation&&t(a).addClass(Be);var u="function"==typeof this.config.placement?this.config.placement.call(this,a,this.element):this.config.placement,c=this._getAttachment(u);this.addAttachmentClass(c);var f=this._getContainer();t(a).data(this.constructor.DATA_KEY,this),t.contains(this.element.ownerDocument.documentElement,this.tip)||t(a).appendTo(f),t(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new n(this.element,a,{placement:c,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:".arrow"},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}}),t(a).addClass(He),"ontouchstart"in document.documentElement&&t(document.body).children().on("mouseover",null,t.noop);var d=function(){e.config.animation&&e._fixTransition();var n=e._hoverState;e._hoverState=null,t(e.element).trigger(e.constructor.Event.SHOWN),"out"===n&&e._leave(null,e)};if(t(this.tip).hasClass(Be)){var p=s.getTransitionDurationFromElement(this.tip);t(this.tip).one(s.TRANSITION_END,d).emulateTransitionEnd(p)}else d()}},r.hide=function(e){var n=this,r=this.getTipElement(),i=t.Event(this.constructor.Event.HIDE),o=function(){n._hoverState!==Fe&&r.parentNode&&r.parentNode.removeChild(r),n._cleanTipClass(),n.element.removeAttribute("aria-describedby"),t(n.element).trigger(n.constructor.Event.HIDDEN),null!==n._popper&&n._popper.destroy(),e&&e()};if(t(this.element).trigger(i),!i.isDefaultPrevented()){if(t(r).removeClass(He),"ontouchstart"in document.documentElement&&t(document.body).children().off("mouseover",null,t.noop),this._activeTrigger.click=!1,this._activeTrigger[We]=!1,this._activeTrigger[Ue]=!1,t(this.tip).hasClass(Be)){var a=s.getTransitionDurationFromElement(r);t(r).one(s.TRANSITION_END,o).emulateTransitionEnd(a)}else o();this._hoverState=""}},r.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},r.isWithContent=function(){return Boolean(this.getTitle())},r.addAttachmentClass=function(e){t(this.getTipElement()).addClass(Me+"-"+e)},r.getTipElement=function(){return this.tip=this.tip||t(this.config.template)[0],this.tip},r.setContent=function(){var e=this.getTipElement();this.setElementContent(t(e.querySelectorAll(".tooltip-inner")),this.getTitle()),t(e).removeClass(Be+" "+He)},r.setElementContent=function(e,n){"object"!=typeof n||!n.nodeType&&!n.jquery?this.config.html?(this.config.sanitize&&(n=Oe(n,this.config.whiteList,this.config.sanitizeFn)),e.html(n)):e.text(n):this.config.html?t(n).parent().is(e)||e.empty().append(n):e.text(t(n).text())},r.getTitle=function(){var e=this.element.getAttribute("data-original-title");return e||(e="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),e},r._getOffset=function(){var e=this,t={};return"function"==typeof this.config.offset?t.fn=function(t){return t.offsets=o({},t.offsets,e.config.offset(t.offsets,e.element)||{}),t}:t.offset=this.config.offset,t},r._getContainer=function(){return!1===this.config.container?document.body:s.isElement(this.config.container)?t(this.config.container):t(document).find(this.config.container)},r._getAttachment=function(e){return Re[e.toUpperCase()]},r._setListeners=function(){var e=this;this.config.trigger.split(" ").forEach((function(n){if("click"===n)t(e.element).on(e.constructor.Event.CLICK,e.config.selector,(function(t){return e.toggle(t)}));else if("manual"!==n){var r=n===Ue?e.constructor.Event.MOUSEENTER:e.constructor.Event.FOCUSIN,i=n===Ue?e.constructor.Event.MOUSELEAVE:e.constructor.Event.FOCUSOUT;t(e.element).on(r,e.config.selector,(function(t){return e._enter(t)})).on(i,e.config.selector,(function(t){return e._leave(t)}))}})),t(this.element).closest(".modal").on("hide.bs.modal",(function(){e.element&&e.hide()})),this.config.selector?this.config=o({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},r._fixTitle=function(){var e=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==e)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},r._enter=function(e,n){var r=this.constructor.DATA_KEY;(n=n||t(e.currentTarget).data(r))||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(r,n)),e&&(n._activeTrigger["focusin"===e.type?We:Ue]=!0),t(n.getTipElement()).hasClass(He)||n._hoverState===Fe?n._hoverState=Fe:(clearTimeout(n._timeout),n._hoverState=Fe,n.config.delay&&n.config.delay.show?n._timeout=setTimeout((function(){n._hoverState===Fe&&n.show()}),n.config.delay.show):n.show())},r._leave=function(e,n){var r=this.constructor.DATA_KEY;(n=n||t(e.currentTarget).data(r))||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(r,n)),e&&(n._activeTrigger["focusout"===e.type?We:Ue]=!1),n._isWithActiveTrigger()||(clearTimeout(n._timeout),n._hoverState="out",n.config.delay&&n.config.delay.hide?n._timeout=setTimeout((function(){"out"===n._hoverState&&n.hide()}),n.config.delay.hide):n.hide())},r._isWithActiveTrigger=function(){for(var e in this._activeTrigger)if(this._activeTrigger[e])return!0;return!1},r._getConfig=function(e){var n=t(this.element).data();return Object.keys(n).forEach((function(e){-1!==je.indexOf(e)&&delete n[e]})),"number"==typeof(e=o({},this.constructor.Default,n,"object"==typeof e&&e?e:{})).delay&&(e.delay={show:e.delay,hide:e.delay}),"number"==typeof e.title&&(e.title=e.title.toString()),"number"==typeof e.content&&(e.content=e.content.toString()),s.typeCheckConfig(Ae,e,this.constructor.DefaultType),e.sanitize&&(e.template=Oe(e.template,e.whiteList,e.sanitizeFn)),e},r._getDelegateConfig=function(){var e={};if(this.config)for(var t in this.config)this.constructor.Default[t]!==this.config[t]&&(e[t]=this.config[t]);return e},r._cleanTipClass=function(){var e=t(this.getTipElement()),n=e.attr("class").match(Pe);null!==n&&n.length&&e.removeClass(n.join(""))},r._handlePopperPlacementChange=function(e){var t=e.instance;this.tip=t.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(e.placement))},r._fixTransition=function(){var e=this.getTipElement(),n=this.config.animation;null===e.getAttribute("x-placement")&&(t(e).removeClass(Be),this.config.animation=!1,this.hide(),this.show(),this.config.animation=n)},e._jQueryInterface=function(n){return this.each((function(){var r=t(this).data(Ne),i="object"==typeof n&&n;if((r||!/dispose|hide/.test(n))&&(r||(r=new e(this,i),t(this).data(Ne,r)),"string"==typeof n)){if("undefined"==typeof r[n])throw new TypeError('No method named "'+n+'"');r[n]()}}))},i(e,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return qe}},{key:"NAME",get:function(){return Ae}},{key:"DATA_KEY",get:function(){return Ne}},{key:"Event",get:function(){return ze}},{key:"EVENT_KEY",get:function(){return De}},{key:"DefaultType",get:function(){return Ie}}]),e}();t.fn[Ae]=Ve._jQueryInterface,t.fn[Ae].Constructor=Ve,t.fn[Ae].noConflict=function(){return t.fn[Ae]=Le,Ve._jQueryInterface};var $e="popover",Ye="bs.popover",Ge="."+Ye,Ke=t.fn[$e],Xe="bs-popover",Qe=new RegExp("(^|\\s)"+Xe+"\\S+","g"),Je=o({},Ve.Default,{placement:"right",trigger:"click",content:"",template:''}),Ze=o({},Ve.DefaultType,{content:"(string|element|function)"}),et={HIDE:"hide"+Ge,HIDDEN:"hidden"+Ge,SHOW:"show"+Ge,SHOWN:"shown"+Ge,INSERTED:"inserted"+Ge,CLICK:"click"+Ge,FOCUSIN:"focusin"+Ge,FOCUSOUT:"focusout"+Ge,MOUSEENTER:"mouseenter"+Ge,MOUSELEAVE:"mouseleave"+Ge},tt=function(e){var n,r;function o(){return e.apply(this,arguments)||this}r=e,(n=o).prototype=Object.create(r.prototype),(n.prototype.constructor=n).__proto__=r;var a=o.prototype;return a.isWithContent=function(){return this.getTitle()||this._getContent()},a.addAttachmentClass=function(e){t(this.getTipElement()).addClass(Xe+"-"+e)},a.getTipElement=function(){return this.tip=this.tip||t(this.config.template)[0],this.tip},a.setContent=function(){var e=t(this.getTipElement());this.setElementContent(e.find(".popover-header"),this.getTitle());var n=this._getContent();"function"==typeof n&&(n=n.call(this.element)),this.setElementContent(e.find(".popover-body"),n),e.removeClass("fade show")},a._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},a._cleanTipClass=function(){var e=t(this.getTipElement()),n=e.attr("class").match(Qe);null!==n&&0=this._offsets[i]&&("undefined"==typeof this._offsets[i+1]||e li > .active",_t=function(){function e(e){this._element=e}var n=e.prototype;return n.show=function(){var e=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&t(this._element).hasClass(bt)||t(this._element).hasClass("disabled"))){var n,r,i=t(this._element).closest(".nav, .list-group")[0],o=s.getSelectorFromElement(this._element);if(i){var a="UL"===i.nodeName||"OL"===i.nodeName?xt:wt;r=(r=t.makeArray(t(i).find(a)))[r.length-1]}var l=t.Event(yt.HIDE,{relatedTarget:this._element}),u=t.Event(yt.SHOW,{relatedTarget:r});if(r&&t(r).trigger(l),t(this._element).trigger(u),!u.isDefaultPrevented()&&!l.isDefaultPrevented()){o&&(n=document.querySelector(o)),this._activate(this._element,i);var c=function(){var n=t.Event(yt.HIDDEN,{relatedTarget:e._element}),i=t.Event(yt.SHOWN,{relatedTarget:r});t(r).trigger(n),t(e._element).trigger(i)};n?this._activate(n,n.parentNode,c):c()}}},n.dispose=function(){t.removeData(this._element,mt),this._element=null},n._activate=function(e,n,r){var i=this,o=(!n||"UL"!==n.nodeName&&"OL"!==n.nodeName?t(n).children(wt):t(n).find(xt))[0],a=r&&o&&t(o).hasClass("fade"),l=function(){return i._transitionComplete(e,o,r)};if(o&&a){var u=s.getTransitionDurationFromElement(o);t(o).removeClass("show").one(s.TRANSITION_END,l).emulateTransitionEnd(u)}else l()},n._transitionComplete=function(e,n,r){if(n){t(n).removeClass(bt);var i=t(n.parentNode).find("> .dropdown-menu .active")[0];i&&t(i).removeClass(bt),"tab"===n.getAttribute("role")&&n.setAttribute("aria-selected",!1)}if(t(e).addClass(bt),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!0),s.reflow(e),e.classList.contains("fade")&&e.classList.add("show"),e.parentNode&&t(e.parentNode).hasClass("dropdown-menu")){var o=t(e).closest(".dropdown")[0];if(o){var a=[].slice.call(o.querySelectorAll(".dropdown-toggle"));t(a).addClass(bt)}e.setAttribute("aria-expanded",!0)}r&&r()},e._jQueryInterface=function(n){return this.each((function(){var r=t(this),i=r.data(mt);if(i||(i=new e(this),r.data(mt,i)),"string"==typeof n){if("undefined"==typeof i[n])throw new TypeError('No method named "'+n+'"');i[n]()}}))},i(e,null,[{key:"VERSION",get:function(){return"4.3.1"}}]),e}();t(document).on(yt.CLICK_DATA_API,'[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',(function(e){e.preventDefault(),_t._jQueryInterface.call(t(this),"show")})),t.fn.tab=_t._jQueryInterface,t.fn.tab.Constructor=_t,t.fn.tab.noConflict=function(){return t.fn.tab=vt,_t._jQueryInterface};var kt="toast",St="bs.toast",Et="."+St,Tt=t.fn[kt],Ct={CLICK_DISMISS:"click.dismiss"+Et,HIDE:"hide"+Et,HIDDEN:"hidden"+Et,SHOW:"show"+Et,SHOWN:"shown"+Et},Ot="show",At="showing",Nt={animation:"boolean",autohide:"boolean",delay:"number"},Dt={animation:!0,autohide:!0,delay:500},Lt=function(){function e(e,t){this._element=e,this._config=this._getConfig(t),this._timeout=null,this._setListeners()}var n=e.prototype;return n.show=function(){var e=this;t(this._element).trigger(Ct.SHOW),this._config.animation&&this._element.classList.add("fade");var n=function(){e._element.classList.remove(At),e._element.classList.add(Ot),t(e._element).trigger(Ct.SHOWN),e._config.autohide&&e.hide()};if(this._element.classList.remove("hide"),this._element.classList.add(At),this._config.animation){var r=s.getTransitionDurationFromElement(this._element);t(this._element).one(s.TRANSITION_END,n).emulateTransitionEnd(r)}else n()},n.hide=function(e){var n=this;this._element.classList.contains(Ot)&&(t(this._element).trigger(Ct.HIDE),e?this._close():this._timeout=setTimeout((function(){n._close()}),this._config.delay))},n.dispose=function(){clearTimeout(this._timeout),this._timeout=null,this._element.classList.contains(Ot)&&this._element.classList.remove(Ot),t(this._element).off(Ct.CLICK_DISMISS),t.removeData(this._element,St),this._element=null,this._config=null},n._getConfig=function(e){return e=o({},Dt,t(this._element).data(),"object"==typeof e&&e?e:{}),s.typeCheckConfig(kt,e,this.constructor.DefaultType),e},n._setListeners=function(){var e=this;t(this._element).on(Ct.CLICK_DISMISS,'[data-dismiss="toast"]',(function(){return e.hide(!0)}))},n._close=function(){var e=this,n=function(){e._element.classList.add("hide"),t(e._element).trigger(Ct.HIDDEN)};if(this._element.classList.remove(Ot),this._config.animation){var r=s.getTransitionDurationFromElement(this._element);t(this._element).one(s.TRANSITION_END,n).emulateTransitionEnd(r)}else n()},e._jQueryInterface=function(n){return this.each((function(){var r=t(this),i=r.data(St);if(i||(i=new e(this,"object"==typeof n&&n),r.data(St,i)),"string"==typeof n){if("undefined"==typeof i[n])throw new TypeError('No method named "'+n+'"');i[n](this)}}))},i(e,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"DefaultType",get:function(){return Nt}},{key:"Default",get:function(){return Dt}}]),e}();t.fn[kt]=Lt._jQueryInterface,t.fn[kt].Constructor=Lt,t.fn[kt].noConflict=function(){return t.fn[kt]=Tt,Lt._jQueryInterface},function(){if("undefined"==typeof t)throw new TypeError("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");var e=t.fn.jquery.split(" ")[0].split(".");if(e[0]<2&&e[1]<9||1===e[0]&&9===e[1]&&e[2]<1||4<=e[0])throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}(),e.Util=s,e.Alert=p,e.Button=k,e.Carousel=R,e.Collapse=X,e.Dropdown=fe,e.Modal=Se,e.Popover=tt,e.Scrollspy=ht,e.Tab=_t,e.Toast=Lt,e.Tooltip=Ve,Object.defineProperty(e,"__esModule",{value:!0})}(t,n(155),n(156))},function(e,t,n){var r;!function(t,n){"use strict";"object"===typeof e.exports?e.exports=t.document?n(t,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return n(e)}:n(t)}("undefined"!==typeof window?window:this,(function(n,i){"use strict";var o=[],a=Object.getPrototypeOf,s=o.slice,l=o.flat?function(e){return o.flat.call(e)}:function(e){return o.concat.apply([],e)},u=o.push,c=o.indexOf,f={},d=f.toString,p=f.hasOwnProperty,h=p.toString,m=h.call(Object),g={},v=function(e){return"function"===typeof e&&"number"!==typeof e.nodeType},y=function(e){return null!=e&&e===e.window},b=n.document,w={type:!0,src:!0,nonce:!0,noModule:!0};function x(e,t,n){var r,i,o=(n=n||b).createElement("script");if(o.text=e,t)for(r in w)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function _(e){return null==e?e+"":"object"===typeof e||"function"===typeof e?f[d.call(e)]||"object":typeof e}var k=function e(t,n){return new e.fn.init(t,n)};function S(e){var t=!!e&&"length"in e&&e.length,n=_(e);return!v(e)&&!y(e)&&("array"===n||0===t||"number"===typeof t&&t>0&&t-1 in e)}k.fn=k.prototype={jquery:"3.5.1",constructor:k,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=k.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return k.each(this,e)},map:function(e){return this.pushStack(k.map(this,(function(t,n){return e.call(t,n,t)})))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(k.grep(this,(function(e,t){return(t+1)%2})))},odd:function(){return this.pushStack(k.grep(this,(function(e,t){return t%2})))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n+~]|"+R+")"+R+"*"),V=new RegExp(R+"|>"),$=new RegExp(z),Y=new RegExp("^"+q+"$"),G={ID:new RegExp("^#("+q+")"),CLASS:new RegExp("^\\.("+q+")"),TAG:new RegExp("^("+q+"|[*])"),ATTR:new RegExp("^"+F),PSEUDO:new RegExp("^"+z),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+R+"*(even|odd|(([+-]|)(\\d*)n|)"+R+"*(?:([+-]|)"+R+"*(\\d+)|))"+R+"*\\)|)","i"),bool:new RegExp("^(?:"+I+")$","i"),needsContext:new RegExp("^"+R+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+R+"*((?:-\\d)?\\d*)"+R+"*\\)|)(?=[^-]|$)","i")},K=/HTML$/i,X=/^(?:input|select|textarea|button)$/i,Q=/^h\d$/i,J=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+R+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){d()},ae=we((function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()}),{dir:"parentNode",next:"legend"});try{M.apply(N=P.call(x.childNodes),x.childNodes),N[x.childNodes.length].nodeType}catch(Ee){M={apply:N.length?function(e,t){L.apply(e,P.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function se(e,t,r,i){var o,s,u,c,f,h,v,y=t&&t.ownerDocument,x=t?t.nodeType:9;if(r=r||[],"string"!==typeof e||!e||1!==x&&9!==x&&11!==x)return r;if(!i&&(d(t),t=t||p,m)){if(11!==x&&(f=Z.exec(e)))if(o=f[1]){if(9===x){if(!(u=t.getElementById(o)))return r;if(u.id===o)return r.push(u),r}else if(y&&(u=y.getElementById(o))&&b(t,u)&&u.id===o)return r.push(u),r}else{if(f[2])return M.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return M.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!C[e+" "]&&(!g||!g.test(e))&&(1!==x||"object"!==t.nodeName.toLowerCase())){if(v=e,y=t,1===x&&(V.test(e)||W.test(e))){for((y=ee.test(e)&&ve(t.parentNode)||t)===t&&n.scope||((c=t.getAttribute("id"))?c=c.replace(re,ie):t.setAttribute("id",c=w)),s=(h=a(e)).length;s--;)h[s]=(c?"#"+c:":scope")+" "+be(h[s]);v=h.join(",")}try{return M.apply(r,y.querySelectorAll(v)),r}catch(_){C(e,!0)}finally{c===w&&t.removeAttribute("id")}}}return l(e.replace(H,"$1"),t,r,i)}function le(){var e=[];return function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}}function ue(e){return e[w]=!0,e}function ce(e){var t=p.createElement("fieldset");try{return!!e(t)}catch(Ee){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){for(var n=e.split("|"),i=n.length;i--;)r.attrHandle[n[i]]=t}function de(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function pe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function he(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function me(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ae(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function ge(e){return ue((function(t){return t=+t,ue((function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))}))}))}function ve(e){return e&&"undefined"!==typeof e.getElementsByTagName&&e}for(t in n=se.support={},o=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!K.test(t||n&&n.nodeName||"HTML")},d=se.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:x;return a!=p&&9===a.nodeType&&a.documentElement?(h=(p=a).documentElement,m=!o(p),x!=p&&(i=p.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",oe,!1):i.attachEvent&&i.attachEvent("onunload",oe)),n.scope=ce((function(e){return h.appendChild(e).appendChild(p.createElement("div")),"undefined"!==typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length})),n.attributes=ce((function(e){return e.className="i",!e.getAttribute("className")})),n.getElementsByTagName=ce((function(e){return e.appendChild(p.createComment("")),!e.getElementsByTagName("*").length})),n.getElementsByClassName=J.test(p.getElementsByClassName),n.getById=ce((function(e){return h.appendChild(e).id=w,!p.getElementsByName||!p.getElementsByName(w).length})),n.getById?(r.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if("undefined"!==typeof t.getElementById&&m){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(te,ne);return function(e){var n="undefined"!==typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if("undefined"!==typeof t.getElementById&&m){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];for(i=t.getElementsByName(e),r=0;o=i[r++];)if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return"undefined"!==typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if("undefined"!==typeof t.getElementsByClassName&&m)return t.getElementsByClassName(e)},v=[],g=[],(n.qsa=J.test(p.querySelectorAll))&&(ce((function(e){var t;h.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&g.push("[*^$]="+R+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||g.push("\\["+R+"*(?:value|"+I+")"),e.querySelectorAll("[id~="+w+"-]").length||g.push("~="),(t=p.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||g.push("\\["+R+"*name"+R+"*="+R+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||g.push(":checked"),e.querySelectorAll("a#"+w+"+*").length||g.push(".#.+[+~]"),e.querySelectorAll("\\\f"),g.push("[\\r\\n\\f]")})),ce((function(e){e.innerHTML="";var t=p.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&g.push("name"+R+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&g.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")}))),(n.matchesSelector=J.test(y=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ce((function(e){n.disconnectedMatch=y.call(e,"*"),y.call(e,"[s!='']:x"),v.push("!=",z)})),g=g.length&&new RegExp(g.join("|")),v=v.length&&new RegExp(v.join("|")),t=J.test(h.compareDocumentPosition),b=t||J.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},O=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e==p||e.ownerDocument==x&&b(x,e)?-1:t==p||t.ownerDocument==x&&b(x,t)?1:c?j(c,e)-j(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==p?-1:t==p?1:i?-1:o?1:c?j(c,e)-j(c,t):0;if(i===o)return de(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;a[r]===s[r];)r++;return r?de(a[r],s[r]):a[r]==x?-1:s[r]==x?1:0},p):p},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(d(e),n.matchesSelector&&m&&!C[t+" "]&&(!v||!v.test(t))&&(!g||!g.test(t)))try{var r=y.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(Ee){C(t,!0)}return se(t,p,null,[e]).length>0},se.contains=function(e,t){return(e.ownerDocument||e)!=p&&d(e),b(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=p&&d(e);var i=r.attrHandle[t.toLowerCase()],o=i&&A.call(r.attrHandle,t.toLowerCase())?i(e,t,!m):void 0;return void 0!==o?o:n.attributes||!m?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(O),f){for(;t=e[o++];)t===e[o]&&(i=r.push(o));for(;i--;)e.splice(r[i],1)}return c=null,e},i=se.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"===typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[r++];)n+=i(t);return n},(r=se.selectors={cacheLength:50,createPseudo:ue,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&$.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=S[e+" "];return t||(t=new RegExp("(^|"+R+")"+e+"("+R+"|$)"))&&S(e,(function(e){return t.test("string"===typeof e.className&&e.className||"undefined"!==typeof e.getAttribute&&e.getAttribute("class")||"")}))},ATTR:function(e,t,n){return function(r){var i=se.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace(B," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,f,d,p,h,m=o!==a?"nextSibling":"previousSibling",g=t.parentNode,v=s&&t.nodeName.toLowerCase(),y=!l&&!s,b=!1;if(g){if(o){for(;m;){for(d=t;d=d[m];)if(s?d.nodeName.toLowerCase()===v:1===d.nodeType)return!1;h=m="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?g.firstChild:g.lastChild],a&&y){for(b=(p=(u=(c=(f=(d=g)[w]||(d[w]={}))[d.uniqueID]||(f[d.uniqueID]={}))[e]||[])[0]===_&&u[1])&&u[2],d=p&&g.childNodes[p];d=++p&&d&&d[m]||(b=p=0)||h.pop();)if(1===d.nodeType&&++b&&d===t){c[e]=[_,p,b];break}}else if(y&&(b=p=(u=(c=(f=(d=t)[w]||(d[w]={}))[d.uniqueID]||(f[d.uniqueID]={}))[e]||[])[0]===_&&u[1]),!1===b)for(;(d=++p&&d&&d[m]||(b=p=0)||h.pop())&&((s?d.nodeName.toLowerCase()!==v:1!==d.nodeType)||!++b||(y&&((c=(f=d[w]||(d[w]={}))[d.uniqueID]||(f[d.uniqueID]={}))[e]=[_,b]),d!==t)););return(b-=i)===r||b%r===0&&b/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return i[w]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?ue((function(e,n){for(var r,o=i(e,t),a=o.length;a--;)e[r=j(e,o[a])]=!(n[r]=o[a])})):function(e){return i(e,0,n)}):i}},pseudos:{not:ue((function(e){var t=[],n=[],r=s(e.replace(H,"$1"));return r[w]?ue((function(e,t,n,i){for(var o,a=r(e,null,i,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))})):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}})),has:ue((function(e){return function(t){return se(e,t).length>0}})),contains:ue((function(e){return e=e.replace(te,ne),function(t){return(t.textContent||i(t)).indexOf(e)>-1}})),lang:ue((function(e){return Y.test(e||"")||se.error("unsupported lang: "+e),e=e.replace(te,ne).toLowerCase(),function(t){var n;do{if(n=m?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}})),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:me(!1),disabled:me(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Q.test(e.nodeName)},input:function(e){return X.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ge((function(){return[0]})),last:ge((function(e,t){return[t-1]})),eq:ge((function(e,t,n){return[n<0?n+t:n]})),even:ge((function(e,t){for(var n=0;nt?t:n;--r>=0;)e.push(r);return e})),gt:ge((function(e,t,n){for(var r=n<0?n+t:n;++r1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function _e(e,t,n,r,i){for(var o,a=[],s=0,l=e.length,u=null!=t;s-1&&(o[u]=!(a[u]=f))}}else v=_e(v===a?v.splice(h,v.length):v),i?i(null,a,v,l):M.apply(a,v)}))}function Se(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[" "],l=a?1:0,c=we((function(e){return e===t}),s,!0),f=we((function(e){return j(t,e)>-1}),s,!0),d=[function(e,n,r){var i=!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];l1&&xe(d),l>1&&be(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(H,"$1"),n,l0,i=e.length>0,o=function(o,a,s,l,c){var f,h,g,v=0,y="0",b=o&&[],w=[],x=u,k=o||i&&r.find.TAG("*",c),S=_+=null==x?1:Math.random()||.1,E=k.length;for(c&&(u=a==p||a||c);y!==E&&null!=(f=k[y]);y++){if(i&&f){for(h=0,a||f.ownerDocument==p||(d(f),s=!m);g=e[h++];)if(g(f,a||p,s)){l.push(f);break}c&&(_=S)}n&&((f=!g&&f)&&v--,o&&b.push(f))}if(v+=y,n&&y!==v){for(h=0;g=t[h++];)g(b,w,a,s);if(o){if(v>0)for(;y--;)b[y]||w[y]||(w[y]=D.call(l));w=_e(w)}M.apply(l,w),c&&!o&&w.length>0&&v+t.length>1&&se.uniqueSort(l)}return c&&(_=S,u=x),b};return n?ue(o):o}(o,i))).selector=e}return s},l=se.select=function(e,t,n,i){var o,l,u,c,f,d="function"===typeof e&&e,p=!i&&a(e=d.selector||e);if(n=n||[],1===p.length){if((l=p[0]=p[0].slice(0)).length>2&&"ID"===(u=l[0]).type&&9===t.nodeType&&m&&r.relative[l[1].type]){if(!(t=(r.find.ID(u.matches[0].replace(te,ne),t)||[])[0]))return n;d&&(t=t.parentNode),e=e.slice(l.shift().value.length)}for(o=G.needsContext.test(e)?0:l.length;o--&&(u=l[o],!r.relative[c=u.type]);)if((f=r.find[c])&&(i=f(u.matches[0].replace(te,ne),ee.test(l[0].type)&&ve(t.parentNode)||t))){if(l.splice(o,1),!(e=i.length&&be(l)))return M.apply(n,i),n;break}}return(d||s(e,p))(i,t,!m,n,!t||ee.test(e)&&ve(t.parentNode)||t),n},n.sortStable=w.split("").sort(O).join("")===w,n.detectDuplicates=!!f,d(),n.sortDetached=ce((function(e){return 1&e.compareDocumentPosition(p.createElement("fieldset"))})),ce((function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")}))||fe("type|href|height|width",(function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)})),n.attributes&&ce((function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")}))||fe("value",(function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue})),ce((function(e){return null==e.getAttribute("disabled")}))||fe(I,(function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null})),se}(n);k.find=E,(k.expr=E.selectors)[":"]=k.expr.pseudos,k.uniqueSort=k.unique=E.uniqueSort,k.text=E.getText,k.isXMLDoc=E.isXML,k.contains=E.contains,k.escapeSelector=E.escape;var T=function(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r},C=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},O=k.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,t,n){return v(t)?k.grep(e,(function(e,r){return!!t.call(e,r,e)!==n})):t.nodeType?k.grep(e,(function(e){return e===t!==n})):"string"!==typeof t?k.grep(e,(function(e){return c.call(t,e)>-1!==n})):k.filter(t,e,n)}k.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?k.find.matchesSelector(r,e)?[r]:[]:k.find.matches(e,k.grep(t,(function(e){return 1===e.nodeType})))},k.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!==typeof e)return this.pushStack(k(e).filter((function(){for(t=0;t1?k.uniqueSort(n):n},filter:function(e){return this.pushStack(D(this,e||[],!1))},not:function(e){return this.pushStack(D(this,e||[],!0))},is:function(e){return!!D(this,"string"===typeof e&&O.test(e)?k(e):e||[],!1).length}});var L,M=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||L,"string"===typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:M.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:b,!0)),N.test(r[1])&&k.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=b.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,L=k(b);var P=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function I(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter((function(){for(var e=0;e-1:1===n.nodeType&&k.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?k.uniqueSort(o):o)},index:function(e){return e?"string"===typeof e?c.call(k(e),this[0]):c.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(k.uniqueSort(k.merge(this.get(),k(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),k.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return T(e,"parentNode")},parentsUntil:function(e,t,n){return T(e,"parentNode",n)},next:function(e){return I(e,"nextSibling")},prev:function(e){return I(e,"previousSibling")},nextAll:function(e){return T(e,"nextSibling")},prevAll:function(e){return T(e,"previousSibling")},nextUntil:function(e,t,n){return T(e,"nextSibling",n)},prevUntil:function(e,t,n){return T(e,"previousSibling",n)},siblings:function(e){return C((e.parentNode||{}).firstChild,e)},children:function(e){return C(e.firstChild)},contents:function(e){return null!=e.contentDocument&&a(e.contentDocument)?e.contentDocument:(A(e,"template")&&(e=e.content||e),k.merge([],e.childNodes))}},(function(e,t){k.fn[e]=function(n,r){var i=k.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"===typeof r&&(i=k.filter(r,i)),this.length>1&&(j[e]||k.uniqueSort(i),P.test(e)&&i.reverse()),this.pushStack(i)}}));var R=/[^\x20\t\r\n\f]+/g;function q(e){return e}function F(e){throw e}function z(e,t,n,r){var i;try{e&&v(i=e.promise)?i.call(e).done(t).fail(n):e&&v(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}k.Callbacks=function(e){e="string"===typeof e?function(e){var t={};return k.each(e.match(R)||[],(function(e,n){t[n]=!0})),t}(e):k.extend({},e);var t,n,r,i,o=[],a=[],s=-1,l=function(){for(i=i||e.once,r=t=!0;a.length;s=-1)for(n=a.shift();++s-1;)o.splice(n,1),n<=s&&s--})),this},has:function(e){return e?k.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||l()),this},fire:function(){return u.fireWith(this,arguments),this},fired:function(){return!!r}};return u},k.extend({Deferred:function(e){var t=[["notify","progress",k.Callbacks("memory"),k.Callbacks("memory"),2],["resolve","done",k.Callbacks("once memory"),k.Callbacks("once memory"),0,"resolved"],["reject","fail",k.Callbacks("once memory"),k.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},catch:function(e){return i.then(null,e)},pipe:function(){var e=arguments;return k.Deferred((function(n){k.each(t,(function(t,r){var i=v(e[r[4]])&&e[r[4]];o[r[1]]((function(){var e=i&&i.apply(this,arguments);e&&v(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[r[0]+"With"](this,i?[e]:arguments)}))})),e=null})).promise()},then:function(e,r,i){var o=0;function a(e,t,r,i){return function(){var s=this,l=arguments,u=function(){var n,u;if(!(e=o&&(r!==F&&(s=void 0,l=[n]),t.rejectWith(s,l))}};e?c():(k.Deferred.getStackHook&&(c.stackTrace=k.Deferred.getStackHook()),n.setTimeout(c))}}return k.Deferred((function(n){t[0][3].add(a(0,n,v(i)?i:q,n.notifyWith)),t[1][3].add(a(0,n,v(e)?e:q)),t[2][3].add(a(0,n,v(r)?r:F))})).promise()},promise:function(e){return null!=e?k.extend(e,i):i}},o={};return k.each(t,(function(e,n){var a=n[2],s=n[5];i[n[1]]=a.add,s&&a.add((function(){r=s}),t[3-e][2].disable,t[3-e][3].disable,t[0][2].lock,t[0][3].lock),a.add(n[3].fire),o[n[0]]=function(){return o[n[0]+"With"](this===o?void 0:this,arguments),this},o[n[0]+"With"]=a.fireWith})),i.promise(o),e&&e.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=s.call(arguments),o=k.Deferred(),a=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?s.call(arguments):n,--t||o.resolveWith(r,i)}};if(t<=1&&(z(e,o.done(a(n)).resolve,o.reject,!t),"pending"===o.state()||v(i[n]&&i[n].then)))return o.then();for(;n--;)z(i[n],a(n),o.reject);return o.promise()}});var B=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;k.Deferred.exceptionHook=function(e,t){n.console&&n.console.warn&&e&&B.test(e.name)&&n.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},k.readyException=function(e){n.setTimeout((function(){throw e}))};var H=k.Deferred();function U(){b.removeEventListener("DOMContentLoaded",U),n.removeEventListener("load",U),k.ready()}k.fn.ready=function(e){return H.then(e).catch((function(e){k.readyException(e)})),this},k.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--k.readyWait:k.isReady)||(k.isReady=!0,!0!==e&&--k.readyWait>0||H.resolveWith(b,[k]))}}),k.ready.then=H.then,"complete"===b.readyState||"loading"!==b.readyState&&!b.documentElement.doScroll?n.setTimeout(k.ready):(b.addEventListener("DOMContentLoaded",U),n.addEventListener("load",U));var W=function e(t,n,r,i,o,a,s){var l=0,u=t.length,c=null==r;if("object"===_(r))for(l in o=!0,r)e(t,n,l,r[l],!0,a,s);else if(void 0!==i&&(o=!0,v(i)||(s=!0),c&&(s?(n.call(t,i),n=null):(c=n,n=function(e,t,n){return c.call(k(e),n)})),n))for(;l1,null,!0)},removeData:function(e){return this.each((function(){J.remove(this,e)}))}}),k.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Q.get(e,t),n&&(!r||Array.isArray(n)?r=Q.access(e,t,k.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){var n=k.queue(e,t=t||"fx"),r=n.length,i=n.shift(),o=k._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,(function(){k.dequeue(e,t)}),o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Q.get(e,n)||Q.access(e,n,{empty:k.Callbacks("once memory").add((function(){Q.remove(e,[t+"queue",n])}))})}}),k.fn.extend({queue:function(e,t){var n=2;return"string"!==typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]*)/i,me=/^$|^module$|\/(?:java|ecma)script/i;!function(){var e=b.createDocumentFragment().appendChild(b.createElement("div")),t=b.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),g.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="",g.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue,e.innerHTML="",g.option=!!e.lastChild}();var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!==typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!==typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var be=/<|&#?\w+;/;function we(e,t,n,r,i){for(var o,a,s,l,u,c,f=t.createDocumentFragment(),d=[],p=0,h=e.length;p-1)i&&i.push(o);else if(u=ae(o),a=ve(f.appendChild(o),"script"),u&&ye(a),n)for(c=0;o=a[c++];)me.test(o.type||"")&&n.push(o);return f}var xe=/^key/,_e=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ke=/^([^.]*)(?:\.(.+)|)/;function Se(){return!0}function Ee(){return!1}function Te(e,t){return e===function(){try{return b.activeElement}catch(e){}}()===("focus"===t)}function Ce(e,t,n,r,i,o){var a,s;if("object"===typeof t){for(s in"string"!==typeof n&&(r=r||n,n=void 0),t)Ce(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"===typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Ee;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each((function(){k.event.add(this,t,i,r,n)}))}function Oe(e,t,n){n?(Q.set(e,t,!1),k.event.add(e,t,{namespace:!1,handler:function(e){var r,i,o=Q.get(this,t);if(1&e.isTrigger&&this[t]){if(o.length)(k.event.special[t]||{}).delegateType&&e.stopPropagation();else if(o=s.call(arguments),Q.set(this,t,o),r=n(this,t),this[t](),o!==(i=Q.get(this,t))||r?Q.set(this,t,!1):i={},o!==i)return e.stopImmediatePropagation(),e.preventDefault(),i.value}else o.length&&(Q.set(this,t,{value:k.event.trigger(k.extend(o[0],k.Event.prototype),o.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,t)&&k.event.add(e,t,Se)}k.event={global:{},add:function(e,t,n,r,i){var o,a,s,l,u,c,f,d,p,h,m,g=Q.get(e);if(K(e))for(n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(oe,i),n.guid||(n.guid=k.guid++),(l=g.events)||(l=g.events=Object.create(null)),(a=g.handle)||(a=g.handle=function(t){return k.event.triggered!==t.type?k.event.dispatch.apply(e,arguments):void 0}),u=(t=(t||"").match(R)||[""]).length;u--;)p=m=(s=ke.exec(t[u])||[])[1],h=(s[2]||"").split(".").sort(),p&&(f=k.event.special[p]||{},p=(i?f.delegateType:f.bindType)||p,f=k.event.special[p]||{},c=k.extend({type:p,origType:m,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(d=l[p])||((d=l[p]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(p,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?d.splice(d.delegateCount++,0,c):d.push(c),k.event.global[p]=!0)},remove:function(e,t,n,r,i){var o,a,s,l,u,c,f,d,p,h,m,g=Q.hasData(e)&&Q.get(e);if(g&&(l=g.events)){for(u=(t=(t||"").match(R)||[""]).length;u--;)if(p=m=(s=ke.exec(t[u])||[])[1],h=(s[2]||"").split(".").sort(),p){for(f=k.event.special[p]||{},d=l[p=(r?f.delegateType:f.bindType)||p]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=d.length;o--;)c=d[o],!i&&m!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(d.splice(o,1),c.selector&&d.delegateCount--,f.remove&&f.remove.call(e,c));a&&!d.length&&(f.teardown&&!1!==f.teardown.call(e,h,g.handle)||k.removeEvent(e,p,g.handle),delete l[p])}else for(p in l)k.event.remove(e,p+t[u],n,r,!0);k.isEmptyObject(l)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),l=k.event.fix(e),u=(Q.get(this,"events")||Object.create(null))[l.type]||[],c=k.event.special[l.type]||{};for(s[0]=l,t=1;t=1))for(;u!==this;u=u.parentNode||this)if(1===u.nodeType&&("click"!==e.type||!0!==u.disabled)){for(o=[],a={},n=0;n-1:k.find(i,this,null,[u]).length),a[i]&&o.push(r);o.length&&s.push({elem:u,handlers:o})}return u=this,l\s*$/g;function Le(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Me(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Pe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function je(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Q.hasData(e)&&(s=Q.get(e).events))for(i in Q.remove(t,"handle events"),s)for(n=0,r=s[i].length;n1&&"string"===typeof h&&!g.checkClone&&Ne.test(h))return e.each((function(i){var o=e.eq(i);m&&(t[0]=h.call(this,i,o.html())),Re(o,t,n,r)}));if(d&&(o=(i=we(t,e[0].ownerDocument,!1,e,r)).firstChild,1===i.childNodes.length&&(i=o),o||r)){for(s=(a=k.map(ve(i,"script"),Me)).length;f0&&ye(a,!l&&ve(e,"script")),s},cleanData:function(e){for(var t,n,r,i=k.event.special,o=0;void 0!==(n=e[o]);o++)if(K(n)){if(t=n[Q.expando]){if(t.events)for(r in t.events)i[r]?k.event.remove(n,r):k.removeEvent(n,r,t.handle);n[Q.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),k.fn.extend({detach:function(e){return qe(this,e,!0)},remove:function(e){return qe(this,e)},text:function(e){return W(this,(function(e){return void 0===e?k.text(this):this.empty().each((function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)}))}),null,e,arguments.length)},append:function(){return Re(this,arguments,(function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)}))},prepend:function(){return Re(this,arguments,(function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}}))},before:function(){return Re(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this)}))},after:function(){return Re(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)}))},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(k.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map((function(){return k.clone(this,e,t)}))},html:function(e){return W(this,(function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"===typeof e&&!Ae.test(e)&&!ge[(he.exec(e)||["",""])[1].toLowerCase()]){e=k.htmlPrefilter(e);try{for(;n3,oe.removeChild(e)),s}}))}();var Ve=["Webkit","Moz","ms"],$e=b.createElement("div").style,Ye={};function Ge(e){var t=k.cssProps[e]||Ye[e];return t||(e in $e?e:Ye[e]=function(e){for(var t=e[0].toUpperCase()+e.slice(1),n=Ve.length;n--;)if((e=Ve[n]+t)in $e)return e}(e)||e)}var Ke=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Qe={position:"absolute",visibility:"hidden",display:"block"},Je={letterSpacing:"0",fontWeight:"400"};function Ze(e,t,n){var r=re.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function et(e,t,n,r,i,o){var a="width"===t?1:0,s=0,l=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(l+=k.css(e,n+ie[a],!0,i)),r?("content"===n&&(l-=k.css(e,"padding"+ie[a],!0,i)),"margin"!==n&&(l-=k.css(e,"border"+ie[a]+"Width",!0,i))):(l+=k.css(e,"padding"+ie[a],!0,i),"padding"!==n?l+=k.css(e,"border"+ie[a]+"Width",!0,i):s+=k.css(e,"border"+ie[a]+"Width",!0,i));return!r&&o>=0&&(l+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-l-s-.5))||0),l}function tt(e,t,n){var r=ze(e),i=(!g.boxSizingReliable()||n)&&"border-box"===k.css(e,"boxSizing",!1,r),o=i,a=Ue(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Fe.test(a)){if(!n)return a;a="auto"}return(!g.boxSizingReliable()&&i||!g.reliableTrDimensions()&&A(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===k.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===k.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+et(e,t,n||(i?"border":"content"),o,r,a)+"px"}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}k.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Ue(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=G(t),l=Xe.test(t),u=e.style;if(l||(t=Ge(s)),a=k.cssHooks[t]||k.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:u[t];"string"===(o=typeof n)&&(i=re.exec(n))&&i[1]&&(n=ue(e,t,i),o="number"),null!=n&&n===n&&("number"!==o||l||(n+=i&&i[3]||(k.cssNumber[s]?"":"px")),g.clearCloneStyle||""!==n||0!==t.indexOf("background")||(u[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(l?u.setProperty(t,n):u[t]=n))}},css:function(e,t,n,r){var i,o,a,s=G(t);return Xe.test(t)||(t=Ge(s)),(a=k.cssHooks[t]||k.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Ue(e,t,r)),"normal"===i&&t in Je&&(i=Je[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),k.each(["height","width"],(function(e,t){k.cssHooks[t]={get:function(e,n,r){if(n)return!Ke.test(k.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,t,r):Be(e,Qe,(function(){return tt(e,t,r)}))},set:function(e,n,r){var i,o=ze(e),a=!g.scrollboxSize()&&"absolute"===o.position,s=(a||r)&&"border-box"===k.css(e,"boxSizing",!1,o),l=r?et(e,t,r,s,o):0;return s&&a&&(l-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-et(e,t,"border",!1,o)-.5)),l&&(i=re.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=k.css(e,t)),Ze(0,n,l)}}})),k.cssHooks.marginLeft=We(g.reliableMarginLeft,(function(e,t){if(t)return(parseFloat(Ue(e,"marginLeft"))||e.getBoundingClientRect().left-Be(e,{marginLeft:0},(function(){return e.getBoundingClientRect().left})))+"px"})),k.each({margin:"",padding:"",border:"Width"},(function(e,t){k.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"===typeof n?n.split(" "):[n];r<4;r++)i[e+ie[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(k.cssHooks[e+t].set=Ze)})),k.fn.extend({css:function(e,t){return W(this,(function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=ze(e),i=t.length;a1)}}),k.Tween=nt,nt.prototype={constructor:nt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||k.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(k.cssNumber[n]?"":"px")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=k.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):nt.propHooks._default.set(this),this}},nt.prototype.init.prototype=nt.prototype,nt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=k.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){k.fx.step[e.prop]?k.fx.step[e.prop](e):1!==e.elem.nodeType||!k.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:k.style(e.elem,e.prop,e.now+e.unit)}}},nt.propHooks.scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},k.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},(k.fx=nt.prototype.init).step={};var rt,it,ot=/^(?:toggle|show|hide)$/,at=/queueHooks$/;function st(){it&&(!1===b.hidden&&n.requestAnimationFrame?n.requestAnimationFrame(st):n.setTimeout(st,k.fx.interval),k.fx.tick())}function lt(){return n.setTimeout((function(){rt=void 0})),rt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=ie[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function ct(e,t,n){for(var r,i=(ft.tweeners[t]||[]).concat(ft.tweeners["*"]),o=0,a=i.length;o1)},removeAttr:function(e){return this.each((function(){k.removeAttr(this,e)}))}}),k.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"===typeof e.getAttribute?k.prop(e,t,n):(1===o&&k.isXMLDoc(e)||(i=k.attrHooks[t.toLowerCase()]||(k.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void k.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=k.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!g.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(R);if(i&&1===e.nodeType)for(;n=i[r++];)e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?k.removeAttr(e,n):e.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\w+/g),(function(e,t){var n=pt[t]||k.find.attr;pt[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=pt[a],pt[a]=i,i=null!=n(e,t,r)?a:null,pt[a]=o),i}}));var ht=/^(?:input|select|textarea|button)$/i,mt=/^(?:a|area)$/i;function gt(e){return(e.match(R)||[]).join(" ")}function vt(e){return e.getAttribute&&e.getAttribute("class")||""}function yt(e){return Array.isArray(e)?e:"string"===typeof e&&e.match(R)||[]}k.fn.extend({prop:function(e,t){return W(this,k.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each((function(){delete this[k.propFix[e]||e]}))}}),k.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&k.isXMLDoc(e)||(t=k.propFix[t]||t,i=k.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=k.find.attr(e,"tabindex");return t?parseInt(t,10):ht.test(e.nodeName)||mt.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),g.optSelected||(k.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),k.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],(function(){k.propFix[this.toLowerCase()]=this})),k.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,l=0;if(v(e))return this.each((function(t){k(this).addClass(e.call(this,t,vt(this)))}));if((t=yt(e)).length)for(;n=this[l++];)if(i=vt(n),r=1===n.nodeType&&" "+gt(i)+" "){for(a=0;o=t[a++];)r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=gt(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,l=0;if(v(e))return this.each((function(t){k(this).removeClass(e.call(this,t,vt(this)))}));if(!arguments.length)return this.attr("class","");if((t=yt(e)).length)for(;n=this[l++];)if(i=vt(n),r=1===n.nodeType&&" "+gt(i)+" "){for(a=0;o=t[a++];)for(;r.indexOf(" "+o+" ")>-1;)r=r.replace(" "+o+" "," ");i!==(s=gt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"===typeof t&&r?t?this.addClass(e):this.removeClass(e):v(e)?this.each((function(n){k(this).toggleClass(e.call(this,n,vt(this),t),t)})):this.each((function(){var t,i,o,a;if(r)for(i=0,o=k(this),a=yt(e);t=a[i++];)o.hasClass(t)?o.removeClass(t):o.addClass(t);else void 0!==e&&"boolean"!==n||((t=vt(this))&&Q.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":Q.get(this,"__className__")||""))}))},hasClass:function(e){var t,n,r=0;for(t=" "+e+" ";n=this[r++];)if(1===n.nodeType&&(" "+gt(vt(n))+" ").indexOf(t)>-1)return!0;return!1}});var bt=/\r/g;k.fn.extend({val:function(e){var t,n,r,i=this[0];return arguments.length?(r=v(e),this.each((function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,k(this).val()):e)?i="":"number"===typeof i?i+="":Array.isArray(i)&&(i=k.map(i,(function(e){return null==e?"":e+""}))),(t=k.valHooks[this.type]||k.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))}))):i?(t=k.valHooks[i.type]||k.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"===typeof(n=i.value)?n.replace(bt,""):null==n?"":n:void 0}}),k.extend({valHooks:{option:{get:function(e){var t=k.find.attr(e,"value");return null!=t?t:gt(k.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],l=a?o+1:i.length;for(r=o<0?l:a?o:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),k.each(["radio","checkbox"],(function(){k.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=k.inArray(k(e).val(),t)>-1}},g.checkOn||(k.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})})),g.focusin="onfocusin"in n;var wt=/^(?:focusinfocus|focusoutblur)$/,xt=function(e){e.stopPropagation()};k.extend(k.event,{trigger:function(e,t,r,i){var o,a,s,l,u,c,f,d,h=[r||b],m=p.call(e,"type")?e.type:e,g=p.call(e,"namespace")?e.namespace.split("."):[];if(a=d=s=r=r||b,3!==r.nodeType&&8!==r.nodeType&&!wt.test(m+k.event.triggered)&&(m.indexOf(".")>-1&&(g=m.split("."),m=g.shift(),g.sort()),u=m.indexOf(":")<0&&"on"+m,(e=e[k.expando]?e:new k.Event(m,"object"===typeof e&&e)).isTrigger=i?2:3,e.namespace=g.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+g.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=r),t=null==t?[e]:k.makeArray(t,[e]),f=k.event.special[m]||{},i||!f.trigger||!1!==f.trigger.apply(r,t))){if(!i&&!f.noBubble&&!y(r)){for(l=f.delegateType||m,wt.test(l+m)||(a=a.parentNode);a;a=a.parentNode)h.push(a),s=a;s===(r.ownerDocument||b)&&h.push(s.defaultView||s.parentWindow||n)}for(o=0;(a=h[o++])&&!e.isPropagationStopped();)d=a,e.type=o>1?l:f.bindType||m,(c=(Q.get(a,"events")||Object.create(null))[e.type]&&Q.get(a,"handle"))&&c.apply(a,t),(c=u&&a[u])&&c.apply&&K(a)&&(e.result=c.apply(a,t),!1===e.result&&e.preventDefault());return e.type=m,i||e.isDefaultPrevented()||f._default&&!1!==f._default.apply(h.pop(),t)||!K(r)||u&&v(r[m])&&!y(r)&&((s=r[u])&&(r[u]=null),k.event.triggered=m,e.isPropagationStopped()&&d.addEventListener(m,xt),r[m](),e.isPropagationStopped()&&d.removeEventListener(m,xt),k.event.triggered=void 0,s&&(r[u]=s)),e.result}},simulate:function(e,t,n){var r=k.extend(new k.Event,n,{type:e,isSimulated:!0});k.event.trigger(r,null,t)}}),k.fn.extend({trigger:function(e,t){return this.each((function(){k.event.trigger(e,t,this)}))},triggerHandler:function(e,t){var n=this[0];if(n)return k.event.trigger(e,t,n,!0)}}),g.focusin||k.each({focus:"focusin",blur:"focusout"},(function(e,t){var n=function(e){k.event.simulate(t,e.target,k.event.fix(e))};k.event.special[t]={setup:function(){var r=this.ownerDocument||this.document||this,i=Q.access(r,t);i||r.addEventListener(e,n,!0),Q.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this.document||this,i=Q.access(r,t)-1;i?Q.access(r,t,i):(r.removeEventListener(e,n,!0),Q.remove(r,t))}}}));var _t=n.location,kt={guid:Date.now()},St=/\?/;k.parseXML=function(e){var t;if(!e||"string"!==typeof e)return null;try{t=(new n.DOMParser).parseFromString(e,"text/xml")}catch(r){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||k.error("Invalid XML: "+e),t};var Et=/\[\]$/,Tt=/\r?\n/g,Ct=/^(?:submit|button|image|reset|file)$/i,Ot=/^(?:input|select|textarea|keygen)/i;function At(e,t,n,r){var i;if(Array.isArray(t))k.each(t,(function(t,i){n||Et.test(e)?r(e,i):At(e+"["+("object"===typeof i&&null!=i?t:"")+"]",i,n,r)}));else if(n||"object"!==_(t))r(e,t);else for(i in t)At(e+"["+i+"]",t[i],n,r)}k.param=function(e,t){var n,r=[],i=function(e,t){var n=v(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!k.isPlainObject(e))k.each(e,(function(){i(this.name,this.value)}));else for(n in e)At(n,e[n],t,i);return r.join("&")},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map((function(){var e=k.prop(this,"elements");return e?k.makeArray(e):this})).filter((function(){var e=this.type;return this.name&&!k(this).is(":disabled")&&Ot.test(this.nodeName)&&!Ct.test(e)&&(this.checked||!pe.test(e))})).map((function(e,t){var n=k(this).val();return null==n?null:Array.isArray(n)?k.map(n,(function(e){return{name:t.name,value:e.replace(Tt,"\r\n")}})):{name:t.name,value:n.replace(Tt,"\r\n")}})).get()}});var Nt=/%20/g,Dt=/#.*$/,Lt=/([?&])_=[^&]*/,Mt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Pt=/^(?:GET|HEAD)$/,jt=/^\/\//,It={},Rt={},qt="*/".concat("*"),Ft=b.createElement("a");function zt(e){return function(t,n){"string"!==typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(R)||[];if(v(n))for(;r=o[i++];)"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function Bt(e,t,n,r){var i={},o=e===Rt;function a(s){var l;return i[s]=!0,k.each(e[s]||[],(function(e,s){var u=s(t,n,r);return"string"!==typeof u||o||i[u]?o?!(l=u):void 0:(t.dataTypes.unshift(u),a(u),!1)})),l}return a(t.dataTypes[0])||!i["*"]&&a("*")}function Ht(e,t){var n,r,i=k.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&k.extend(!0,e,r),e}Ft.href=_t.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:_t.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(_t.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":qt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Ht(Ht(e,k.ajaxSettings),t):Ht(k.ajaxSettings,e)},ajaxPrefilter:zt(It),ajaxTransport:zt(Rt),ajax:function(e,t){"object"===typeof e&&(t=e,e=void 0);var r,i,o,a,s,l,u,c,f,d,p=k.ajaxSetup({},t=t||{}),h=p.context||p,m=p.context&&(h.nodeType||h.jquery)?k(h):k.event,g=k.Deferred(),v=k.Callbacks("once memory"),y=p.statusCode||{},w={},x={},_="canceled",S={readyState:0,getResponseHeader:function(e){var t;if(u){if(!a)for(a={};t=Mt.exec(o);)a[t[1].toLowerCase()+" "]=(a[t[1].toLowerCase()+" "]||[]).concat(t[2]);t=a[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return u?o:null},setRequestHeader:function(e,t){return null==u&&(e=x[e.toLowerCase()]=x[e.toLowerCase()]||e,w[e]=t),this},overrideMimeType:function(e){return null==u&&(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(u)S.always(e[S.status]);else for(t in e)y[t]=[y[t],e[t]];return this},abort:function(e){var t=e||_;return r&&r.abort(t),E(0,t),this}};if(g.promise(S),p.url=((e||p.url||_t.href)+"").replace(jt,_t.protocol+"//"),p.type=t.method||t.type||p.method||p.type,p.dataTypes=(p.dataType||"*").toLowerCase().match(R)||[""],null==p.crossDomain){l=b.createElement("a");try{l.href=p.url,l.href=l.href,p.crossDomain=Ft.protocol+"//"+Ft.host!==l.protocol+"//"+l.host}catch(T){p.crossDomain=!0}}if(p.data&&p.processData&&"string"!==typeof p.data&&(p.data=k.param(p.data,p.traditional)),Bt(It,p,t,S),u)return S;for(f in(c=k.event&&p.global)&&0===k.active++&&k.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Pt.test(p.type),i=p.url.replace(Dt,""),p.hasContent?p.data&&p.processData&&0===(p.contentType||"").indexOf("application/x-www-form-urlencoded")&&(p.data=p.data.replace(Nt,"+")):(d=p.url.slice(i.length),p.data&&(p.processData||"string"===typeof p.data)&&(i+=(St.test(i)?"&":"?")+p.data,delete p.data),!1===p.cache&&(i=i.replace(Lt,"$1"),d=(St.test(i)?"&":"?")+"_="+kt.guid+++d),p.url=i+d),p.ifModified&&(k.lastModified[i]&&S.setRequestHeader("If-Modified-Since",k.lastModified[i]),k.etag[i]&&S.setRequestHeader("If-None-Match",k.etag[i])),(p.data&&p.hasContent&&!1!==p.contentType||t.contentType)&&S.setRequestHeader("Content-Type",p.contentType),S.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+qt+"; q=0.01":""):p.accepts["*"]),p.headers)S.setRequestHeader(f,p.headers[f]);if(p.beforeSend&&(!1===p.beforeSend.call(h,S,p)||u))return S.abort();if(_="abort",v.add(p.complete),S.done(p.success),S.fail(p.error),r=Bt(Rt,p,t,S)){if(S.readyState=1,c&&m.trigger("ajaxSend",[S,p]),u)return S;p.async&&p.timeout>0&&(s=n.setTimeout((function(){S.abort("timeout")}),p.timeout));try{u=!1,r.send(w,E)}catch(T){if(u)throw T;E(-1,T)}}else E(-1,"No Transport");function E(e,t,a,l){var f,d,b,w,x,_=t;u||(u=!0,s&&n.clearTimeout(s),r=void 0,o=l||"",S.readyState=e>0?4:0,f=e>=200&&e<300||304===e,a&&(w=function(e,t,n){for(var r,i,o,a,s=e.contents,l=e.dataTypes;"*"===l[0];)l.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){l.unshift(i);break}if(l[0]in n)o=l[0];else{for(i in n){if(!l[0]||e.converters[i+" "+l[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==l[0]&&l.unshift(o),n[o]}(p,S,a)),!f&&k.inArray("script",p.dataTypes)>-1&&(p.converters["text script"]=function(){}),w=function(e,t,n,r){var i,o,a,s,l,u={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)u[a.toLowerCase()]=e.converters[a];for(o=c.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=c.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(!(a=u[l+" "+o]||u["* "+o]))for(i in u)if((s=i.split(" "))[1]===o&&(a=u[l+" "+s[0]]||u["* "+s[0]])){!0===a?a=u[i]:!0!==u[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e.throws)t=a(t);else try{t=a(t)}catch(T){return{state:"parsererror",error:a?T:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}(p,w,S,f),f?(p.ifModified&&((x=S.getResponseHeader("Last-Modified"))&&(k.lastModified[i]=x),(x=S.getResponseHeader("etag"))&&(k.etag[i]=x)),204===e||"HEAD"===p.type?_="nocontent":304===e?_="notmodified":(_=w.state,d=w.data,f=!(b=w.error))):(b=_,!e&&_||(_="error",e<0&&(e=0))),S.status=e,S.statusText=(t||_)+"",f?g.resolveWith(h,[d,_,S]):g.rejectWith(h,[S,_,b]),S.statusCode(y),y=void 0,c&&m.trigger(f?"ajaxSuccess":"ajaxError",[S,p,f?d:b]),v.fireWith(h,[S,_]),c&&(m.trigger("ajaxComplete",[S,p]),--k.active||k.event.trigger("ajaxStop")))}return S},getJSON:function(e,t,n){return k.get(e,t,n,"json")},getScript:function(e,t){return k.get(e,void 0,t,"script")}}),k.each(["get","post"],(function(e,t){k[t]=function(e,n,r,i){return v(n)&&(i=i||r,r=n,n=void 0),k.ajax(k.extend({url:e,type:t,dataType:i,data:n,success:r},k.isPlainObject(e)&&e))}})),k.ajaxPrefilter((function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")})),k._evalUrl=function(e,t,n){return k.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){k.globalEval(e,t,n)}})},k.fn.extend({wrapAll:function(e){var t;return this[0]&&(v(e)&&(e=e.call(this[0])),t=k(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map((function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e})).append(this)),this},wrapInner:function(e){return v(e)?this.each((function(t){k(this).wrapInner(e.call(this,t))})):this.each((function(){var t=k(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)}))},wrap:function(e){var t=v(e);return this.each((function(n){k(this).wrapAll(t?e.call(this,n):e)}))},unwrap:function(e){return this.parent(e).not("body").each((function(){k(this).replaceWith(this.childNodes)})),this}}),k.expr.pseudos.hidden=function(e){return!k.expr.pseudos.visible(e)},k.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},k.ajaxSettings.xhr=function(){try{return new n.XMLHttpRequest}catch(e){}};var Ut={0:200,1223:204},Wt=k.ajaxSettings.xhr();g.cors=!!Wt&&"withCredentials"in Wt,g.ajax=Wt=!!Wt,k.ajaxTransport((function(e){var t,r;if(g.cors||Wt&&!e.crossDomain)return{send:function(i,o){var a,s=e.xhr();if(s.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(a in e.xhrFields)s[a]=e.xhrFields[a];for(a in e.mimeType&&s.overrideMimeType&&s.overrideMimeType(e.mimeType),e.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest"),i)s.setRequestHeader(a,i[a]);t=function(e){return function(){t&&(t=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!==typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Ut[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!==typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=t(),r=s.onerror=s.ontimeout=t("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&n.setTimeout((function(){t&&r()}))},t=t("abort");try{s.send(e.hasContent&&e.data||null)}catch(l){if(t)throw l}},abort:function(){t&&t()}}})),k.ajaxPrefilter((function(e){e.crossDomain&&(e.contents.script=!1)})),k.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return k.globalEval(e),e}}}),k.ajaxPrefilter("script",(function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")})),k.ajaxTransport("script",(function(e){var t,n;if(e.crossDomain||e.scriptAttrs)return{send:function(r,i){t=k("\n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'true') return true;\n return val;\n}\n\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n var attrs = [['data-family-prefix', 'familyPrefix'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];\n attrs.forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n attr = _ref2[0],\n key = _ref2[1];\n\n var val = coerce(getAttrConfig(attr));\n\n if (val !== undefined && val !== null) {\n initial[key] = val;\n }\n });\n}\n\nvar _default = {\n familyPrefix: DEFAULT_FAMILY_PREFIX,\n replacementClass: DEFAULT_REPLACEMENT_CLASS,\n autoReplaceSvg: true,\n autoAddCss: true,\n autoA11y: true,\n searchPseudoElements: false,\n observeMutations: true,\n mutateApproach: 'async',\n keepOriginalSource: true,\n measurePerformance: false,\n showMissingIcons: true\n};\n\nvar _config = _objectSpread({}, _default, initial);\n\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\n\nvar config = _objectSpread({}, _config);\n\nWINDOW.FontAwesomeConfig = config;\n\nvar w = WINDOW || {};\nif (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};\nif (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};\nif (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];\nvar namespace = w[NAMESPACE_IDENTIFIER];\n\nvar functions = [];\n\nvar listener = function listener() {\n DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n loaded = 1;\n functions.map(function (fn) {\n return fn();\n });\n};\n\nvar loaded = false;\n\nif (IS_DOM) {\n loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\n\nfunction domready (fn) {\n if (!IS_DOM) return;\n loaded ? setTimeout(fn, 0) : functions.push(fn);\n}\n\nvar PENDING = 'pending';\nvar SETTLED = 'settled';\nvar FULFILLED = 'fulfilled';\nvar REJECTED = 'rejected';\n\nvar NOOP = function NOOP() {};\n\nvar isNode = typeof global !== 'undefined' && typeof global.process !== 'undefined' && typeof global.process.emit === 'function';\nvar asyncSetTimer = typeof setImmediate === 'undefined' ? setTimeout : setImmediate;\nvar asyncQueue = [];\nvar asyncTimer;\n\nfunction asyncFlush() {\n // run promise callbacks\n for (var i = 0; i < asyncQueue.length; i++) {\n asyncQueue[i][0](asyncQueue[i][1]);\n } // reset async asyncQueue\n\n\n asyncQueue = [];\n asyncTimer = false;\n}\n\nfunction asyncCall(callback, arg) {\n asyncQueue.push([callback, arg]);\n\n if (!asyncTimer) {\n asyncTimer = true;\n asyncSetTimer(asyncFlush, 0);\n }\n}\n\nfunction invokeResolver(resolver, promise) {\n function resolvePromise(value) {\n resolve(promise, value);\n }\n\n function rejectPromise(reason) {\n reject(promise, reason);\n }\n\n try {\n resolver(resolvePromise, rejectPromise);\n } catch (e) {\n rejectPromise(e);\n }\n}\n\nfunction invokeCallback(subscriber) {\n var owner = subscriber.owner;\n var settled = owner._state;\n var value = owner._data;\n var callback = subscriber[settled];\n var promise = subscriber.then;\n\n if (typeof callback === 'function') {\n settled = FULFILLED;\n\n try {\n value = callback(value);\n } catch (e) {\n reject(promise, e);\n }\n }\n\n if (!handleThenable(promise, value)) {\n if (settled === FULFILLED) {\n resolve(promise, value);\n }\n\n if (settled === REJECTED) {\n reject(promise, value);\n }\n }\n}\n\nfunction handleThenable(promise, value) {\n var resolved;\n\n try {\n if (promise === value) {\n throw new TypeError('A promises callback cannot return that same promise.');\n }\n\n if (value && (typeof value === 'function' || _typeof(value) === 'object')) {\n // then should be retrieved only once\n var then = value.then;\n\n if (typeof then === 'function') {\n then.call(value, function (val) {\n if (!resolved) {\n resolved = true;\n\n if (value === val) {\n fulfill(promise, val);\n } else {\n resolve(promise, val);\n }\n }\n }, function (reason) {\n if (!resolved) {\n resolved = true;\n reject(promise, reason);\n }\n });\n return true;\n }\n }\n } catch (e) {\n if (!resolved) {\n reject(promise, e);\n }\n\n return true;\n }\n\n return false;\n}\n\nfunction resolve(promise, value) {\n if (promise === value || !handleThenable(promise, value)) {\n fulfill(promise, value);\n }\n}\n\nfunction fulfill(promise, value) {\n if (promise._state === PENDING) {\n promise._state = SETTLED;\n promise._data = value;\n asyncCall(publishFulfillment, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state === PENDING) {\n promise._state = SETTLED;\n promise._data = reason;\n asyncCall(publishRejection, promise);\n }\n}\n\nfunction publish(promise) {\n promise._then = promise._then.forEach(invokeCallback);\n}\n\nfunction publishFulfillment(promise) {\n promise._state = FULFILLED;\n publish(promise);\n}\n\nfunction publishRejection(promise) {\n promise._state = REJECTED;\n publish(promise);\n\n if (!promise._handled && isNode) {\n global.process.emit('unhandledRejection', promise._data, promise);\n }\n}\n\nfunction notifyRejectionHandled(promise) {\n global.process.emit('rejectionHandled', promise);\n}\n/**\n * @class\n */\n\n\nfunction P(resolver) {\n if (typeof resolver !== 'function') {\n throw new TypeError('Promise resolver ' + resolver + ' is not a function');\n }\n\n if (this instanceof P === false) {\n throw new TypeError('Failed to construct \\'Promise\\': Please use the \\'new\\' operator, this object constructor cannot be called as a function.');\n }\n\n this._then = [];\n invokeResolver(resolver, this);\n}\n\nP.prototype = {\n constructor: P,\n _state: PENDING,\n _then: null,\n _data: undefined,\n _handled: false,\n then: function then(onFulfillment, onRejection) {\n var subscriber = {\n owner: this,\n then: new this.constructor(NOOP),\n fulfilled: onFulfillment,\n rejected: onRejection\n };\n\n if ((onRejection || onFulfillment) && !this._handled) {\n this._handled = true;\n\n if (this._state === REJECTED && isNode) {\n asyncCall(notifyRejectionHandled, this);\n }\n }\n\n if (this._state === FULFILLED || this._state === REJECTED) {\n // already resolved, call callback async\n asyncCall(invokeCallback, subscriber);\n } else {\n // subscribe\n this._then.push(subscriber);\n }\n\n return subscriber.then;\n },\n catch: function _catch(onRejection) {\n return this.then(null, onRejection);\n }\n};\n\nP.all = function (promises) {\n if (!Array.isArray(promises)) {\n throw new TypeError('You must pass an array to Promise.all().');\n }\n\n return new P(function (resolve, reject) {\n var results = [];\n var remaining = 0;\n\n function resolver(index) {\n remaining++;\n return function (value) {\n results[index] = value;\n\n if (! --remaining) {\n resolve(results);\n }\n };\n }\n\n for (var i = 0, promise; i < promises.length; i++) {\n promise = promises[i];\n\n if (promise && typeof promise.then === 'function') {\n promise.then(resolver(i), reject);\n } else {\n results[i] = promise;\n }\n }\n\n if (!remaining) {\n resolve(results);\n }\n });\n};\n\nP.race = function (promises) {\n if (!Array.isArray(promises)) {\n throw new TypeError('You must pass an array to Promise.race().');\n }\n\n return new P(function (resolve, reject) {\n for (var i = 0, promise; i < promises.length; i++) {\n promise = promises[i];\n\n if (promise && typeof promise.then === 'function') {\n promise.then(resolve, reject);\n } else {\n resolve(promise);\n }\n }\n });\n};\n\nP.resolve = function (value) {\n if (value && _typeof(value) === 'object' && value.constructor === P) {\n return value;\n }\n\n return new P(function (resolve) {\n resolve(value);\n });\n};\n\nP.reject = function (reason) {\n return new P(function (resolve, reject) {\n reject(reason);\n });\n};\n\nvar picked = typeof Promise === 'function' ? Promise : P;\n\nvar d = UNITS_IN_GRID;\nvar meaninglessTransform = {\n size: 16,\n x: 0,\n y: 0,\n rotate: 0,\n flipX: false,\n flipY: false\n};\n\nfunction isReserved(name) {\n return ~RESERVED_CLASSES.indexOf(name);\n}\nfunction insertCss(css) {\n if (!css || !IS_DOM) {\n return;\n }\n\n var style = DOCUMENT.createElement('style');\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n var headChildren = DOCUMENT.head.childNodes;\n var beforeChild = null;\n\n for (var i = headChildren.length - 1; i > -1; i--) {\n var child = headChildren[i];\n var tagName = (child.tagName || '').toUpperCase();\n\n if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n beforeChild = child;\n }\n }\n\n DOCUMENT.head.insertBefore(style, beforeChild);\n return css;\n}\nvar idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nfunction nextUniqueId() {\n var size = 12;\n var id = '';\n\n while (size-- > 0) {\n id += idPool[Math.random() * 62 | 0];\n }\n\n return id;\n}\nfunction toArray(obj) {\n var array = [];\n\n for (var i = (obj || []).length >>> 0; i--;) {\n array[i] = obj[i];\n }\n\n return array;\n}\nfunction classArray(node) {\n if (node.classList) {\n return toArray(node.classList);\n } else {\n return (node.getAttribute('class') || '').split(' ').filter(function (i) {\n return i;\n });\n }\n}\nfunction getIconName(familyPrefix, cls) {\n var parts = cls.split('-');\n var prefix = parts[0];\n var iconName = parts.slice(1).join('-');\n\n if (prefix === familyPrefix && iconName !== '' && !isReserved(iconName)) {\n return iconName;\n } else {\n return null;\n }\n}\nfunction htmlEscape(str) {\n return \"\".concat(str).replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(//g, '>');\n}\nfunction joinAttributes(attributes) {\n return Object.keys(attributes || {}).reduce(function (acc, attributeName) {\n return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n }, '').trim();\n}\nfunction joinStyles(styles) {\n return Object.keys(styles || {}).reduce(function (acc, styleName) {\n return acc + \"\".concat(styleName, \": \").concat(styles[styleName], \";\");\n }, '');\n}\nfunction transformIsMeaningful(transform) {\n return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n}\nfunction transformForSvg(_ref) {\n var transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n var outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n var inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n var path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n return {\n outer: outer,\n inner: inner,\n path: path\n };\n}\nfunction transformForCss(_ref2) {\n var transform = _ref2.transform,\n _ref2$width = _ref2.width,\n width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,\n _ref2$height = _ref2.height,\n height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,\n _ref2$startCentered = _ref2.startCentered,\n startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;\n var val = '';\n\n if (startCentered && IS_IE) {\n val += \"translate(\".concat(transform.x / d - width / 2, \"em, \").concat(transform.y / d - height / 2, \"em) \");\n } else if (startCentered) {\n val += \"translate(calc(-50% + \".concat(transform.x / d, \"em), calc(-50% + \").concat(transform.y / d, \"em)) \");\n } else {\n val += \"translate(\".concat(transform.x / d, \"em, \").concat(transform.y / d, \"em) \");\n }\n\n val += \"scale(\".concat(transform.size / d * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d * (transform.flipY ? -1 : 1), \") \");\n val += \"rotate(\".concat(transform.rotate, \"deg) \");\n return val;\n}\n\nvar ALL_SPACE = {\n x: 0,\n y: 0,\n width: '100%',\n height: '100%'\n};\n\nfunction fillBlack(abstract) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (abstract.attributes && (abstract.attributes.fill || force)) {\n abstract.attributes.fill = 'black';\n }\n\n return abstract;\n}\n\nfunction deGroup(abstract) {\n if (abstract.tag === 'g') {\n return abstract.children;\n } else {\n return [abstract];\n }\n}\n\nfunction makeIconMasking (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n mask = _ref.mask,\n transform = _ref.transform;\n var mainWidth = main.width,\n mainPath = main.icon;\n var maskWidth = mask.width,\n maskPath = mask.icon;\n var trans = transformForSvg({\n transform: transform,\n containerWidth: maskWidth,\n iconWidth: mainWidth\n });\n var maskRect = {\n tag: 'rect',\n attributes: _objectSpread({}, ALL_SPACE, {\n fill: 'white'\n })\n };\n var maskInnerGroupChildrenMixin = mainPath.children ? {\n children: mainPath.children.map(fillBlack)\n } : {};\n var maskInnerGroup = {\n tag: 'g',\n attributes: _objectSpread({}, trans.inner),\n children: [fillBlack(_objectSpread({\n tag: mainPath.tag,\n attributes: _objectSpread({}, mainPath.attributes, trans.path)\n }, maskInnerGroupChildrenMixin))]\n };\n var maskOuterGroup = {\n tag: 'g',\n attributes: _objectSpread({}, trans.outer),\n children: [maskInnerGroup]\n };\n var maskId = \"mask-\".concat(nextUniqueId());\n var clipId = \"clip-\".concat(nextUniqueId());\n var maskTag = {\n tag: 'mask',\n attributes: _objectSpread({}, ALL_SPACE, {\n id: maskId,\n maskUnits: 'userSpaceOnUse',\n maskContentUnits: 'userSpaceOnUse'\n }),\n children: [maskRect, maskOuterGroup]\n };\n var defs = {\n tag: 'defs',\n children: [{\n tag: 'clipPath',\n attributes: {\n id: clipId\n },\n children: deGroup(maskPath)\n }, maskTag]\n };\n children.push(defs, {\n tag: 'rect',\n attributes: _objectSpread({\n fill: 'currentColor',\n 'clip-path': \"url(#\".concat(clipId, \")\"),\n mask: \"url(#\".concat(maskId, \")\")\n }, ALL_SPACE)\n });\n return {\n children: children,\n attributes: attributes\n };\n}\n\nfunction makeIconStandard (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n transform = _ref.transform,\n styles = _ref.styles;\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n if (transformIsMeaningful(transform)) {\n var trans = transformForSvg({\n transform: transform,\n containerWidth: main.width,\n iconWidth: main.width\n });\n children.push({\n tag: 'g',\n attributes: _objectSpread({}, trans.outer),\n children: [{\n tag: 'g',\n attributes: _objectSpread({}, trans.inner),\n children: [{\n tag: main.icon.tag,\n children: main.icon.children,\n attributes: _objectSpread({}, main.icon.attributes, trans.path)\n }]\n }]\n });\n } else {\n children.push(main.icon);\n }\n\n return {\n children: children,\n attributes: attributes\n };\n}\n\nfunction asIcon (_ref) {\n var children = _ref.children,\n main = _ref.main,\n mask = _ref.mask,\n attributes = _ref.attributes,\n styles = _ref.styles,\n transform = _ref.transform;\n\n if (transformIsMeaningful(transform) && main.found && !mask.found) {\n var width = main.width,\n height = main.height;\n var offset = {\n x: width / height / 2,\n y: 0.5\n };\n attributes['style'] = joinStyles(_objectSpread({}, styles, {\n 'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n }));\n }\n\n return [{\n tag: 'svg',\n attributes: attributes,\n children: children\n }];\n}\n\nfunction asSymbol (_ref) {\n var prefix = _ref.prefix,\n iconName = _ref.iconName,\n children = _ref.children,\n attributes = _ref.attributes,\n symbol = _ref.symbol;\n var id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.familyPrefix, \"-\").concat(iconName) : symbol;\n return [{\n tag: 'svg',\n attributes: {\n style: 'display: none;'\n },\n children: [{\n tag: 'symbol',\n attributes: _objectSpread({}, attributes, {\n id: id\n }),\n children: children\n }]\n }];\n}\n\nfunction makeInlineSvgAbstract(params) {\n var _params$icons = params.icons,\n main = _params$icons.main,\n mask = _params$icons.mask,\n prefix = params.prefix,\n iconName = params.iconName,\n transform = params.transform,\n symbol = params.symbol,\n title = params.title,\n extra = params.extra,\n _params$watchable = params.watchable,\n watchable = _params$watchable === void 0 ? false : _params$watchable;\n\n var _ref = mask.found ? mask : main,\n width = _ref.width,\n height = _ref.height;\n\n var widthClass = \"fa-w-\".concat(Math.ceil(width / height * 16));\n var attrClass = [config.replacementClass, iconName ? \"\".concat(config.familyPrefix, \"-\").concat(iconName) : '', widthClass].filter(function (c) {\n return extra.classes.indexOf(c) === -1;\n }).concat(extra.classes).join(' ');\n var content = {\n children: [],\n attributes: _objectSpread({}, extra.attributes, {\n 'data-prefix': prefix,\n 'data-icon': iconName,\n 'class': attrClass,\n 'role': extra.attributes.role || 'img',\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'viewBox': \"0 0 \".concat(width, \" \").concat(height)\n })\n };\n\n if (watchable) {\n content.attributes[DATA_FA_I2SVG] = '';\n }\n\n if (title) content.children.push({\n tag: 'title',\n attributes: {\n id: content.attributes['aria-labelledby'] || \"title-\".concat(nextUniqueId())\n },\n children: [title]\n });\n\n var args = _objectSpread({}, content, {\n prefix: prefix,\n iconName: iconName,\n main: main,\n mask: mask,\n transform: transform,\n symbol: symbol,\n styles: extra.styles\n });\n\n var _ref2 = mask.found && main.found ? makeIconMasking(args) : makeIconStandard(args),\n children = _ref2.children,\n attributes = _ref2.attributes;\n\n args.children = children;\n args.attributes = attributes;\n\n if (symbol) {\n return asSymbol(args);\n } else {\n return asIcon(args);\n }\n}\nfunction makeLayersTextAbstract(params) {\n var content = params.content,\n width = params.width,\n height = params.height,\n transform = params.transform,\n title = params.title,\n extra = params.extra,\n _params$watchable2 = params.watchable,\n watchable = _params$watchable2 === void 0 ? false : _params$watchable2;\n\n var attributes = _objectSpread({}, extra.attributes, title ? {\n 'title': title\n } : {}, {\n 'class': extra.classes.join(' ')\n });\n\n if (watchable) {\n attributes[DATA_FA_I2SVG] = '';\n }\n\n var styles = _objectSpread({}, extra.styles);\n\n if (transformIsMeaningful(transform)) {\n styles['transform'] = transformForCss({\n transform: transform,\n startCentered: true,\n width: width,\n height: height\n });\n styles['-webkit-transform'] = styles['transform'];\n }\n\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\nfunction makeLayersCounterAbstract(params) {\n var content = params.content,\n title = params.title,\n extra = params.extra;\n\n var attributes = _objectSpread({}, extra.attributes, title ? {\n 'title': title\n } : {}, {\n 'class': extra.classes.join(' ')\n });\n\n var styleString = joinStyles(extra.styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\n\nvar noop$1 = function noop() {};\n\nvar p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n mark: noop$1,\n measure: noop$1\n};\nvar preamble = \"FA \\\"5.11.2\\\"\";\n\nvar begin = function begin(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n return function () {\n return end(name);\n };\n};\n\nvar end = function end(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n p.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n};\n\nvar perf = {\n begin: begin,\n end: end\n};\n\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\n\nvar bindInternal4 = function bindInternal4(func, thisContext) {\n return function (a, b, c, d) {\n return func.call(thisContext, a, b, c, d);\n };\n};\n\n/**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param {Object} subject The object to reduce over.\n * @param {Function} fn The reducer function.\n * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].\n * @param {Object} thisContext The context for the reducer.\n * @return {mixed} The final result.\n */\n\n\nvar reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {\n var keys = Object.keys(subject),\n length = keys.length,\n iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n i,\n key,\n result;\n\n if (initialValue === undefined) {\n i = 1;\n result = subject[keys[0]];\n } else {\n i = 0;\n result = initialValue;\n }\n\n for (; i < length; i++) {\n key = keys[i];\n result = iterator(result, subject[key], key, subject);\n }\n\n return result;\n};\n\nfunction toHex(unicode) {\n var result = '';\n\n for (var i = 0; i < unicode.length; i++) {\n var hex = unicode.charCodeAt(i).toString(16);\n result += ('000' + hex).slice(-4);\n }\n\n return result;\n}\n\nfunction defineIcons(prefix, icons) {\n var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var _params$skipHooks = params.skipHooks,\n skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;\n var normalized = Object.keys(icons).reduce(function (acc, iconName) {\n var icon = icons[iconName];\n var expanded = !!icon.icon;\n\n if (expanded) {\n acc[icon.iconName] = icon.icon;\n } else {\n acc[iconName] = icon;\n }\n\n return acc;\n }, {});\n\n if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n namespace.hooks.addPack(prefix, normalized);\n } else {\n namespace.styles[prefix] = _objectSpread({}, namespace.styles[prefix] || {}, normalized);\n }\n /**\n * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n * for `fas` so we'll easy the upgrade process for our users by automatically defining\n * this as well.\n */\n\n\n if (prefix === 'fas') {\n defineIcons('fa', icons);\n }\n}\n\nvar styles = namespace.styles,\n shims = namespace.shims;\nvar _byUnicode = {};\nvar _byLigature = {};\nvar _byOldName = {};\nvar build = function build() {\n var lookup = function lookup(reducer) {\n return reduce(styles, function (o, style, prefix) {\n o[prefix] = reduce(style, reducer, {});\n return o;\n }, {});\n };\n\n _byUnicode = lookup(function (acc, icon, iconName) {\n if (icon[3]) {\n acc[icon[3]] = iconName;\n }\n\n return acc;\n });\n _byLigature = lookup(function (acc, icon, iconName) {\n var ligatures = icon[2];\n acc[iconName] = iconName;\n ligatures.forEach(function (ligature) {\n acc[ligature] = iconName;\n });\n return acc;\n });\n var hasRegular = 'far' in styles;\n _byOldName = reduce(shims, function (acc, shim) {\n var oldName = shim[0];\n var prefix = shim[1];\n var iconName = shim[2];\n\n if (prefix === 'far' && !hasRegular) {\n prefix = 'fas';\n }\n\n acc[oldName] = {\n prefix: prefix,\n iconName: iconName\n };\n return acc;\n }, {});\n};\nbuild();\nfunction byUnicode(prefix, unicode) {\n return (_byUnicode[prefix] || {})[unicode];\n}\nfunction byLigature(prefix, ligature) {\n return (_byLigature[prefix] || {})[ligature];\n}\nfunction byOldName(name) {\n return _byOldName[name] || {\n prefix: null,\n iconName: null\n };\n}\n\nvar styles$1 = namespace.styles;\nvar emptyCanonicalIcon = function emptyCanonicalIcon() {\n return {\n prefix: null,\n iconName: null,\n rest: []\n };\n};\nfunction getCanonicalIcon(values) {\n return values.reduce(function (acc, cls) {\n var iconName = getIconName(config.familyPrefix, cls);\n\n if (styles$1[cls]) {\n acc.prefix = cls;\n } else if (config.autoFetchSvg && ['fas', 'far', 'fal', 'fad', 'fab', 'fa'].indexOf(cls) > -1) {\n acc.prefix = cls;\n } else if (iconName) {\n var shim = acc.prefix === 'fa' ? byOldName(iconName) : {};\n acc.iconName = shim.iconName || iconName;\n acc.prefix = shim.prefix || acc.prefix;\n } else if (cls !== config.replacementClass && cls.indexOf('fa-w-') !== 0) {\n acc.rest.push(cls);\n }\n\n return acc;\n }, emptyCanonicalIcon());\n}\nfunction iconFromMapping(mapping, prefix, iconName) {\n if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n return {\n prefix: prefix,\n iconName: iconName,\n icon: mapping[prefix][iconName]\n };\n }\n}\n\nfunction toHtml(abstractNodes) {\n var tag = abstractNodes.tag,\n _abstractNodes$attrib = abstractNodes.attributes,\n attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,\n _abstractNodes$childr = abstractNodes.children,\n children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;\n\n if (typeof abstractNodes === 'string') {\n return htmlEscape(abstractNodes);\n } else {\n return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"\");\n }\n}\n\nvar noop$2 = function noop() {};\n\nfunction isWatched(node) {\n var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n return typeof i2svg === 'string';\n}\n\nfunction getMutator() {\n if (config.autoReplaceSvg === true) {\n return mutators.replace;\n }\n\n var mutator = mutators[config.autoReplaceSvg];\n return mutator || mutators.replace;\n}\n\nvar mutators = {\n replace: function replace(mutation) {\n var node = mutation[0];\n var abstract = mutation[1];\n var newOuterHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n\n if (node.parentNode && node.outerHTML) {\n node.outerHTML = newOuterHTML + (config.keepOriginalSource && node.tagName.toLowerCase() !== 'svg' ? \"\") : '');\n } else if (node.parentNode) {\n var newNode = document.createElement('span');\n node.parentNode.replaceChild(newNode, node);\n newNode.outerHTML = newOuterHTML;\n }\n },\n nest: function nest(mutation) {\n var node = mutation[0];\n var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.\n // Short-circuit to the standard replacement\n\n if (~classArray(node).indexOf(config.replacementClass)) {\n return mutators.replace(mutation);\n }\n\n var forSvg = new RegExp(\"\".concat(config.familyPrefix, \"-.*\"));\n delete abstract[0].attributes.style;\n delete abstract[0].attributes.id;\n var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) {\n if (cls === config.replacementClass || cls.match(forSvg)) {\n acc.toSvg.push(cls);\n } else {\n acc.toNode.push(cls);\n }\n\n return acc;\n }, {\n toNode: [],\n toSvg: []\n });\n abstract[0].attributes.class = splitClasses.toSvg.join(' ');\n var newInnerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.setAttribute('class', splitClasses.toNode.join(' '));\n node.setAttribute(DATA_FA_I2SVG, '');\n node.innerHTML = newInnerHTML;\n }\n};\n\nfunction performOperationSync(op) {\n op();\n}\n\nfunction perform(mutations, callback) {\n var callbackFunction = typeof callback === 'function' ? callback : noop$2;\n\n if (mutations.length === 0) {\n callbackFunction();\n } else {\n var frame = performOperationSync;\n\n if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n frame = WINDOW.requestAnimationFrame || performOperationSync;\n }\n\n frame(function () {\n var mutator = getMutator();\n var mark = perf.begin('mutate');\n mutations.map(mutator);\n mark();\n callbackFunction();\n });\n }\n}\nvar disabled = false;\nfunction disableObservation() {\n disabled = true;\n}\nfunction enableObservation() {\n disabled = false;\n}\nvar mo = null;\nfunction observe(options) {\n if (!MUTATION_OBSERVER) {\n return;\n }\n\n if (!config.observeMutations) {\n return;\n }\n\n var treeCallback = options.treeCallback,\n nodeCallback = options.nodeCallback,\n pseudoElementsCallback = options.pseudoElementsCallback,\n _options$observeMutat = options.observeMutationsRoot,\n observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;\n mo = new MUTATION_OBSERVER(function (objects) {\n if (disabled) return;\n toArray(objects).forEach(function (mutationRecord) {\n if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n if (config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target);\n }\n\n treeCallback(mutationRecord.target);\n }\n\n if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target.parentNode);\n }\n\n if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n if (mutationRecord.attributeName === 'class') {\n var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),\n prefix = _getCanonicalIcon.prefix,\n iconName = _getCanonicalIcon.iconName;\n\n if (prefix) mutationRecord.target.setAttribute('data-prefix', prefix);\n if (iconName) mutationRecord.target.setAttribute('data-icon', iconName);\n } else {\n nodeCallback(mutationRecord.target);\n }\n }\n });\n });\n if (!IS_DOM) return;\n mo.observe(observeMutationsRoot, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true\n });\n}\nfunction disconnect() {\n if (!mo) return;\n mo.disconnect();\n}\n\nfunction styleParser (node) {\n var style = node.getAttribute('style');\n var val = [];\n\n if (style) {\n val = style.split(';').reduce(function (acc, style) {\n var styles = style.split(':');\n var prop = styles[0];\n var value = styles.slice(1);\n\n if (prop && value.length > 0) {\n acc[prop] = value.join(':').trim();\n }\n\n return acc;\n }, {});\n }\n\n return val;\n}\n\nfunction classParser (node) {\n var existingPrefix = node.getAttribute('data-prefix');\n var existingIconName = node.getAttribute('data-icon');\n var innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n var val = getCanonicalIcon(classArray(node));\n\n if (existingPrefix && existingIconName) {\n val.prefix = existingPrefix;\n val.iconName = existingIconName;\n }\n\n if (val.prefix && innerText.length > 1) {\n val.iconName = byLigature(val.prefix, node.innerText);\n } else if (val.prefix && innerText.length === 1) {\n val.iconName = byUnicode(val.prefix, toHex(node.innerText));\n }\n\n return val;\n}\n\nvar parseTransformString = function parseTransformString(transformString) {\n var transform = {\n size: 16,\n x: 0,\n y: 0,\n flipX: false,\n flipY: false,\n rotate: 0\n };\n\n if (!transformString) {\n return transform;\n } else {\n return transformString.toLowerCase().split(' ').reduce(function (acc, n) {\n var parts = n.toLowerCase().split('-');\n var first = parts[0];\n var rest = parts.slice(1).join('-');\n\n if (first && rest === 'h') {\n acc.flipX = true;\n return acc;\n }\n\n if (first && rest === 'v') {\n acc.flipY = true;\n return acc;\n }\n\n rest = parseFloat(rest);\n\n if (isNaN(rest)) {\n return acc;\n }\n\n switch (first) {\n case 'grow':\n acc.size = acc.size + rest;\n break;\n\n case 'shrink':\n acc.size = acc.size - rest;\n break;\n\n case 'left':\n acc.x = acc.x - rest;\n break;\n\n case 'right':\n acc.x = acc.x + rest;\n break;\n\n case 'up':\n acc.y = acc.y - rest;\n break;\n\n case 'down':\n acc.y = acc.y + rest;\n break;\n\n case 'rotate':\n acc.rotate = acc.rotate + rest;\n break;\n }\n\n return acc;\n }, transform);\n }\n};\nfunction transformParser (node) {\n return parseTransformString(node.getAttribute('data-fa-transform'));\n}\n\nfunction symbolParser (node) {\n var symbol = node.getAttribute('data-fa-symbol');\n return symbol === null ? false : symbol === '' ? true : symbol;\n}\n\nfunction attributesParser (node) {\n var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {\n if (acc.name !== 'class' && acc.name !== 'style') {\n acc[attr.name] = attr.value;\n }\n\n return acc;\n }, {});\n var title = node.getAttribute('title');\n\n if (config.autoA11y) {\n if (title) {\n extraAttributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(nextUniqueId());\n } else {\n extraAttributes['aria-hidden'] = 'true';\n extraAttributes['focusable'] = 'false';\n }\n }\n\n return extraAttributes;\n}\n\nfunction maskParser (node) {\n var mask = node.getAttribute('data-fa-mask');\n\n if (!mask) {\n return emptyCanonicalIcon();\n } else {\n return getCanonicalIcon(mask.split(' ').map(function (i) {\n return i.trim();\n }));\n }\n}\n\nfunction blankMeta() {\n return {\n iconName: null,\n title: null,\n prefix: null,\n transform: meaninglessTransform,\n symbol: false,\n mask: null,\n extra: {\n classes: [],\n styles: {},\n attributes: {}\n }\n };\n}\nfunction parseMeta(node) {\n var _classParser = classParser(node),\n iconName = _classParser.iconName,\n prefix = _classParser.prefix,\n extraClasses = _classParser.rest;\n\n var extraStyles = styleParser(node);\n var transform = transformParser(node);\n var symbol = symbolParser(node);\n var extraAttributes = attributesParser(node);\n var mask = maskParser(node);\n return {\n iconName: iconName,\n title: node.getAttribute('title'),\n prefix: prefix,\n transform: transform,\n symbol: symbol,\n mask: mask,\n extra: {\n classes: extraClasses,\n styles: extraStyles,\n attributes: extraAttributes\n }\n };\n}\n\nfunction MissingIcon(error) {\n this.name = 'MissingIcon';\n this.message = error || 'Icon unavailable';\n this.stack = new Error().stack;\n}\nMissingIcon.prototype = Object.create(Error.prototype);\nMissingIcon.prototype.constructor = MissingIcon;\n\nvar FILL = {\n fill: 'currentColor'\n};\nvar ANIMATION_BASE = {\n attributeType: 'XML',\n repeatCount: 'indefinite',\n dur: '2s'\n};\nvar RING = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'\n })\n};\n\nvar OPACITY_ANIMATE = _objectSpread({}, ANIMATION_BASE, {\n attributeName: 'opacity'\n});\n\nvar DOT = {\n tag: 'circle',\n attributes: _objectSpread({}, FILL, {\n cx: '256',\n cy: '364',\n r: '28'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, ANIMATION_BASE, {\n attributeName: 'r',\n values: '28;14;28;28;14;28;'\n })\n }, {\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '1;0;1;1;0;1;'\n })\n }]\n};\nvar QUESTION = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n opacity: '1',\n d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '1;0;0;0;0;1;'\n })\n }]\n};\nvar EXCLAMATION = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n opacity: '0',\n d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '0;0;1;1;0;0;'\n })\n }]\n};\nvar missing = {\n tag: 'g',\n children: [RING, DOT, QUESTION, EXCLAMATION]\n};\n\nvar styles$2 = namespace.styles;\nfunction asFoundIcon(icon) {\n var width = icon[0];\n var height = icon[1];\n\n var _icon$slice = icon.slice(4),\n _icon$slice2 = _slicedToArray(_icon$slice, 1),\n vectorData = _icon$slice2[0];\n\n var element = null;\n\n if (Array.isArray(vectorData)) {\n element = {\n tag: 'g',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n },\n children: [{\n tag: 'path',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n fill: 'currentColor',\n d: vectorData[0]\n }\n }, {\n tag: 'path',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.PRIMARY),\n fill: 'currentColor',\n d: vectorData[1]\n }\n }]\n };\n } else {\n element = {\n tag: 'path',\n attributes: {\n fill: 'currentColor',\n d: vectorData\n }\n };\n }\n\n return {\n found: true,\n width: width,\n height: height,\n icon: element\n };\n}\nfunction findIcon(iconName, prefix) {\n return new picked(function (resolve, reject) {\n var val = {\n found: false,\n width: 512,\n height: 512,\n icon: missing\n };\n\n if (iconName && prefix && styles$2[prefix] && styles$2[prefix][iconName]) {\n var icon = styles$2[prefix][iconName];\n return resolve(asFoundIcon(icon));\n }\n\n var headers = {};\n\n if (_typeof(WINDOW.FontAwesomeKitConfig) === 'object' && typeof window.FontAwesomeKitConfig.token === 'string') {\n headers['fa-kit-token'] = WINDOW.FontAwesomeKitConfig.token;\n }\n\n if (iconName && prefix && !config.showMissingIcons) {\n reject(new MissingIcon(\"Icon is missing for prefix \".concat(prefix, \" with icon name \").concat(iconName)));\n } else {\n resolve(val);\n }\n });\n}\n\nvar styles$3 = namespace.styles;\n\nfunction generateSvgReplacementMutation(node, nodeMeta) {\n var iconName = nodeMeta.iconName,\n title = nodeMeta.title,\n prefix = nodeMeta.prefix,\n transform = nodeMeta.transform,\n symbol = nodeMeta.symbol,\n mask = nodeMeta.mask,\n extra = nodeMeta.extra;\n return new picked(function (resolve, reject) {\n picked.all([findIcon(iconName, prefix), findIcon(mask.iconName, mask.prefix)]).then(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n main = _ref2[0],\n mask = _ref2[1];\n\n resolve([node, makeInlineSvgAbstract({\n icons: {\n main: main,\n mask: mask\n },\n prefix: prefix,\n iconName: iconName,\n transform: transform,\n symbol: symbol,\n mask: mask,\n title: title,\n extra: extra,\n watchable: true\n })]);\n });\n });\n}\n\nfunction generateLayersText(node, nodeMeta) {\n var title = nodeMeta.title,\n transform = nodeMeta.transform,\n extra = nodeMeta.extra;\n var width = null;\n var height = null;\n\n if (IS_IE) {\n var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n var boundingClientRect = node.getBoundingClientRect();\n width = boundingClientRect.width / computedFontSize;\n height = boundingClientRect.height / computedFontSize;\n }\n\n if (config.autoA11y && !title) {\n extra.attributes['aria-hidden'] = 'true';\n }\n\n return picked.resolve([node, makeLayersTextAbstract({\n content: node.innerHTML,\n width: width,\n height: height,\n transform: transform,\n title: title,\n extra: extra,\n watchable: true\n })]);\n}\n\nfunction generateMutation(node) {\n var nodeMeta = parseMeta(node);\n\n if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n return generateLayersText(node, nodeMeta);\n } else {\n return generateSvgReplacementMutation(node, nodeMeta);\n }\n}\n\nfunction onTree(root) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (!IS_DOM) return;\n var htmlClassList = DOCUMENT.documentElement.classList;\n\n var hclAdd = function hclAdd(suffix) {\n return htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var hclRemove = function hclRemove(suffix) {\n return htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var prefixes = config.autoFetchSvg ? Object.keys(PREFIX_TO_STYLE) : Object.keys(styles$3);\n var prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(function (p) {\n return \".\".concat(p, \":not([\").concat(DATA_FA_I2SVG, \"])\");\n })).join(', ');\n\n if (prefixesDomQuery.length === 0) {\n return;\n }\n\n var candidates = [];\n\n try {\n candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n } catch (e) {// noop\n }\n\n if (candidates.length > 0) {\n hclAdd('pending');\n hclRemove('complete');\n } else {\n return;\n }\n\n var mark = perf.begin('onTree');\n var mutations = candidates.reduce(function (acc, node) {\n try {\n var mutation = generateMutation(node);\n\n if (mutation) {\n acc.push(mutation);\n }\n } catch (e) {\n if (!PRODUCTION) {\n if (e instanceof MissingIcon) {\n console.error(e);\n }\n }\n }\n\n return acc;\n }, []);\n return new picked(function (resolve, reject) {\n picked.all(mutations).then(function (resolvedMutations) {\n perform(resolvedMutations, function () {\n hclAdd('active');\n hclAdd('complete');\n hclRemove('pending');\n if (typeof callback === 'function') callback();\n mark();\n resolve();\n });\n }).catch(function () {\n mark();\n reject();\n });\n });\n}\nfunction onNode(node) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n generateMutation(node).then(function (mutation) {\n if (mutation) {\n perform([mutation], callback);\n }\n });\n}\n\nfunction replaceForPosition(node, position) {\n var pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n return new picked(function (resolve, reject) {\n if (node.getAttribute(pendingAttribute) !== null) {\n // This node is already being processed\n return resolve();\n }\n\n var children = toArray(node.children);\n var alreadyProcessedPseudoElement = children.filter(function (c) {\n return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;\n })[0];\n var styles = WINDOW.getComputedStyle(node, position);\n var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);\n var fontWeight = styles.getPropertyValue('font-weight');\n\n if (alreadyProcessedPseudoElement && !fontFamily) {\n // If we've already processed it but the current computed style does not result in a font-family,\n // that probably means that a class name that was previously present to make the icon has been\n // removed. So we now should delete the icon.\n node.removeChild(alreadyProcessedPseudoElement);\n return resolve();\n } else if (fontFamily) {\n var content = styles.getPropertyValue('content');\n var prefix = ~['Solid', 'Regular', 'Light', 'Duotone', 'Brands'].indexOf(fontFamily[1]) ? STYLE_TO_PREFIX[fontFamily[1].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[fontWeight];\n var hexValue = toHex(content.length === 3 ? content.substr(1, 1) : content);\n var iconName = byUnicode(prefix, hexValue);\n var iconIdentifier = iconName; // Only convert the pseudo element in this :before/:after position into an icon if we haven't\n // already done so with the same prefix and iconName\n\n if (iconName && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n node.setAttribute(pendingAttribute, iconIdentifier);\n\n if (alreadyProcessedPseudoElement) {\n // Delete the old one, since we're replacing it with a new one\n node.removeChild(alreadyProcessedPseudoElement);\n }\n\n var meta = blankMeta();\n var extra = meta.extra;\n extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n findIcon(iconName, prefix).then(function (main) {\n var abstract = makeInlineSvgAbstract(_objectSpread({}, meta, {\n icons: {\n main: main,\n mask: emptyCanonicalIcon()\n },\n prefix: prefix,\n iconName: iconIdentifier,\n extra: extra,\n watchable: true\n }));\n var element = DOCUMENT.createElement('svg');\n\n if (position === ':before') {\n node.insertBefore(element, node.firstChild);\n } else {\n node.appendChild(element);\n }\n\n element.outerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.removeAttribute(pendingAttribute);\n resolve();\n }).catch(reject);\n } else {\n resolve();\n }\n } else {\n resolve();\n }\n });\n}\n\nfunction replace(node) {\n return picked.all([replaceForPosition(node, ':before'), replaceForPosition(node, ':after')]);\n}\n\nfunction processable(node) {\n return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');\n}\n\nfunction searchPseudoElements (root) {\n if (!IS_DOM) return;\n return new picked(function (resolve, reject) {\n var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n var end = perf.begin('searchPseudoElements');\n disableObservation();\n picked.all(operations).then(function () {\n end();\n enableObservation();\n resolve();\n }).catch(function () {\n end();\n enableObservation();\n reject();\n });\n });\n}\n\nvar baseStyles = \"svg:not(:root).svg-inline--fa {\\n overflow: visible;\\n}\\n\\n.svg-inline--fa {\\n display: inline-block;\\n font-size: inherit;\\n height: 1em;\\n overflow: visible;\\n vertical-align: -0.125em;\\n}\\n.svg-inline--fa.fa-lg {\\n vertical-align: -0.225em;\\n}\\n.svg-inline--fa.fa-w-1 {\\n width: 0.0625em;\\n}\\n.svg-inline--fa.fa-w-2 {\\n width: 0.125em;\\n}\\n.svg-inline--fa.fa-w-3 {\\n width: 0.1875em;\\n}\\n.svg-inline--fa.fa-w-4 {\\n width: 0.25em;\\n}\\n.svg-inline--fa.fa-w-5 {\\n width: 0.3125em;\\n}\\n.svg-inline--fa.fa-w-6 {\\n width: 0.375em;\\n}\\n.svg-inline--fa.fa-w-7 {\\n width: 0.4375em;\\n}\\n.svg-inline--fa.fa-w-8 {\\n width: 0.5em;\\n}\\n.svg-inline--fa.fa-w-9 {\\n width: 0.5625em;\\n}\\n.svg-inline--fa.fa-w-10 {\\n width: 0.625em;\\n}\\n.svg-inline--fa.fa-w-11 {\\n width: 0.6875em;\\n}\\n.svg-inline--fa.fa-w-12 {\\n width: 0.75em;\\n}\\n.svg-inline--fa.fa-w-13 {\\n width: 0.8125em;\\n}\\n.svg-inline--fa.fa-w-14 {\\n width: 0.875em;\\n}\\n.svg-inline--fa.fa-w-15 {\\n width: 0.9375em;\\n}\\n.svg-inline--fa.fa-w-16 {\\n width: 1em;\\n}\\n.svg-inline--fa.fa-w-17 {\\n width: 1.0625em;\\n}\\n.svg-inline--fa.fa-w-18 {\\n width: 1.125em;\\n}\\n.svg-inline--fa.fa-w-19 {\\n width: 1.1875em;\\n}\\n.svg-inline--fa.fa-w-20 {\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-pull-left {\\n margin-right: 0.3em;\\n width: auto;\\n}\\n.svg-inline--fa.fa-pull-right {\\n margin-left: 0.3em;\\n width: auto;\\n}\\n.svg-inline--fa.fa-border {\\n height: 1.5em;\\n}\\n.svg-inline--fa.fa-li {\\n width: 2em;\\n}\\n.svg-inline--fa.fa-fw {\\n width: 1.25em;\\n}\\n\\n.fa-layers svg.svg-inline--fa {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.fa-layers {\\n display: inline-block;\\n height: 1em;\\n position: relative;\\n text-align: center;\\n vertical-align: -0.125em;\\n width: 1em;\\n}\\n.fa-layers svg.svg-inline--fa {\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter, .fa-layers-text {\\n display: inline-block;\\n position: absolute;\\n text-align: center;\\n}\\n\\n.fa-layers-text {\\n left: 50%;\\n top: 50%;\\n -webkit-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n background-color: #ff253a;\\n border-radius: 1em;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n color: #fff;\\n height: 1.5em;\\n line-height: 1;\\n max-width: 5em;\\n min-width: 1.5em;\\n overflow: hidden;\\n padding: 0.25em;\\n right: 0;\\n text-overflow: ellipsis;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n bottom: 0;\\n right: 0;\\n top: auto;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: bottom right;\\n transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n bottom: 0;\\n left: 0;\\n right: auto;\\n top: auto;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: bottom left;\\n transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n right: 0;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n left: 0;\\n right: auto;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top left;\\n transform-origin: top left;\\n}\\n\\n.fa-lg {\\n font-size: 1.3333333333em;\\n line-height: 0.75em;\\n vertical-align: -0.0667em;\\n}\\n\\n.fa-xs {\\n font-size: 0.75em;\\n}\\n\\n.fa-sm {\\n font-size: 0.875em;\\n}\\n\\n.fa-1x {\\n font-size: 1em;\\n}\\n\\n.fa-2x {\\n font-size: 2em;\\n}\\n\\n.fa-3x {\\n font-size: 3em;\\n}\\n\\n.fa-4x {\\n font-size: 4em;\\n}\\n\\n.fa-5x {\\n font-size: 5em;\\n}\\n\\n.fa-6x {\\n font-size: 6em;\\n}\\n\\n.fa-7x {\\n font-size: 7em;\\n}\\n\\n.fa-8x {\\n font-size: 8em;\\n}\\n\\n.fa-9x {\\n font-size: 9em;\\n}\\n\\n.fa-10x {\\n font-size: 10em;\\n}\\n\\n.fa-fw {\\n text-align: center;\\n width: 1.25em;\\n}\\n\\n.fa-ul {\\n list-style-type: none;\\n margin-left: 2.5em;\\n padding-left: 0;\\n}\\n.fa-ul > li {\\n position: relative;\\n}\\n\\n.fa-li {\\n left: -2em;\\n position: absolute;\\n text-align: center;\\n width: 2em;\\n line-height: inherit;\\n}\\n\\n.fa-border {\\n border: solid 0.08em #eee;\\n border-radius: 0.1em;\\n padding: 0.2em 0.25em 0.15em;\\n}\\n\\n.fa-pull-left {\\n float: left;\\n}\\n\\n.fa-pull-right {\\n float: right;\\n}\\n\\n.fa.fa-pull-left,\\n.fas.fa-pull-left,\\n.far.fa-pull-left,\\n.fal.fa-pull-left,\\n.fab.fa-pull-left {\\n margin-right: 0.3em;\\n}\\n.fa.fa-pull-right,\\n.fas.fa-pull-right,\\n.far.fa-pull-right,\\n.fal.fa-pull-right,\\n.fab.fa-pull-right {\\n margin-left: 0.3em;\\n}\\n\\n.fa-spin {\\n -webkit-animation: fa-spin 2s infinite linear;\\n animation: fa-spin 2s infinite linear;\\n}\\n\\n.fa-pulse {\\n -webkit-animation: fa-spin 1s infinite steps(8);\\n animation: fa-spin 1s infinite steps(8);\\n}\\n\\n@-webkit-keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n\\n@keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n.fa-rotate-90 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\\\";\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\\\";\\n -webkit-transform: rotate(180deg);\\n transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\\\";\\n -webkit-transform: rotate(270deg);\\n transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\\\";\\n -webkit-transform: scale(-1, 1);\\n transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n -webkit-transform: scale(1, -1);\\n transform: scale(1, -1);\\n}\\n\\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n -webkit-transform: scale(-1, -1);\\n transform: scale(-1, -1);\\n}\\n\\n:root .fa-rotate-90,\\n:root .fa-rotate-180,\\n:root .fa-rotate-270,\\n:root .fa-flip-horizontal,\\n:root .fa-flip-vertical,\\n:root .fa-flip-both {\\n -webkit-filter: none;\\n filter: none;\\n}\\n\\n.fa-stack {\\n display: inline-block;\\n height: 2em;\\n position: relative;\\n width: 2.5em;\\n}\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.svg-inline--fa.fa-stack-1x {\\n height: 1em;\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-stack-2x {\\n height: 2em;\\n width: 2.5em;\\n}\\n\\n.fa-inverse {\\n color: #fff;\\n}\\n\\n.sr-only {\\n border: 0;\\n clip: rect(0, 0, 0, 0);\\n height: 1px;\\n margin: -1px;\\n overflow: hidden;\\n padding: 0;\\n position: absolute;\\n width: 1px;\\n}\\n\\n.sr-only-focusable:active, .sr-only-focusable:focus {\\n clip: auto;\\n height: auto;\\n margin: 0;\\n overflow: visible;\\n position: static;\\n width: auto;\\n}\\n\\n.svg-inline--fa .fa-primary {\\n fill: var(--fa-primary-color, currentColor);\\n opacity: 1;\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n fill: var(--fa-secondary-color, currentColor);\\n opacity: 0.4;\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n opacity: 0.4;\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n opacity: 1;\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa mask .fa-primary,\\n.svg-inline--fa mask .fa-secondary {\\n fill: black;\\n}\\n\\n.fad.fa-inverse {\\n color: #fff;\\n}\";\n\nfunction css () {\n var dfp = DEFAULT_FAMILY_PREFIX;\n var drc = DEFAULT_REPLACEMENT_CLASS;\n var fp = config.familyPrefix;\n var rc = config.replacementClass;\n var s = baseStyles;\n\n if (fp !== dfp || rc !== drc) {\n var dPatt = new RegExp(\"\\\\.\".concat(dfp, \"\\\\-\"), 'g');\n var customPropPatt = new RegExp(\"\\\\--\".concat(dfp, \"\\\\-\"), 'g');\n var rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n }\n\n return s;\n}\n\nvar Library =\n/*#__PURE__*/\nfunction () {\n function Library() {\n _classCallCheck(this, Library);\n\n this.definitions = {};\n }\n\n _createClass(Library, [{\n key: \"add\",\n value: function add() {\n var _this = this;\n\n for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n definitions[_key] = arguments[_key];\n }\n\n var additions = definitions.reduce(this._pullDefinitions, {});\n Object.keys(additions).forEach(function (key) {\n _this.definitions[key] = _objectSpread({}, _this.definitions[key] || {}, additions[key]);\n defineIcons(key, additions[key]);\n build();\n });\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.definitions = {};\n }\n }, {\n key: \"_pullDefinitions\",\n value: function _pullDefinitions(additions, definition) {\n var normalized = definition.prefix && definition.iconName && definition.icon ? {\n 0: definition\n } : definition;\n Object.keys(normalized).map(function (key) {\n var _normalized$key = normalized[key],\n prefix = _normalized$key.prefix,\n iconName = _normalized$key.iconName,\n icon = _normalized$key.icon;\n if (!additions[prefix]) additions[prefix] = {};\n additions[prefix][iconName] = icon;\n });\n return additions;\n }\n }]);\n\n return Library;\n}();\n\nfunction ensureCss() {\n if (config.autoAddCss && !_cssInserted) {\n insertCss(css());\n\n _cssInserted = true;\n }\n}\n\nfunction apiObject(val, abstractCreator) {\n Object.defineProperty(val, 'abstract', {\n get: abstractCreator\n });\n Object.defineProperty(val, 'html', {\n get: function get() {\n return val.abstract.map(function (a) {\n return toHtml(a);\n });\n }\n });\n Object.defineProperty(val, 'node', {\n get: function get() {\n if (!IS_DOM) return;\n var container = DOCUMENT.createElement('div');\n container.innerHTML = val.html;\n return container.children;\n }\n });\n return val;\n}\n\nfunction findIconDefinition(iconLookup) {\n var _iconLookup$prefix = iconLookup.prefix,\n prefix = _iconLookup$prefix === void 0 ? 'fa' : _iconLookup$prefix,\n iconName = iconLookup.iconName;\n if (!iconName) return;\n return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\n\nfunction resolveIcons(next) {\n return function (maybeIconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n var mask = params.mask;\n\n if (mask) {\n mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n }\n\n return next(iconDefinition, _objectSpread({}, params, {\n mask: mask\n }));\n };\n}\n\nvar library = new Library();\nvar noAuto = function noAuto() {\n config.autoReplaceSvg = false;\n config.observeMutations = false;\n disconnect();\n};\nvar _cssInserted = false;\nvar dom = {\n i2svg: function i2svg() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (IS_DOM) {\n ensureCss();\n var _params$node = params.node,\n node = _params$node === void 0 ? DOCUMENT : _params$node,\n _params$callback = params.callback,\n callback = _params$callback === void 0 ? function () {} : _params$callback;\n\n if (config.searchPseudoElements) {\n searchPseudoElements(node);\n }\n\n return onTree(node, callback);\n } else {\n return picked.reject('Operation requires a DOM of some kind.');\n }\n },\n css: css,\n insertCss: function insertCss$$1() {\n if (!_cssInserted) {\n insertCss(css());\n\n _cssInserted = true;\n }\n },\n watch: function watch() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var autoReplaceSvgRoot = params.autoReplaceSvgRoot,\n observeMutationsRoot = params.observeMutationsRoot;\n\n if (config.autoReplaceSvg === false) {\n config.autoReplaceSvg = true;\n }\n\n config.observeMutations = true;\n domready(function () {\n autoReplace({\n autoReplaceSvgRoot: autoReplaceSvgRoot\n });\n observe({\n treeCallback: onTree,\n nodeCallback: onNode,\n pseudoElementsCallback: searchPseudoElements,\n observeMutationsRoot: observeMutationsRoot\n });\n });\n }\n};\nvar parse = {\n transform: function transform(transformString) {\n return parseTransformString(transformString);\n }\n};\nvar icon = resolveIcons(function (iconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n _params$symbol = params.symbol,\n symbol = _params$symbol === void 0 ? false : _params$symbol,\n _params$mask = params.mask,\n mask = _params$mask === void 0 ? null : _params$mask,\n _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n if (!iconDefinition) return;\n var prefix = iconDefinition.prefix,\n iconName = iconDefinition.iconName,\n icon = iconDefinition.icon;\n return apiObject(_objectSpread({\n type: 'icon'\n }, iconDefinition), function () {\n ensureCss();\n\n if (config.autoA11y) {\n if (title) {\n attributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(nextUniqueId());\n } else {\n attributes['aria-hidden'] = 'true';\n attributes['focusable'] = 'false';\n }\n }\n\n return makeInlineSvgAbstract({\n icons: {\n main: asFoundIcon(icon),\n mask: mask ? asFoundIcon(mask.icon) : {\n found: false,\n width: null,\n height: null,\n icon: {}\n }\n },\n prefix: prefix,\n iconName: iconName,\n transform: _objectSpread({}, meaninglessTransform, transform),\n symbol: symbol,\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: classes\n }\n });\n });\n});\nvar text = function text(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform2 = params.transform,\n transform = _params$transform2 === void 0 ? meaninglessTransform : _params$transform2,\n _params$title2 = params.title,\n title = _params$title2 === void 0 ? null : _params$title2,\n _params$classes2 = params.classes,\n classes = _params$classes2 === void 0 ? [] : _params$classes2,\n _params$attributes2 = params.attributes,\n attributes = _params$attributes2 === void 0 ? {} : _params$attributes2,\n _params$styles2 = params.styles,\n styles = _params$styles2 === void 0 ? {} : _params$styles2;\n return apiObject({\n type: 'text',\n content: content\n }, function () {\n ensureCss();\n return makeLayersTextAbstract({\n content: content,\n transform: _objectSpread({}, meaninglessTransform, transform),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.familyPrefix, \"-layers-text\")].concat(_toConsumableArray(classes))\n }\n });\n });\n};\nvar counter = function counter(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$title3 = params.title,\n title = _params$title3 === void 0 ? null : _params$title3,\n _params$classes3 = params.classes,\n classes = _params$classes3 === void 0 ? [] : _params$classes3,\n _params$attributes3 = params.attributes,\n attributes = _params$attributes3 === void 0 ? {} : _params$attributes3,\n _params$styles3 = params.styles,\n styles = _params$styles3 === void 0 ? {} : _params$styles3;\n return apiObject({\n type: 'counter',\n content: content\n }, function () {\n ensureCss();\n return makeLayersCounterAbstract({\n content: content.toString(),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.familyPrefix, \"-layers-counter\")].concat(_toConsumableArray(classes))\n }\n });\n });\n};\nvar layer = function layer(assembler) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$classes4 = params.classes,\n classes = _params$classes4 === void 0 ? [] : _params$classes4;\n return apiObject({\n type: 'layer'\n }, function () {\n ensureCss();\n var children = [];\n assembler(function (args) {\n Array.isArray(args) ? args.map(function (a) {\n children = children.concat(a.abstract);\n }) : children = children.concat(args.abstract);\n });\n return [{\n tag: 'span',\n attributes: {\n class: [\"\".concat(config.familyPrefix, \"-layers\")].concat(_toConsumableArray(classes)).join(' ')\n },\n children: children\n }];\n });\n};\nvar api = {\n noAuto: noAuto,\n config: config,\n dom: dom,\n library: library,\n parse: parse,\n findIconDefinition: findIconDefinition,\n icon: icon,\n text: text,\n counter: counter,\n layer: layer,\n toHtml: toHtml\n};\n\nvar autoReplace = function autoReplace() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _params$autoReplaceSv = params.autoReplaceSvgRoot,\n autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;\n if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n node: autoReplaceSvgRoot\n });\n};\n\nexport { icon, noAuto, config, toHtml, layer, text, counter, library, dom, parse, findIconDefinition };\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","function classname () {\n var result = {},\n objects = {},\n resultString = \"\";\n\n function add (strings) {\n classname.each(strings.split(\" \"), function (string) {\n result[string] = !!string;\n });\n }\n\n classname.each([].slice.call(arguments), function (x) {\n switch (classname.getType(x)) {\n case \"string\":\n case \"number\":\n add(x);\n break;\n\n case \"array\":\n add(classname.apply(null, x));\n break;\n\n case \"element\":\n add(classname(x.className || \"\"));\n break;\n\n case \"nodelist\":\n add(classname.apply(null, [].slice.call(x)));\n break;\n\n case \"jquery\":\n add(classname.apply(null, x.get()));\n break;\n\n case \"object\":\n objects = classname.extend(objects, x);\n break;\n }\n });\n\n result = classname.extend(result, objects);\n\n classname.each(result, function (val, key) {\n if (val) {\n resultString += \" \" + key;\n }\n });\n\n return resultString.substr(1);\n}\n\nclassname.setTo = function (elements) {\n var type = classname.getType(elements);\n\n if (type === \"element\") {\n elements = [elements];\n }\n\n if (type === \"jquery\") {\n elements = elements.get();\n }\n\n if (type === \"nodelist\") {\n elements = [].slice.call(elements);\n }\n\n return function () {\n var classNames = classname.apply(null, arguments);\n\n classname.each(elements, function (element) {\n element.className = classNames;\n });\n };\n};\n\nclassname.each = function (arr, fn) {\n var type = classname.getType(arr);\n\n if (type === \"array\") {\n for (var i = 0; i < arr.length; i++) {\n fn(arr[i], i);\n }\n }\n\n if (type === \"object\") {\n for (var key in arr) {\n fn(arr[key], key);\n }\n }\n};\n\nclassname.getType = function (x) {\n var type = Object.prototype.toString.call(x).slice(8, -1).toLowerCase();\n\n if (type === \"object\" && x.jquery) {\n return \"jquery\";\n }\n\n if (type.indexOf(\"element\") > 1) {\n return \"element\";\n }\n\n return type;\n};\n\nclassname.extend = function (obj1, obj2) {\n var result = {},\n objs = [obj1, obj2];\n\n classname.each(objs, function (obj) {\n classname.each(obj, function (val, key) {\n if (obj.hasOwnProperty(key)) {\n result[key] = val;\n }\n });\n });\n\n return result;\n};\n\nif (typeof module !== \"undefined\" && module.exports) {\n module.exports = classname;\n}\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n /* eslint no-param-reassign: 0 */\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar encode = function encode(str, defaultEncoder, charset) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n maybeMap: maybeMap,\n merge: merge\n};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = processNodes;\n\nvar _isEmptyTextNode = require('./utils/isEmptyTextNode');\n\nvar _isEmptyTextNode2 = _interopRequireDefault(_isEmptyTextNode);\n\nvar _convertNodeToElement = require('./convertNodeToElement');\n\nvar _convertNodeToElement2 = _interopRequireDefault(_convertNodeToElement);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Processes the nodes generated by htmlparser2 and convert them all into React elements\n *\n * @param {Object[]} nodes List of nodes to process\n * @param {Function} transform Transform function to optionally apply to nodes\n * @returns {React.Element[]} The list of processed React elements\n */\nfunction processNodes(nodes, transform) {\n\n return nodes.filter(function (node) {\n return !(0, _isEmptyTextNode2.default)(node);\n }).map(function (node, index) {\n\n // return the result of the transform function if applicable\n var transformed = void 0;\n if (typeof transform === 'function') {\n transformed = transform(node, index);\n if (transformed === null || !!transformed) {\n return transformed;\n }\n }\n\n // otherwise convert the node as standard\n return (0, _convertNodeToElement2.default)(node, index, transform);\n });\n}","/* global window */\nimport ponyfill from './ponyfill.js';\n\nvar root;\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = ponyfill(root);\nexport default result;\n","function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nmodule.exports = _inheritsLoose;","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options))\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$')\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar util = require('./utils');\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = util.assign(\n {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n }\n },\n Format\n);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n var prototype = Component.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component.displayName || Component.name;\n var newApiName =\n typeof Component.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component;\n}\n\nexport { polyfill };\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"javascript\", function(config, parserConfig) {\n var indentUnit = config.indentUnit;\n var statementIndent = parserConfig.statementIndent;\n var jsonldMode = parserConfig.jsonld;\n var jsonMode = parserConfig.json || jsonldMode;\n var trackScope = parserConfig.trackScope !== false\n var isTS = parserConfig.typescript;\n var wordRE = parserConfig.wordCharacters || /[\\w$\\xa1-\\uffff]/;\n\n // Tokenizer\n\n var keywords = function(){\n function kw(type) {return {type: type, style: \"keyword\"};}\n var A = kw(\"keyword a\"), B = kw(\"keyword b\"), C = kw(\"keyword c\"), D = kw(\"keyword d\");\n var operator = kw(\"operator\"), atom = {type: \"atom\", style: \"atom\"};\n\n return {\n \"if\": kw(\"if\"), \"while\": A, \"with\": A, \"else\": B, \"do\": B, \"try\": B, \"finally\": B,\n \"return\": D, \"break\": D, \"continue\": D, \"new\": kw(\"new\"), \"delete\": C, \"void\": C, \"throw\": C,\n \"debugger\": kw(\"debugger\"), \"var\": kw(\"var\"), \"const\": kw(\"var\"), \"let\": kw(\"var\"),\n \"function\": kw(\"function\"), \"catch\": kw(\"catch\"),\n \"for\": kw(\"for\"), \"switch\": kw(\"switch\"), \"case\": kw(\"case\"), \"default\": kw(\"default\"),\n \"in\": operator, \"typeof\": operator, \"instanceof\": operator,\n \"true\": atom, \"false\": atom, \"null\": atom, \"undefined\": atom, \"NaN\": atom, \"Infinity\": atom,\n \"this\": kw(\"this\"), \"class\": kw(\"class\"), \"super\": kw(\"atom\"),\n \"yield\": C, \"export\": kw(\"export\"), \"import\": kw(\"import\"), \"extends\": C,\n \"await\": C\n };\n }();\n\n var isOperatorChar = /[+\\-*&%=<>!?|~^@]/;\n var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)\"/;\n\n function readRegexp(stream) {\n var escaped = false, next, inSet = false;\n while ((next = stream.next()) != null) {\n if (!escaped) {\n if (next == \"/\" && !inSet) return;\n if (next == \"[\") inSet = true;\n else if (inSet && next == \"]\") inSet = false;\n }\n escaped = !escaped && next == \"\\\\\";\n }\n }\n\n // Used as scratch variables to communicate multiple values without\n // consing up tons of objects.\n var type, content;\n function ret(tp, style, cont) {\n type = tp; content = cont;\n return style;\n }\n function tokenBase(stream, state) {\n var ch = stream.next();\n if (ch == '\"' || ch == \"'\") {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n } else if (ch == \".\" && stream.match(/^\\d[\\d_]*(?:[eE][+\\-]?[\\d_]+)?/)) {\n return ret(\"number\", \"number\");\n } else if (ch == \".\" && stream.match(\"..\")) {\n return ret(\"spread\", \"meta\");\n } else if (/[\\[\\]{}\\(\\),;\\:\\.]/.test(ch)) {\n return ret(ch);\n } else if (ch == \"=\" && stream.eat(\">\")) {\n return ret(\"=>\", \"operator\");\n } else if (ch == \"0\" && stream.match(/^(?:x[\\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/)) {\n return ret(\"number\", \"number\");\n } else if (/\\d/.test(ch)) {\n stream.match(/^[\\d_]*(?:n|(?:\\.[\\d_]*)?(?:[eE][+\\-]?[\\d_]+)?)?/);\n return ret(\"number\", \"number\");\n } else if (ch == \"/\") {\n if (stream.eat(\"*\")) {\n state.tokenize = tokenComment;\n return tokenComment(stream, state);\n } else if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return ret(\"comment\", \"comment\");\n } else if (expressionAllowed(stream, state, 1)) {\n readRegexp(stream);\n stream.match(/^\\b(([gimyus])(?![gimyus]*\\2))+\\b/);\n return ret(\"regexp\", \"string-2\");\n } else {\n stream.eat(\"=\");\n return ret(\"operator\", \"operator\", stream.current());\n }\n } else if (ch == \"`\") {\n state.tokenize = tokenQuasi;\n return tokenQuasi(stream, state);\n } else if (ch == \"#\" && stream.peek() == \"!\") {\n stream.skipToEnd();\n return ret(\"meta\", \"meta\");\n } else if (ch == \"#\" && stream.eatWhile(wordRE)) {\n return ret(\"variable\", \"property\")\n } else if (ch == \"<\" && stream.match(\"!--\") ||\n (ch == \"-\" && stream.match(\"->\") && !/\\S/.test(stream.string.slice(0, stream.start)))) {\n stream.skipToEnd()\n return ret(\"comment\", \"comment\")\n } else if (isOperatorChar.test(ch)) {\n if (ch != \">\" || !state.lexical || state.lexical.type != \">\") {\n if (stream.eat(\"=\")) {\n if (ch == \"!\" || ch == \"=\") stream.eat(\"=\")\n } else if (/[<>*+\\-|&?]/.test(ch)) {\n stream.eat(ch)\n if (ch == \">\") stream.eat(ch)\n }\n }\n if (ch == \"?\" && stream.eat(\".\")) return ret(\".\")\n return ret(\"operator\", \"operator\", stream.current());\n } else if (wordRE.test(ch)) {\n stream.eatWhile(wordRE);\n var word = stream.current()\n if (state.lastType != \".\") {\n if (keywords.propertyIsEnumerable(word)) {\n var kw = keywords[word]\n return ret(kw.type, kw.style, word)\n }\n if (word == \"async\" && stream.match(/^(\\s|\\/\\*([^*]|\\*(?!\\/))*?\\*\\/)*[\\[\\(\\w]/, false))\n return ret(\"async\", \"keyword\", word)\n }\n return ret(\"variable\", \"variable\", word)\n }\n }\n\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, next;\n if (jsonldMode && stream.peek() == \"@\" && stream.match(isJsonldKeyword)){\n state.tokenize = tokenBase;\n return ret(\"jsonld-keyword\", \"meta\");\n }\n while ((next = stream.next()) != null) {\n if (next == quote && !escaped) break;\n escaped = !escaped && next == \"\\\\\";\n }\n if (!escaped) state.tokenize = tokenBase;\n return ret(\"string\", \"string\");\n };\n }\n\n function tokenComment(stream, state) {\n var maybeEnd = false, ch;\n while (ch = stream.next()) {\n if (ch == \"/\" && maybeEnd) {\n state.tokenize = tokenBase;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return ret(\"comment\", \"comment\");\n }\n\n function tokenQuasi(stream, state) {\n var escaped = false, next;\n while ((next = stream.next()) != null) {\n if (!escaped && (next == \"`\" || next == \"$\" && stream.eat(\"{\"))) {\n state.tokenize = tokenBase;\n break;\n }\n escaped = !escaped && next == \"\\\\\";\n }\n return ret(\"quasi\", \"string-2\", stream.current());\n }\n\n var brackets = \"([{}])\";\n // This is a crude lookahead trick to try and notice that we're\n // parsing the argument patterns for a fat-arrow function before we\n // actually hit the arrow token. It only works if the arrow is on\n // the same line as the arguments and there's no strange noise\n // (comments) in between. Fallback is to only notice when we hit the\n // arrow, and not declare the arguments as locals for the arrow\n // body.\n function findFatArrow(stream, state) {\n if (state.fatArrowAt) state.fatArrowAt = null;\n var arrow = stream.string.indexOf(\"=>\", stream.start);\n if (arrow < 0) return;\n\n if (isTS) { // Try to skip TypeScript return type declarations after the arguments\n var m = /:\\s*(?:\\w+(?:<[^>]*>|\\[\\])?|\\{[^}]*\\})\\s*$/.exec(stream.string.slice(stream.start, arrow))\n if (m) arrow = m.index\n }\n\n var depth = 0, sawSomething = false;\n for (var pos = arrow - 1; pos >= 0; --pos) {\n var ch = stream.string.charAt(pos);\n var bracket = brackets.indexOf(ch);\n if (bracket >= 0 && bracket < 3) {\n if (!depth) { ++pos; break; }\n if (--depth == 0) { if (ch == \"(\") sawSomething = true; break; }\n } else if (bracket >= 3 && bracket < 6) {\n ++depth;\n } else if (wordRE.test(ch)) {\n sawSomething = true;\n } else if (/[\"'\\/`]/.test(ch)) {\n for (;; --pos) {\n if (pos == 0) return\n var next = stream.string.charAt(pos - 1)\n if (next == ch && stream.string.charAt(pos - 2) != \"\\\\\") { pos--; break }\n }\n } else if (sawSomething && !depth) {\n ++pos;\n break;\n }\n }\n if (sawSomething && !depth) state.fatArrowAt = pos;\n }\n\n // Parser\n\n var atomicTypes = {\"atom\": true, \"number\": true, \"variable\": true, \"string\": true,\n \"regexp\": true, \"this\": true, \"import\": true, \"jsonld-keyword\": true};\n\n function JSLexical(indented, column, type, align, prev, info) {\n this.indented = indented;\n this.column = column;\n this.type = type;\n this.prev = prev;\n this.info = info;\n if (align != null) this.align = align;\n }\n\n function inScope(state, varname) {\n if (!trackScope) return false\n for (var v = state.localVars; v; v = v.next)\n if (v.name == varname) return true;\n for (var cx = state.context; cx; cx = cx.prev) {\n for (var v = cx.vars; v; v = v.next)\n if (v.name == varname) return true;\n }\n }\n\n function parseJS(state, style, type, content, stream) {\n var cc = state.cc;\n // Communicate our context to the combinators.\n // (Less wasteful than consing up a hundred closures on every call.)\n cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; cx.style = style;\n\n if (!state.lexical.hasOwnProperty(\"align\"))\n state.lexical.align = true;\n\n while(true) {\n var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement;\n if (combinator(type, content)) {\n while(cc.length && cc[cc.length - 1].lex)\n cc.pop()();\n if (cx.marked) return cx.marked;\n if (type == \"variable\" && inScope(state, content)) return \"variable-2\";\n return style;\n }\n }\n }\n\n // Combinator utils\n\n var cx = {state: null, column: null, marked: null, cc: null};\n function pass() {\n for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]);\n }\n function cont() {\n pass.apply(null, arguments);\n return true;\n }\n function inList(name, list) {\n for (var v = list; v; v = v.next) if (v.name == name) return true\n return false;\n }\n function register(varname) {\n var state = cx.state;\n cx.marked = \"def\";\n if (!trackScope) return\n if (state.context) {\n if (state.lexical.info == \"var\" && state.context && state.context.block) {\n // FIXME function decls are also not block scoped\n var newContext = registerVarScoped(varname, state.context)\n if (newContext != null) {\n state.context = newContext\n return\n }\n } else if (!inList(varname, state.localVars)) {\n state.localVars = new Var(varname, state.localVars)\n return\n }\n }\n // Fall through means this is global\n if (parserConfig.globalVars && !inList(varname, state.globalVars))\n state.globalVars = new Var(varname, state.globalVars)\n }\n function registerVarScoped(varname, context) {\n if (!context) {\n return null\n } else if (context.block) {\n var inner = registerVarScoped(varname, context.prev)\n if (!inner) return null\n if (inner == context.prev) return context\n return new Context(inner, context.vars, true)\n } else if (inList(varname, context.vars)) {\n return context\n } else {\n return new Context(context.prev, new Var(varname, context.vars), false)\n }\n }\n\n function isModifier(name) {\n return name == \"public\" || name == \"private\" || name == \"protected\" || name == \"abstract\" || name == \"readonly\"\n }\n\n // Combinators\n\n function Context(prev, vars, block) { this.prev = prev; this.vars = vars; this.block = block }\n function Var(name, next) { this.name = name; this.next = next }\n\n var defaultVars = new Var(\"this\", new Var(\"arguments\", null))\n function pushcontext() {\n cx.state.context = new Context(cx.state.context, cx.state.localVars, false)\n cx.state.localVars = defaultVars\n }\n function pushblockcontext() {\n cx.state.context = new Context(cx.state.context, cx.state.localVars, true)\n cx.state.localVars = null\n }\n function popcontext() {\n cx.state.localVars = cx.state.context.vars\n cx.state.context = cx.state.context.prev\n }\n popcontext.lex = true\n function pushlex(type, info) {\n var result = function() {\n var state = cx.state, indent = state.indented;\n if (state.lexical.type == \"stat\") indent = state.lexical.indented;\n else for (var outer = state.lexical; outer && outer.type == \")\" && outer.align; outer = outer.prev)\n indent = outer.indented;\n state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info);\n };\n result.lex = true;\n return result;\n }\n function poplex() {\n var state = cx.state;\n if (state.lexical.prev) {\n if (state.lexical.type == \")\")\n state.indented = state.lexical.indented;\n state.lexical = state.lexical.prev;\n }\n }\n poplex.lex = true;\n\n function expect(wanted) {\n function exp(type) {\n if (type == wanted) return cont();\n else if (wanted == \";\" || type == \"}\" || type == \")\" || type == \"]\") return pass();\n else return cont(exp);\n };\n return exp;\n }\n\n function statement(type, value) {\n if (type == \"var\") return cont(pushlex(\"vardef\", value), vardef, expect(\";\"), poplex);\n if (type == \"keyword a\") return cont(pushlex(\"form\"), parenExpr, statement, poplex);\n if (type == \"keyword b\") return cont(pushlex(\"form\"), statement, poplex);\n if (type == \"keyword d\") return cx.stream.match(/^\\s*$/, false) ? cont() : cont(pushlex(\"stat\"), maybeexpression, expect(\";\"), poplex);\n if (type == \"debugger\") return cont(expect(\";\"));\n if (type == \"{\") return cont(pushlex(\"}\"), pushblockcontext, block, poplex, popcontext);\n if (type == \";\") return cont();\n if (type == \"if\") {\n if (cx.state.lexical.info == \"else\" && cx.state.cc[cx.state.cc.length - 1] == poplex)\n cx.state.cc.pop()();\n return cont(pushlex(\"form\"), parenExpr, statement, poplex, maybeelse);\n }\n if (type == \"function\") return cont(functiondef);\n if (type == \"for\") return cont(pushlex(\"form\"), pushblockcontext, forspec, statement, popcontext, poplex);\n if (type == \"class\" || (isTS && value == \"interface\")) {\n cx.marked = \"keyword\"\n return cont(pushlex(\"form\", type == \"class\" ? type : value), className, poplex)\n }\n if (type == \"variable\") {\n if (isTS && value == \"declare\") {\n cx.marked = \"keyword\"\n return cont(statement)\n } else if (isTS && (value == \"module\" || value == \"enum\" || value == \"type\") && cx.stream.match(/^\\s*\\w/, false)) {\n cx.marked = \"keyword\"\n if (value == \"enum\") return cont(enumdef);\n else if (value == \"type\") return cont(typename, expect(\"operator\"), typeexpr, expect(\";\"));\n else return cont(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), block, poplex, poplex)\n } else if (isTS && value == \"namespace\") {\n cx.marked = \"keyword\"\n return cont(pushlex(\"form\"), expression, statement, poplex)\n } else if (isTS && value == \"abstract\") {\n cx.marked = \"keyword\"\n return cont(statement)\n } else {\n return cont(pushlex(\"stat\"), maybelabel);\n }\n }\n if (type == \"switch\") return cont(pushlex(\"form\"), parenExpr, expect(\"{\"), pushlex(\"}\", \"switch\"), pushblockcontext,\n block, poplex, poplex, popcontext);\n if (type == \"case\") return cont(expression, expect(\":\"));\n if (type == \"default\") return cont(expect(\":\"));\n if (type == \"catch\") return cont(pushlex(\"form\"), pushcontext, maybeCatchBinding, statement, poplex, popcontext);\n if (type == \"export\") return cont(pushlex(\"stat\"), afterExport, poplex);\n if (type == \"import\") return cont(pushlex(\"stat\"), afterImport, poplex);\n if (type == \"async\") return cont(statement)\n if (value == \"@\") return cont(expression, statement)\n return pass(pushlex(\"stat\"), expression, expect(\";\"), poplex);\n }\n function maybeCatchBinding(type) {\n if (type == \"(\") return cont(funarg, expect(\")\"))\n }\n function expression(type, value) {\n return expressionInner(type, value, false);\n }\n function expressionNoComma(type, value) {\n return expressionInner(type, value, true);\n }\n function parenExpr(type) {\n if (type != \"(\") return pass()\n return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex)\n }\n function expressionInner(type, value, noComma) {\n if (cx.state.fatArrowAt == cx.stream.start) {\n var body = noComma ? arrowBodyNoComma : arrowBody;\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, expect(\"=>\"), body, popcontext);\n else if (type == \"variable\") return pass(pushcontext, pattern, expect(\"=>\"), body, popcontext);\n }\n\n var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma;\n if (atomicTypes.hasOwnProperty(type)) return cont(maybeop);\n if (type == \"function\") return cont(functiondef, maybeop);\n if (type == \"class\" || (isTS && value == \"interface\")) { cx.marked = \"keyword\"; return cont(pushlex(\"form\"), classExpression, poplex); }\n if (type == \"keyword c\" || type == \"async\") return cont(noComma ? expressionNoComma : expression);\n if (type == \"(\") return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex, maybeop);\n if (type == \"operator\" || type == \"spread\") return cont(noComma ? expressionNoComma : expression);\n if (type == \"[\") return cont(pushlex(\"]\"), arrayLiteral, poplex, maybeop);\n if (type == \"{\") return contCommasep(objprop, \"}\", null, maybeop);\n if (type == \"quasi\") return pass(quasi, maybeop);\n if (type == \"new\") return cont(maybeTarget(noComma));\n return cont();\n }\n function maybeexpression(type) {\n if (type.match(/[;\\}\\)\\],]/)) return pass();\n return pass(expression);\n }\n\n function maybeoperatorComma(type, value) {\n if (type == \",\") return cont(maybeexpression);\n return maybeoperatorNoComma(type, value, false);\n }\n function maybeoperatorNoComma(type, value, noComma) {\n var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma;\n var expr = noComma == false ? expression : expressionNoComma;\n if (type == \"=>\") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext);\n if (type == \"operator\") {\n if (/\\+\\+|--/.test(value) || isTS && value == \"!\") return cont(me);\n if (isTS && value == \"<\" && cx.stream.match(/^([^<>]|<[^<>]*>)*>\\s*\\(/, false))\n return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, me);\n if (value == \"?\") return cont(expression, expect(\":\"), expr);\n return cont(expr);\n }\n if (type == \"quasi\") { return pass(quasi, me); }\n if (type == \";\") return;\n if (type == \"(\") return contCommasep(expressionNoComma, \")\", \"call\", me);\n if (type == \".\") return cont(property, me);\n if (type == \"[\") return cont(pushlex(\"]\"), maybeexpression, expect(\"]\"), poplex, me);\n if (isTS && value == \"as\") { cx.marked = \"keyword\"; return cont(typeexpr, me) }\n if (type == \"regexp\") {\n cx.state.lastType = cx.marked = \"operator\"\n cx.stream.backUp(cx.stream.pos - cx.stream.start - 1)\n return cont(expr)\n }\n }\n function quasi(type, value) {\n if (type != \"quasi\") return pass();\n if (value.slice(value.length - 2) != \"${\") return cont(quasi);\n return cont(maybeexpression, continueQuasi);\n }\n function continueQuasi(type) {\n if (type == \"}\") {\n cx.marked = \"string-2\";\n cx.state.tokenize = tokenQuasi;\n return cont(quasi);\n }\n }\n function arrowBody(type) {\n findFatArrow(cx.stream, cx.state);\n return pass(type == \"{\" ? statement : expression);\n }\n function arrowBodyNoComma(type) {\n findFatArrow(cx.stream, cx.state);\n return pass(type == \"{\" ? statement : expressionNoComma);\n }\n function maybeTarget(noComma) {\n return function(type) {\n if (type == \".\") return cont(noComma ? targetNoComma : target);\n else if (type == \"variable\" && isTS) return cont(maybeTypeArgs, noComma ? maybeoperatorNoComma : maybeoperatorComma)\n else return pass(noComma ? expressionNoComma : expression);\n };\n }\n function target(_, value) {\n if (value == \"target\") { cx.marked = \"keyword\"; return cont(maybeoperatorComma); }\n }\n function targetNoComma(_, value) {\n if (value == \"target\") { cx.marked = \"keyword\"; return cont(maybeoperatorNoComma); }\n }\n function maybelabel(type) {\n if (type == \":\") return cont(poplex, statement);\n return pass(maybeoperatorComma, expect(\";\"), poplex);\n }\n function property(type) {\n if (type == \"variable\") {cx.marked = \"property\"; return cont();}\n }\n function objprop(type, value) {\n if (type == \"async\") {\n cx.marked = \"property\";\n return cont(objprop);\n } else if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n if (value == \"get\" || value == \"set\") return cont(getterSetter);\n var m // Work around fat-arrow-detection complication for detecting typescript typed arrow params\n if (isTS && cx.state.fatArrowAt == cx.stream.start && (m = cx.stream.match(/^\\s*:\\s*/, false)))\n cx.state.fatArrowAt = cx.stream.pos + m[0].length\n return cont(afterprop);\n } else if (type == \"number\" || type == \"string\") {\n cx.marked = jsonldMode ? \"property\" : (cx.style + \" property\");\n return cont(afterprop);\n } else if (type == \"jsonld-keyword\") {\n return cont(afterprop);\n } else if (isTS && isModifier(value)) {\n cx.marked = \"keyword\"\n return cont(objprop)\n } else if (type == \"[\") {\n return cont(expression, maybetype, expect(\"]\"), afterprop);\n } else if (type == \"spread\") {\n return cont(expressionNoComma, afterprop);\n } else if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(objprop);\n } else if (type == \":\") {\n return pass(afterprop)\n }\n }\n function getterSetter(type) {\n if (type != \"variable\") return pass(afterprop);\n cx.marked = \"property\";\n return cont(functiondef);\n }\n function afterprop(type) {\n if (type == \":\") return cont(expressionNoComma);\n if (type == \"(\") return pass(functiondef);\n }\n function commasep(what, end, sep) {\n function proceed(type, value) {\n if (sep ? sep.indexOf(type) > -1 : type == \",\") {\n var lex = cx.state.lexical;\n if (lex.info == \"call\") lex.pos = (lex.pos || 0) + 1;\n return cont(function(type, value) {\n if (type == end || value == end) return pass()\n return pass(what)\n }, proceed);\n }\n if (type == end || value == end) return cont();\n if (sep && sep.indexOf(\";\") > -1) return pass(what)\n return cont(expect(end));\n }\n return function(type, value) {\n if (type == end || value == end) return cont();\n return pass(what, proceed);\n };\n }\n function contCommasep(what, end, info) {\n for (var i = 3; i < arguments.length; i++)\n cx.cc.push(arguments[i]);\n return cont(pushlex(end, info), commasep(what, end), poplex);\n }\n function block(type) {\n if (type == \"}\") return cont();\n return pass(statement, block);\n }\n function maybetype(type, value) {\n if (isTS) {\n if (type == \":\") return cont(typeexpr);\n if (value == \"?\") return cont(maybetype);\n }\n }\n function maybetypeOrIn(type, value) {\n if (isTS && (type == \":\" || value == \"in\")) return cont(typeexpr)\n }\n function mayberettype(type) {\n if (isTS && type == \":\") {\n if (cx.stream.match(/^\\s*\\w+\\s+is\\b/, false)) return cont(expression, isKW, typeexpr)\n else return cont(typeexpr)\n }\n }\n function isKW(_, value) {\n if (value == \"is\") {\n cx.marked = \"keyword\"\n return cont()\n }\n }\n function typeexpr(type, value) {\n if (value == \"keyof\" || value == \"typeof\" || value == \"infer\" || value == \"readonly\") {\n cx.marked = \"keyword\"\n return cont(value == \"typeof\" ? expressionNoComma : typeexpr)\n }\n if (type == \"variable\" || value == \"void\") {\n cx.marked = \"type\"\n return cont(afterType)\n }\n if (value == \"|\" || value == \"&\") return cont(typeexpr)\n if (type == \"string\" || type == \"number\" || type == \"atom\") return cont(afterType);\n if (type == \"[\") return cont(pushlex(\"]\"), commasep(typeexpr, \"]\", \",\"), poplex, afterType)\n if (type == \"{\") return cont(pushlex(\"}\"), typeprops, poplex, afterType)\n if (type == \"(\") return cont(commasep(typearg, \")\"), maybeReturnType, afterType)\n if (type == \"<\") return cont(commasep(typeexpr, \">\"), typeexpr)\n if (type == \"quasi\") { return pass(quasiType, afterType); }\n }\n function maybeReturnType(type) {\n if (type == \"=>\") return cont(typeexpr)\n }\n function typeprops(type) {\n if (type.match(/[\\}\\)\\]]/)) return cont()\n if (type == \",\" || type == \";\") return cont(typeprops)\n return pass(typeprop, typeprops)\n }\n function typeprop(type, value) {\n if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\"\n return cont(typeprop)\n } else if (value == \"?\" || type == \"number\" || type == \"string\") {\n return cont(typeprop)\n } else if (type == \":\") {\n return cont(typeexpr)\n } else if (type == \"[\") {\n return cont(expect(\"variable\"), maybetypeOrIn, expect(\"]\"), typeprop)\n } else if (type == \"(\") {\n return pass(functiondecl, typeprop)\n } else if (!type.match(/[;\\}\\)\\],]/)) {\n return cont()\n }\n }\n function quasiType(type, value) {\n if (type != \"quasi\") return pass();\n if (value.slice(value.length - 2) != \"${\") return cont(quasiType);\n return cont(typeexpr, continueQuasiType);\n }\n function continueQuasiType(type) {\n if (type == \"}\") {\n cx.marked = \"string-2\";\n cx.state.tokenize = tokenQuasi;\n return cont(quasiType);\n }\n }\n function typearg(type, value) {\n if (type == \"variable\" && cx.stream.match(/^\\s*[?:]/, false) || value == \"?\") return cont(typearg)\n if (type == \":\") return cont(typeexpr)\n if (type == \"spread\") return cont(typearg)\n return pass(typeexpr)\n }\n function afterType(type, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType)\n if (value == \"|\" || type == \".\" || value == \"&\") return cont(typeexpr)\n if (type == \"[\") return cont(typeexpr, expect(\"]\"), afterType)\n if (value == \"extends\" || value == \"implements\") { cx.marked = \"keyword\"; return cont(typeexpr) }\n if (value == \"?\") return cont(typeexpr, expect(\":\"), typeexpr)\n }\n function maybeTypeArgs(_, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType)\n }\n function typeparam() {\n return pass(typeexpr, maybeTypeDefault)\n }\n function maybeTypeDefault(_, value) {\n if (value == \"=\") return cont(typeexpr)\n }\n function vardef(_, value) {\n if (value == \"enum\") {cx.marked = \"keyword\"; return cont(enumdef)}\n return pass(pattern, maybetype, maybeAssign, vardefCont);\n }\n function pattern(type, value) {\n if (isTS && isModifier(value)) { cx.marked = \"keyword\"; return cont(pattern) }\n if (type == \"variable\") { register(value); return cont(); }\n if (type == \"spread\") return cont(pattern);\n if (type == \"[\") return contCommasep(eltpattern, \"]\");\n if (type == \"{\") return contCommasep(proppattern, \"}\");\n }\n function proppattern(type, value) {\n if (type == \"variable\" && !cx.stream.match(/^\\s*:/, false)) {\n register(value);\n return cont(maybeAssign);\n }\n if (type == \"variable\") cx.marked = \"property\";\n if (type == \"spread\") return cont(pattern);\n if (type == \"}\") return pass();\n if (type == \"[\") return cont(expression, expect(']'), expect(':'), proppattern);\n return cont(expect(\":\"), pattern, maybeAssign);\n }\n function eltpattern() {\n return pass(pattern, maybeAssign)\n }\n function maybeAssign(_type, value) {\n if (value == \"=\") return cont(expressionNoComma);\n }\n function vardefCont(type) {\n if (type == \",\") return cont(vardef);\n }\n function maybeelse(type, value) {\n if (type == \"keyword b\" && value == \"else\") return cont(pushlex(\"form\", \"else\"), statement, poplex);\n }\n function forspec(type, value) {\n if (value == \"await\") return cont(forspec);\n if (type == \"(\") return cont(pushlex(\")\"), forspec1, poplex);\n }\n function forspec1(type) {\n if (type == \"var\") return cont(vardef, forspec2);\n if (type == \"variable\") return cont(forspec2);\n return pass(forspec2)\n }\n function forspec2(type, value) {\n if (type == \")\") return cont()\n if (type == \";\") return cont(forspec2)\n if (value == \"in\" || value == \"of\") { cx.marked = \"keyword\"; return cont(expression, forspec2) }\n return pass(expression, forspec2)\n }\n function functiondef(type, value) {\n if (value == \"*\") {cx.marked = \"keyword\"; return cont(functiondef);}\n if (type == \"variable\") {register(value); return cont(functiondef);}\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, statement, popcontext);\n if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondef)\n }\n function functiondecl(type, value) {\n if (value == \"*\") {cx.marked = \"keyword\"; return cont(functiondecl);}\n if (type == \"variable\") {register(value); return cont(functiondecl);}\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, popcontext);\n if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondecl)\n }\n function typename(type, value) {\n if (type == \"keyword\" || type == \"variable\") {\n cx.marked = \"type\"\n return cont(typename)\n } else if (value == \"<\") {\n return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex)\n }\n }\n function funarg(type, value) {\n if (value == \"@\") cont(expression, funarg)\n if (type == \"spread\") return cont(funarg);\n if (isTS && isModifier(value)) { cx.marked = \"keyword\"; return cont(funarg); }\n if (isTS && type == \"this\") return cont(maybetype, maybeAssign)\n return pass(pattern, maybetype, maybeAssign);\n }\n function classExpression(type, value) {\n // Class expressions may have an optional name.\n if (type == \"variable\") return className(type, value);\n return classNameAfter(type, value);\n }\n function className(type, value) {\n if (type == \"variable\") {register(value); return cont(classNameAfter);}\n }\n function classNameAfter(type, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, classNameAfter)\n if (value == \"extends\" || value == \"implements\" || (isTS && type == \",\")) {\n if (value == \"implements\") cx.marked = \"keyword\";\n return cont(isTS ? typeexpr : expression, classNameAfter);\n }\n if (type == \"{\") return cont(pushlex(\"}\"), classBody, poplex);\n }\n function classBody(type, value) {\n if (type == \"async\" ||\n (type == \"variable\" &&\n (value == \"static\" || value == \"get\" || value == \"set\" || (isTS && isModifier(value))) &&\n cx.stream.match(/^\\s+[\\w$\\xa1-\\uffff]/, false))) {\n cx.marked = \"keyword\";\n return cont(classBody);\n }\n if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n return cont(classfield, classBody);\n }\n if (type == \"number\" || type == \"string\") return cont(classfield, classBody);\n if (type == \"[\")\n return cont(expression, maybetype, expect(\"]\"), classfield, classBody)\n if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(classBody);\n }\n if (isTS && type == \"(\") return pass(functiondecl, classBody)\n if (type == \";\" || type == \",\") return cont(classBody);\n if (type == \"}\") return cont();\n if (value == \"@\") return cont(expression, classBody)\n }\n function classfield(type, value) {\n if (value == \"!\") return cont(classfield)\n if (value == \"?\") return cont(classfield)\n if (type == \":\") return cont(typeexpr, maybeAssign)\n if (value == \"=\") return cont(expressionNoComma)\n var context = cx.state.lexical.prev, isInterface = context && context.info == \"interface\"\n return pass(isInterface ? functiondecl : functiondef)\n }\n function afterExport(type, value) {\n if (value == \"*\") { cx.marked = \"keyword\"; return cont(maybeFrom, expect(\";\")); }\n if (value == \"default\") { cx.marked = \"keyword\"; return cont(expression, expect(\";\")); }\n if (type == \"{\") return cont(commasep(exportField, \"}\"), maybeFrom, expect(\";\"));\n return pass(statement);\n }\n function exportField(type, value) {\n if (value == \"as\") { cx.marked = \"keyword\"; return cont(expect(\"variable\")); }\n if (type == \"variable\") return pass(expressionNoComma, exportField);\n }\n function afterImport(type) {\n if (type == \"string\") return cont();\n if (type == \"(\") return pass(expression);\n if (type == \".\") return pass(maybeoperatorComma);\n return pass(importSpec, maybeMoreImports, maybeFrom);\n }\n function importSpec(type, value) {\n if (type == \"{\") return contCommasep(importSpec, \"}\");\n if (type == \"variable\") register(value);\n if (value == \"*\") cx.marked = \"keyword\";\n return cont(maybeAs);\n }\n function maybeMoreImports(type) {\n if (type == \",\") return cont(importSpec, maybeMoreImports)\n }\n function maybeAs(_type, value) {\n if (value == \"as\") { cx.marked = \"keyword\"; return cont(importSpec); }\n }\n function maybeFrom(_type, value) {\n if (value == \"from\") { cx.marked = \"keyword\"; return cont(expression); }\n }\n function arrayLiteral(type) {\n if (type == \"]\") return cont();\n return pass(commasep(expressionNoComma, \"]\"));\n }\n function enumdef() {\n return pass(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), commasep(enummember, \"}\"), poplex, poplex)\n }\n function enummember() {\n return pass(pattern, maybeAssign);\n }\n\n function isContinuedStatement(state, textAfter) {\n return state.lastType == \"operator\" || state.lastType == \",\" ||\n isOperatorChar.test(textAfter.charAt(0)) ||\n /[,.]/.test(textAfter.charAt(0));\n }\n\n function expressionAllowed(stream, state, backUp) {\n return state.tokenize == tokenBase &&\n /^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\\[{}\\(,;:]|=>)$/.test(state.lastType) ||\n (state.lastType == \"quasi\" && /\\{\\s*$/.test(stream.string.slice(0, stream.pos - (backUp || 0))))\n }\n\n // Interface\n\n return {\n startState: function(basecolumn) {\n var state = {\n tokenize: tokenBase,\n lastType: \"sof\",\n cc: [],\n lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, \"block\", false),\n localVars: parserConfig.localVars,\n context: parserConfig.localVars && new Context(null, null, false),\n indented: basecolumn || 0\n };\n if (parserConfig.globalVars && typeof parserConfig.globalVars == \"object\")\n state.globalVars = parserConfig.globalVars;\n return state;\n },\n\n token: function(stream, state) {\n if (stream.sol()) {\n if (!state.lexical.hasOwnProperty(\"align\"))\n state.lexical.align = false;\n state.indented = stream.indentation();\n findFatArrow(stream, state);\n }\n if (state.tokenize != tokenComment && stream.eatSpace()) return null;\n var style = state.tokenize(stream, state);\n if (type == \"comment\") return style;\n state.lastType = type == \"operator\" && (content == \"++\" || content == \"--\") ? \"incdec\" : type;\n return parseJS(state, style, type, content, stream);\n },\n\n indent: function(state, textAfter) {\n if (state.tokenize == tokenComment || state.tokenize == tokenQuasi) return CodeMirror.Pass;\n if (state.tokenize != tokenBase) return 0;\n var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical, top\n // Kludge to prevent 'maybelse' from blocking lexical scope pops\n if (!/^\\s*else\\b/.test(textAfter)) for (var i = state.cc.length - 1; i >= 0; --i) {\n var c = state.cc[i];\n if (c == poplex) lexical = lexical.prev;\n else if (c != maybeelse && c != popcontext) break;\n }\n while ((lexical.type == \"stat\" || lexical.type == \"form\") &&\n (firstChar == \"}\" || ((top = state.cc[state.cc.length - 1]) &&\n (top == maybeoperatorComma || top == maybeoperatorNoComma) &&\n !/^[,\\.=+\\-*:?[\\(]/.test(textAfter))))\n lexical = lexical.prev;\n if (statementIndent && lexical.type == \")\" && lexical.prev.type == \"stat\")\n lexical = lexical.prev;\n var type = lexical.type, closing = firstChar == type;\n\n if (type == \"vardef\") return lexical.indented + (state.lastType == \"operator\" || state.lastType == \",\" ? lexical.info.length + 1 : 0);\n else if (type == \"form\" && firstChar == \"{\") return lexical.indented;\n else if (type == \"form\") return lexical.indented + indentUnit;\n else if (type == \"stat\")\n return lexical.indented + (isContinuedStatement(state, textAfter) ? statementIndent || indentUnit : 0);\n else if (lexical.info == \"switch\" && !closing && parserConfig.doubleIndentSwitch != false)\n return lexical.indented + (/^(?:case|default)\\b/.test(textAfter) ? indentUnit : 2 * indentUnit);\n else if (lexical.align) return lexical.column + (closing ? 0 : 1);\n else return lexical.indented + (closing ? 0 : indentUnit);\n },\n\n electricInput: /^\\s*(?:case .*?:|default:|\\{|\\})$/,\n blockCommentStart: jsonMode ? null : \"/*\",\n blockCommentEnd: jsonMode ? null : \"*/\",\n blockCommentContinue: jsonMode ? null : \" * \",\n lineComment: jsonMode ? null : \"//\",\n fold: \"brace\",\n closeBrackets: \"()[]{}''\\\"\\\"``\",\n\n helperType: jsonMode ? \"json\" : \"javascript\",\n jsonldMode: jsonldMode,\n jsonMode: jsonMode,\n\n expressionAllowed: expressionAllowed,\n\n skipExpression: function(state) {\n parseJS(state, \"atom\", \"atom\", \"true\", new CodeMirror.StringStream(\"\", 2, null))\n }\n };\n});\n\nCodeMirror.registerHelper(\"wordChars\", \"javascript\", /[\\w$]/);\n\nCodeMirror.defineMIME(\"text/javascript\", \"javascript\");\nCodeMirror.defineMIME(\"text/ecmascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/javascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/x-javascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/ecmascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/json\", { name: \"javascript\", json: true });\nCodeMirror.defineMIME(\"application/x-json\", { name: \"javascript\", json: true });\nCodeMirror.defineMIME(\"application/manifest+json\", { name: \"javascript\", json: true })\nCodeMirror.defineMIME(\"application/ld+json\", { name: \"javascript\", jsonld: true });\nCodeMirror.defineMIME(\"text/typescript\", { name: \"javascript\", typescript: true });\nCodeMirror.defineMIME(\"application/typescript\", { name: \"javascript\", typescript: true });\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nvar htmlConfig = {\n autoSelfClosers: {'area': true, 'base': true, 'br': true, 'col': true, 'command': true,\n 'embed': true, 'frame': true, 'hr': true, 'img': true, 'input': true,\n 'keygen': true, 'link': true, 'meta': true, 'param': true, 'source': true,\n 'track': true, 'wbr': true, 'menuitem': true},\n implicitlyClosed: {'dd': true, 'li': true, 'optgroup': true, 'option': true, 'p': true,\n 'rp': true, 'rt': true, 'tbody': true, 'td': true, 'tfoot': true,\n 'th': true, 'tr': true},\n contextGrabbers: {\n 'dd': {'dd': true, 'dt': true},\n 'dt': {'dd': true, 'dt': true},\n 'li': {'li': true},\n 'option': {'option': true, 'optgroup': true},\n 'optgroup': {'optgroup': true},\n 'p': {'address': true, 'article': true, 'aside': true, 'blockquote': true, 'dir': true,\n 'div': true, 'dl': true, 'fieldset': true, 'footer': true, 'form': true,\n 'h1': true, 'h2': true, 'h3': true, 'h4': true, 'h5': true, 'h6': true,\n 'header': true, 'hgroup': true, 'hr': true, 'menu': true, 'nav': true, 'ol': true,\n 'p': true, 'pre': true, 'section': true, 'table': true, 'ul': true},\n 'rp': {'rp': true, 'rt': true},\n 'rt': {'rp': true, 'rt': true},\n 'tbody': {'tbody': true, 'tfoot': true},\n 'td': {'td': true, 'th': true},\n 'tfoot': {'tbody': true},\n 'th': {'td': true, 'th': true},\n 'thead': {'tbody': true, 'tfoot': true},\n 'tr': {'tr': true}\n },\n doNotIndent: {\"pre\": true},\n allowUnquoted: true,\n allowMissing: true,\n caseFold: true\n}\n\nvar xmlConfig = {\n autoSelfClosers: {},\n implicitlyClosed: {},\n contextGrabbers: {},\n doNotIndent: {},\n allowUnquoted: false,\n allowMissing: false,\n allowMissingTagName: false,\n caseFold: false\n}\n\nCodeMirror.defineMode(\"xml\", function(editorConf, config_) {\n var indentUnit = editorConf.indentUnit\n var config = {}\n var defaults = config_.htmlMode ? htmlConfig : xmlConfig\n for (var prop in defaults) config[prop] = defaults[prop]\n for (var prop in config_) config[prop] = config_[prop]\n\n // Return variables for tokenizers\n var type, setStyle;\n\n function inText(stream, state) {\n function chain(parser) {\n state.tokenize = parser;\n return parser(stream, state);\n }\n\n var ch = stream.next();\n if (ch == \"<\") {\n if (stream.eat(\"!\")) {\n if (stream.eat(\"[\")) {\n if (stream.match(\"CDATA[\")) return chain(inBlock(\"atom\", \"]]>\"));\n else return null;\n } else if (stream.match(\"--\")) {\n return chain(inBlock(\"comment\", \"-->\"));\n } else if (stream.match(\"DOCTYPE\", true, true)) {\n stream.eatWhile(/[\\w\\._\\-]/);\n return chain(doctype(1));\n } else {\n return null;\n }\n } else if (stream.eat(\"?\")) {\n stream.eatWhile(/[\\w\\._\\-]/);\n state.tokenize = inBlock(\"meta\", \"?>\");\n return \"meta\";\n } else {\n type = stream.eat(\"/\") ? \"closeTag\" : \"openTag\";\n state.tokenize = inTag;\n return \"tag bracket\";\n }\n } else if (ch == \"&\") {\n var ok;\n if (stream.eat(\"#\")) {\n if (stream.eat(\"x\")) {\n ok = stream.eatWhile(/[a-fA-F\\d]/) && stream.eat(\";\");\n } else {\n ok = stream.eatWhile(/[\\d]/) && stream.eat(\";\");\n }\n } else {\n ok = stream.eatWhile(/[\\w\\.\\-:]/) && stream.eat(\";\");\n }\n return ok ? \"atom\" : \"error\";\n } else {\n stream.eatWhile(/[^&<]/);\n return null;\n }\n }\n inText.isInText = true;\n\n function inTag(stream, state) {\n var ch = stream.next();\n if (ch == \">\" || (ch == \"/\" && stream.eat(\">\"))) {\n state.tokenize = inText;\n type = ch == \">\" ? \"endTag\" : \"selfcloseTag\";\n return \"tag bracket\";\n } else if (ch == \"=\") {\n type = \"equals\";\n return null;\n } else if (ch == \"<\") {\n state.tokenize = inText;\n state.state = baseState;\n state.tagName = state.tagStart = null;\n var next = state.tokenize(stream, state);\n return next ? next + \" tag error\" : \"tag error\";\n } else if (/[\\'\\\"]/.test(ch)) {\n state.tokenize = inAttribute(ch);\n state.stringStartCol = stream.column();\n return state.tokenize(stream, state);\n } else {\n stream.match(/^[^\\s\\u00a0=<>\\\"\\']*[^\\s\\u00a0=<>\\\"\\'\\/]/);\n return \"word\";\n }\n }\n\n function inAttribute(quote) {\n var closure = function(stream, state) {\n while (!stream.eol()) {\n if (stream.next() == quote) {\n state.tokenize = inTag;\n break;\n }\n }\n return \"string\";\n };\n closure.isInAttribute = true;\n return closure;\n }\n\n function inBlock(style, terminator) {\n return function(stream, state) {\n while (!stream.eol()) {\n if (stream.match(terminator)) {\n state.tokenize = inText;\n break;\n }\n stream.next();\n }\n return style;\n }\n }\n\n function doctype(depth) {\n return function(stream, state) {\n var ch;\n while ((ch = stream.next()) != null) {\n if (ch == \"<\") {\n state.tokenize = doctype(depth + 1);\n return state.tokenize(stream, state);\n } else if (ch == \">\") {\n if (depth == 1) {\n state.tokenize = inText;\n break;\n } else {\n state.tokenize = doctype(depth - 1);\n return state.tokenize(stream, state);\n }\n }\n }\n return \"meta\";\n };\n }\n\n function Context(state, tagName, startOfLine) {\n this.prev = state.context;\n this.tagName = tagName || \"\";\n this.indent = state.indented;\n this.startOfLine = startOfLine;\n if (config.doNotIndent.hasOwnProperty(tagName) || (state.context && state.context.noIndent))\n this.noIndent = true;\n }\n function popContext(state) {\n if (state.context) state.context = state.context.prev;\n }\n function maybePopContext(state, nextTagName) {\n var parentTagName;\n while (true) {\n if (!state.context) {\n return;\n }\n parentTagName = state.context.tagName;\n if (!config.contextGrabbers.hasOwnProperty(parentTagName) ||\n !config.contextGrabbers[parentTagName].hasOwnProperty(nextTagName)) {\n return;\n }\n popContext(state);\n }\n }\n\n function baseState(type, stream, state) {\n if (type == \"openTag\") {\n state.tagStart = stream.column();\n return tagNameState;\n } else if (type == \"closeTag\") {\n return closeTagNameState;\n } else {\n return baseState;\n }\n }\n function tagNameState(type, stream, state) {\n if (type == \"word\") {\n state.tagName = stream.current();\n setStyle = \"tag\";\n return attrState;\n } else if (config.allowMissingTagName && type == \"endTag\") {\n setStyle = \"tag bracket\";\n return attrState(type, stream, state);\n } else {\n setStyle = \"error\";\n return tagNameState;\n }\n }\n function closeTagNameState(type, stream, state) {\n if (type == \"word\") {\n var tagName = stream.current();\n if (state.context && state.context.tagName != tagName &&\n config.implicitlyClosed.hasOwnProperty(state.context.tagName))\n popContext(state);\n if ((state.context && state.context.tagName == tagName) || config.matchClosing === false) {\n setStyle = \"tag\";\n return closeState;\n } else {\n setStyle = \"tag error\";\n return closeStateErr;\n }\n } else if (config.allowMissingTagName && type == \"endTag\") {\n setStyle = \"tag bracket\";\n return closeState(type, stream, state);\n } else {\n setStyle = \"error\";\n return closeStateErr;\n }\n }\n\n function closeState(type, _stream, state) {\n if (type != \"endTag\") {\n setStyle = \"error\";\n return closeState;\n }\n popContext(state);\n return baseState;\n }\n function closeStateErr(type, stream, state) {\n setStyle = \"error\";\n return closeState(type, stream, state);\n }\n\n function attrState(type, _stream, state) {\n if (type == \"word\") {\n setStyle = \"attribute\";\n return attrEqState;\n } else if (type == \"endTag\" || type == \"selfcloseTag\") {\n var tagName = state.tagName, tagStart = state.tagStart;\n state.tagName = state.tagStart = null;\n if (type == \"selfcloseTag\" ||\n config.autoSelfClosers.hasOwnProperty(tagName)) {\n maybePopContext(state, tagName);\n } else {\n maybePopContext(state, tagName);\n state.context = new Context(state, tagName, tagStart == state.indented);\n }\n return baseState;\n }\n setStyle = \"error\";\n return attrState;\n }\n function attrEqState(type, stream, state) {\n if (type == \"equals\") return attrValueState;\n if (!config.allowMissing) setStyle = \"error\";\n return attrState(type, stream, state);\n }\n function attrValueState(type, stream, state) {\n if (type == \"string\") return attrContinuedState;\n if (type == \"word\" && config.allowUnquoted) {setStyle = \"string\"; return attrState;}\n setStyle = \"error\";\n return attrState(type, stream, state);\n }\n function attrContinuedState(type, stream, state) {\n if (type == \"string\") return attrContinuedState;\n return attrState(type, stream, state);\n }\n\n return {\n startState: function(baseIndent) {\n var state = {tokenize: inText,\n state: baseState,\n indented: baseIndent || 0,\n tagName: null, tagStart: null,\n context: null}\n if (baseIndent != null) state.baseIndent = baseIndent\n return state\n },\n\n token: function(stream, state) {\n if (!state.tagName && stream.sol())\n state.indented = stream.indentation();\n\n if (stream.eatSpace()) return null;\n type = null;\n var style = state.tokenize(stream, state);\n if ((style || type) && style != \"comment\") {\n setStyle = null;\n state.state = state.state(type || style, stream, state);\n if (setStyle)\n style = setStyle == \"error\" ? style + \" error\" : setStyle;\n }\n return style;\n },\n\n indent: function(state, textAfter, fullLine) {\n var context = state.context;\n // Indent multi-line strings (e.g. css).\n if (state.tokenize.isInAttribute) {\n if (state.tagStart == state.indented)\n return state.stringStartCol + 1;\n else\n return state.indented + indentUnit;\n }\n if (context && context.noIndent) return CodeMirror.Pass;\n if (state.tokenize != inTag && state.tokenize != inText)\n return fullLine ? fullLine.match(/^(\\s*)/)[0].length : 0;\n // Indent the starts of attribute names.\n if (state.tagName) {\n if (config.multilineTagIndentPastTag !== false)\n return state.tagStart + state.tagName.length + 2;\n else\n return state.tagStart + indentUnit * (config.multilineTagIndentFactor || 1);\n }\n if (config.alignCDATA && /$/,\n blockCommentStart: \"\",\n\n configuration: config.htmlMode ? \"html\" : \"xml\",\n helperType: config.htmlMode ? \"html\" : \"xml\",\n\n skipAttribute: function(state) {\n if (state.state == attrValueState)\n state.state = attrState\n },\n\n xmlCurrentTag: function(state) {\n return state.tagName ? {name: state.tagName, close: state.type == \"closeTag\"} : null\n },\n\n xmlCurrentContext: function(state) {\n var context = []\n for (var cx = state.context; cx; cx = cx.prev)\n context.push(cx.tagName)\n return context.reverse()\n }\n };\n});\n\nCodeMirror.defineMIME(\"text/xml\", \"xml\");\nCodeMirror.defineMIME(\"application/xml\", \"xml\");\nif (!CodeMirror.mimeModes.hasOwnProperty(\"text/html\"))\n CodeMirror.defineMIME(\"text/html\", {name: \"xml\", htmlMode: true});\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../xml/xml\"), require(\"../javascript/javascript\"), require(\"../css/css\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../xml/xml\", \"../javascript/javascript\", \"../css/css\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var defaultTags = {\n script: [\n [\"lang\", /(javascript|babel)/i, \"javascript\"],\n [\"type\", /^(?:text|application)\\/(?:x-)?(?:java|ecma)script$|^module$|^$/i, \"javascript\"],\n [\"type\", /./, \"text/plain\"],\n [null, null, \"javascript\"]\n ],\n style: [\n [\"lang\", /^css$/i, \"css\"],\n [\"type\", /^(text\\/)?(x-)?(stylesheet|css)$/i, \"css\"],\n [\"type\", /./, \"text/plain\"],\n [null, null, \"css\"]\n ]\n };\n\n function maybeBackup(stream, pat, style) {\n var cur = stream.current(), close = cur.search(pat);\n if (close > -1) {\n stream.backUp(cur.length - close);\n } else if (cur.match(/<\\/?$/)) {\n stream.backUp(cur.length);\n if (!stream.match(pat, false)) stream.match(cur);\n }\n return style;\n }\n\n var attrRegexpCache = {};\n function getAttrRegexp(attr) {\n var regexp = attrRegexpCache[attr];\n if (regexp) return regexp;\n return attrRegexpCache[attr] = new RegExp(\"\\\\s+\" + attr + \"\\\\s*=\\\\s*('|\\\")?([^'\\\"]+)('|\\\")?\\\\s*\");\n }\n\n function getAttrValue(text, attr) {\n var match = text.match(getAttrRegexp(attr))\n return match ? /^\\s*(.*?)\\s*$/.exec(match[2])[1] : \"\"\n }\n\n function getTagRegexp(tagName, anchored) {\n return new RegExp((anchored ? \"^\" : \"\") + \"<\\/\\s*\" + tagName + \"\\s*>\", \"i\");\n }\n\n function addTags(from, to) {\n for (var tag in from) {\n var dest = to[tag] || (to[tag] = []);\n var source = from[tag];\n for (var i = source.length - 1; i >= 0; i--)\n dest.unshift(source[i])\n }\n }\n\n function findMatchingMode(tagInfo, tagText) {\n for (var i = 0; i < tagInfo.length; i++) {\n var spec = tagInfo[i];\n if (!spec[0] || spec[1].test(getAttrValue(tagText, spec[0]))) return spec[2];\n }\n }\n\n CodeMirror.defineMode(\"htmlmixed\", function (config, parserConfig) {\n var htmlMode = CodeMirror.getMode(config, {\n name: \"xml\",\n htmlMode: true,\n multilineTagIndentFactor: parserConfig.multilineTagIndentFactor,\n multilineTagIndentPastTag: parserConfig.multilineTagIndentPastTag,\n allowMissingTagName: parserConfig.allowMissingTagName,\n });\n\n var tags = {};\n var configTags = parserConfig && parserConfig.tags, configScript = parserConfig && parserConfig.scriptTypes;\n addTags(defaultTags, tags);\n if (configTags) addTags(configTags, tags);\n if (configScript) for (var i = configScript.length - 1; i >= 0; i--)\n tags.script.unshift([\"type\", configScript[i].matches, configScript[i].mode])\n\n function html(stream, state) {\n var style = htmlMode.token(stream, state.htmlState), tag = /\\btag\\b/.test(style), tagName\n if (tag && !/[<>\\s\\/]/.test(stream.current()) &&\n (tagName = state.htmlState.tagName && state.htmlState.tagName.toLowerCase()) &&\n tags.hasOwnProperty(tagName)) {\n state.inTag = tagName + \" \"\n } else if (state.inTag && tag && />$/.test(stream.current())) {\n var inTag = /^([\\S]+) (.*)/.exec(state.inTag)\n state.inTag = null\n var modeSpec = stream.current() == \">\" && findMatchingMode(tags[inTag[1]], inTag[2])\n var mode = CodeMirror.getMode(config, modeSpec)\n var endTagA = getTagRegexp(inTag[1], true), endTag = getTagRegexp(inTag[1], false);\n state.token = function (stream, state) {\n if (stream.match(endTagA, false)) {\n state.token = html;\n state.localState = state.localMode = null;\n return null;\n }\n return maybeBackup(stream, endTag, state.localMode.token(stream, state.localState));\n };\n state.localMode = mode;\n state.localState = CodeMirror.startState(mode, htmlMode.indent(state.htmlState, \"\", \"\"));\n } else if (state.inTag) {\n state.inTag += stream.current()\n if (stream.eol()) state.inTag += \" \"\n }\n return style;\n };\n\n return {\n startState: function () {\n var state = CodeMirror.startState(htmlMode);\n return {token: html, inTag: null, localMode: null, localState: null, htmlState: state};\n },\n\n copyState: function (state) {\n var local;\n if (state.localState) {\n local = CodeMirror.copyState(state.localMode, state.localState);\n }\n return {token: state.token, inTag: state.inTag,\n localMode: state.localMode, localState: local,\n htmlState: CodeMirror.copyState(htmlMode, state.htmlState)};\n },\n\n token: function (stream, state) {\n return state.token(stream, state);\n },\n\n indent: function (state, textAfter, line) {\n if (!state.localMode || /^\\s*<\\//.test(textAfter))\n return htmlMode.indent(state.htmlState, textAfter, line);\n else if (state.localMode.indent)\n return state.localMode.indent(state.localState, textAfter, line);\n else\n return CodeMirror.Pass;\n },\n\n innerMode: function (state) {\n return {state: state.localState || state.htmlState, mode: state.localMode || htmlMode};\n }\n };\n }, \"xml\", \"javascript\", \"css\");\n\n CodeMirror.defineMIME(\"text/html\", \"htmlmixed\");\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"css\", function(config, parserConfig) {\n var inline = parserConfig.inline\n if (!parserConfig.propertyKeywords) parserConfig = CodeMirror.resolveMode(\"text/css\");\n\n var indentUnit = config.indentUnit,\n tokenHooks = parserConfig.tokenHooks,\n documentTypes = parserConfig.documentTypes || {},\n mediaTypes = parserConfig.mediaTypes || {},\n mediaFeatures = parserConfig.mediaFeatures || {},\n mediaValueKeywords = parserConfig.mediaValueKeywords || {},\n propertyKeywords = parserConfig.propertyKeywords || {},\n nonStandardPropertyKeywords = parserConfig.nonStandardPropertyKeywords || {},\n fontProperties = parserConfig.fontProperties || {},\n counterDescriptors = parserConfig.counterDescriptors || {},\n colorKeywords = parserConfig.colorKeywords || {},\n valueKeywords = parserConfig.valueKeywords || {},\n allowNested = parserConfig.allowNested,\n lineComment = parserConfig.lineComment,\n supportsAtComponent = parserConfig.supportsAtComponent === true,\n highlightNonStandardPropertyKeywords = config.highlightNonStandardPropertyKeywords !== false;\n\n var type, override;\n function ret(style, tp) { type = tp; return style; }\n\n // Tokenizers\n\n function tokenBase(stream, state) {\n var ch = stream.next();\n if (tokenHooks[ch]) {\n var result = tokenHooks[ch](stream, state);\n if (result !== false) return result;\n }\n if (ch == \"@\") {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"def\", stream.current());\n } else if (ch == \"=\" || (ch == \"~\" || ch == \"|\") && stream.eat(\"=\")) {\n return ret(null, \"compare\");\n } else if (ch == \"\\\"\" || ch == \"'\") {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n } else if (ch == \"#\") {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"atom\", \"hash\");\n } else if (ch == \"!\") {\n stream.match(/^\\s*\\w*/);\n return ret(\"keyword\", \"important\");\n } else if (/\\d/.test(ch) || ch == \".\" && stream.eat(/\\d/)) {\n stream.eatWhile(/[\\w.%]/);\n return ret(\"number\", \"unit\");\n } else if (ch === \"-\") {\n if (/[\\d.]/.test(stream.peek())) {\n stream.eatWhile(/[\\w.%]/);\n return ret(\"number\", \"unit\");\n } else if (stream.match(/^-[\\w\\\\\\-]*/)) {\n stream.eatWhile(/[\\w\\\\\\-]/);\n if (stream.match(/^\\s*:/, false))\n return ret(\"variable-2\", \"variable-definition\");\n return ret(\"variable-2\", \"variable\");\n } else if (stream.match(/^\\w+-/)) {\n return ret(\"meta\", \"meta\");\n }\n } else if (/[,+>*\\/]/.test(ch)) {\n return ret(null, \"select-op\");\n } else if (ch == \".\" && stream.match(/^-?[_a-z][_a-z0-9-]*/i)) {\n return ret(\"qualifier\", \"qualifier\");\n } else if (/[:;{}\\[\\]\\(\\)]/.test(ch)) {\n return ret(null, ch);\n } else if (stream.match(/^[\\w-.]+(?=\\()/)) {\n if (/^(url(-prefix)?|domain|regexp)$/i.test(stream.current())) {\n state.tokenize = tokenParenthesized;\n }\n return ret(\"variable callee\", \"variable\");\n } else if (/[\\w\\\\\\-]/.test(ch)) {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"property\", \"word\");\n } else {\n return ret(null, null);\n }\n }\n\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, ch;\n while ((ch = stream.next()) != null) {\n if (ch == quote && !escaped) {\n if (quote == \")\") stream.backUp(1);\n break;\n }\n escaped = !escaped && ch == \"\\\\\";\n }\n if (ch == quote || !escaped && quote != \")\") state.tokenize = null;\n return ret(\"string\", \"string\");\n };\n }\n\n function tokenParenthesized(stream, state) {\n stream.next(); // Must be '('\n if (!stream.match(/^\\s*[\\\"\\')]/, false))\n state.tokenize = tokenString(\")\");\n else\n state.tokenize = null;\n return ret(null, \"(\");\n }\n\n // Context management\n\n function Context(type, indent, prev) {\n this.type = type;\n this.indent = indent;\n this.prev = prev;\n }\n\n function pushContext(state, stream, type, indent) {\n state.context = new Context(type, stream.indentation() + (indent === false ? 0 : indentUnit), state.context);\n return type;\n }\n\n function popContext(state) {\n if (state.context.prev)\n state.context = state.context.prev;\n return state.context.type;\n }\n\n function pass(type, stream, state) {\n return states[state.context.type](type, stream, state);\n }\n function popAndPass(type, stream, state, n) {\n for (var i = n || 1; i > 0; i--)\n state.context = state.context.prev;\n return pass(type, stream, state);\n }\n\n // Parser\n\n function wordAsValue(stream) {\n var word = stream.current().toLowerCase();\n if (valueKeywords.hasOwnProperty(word))\n override = \"atom\";\n else if (colorKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else\n override = \"variable\";\n }\n\n var states = {};\n\n states.top = function(type, stream, state) {\n if (type == \"{\") {\n return pushContext(state, stream, \"block\");\n } else if (type == \"}\" && state.context.prev) {\n return popContext(state);\n } else if (supportsAtComponent && /@component/i.test(type)) {\n return pushContext(state, stream, \"atComponentBlock\");\n } else if (/^@(-moz-)?document$/i.test(type)) {\n return pushContext(state, stream, \"documentTypes\");\n } else if (/^@(media|supports|(-moz-)?document|import)$/i.test(type)) {\n return pushContext(state, stream, \"atBlock\");\n } else if (/^@(font-face|counter-style)/i.test(type)) {\n state.stateArg = type;\n return \"restricted_atBlock_before\";\n } else if (/^@(-(moz|ms|o|webkit)-)?keyframes$/i.test(type)) {\n return \"keyframes\";\n } else if (type && type.charAt(0) == \"@\") {\n return pushContext(state, stream, \"at\");\n } else if (type == \"hash\") {\n override = \"builtin\";\n } else if (type == \"word\") {\n override = \"tag\";\n } else if (type == \"variable-definition\") {\n return \"maybeprop\";\n } else if (type == \"interpolation\") {\n return pushContext(state, stream, \"interpolation\");\n } else if (type == \":\") {\n return \"pseudo\";\n } else if (allowNested && type == \"(\") {\n return pushContext(state, stream, \"parens\");\n }\n return state.context.type;\n };\n\n states.block = function(type, stream, state) {\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n if (propertyKeywords.hasOwnProperty(word)) {\n override = \"property\";\n return \"maybeprop\";\n } else if (nonStandardPropertyKeywords.hasOwnProperty(word)) {\n override = highlightNonStandardPropertyKeywords ? \"string-2\" : \"property\";\n return \"maybeprop\";\n } else if (allowNested) {\n override = stream.match(/^\\s*:(?:\\s|$)/, false) ? \"property\" : \"tag\";\n return \"block\";\n } else {\n override += \" error\";\n return \"maybeprop\";\n }\n } else if (type == \"meta\") {\n return \"block\";\n } else if (!allowNested && (type == \"hash\" || type == \"qualifier\")) {\n override = \"error\";\n return \"block\";\n } else {\n return states.top(type, stream, state);\n }\n };\n\n states.maybeprop = function(type, stream, state) {\n if (type == \":\") return pushContext(state, stream, \"prop\");\n return pass(type, stream, state);\n };\n\n states.prop = function(type, stream, state) {\n if (type == \";\") return popContext(state);\n if (type == \"{\" && allowNested) return pushContext(state, stream, \"propBlock\");\n if (type == \"}\" || type == \"{\") return popAndPass(type, stream, state);\n if (type == \"(\") return pushContext(state, stream, \"parens\");\n\n if (type == \"hash\" && !/^#([0-9a-fA-f]{3,4}|[0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/.test(stream.current())) {\n override += \" error\";\n } else if (type == \"word\") {\n wordAsValue(stream);\n } else if (type == \"interpolation\") {\n return pushContext(state, stream, \"interpolation\");\n }\n return \"prop\";\n };\n\n states.propBlock = function(type, _stream, state) {\n if (type == \"}\") return popContext(state);\n if (type == \"word\") { override = \"property\"; return \"maybeprop\"; }\n return state.context.type;\n };\n\n states.parens = function(type, stream, state) {\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state);\n if (type == \")\") return popContext(state);\n if (type == \"(\") return pushContext(state, stream, \"parens\");\n if (type == \"interpolation\") return pushContext(state, stream, \"interpolation\");\n if (type == \"word\") wordAsValue(stream);\n return \"parens\";\n };\n\n states.pseudo = function(type, stream, state) {\n if (type == \"meta\") return \"pseudo\";\n\n if (type == \"word\") {\n override = \"variable-3\";\n return state.context.type;\n }\n return pass(type, stream, state);\n };\n\n states.documentTypes = function(type, stream, state) {\n if (type == \"word\" && documentTypes.hasOwnProperty(stream.current())) {\n override = \"tag\";\n return state.context.type;\n } else {\n return states.atBlock(type, stream, state);\n }\n };\n\n states.atBlock = function(type, stream, state) {\n if (type == \"(\") return pushContext(state, stream, \"atBlock_parens\");\n if (type == \"}\" || type == \";\") return popAndPass(type, stream, state);\n if (type == \"{\") return popContext(state) && pushContext(state, stream, allowNested ? \"block\" : \"top\");\n\n if (type == \"interpolation\") return pushContext(state, stream, \"interpolation\");\n\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n if (word == \"only\" || word == \"not\" || word == \"and\" || word == \"or\")\n override = \"keyword\";\n else if (mediaTypes.hasOwnProperty(word))\n override = \"attribute\";\n else if (mediaFeatures.hasOwnProperty(word))\n override = \"property\";\n else if (mediaValueKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else if (propertyKeywords.hasOwnProperty(word))\n override = \"property\";\n else if (nonStandardPropertyKeywords.hasOwnProperty(word))\n override = highlightNonStandardPropertyKeywords ? \"string-2\" : \"property\";\n else if (valueKeywords.hasOwnProperty(word))\n override = \"atom\";\n else if (colorKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else\n override = \"error\";\n }\n return state.context.type;\n };\n\n states.atComponentBlock = function(type, stream, state) {\n if (type == \"}\")\n return popAndPass(type, stream, state);\n if (type == \"{\")\n return popContext(state) && pushContext(state, stream, allowNested ? \"block\" : \"top\", false);\n if (type == \"word\")\n override = \"error\";\n return state.context.type;\n };\n\n states.atBlock_parens = function(type, stream, state) {\n if (type == \")\") return popContext(state);\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state, 2);\n return states.atBlock(type, stream, state);\n };\n\n states.restricted_atBlock_before = function(type, stream, state) {\n if (type == \"{\")\n return pushContext(state, stream, \"restricted_atBlock\");\n if (type == \"word\" && state.stateArg == \"@counter-style\") {\n override = \"variable\";\n return \"restricted_atBlock_before\";\n }\n return pass(type, stream, state);\n };\n\n states.restricted_atBlock = function(type, stream, state) {\n if (type == \"}\") {\n state.stateArg = null;\n return popContext(state);\n }\n if (type == \"word\") {\n if ((state.stateArg == \"@font-face\" && !fontProperties.hasOwnProperty(stream.current().toLowerCase())) ||\n (state.stateArg == \"@counter-style\" && !counterDescriptors.hasOwnProperty(stream.current().toLowerCase())))\n override = \"error\";\n else\n override = \"property\";\n return \"maybeprop\";\n }\n return \"restricted_atBlock\";\n };\n\n states.keyframes = function(type, stream, state) {\n if (type == \"word\") { override = \"variable\"; return \"keyframes\"; }\n if (type == \"{\") return pushContext(state, stream, \"top\");\n return pass(type, stream, state);\n };\n\n states.at = function(type, stream, state) {\n if (type == \";\") return popContext(state);\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state);\n if (type == \"word\") override = \"tag\";\n else if (type == \"hash\") override = \"builtin\";\n return \"at\";\n };\n\n states.interpolation = function(type, stream, state) {\n if (type == \"}\") return popContext(state);\n if (type == \"{\" || type == \";\") return popAndPass(type, stream, state);\n if (type == \"word\") override = \"variable\";\n else if (type != \"variable\" && type != \"(\" && type != \")\") override = \"error\";\n return \"interpolation\";\n };\n\n return {\n startState: function(base) {\n return {tokenize: null,\n state: inline ? \"block\" : \"top\",\n stateArg: null,\n context: new Context(inline ? \"block\" : \"top\", base || 0, null)};\n },\n\n token: function(stream, state) {\n if (!state.tokenize && stream.eatSpace()) return null;\n var style = (state.tokenize || tokenBase)(stream, state);\n if (style && typeof style == \"object\") {\n type = style[1];\n style = style[0];\n }\n override = style;\n if (type != \"comment\")\n state.state = states[state.state](type, stream, state);\n return override;\n },\n\n indent: function(state, textAfter) {\n var cx = state.context, ch = textAfter && textAfter.charAt(0);\n var indent = cx.indent;\n if (cx.type == \"prop\" && (ch == \"}\" || ch == \")\")) cx = cx.prev;\n if (cx.prev) {\n if (ch == \"}\" && (cx.type == \"block\" || cx.type == \"top\" ||\n cx.type == \"interpolation\" || cx.type == \"restricted_atBlock\")) {\n // Resume indentation from parent context.\n cx = cx.prev;\n indent = cx.indent;\n } else if (ch == \")\" && (cx.type == \"parens\" || cx.type == \"atBlock_parens\") ||\n ch == \"{\" && (cx.type == \"at\" || cx.type == \"atBlock\")) {\n // Dedent relative to current context.\n indent = Math.max(0, cx.indent - indentUnit);\n }\n }\n return indent;\n },\n\n electricChars: \"}\",\n blockCommentStart: \"/*\",\n blockCommentEnd: \"*/\",\n blockCommentContinue: \" * \",\n lineComment: lineComment,\n fold: \"brace\"\n };\n});\n\n function keySet(array) {\n var keys = {};\n for (var i = 0; i < array.length; ++i) {\n keys[array[i].toLowerCase()] = true;\n }\n return keys;\n }\n\n var documentTypes_ = [\n \"domain\", \"regexp\", \"url\", \"url-prefix\"\n ], documentTypes = keySet(documentTypes_);\n\n var mediaTypes_ = [\n \"all\", \"aural\", \"braille\", \"handheld\", \"print\", \"projection\", \"screen\",\n \"tty\", \"tv\", \"embossed\"\n ], mediaTypes = keySet(mediaTypes_);\n\n var mediaFeatures_ = [\n \"width\", \"min-width\", \"max-width\", \"height\", \"min-height\", \"max-height\",\n \"device-width\", \"min-device-width\", \"max-device-width\", \"device-height\",\n \"min-device-height\", \"max-device-height\", \"aspect-ratio\",\n \"min-aspect-ratio\", \"max-aspect-ratio\", \"device-aspect-ratio\",\n \"min-device-aspect-ratio\", \"max-device-aspect-ratio\", \"color\", \"min-color\",\n \"max-color\", \"color-index\", \"min-color-index\", \"max-color-index\",\n \"monochrome\", \"min-monochrome\", \"max-monochrome\", \"resolution\",\n \"min-resolution\", \"max-resolution\", \"scan\", \"grid\", \"orientation\",\n \"device-pixel-ratio\", \"min-device-pixel-ratio\", \"max-device-pixel-ratio\",\n \"pointer\", \"any-pointer\", \"hover\", \"any-hover\", \"prefers-color-scheme\"\n ], mediaFeatures = keySet(mediaFeatures_);\n\n var mediaValueKeywords_ = [\n \"landscape\", \"portrait\", \"none\", \"coarse\", \"fine\", \"on-demand\", \"hover\",\n \"interlace\", \"progressive\",\n \"dark\", \"light\"\n ], mediaValueKeywords = keySet(mediaValueKeywords_);\n\n var propertyKeywords_ = [\n \"align-content\", \"align-items\", \"align-self\", \"alignment-adjust\",\n \"alignment-baseline\", \"all\", \"anchor-point\", \"animation\", \"animation-delay\",\n \"animation-direction\", \"animation-duration\", \"animation-fill-mode\",\n \"animation-iteration-count\", \"animation-name\", \"animation-play-state\",\n \"animation-timing-function\", \"appearance\", \"azimuth\", \"backdrop-filter\",\n \"backface-visibility\", \"background\", \"background-attachment\",\n \"background-blend-mode\", \"background-clip\", \"background-color\",\n \"background-image\", \"background-origin\", \"background-position\",\n \"background-position-x\", \"background-position-y\", \"background-repeat\",\n \"background-size\", \"baseline-shift\", \"binding\", \"bleed\", \"block-size\",\n \"bookmark-label\", \"bookmark-level\", \"bookmark-state\", \"bookmark-target\",\n \"border\", \"border-bottom\", \"border-bottom-color\", \"border-bottom-left-radius\",\n \"border-bottom-right-radius\", \"border-bottom-style\", \"border-bottom-width\",\n \"border-collapse\", \"border-color\", \"border-image\", \"border-image-outset\",\n \"border-image-repeat\", \"border-image-slice\", \"border-image-source\",\n \"border-image-width\", \"border-left\", \"border-left-color\", \"border-left-style\",\n \"border-left-width\", \"border-radius\", \"border-right\", \"border-right-color\",\n \"border-right-style\", \"border-right-width\", \"border-spacing\", \"border-style\",\n \"border-top\", \"border-top-color\", \"border-top-left-radius\",\n \"border-top-right-radius\", \"border-top-style\", \"border-top-width\",\n \"border-width\", \"bottom\", \"box-decoration-break\", \"box-shadow\", \"box-sizing\",\n \"break-after\", \"break-before\", \"break-inside\", \"caption-side\", \"caret-color\",\n \"clear\", \"clip\", \"color\", \"color-profile\", \"column-count\", \"column-fill\",\n \"column-gap\", \"column-rule\", \"column-rule-color\", \"column-rule-style\",\n \"column-rule-width\", \"column-span\", \"column-width\", \"columns\", \"contain\",\n \"content\", \"counter-increment\", \"counter-reset\", \"crop\", \"cue\", \"cue-after\",\n \"cue-before\", \"cursor\", \"direction\", \"display\", \"dominant-baseline\",\n \"drop-initial-after-adjust\", \"drop-initial-after-align\",\n \"drop-initial-before-adjust\", \"drop-initial-before-align\", \"drop-initial-size\",\n \"drop-initial-value\", \"elevation\", \"empty-cells\", \"fit\", \"fit-content\", \"fit-position\",\n \"flex\", \"flex-basis\", \"flex-direction\", \"flex-flow\", \"flex-grow\",\n \"flex-shrink\", \"flex-wrap\", \"float\", \"float-offset\", \"flow-from\", \"flow-into\",\n \"font\", \"font-family\", \"font-feature-settings\", \"font-kerning\",\n \"font-language-override\", \"font-optical-sizing\", \"font-size\",\n \"font-size-adjust\", \"font-stretch\", \"font-style\", \"font-synthesis\",\n \"font-variant\", \"font-variant-alternates\", \"font-variant-caps\",\n \"font-variant-east-asian\", \"font-variant-ligatures\", \"font-variant-numeric\",\n \"font-variant-position\", \"font-variation-settings\", \"font-weight\", \"gap\",\n \"grid\", \"grid-area\", \"grid-auto-columns\", \"grid-auto-flow\", \"grid-auto-rows\",\n \"grid-column\", \"grid-column-end\", \"grid-column-gap\", \"grid-column-start\",\n \"grid-gap\", \"grid-row\", \"grid-row-end\", \"grid-row-gap\", \"grid-row-start\",\n \"grid-template\", \"grid-template-areas\", \"grid-template-columns\",\n \"grid-template-rows\", \"hanging-punctuation\", \"height\", \"hyphens\", \"icon\",\n \"image-orientation\", \"image-rendering\", \"image-resolution\", \"inline-box-align\",\n \"inset\", \"inset-block\", \"inset-block-end\", \"inset-block-start\", \"inset-inline\",\n \"inset-inline-end\", \"inset-inline-start\", \"isolation\", \"justify-content\",\n \"justify-items\", \"justify-self\", \"left\", \"letter-spacing\", \"line-break\",\n \"line-height\", \"line-height-step\", \"line-stacking\", \"line-stacking-ruby\",\n \"line-stacking-shift\", \"line-stacking-strategy\", \"list-style\",\n \"list-style-image\", \"list-style-position\", \"list-style-type\", \"margin\",\n \"margin-bottom\", \"margin-left\", \"margin-right\", \"margin-top\", \"marks\",\n \"marquee-direction\", \"marquee-loop\", \"marquee-play-count\", \"marquee-speed\",\n \"marquee-style\", \"mask-clip\", \"mask-composite\", \"mask-image\", \"mask-mode\",\n \"mask-origin\", \"mask-position\", \"mask-repeat\", \"mask-size\",\"mask-type\",\n \"max-block-size\", \"max-height\", \"max-inline-size\",\n \"max-width\", \"min-block-size\", \"min-height\", \"min-inline-size\", \"min-width\",\n \"mix-blend-mode\", \"move-to\", \"nav-down\", \"nav-index\", \"nav-left\", \"nav-right\",\n \"nav-up\", \"object-fit\", \"object-position\", \"offset\", \"offset-anchor\",\n \"offset-distance\", \"offset-path\", \"offset-position\", \"offset-rotate\",\n \"opacity\", \"order\", \"orphans\", \"outline\", \"outline-color\", \"outline-offset\",\n \"outline-style\", \"outline-width\", \"overflow\", \"overflow-style\",\n \"overflow-wrap\", \"overflow-x\", \"overflow-y\", \"padding\", \"padding-bottom\",\n \"padding-left\", \"padding-right\", \"padding-top\", \"page\", \"page-break-after\",\n \"page-break-before\", \"page-break-inside\", \"page-policy\", \"pause\",\n \"pause-after\", \"pause-before\", \"perspective\", \"perspective-origin\", \"pitch\",\n \"pitch-range\", \"place-content\", \"place-items\", \"place-self\", \"play-during\",\n \"position\", \"presentation-level\", \"punctuation-trim\", \"quotes\",\n \"region-break-after\", \"region-break-before\", \"region-break-inside\",\n \"region-fragment\", \"rendering-intent\", \"resize\", \"rest\", \"rest-after\",\n \"rest-before\", \"richness\", \"right\", \"rotate\", \"rotation\", \"rotation-point\",\n \"row-gap\", \"ruby-align\", \"ruby-overhang\", \"ruby-position\", \"ruby-span\",\n \"scale\", \"scroll-behavior\", \"scroll-margin\", \"scroll-margin-block\",\n \"scroll-margin-block-end\", \"scroll-margin-block-start\", \"scroll-margin-bottom\",\n \"scroll-margin-inline\", \"scroll-margin-inline-end\",\n \"scroll-margin-inline-start\", \"scroll-margin-left\", \"scroll-margin-right\",\n \"scroll-margin-top\", \"scroll-padding\", \"scroll-padding-block\",\n \"scroll-padding-block-end\", \"scroll-padding-block-start\",\n \"scroll-padding-bottom\", \"scroll-padding-inline\", \"scroll-padding-inline-end\",\n \"scroll-padding-inline-start\", \"scroll-padding-left\", \"scroll-padding-right\",\n \"scroll-padding-top\", \"scroll-snap-align\", \"scroll-snap-type\",\n \"shape-image-threshold\", \"shape-inside\", \"shape-margin\", \"shape-outside\",\n \"size\", \"speak\", \"speak-as\", \"speak-header\", \"speak-numeral\",\n \"speak-punctuation\", \"speech-rate\", \"stress\", \"string-set\", \"tab-size\",\n \"table-layout\", \"target\", \"target-name\", \"target-new\", \"target-position\",\n \"text-align\", \"text-align-last\", \"text-combine-upright\", \"text-decoration\",\n \"text-decoration-color\", \"text-decoration-line\", \"text-decoration-skip\",\n \"text-decoration-skip-ink\", \"text-decoration-style\", \"text-emphasis\",\n \"text-emphasis-color\", \"text-emphasis-position\", \"text-emphasis-style\",\n \"text-height\", \"text-indent\", \"text-justify\", \"text-orientation\",\n \"text-outline\", \"text-overflow\", \"text-rendering\", \"text-shadow\",\n \"text-size-adjust\", \"text-space-collapse\", \"text-transform\",\n \"text-underline-position\", \"text-wrap\", \"top\", \"touch-action\", \"transform\", \"transform-origin\",\n \"transform-style\", \"transition\", \"transition-delay\", \"transition-duration\",\n \"transition-property\", \"transition-timing-function\", \"translate\",\n \"unicode-bidi\", \"user-select\", \"vertical-align\", \"visibility\", \"voice-balance\",\n \"voice-duration\", \"voice-family\", \"voice-pitch\", \"voice-range\", \"voice-rate\",\n \"voice-stress\", \"voice-volume\", \"volume\", \"white-space\", \"widows\", \"width\",\n \"will-change\", \"word-break\", \"word-spacing\", \"word-wrap\", \"writing-mode\", \"z-index\",\n // SVG-specific\n \"clip-path\", \"clip-rule\", \"mask\", \"enable-background\", \"filter\", \"flood-color\",\n \"flood-opacity\", \"lighting-color\", \"stop-color\", \"stop-opacity\", \"pointer-events\",\n \"color-interpolation\", \"color-interpolation-filters\",\n \"color-rendering\", \"fill\", \"fill-opacity\", \"fill-rule\", \"image-rendering\",\n \"marker\", \"marker-end\", \"marker-mid\", \"marker-start\", \"paint-order\", \"shape-rendering\", \"stroke\",\n \"stroke-dasharray\", \"stroke-dashoffset\", \"stroke-linecap\", \"stroke-linejoin\",\n \"stroke-miterlimit\", \"stroke-opacity\", \"stroke-width\", \"text-rendering\",\n \"baseline-shift\", \"dominant-baseline\", \"glyph-orientation-horizontal\",\n \"glyph-orientation-vertical\", \"text-anchor\", \"writing-mode\",\n ], propertyKeywords = keySet(propertyKeywords_);\n\n var nonStandardPropertyKeywords_ = [\n \"accent-color\", \"aspect-ratio\", \"border-block\", \"border-block-color\", \"border-block-end\",\n \"border-block-end-color\", \"border-block-end-style\", \"border-block-end-width\",\n \"border-block-start\", \"border-block-start-color\", \"border-block-start-style\",\n \"border-block-start-width\", \"border-block-style\", \"border-block-width\",\n \"border-inline\", \"border-inline-color\", \"border-inline-end\",\n \"border-inline-end-color\", \"border-inline-end-style\",\n \"border-inline-end-width\", \"border-inline-start\", \"border-inline-start-color\",\n \"border-inline-start-style\", \"border-inline-start-width\",\n \"border-inline-style\", \"border-inline-width\", \"content-visibility\", \"margin-block\",\n \"margin-block-end\", \"margin-block-start\", \"margin-inline\", \"margin-inline-end\",\n \"margin-inline-start\", \"overflow-anchor\", \"overscroll-behavior\", \"padding-block\", \"padding-block-end\",\n \"padding-block-start\", \"padding-inline\", \"padding-inline-end\",\n \"padding-inline-start\", \"scroll-snap-stop\", \"scrollbar-3d-light-color\",\n \"scrollbar-arrow-color\", \"scrollbar-base-color\", \"scrollbar-dark-shadow-color\",\n \"scrollbar-face-color\", \"scrollbar-highlight-color\", \"scrollbar-shadow-color\",\n \"scrollbar-track-color\", \"searchfield-cancel-button\", \"searchfield-decoration\",\n \"searchfield-results-button\", \"searchfield-results-decoration\", \"shape-inside\", \"zoom\"\n ], nonStandardPropertyKeywords = keySet(nonStandardPropertyKeywords_);\n\n var fontProperties_ = [\n \"font-display\", \"font-family\", \"src\", \"unicode-range\", \"font-variant\",\n \"font-feature-settings\", \"font-stretch\", \"font-weight\", \"font-style\"\n ], fontProperties = keySet(fontProperties_);\n\n var counterDescriptors_ = [\n \"additive-symbols\", \"fallback\", \"negative\", \"pad\", \"prefix\", \"range\",\n \"speak-as\", \"suffix\", \"symbols\", \"system\"\n ], counterDescriptors = keySet(counterDescriptors_);\n\n var colorKeywords_ = [\n \"aliceblue\", \"antiquewhite\", \"aqua\", \"aquamarine\", \"azure\", \"beige\",\n \"bisque\", \"black\", \"blanchedalmond\", \"blue\", \"blueviolet\", \"brown\",\n \"burlywood\", \"cadetblue\", \"chartreuse\", \"chocolate\", \"coral\", \"cornflowerblue\",\n \"cornsilk\", \"crimson\", \"cyan\", \"darkblue\", \"darkcyan\", \"darkgoldenrod\",\n \"darkgray\", \"darkgreen\", \"darkgrey\", \"darkkhaki\", \"darkmagenta\", \"darkolivegreen\",\n \"darkorange\", \"darkorchid\", \"darkred\", \"darksalmon\", \"darkseagreen\",\n \"darkslateblue\", \"darkslategray\", \"darkslategrey\", \"darkturquoise\", \"darkviolet\",\n \"deeppink\", \"deepskyblue\", \"dimgray\", \"dimgrey\", \"dodgerblue\", \"firebrick\",\n \"floralwhite\", \"forestgreen\", \"fuchsia\", \"gainsboro\", \"ghostwhite\",\n \"gold\", \"goldenrod\", \"gray\", \"grey\", \"green\", \"greenyellow\", \"honeydew\",\n \"hotpink\", \"indianred\", \"indigo\", \"ivory\", \"khaki\", \"lavender\",\n \"lavenderblush\", \"lawngreen\", \"lemonchiffon\", \"lightblue\", \"lightcoral\",\n \"lightcyan\", \"lightgoldenrodyellow\", \"lightgray\", \"lightgreen\", \"lightgrey\", \"lightpink\",\n \"lightsalmon\", \"lightseagreen\", \"lightskyblue\", \"lightslategray\", \"lightslategrey\",\n \"lightsteelblue\", \"lightyellow\", \"lime\", \"limegreen\", \"linen\", \"magenta\",\n \"maroon\", \"mediumaquamarine\", \"mediumblue\", \"mediumorchid\", \"mediumpurple\",\n \"mediumseagreen\", \"mediumslateblue\", \"mediumspringgreen\", \"mediumturquoise\",\n \"mediumvioletred\", \"midnightblue\", \"mintcream\", \"mistyrose\", \"moccasin\",\n \"navajowhite\", \"navy\", \"oldlace\", \"olive\", \"olivedrab\", \"orange\", \"orangered\",\n \"orchid\", \"palegoldenrod\", \"palegreen\", \"paleturquoise\", \"palevioletred\",\n \"papayawhip\", \"peachpuff\", \"peru\", \"pink\", \"plum\", \"powderblue\",\n \"purple\", \"rebeccapurple\", \"red\", \"rosybrown\", \"royalblue\", \"saddlebrown\",\n \"salmon\", \"sandybrown\", \"seagreen\", \"seashell\", \"sienna\", \"silver\", \"skyblue\",\n \"slateblue\", \"slategray\", \"slategrey\", \"snow\", \"springgreen\", \"steelblue\", \"tan\",\n \"teal\", \"thistle\", \"tomato\", \"turquoise\", \"violet\", \"wheat\", \"white\",\n \"whitesmoke\", \"yellow\", \"yellowgreen\"\n ], colorKeywords = keySet(colorKeywords_);\n\n var valueKeywords_ = [\n \"above\", \"absolute\", \"activeborder\", \"additive\", \"activecaption\", \"afar\",\n \"after-white-space\", \"ahead\", \"alias\", \"all\", \"all-scroll\", \"alphabetic\", \"alternate\",\n \"always\", \"amharic\", \"amharic-abegede\", \"antialiased\", \"appworkspace\",\n \"arabic-indic\", \"armenian\", \"asterisks\", \"attr\", \"auto\", \"auto-flow\", \"avoid\", \"avoid-column\", \"avoid-page\",\n \"avoid-region\", \"axis-pan\", \"background\", \"backwards\", \"baseline\", \"below\", \"bidi-override\", \"binary\",\n \"bengali\", \"blink\", \"block\", \"block-axis\", \"blur\", \"bold\", \"bolder\", \"border\", \"border-box\",\n \"both\", \"bottom\", \"break\", \"break-all\", \"break-word\", \"brightness\", \"bullets\", \"button\", \"button-bevel\",\n \"buttonface\", \"buttonhighlight\", \"buttonshadow\", \"buttontext\", \"calc\", \"cambodian\",\n \"capitalize\", \"caps-lock-indicator\", \"caption\", \"captiontext\", \"caret\",\n \"cell\", \"center\", \"checkbox\", \"circle\", \"cjk-decimal\", \"cjk-earthly-branch\",\n \"cjk-heavenly-stem\", \"cjk-ideographic\", \"clear\", \"clip\", \"close-quote\",\n \"col-resize\", \"collapse\", \"color\", \"color-burn\", \"color-dodge\", \"column\", \"column-reverse\",\n \"compact\", \"condensed\", \"contain\", \"content\", \"contents\",\n \"content-box\", \"context-menu\", \"continuous\", \"contrast\", \"copy\", \"counter\", \"counters\", \"cover\", \"crop\",\n \"cross\", \"crosshair\", \"cubic-bezier\", \"currentcolor\", \"cursive\", \"cyclic\", \"darken\", \"dashed\", \"decimal\",\n \"decimal-leading-zero\", \"default\", \"default-button\", \"dense\", \"destination-atop\",\n \"destination-in\", \"destination-out\", \"destination-over\", \"devanagari\", \"difference\",\n \"disc\", \"discard\", \"disclosure-closed\", \"disclosure-open\", \"document\",\n \"dot-dash\", \"dot-dot-dash\",\n \"dotted\", \"double\", \"down\", \"drop-shadow\", \"e-resize\", \"ease\", \"ease-in\", \"ease-in-out\", \"ease-out\",\n \"element\", \"ellipse\", \"ellipsis\", \"embed\", \"end\", \"ethiopic\", \"ethiopic-abegede\",\n \"ethiopic-abegede-am-et\", \"ethiopic-abegede-gez\", \"ethiopic-abegede-ti-er\",\n \"ethiopic-abegede-ti-et\", \"ethiopic-halehame-aa-er\",\n \"ethiopic-halehame-aa-et\", \"ethiopic-halehame-am-et\",\n \"ethiopic-halehame-gez\", \"ethiopic-halehame-om-et\",\n \"ethiopic-halehame-sid-et\", \"ethiopic-halehame-so-et\",\n \"ethiopic-halehame-ti-er\", \"ethiopic-halehame-ti-et\", \"ethiopic-halehame-tig\",\n \"ethiopic-numeric\", \"ew-resize\", \"exclusion\", \"expanded\", \"extends\", \"extra-condensed\",\n \"extra-expanded\", \"fantasy\", \"fast\", \"fill\", \"fill-box\", \"fixed\", \"flat\", \"flex\", \"flex-end\", \"flex-start\", \"footnotes\",\n \"forwards\", \"from\", \"geometricPrecision\", \"georgian\", \"grayscale\", \"graytext\", \"grid\", \"groove\",\n \"gujarati\", \"gurmukhi\", \"hand\", \"hangul\", \"hangul-consonant\", \"hard-light\", \"hebrew\",\n \"help\", \"hidden\", \"hide\", \"higher\", \"highlight\", \"highlighttext\",\n \"hiragana\", \"hiragana-iroha\", \"horizontal\", \"hsl\", \"hsla\", \"hue\", \"hue-rotate\", \"icon\", \"ignore\",\n \"inactiveborder\", \"inactivecaption\", \"inactivecaptiontext\", \"infinite\",\n \"infobackground\", \"infotext\", \"inherit\", \"initial\", \"inline\", \"inline-axis\",\n \"inline-block\", \"inline-flex\", \"inline-grid\", \"inline-table\", \"inset\", \"inside\", \"intrinsic\", \"invert\",\n \"italic\", \"japanese-formal\", \"japanese-informal\", \"justify\", \"kannada\",\n \"katakana\", \"katakana-iroha\", \"keep-all\", \"khmer\",\n \"korean-hangul-formal\", \"korean-hanja-formal\", \"korean-hanja-informal\",\n \"landscape\", \"lao\", \"large\", \"larger\", \"left\", \"level\", \"lighter\", \"lighten\",\n \"line-through\", \"linear\", \"linear-gradient\", \"lines\", \"list-item\", \"listbox\", \"listitem\",\n \"local\", \"logical\", \"loud\", \"lower\", \"lower-alpha\", \"lower-armenian\",\n \"lower-greek\", \"lower-hexadecimal\", \"lower-latin\", \"lower-norwegian\",\n \"lower-roman\", \"lowercase\", \"ltr\", \"luminosity\", \"malayalam\", \"manipulation\", \"match\", \"matrix\", \"matrix3d\",\n \"media-controls-background\", \"media-current-time-display\",\n \"media-fullscreen-button\", \"media-mute-button\", \"media-play-button\",\n \"media-return-to-realtime-button\", \"media-rewind-button\",\n \"media-seek-back-button\", \"media-seek-forward-button\", \"media-slider\",\n \"media-sliderthumb\", \"media-time-remaining-display\", \"media-volume-slider\",\n \"media-volume-slider-container\", \"media-volume-sliderthumb\", \"medium\",\n \"menu\", \"menulist\", \"menulist-button\", \"menulist-text\",\n \"menulist-textfield\", \"menutext\", \"message-box\", \"middle\", \"min-intrinsic\",\n \"mix\", \"mongolian\", \"monospace\", \"move\", \"multiple\", \"multiple_mask_images\", \"multiply\", \"myanmar\", \"n-resize\",\n \"narrower\", \"ne-resize\", \"nesw-resize\", \"no-close-quote\", \"no-drop\",\n \"no-open-quote\", \"no-repeat\", \"none\", \"normal\", \"not-allowed\", \"nowrap\",\n \"ns-resize\", \"numbers\", \"numeric\", \"nw-resize\", \"nwse-resize\", \"oblique\", \"octal\", \"opacity\", \"open-quote\",\n \"optimizeLegibility\", \"optimizeSpeed\", \"oriya\", \"oromo\", \"outset\",\n \"outside\", \"outside-shape\", \"overlay\", \"overline\", \"padding\", \"padding-box\",\n \"painted\", \"page\", \"paused\", \"persian\", \"perspective\", \"pinch-zoom\", \"plus-darker\", \"plus-lighter\",\n \"pointer\", \"polygon\", \"portrait\", \"pre\", \"pre-line\", \"pre-wrap\", \"preserve-3d\",\n \"progress\", \"push-button\", \"radial-gradient\", \"radio\", \"read-only\",\n \"read-write\", \"read-write-plaintext-only\", \"rectangle\", \"region\",\n \"relative\", \"repeat\", \"repeating-linear-gradient\",\n \"repeating-radial-gradient\", \"repeat-x\", \"repeat-y\", \"reset\", \"reverse\",\n \"rgb\", \"rgba\", \"ridge\", \"right\", \"rotate\", \"rotate3d\", \"rotateX\", \"rotateY\",\n \"rotateZ\", \"round\", \"row\", \"row-resize\", \"row-reverse\", \"rtl\", \"run-in\", \"running\",\n \"s-resize\", \"sans-serif\", \"saturate\", \"saturation\", \"scale\", \"scale3d\", \"scaleX\", \"scaleY\", \"scaleZ\", \"screen\",\n \"scroll\", \"scrollbar\", \"scroll-position\", \"se-resize\", \"searchfield\",\n \"searchfield-cancel-button\", \"searchfield-decoration\",\n \"searchfield-results-button\", \"searchfield-results-decoration\", \"self-start\", \"self-end\",\n \"semi-condensed\", \"semi-expanded\", \"separate\", \"sepia\", \"serif\", \"show\", \"sidama\",\n \"simp-chinese-formal\", \"simp-chinese-informal\", \"single\",\n \"skew\", \"skewX\", \"skewY\", \"skip-white-space\", \"slide\", \"slider-horizontal\",\n \"slider-vertical\", \"sliderthumb-horizontal\", \"sliderthumb-vertical\", \"slow\",\n \"small\", \"small-caps\", \"small-caption\", \"smaller\", \"soft-light\", \"solid\", \"somali\",\n \"source-atop\", \"source-in\", \"source-out\", \"source-over\", \"space\", \"space-around\", \"space-between\", \"space-evenly\", \"spell-out\", \"square\",\n \"square-button\", \"start\", \"static\", \"status-bar\", \"stretch\", \"stroke\", \"stroke-box\", \"sub\",\n \"subpixel-antialiased\", \"svg_masks\", \"super\", \"sw-resize\", \"symbolic\", \"symbols\", \"system-ui\", \"table\",\n \"table-caption\", \"table-cell\", \"table-column\", \"table-column-group\",\n \"table-footer-group\", \"table-header-group\", \"table-row\", \"table-row-group\",\n \"tamil\",\n \"telugu\", \"text\", \"text-bottom\", \"text-top\", \"textarea\", \"textfield\", \"thai\",\n \"thick\", \"thin\", \"threeddarkshadow\", \"threedface\", \"threedhighlight\",\n \"threedlightshadow\", \"threedshadow\", \"tibetan\", \"tigre\", \"tigrinya-er\",\n \"tigrinya-er-abegede\", \"tigrinya-et\", \"tigrinya-et-abegede\", \"to\", \"top\",\n \"trad-chinese-formal\", \"trad-chinese-informal\", \"transform\",\n \"translate\", \"translate3d\", \"translateX\", \"translateY\", \"translateZ\",\n \"transparent\", \"ultra-condensed\", \"ultra-expanded\", \"underline\", \"unidirectional-pan\", \"unset\", \"up\",\n \"upper-alpha\", \"upper-armenian\", \"upper-greek\", \"upper-hexadecimal\",\n \"upper-latin\", \"upper-norwegian\", \"upper-roman\", \"uppercase\", \"urdu\", \"url\",\n \"var\", \"vertical\", \"vertical-text\", \"view-box\", \"visible\", \"visibleFill\", \"visiblePainted\",\n \"visibleStroke\", \"visual\", \"w-resize\", \"wait\", \"wave\", \"wider\",\n \"window\", \"windowframe\", \"windowtext\", \"words\", \"wrap\", \"wrap-reverse\", \"x-large\", \"x-small\", \"xor\",\n \"xx-large\", \"xx-small\"\n ], valueKeywords = keySet(valueKeywords_);\n\n var allWords = documentTypes_.concat(mediaTypes_).concat(mediaFeatures_).concat(mediaValueKeywords_)\n .concat(propertyKeywords_).concat(nonStandardPropertyKeywords_).concat(colorKeywords_)\n .concat(valueKeywords_);\n CodeMirror.registerHelper(\"hintWords\", \"css\", allWords);\n\n function tokenCComment(stream, state) {\n var maybeEnd = false, ch;\n while ((ch = stream.next()) != null) {\n if (maybeEnd && ch == \"/\") {\n state.tokenize = null;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return [\"comment\", \"comment\"];\n }\n\n CodeMirror.defineMIME(\"text/css\", {\n documentTypes: documentTypes,\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n fontProperties: fontProperties,\n counterDescriptors: counterDescriptors,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n tokenHooks: {\n \"/\": function(stream, state) {\n if (!stream.eat(\"*\")) return false;\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n }\n },\n name: \"css\"\n });\n\n CodeMirror.defineMIME(\"text/x-scss\", {\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n fontProperties: fontProperties,\n allowNested: true,\n lineComment: \"//\",\n tokenHooks: {\n \"/\": function(stream, state) {\n if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return [\"comment\", \"comment\"];\n } else if (stream.eat(\"*\")) {\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n } else {\n return [\"operator\", \"operator\"];\n }\n },\n \":\": function(stream) {\n if (stream.match(/^\\s*\\{/, false))\n return [null, null]\n return false;\n },\n \"$\": function(stream) {\n stream.match(/^[\\w-]+/);\n if (stream.match(/^\\s*:/, false))\n return [\"variable-2\", \"variable-definition\"];\n return [\"variable-2\", \"variable\"];\n },\n \"#\": function(stream) {\n if (!stream.eat(\"{\")) return false;\n return [null, \"interpolation\"];\n }\n },\n name: \"css\",\n helperType: \"scss\"\n });\n\n CodeMirror.defineMIME(\"text/x-less\", {\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n fontProperties: fontProperties,\n allowNested: true,\n lineComment: \"//\",\n tokenHooks: {\n \"/\": function(stream, state) {\n if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return [\"comment\", \"comment\"];\n } else if (stream.eat(\"*\")) {\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n } else {\n return [\"operator\", \"operator\"];\n }\n },\n \"@\": function(stream) {\n if (stream.eat(\"{\")) return [null, \"interpolation\"];\n if (stream.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\\b/i, false)) return false;\n stream.eatWhile(/[\\w\\\\\\-]/);\n if (stream.match(/^\\s*:/, false))\n return [\"variable-2\", \"variable-definition\"];\n return [\"variable-2\", \"variable\"];\n },\n \"&\": function() {\n return [\"atom\", \"atom\"];\n }\n },\n name: \"css\",\n helperType: \"less\"\n });\n\n CodeMirror.defineMIME(\"text/x-gss\", {\n documentTypes: documentTypes,\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n fontProperties: fontProperties,\n counterDescriptors: counterDescriptors,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n supportsAtComponent: true,\n tokenHooks: {\n \"/\": function(stream, state) {\n if (!stream.eat(\"*\")) return false;\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n }\n },\n name: \"css\",\n helperType: \"gss\"\n });\n\n});\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = convertNodeToElement;\n\nvar _elementTypes = require('./elementTypes');\n\nvar _elementTypes2 = _interopRequireDefault(_elementTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Converts a htmlparser2 node to a React element\n *\n * @param {Object} node The htmlparser2 node to convert\n * @param {Number} index The index of the current node\n * @param {Function} transform Transform function to apply to children of the node\n * @returns {React.Element}\n */\nfunction convertNodeToElement(node, index, transform) {\n return _elementTypes2.default[node.type](node, index, transform);\n}","var Tokenizer = require(\"./Tokenizer.js\");\n\n/*\n\tOptions:\n\n\txmlMode: Disables the special behavior for script/style tags (false by default)\n\tlowerCaseAttributeNames: call .toLowerCase for each attribute name (true if xmlMode is `false`)\n\tlowerCaseTags: call .toLowerCase for each tag name (true if xmlMode is `false`)\n*/\n\n/*\n\tCallbacks:\n\n\toncdataend,\n\toncdatastart,\n\tonclosetag,\n\toncomment,\n\toncommentend,\n\tonerror,\n\tonopentag,\n\tonprocessinginstruction,\n\tonreset,\n\tontext\n*/\n\nvar formTags = {\n input: true,\n option: true,\n optgroup: true,\n select: true,\n button: true,\n datalist: true,\n textarea: true\n};\n\nvar openImpliesClose = {\n tr: { tr: true, th: true, td: true },\n th: { th: true },\n td: { thead: true, th: true, td: true },\n body: { head: true, link: true, script: true },\n li: { li: true },\n p: { p: true },\n h1: { p: true },\n h2: { p: true },\n h3: { p: true },\n h4: { p: true },\n h5: { p: true },\n h6: { p: true },\n select: formTags,\n input: formTags,\n output: formTags,\n button: formTags,\n datalist: formTags,\n textarea: formTags,\n option: { option: true },\n optgroup: { optgroup: true }\n};\n\nvar voidElements = {\n __proto__: null,\n area: true,\n base: true,\n basefont: true,\n br: true,\n col: true,\n command: true,\n embed: true,\n frame: true,\n hr: true,\n img: true,\n input: true,\n isindex: true,\n keygen: true,\n link: true,\n meta: true,\n param: true,\n source: true,\n track: true,\n wbr: true\n};\n\nvar foreignContextElements = {\n __proto__: null,\n math: true,\n svg: true\n};\nvar htmlIntegrationElements = {\n __proto__: null,\n mi: true,\n mo: true,\n mn: true,\n ms: true,\n mtext: true,\n \"annotation-xml\": true,\n foreignObject: true,\n desc: true,\n title: true\n};\n\nvar re_nameEnd = /\\s|\\//;\n\nfunction Parser(cbs, options) {\n this._options = options || {};\n this._cbs = cbs || {};\n\n this._tagname = \"\";\n this._attribname = \"\";\n this._attribvalue = \"\";\n this._attribs = null;\n this._stack = [];\n this._foreignContext = [];\n\n this.startIndex = 0;\n this.endIndex = null;\n\n this._lowerCaseTagNames =\n \"lowerCaseTags\" in this._options\n ? !!this._options.lowerCaseTags\n : !this._options.xmlMode;\n this._lowerCaseAttributeNames =\n \"lowerCaseAttributeNames\" in this._options\n ? !!this._options.lowerCaseAttributeNames\n : !this._options.xmlMode;\n\n if (this._options.Tokenizer) {\n Tokenizer = this._options.Tokenizer;\n }\n this._tokenizer = new Tokenizer(this._options, this);\n\n if (this._cbs.onparserinit) this._cbs.onparserinit(this);\n}\n\nrequire(\"inherits\")(Parser, require(\"events\").EventEmitter);\n\nParser.prototype._updatePosition = function(initialOffset) {\n if (this.endIndex === null) {\n if (this._tokenizer._sectionStart <= initialOffset) {\n this.startIndex = 0;\n } else {\n this.startIndex = this._tokenizer._sectionStart - initialOffset;\n }\n } else this.startIndex = this.endIndex + 1;\n this.endIndex = this._tokenizer.getAbsoluteIndex();\n};\n\n//Tokenizer event handlers\nParser.prototype.ontext = function(data) {\n this._updatePosition(1);\n this.endIndex--;\n\n if (this._cbs.ontext) this._cbs.ontext(data);\n};\n\nParser.prototype.onopentagname = function(name) {\n if (this._lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n\n this._tagname = name;\n\n if (!this._options.xmlMode && name in openImpliesClose) {\n for (\n var el;\n (el = this._stack[this._stack.length - 1]) in\n openImpliesClose[name];\n this.onclosetag(el)\n );\n }\n\n if (this._options.xmlMode || !(name in voidElements)) {\n this._stack.push(name);\n if (name in foreignContextElements) this._foreignContext.push(true);\n else if (name in htmlIntegrationElements)\n this._foreignContext.push(false);\n }\n\n if (this._cbs.onopentagname) this._cbs.onopentagname(name);\n if (this._cbs.onopentag) this._attribs = {};\n};\n\nParser.prototype.onopentagend = function() {\n this._updatePosition(1);\n\n if (this._attribs) {\n if (this._cbs.onopentag)\n this._cbs.onopentag(this._tagname, this._attribs);\n this._attribs = null;\n }\n\n if (\n !this._options.xmlMode &&\n this._cbs.onclosetag &&\n this._tagname in voidElements\n ) {\n this._cbs.onclosetag(this._tagname);\n }\n\n this._tagname = \"\";\n};\n\nParser.prototype.onclosetag = function(name) {\n this._updatePosition(1);\n\n if (this._lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n \n if (name in foreignContextElements || name in htmlIntegrationElements) {\n this._foreignContext.pop();\n }\n\n if (\n this._stack.length &&\n (!(name in voidElements) || this._options.xmlMode)\n ) {\n var pos = this._stack.lastIndexOf(name);\n if (pos !== -1) {\n if (this._cbs.onclosetag) {\n pos = this._stack.length - pos;\n while (pos--) this._cbs.onclosetag(this._stack.pop());\n } else this._stack.length = pos;\n } else if (name === \"p\" && !this._options.xmlMode) {\n this.onopentagname(name);\n this._closeCurrentTag();\n }\n } else if (!this._options.xmlMode && (name === \"br\" || name === \"p\")) {\n this.onopentagname(name);\n this._closeCurrentTag();\n }\n};\n\nParser.prototype.onselfclosingtag = function() {\n if (\n this._options.xmlMode ||\n this._options.recognizeSelfClosing ||\n this._foreignContext[this._foreignContext.length - 1]\n ) {\n this._closeCurrentTag();\n } else {\n this.onopentagend();\n }\n};\n\nParser.prototype._closeCurrentTag = function() {\n var name = this._tagname;\n\n this.onopentagend();\n\n //self-closing tags will be on the top of the stack\n //(cheaper check than in onclosetag)\n if (this._stack[this._stack.length - 1] === name) {\n if (this._cbs.onclosetag) {\n this._cbs.onclosetag(name);\n }\n this._stack.pop();\n \n }\n};\n\nParser.prototype.onattribname = function(name) {\n if (this._lowerCaseAttributeNames) {\n name = name.toLowerCase();\n }\n this._attribname = name;\n};\n\nParser.prototype.onattribdata = function(value) {\n this._attribvalue += value;\n};\n\nParser.prototype.onattribend = function() {\n if (this._cbs.onattribute)\n this._cbs.onattribute(this._attribname, this._attribvalue);\n if (\n this._attribs &&\n !Object.prototype.hasOwnProperty.call(this._attribs, this._attribname)\n ) {\n this._attribs[this._attribname] = this._attribvalue;\n }\n this._attribname = \"\";\n this._attribvalue = \"\";\n};\n\nParser.prototype._getInstructionName = function(value) {\n var idx = value.search(re_nameEnd),\n name = idx < 0 ? value : value.substr(0, idx);\n\n if (this._lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n\n return name;\n};\n\nParser.prototype.ondeclaration = function(value) {\n if (this._cbs.onprocessinginstruction) {\n var name = this._getInstructionName(value);\n this._cbs.onprocessinginstruction(\"!\" + name, \"!\" + value);\n }\n};\n\nParser.prototype.onprocessinginstruction = function(value) {\n if (this._cbs.onprocessinginstruction) {\n var name = this._getInstructionName(value);\n this._cbs.onprocessinginstruction(\"?\" + name, \"?\" + value);\n }\n};\n\nParser.prototype.oncomment = function(value) {\n this._updatePosition(4);\n\n if (this._cbs.oncomment) this._cbs.oncomment(value);\n if (this._cbs.oncommentend) this._cbs.oncommentend();\n};\n\nParser.prototype.oncdata = function(value) {\n this._updatePosition(1);\n\n if (this._options.xmlMode || this._options.recognizeCDATA) {\n if (this._cbs.oncdatastart) this._cbs.oncdatastart();\n if (this._cbs.ontext) this._cbs.ontext(value);\n if (this._cbs.oncdataend) this._cbs.oncdataend();\n } else {\n this.oncomment(\"[CDATA[\" + value + \"]]\");\n }\n};\n\nParser.prototype.onerror = function(err) {\n if (this._cbs.onerror) this._cbs.onerror(err);\n};\n\nParser.prototype.onend = function() {\n if (this._cbs.onclosetag) {\n for (\n var i = this._stack.length;\n i > 0;\n this._cbs.onclosetag(this._stack[--i])\n );\n }\n if (this._cbs.onend) this._cbs.onend();\n};\n\n//Resets the parser to a blank state, ready to parse a new HTML document\nParser.prototype.reset = function() {\n if (this._cbs.onreset) this._cbs.onreset();\n this._tokenizer.reset();\n\n this._tagname = \"\";\n this._attribname = \"\";\n this._attribs = null;\n this._stack = [];\n\n if (this._cbs.onparserinit) this._cbs.onparserinit(this);\n};\n\n//Parses a complete HTML document and pushes it to the handler\nParser.prototype.parseComplete = function(data) {\n this.reset();\n this.end(data);\n};\n\nParser.prototype.write = function(chunk) {\n this._tokenizer.write(chunk);\n};\n\nParser.prototype.end = function(chunk) {\n this._tokenizer.end(chunk);\n};\n\nParser.prototype.pause = function() {\n this._tokenizer.pause();\n};\n\nParser.prototype.resume = function() {\n this._tokenizer.resume();\n};\n\n//alias for backwards compat\nParser.prototype.parseChunk = Parser.prototype.write;\nParser.prototype.done = Parser.prototype.end;\n\nmodule.exports = Parser;\n","module.exports = Tokenizer;\n\nvar decodeCodePoint = require(\"entities/lib/decode_codepoint.js\");\nvar entityMap = require(\"entities/maps/entities.json\");\nvar legacyMap = require(\"entities/maps/legacy.json\");\nvar xmlMap = require(\"entities/maps/xml.json\");\n\nvar i = 0;\n\nvar TEXT = i++;\nvar BEFORE_TAG_NAME = i++; //after <\nvar IN_TAG_NAME = i++;\nvar IN_SELF_CLOSING_TAG = i++;\nvar BEFORE_CLOSING_TAG_NAME = i++;\nvar IN_CLOSING_TAG_NAME = i++;\nvar AFTER_CLOSING_TAG_NAME = i++;\n\n//attributes\nvar BEFORE_ATTRIBUTE_NAME = i++;\nvar IN_ATTRIBUTE_NAME = i++;\nvar AFTER_ATTRIBUTE_NAME = i++;\nvar BEFORE_ATTRIBUTE_VALUE = i++;\nvar IN_ATTRIBUTE_VALUE_DQ = i++; // \"\nvar IN_ATTRIBUTE_VALUE_SQ = i++; // '\nvar IN_ATTRIBUTE_VALUE_NQ = i++;\n\n//declarations\nvar BEFORE_DECLARATION = i++; // !\nvar IN_DECLARATION = i++;\n\n//processing instructions\nvar IN_PROCESSING_INSTRUCTION = i++; // ?\n\n//comments\nvar BEFORE_COMMENT = i++;\nvar IN_COMMENT = i++;\nvar AFTER_COMMENT_1 = i++;\nvar AFTER_COMMENT_2 = i++;\n\n//cdata\nvar BEFORE_CDATA_1 = i++; // [\nvar BEFORE_CDATA_2 = i++; // C\nvar BEFORE_CDATA_3 = i++; // D\nvar BEFORE_CDATA_4 = i++; // A\nvar BEFORE_CDATA_5 = i++; // T\nvar BEFORE_CDATA_6 = i++; // A\nvar IN_CDATA = i++; // [\nvar AFTER_CDATA_1 = i++; // ]\nvar AFTER_CDATA_2 = i++; // ]\n\n//special tags\nvar BEFORE_SPECIAL = i++; //S\nvar BEFORE_SPECIAL_END = i++; //S\n\nvar BEFORE_SCRIPT_1 = i++; //C\nvar BEFORE_SCRIPT_2 = i++; //R\nvar BEFORE_SCRIPT_3 = i++; //I\nvar BEFORE_SCRIPT_4 = i++; //P\nvar BEFORE_SCRIPT_5 = i++; //T\nvar AFTER_SCRIPT_1 = i++; //C\nvar AFTER_SCRIPT_2 = i++; //R\nvar AFTER_SCRIPT_3 = i++; //I\nvar AFTER_SCRIPT_4 = i++; //P\nvar AFTER_SCRIPT_5 = i++; //T\n\nvar BEFORE_STYLE_1 = i++; //T\nvar BEFORE_STYLE_2 = i++; //Y\nvar BEFORE_STYLE_3 = i++; //L\nvar BEFORE_STYLE_4 = i++; //E\nvar AFTER_STYLE_1 = i++; //T\nvar AFTER_STYLE_2 = i++; //Y\nvar AFTER_STYLE_3 = i++; //L\nvar AFTER_STYLE_4 = i++; //E\n\nvar BEFORE_ENTITY = i++; //&\nvar BEFORE_NUMERIC_ENTITY = i++; //#\nvar IN_NAMED_ENTITY = i++;\nvar IN_NUMERIC_ENTITY = i++;\nvar IN_HEX_ENTITY = i++; //X\n\nvar j = 0;\n\nvar SPECIAL_NONE = j++;\nvar SPECIAL_SCRIPT = j++;\nvar SPECIAL_STYLE = j++;\n\nfunction whitespace(c) {\n return c === \" \" || c === \"\\n\" || c === \"\\t\" || c === \"\\f\" || c === \"\\r\";\n}\n\nfunction ifElseState(upper, SUCCESS, FAILURE) {\n var lower = upper.toLowerCase();\n\n if (upper === lower) {\n return function(c) {\n if (c === lower) {\n this._state = SUCCESS;\n } else {\n this._state = FAILURE;\n this._index--;\n }\n };\n } else {\n return function(c) {\n if (c === lower || c === upper) {\n this._state = SUCCESS;\n } else {\n this._state = FAILURE;\n this._index--;\n }\n };\n }\n}\n\nfunction consumeSpecialNameChar(upper, NEXT_STATE) {\n var lower = upper.toLowerCase();\n\n return function(c) {\n if (c === lower || c === upper) {\n this._state = NEXT_STATE;\n } else {\n this._state = IN_TAG_NAME;\n this._index--; //consume the token again\n }\n };\n}\n\nfunction Tokenizer(options, cbs) {\n this._state = TEXT;\n this._buffer = \"\";\n this._sectionStart = 0;\n this._index = 0;\n this._bufferOffset = 0; //chars removed from _buffer\n this._baseState = TEXT;\n this._special = SPECIAL_NONE;\n this._cbs = cbs;\n this._running = true;\n this._ended = false;\n this._xmlMode = !!(options && options.xmlMode);\n this._decodeEntities = !!(options && options.decodeEntities);\n}\n\nTokenizer.prototype._stateText = function(c) {\n if (c === \"<\") {\n if (this._index > this._sectionStart) {\n this._cbs.ontext(this._getSection());\n }\n this._state = BEFORE_TAG_NAME;\n this._sectionStart = this._index;\n } else if (\n this._decodeEntities &&\n this._special === SPECIAL_NONE &&\n c === \"&\"\n ) {\n if (this._index > this._sectionStart) {\n this._cbs.ontext(this._getSection());\n }\n this._baseState = TEXT;\n this._state = BEFORE_ENTITY;\n this._sectionStart = this._index;\n }\n};\n\nTokenizer.prototype._stateBeforeTagName = function(c) {\n if (c === \"/\") {\n this._state = BEFORE_CLOSING_TAG_NAME;\n } else if (c === \"<\") {\n this._cbs.ontext(this._getSection());\n this._sectionStart = this._index;\n } else if (c === \">\" || this._special !== SPECIAL_NONE || whitespace(c)) {\n this._state = TEXT;\n } else if (c === \"!\") {\n this._state = BEFORE_DECLARATION;\n this._sectionStart = this._index + 1;\n } else if (c === \"?\") {\n this._state = IN_PROCESSING_INSTRUCTION;\n this._sectionStart = this._index + 1;\n } else {\n this._state =\n !this._xmlMode && (c === \"s\" || c === \"S\")\n ? BEFORE_SPECIAL\n : IN_TAG_NAME;\n this._sectionStart = this._index;\n }\n};\n\nTokenizer.prototype._stateInTagName = function(c) {\n if (c === \"/\" || c === \">\" || whitespace(c)) {\n this._emitToken(\"onopentagname\");\n this._state = BEFORE_ATTRIBUTE_NAME;\n this._index--;\n }\n};\n\nTokenizer.prototype._stateBeforeCloseingTagName = function(c) {\n if (whitespace(c));\n else if (c === \">\") {\n this._state = TEXT;\n } else if (this._special !== SPECIAL_NONE) {\n if (c === \"s\" || c === \"S\") {\n this._state = BEFORE_SPECIAL_END;\n } else {\n this._state = TEXT;\n this._index--;\n }\n } else {\n this._state = IN_CLOSING_TAG_NAME;\n this._sectionStart = this._index;\n }\n};\n\nTokenizer.prototype._stateInCloseingTagName = function(c) {\n if (c === \">\" || whitespace(c)) {\n this._emitToken(\"onclosetag\");\n this._state = AFTER_CLOSING_TAG_NAME;\n this._index--;\n }\n};\n\nTokenizer.prototype._stateAfterCloseingTagName = function(c) {\n //skip everything until \">\"\n if (c === \">\") {\n this._state = TEXT;\n this._sectionStart = this._index + 1;\n }\n};\n\nTokenizer.prototype._stateBeforeAttributeName = function(c) {\n if (c === \">\") {\n this._cbs.onopentagend();\n this._state = TEXT;\n this._sectionStart = this._index + 1;\n } else if (c === \"/\") {\n this._state = IN_SELF_CLOSING_TAG;\n } else if (!whitespace(c)) {\n this._state = IN_ATTRIBUTE_NAME;\n this._sectionStart = this._index;\n }\n};\n\nTokenizer.prototype._stateInSelfClosingTag = function(c) {\n if (c === \">\") {\n this._cbs.onselfclosingtag();\n this._state = TEXT;\n this._sectionStart = this._index + 1;\n } else if (!whitespace(c)) {\n this._state = BEFORE_ATTRIBUTE_NAME;\n this._index--;\n }\n};\n\nTokenizer.prototype._stateInAttributeName = function(c) {\n if (c === \"=\" || c === \"/\" || c === \">\" || whitespace(c)) {\n this._cbs.onattribname(this._getSection());\n this._sectionStart = -1;\n this._state = AFTER_ATTRIBUTE_NAME;\n this._index--;\n }\n};\n\nTokenizer.prototype._stateAfterAttributeName = function(c) {\n if (c === \"=\") {\n this._state = BEFORE_ATTRIBUTE_VALUE;\n } else if (c === \"/\" || c === \">\") {\n this._cbs.onattribend();\n this._state = BEFORE_ATTRIBUTE_NAME;\n this._index--;\n } else if (!whitespace(c)) {\n this._cbs.onattribend();\n this._state = IN_ATTRIBUTE_NAME;\n this._sectionStart = this._index;\n }\n};\n\nTokenizer.prototype._stateBeforeAttributeValue = function(c) {\n if (c === '\"') {\n this._state = IN_ATTRIBUTE_VALUE_DQ;\n this._sectionStart = this._index + 1;\n } else if (c === \"'\") {\n this._state = IN_ATTRIBUTE_VALUE_SQ;\n this._sectionStart = this._index + 1;\n } else if (!whitespace(c)) {\n this._state = IN_ATTRIBUTE_VALUE_NQ;\n this._sectionStart = this._index;\n this._index--; //reconsume token\n }\n};\n\nTokenizer.prototype._stateInAttributeValueDoubleQuotes = function(c) {\n if (c === '\"') {\n this._emitToken(\"onattribdata\");\n this._cbs.onattribend();\n this._state = BEFORE_ATTRIBUTE_NAME;\n } else if (this._decodeEntities && c === \"&\") {\n this._emitToken(\"onattribdata\");\n this._baseState = this._state;\n this._state = BEFORE_ENTITY;\n this._sectionStart = this._index;\n }\n};\n\nTokenizer.prototype._stateInAttributeValueSingleQuotes = function(c) {\n if (c === \"'\") {\n this._emitToken(\"onattribdata\");\n this._cbs.onattribend();\n this._state = BEFORE_ATTRIBUTE_NAME;\n } else if (this._decodeEntities && c === \"&\") {\n this._emitToken(\"onattribdata\");\n this._baseState = this._state;\n this._state = BEFORE_ENTITY;\n this._sectionStart = this._index;\n }\n};\n\nTokenizer.prototype._stateInAttributeValueNoQuotes = function(c) {\n if (whitespace(c) || c === \">\") {\n this._emitToken(\"onattribdata\");\n this._cbs.onattribend();\n this._state = BEFORE_ATTRIBUTE_NAME;\n this._index--;\n } else if (this._decodeEntities && c === \"&\") {\n this._emitToken(\"onattribdata\");\n this._baseState = this._state;\n this._state = BEFORE_ENTITY;\n this._sectionStart = this._index;\n }\n};\n\nTokenizer.prototype._stateBeforeDeclaration = function(c) {\n this._state =\n c === \"[\"\n ? BEFORE_CDATA_1\n : c === \"-\"\n ? BEFORE_COMMENT\n : IN_DECLARATION;\n};\n\nTokenizer.prototype._stateInDeclaration = function(c) {\n if (c === \">\") {\n this._cbs.ondeclaration(this._getSection());\n this._state = TEXT;\n this._sectionStart = this._index + 1;\n }\n};\n\nTokenizer.prototype._stateInProcessingInstruction = function(c) {\n if (c === \">\") {\n this._cbs.onprocessinginstruction(this._getSection());\n this._state = TEXT;\n this._sectionStart = this._index + 1;\n }\n};\n\nTokenizer.prototype._stateBeforeComment = function(c) {\n if (c === \"-\") {\n this._state = IN_COMMENT;\n this._sectionStart = this._index + 1;\n } else {\n this._state = IN_DECLARATION;\n }\n};\n\nTokenizer.prototype._stateInComment = function(c) {\n if (c === \"-\") this._state = AFTER_COMMENT_1;\n};\n\nTokenizer.prototype._stateAfterComment1 = function(c) {\n if (c === \"-\") {\n this._state = AFTER_COMMENT_2;\n } else {\n this._state = IN_COMMENT;\n }\n};\n\nTokenizer.prototype._stateAfterComment2 = function(c) {\n if (c === \">\") {\n //remove 2 trailing chars\n this._cbs.oncomment(\n this._buffer.substring(this._sectionStart, this._index - 2)\n );\n this._state = TEXT;\n this._sectionStart = this._index + 1;\n } else if (c !== \"-\") {\n this._state = IN_COMMENT;\n }\n // else: stay in AFTER_COMMENT_2 (`--->`)\n};\n\nTokenizer.prototype._stateBeforeCdata1 = ifElseState(\n \"C\",\n BEFORE_CDATA_2,\n IN_DECLARATION\n);\nTokenizer.prototype._stateBeforeCdata2 = ifElseState(\n \"D\",\n BEFORE_CDATA_3,\n IN_DECLARATION\n);\nTokenizer.prototype._stateBeforeCdata3 = ifElseState(\n \"A\",\n BEFORE_CDATA_4,\n IN_DECLARATION\n);\nTokenizer.prototype._stateBeforeCdata4 = ifElseState(\n \"T\",\n BEFORE_CDATA_5,\n IN_DECLARATION\n);\nTokenizer.prototype._stateBeforeCdata5 = ifElseState(\n \"A\",\n BEFORE_CDATA_6,\n IN_DECLARATION\n);\n\nTokenizer.prototype._stateBeforeCdata6 = function(c) {\n if (c === \"[\") {\n this._state = IN_CDATA;\n this._sectionStart = this._index + 1;\n } else {\n this._state = IN_DECLARATION;\n this._index--;\n }\n};\n\nTokenizer.prototype._stateInCdata = function(c) {\n if (c === \"]\") this._state = AFTER_CDATA_1;\n};\n\nTokenizer.prototype._stateAfterCdata1 = function(c) {\n if (c === \"]\") this._state = AFTER_CDATA_2;\n else this._state = IN_CDATA;\n};\n\nTokenizer.prototype._stateAfterCdata2 = function(c) {\n if (c === \">\") {\n //remove 2 trailing chars\n this._cbs.oncdata(\n this._buffer.substring(this._sectionStart, this._index - 2)\n );\n this._state = TEXT;\n this._sectionStart = this._index + 1;\n } else if (c !== \"]\") {\n this._state = IN_CDATA;\n }\n //else: stay in AFTER_CDATA_2 (`]]]>`)\n};\n\nTokenizer.prototype._stateBeforeSpecial = function(c) {\n if (c === \"c\" || c === \"C\") {\n this._state = BEFORE_SCRIPT_1;\n } else if (c === \"t\" || c === \"T\") {\n this._state = BEFORE_STYLE_1;\n } else {\n this._state = IN_TAG_NAME;\n this._index--; //consume the token again\n }\n};\n\nTokenizer.prototype._stateBeforeSpecialEnd = function(c) {\n if (this._special === SPECIAL_SCRIPT && (c === \"c\" || c === \"C\")) {\n this._state = AFTER_SCRIPT_1;\n } else if (this._special === SPECIAL_STYLE && (c === \"t\" || c === \"T\")) {\n this._state = AFTER_STYLE_1;\n } else this._state = TEXT;\n};\n\nTokenizer.prototype._stateBeforeScript1 = consumeSpecialNameChar(\n \"R\",\n BEFORE_SCRIPT_2\n);\nTokenizer.prototype._stateBeforeScript2 = consumeSpecialNameChar(\n \"I\",\n BEFORE_SCRIPT_3\n);\nTokenizer.prototype._stateBeforeScript3 = consumeSpecialNameChar(\n \"P\",\n BEFORE_SCRIPT_4\n);\nTokenizer.prototype._stateBeforeScript4 = consumeSpecialNameChar(\n \"T\",\n BEFORE_SCRIPT_5\n);\n\nTokenizer.prototype._stateBeforeScript5 = function(c) {\n if (c === \"/\" || c === \">\" || whitespace(c)) {\n this._special = SPECIAL_SCRIPT;\n }\n this._state = IN_TAG_NAME;\n this._index--; //consume the token again\n};\n\nTokenizer.prototype._stateAfterScript1 = ifElseState(\"R\", AFTER_SCRIPT_2, TEXT);\nTokenizer.prototype._stateAfterScript2 = ifElseState(\"I\", AFTER_SCRIPT_3, TEXT);\nTokenizer.prototype._stateAfterScript3 = ifElseState(\"P\", AFTER_SCRIPT_4, TEXT);\nTokenizer.prototype._stateAfterScript4 = ifElseState(\"T\", AFTER_SCRIPT_5, TEXT);\n\nTokenizer.prototype._stateAfterScript5 = function(c) {\n if (c === \">\" || whitespace(c)) {\n this._special = SPECIAL_NONE;\n this._state = IN_CLOSING_TAG_NAME;\n this._sectionStart = this._index - 6;\n this._index--; //reconsume the token\n } else this._state = TEXT;\n};\n\nTokenizer.prototype._stateBeforeStyle1 = consumeSpecialNameChar(\n \"Y\",\n BEFORE_STYLE_2\n);\nTokenizer.prototype._stateBeforeStyle2 = consumeSpecialNameChar(\n \"L\",\n BEFORE_STYLE_3\n);\nTokenizer.prototype._stateBeforeStyle3 = consumeSpecialNameChar(\n \"E\",\n BEFORE_STYLE_4\n);\n\nTokenizer.prototype._stateBeforeStyle4 = function(c) {\n if (c === \"/\" || c === \">\" || whitespace(c)) {\n this._special = SPECIAL_STYLE;\n }\n this._state = IN_TAG_NAME;\n this._index--; //consume the token again\n};\n\nTokenizer.prototype._stateAfterStyle1 = ifElseState(\"Y\", AFTER_STYLE_2, TEXT);\nTokenizer.prototype._stateAfterStyle2 = ifElseState(\"L\", AFTER_STYLE_3, TEXT);\nTokenizer.prototype._stateAfterStyle3 = ifElseState(\"E\", AFTER_STYLE_4, TEXT);\n\nTokenizer.prototype._stateAfterStyle4 = function(c) {\n if (c === \">\" || whitespace(c)) {\n this._special = SPECIAL_NONE;\n this._state = IN_CLOSING_TAG_NAME;\n this._sectionStart = this._index - 5;\n this._index--; //reconsume the token\n } else this._state = TEXT;\n};\n\nTokenizer.prototype._stateBeforeEntity = ifElseState(\n \"#\",\n BEFORE_NUMERIC_ENTITY,\n IN_NAMED_ENTITY\n);\nTokenizer.prototype._stateBeforeNumericEntity = ifElseState(\n \"X\",\n IN_HEX_ENTITY,\n IN_NUMERIC_ENTITY\n);\n\n//for entities terminated with a semicolon\nTokenizer.prototype._parseNamedEntityStrict = function() {\n //offset = 1\n if (this._sectionStart + 1 < this._index) {\n var entity = this._buffer.substring(\n this._sectionStart + 1,\n this._index\n ),\n map = this._xmlMode ? xmlMap : entityMap;\n\n if (map.hasOwnProperty(entity)) {\n this._emitPartial(map[entity]);\n this._sectionStart = this._index + 1;\n }\n }\n};\n\n//parses legacy entities (without trailing semicolon)\nTokenizer.prototype._parseLegacyEntity = function() {\n var start = this._sectionStart + 1,\n limit = this._index - start;\n\n if (limit > 6) limit = 6; //the max length of legacy entities is 6\n\n while (limit >= 2) {\n //the min length of legacy entities is 2\n var entity = this._buffer.substr(start, limit);\n\n if (legacyMap.hasOwnProperty(entity)) {\n this._emitPartial(legacyMap[entity]);\n this._sectionStart += limit + 1;\n return;\n } else {\n limit--;\n }\n }\n};\n\nTokenizer.prototype._stateInNamedEntity = function(c) {\n if (c === \";\") {\n this._parseNamedEntityStrict();\n if (this._sectionStart + 1 < this._index && !this._xmlMode) {\n this._parseLegacyEntity();\n }\n this._state = this._baseState;\n } else if (\n (c < \"a\" || c > \"z\") &&\n (c < \"A\" || c > \"Z\") &&\n (c < \"0\" || c > \"9\")\n ) {\n if (this._xmlMode);\n else if (this._sectionStart + 1 === this._index);\n else if (this._baseState !== TEXT) {\n if (c !== \"=\") {\n this._parseNamedEntityStrict();\n }\n } else {\n this._parseLegacyEntity();\n }\n\n this._state = this._baseState;\n this._index--;\n }\n};\n\nTokenizer.prototype._decodeNumericEntity = function(offset, base) {\n var sectionStart = this._sectionStart + offset;\n\n if (sectionStart !== this._index) {\n //parse entity\n var entity = this._buffer.substring(sectionStart, this._index);\n var parsed = parseInt(entity, base);\n\n this._emitPartial(decodeCodePoint(parsed));\n this._sectionStart = this._index;\n } else {\n this._sectionStart--;\n }\n\n this._state = this._baseState;\n};\n\nTokenizer.prototype._stateInNumericEntity = function(c) {\n if (c === \";\") {\n this._decodeNumericEntity(2, 10);\n this._sectionStart++;\n } else if (c < \"0\" || c > \"9\") {\n if (!this._xmlMode) {\n this._decodeNumericEntity(2, 10);\n } else {\n this._state = this._baseState;\n }\n this._index--;\n }\n};\n\nTokenizer.prototype._stateInHexEntity = function(c) {\n if (c === \";\") {\n this._decodeNumericEntity(3, 16);\n this._sectionStart++;\n } else if (\n (c < \"a\" || c > \"f\") &&\n (c < \"A\" || c > \"F\") &&\n (c < \"0\" || c > \"9\")\n ) {\n if (!this._xmlMode) {\n this._decodeNumericEntity(3, 16);\n } else {\n this._state = this._baseState;\n }\n this._index--;\n }\n};\n\nTokenizer.prototype._cleanup = function() {\n if (this._sectionStart < 0) {\n this._buffer = \"\";\n this._bufferOffset += this._index;\n this._index = 0;\n } else if (this._running) {\n if (this._state === TEXT) {\n if (this._sectionStart !== this._index) {\n this._cbs.ontext(this._buffer.substr(this._sectionStart));\n }\n this._buffer = \"\";\n this._bufferOffset += this._index;\n this._index = 0;\n } else if (this._sectionStart === this._index) {\n //the section just started\n this._buffer = \"\";\n this._bufferOffset += this._index;\n this._index = 0;\n } else {\n //remove everything unnecessary\n this._buffer = this._buffer.substr(this._sectionStart);\n this._index -= this._sectionStart;\n this._bufferOffset += this._sectionStart;\n }\n\n this._sectionStart = 0;\n }\n};\n\n//TODO make events conditional\nTokenizer.prototype.write = function(chunk) {\n if (this._ended) this._cbs.onerror(Error(\".write() after done!\"));\n\n this._buffer += chunk;\n this._parse();\n};\n\nTokenizer.prototype._parse = function() {\n while (this._index < this._buffer.length && this._running) {\n var c = this._buffer.charAt(this._index);\n if (this._state === TEXT) {\n this._stateText(c);\n } else if (this._state === BEFORE_TAG_NAME) {\n this._stateBeforeTagName(c);\n } else if (this._state === IN_TAG_NAME) {\n this._stateInTagName(c);\n } else if (this._state === BEFORE_CLOSING_TAG_NAME) {\n this._stateBeforeCloseingTagName(c);\n } else if (this._state === IN_CLOSING_TAG_NAME) {\n this._stateInCloseingTagName(c);\n } else if (this._state === AFTER_CLOSING_TAG_NAME) {\n this._stateAfterCloseingTagName(c);\n } else if (this._state === IN_SELF_CLOSING_TAG) {\n this._stateInSelfClosingTag(c);\n } else if (this._state === BEFORE_ATTRIBUTE_NAME) {\n\n /*\n\t\t*\tattributes\n\t\t*/\n this._stateBeforeAttributeName(c);\n } else if (this._state === IN_ATTRIBUTE_NAME) {\n this._stateInAttributeName(c);\n } else if (this._state === AFTER_ATTRIBUTE_NAME) {\n this._stateAfterAttributeName(c);\n } else if (this._state === BEFORE_ATTRIBUTE_VALUE) {\n this._stateBeforeAttributeValue(c);\n } else if (this._state === IN_ATTRIBUTE_VALUE_DQ) {\n this._stateInAttributeValueDoubleQuotes(c);\n } else if (this._state === IN_ATTRIBUTE_VALUE_SQ) {\n this._stateInAttributeValueSingleQuotes(c);\n } else if (this._state === IN_ATTRIBUTE_VALUE_NQ) {\n this._stateInAttributeValueNoQuotes(c);\n } else if (this._state === BEFORE_DECLARATION) {\n\n /*\n\t\t*\tdeclarations\n\t\t*/\n this._stateBeforeDeclaration(c);\n } else if (this._state === IN_DECLARATION) {\n this._stateInDeclaration(c);\n } else if (this._state === IN_PROCESSING_INSTRUCTION) {\n\n /*\n\t\t*\tprocessing instructions\n\t\t*/\n this._stateInProcessingInstruction(c);\n } else if (this._state === BEFORE_COMMENT) {\n\n /*\n\t\t*\tcomments\n\t\t*/\n this._stateBeforeComment(c);\n } else if (this._state === IN_COMMENT) {\n this._stateInComment(c);\n } else if (this._state === AFTER_COMMENT_1) {\n this._stateAfterComment1(c);\n } else if (this._state === AFTER_COMMENT_2) {\n this._stateAfterComment2(c);\n } else if (this._state === BEFORE_CDATA_1) {\n\n /*\n\t\t*\tcdata\n\t\t*/\n this._stateBeforeCdata1(c);\n } else if (this._state === BEFORE_CDATA_2) {\n this._stateBeforeCdata2(c);\n } else if (this._state === BEFORE_CDATA_3) {\n this._stateBeforeCdata3(c);\n } else if (this._state === BEFORE_CDATA_4) {\n this._stateBeforeCdata4(c);\n } else if (this._state === BEFORE_CDATA_5) {\n this._stateBeforeCdata5(c);\n } else if (this._state === BEFORE_CDATA_6) {\n this._stateBeforeCdata6(c);\n } else if (this._state === IN_CDATA) {\n this._stateInCdata(c);\n } else if (this._state === AFTER_CDATA_1) {\n this._stateAfterCdata1(c);\n } else if (this._state === AFTER_CDATA_2) {\n this._stateAfterCdata2(c);\n } else if (this._state === BEFORE_SPECIAL) {\n\n /*\n\t\t* special tags\n\t\t*/\n this._stateBeforeSpecial(c);\n } else if (this._state === BEFORE_SPECIAL_END) {\n this._stateBeforeSpecialEnd(c);\n } else if (this._state === BEFORE_SCRIPT_1) {\n\n /*\n\t\t* script\n\t\t*/\n this._stateBeforeScript1(c);\n } else if (this._state === BEFORE_SCRIPT_2) {\n this._stateBeforeScript2(c);\n } else if (this._state === BEFORE_SCRIPT_3) {\n this._stateBeforeScript3(c);\n } else if (this._state === BEFORE_SCRIPT_4) {\n this._stateBeforeScript4(c);\n } else if (this._state === BEFORE_SCRIPT_5) {\n this._stateBeforeScript5(c);\n } else if (this._state === AFTER_SCRIPT_1) {\n this._stateAfterScript1(c);\n } else if (this._state === AFTER_SCRIPT_2) {\n this._stateAfterScript2(c);\n } else if (this._state === AFTER_SCRIPT_3) {\n this._stateAfterScript3(c);\n } else if (this._state === AFTER_SCRIPT_4) {\n this._stateAfterScript4(c);\n } else if (this._state === AFTER_SCRIPT_5) {\n this._stateAfterScript5(c);\n } else if (this._state === BEFORE_STYLE_1) {\n\n /*\n\t\t* style\n\t\t*/\n this._stateBeforeStyle1(c);\n } else if (this._state === BEFORE_STYLE_2) {\n this._stateBeforeStyle2(c);\n } else if (this._state === BEFORE_STYLE_3) {\n this._stateBeforeStyle3(c);\n } else if (this._state === BEFORE_STYLE_4) {\n this._stateBeforeStyle4(c);\n } else if (this._state === AFTER_STYLE_1) {\n this._stateAfterStyle1(c);\n } else if (this._state === AFTER_STYLE_2) {\n this._stateAfterStyle2(c);\n } else if (this._state === AFTER_STYLE_3) {\n this._stateAfterStyle3(c);\n } else if (this._state === AFTER_STYLE_4) {\n this._stateAfterStyle4(c);\n } else if (this._state === BEFORE_ENTITY) {\n\n /*\n\t\t* entities\n\t\t*/\n this._stateBeforeEntity(c);\n } else if (this._state === BEFORE_NUMERIC_ENTITY) {\n this._stateBeforeNumericEntity(c);\n } else if (this._state === IN_NAMED_ENTITY) {\n this._stateInNamedEntity(c);\n } else if (this._state === IN_NUMERIC_ENTITY) {\n this._stateInNumericEntity(c);\n } else if (this._state === IN_HEX_ENTITY) {\n this._stateInHexEntity(c);\n } else {\n this._cbs.onerror(Error(\"unknown _state\"), this._state);\n }\n\n this._index++;\n }\n\n this._cleanup();\n};\n\nTokenizer.prototype.pause = function() {\n this._running = false;\n};\nTokenizer.prototype.resume = function() {\n this._running = true;\n\n if (this._index < this._buffer.length) {\n this._parse();\n }\n if (this._ended) {\n this._finish();\n }\n};\n\nTokenizer.prototype.end = function(chunk) {\n if (this._ended) this._cbs.onerror(Error(\".end() after done!\"));\n if (chunk) this.write(chunk);\n\n this._ended = true;\n\n if (this._running) this._finish();\n};\n\nTokenizer.prototype._finish = function() {\n //if there is remaining data, emit it in a reasonable way\n if (this._sectionStart < this._index) {\n this._handleTrailingData();\n }\n\n this._cbs.onend();\n};\n\nTokenizer.prototype._handleTrailingData = function() {\n var data = this._buffer.substr(this._sectionStart);\n\n if (\n this._state === IN_CDATA ||\n this._state === AFTER_CDATA_1 ||\n this._state === AFTER_CDATA_2\n ) {\n this._cbs.oncdata(data);\n } else if (\n this._state === IN_COMMENT ||\n this._state === AFTER_COMMENT_1 ||\n this._state === AFTER_COMMENT_2\n ) {\n this._cbs.oncomment(data);\n } else if (this._state === IN_NAMED_ENTITY && !this._xmlMode) {\n this._parseLegacyEntity();\n if (this._sectionStart < this._index) {\n this._state = this._baseState;\n this._handleTrailingData();\n }\n } else if (this._state === IN_NUMERIC_ENTITY && !this._xmlMode) {\n this._decodeNumericEntity(2, 10);\n if (this._sectionStart < this._index) {\n this._state = this._baseState;\n this._handleTrailingData();\n }\n } else if (this._state === IN_HEX_ENTITY && !this._xmlMode) {\n this._decodeNumericEntity(3, 16);\n if (this._sectionStart < this._index) {\n this._state = this._baseState;\n this._handleTrailingData();\n }\n } else if (\n this._state !== IN_TAG_NAME &&\n this._state !== BEFORE_ATTRIBUTE_NAME &&\n this._state !== BEFORE_ATTRIBUTE_VALUE &&\n this._state !== AFTER_ATTRIBUTE_NAME &&\n this._state !== IN_ATTRIBUTE_NAME &&\n this._state !== IN_ATTRIBUTE_VALUE_SQ &&\n this._state !== IN_ATTRIBUTE_VALUE_DQ &&\n this._state !== IN_ATTRIBUTE_VALUE_NQ &&\n this._state !== IN_CLOSING_TAG_NAME\n ) {\n this._cbs.ontext(data);\n }\n //else, ignore remaining data\n //TODO add a way to remove current tag\n};\n\nTokenizer.prototype.reset = function() {\n Tokenizer.call(\n this,\n { xmlMode: this._xmlMode, decodeEntities: this._decodeEntities },\n this._cbs\n );\n};\n\nTokenizer.prototype.getAbsoluteIndex = function() {\n return this._bufferOffset + this._index;\n};\n\nTokenizer.prototype._getSection = function() {\n return this._buffer.substring(this._sectionStart, this._index);\n};\n\nTokenizer.prototype._emitToken = function(name) {\n this._cbs[name](this._getSection());\n this._sectionStart = -1;\n};\n\nTokenizer.prototype._emitPartial = function(value) {\n if (this._baseState !== TEXT) {\n this._cbs.onattribdata(value); //TODO implement the new event\n } else {\n this._cbs.ontext(value);\n }\n};\n","var ElementType = require(\"domelementtype\");\n\nvar re_whitespace = /\\s+/g;\nvar NodePrototype = require(\"./lib/node\");\nvar ElementPrototype = require(\"./lib/element\");\n\nfunction DomHandler(callback, options, elementCB){\n\tif(typeof callback === \"object\"){\n\t\telementCB = options;\n\t\toptions = callback;\n\t\tcallback = null;\n\t} else if(typeof options === \"function\"){\n\t\telementCB = options;\n\t\toptions = defaultOpts;\n\t}\n\tthis._callback = callback;\n\tthis._options = options || defaultOpts;\n\tthis._elementCB = elementCB;\n\tthis.dom = [];\n\tthis._done = false;\n\tthis._tagStack = [];\n\tthis._parser = this._parser || null;\n}\n\n//default options\nvar defaultOpts = {\n\tnormalizeWhitespace: false, //Replace all whitespace with single spaces\n\twithStartIndices: false, //Add startIndex properties to nodes\n\twithEndIndices: false, //Add endIndex properties to nodes\n};\n\nDomHandler.prototype.onparserinit = function(parser){\n\tthis._parser = parser;\n};\n\n//Resets the handler back to starting state\nDomHandler.prototype.onreset = function(){\n\tDomHandler.call(this, this._callback, this._options, this._elementCB);\n};\n\n//Signals the handler that parsing is done\nDomHandler.prototype.onend = function(){\n\tif(this._done) return;\n\tthis._done = true;\n\tthis._parser = null;\n\tthis._handleCallback(null);\n};\n\nDomHandler.prototype._handleCallback =\nDomHandler.prototype.onerror = function(error){\n\tif(typeof this._callback === \"function\"){\n\t\tthis._callback(error, this.dom);\n\t} else {\n\t\tif(error) throw error;\n\t}\n};\n\nDomHandler.prototype.onclosetag = function(){\n\t//if(this._tagStack.pop().name !== name) this._handleCallback(Error(\"Tagname didn't match!\"));\n\t\n\tvar elem = this._tagStack.pop();\n\n\tif(this._options.withEndIndices && elem){\n\t\telem.endIndex = this._parser.endIndex;\n\t}\n\n\tif(this._elementCB) this._elementCB(elem);\n};\n\nDomHandler.prototype._createDomElement = function(properties){\n\tif (!this._options.withDomLvl1) return properties;\n\n\tvar element;\n\tif (properties.type === \"tag\") {\n\t\telement = Object.create(ElementPrototype);\n\t} else {\n\t\telement = Object.create(NodePrototype);\n\t}\n\n\tfor (var key in properties) {\n\t\tif (properties.hasOwnProperty(key)) {\n\t\t\telement[key] = properties[key];\n\t\t}\n\t}\n\n\treturn element;\n};\n\nDomHandler.prototype._addDomElement = function(element){\n\tvar parent = this._tagStack[this._tagStack.length - 1];\n\tvar siblings = parent ? parent.children : this.dom;\n\tvar previousSibling = siblings[siblings.length - 1];\n\n\telement.next = null;\n\n\tif(this._options.withStartIndices){\n\t\telement.startIndex = this._parser.startIndex;\n\t}\n\tif(this._options.withEndIndices){\n\t\telement.endIndex = this._parser.endIndex;\n\t}\n\n\tif(previousSibling){\n\t\telement.prev = previousSibling;\n\t\tpreviousSibling.next = element;\n\t} else {\n\t\telement.prev = null;\n\t}\n\n\tsiblings.push(element);\n\telement.parent = parent || null;\n};\n\nDomHandler.prototype.onopentag = function(name, attribs){\n\tvar properties = {\n\t\ttype: name === \"script\" ? ElementType.Script : name === \"style\" ? ElementType.Style : ElementType.Tag,\n\t\tname: name,\n\t\tattribs: attribs,\n\t\tchildren: []\n\t};\n\n\tvar element = this._createDomElement(properties);\n\n\tthis._addDomElement(element);\n\n\tthis._tagStack.push(element);\n};\n\nDomHandler.prototype.ontext = function(data){\n\t//the ignoreWhitespace is officially dropped, but for now,\n\t//it's an alias for normalizeWhitespace\n\tvar normalize = this._options.normalizeWhitespace || this._options.ignoreWhitespace;\n\n\tvar lastTag;\n\n\tif(!this._tagStack.length && this.dom.length && (lastTag = this.dom[this.dom.length-1]).type === ElementType.Text){\n\t\tif(normalize){\n\t\t\tlastTag.data = (lastTag.data + data).replace(re_whitespace, \" \");\n\t\t} else {\n\t\t\tlastTag.data += data;\n\t\t}\n\t} else {\n\t\tif(\n\t\t\tthis._tagStack.length &&\n\t\t\t(lastTag = this._tagStack[this._tagStack.length - 1]) &&\n\t\t\t(lastTag = lastTag.children[lastTag.children.length - 1]) &&\n\t\t\tlastTag.type === ElementType.Text\n\t\t){\n\t\t\tif(normalize){\n\t\t\t\tlastTag.data = (lastTag.data + data).replace(re_whitespace, \" \");\n\t\t\t} else {\n\t\t\t\tlastTag.data += data;\n\t\t\t}\n\t\t} else {\n\t\t\tif(normalize){\n\t\t\t\tdata = data.replace(re_whitespace, \" \");\n\t\t\t}\n\n\t\t\tvar element = this._createDomElement({\n\t\t\t\tdata: data,\n\t\t\t\ttype: ElementType.Text\n\t\t\t});\n\n\t\t\tthis._addDomElement(element);\n\t\t}\n\t}\n};\n\nDomHandler.prototype.oncomment = function(data){\n\tvar lastTag = this._tagStack[this._tagStack.length - 1];\n\n\tif(lastTag && lastTag.type === ElementType.Comment){\n\t\tlastTag.data += data;\n\t\treturn;\n\t}\n\n\tvar properties = {\n\t\tdata: data,\n\t\ttype: ElementType.Comment\n\t};\n\n\tvar element = this._createDomElement(properties);\n\n\tthis._addDomElement(element);\n\tthis._tagStack.push(element);\n};\n\nDomHandler.prototype.oncdatastart = function(){\n\tvar properties = {\n\t\tchildren: [{\n\t\t\tdata: \"\",\n\t\t\ttype: ElementType.Text\n\t\t}],\n\t\ttype: ElementType.CDATA\n\t};\n\n\tvar element = this._createDomElement(properties);\n\n\tthis._addDomElement(element);\n\tthis._tagStack.push(element);\n};\n\nDomHandler.prototype.oncommentend = DomHandler.prototype.oncdataend = function(){\n\tthis._tagStack.pop();\n};\n\nDomHandler.prototype.onprocessinginstruction = function(name, data){\n\tvar element = this._createDomElement({\n\t\tname: name,\n\t\tdata: data,\n\t\ttype: ElementType.Directive\n\t});\n\n\tthis._addDomElement(element);\n};\n\nmodule.exports = DomHandler;\n","// This object will be used as the prototype for Nodes when creating a\n// DOM-Level-1-compliant structure.\nvar NodePrototype = module.exports = {\n\tget firstChild() {\n\t\tvar children = this.children;\n\t\treturn children && children[0] || null;\n\t},\n\tget lastChild() {\n\t\tvar children = this.children;\n\t\treturn children && children[children.length - 1] || null;\n\t},\n\tget nodeType() {\n\t\treturn nodeTypes[this.type] || nodeTypes.element;\n\t}\n};\n\nvar domLvl1 = {\n\ttagName: \"name\",\n\tchildNodes: \"children\",\n\tparentNode: \"parent\",\n\tpreviousSibling: \"prev\",\n\tnextSibling: \"next\",\n\tnodeValue: \"data\"\n};\n\nvar nodeTypes = {\n\telement: 1,\n\ttext: 3,\n\tcdata: 4,\n\tcomment: 8\n};\n\nObject.keys(domLvl1).forEach(function(key) {\n\tvar shorthand = domLvl1[key];\n\tObject.defineProperty(NodePrototype, key, {\n\t\tget: function() {\n\t\t\treturn this[shorthand] || null;\n\t\t},\n\t\tset: function(val) {\n\t\t\tthis[shorthand] = val;\n\t\t\treturn val;\n\t\t}\n\t});\n});\n","var DomUtils = module.exports;\n\n[\n\trequire(\"./lib/stringify\"),\n\trequire(\"./lib/traversal\"),\n\trequire(\"./lib/manipulation\"),\n\trequire(\"./lib/querying\"),\n\trequire(\"./lib/legacy\"),\n\trequire(\"./lib/helpers\")\n].forEach(function(ext){\n\tObject.keys(ext).forEach(function(key){\n\t\tDomUtils[key] = ext[key].bind(DomUtils);\n\t});\n});\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodeHTML = exports.decodeHTMLStrict = exports.decodeXML = void 0;\nvar entities_json_1 = __importDefault(require(\"./maps/entities.json\"));\nvar legacy_json_1 = __importDefault(require(\"./maps/legacy.json\"));\nvar xml_json_1 = __importDefault(require(\"./maps/xml.json\"));\nvar decode_codepoint_1 = __importDefault(require(\"./decode_codepoint\"));\nexports.decodeXML = getStrictDecoder(xml_json_1.default);\nexports.decodeHTMLStrict = getStrictDecoder(entities_json_1.default);\nfunction getStrictDecoder(map) {\n var keys = Object.keys(map).join(\"|\");\n var replace = getReplacer(map);\n keys += \"|#[xX][\\\\da-fA-F]+|#\\\\d+\";\n var re = new RegExp(\"&(?:\" + keys + \");\", \"g\");\n return function (str) { return String(str).replace(re, replace); };\n}\nvar sorter = function (a, b) { return (a < b ? 1 : -1); };\nexports.decodeHTML = (function () {\n var legacy = Object.keys(legacy_json_1.default).sort(sorter);\n var keys = Object.keys(entities_json_1.default).sort(sorter);\n for (var i = 0, j = 0; i < keys.length; i++) {\n if (legacy[j] === keys[i]) {\n keys[i] += \";?\";\n j++;\n }\n else {\n keys[i] += \";\";\n }\n }\n var re = new RegExp(\"&(?:\" + keys.join(\"|\") + \"|#[xX][\\\\da-fA-F]+;?|#\\\\d+;?)\", \"g\");\n var replace = getReplacer(entities_json_1.default);\n function replacer(str) {\n if (str.substr(-1) !== \";\")\n str += \";\";\n return replace(str);\n }\n //TODO consider creating a merged map\n return function (str) { return String(str).replace(re, replacer); };\n})();\nfunction getReplacer(map) {\n return function replace(str) {\n if (str.charAt(1) === \"#\") {\n var secondChar = str.charAt(2);\n if (secondChar === \"X\" || secondChar === \"x\") {\n return decode_codepoint_1.default(parseInt(str.substr(3), 16));\n }\n return decode_codepoint_1.default(parseInt(str.substr(2), 10));\n }\n return map[str.slice(1, -1)];\n };\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.escape = exports.encodeHTML = exports.encodeXML = void 0;\nvar xml_json_1 = __importDefault(require(\"./maps/xml.json\"));\nvar inverseXML = getInverseObj(xml_json_1.default);\nvar xmlReplacer = getInverseReplacer(inverseXML);\nexports.encodeXML = getInverse(inverseXML, xmlReplacer);\nvar entities_json_1 = __importDefault(require(\"./maps/entities.json\"));\nvar inverseHTML = getInverseObj(entities_json_1.default);\nvar htmlReplacer = getInverseReplacer(inverseHTML);\nexports.encodeHTML = getInverse(inverseHTML, htmlReplacer);\nfunction getInverseObj(obj) {\n return Object.keys(obj)\n .sort()\n .reduce(function (inverse, name) {\n inverse[obj[name]] = \"&\" + name + \";\";\n return inverse;\n }, {});\n}\nfunction getInverseReplacer(inverse) {\n var single = [];\n var multiple = [];\n for (var _i = 0, _a = Object.keys(inverse); _i < _a.length; _i++) {\n var k = _a[_i];\n if (k.length === 1) {\n // Add value to single array\n single.push(\"\\\\\" + k);\n }\n else {\n // Add value to multiple array\n multiple.push(k);\n }\n }\n // Add ranges to single characters.\n single.sort();\n for (var start = 0; start < single.length - 1; start++) {\n // Find the end of a run of characters\n var end = start;\n while (end < single.length - 1 &&\n single[end].charCodeAt(1) + 1 === single[end + 1].charCodeAt(1)) {\n end += 1;\n }\n var count = 1 + end - start;\n // We want to replace at least three characters\n if (count < 3)\n continue;\n single.splice(start, count, single[start] + \"-\" + single[end]);\n }\n multiple.unshift(\"[\" + single.join(\"\") + \"]\");\n return new RegExp(multiple.join(\"|\"), \"g\");\n}\nvar reNonASCII = /(?:[\\x80-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])/g;\nfunction singleCharReplacer(c) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return \"&#x\" + c.codePointAt(0).toString(16).toUpperCase() + \";\";\n}\nfunction getInverse(inverse, re) {\n return function (data) {\n return data\n .replace(re, function (name) { return inverse[name]; })\n .replace(reNonASCII, singleCharReplacer);\n };\n}\nvar reXmlChars = getInverseReplacer(inverseXML);\nfunction escape(data) {\n return data\n .replace(reXmlChars, singleCharReplacer)\n .replace(reNonASCII, singleCharReplacer);\n}\nexports.escape = escape;\n","module.exports = Stream;\n\nvar Parser = require(\"./Parser.js\");\nvar WritableStream = require(\"readable-stream\").Writable;\nvar StringDecoder = require(\"string_decoder\").StringDecoder;\nvar Buffer = require(\"buffer\").Buffer;\n\nfunction Stream(cbs, options) {\n var parser = (this._parser = new Parser(cbs, options));\n var decoder = (this._decoder = new StringDecoder());\n\n WritableStream.call(this, { decodeStrings: false });\n\n this.once(\"finish\", function() {\n parser.end(decoder.end());\n });\n}\n\nrequire(\"inherits\")(Stream, WritableStream);\n\nStream.prototype._write = function(chunk, encoding, cb) {\n if (chunk instanceof Buffer) chunk = this._decoder.write(chunk);\n this._parser.write(chunk);\n cb();\n};\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.default = generatePropsFromAttributes;\n\nvar _htmlAttributesToReact = require('./htmlAttributesToReact');\n\nvar _htmlAttributesToReact2 = _interopRequireDefault(_htmlAttributesToReact);\n\nvar _inlineStyleToObject = require('./inlineStyleToObject');\n\nvar _inlineStyleToObject2 = _interopRequireDefault(_inlineStyleToObject);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Generates props for a React element from an object of HTML attributes\n *\n * @param {Object} attributes The HTML attributes\n * @param {String} key The key to give the react element\n */\nfunction generatePropsFromAttributes(attributes, key) {\n\n // generate props\n var props = _extends({}, (0, _htmlAttributesToReact2.default)(attributes), { key: key });\n\n // if there is an inline/string style prop then convert it to a React style object\n // otherwise, it is invalid and omitted\n if (typeof props.style === 'string' || props.style instanceof String) {\n props.style = (0, _inlineStyleToObject2.default)(props.style);\n } else {\n delete props.style;\n }\n\n return props;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isValidTagOrAttributeName;\nvar VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/;\n\nvar nameCache = {};\n\nfunction isValidTagOrAttributeName(tagName) {\n if (!nameCache.hasOwnProperty(tagName)) {\n nameCache[tagName] = VALID_TAG_REGEX.test(tagName);\n }\n return nameCache[tagName];\n}","export default function symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n","\"use strict\";\n\nvar compose = require('redux').compose;\n\nexports.__esModule = true;\nexports.composeWithDevTools = (\n typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ?\n window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ :\n function() {\n if (arguments.length === 0) return undefined;\n if (typeof arguments[0] === 'object') return compose;\n return compose.apply(null, arguments);\n }\n);\n\nexports.devToolsEnhancer = (\n typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION__ ?\n window.__REDUX_DEVTOOLS_EXTENSION__ :\n function() { return function(noop) { return noop; } }\n);\n","function createThunkMiddleware(extraArgument) {\n return function (_ref) {\n var dispatch = _ref.dispatch,\n getState = _ref.getState;\n return function (next) {\n return function (action) {\n if (typeof action === 'function') {\n return action(dispatch, getState, extraArgument);\n }\n\n return next(action);\n };\n };\n };\n}\n\nvar thunk = createThunkMiddleware();\nthunk.withExtraArgument = createThunkMiddleware;\n\nexport default thunk;","// @flow\n'use strict';\n\nvar key = '__global_unique_id__';\n\nmodule.exports = function() {\n return global[key] = (global[key] || 0) + 1;\n};\n","'use strict';\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar React = require('react');\nvar React__default = _interopDefault(React);\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient, mapStateOnServer) {\n if (typeof reducePropsToState !== 'function') {\n throw new Error('Expected reducePropsToState to be a function.');\n }\n\n if (typeof handleStateChangeOnClient !== 'function') {\n throw new Error('Expected handleStateChangeOnClient to be a function.');\n }\n\n if (typeof mapStateOnServer !== 'undefined' && typeof mapStateOnServer !== 'function') {\n throw new Error('Expected mapStateOnServer to either be undefined or a function.');\n }\n\n function getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n }\n\n return function wrap(WrappedComponent) {\n if (typeof WrappedComponent !== 'function') {\n throw new Error('Expected WrappedComponent to be a React component.');\n }\n\n var mountedInstances = [];\n var state;\n\n function emitChange() {\n state = reducePropsToState(mountedInstances.map(function (instance) {\n return instance.props;\n }));\n\n if (SideEffect.canUseDOM) {\n handleStateChangeOnClient(state);\n } else if (mapStateOnServer) {\n state = mapStateOnServer(state);\n }\n }\n\n var SideEffect = /*#__PURE__*/function (_PureComponent) {\n _inheritsLoose(SideEffect, _PureComponent);\n\n function SideEffect() {\n return _PureComponent.apply(this, arguments) || this;\n }\n\n // Try to use displayName of wrapped component\n // Expose canUseDOM so tests can monkeypatch it\n SideEffect.peek = function peek() {\n return state;\n };\n\n SideEffect.rewind = function rewind() {\n if (SideEffect.canUseDOM) {\n throw new Error('You may only call rewind() on the server. Call peek() to read the current state.');\n }\n\n var recordedState = state;\n state = undefined;\n mountedInstances = [];\n return recordedState;\n };\n\n var _proto = SideEffect.prototype;\n\n _proto.UNSAFE_componentWillMount = function UNSAFE_componentWillMount() {\n mountedInstances.push(this);\n emitChange();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n emitChange();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n var index = mountedInstances.indexOf(this);\n mountedInstances.splice(index, 1);\n emitChange();\n };\n\n _proto.render = function render() {\n return /*#__PURE__*/React__default.createElement(WrappedComponent, this.props);\n };\n\n return SideEffect;\n }(React.PureComponent);\n\n _defineProperty(SideEffect, \"displayName\", \"SideEffect(\" + getDisplayName(WrappedComponent) + \")\");\n\n _defineProperty(SideEffect, \"canUseDOM\", canUseDOM);\n\n return SideEffect;\n };\n}\n\nmodule.exports = withSideEffect;\n","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.1\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = exports.EXITING = exports.ENTERED = exports.ENTERING = exports.EXITED = exports.UNMOUNTED = void 0;\n\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _PropTypes = require(\"./utils/PropTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar UNMOUNTED = 'unmounted';\nexports.UNMOUNTED = UNMOUNTED;\nvar EXITED = 'exited';\nexports.EXITED = EXITED;\nvar ENTERING = 'entering';\nexports.ENTERING = ENTERING;\nvar ENTERED = 'entered';\nexports.ENTERED = ENTERED;\nvar EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 0 },\n * entered: { opacity: 1 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {state => (\n *
    \n * I'm a fade Transition!\n *
    \n * )}\n *
    \n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
    \n * \n * {state => (\n * // ...\n * )}\n * \n * \n *
    \n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nexports.EXITING = EXITING;\n\nvar Transition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context.transitionGroup; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n var _proto = Transition.prototype;\n\n _proto.getChildContext = function getChildContext() {\n return {\n transitionGroup: null // allows for nested Transitions\n\n };\n };\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n }; // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n var node = _reactDom.default.findDOMNode(this);\n\n if (nextStatus === ENTERING) {\n this.performEnter(node, mounting);\n } else {\n this.performExit(node);\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(node, mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context.transitionGroup ? this.context.transitionGroup.isMounting : mounting;\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node);\n });\n return;\n }\n\n this.props.onEnter(node, appearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(node, appearing);\n\n _this2.onTransitionEnd(node, enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node, appearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit(node) {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts(); // no exit animation skip right to EXITED\n\n if (!exit) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n return;\n }\n\n this.props.onExit(node);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(node);\n\n _this3.onTransitionEnd(node, timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(node, timeout, handler) {\n this.setNextCallback(handler);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n this.props.addEndListener(node, this.nextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\"]); // filter props for Transtition\n\n\n delete childProps.in;\n delete childProps.mountOnEnter;\n delete childProps.unmountOnExit;\n delete childProps.appear;\n delete childProps.enter;\n delete childProps.exit;\n delete childProps.timeout;\n delete childProps.addEndListener;\n delete childProps.onEnter;\n delete childProps.onEntering;\n delete childProps.onEntered;\n delete childProps.onExit;\n delete childProps.onExiting;\n delete childProps.onExited;\n\n if (typeof children === 'function') {\n return children(status, childProps);\n }\n\n var child = _react.default.Children.only(children);\n\n return _react.default.cloneElement(child, childProps);\n };\n\n return Transition;\n}(_react.default.Component);\n\nTransition.contextTypes = {\n transitionGroup: PropTypes.object\n};\nTransition.childContextTypes = {\n transitionGroup: function transitionGroup() {}\n};\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`, `'unmounted'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * \n * {state => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * Normally a component is not transitioned if it is shown when the `` component mounts.\n * If you want to transition on the first mount set `appear` to `true`, and the\n * component will transition in as soon as the `` mounts.\n *\n * > Note: there are no specific \"appear\" states. `appear` only adds an additional `enter` transition.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = _PropTypes.timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. **Note:** Timeouts are still used as a fallback if provided.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func // Name the function so it is clearer in the documentation\n\n} : {};\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = 0;\nTransition.EXITED = 1;\nTransition.ENTERING = 2;\nTransition.ENTERED = 3;\nTransition.EXITING = 4;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(Transition);\n\nexports.default = _default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _ChildMapping = require(\"./utils/ChildMapping\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n /**\n * The `` component manages a set of transition components\n * (`` and ``) in a list. Like with the transition\n * components, `` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the ``.\n *\n * Note that `` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\n};\n\nvar TransitionGroup =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_assertThisInitialized(_this))); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.getChildContext = function getChildContext() {\n return {\n transitionGroup: {\n isMounting: !this.appeared\n }\n };\n };\n\n _proto.componentDidMount = function componentDidMount() {\n this.appeared = true;\n this.mounted = true;\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? (0, _ChildMapping.getInitialChildMapping)(nextProps, handleExited) : (0, _ChildMapping.getNextChildMapping)(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n };\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = (0, _ChildMapping.getChildMapping)(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return children;\n }\n\n return _react.default.createElement(Component, props, children);\n };\n\n return TransitionGroup;\n}(_react.default.Component);\n\nTransitionGroup.childContextTypes = {\n transitionGroup: _propTypes.default.object.isRequired\n};\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `` renders a `
    ` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `
    ` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: _propTypes.default.any,\n\n /**\n * A set of `` components, that are toggled `in` and out as they\n * leave. the `` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `` as\n * with our `` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: _propTypes.default.node,\n\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: _propTypes.default.bool,\n\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: _propTypes.default.bool,\n\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: _propTypes.default.bool,\n\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: _propTypes.default.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(TransitionGroup);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];","'use strict';\n\nvar React = require('react');\nvar ReactDOM = require('react-dom');\nvar PropTypes = require('prop-types');\nvar className = require('classnames');\nvar debounce = require('lodash.debounce');\nvar isEqual = require('lodash.isequal');\nvar createReactClass = require('create-react-class');\n\nfunction normalizeLineEndings(str) {\n\tif (!str) return str;\n\treturn str.replace(/\\r\\n|\\r/g, '\\n');\n}\n\nvar CodeMirror = createReactClass({\n\tpropTypes: {\n\t\tautoFocus: PropTypes.bool,\n\t\tclassName: PropTypes.any,\n\t\tcodeMirrorInstance: PropTypes.func,\n\t\tdefaultValue: PropTypes.string,\n\t\tname: PropTypes.string,\n\t\tonChange: PropTypes.func,\n\t\tonCursorActivity: PropTypes.func,\n\t\tonFocusChange: PropTypes.func,\n\t\tonScroll: PropTypes.func,\n\t\toptions: PropTypes.object,\n\t\tpath: PropTypes.string,\n\t\tvalue: PropTypes.string,\n\t\tpreserveScrollPosition: PropTypes.bool\n\t},\n\tgetDefaultProps: function getDefaultProps() {\n\t\treturn {\n\t\t\tpreserveScrollPosition: false\n\t\t};\n\t},\n\tgetCodeMirrorInstance: function getCodeMirrorInstance() {\n\t\treturn this.props.codeMirrorInstance || require('codemirror');\n\t},\n\tgetInitialState: function getInitialState() {\n\t\treturn {\n\t\t\tisFocused: false\n\t\t};\n\t},\n\tcomponentWillMount: function componentWillMount() {\n\t\tthis.componentWillReceiveProps = debounce(this.componentWillReceiveProps, 0);\n\t\tif (this.props.path) {\n\t\t\tconsole.error('Warning: react-codemirror: the `path` prop has been changed to `name`');\n\t\t}\n\t},\n\tcomponentDidMount: function componentDidMount() {\n\t\tvar codeMirrorInstance = this.getCodeMirrorInstance();\n\t\tthis.codeMirror = codeMirrorInstance.fromTextArea(this.textareaNode, this.props.options);\n\t\tthis.codeMirror.on('change', this.codemirrorValueChanged);\n\t\tthis.codeMirror.on('cursorActivity', this.cursorActivity);\n\t\tthis.codeMirror.on('focus', this.focusChanged.bind(this, true));\n\t\tthis.codeMirror.on('blur', this.focusChanged.bind(this, false));\n\t\tthis.codeMirror.on('scroll', this.scrollChanged);\n\t\tthis.codeMirror.setValue(this.props.defaultValue || this.props.value || '');\n\t},\n\tcomponentWillUnmount: function componentWillUnmount() {\n\t\t// is there a lighter-weight way to remove the cm instance?\n\t\tif (this.codeMirror) {\n\t\t\tthis.codeMirror.toTextArea();\n\t\t}\n\t},\n\tcomponentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n\t\tif (this.codeMirror && nextProps.value !== undefined && nextProps.value !== this.props.value && normalizeLineEndings(this.codeMirror.getValue()) !== normalizeLineEndings(nextProps.value)) {\n\t\t\tif (this.props.preserveScrollPosition) {\n\t\t\t\tvar prevScrollPosition = this.codeMirror.getScrollInfo();\n\t\t\t\tthis.codeMirror.setValue(nextProps.value);\n\t\t\t\tthis.codeMirror.scrollTo(prevScrollPosition.left, prevScrollPosition.top);\n\t\t\t} else {\n\t\t\t\tthis.codeMirror.setValue(nextProps.value);\n\t\t\t}\n\t\t}\n\t\tif (typeof nextProps.options === 'object') {\n\t\t\tfor (var optionName in nextProps.options) {\n\t\t\t\tif (nextProps.options.hasOwnProperty(optionName)) {\n\t\t\t\t\tthis.setOptionIfChanged(optionName, nextProps.options[optionName]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tsetOptionIfChanged: function setOptionIfChanged(optionName, newValue) {\n\t\tvar oldValue = this.codeMirror.getOption(optionName);\n\t\tif (!isEqual(oldValue, newValue)) {\n\t\t\tthis.codeMirror.setOption(optionName, newValue);\n\t\t}\n\t},\n\tgetCodeMirror: function getCodeMirror() {\n\t\treturn this.codeMirror;\n\t},\n\tfocus: function focus() {\n\t\tif (this.codeMirror) {\n\t\t\tthis.codeMirror.focus();\n\t\t}\n\t},\n\tfocusChanged: function focusChanged(focused) {\n\t\tthis.setState({\n\t\t\tisFocused: focused\n\t\t});\n\t\tthis.props.onFocusChange && this.props.onFocusChange(focused);\n\t},\n\tcursorActivity: function cursorActivity(cm) {\n\t\tthis.props.onCursorActivity && this.props.onCursorActivity(cm);\n\t},\n\tscrollChanged: function scrollChanged(cm) {\n\t\tthis.props.onScroll && this.props.onScroll(cm.getScrollInfo());\n\t},\n\tcodemirrorValueChanged: function codemirrorValueChanged(doc, change) {\n\t\tif (this.props.onChange && change.origin !== 'setValue') {\n\t\t\tthis.props.onChange(doc.getValue(), change);\n\t\t}\n\t},\n\trender: function render() {\n\t\tvar _this = this;\n\n\t\tvar editorClassName = className('ReactCodeMirror', this.state.isFocused ? 'ReactCodeMirror--focused' : null, this.props.className);\n\t\treturn React.createElement(\n\t\t\t'div',\n\t\t\t{ className: editorClassName },\n\t\t\tReact.createElement('textarea', {\n\t\t\t\tref: function (ref) {\n\t\t\t\t\treturn _this.textareaNode = ref;\n\t\t\t\t},\n\t\t\t\tname: this.props.name || this.props.path,\n\t\t\t\tdefaultValue: this.props.value,\n\t\t\t\tautoComplete: 'off',\n\t\t\t\tautoFocus: this.props.autoFocus\n\t\t\t})\n\t\t);\n\t}\n});\n\nmodule.exports = CodeMirror;","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",f=\"month\",h=\"quarter\",c=\"year\",d=\"date\",$=\"Invalid Date\",l=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\")},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},g={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()P.length&&P.push(a)}\nfunction S(a,b,c,d){var e=typeof a;if(\"undefined\"===e||\"boolean\"===e)a=null;var g=!1;if(null===a)g=!0;else switch(e){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return c(d,a,\"\"===b?\".\"+T(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var l=0;lb}return!1}function B(a,b,c,d,e,f){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f}var C={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){C[a]=new B(a,0,!1,a,null,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];C[b]=new B(b,1,!1,a[1],null,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){C[a]=new B(a,2,!1,a.toLowerCase(),null,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){C[a]=new B(a,2,!1,a,null,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){C[a]=new B(a,3,!1,a.toLowerCase(),null,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){C[a]=new B(a,3,!0,a,null,!1)});[\"capture\",\"download\"].forEach(function(a){C[a]=new B(a,4,!1,a,null,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){C[a]=new B(a,6,!1,a,null,!1)});[\"rowSpan\",\"start\"].forEach(function(a){C[a]=new B(a,5,!1,a.toLowerCase(),null,!1)});var rb=/[\\-:]([a-z])/g;function sb(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(rb,\nsb);C[b]=new B(b,1,!1,a,null,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(rb,sb);C[b]=new B(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(rb,sb);C[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){C[a]=new B(a,1,!1,a.toLowerCase(),null,!1)});\nC.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){C[a]=new B(a,1,!1,a.toLowerCase(),null,!0)});function tb(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}\nfunction ub(a,b,c,d){var e=C.hasOwnProperty(b)?C[b]:null;var f=null!==e?0===e.type:d?!1:!(2=b.length))throw t(Error(93));b=b[0]}c=b}null==c&&(c=\"\")}a._wrapperState={initialValue:tb(c)}}\nfunction Mb(a,b){var c=tb(b.value),d=tb(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function Nb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var Ob={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction Pb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function Qb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?Pb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar Rb,Sb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==Ob.svg||\"innerHTML\"in a)a.innerHTML=b;else{Rb=Rb||document.createElement(\"div\");Rb.innerHTML=\"\"+b.valueOf().toString()+\"\";for(b=Rb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction Tb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}function Ub(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Vb={animationend:Ub(\"Animation\",\"AnimationEnd\"),animationiteration:Ub(\"Animation\",\"AnimationIteration\"),animationstart:Ub(\"Animation\",\"AnimationStart\"),transitionend:Ub(\"Transition\",\"TransitionEnd\")},Wb={},Xb={};\nXa&&(Xb=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Vb.animationend.animation,delete Vb.animationiteration.animation,delete Vb.animationstart.animation),\"TransitionEvent\"in window||delete Vb.transitionend.transition);function Yb(a){if(Wb[a])return Wb[a];if(!Vb[a])return a;var b=Vb[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Xb)return Wb[a]=b[c];return a}\nvar Zb=Yb(\"animationend\"),$b=Yb(\"animationiteration\"),ac=Yb(\"animationstart\"),bc=Yb(\"transitionend\"),dc=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),ec=!1,fc=[],gc=null,hc=null,ic=null,jc=new Map,kc=new Map,lc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput close cancel copy cut paste click change contextmenu reset submit\".split(\" \"),\nmc=\"focus blur dragenter dragleave mouseover mouseout pointerover pointerout gotpointercapture lostpointercapture\".split(\" \");function nc(a){var b=oc(a);lc.forEach(function(c){pc(c,a,b)});mc.forEach(function(c){pc(c,a,b)})}function qc(a,b,c,d){return{blockedOn:a,topLevelType:b,eventSystemFlags:c|32,nativeEvent:d}}\nfunction rc(a,b){switch(a){case \"focus\":case \"blur\":gc=null;break;case \"dragenter\":case \"dragleave\":hc=null;break;case \"mouseover\":case \"mouseout\":ic=null;break;case \"pointerover\":case \"pointerout\":jc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":kc.delete(b.pointerId)}}function sc(a,b,c,d,e){if(null===a||a.nativeEvent!==e)return qc(b,c,d,e);a.eventSystemFlags|=d;return a}\nfunction tc(a,b,c,d){switch(b){case \"focus\":return gc=sc(gc,a,b,c,d),!0;case \"dragenter\":return hc=sc(hc,a,b,c,d),!0;case \"mouseover\":return ic=sc(ic,a,b,c,d),!0;case \"pointerover\":var e=d.pointerId;jc.set(e,sc(jc.get(e)||null,a,b,c,d));return!0;case \"gotpointercapture\":return e=d.pointerId,kc.set(e,sc(kc.get(e)||null,a,b,c,d)),!0}return!1}function uc(a){if(null!==a.blockedOn)return!1;var b=vc(a.topLevelType,a.eventSystemFlags,a.nativeEvent);return null!==b?(a.blockedOn=b,!1):!0}\nfunction wc(a,b,c){uc(a)&&c.delete(b)}function xc(){for(ec=!1;0this.eventPool.length&&this.eventPool.push(a)}function Oc(a){a.eventPool=[];a.getPooled=Pc;a.release=Qc}var Rc=F.extend({animationName:null,elapsedTime:null,pseudoElement:null}),Sc=F.extend({clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),Tc=F.extend({view:null,detail:null}),Uc=Tc.extend({relatedTarget:null});\nfunction Vc(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}\nvar Wc={Esc:\"Escape\",Spacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},Xc={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",\n116:\"F5\",117:\"F6\",118:\"F7\",119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},Yc={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Zc(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Yc[a])?!!b[a]:!1}function $c(){return Zc}\nvar ad=Tc.extend({key:function(a){if(a.key){var b=Wc[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=Vc(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?Xc[a.keyCode]||\"Unidentified\":\"\"},location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:$c,charCode:function(a){return\"keypress\"===a.type?Vc(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?Vc(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),bd=0,cd=0,dd=!1,fd=!1,gd=Tc.extend({screenX:null,screenY:null,clientX:null,clientY:null,pageX:null,pageY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:$c,button:null,buttons:null,relatedTarget:function(a){return a.relatedTarget||(a.fromElement===a.srcElement?a.toElement:a.fromElement)},movementX:function(a){if(\"movementX\"in a)return a.movementX;var b=bd;bd=a.screenX;return dd?\"mousemove\"===a.type?a.screenX-\nb:0:(dd=!0,0)},movementY:function(a){if(\"movementY\"in a)return a.movementY;var b=cd;cd=a.screenY;return fd?\"mousemove\"===a.type?a.screenY-b:0:(fd=!0,0)}}),hd=gd.extend({pointerId:null,width:null,height:null,pressure:null,tangentialPressure:null,tiltX:null,tiltY:null,twist:null,pointerType:null,isPrimary:null}),id=gd.extend({dataTransfer:null}),jd=Tc.extend({touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:$c}),kd=F.extend({propertyName:null,\nelapsedTime:null,pseudoElement:null}),ld=gd.extend({deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},deltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:null,deltaMode:null}),md=[[\"blur\",\"blur\",0],[\"cancel\",\"cancel\",0],[\"click\",\"click\",0],[\"close\",\"close\",0],[\"contextmenu\",\"contextMenu\",0],[\"copy\",\"copy\",0],[\"cut\",\"cut\",0],[\"auxclick\",\"auxClick\",0],[\"dblclick\",\"doubleClick\",0],[\"dragend\",\"dragEnd\",\n0],[\"dragstart\",\"dragStart\",0],[\"drop\",\"drop\",0],[\"focus\",\"focus\",0],[\"input\",\"input\",0],[\"invalid\",\"invalid\",0],[\"keydown\",\"keyDown\",0],[\"keypress\",\"keyPress\",0],[\"keyup\",\"keyUp\",0],[\"mousedown\",\"mouseDown\",0],[\"mouseup\",\"mouseUp\",0],[\"paste\",\"paste\",0],[\"pause\",\"pause\",0],[\"play\",\"play\",0],[\"pointercancel\",\"pointerCancel\",0],[\"pointerdown\",\"pointerDown\",0],[\"pointerup\",\"pointerUp\",0],[\"ratechange\",\"rateChange\",0],[\"reset\",\"reset\",0],[\"seeked\",\"seeked\",0],[\"submit\",\"submit\",0],[\"touchcancel\",\"touchCancel\",\n0],[\"touchend\",\"touchEnd\",0],[\"touchstart\",\"touchStart\",0],[\"volumechange\",\"volumeChange\",0],[\"drag\",\"drag\",1],[\"dragenter\",\"dragEnter\",1],[\"dragexit\",\"dragExit\",1],[\"dragleave\",\"dragLeave\",1],[\"dragover\",\"dragOver\",1],[\"mousemove\",\"mouseMove\",1],[\"mouseout\",\"mouseOut\",1],[\"mouseover\",\"mouseOver\",1],[\"pointermove\",\"pointerMove\",1],[\"pointerout\",\"pointerOut\",1],[\"pointerover\",\"pointerOver\",1],[\"scroll\",\"scroll\",1],[\"toggle\",\"toggle\",1],[\"touchmove\",\"touchMove\",1],[\"wheel\",\"wheel\",1],[\"abort\",\"abort\",\n2],[Zb,\"animationEnd\",2],[$b,\"animationIteration\",2],[ac,\"animationStart\",2],[\"canplay\",\"canPlay\",2],[\"canplaythrough\",\"canPlayThrough\",2],[\"durationchange\",\"durationChange\",2],[\"emptied\",\"emptied\",2],[\"encrypted\",\"encrypted\",2],[\"ended\",\"ended\",2],[\"error\",\"error\",2],[\"gotpointercapture\",\"gotPointerCapture\",2],[\"load\",\"load\",2],[\"loadeddata\",\"loadedData\",2],[\"loadedmetadata\",\"loadedMetadata\",2],[\"loadstart\",\"loadStart\",2],[\"lostpointercapture\",\"lostPointerCapture\",2],[\"playing\",\"playing\",2],[\"progress\",\n\"progress\",2],[\"seeking\",\"seeking\",2],[\"stalled\",\"stalled\",2],[\"suspend\",\"suspend\",2],[\"timeupdate\",\"timeUpdate\",2],[bc,\"transitionEnd\",2],[\"waiting\",\"waiting\",2]],nd={},od={},pd=0;for(;pd=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Vd(c)}}\nfunction Xd(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Xd(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}function Yd(){for(var a=window,b=Ud();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Ud(a.document)}return b}\nfunction Zd(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}var $d=\"$\",ae=\"/$\",be=\"$?\",ce=\"$!\",de=null,ee=null;function fe(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}\nfunction ge(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}var he=\"function\"===typeof setTimeout?setTimeout:void 0,ie=\"function\"===typeof clearTimeout?clearTimeout:void 0;function je(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break}return a}\nfunction ke(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(c===$d||c===ce||c===be){if(0===b)return a;b--}else c===ae&&b++}a=a.previousSibling}return null}var le=Math.random().toString(36).slice(2),me=\"__reactInternalInstance$\"+le,ne=\"__reactEventHandlers$\"+le,oe=\"__reactContainere$\"+le;\nfunction Cd(a){var b=a[me];if(b)return b;for(var c=a.parentNode;c;){if(b=c[oe]||c[me]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=ke(a);null!==a;){if(c=a[me])return c;a=ke(a)}return b}a=c;c=a.parentNode}return null}function pe(a){a=a[me]||a[oe];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function qe(a){if(5===a.tag||6===a.tag)return a.stateNode;throw t(Error(33));}function re(a){return a[ne]||null}var se=null,te=null,ue=null;\nfunction ve(){if(ue)return ue;var a,b=te,c=b.length,d,e=\"value\"in se?se.value:se.textContent,f=e.length;for(a=0;a=Ae),De=String.fromCharCode(32),Ee={beforeInput:{phasedRegistrationNames:{bubbled:\"onBeforeInput\",captured:\"onBeforeInputCapture\"},dependencies:[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]},compositionEnd:{phasedRegistrationNames:{bubbled:\"onCompositionEnd\",captured:\"onCompositionEndCapture\"},dependencies:\"blur compositionend keydown keypress keyup mousedown\".split(\" \")},compositionStart:{phasedRegistrationNames:{bubbled:\"onCompositionStart\",\ncaptured:\"onCompositionStartCapture\"},dependencies:\"blur compositionstart keydown keypress keyup mousedown\".split(\" \")},compositionUpdate:{phasedRegistrationNames:{bubbled:\"onCompositionUpdate\",captured:\"onCompositionUpdateCapture\"},dependencies:\"blur compositionupdate keydown keypress keyup mousedown\".split(\" \")}},Fe=!1;\nfunction Ge(a,b){switch(a){case \"keyup\":return-1!==ye.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"blur\":return!0;default:return!1}}function He(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var Ie=!1;function Je(a,b){switch(a){case \"compositionend\":return He(b);case \"keypress\":if(32!==b.which)return null;Fe=!0;return De;case \"textInput\":return a=b.data,a===De&&Fe?null:a;default:return null}}\nfunction Ke(a,b){if(Ie)return\"compositionend\"===a||!ze&&Ge(a,b)?(a=ve(),ue=te=se=null,Ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=document.documentMode,kf={select:{phasedRegistrationNames:{bubbled:\"onSelect\",captured:\"onSelectCapture\"},dependencies:\"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange\".split(\" \")}},lf=null,mf=null,nf=null,of=!1;\nfunction pf(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if(of||null==lf||lf!==Ud(c))return null;c=lf;\"selectionStart\"in c&&Zd(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return nf&&hf(nf,c)?null:(nf=c,a=F.getPooled(kf.select,mf,a,b),a.type=\"select\",a.target=lf,Lc(a),a)}\nvar qf={eventTypes:kf,extractEvents:function(a,b,c,d){var e=d.window===d?d.document:9===d.nodeType?d:d.ownerDocument,f;if(!(f=!e)){a:{e=oc(e);f=ja.onSelect;for(var g=0;gsf||(a.current=rf[sf],rf[sf]=null,sf--)}\nfunction I(a,b){sf++;rf[sf]=a.current;a.current=b}var tf={},J={current:tf},K={current:!1},uf=tf;function vf(a,b){var c=a.type.contextTypes;if(!c)return tf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function N(a){a=a.childContextTypes;return null!==a&&void 0!==a}\nfunction wf(a){H(K,a);H(J,a)}function xf(a){H(K,a);H(J,a)}function zf(a,b,c){if(J.current!==tf)throw t(Error(168));I(J,b,a);I(K,c,a)}function Af(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw t(Error(108),Va(b)||\"Unknown\",e);return n({},c,{},d)}function Bf(a){var b=a.stateNode;b=b&&b.__reactInternalMemoizedMergedChildContext||tf;uf=J.current;I(J,b,a);I(K,K.current,a);return!0}\nfunction Cf(a,b,c){var d=a.stateNode;if(!d)throw t(Error(169));c?(b=Af(a,b,uf),d.__reactInternalMemoizedMergedChildContext=b,H(K,a),H(J,a),I(J,b,a)):H(K,a);I(K,c,a)}\nvar Df=r.unstable_runWithPriority,Ef=r.unstable_scheduleCallback,Ff=r.unstable_cancelCallback,Gf=r.unstable_shouldYield,Hf=r.unstable_requestPaint,If=r.unstable_now,Jf=r.unstable_getCurrentPriorityLevel,Kf=r.unstable_ImmediatePriority,Lf=r.unstable_UserBlockingPriority,Mf=r.unstable_NormalPriority,Nf=r.unstable_LowPriority,Of=r.unstable_IdlePriority,Pf={},Qf=void 0!==Hf?Hf:function(){},Rf=null,Sf=null,Tf=!1,Uf=If(),Vf=1E4>Uf?If:function(){return If()-Uf};\nfunction Wf(){switch(Jf()){case Kf:return 99;case Lf:return 98;case Mf:return 97;case Nf:return 96;case Of:return 95;default:throw t(Error(332));}}function Xf(a){switch(a){case 99:return Kf;case 98:return Lf;case 97:return Mf;case 96:return Nf;case 95:return Of;default:throw t(Error(332));}}function Yf(a,b){a=Xf(a);return Df(a,b)}function Zf(a,b,c){a=Xf(a);return Ef(a,b,c)}function $f(a){null===Rf?(Rf=[a],Sf=Ef(Kf,ag)):Rf.push(a);return Pf}function bg(){if(null!==Sf){var a=Sf;Sf=null;Ff(a)}ag()}\nfunction ag(){if(!Tf&&null!==Rf){Tf=!0;var a=0;try{var b=Rf;Yf(99,function(){for(;a=b&&(mg=!0),a.firstContext=null)}\nfunction ng(a,b){if(gg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)gg=a,b=1073741823;b={context:a,observedBits:b,next:null};if(null===fg){if(null===eg)throw t(Error(308));fg=b;eg.dependencies={expirationTime:0,firstContext:b,responders:null}}else fg=fg.next=b}return a._currentValue}var og=!1;\nfunction pg(a){return{baseState:a,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function qg(a){return{baseState:a.baseState,firstUpdate:a.firstUpdate,lastUpdate:a.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}\nfunction rg(a,b){return{expirationTime:a,suspenseConfig:b,tag:0,payload:null,callback:null,next:null,nextEffect:null}}function sg(a,b){null===a.lastUpdate?a.firstUpdate=a.lastUpdate=b:(a.lastUpdate.next=b,a.lastUpdate=b)}\nfunction tg(a,b){var c=a.alternate;if(null===c){var d=a.updateQueue;var e=null;null===d&&(d=a.updateQueue=pg(a.memoizedState))}else d=a.updateQueue,e=c.updateQueue,null===d?null===e?(d=a.updateQueue=pg(a.memoizedState),e=c.updateQueue=pg(c.memoizedState)):d=a.updateQueue=qg(e):null===e&&(e=c.updateQueue=qg(d));null===e||d===e?sg(d,b):null===d.lastUpdate||null===e.lastUpdate?(sg(d,b),sg(e,b)):(sg(d,b),e.lastUpdate=b)}\nfunction ug(a,b){var c=a.updateQueue;c=null===c?a.updateQueue=pg(a.memoizedState):vg(a,c);null===c.lastCapturedUpdate?c.firstCapturedUpdate=c.lastCapturedUpdate=b:(c.lastCapturedUpdate.next=b,c.lastCapturedUpdate=b)}function vg(a,b){var c=a.alternate;null!==c&&b===c.updateQueue&&(b=a.updateQueue=qg(b));return b}\nfunction wg(a,b,c,d,e,f){switch(c.tag){case 1:return a=c.payload,\"function\"===typeof a?a.call(f,d,e):a;case 3:a.effectTag=a.effectTag&-4097|64;case 0:a=c.payload;e=\"function\"===typeof a?a.call(f,d,e):a;if(null===e||void 0===e)break;return n({},d,e);case 2:og=!0}return d}\nfunction xg(a,b,c,d,e){og=!1;b=vg(a,b);for(var f=b.baseState,g=null,h=0,k=b.firstUpdate,l=f;null!==k;){var m=k.expirationTime;my?(z=q,q=null):z=q.sibling;var p=w(e,q,h[y],k);if(null===p){null===q&&(q=z);break}a&&\nq&&null===p.alternate&&b(e,q);g=f(p,g,y);null===m?l=p:m.sibling=p;m=p;q=z}if(y===h.length)return c(e,q),l;if(null===q){for(;yy?(z=q,q=null):z=q.sibling;var M=w(e,q,p.value,k);if(null===M){null===q&&(q=z);break}a&&q&&null===M.alternate&&b(e,q);g=f(M,g,y);null===m?l=M:m.sibling=M;m=M;q=z}if(p.done)return c(e,q),l;if(null===q){for(;!p.done;y++,p=h.next())p=A(e,p.value,k),null!==p&&(g=f(p,g,y),null===m?l=p:m.sibling=p,m=p);return l}for(q=d(e,q);!p.done;y++,p=h.next())p=L(q,e,y,p.value,k),null!==p&&(a&&null!==\np.alternate&&q.delete(null===p.key?y:p.key),g=f(p,g,y),null===m?l=p:m.sibling=p,m=p);a&&q.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===Ha&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case Fa:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){if(7===k.tag?f.type===Ha:k.elementType===f.type){c(a,k.sibling);d=e(k,f.type===Ha?f.props.children:f.props,h);d.ref=Og(a,k,f);d.return=a;a=d;break a}c(a,\nk);break}else b(a,k);k=k.sibling}f.type===Ha?(d=Vg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Tg(f.type,f.key,f.props,null,a.mode,h),h.ref=Og(a,d,f),h.return=a,a=h)}return g(a);case Ga:a:{for(k=f.key;null!==d;){if(d.key===k){if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[],h);d.return=a;a=d;break a}c(a,d);break}else b(a,d);d=d.sibling}d=Ug(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\n\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f,h),d.return=a,a=d):(c(a,d),d=Sg(f,a.mode,h),d.return=a,a=d),g(a);if(Ng(f))return wb(a,d,f,h);if(Ta(f))return M(a,d,f,h);l&&Pg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 0:throw a=a.type,t(Error(152),a.displayName||a.name||\"Component\");}return c(a,d)}}var Wg=Qg(!0),Xg=Qg(!1),Yg={},Zg={current:Yg},$g={current:Yg},ah={current:Yg};function bh(a){if(a===Yg)throw t(Error(174));return a}\nfunction ch(a,b){I(ah,b,a);I($g,a,a);I(Zg,Yg,a);var c=b.nodeType;switch(c){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:Qb(null,\"\");break;default:c=8===c?b.parentNode:b,b=c.namespaceURI||null,c=c.tagName,b=Qb(b,c)}H(Zg,a);I(Zg,b,a)}function dh(a){H(Zg,a);H($g,a);H(ah,a)}function eh(a){bh(ah.current);var b=bh(Zg.current);var c=Qb(b,a.type);b!==c&&(I($g,a,a),I(Zg,c,a))}function fh(a){$g.current===a&&(H(Zg,a),H($g,a))}var O={current:0};\nfunction gh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||c.data===be||c.data===ce))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if((b.effectTag&64)!==D)return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}function hh(a,b){return{responder:a,props:b}}\nvar ih=Da.ReactCurrentDispatcher,jh=0,kh=null,P=null,lh=null,mh=null,Q=null,nh=null,oh=0,ph=null,qh=0,rh=!1,sh=null,th=0;function uh(){throw t(Error(321));}function vh(a,b){if(null===b)return!1;for(var c=0;coh&&(oh=m,zg(oh))):(yg(m,k.suspenseConfig),f=k.eagerReducer===a?k.eagerState:a(f,k.action));g=k;k=k.next}while(null!==k&&k!==d);l||(h=g,e=f);ff(f,b.memoizedState)||(mg=!0);b.memoizedState=f;b.baseUpdate=h;b.baseState=e;c.lastRenderedState=f}return[b.memoizedState,c.dispatch]}\nfunction Ih(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};null===ph?(ph={lastEffect:null},ph.lastEffect=a.next=a):(b=ph.lastEffect,null===b?ph.lastEffect=a.next=a:(c=b.next,b.next=a,a.next=c,ph.lastEffect=a));return a}function Jh(a,b,c,d){var e=Eh();qh|=a;e.memoizedState=Ih(b,c,void 0,void 0===d?null:d)}\nfunction Kh(a,b,c,d){var e=Fh();d=void 0===d?null:d;var f=void 0;if(null!==P){var g=P.memoizedState;f=g.destroy;if(null!==d&&vh(d,g.deps)){Ih(0,c,f,d);return}}qh|=a;e.memoizedState=Ih(b,c,f,d)}function Lh(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function Mh(){}\nfunction Nh(a,b,c){if(!(25>th))throw t(Error(301));var d=a.alternate;if(a===kh||null!==d&&d===kh)if(rh=!0,a={expirationTime:jh,suspenseConfig:null,action:c,eagerReducer:null,eagerState:null,next:null},null===sh&&(sh=new Map),c=sh.get(b),void 0===c)sh.set(b,a);else{for(b=c;null!==b.next;)b=b.next;b.next=a}else{var e=Fg(),f=Cg.suspense;e=Gg(e,a,f);f={expirationTime:e,suspenseConfig:f,action:c,eagerReducer:null,eagerState:null,next:null};var g=b.last;if(null===g)f.next=f;else{var h=g.next;null!==h&&\n(f.next=h);g.next=f}b.last=f;if(0===a.expirationTime&&(null===d||0===d.expirationTime)&&(d=b.lastRenderedReducer,null!==d))try{var k=b.lastRenderedState,l=d(k,c);f.eagerReducer=d;f.eagerState=l;if(ff(l,k))return}catch(m){}finally{}Hg(a,e)}}\nvar zh={readContext:ng,useCallback:uh,useContext:uh,useEffect:uh,useImperativeHandle:uh,useLayoutEffect:uh,useMemo:uh,useReducer:uh,useRef:uh,useState:uh,useDebugValue:uh,useResponder:uh},xh={readContext:ng,useCallback:function(a,b){Eh().memoizedState=[a,void 0===b?null:b];return a},useContext:ng,useEffect:function(a,b){return Jh(516,192,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Jh(4,36,Lh.bind(null,b,a),c)},useLayoutEffect:function(a,b){return Jh(4,\n36,a,b)},useMemo:function(a,b){var c=Eh();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Eh();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={last:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=Nh.bind(null,kh,a);return[d.memoizedState,a]},useRef:function(a){var b=Eh();a={current:a};return b.memoizedState=a},useState:function(a){var b=Eh();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={last:null,\ndispatch:null,lastRenderedReducer:Gh,lastRenderedState:a};a=a.dispatch=Nh.bind(null,kh,a);return[b.memoizedState,a]},useDebugValue:Mh,useResponder:hh},yh={readContext:ng,useCallback:function(a,b){var c=Fh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&vh(b,d[1]))return d[0];c.memoizedState=[a,b];return a},useContext:ng,useEffect:function(a,b){return Kh(516,192,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Kh(4,36,Lh.bind(null,b,a),c)},\nuseLayoutEffect:function(a,b){return Kh(4,36,a,b)},useMemo:function(a,b){var c=Fh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&vh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a},useReducer:Hh,useRef:function(){return Fh().memoizedState},useState:function(a){return Hh(Gh,a)},useDebugValue:Mh,useResponder:hh},Oh=null,Ph=null,Qh=!1;\nfunction Rh(a,b){var c=Sh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function Th(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction Uh(a){if(Qh){var b=Ph;if(b){var c=b;if(!Th(a,b)){b=je(c.nextSibling);if(!b||!Th(a,b)){a.effectTag=a.effectTag&~Ac|E;Qh=!1;Oh=a;return}Rh(Oh,c)}Oh=a;Ph=je(b.firstChild)}else a.effectTag=a.effectTag&~Ac|E,Qh=!1,Oh=a}}function Vh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;Oh=a}\nfunction Wh(a){if(a!==Oh)return!1;if(!Qh)return Vh(a),Qh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!ge(b,a.memoizedProps))for(b=Ph;b;)Rh(a,b),b=je(b.nextSibling);Vh(a);if(13===a.tag)if(a=a.memoizedState,a=null!==a?a.dehydrated:null,null===a)a=Ph;else a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(c===ae){if(0===b){a=je(a.nextSibling);break a}b--}else c!==$d&&c!==ce&&c!==be||b++}a=a.nextSibling}a=null}else a=Oh?je(a.stateNode.nextSibling):null;Ph=a;return!0}\nfunction Xh(){Ph=Oh=null;Qh=!1}var Yh=Da.ReactCurrentOwner,mg=!1;function R(a,b,c,d){b.child=null===a?Xg(b,null,c,d):Wg(b,a.child,c,d)}function Zh(a,b,c,d,e){c=c.render;var f=b.ref;lg(b,e);d=wh(a,b,c,d,f,e);if(null!==a&&!mg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),$h(a,b,e);b.effectTag|=1;R(a,b,d,e);return b.child}\nfunction ai(a,b,c,d,e,f){if(null===a){var g=c.type;if(\"function\"===typeof g&&!bi(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,ci(a,b,g,d,e,f);a=Tg(c.type,null,d,null,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(eb)&&rj.set(a,b)))}}\nfunction wj(a,b){a.expirationTimea?b:a}\nfunction Z(a){if(0!==a.lastExpiredTime)a.callbackExpirationTime=1073741823,a.callbackPriority=99,a.callbackNode=$f(xj.bind(null,a));else{var b=Aj(a),c=a.callbackNode;if(0===b)null!==c&&(a.callbackNode=null,a.callbackExpirationTime=0,a.callbackPriority=90);else{var d=Fg();1073741823===b?d=99:1===b||2===b?d=95:(d=10*(1073741821-b)-10*(1073741821-d),d=0>=d?99:250>=d?98:5250>=d?97:95);if(null!==c){var e=a.callbackPriority;if(a.callbackExpirationTime===b&&e>=d)return;c!==Pf&&Ff(c)}a.callbackExpirationTime=\nb;a.callbackPriority=d;b=1073741823===b?$f(xj.bind(null,a)):Zf(d,Cj.bind(null,a),{timeout:10*(1073741821-b)-Vf()});a.callbackNode=b}}}\nfunction Cj(a,b){uj=0;if(b)return b=Fg(),Dj(a,b),Z(a),null;var c=Aj(a);if(0!==c){b=a.callbackNode;if((T&(Zi|$i))!==S)throw t(Error(327));Ej();a===U&&c===W||Fj(a,c);if(null!==V){var d=T;T|=Zi;var e=Gj(a);do try{Hj();break}catch(h){Ij(a,h)}while(1);hg();T=d;Wi.current=e;if(X===bj)throw b=hj,Fj(a,c),yj(a,c),Z(a),b;if(null===V)switch(e=a.finishedWork=a.current.alternate,a.finishedExpirationTime=c,Jj(a,c),d=X,U=null,d){case aj:case bj:throw t(Error(345));case cj:if(2!==c){Dj(a,2);break}Kj(a);break;case dj:yj(a,\nc);d=a.lastSuspendedTime;c===d&&(a.nextKnownPendingLevel=Lj(e));if(1073741823===ij&&(e=Mi+nj-Vf(),10=c){a.lastPingedTime=c;Fj(a,c);break}}f=Aj(a);if(0!==f&&f!==c)break;if(0!==d&&d!==c){a.lastPingedTime=d;break}a.timeoutHandle=he(Kj.bind(null,a),e);break}Kj(a);break;case ej:yj(a,c);d=a.lastSuspendedTime;c===d&&(a.nextKnownPendingLevel=Lj(e));if(mj&&(e=a.lastPingedTime,0===e||e>=c)){a.lastPingedTime=c;Fj(a,c);break}e=Aj(a);if(0!==e&&e!==c)break;if(0!==\nd&&d!==c){a.lastPingedTime=d;break}1073741823!==jj?d=10*(1073741821-jj)-Vf():1073741823===ij?d=0:(d=10*(1073741821-ij)-5E3,e=Vf(),c=10*(1073741821-c)-e,d=e-d,0>d&&(d=0),d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*Vi(d/1960))-d,c=d?d=0:(e=g.busyDelayMs|0,f=Vf()-(10*(1073741821-f)-(g.timeoutMs|0||5E3)),d=f<=e?0:e+d-f);\nif(10=b&&(Zf(97,function(){c._onComplete();return null}),X=gj)}function Oj(){if(null!==rj){var a=rj;rj=null;a.forEach(function(a,c){Dj(c,a);Z(c)});bg()}}function Pj(a,b){var c=T;T|=1;try{return a(b)}finally{T=c,T===S&&bg()}}function Qj(a,b,c,d){var e=T;T|=4;try{return Yf(98,a.bind(null,b,c,d))}finally{T=e,T===S&&bg()}}\nfunction Rj(a,b){var c=T;T&=-2;T|=Yi;try{return a(b)}finally{T=c,T===S&&bg()}}\nfunction Fj(a,b){a.finishedWork=null;a.finishedExpirationTime=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,ie(c));if(null!==V)for(c=V.return;null!==c;){var d=c;switch(d.tag){case 1:var e=d.type.childContextTypes;null!==e&&void 0!==e&&wf(d);break;case 3:dh(d);xf(d);break;case 5:fh(d);break;case 4:dh(d);break;case 13:H(O,d);break;case 19:H(O,d);break;case 10:jg(d)}c=c.return}U=a;V=Rg(a.current,null,b);W=b;X=aj;hj=null;jj=ij=1073741823;kj=null;lj=0;mj=!1}\nfunction Ij(a,b){do{try{hg();Ah();if(null===V||null===V.return)return X=bj,hj=b,null;a:{var c=a,d=V.return,e=V,f=b;b=W;e.effectTag|=2048;e.firstEffect=e.lastEffect=null;if(null!==f&&\"object\"===typeof f&&\"function\"===typeof f.then){var g=f,h=0!==(O.current&1),k=d;do{var l;if(l=13===k.tag){var m=k.memoizedState;if(null!==m)l=null!==m.dehydrated?!0:!1;else{var A=k.memoizedProps;l=void 0===A.fallback?!1:!0!==A.unstable_avoidThisFallback?!0:h?!1:!0}}if(l){var w=k.updateQueue;if(null===w){var L=new Set;\nL.add(g);k.updateQueue=L}else w.add(g);if(0===(k.mode&2)){k.effectTag|=64;e.effectTag&=-2981;if(1===e.tag)if(null===e.alternate)e.tag=17;else{var wb=rg(1073741823,null);wb.tag=2;tg(e,wb)}e.expirationTime=1073741823;break a}f=void 0;e=b;var M=c.pingCache;null===M?(M=c.pingCache=new Pi,f=new Set,M.set(g,f)):(f=M.get(g),void 0===f&&(f=new Set,M.set(g,f)));if(!f.has(e)){f.add(e);var q=Sj.bind(null,c,g,e);g.then(q,q)}k.effectTag|=4096;k.expirationTime=b;break a}k=k.return}while(null!==k);f=Error((Va(e.type)||\n\"A React component\")+\" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a component higher in the tree to provide a loading indicator or placeholder to display.\"+Wa(e))}X!==fj&&(X=cj);f=ti(f,e);k=d;do{switch(k.tag){case 3:g=f;k.effectTag|=4096;k.expirationTime=b;var y=Qi(k,g,b);ug(k,y);break a;case 1:g=f;var z=k.type,p=k.stateNode;if((k.effectTag&64)===D&&(\"function\"===typeof z.getDerivedStateFromError||null!==p&&\"function\"===typeof p.componentDidCatch&&\n(null===Ui||!Ui.has(p)))){k.effectTag|=4096;k.expirationTime=b;var u=Ti(k,g,b);ug(k,u);break a}}k=k.return}while(null!==k)}V=Tj(V)}catch(v){b=v;continue}break}while(1)}function Gj(){var a=Wi.current;Wi.current=zh;return null===a?zh:a}function yg(a,b){alj&&(lj=a)}function Mj(){for(;null!==V;)V=Uj(V)}function Hj(){for(;null!==V&&!Gf();)V=Uj(V)}\nfunction Uj(a){var b=Vj(a.alternate,a,W);a.memoizedProps=a.pendingProps;null===b&&(b=Tj(a));Xi.current=null;return b}\nfunction Tj(a){V=a;do{var b=V.alternate;a=V.return;if((V.effectTag&2048)===D){a:{var c=b;b=V;var d=W,e=b.pendingProps;switch(b.tag){case 2:break;case 16:break;case 15:case 0:break;case 1:N(b.type)&&wf(b);break;case 3:dh(b);xf(b);d=b.stateNode;d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);(null===c||null===c.child)&&Wh(b)&&mi(b);oi(b);break;case 5:fh(b);d=bh(ah.current);var f=b.type;if(null!==c&&null!=b.stateNode)pi(c,b,f,e,d),c.ref!==b.ref&&(b.effectTag|=128);else if(e){var g=\nbh(Zg.current);if(Wh(b)){e=b;f=void 0;c=e.stateNode;var h=e.type,k=e.memoizedProps;c[me]=e;c[ne]=k;switch(h){case \"iframe\":case \"object\":case \"embed\":G(\"load\",c);break;case \"video\":case \"audio\":for(var l=0;l\\x3c/script>\",l=k.removeChild(k.firstChild)):\"string\"===typeof c.is?l=l.createElement(k,{is:c.is}):(l=l.createElement(k),\"select\"===k&&(k=l,c.multiple?k.multiple=!0:c.size&&(k.size=c.size))):l=l.createElementNS(g,k);k=l;k[me]=h;k[ne]=c;c=k;ni(c,b,!1,!1);b.stateNode=c;g=d;var m=Rd(f,e);switch(f){case \"iframe\":case \"object\":case \"embed\":G(\"load\",\nc);d=e;break;case \"video\":case \"audio\":for(d=0;de.tailExpiration&&1e&&(e=c),h>e&&(e=h),f=f.sibling;d.childExpirationTime=e}if(null!==b)return b;null!==a&&(a.effectTag&2048)===D&&(null===a.firstEffect&&(a.firstEffect=V.firstEffect),null!==V.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=V.firstEffect),a.lastEffect=V.lastEffect),1a?b:a}function Kj(a){var b=Wf();Yf(99,Wj.bind(null,a,b));return null}\nfunction Wj(a,b){Ej();if((T&(Zi|$i))!==S)throw t(Error(327));var c=a.finishedWork,d=a.finishedExpirationTime;if(null===c)return null;a.finishedWork=null;a.finishedExpirationTime=0;if(c===a.current)throw t(Error(177));a.callbackNode=null;a.callbackExpirationTime=0;a.callbackPriority=90;a.nextKnownPendingLevel=0;var e=Lj(c);a.firstPendingTime=e;d<=a.lastSuspendedTime?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:d<=a.firstSuspendedTime&&(a.firstSuspendedTime=d-1);d<=a.lastPingedTime&&\n(a.lastPingedTime=0);d<=a.lastExpiredTime&&(a.lastExpiredTime=0);a===U&&(V=U=null,W=0);1h&&(l=h,h=g,g=l),l=Wd(p,g),m=Wd(p,h),l&&m&&(1!==v.rangeCount||v.anchorNode!==l.node||v.anchorOffset!==l.offset||v.focusNode!==m.node||v.focusOffset!==m.offset)&&(u=u.createRange(),u.setStart(l.node,l.offset),v.removeAllRanges(),g>h?(v.addRange(u),v.extend(m.node,m.offset)):(u.setEnd(m.node,m.offset),v.addRange(u))))));u=[];for(v=p;v=v.parentNode;)1===v.nodeType&&u.push({element:v,left:v.scrollLeft,top:v.scrollTop});\"function\"===\ntypeof p.focus&&p.focus();for(p=0;p=c)return ji(a,b,c);I(O,O.current&\n1,b);b=$h(a,b,c);return null!==b?b.sibling:null}I(O,O.current&1,b);break;case 19:d=b.childExpirationTime>=c;if((a.effectTag&64)!==D){if(d)return li(a,b,c);b.effectTag|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null);I(O,O.current,b);if(!d)return null}return $h(a,b,c)}mg=!1}}else mg=!1;b.expirationTime=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=E);a=b.pendingProps;e=vf(b,J.current);lg(b,c);e=wh(null,b,d,a,e,c);b.effectTag|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;Ah();if(N(d)){var f=!0;Bf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Eg(b,d,g,a);e.updater=Ig;b.stateNode=e;e._reactInternalFiber=b;Mg(b,d,a,c);b=gi(null,b,d,!0,f,c)}else b.tag=0,R(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=E);a=b.pendingProps;Ua(e);if(1!==e._status)throw e._result;\ne=e._result;b.type=e;f=b.tag=ck(e);a=cg(e,a);switch(f){case 0:b=di(null,b,e,a,c);break;case 1:b=fi(null,b,e,a,c);break;case 11:b=Zh(null,b,e,a,c);break;case 14:b=ai(null,b,e,cg(e.type,a),d,c);break;default:throw t(Error(306),e,\"\");}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:cg(d,e),di(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:cg(d,e),fi(a,b,d,e,c);case 3:hi(b);d=b.updateQueue;if(null===d)throw t(Error(282));e=b.memoizedState;e=null!==e?e.element:\nnull;xg(b,d,b.pendingProps,null,c);d=b.memoizedState.element;if(d===e)Xh(),b=$h(a,b,c);else{if(e=b.stateNode.hydrate)Ph=je(b.stateNode.containerInfo.firstChild),Oh=b,e=Qh=!0;if(e)for(c=Xg(b,null,d,c),b.child=c;c;)c.effectTag=c.effectTag&~E|Ac,c=c.sibling;else R(a,b,d,c),Xh();b=b.child}return b;case 5:return eh(b),null===a&&Uh(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,ge(d,e)?g=null:null!==f&&ge(d,f)&&(b.effectTag|=16),ei(a,b),b.mode&4&&1!==c&&e.hidden?(b.expirationTime=\nb.childExpirationTime=1,b=null):(R(a,b,g,c),b=b.child),b;case 6:return null===a&&Uh(b),null;case 13:return ji(a,b,c);case 4:return ch(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Wg(b,null,d,c):R(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:cg(d,e),Zh(a,b,d,e,c);case 7:return R(a,b,b.pendingProps,c),b.child;case 8:return R(a,b,b.pendingProps.children,c),b.child;case 12:return R(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;\ne=b.pendingProps;g=b.memoizedProps;f=e.value;ig(b,f);if(null!==g){var h=g.value;f=ff(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0;if(0===f){if(g.children===e.children&&!K.current){b=$h(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var k=h.dependencies;if(null!==k){g=h.child;for(var l=k.firstContext;null!==l;){if(l.context===d&&0!==(l.observedBits&f)){1===h.tag&&(l=rg(c,null),l.tag=2,tg(h,l));h.expirationTime=b&&a<=b}function yj(a,b){var c=a.firstSuspendedTime,d=a.lastSuspendedTime;cb||0===c)a.lastSuspendedTime=b;b<=a.lastPingedTime&&(a.lastPingedTime=0);b<=a.lastExpiredTime&&(a.lastExpiredTime=0)}\nfunction zj(a,b){b>a.firstPendingTime&&(a.firstPendingTime=b);var c=a.firstSuspendedTime;0!==c&&(b>=c?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:b>=a.lastSuspendedTime&&(a.lastSuspendedTime=b+1),b>a.nextKnownPendingLevel&&(a.nextKnownPendingLevel=b))}function Dj(a,b){var c=a.lastExpiredTime;if(0===c||c>b)a.lastExpiredTime=b}\nfunction gk(a,b,c,d,e,f){var g=b.current;a:if(c){c=c._reactInternalFiber;b:{if(Bc(c)!==c||1!==c.tag)throw t(Error(170));var h=c;do{switch(h.tag){case 3:h=h.stateNode.context;break b;case 1:if(N(h.type)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}}h=h.return}while(null!==h);throw t(Error(171));}if(1===c.tag){var k=c.type;if(N(k)){c=Af(c,k,h);break a}}c=h}else c=tf;null===b.context?b.context=c:b.pendingContext=c;b=f;e=rg(d,e);e.payload={element:a};b=void 0===b?null:b;null!==b&&\n(e.callback=b);tg(g,e);Hg(g,d);return d}function hk(a,b,c,d){var e=b.current,f=Fg(),g=Cg.suspense;e=Gg(f,e,g);return gk(a,b,c,e,g,d)}function ik(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function jk(a,b,c){var d=3=b;)c=d,d=d._next;a._next=d;null!==c&&(c._next=a)}return a};function qk(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}db=Pj;eb=Qj;fb=Nj;gb=function(a,b){var c=T;T|=2;try{return a(b)}finally{T=c,T===S&&bg()}};\nfunction rk(a,b){b||(b=a?9===a.nodeType?a.documentElement:a.firstChild:null,b=!(!b||1!==b.nodeType||!b.hasAttribute(\"data-reactroot\")));if(!b)for(var c;c=a.lastChild;)a.removeChild(c);return new nk(a,0,b?{hydrate:!0}:void 0)}\nfunction sk(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f._internalRoot;if(\"function\"===typeof e){var h=e;e=function(){var a=ik(g);h.call(a)}}hk(b,g,a,e)}else{f=c._reactRootContainer=rk(c,d);g=f._internalRoot;if(\"function\"===typeof e){var k=e;e=function(){var a=ik(g);k.call(a)}}Rj(function(){hk(b,g,a,e)})}return ik(g)}function tk(a,b){var c=2=H};l=function(){};exports.unstable_forceFrameRate=function(a){0>a||125L(n,c))void 0!==r&&0>L(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>L(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function L(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var O=[],P=[],Q=1,R=null,S=3,T=!1,U=!1,V=!1;\nfunction W(a){for(var b=M(P);null!==b;){if(null===b.callback)N(P);else if(b.startTime<=a)N(P),b.sortIndex=b.expirationTime,K(O,b);else break;b=M(P)}}function X(a){V=!1;W(a);if(!U)if(null!==M(O))U=!0,f(Y);else{var b=M(P);null!==b&&g(X,b.startTime-a)}}\nfunction Y(a,b){U=!1;V&&(V=!1,h());T=!0;var c=S;try{W(b);for(R=M(O);null!==R&&(!(R.expirationTime>b)||a&&!k());){var d=R.callback;if(null!==d){R.callback=null;S=R.priorityLevel;var e=d(R.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?R.callback=e:R===M(O)&&N(O);W(b)}else N(O);R=M(O)}if(null!==R)var m=!0;else{var n=M(P);null!==n&&g(X,n.startTime-b);m=!1}return m}finally{R=null,S=c,T=!1}}\nfunction Z(a){switch(a){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1E4;default:return 5E3}}var aa=l;exports.unstable_ImmediatePriority=1;exports.unstable_UserBlockingPriority=2;exports.unstable_NormalPriority=3;exports.unstable_IdlePriority=5;exports.unstable_LowPriority=4;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=S;S=a;try{return b()}finally{S=c}};\nexports.unstable_next=function(a){switch(S){case 1:case 2:case 3:var b=3;break;default:b=S}var c=S;S=b;try{return a()}finally{S=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();if(\"object\"===typeof c&&null!==c){var e=c.delay;e=\"number\"===typeof e&&0d?(a.sortIndex=e,K(P,a),null===M(O)&&a===M(P)&&(V?h():V=!0,g(X,e-d))):(a.sortIndex=c,K(O,a),U||T||(U=!0,f(Y)));return a};exports.unstable_cancelCallback=function(a){a.callback=null};\nexports.unstable_wrapCallback=function(a){var b=S;return function(){var c=S;S=b;try{return a.apply(this,arguments)}finally{S=c}}};exports.unstable_getCurrentPriorityLevel=function(){return S};exports.unstable_shouldYield=function(){var a=exports.unstable_now();W(a);var b=M(O);return b!==R&&null!==R&&null!==b&&null!==b.callback&&b.startTime<=a&&b.expirationTime result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a \n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'true') return true;\n return val;\n}\n\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n var attrs = [['data-family-prefix', 'familyPrefix'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];\n attrs.forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n attr = _ref2[0],\n key = _ref2[1];\n\n var val = coerce(getAttrConfig(attr));\n\n if (val !== undefined && val !== null) {\n initial[key] = val;\n }\n });\n}\n\nvar _default = {\n familyPrefix: DEFAULT_FAMILY_PREFIX,\n replacementClass: DEFAULT_REPLACEMENT_CLASS,\n autoReplaceSvg: true,\n autoAddCss: true,\n autoA11y: true,\n searchPseudoElements: false,\n observeMutations: true,\n mutateApproach: 'async',\n keepOriginalSource: true,\n measurePerformance: false,\n showMissingIcons: true\n};\n\nvar _config = _objectSpread({}, _default, initial);\n\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\n\nvar config = _objectSpread({}, _config);\n\nWINDOW.FontAwesomeConfig = config;\n\nvar w = WINDOW || {};\nif (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};\nif (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};\nif (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];\nvar namespace = w[NAMESPACE_IDENTIFIER];\n\nvar functions = [];\n\nvar listener = function listener() {\n DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n loaded = 1;\n functions.map(function (fn) {\n return fn();\n });\n};\n\nvar loaded = false;\n\nif (IS_DOM) {\n loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\n\nfunction domready (fn) {\n if (!IS_DOM) return;\n loaded ? setTimeout(fn, 0) : functions.push(fn);\n}\n\nvar PENDING = 'pending';\nvar SETTLED = 'settled';\nvar FULFILLED = 'fulfilled';\nvar REJECTED = 'rejected';\n\nvar NOOP = function NOOP() {};\n\nvar isNode = typeof global !== 'undefined' && typeof global.process !== 'undefined' && typeof global.process.emit === 'function';\nvar asyncSetTimer = typeof setImmediate === 'undefined' ? setTimeout : setImmediate;\nvar asyncQueue = [];\nvar asyncTimer;\n\nfunction asyncFlush() {\n // run promise callbacks\n for (var i = 0; i < asyncQueue.length; i++) {\n asyncQueue[i][0](asyncQueue[i][1]);\n } // reset async asyncQueue\n\n\n asyncQueue = [];\n asyncTimer = false;\n}\n\nfunction asyncCall(callback, arg) {\n asyncQueue.push([callback, arg]);\n\n if (!asyncTimer) {\n asyncTimer = true;\n asyncSetTimer(asyncFlush, 0);\n }\n}\n\nfunction invokeResolver(resolver, promise) {\n function resolvePromise(value) {\n resolve(promise, value);\n }\n\n function rejectPromise(reason) {\n reject(promise, reason);\n }\n\n try {\n resolver(resolvePromise, rejectPromise);\n } catch (e) {\n rejectPromise(e);\n }\n}\n\nfunction invokeCallback(subscriber) {\n var owner = subscriber.owner;\n var settled = owner._state;\n var value = owner._data;\n var callback = subscriber[settled];\n var promise = subscriber.then;\n\n if (typeof callback === 'function') {\n settled = FULFILLED;\n\n try {\n value = callback(value);\n } catch (e) {\n reject(promise, e);\n }\n }\n\n if (!handleThenable(promise, value)) {\n if (settled === FULFILLED) {\n resolve(promise, value);\n }\n\n if (settled === REJECTED) {\n reject(promise, value);\n }\n }\n}\n\nfunction handleThenable(promise, value) {\n var resolved;\n\n try {\n if (promise === value) {\n throw new TypeError('A promises callback cannot return that same promise.');\n }\n\n if (value && (typeof value === 'function' || _typeof(value) === 'object')) {\n // then should be retrieved only once\n var then = value.then;\n\n if (typeof then === 'function') {\n then.call(value, function (val) {\n if (!resolved) {\n resolved = true;\n\n if (value === val) {\n fulfill(promise, val);\n } else {\n resolve(promise, val);\n }\n }\n }, function (reason) {\n if (!resolved) {\n resolved = true;\n reject(promise, reason);\n }\n });\n return true;\n }\n }\n } catch (e) {\n if (!resolved) {\n reject(promise, e);\n }\n\n return true;\n }\n\n return false;\n}\n\nfunction resolve(promise, value) {\n if (promise === value || !handleThenable(promise, value)) {\n fulfill(promise, value);\n }\n}\n\nfunction fulfill(promise, value) {\n if (promise._state === PENDING) {\n promise._state = SETTLED;\n promise._data = value;\n asyncCall(publishFulfillment, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state === PENDING) {\n promise._state = SETTLED;\n promise._data = reason;\n asyncCall(publishRejection, promise);\n }\n}\n\nfunction publish(promise) {\n promise._then = promise._then.forEach(invokeCallback);\n}\n\nfunction publishFulfillment(promise) {\n promise._state = FULFILLED;\n publish(promise);\n}\n\nfunction publishRejection(promise) {\n promise._state = REJECTED;\n publish(promise);\n\n if (!promise._handled && isNode) {\n global.process.emit('unhandledRejection', promise._data, promise);\n }\n}\n\nfunction notifyRejectionHandled(promise) {\n global.process.emit('rejectionHandled', promise);\n}\n/**\n * @class\n */\n\n\nfunction P(resolver) {\n if (typeof resolver !== 'function') {\n throw new TypeError('Promise resolver ' + resolver + ' is not a function');\n }\n\n if (this instanceof P === false) {\n throw new TypeError('Failed to construct \\'Promise\\': Please use the \\'new\\' operator, this object constructor cannot be called as a function.');\n }\n\n this._then = [];\n invokeResolver(resolver, this);\n}\n\nP.prototype = {\n constructor: P,\n _state: PENDING,\n _then: null,\n _data: undefined,\n _handled: false,\n then: function then(onFulfillment, onRejection) {\n var subscriber = {\n owner: this,\n then: new this.constructor(NOOP),\n fulfilled: onFulfillment,\n rejected: onRejection\n };\n\n if ((onRejection || onFulfillment) && !this._handled) {\n this._handled = true;\n\n if (this._state === REJECTED && isNode) {\n asyncCall(notifyRejectionHandled, this);\n }\n }\n\n if (this._state === FULFILLED || this._state === REJECTED) {\n // already resolved, call callback async\n asyncCall(invokeCallback, subscriber);\n } else {\n // subscribe\n this._then.push(subscriber);\n }\n\n return subscriber.then;\n },\n catch: function _catch(onRejection) {\n return this.then(null, onRejection);\n }\n};\n\nP.all = function (promises) {\n if (!Array.isArray(promises)) {\n throw new TypeError('You must pass an array to Promise.all().');\n }\n\n return new P(function (resolve, reject) {\n var results = [];\n var remaining = 0;\n\n function resolver(index) {\n remaining++;\n return function (value) {\n results[index] = value;\n\n if (! --remaining) {\n resolve(results);\n }\n };\n }\n\n for (var i = 0, promise; i < promises.length; i++) {\n promise = promises[i];\n\n if (promise && typeof promise.then === 'function') {\n promise.then(resolver(i), reject);\n } else {\n results[i] = promise;\n }\n }\n\n if (!remaining) {\n resolve(results);\n }\n });\n};\n\nP.race = function (promises) {\n if (!Array.isArray(promises)) {\n throw new TypeError('You must pass an array to Promise.race().');\n }\n\n return new P(function (resolve, reject) {\n for (var i = 0, promise; i < promises.length; i++) {\n promise = promises[i];\n\n if (promise && typeof promise.then === 'function') {\n promise.then(resolve, reject);\n } else {\n resolve(promise);\n }\n }\n });\n};\n\nP.resolve = function (value) {\n if (value && _typeof(value) === 'object' && value.constructor === P) {\n return value;\n }\n\n return new P(function (resolve) {\n resolve(value);\n });\n};\n\nP.reject = function (reason) {\n return new P(function (resolve, reject) {\n reject(reason);\n });\n};\n\nvar picked = typeof Promise === 'function' ? Promise : P;\n\nvar d = UNITS_IN_GRID;\nvar meaninglessTransform = {\n size: 16,\n x: 0,\n y: 0,\n rotate: 0,\n flipX: false,\n flipY: false\n};\n\nfunction isReserved(name) {\n return ~RESERVED_CLASSES.indexOf(name);\n}\nfunction insertCss(css) {\n if (!css || !IS_DOM) {\n return;\n }\n\n var style = DOCUMENT.createElement('style');\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n var headChildren = DOCUMENT.head.childNodes;\n var beforeChild = null;\n\n for (var i = headChildren.length - 1; i > -1; i--) {\n var child = headChildren[i];\n var tagName = (child.tagName || '').toUpperCase();\n\n if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n beforeChild = child;\n }\n }\n\n DOCUMENT.head.insertBefore(style, beforeChild);\n return css;\n}\nvar idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nfunction nextUniqueId() {\n var size = 12;\n var id = '';\n\n while (size-- > 0) {\n id += idPool[Math.random() * 62 | 0];\n }\n\n return id;\n}\nfunction toArray(obj) {\n var array = [];\n\n for (var i = (obj || []).length >>> 0; i--;) {\n array[i] = obj[i];\n }\n\n return array;\n}\nfunction classArray(node) {\n if (node.classList) {\n return toArray(node.classList);\n } else {\n return (node.getAttribute('class') || '').split(' ').filter(function (i) {\n return i;\n });\n }\n}\nfunction getIconName(familyPrefix, cls) {\n var parts = cls.split('-');\n var prefix = parts[0];\n var iconName = parts.slice(1).join('-');\n\n if (prefix === familyPrefix && iconName !== '' && !isReserved(iconName)) {\n return iconName;\n } else {\n return null;\n }\n}\nfunction htmlEscape(str) {\n return \"\".concat(str).replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(//g, '>');\n}\nfunction joinAttributes(attributes) {\n return Object.keys(attributes || {}).reduce(function (acc, attributeName) {\n return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n }, '').trim();\n}\nfunction joinStyles(styles) {\n return Object.keys(styles || {}).reduce(function (acc, styleName) {\n return acc + \"\".concat(styleName, \": \").concat(styles[styleName], \";\");\n }, '');\n}\nfunction transformIsMeaningful(transform) {\n return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n}\nfunction transformForSvg(_ref) {\n var transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n var outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n var inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n var path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n return {\n outer: outer,\n inner: inner,\n path: path\n };\n}\nfunction transformForCss(_ref2) {\n var transform = _ref2.transform,\n _ref2$width = _ref2.width,\n width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,\n _ref2$height = _ref2.height,\n height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,\n _ref2$startCentered = _ref2.startCentered,\n startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;\n var val = '';\n\n if (startCentered && IS_IE) {\n val += \"translate(\".concat(transform.x / d - width / 2, \"em, \").concat(transform.y / d - height / 2, \"em) \");\n } else if (startCentered) {\n val += \"translate(calc(-50% + \".concat(transform.x / d, \"em), calc(-50% + \").concat(transform.y / d, \"em)) \");\n } else {\n val += \"translate(\".concat(transform.x / d, \"em, \").concat(transform.y / d, \"em) \");\n }\n\n val += \"scale(\".concat(transform.size / d * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d * (transform.flipY ? -1 : 1), \") \");\n val += \"rotate(\".concat(transform.rotate, \"deg) \");\n return val;\n}\n\nvar ALL_SPACE = {\n x: 0,\n y: 0,\n width: '100%',\n height: '100%'\n};\n\nfunction fillBlack(abstract) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (abstract.attributes && (abstract.attributes.fill || force)) {\n abstract.attributes.fill = 'black';\n }\n\n return abstract;\n}\n\nfunction deGroup(abstract) {\n if (abstract.tag === 'g') {\n return abstract.children;\n } else {\n return [abstract];\n }\n}\n\nfunction makeIconMasking (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n mask = _ref.mask,\n transform = _ref.transform;\n var mainWidth = main.width,\n mainPath = main.icon;\n var maskWidth = mask.width,\n maskPath = mask.icon;\n var trans = transformForSvg({\n transform: transform,\n containerWidth: maskWidth,\n iconWidth: mainWidth\n });\n var maskRect = {\n tag: 'rect',\n attributes: _objectSpread({}, ALL_SPACE, {\n fill: 'white'\n })\n };\n var maskInnerGroupChildrenMixin = mainPath.children ? {\n children: mainPath.children.map(fillBlack)\n } : {};\n var maskInnerGroup = {\n tag: 'g',\n attributes: _objectSpread({}, trans.inner),\n children: [fillBlack(_objectSpread({\n tag: mainPath.tag,\n attributes: _objectSpread({}, mainPath.attributes, trans.path)\n }, maskInnerGroupChildrenMixin))]\n };\n var maskOuterGroup = {\n tag: 'g',\n attributes: _objectSpread({}, trans.outer),\n children: [maskInnerGroup]\n };\n var maskId = \"mask-\".concat(nextUniqueId());\n var clipId = \"clip-\".concat(nextUniqueId());\n var maskTag = {\n tag: 'mask',\n attributes: _objectSpread({}, ALL_SPACE, {\n id: maskId,\n maskUnits: 'userSpaceOnUse',\n maskContentUnits: 'userSpaceOnUse'\n }),\n children: [maskRect, maskOuterGroup]\n };\n var defs = {\n tag: 'defs',\n children: [{\n tag: 'clipPath',\n attributes: {\n id: clipId\n },\n children: deGroup(maskPath)\n }, maskTag]\n };\n children.push(defs, {\n tag: 'rect',\n attributes: _objectSpread({\n fill: 'currentColor',\n 'clip-path': \"url(#\".concat(clipId, \")\"),\n mask: \"url(#\".concat(maskId, \")\")\n }, ALL_SPACE)\n });\n return {\n children: children,\n attributes: attributes\n };\n}\n\nfunction makeIconStandard (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n transform = _ref.transform,\n styles = _ref.styles;\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n if (transformIsMeaningful(transform)) {\n var trans = transformForSvg({\n transform: transform,\n containerWidth: main.width,\n iconWidth: main.width\n });\n children.push({\n tag: 'g',\n attributes: _objectSpread({}, trans.outer),\n children: [{\n tag: 'g',\n attributes: _objectSpread({}, trans.inner),\n children: [{\n tag: main.icon.tag,\n children: main.icon.children,\n attributes: _objectSpread({}, main.icon.attributes, trans.path)\n }]\n }]\n });\n } else {\n children.push(main.icon);\n }\n\n return {\n children: children,\n attributes: attributes\n };\n}\n\nfunction asIcon (_ref) {\n var children = _ref.children,\n main = _ref.main,\n mask = _ref.mask,\n attributes = _ref.attributes,\n styles = _ref.styles,\n transform = _ref.transform;\n\n if (transformIsMeaningful(transform) && main.found && !mask.found) {\n var width = main.width,\n height = main.height;\n var offset = {\n x: width / height / 2,\n y: 0.5\n };\n attributes['style'] = joinStyles(_objectSpread({}, styles, {\n 'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n }));\n }\n\n return [{\n tag: 'svg',\n attributes: attributes,\n children: children\n }];\n}\n\nfunction asSymbol (_ref) {\n var prefix = _ref.prefix,\n iconName = _ref.iconName,\n children = _ref.children,\n attributes = _ref.attributes,\n symbol = _ref.symbol;\n var id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.familyPrefix, \"-\").concat(iconName) : symbol;\n return [{\n tag: 'svg',\n attributes: {\n style: 'display: none;'\n },\n children: [{\n tag: 'symbol',\n attributes: _objectSpread({}, attributes, {\n id: id\n }),\n children: children\n }]\n }];\n}\n\nfunction makeInlineSvgAbstract(params) {\n var _params$icons = params.icons,\n main = _params$icons.main,\n mask = _params$icons.mask,\n prefix = params.prefix,\n iconName = params.iconName,\n transform = params.transform,\n symbol = params.symbol,\n title = params.title,\n extra = params.extra,\n _params$watchable = params.watchable,\n watchable = _params$watchable === void 0 ? false : _params$watchable;\n\n var _ref = mask.found ? mask : main,\n width = _ref.width,\n height = _ref.height;\n\n var widthClass = \"fa-w-\".concat(Math.ceil(width / height * 16));\n var attrClass = [config.replacementClass, iconName ? \"\".concat(config.familyPrefix, \"-\").concat(iconName) : '', widthClass].filter(function (c) {\n return extra.classes.indexOf(c) === -1;\n }).concat(extra.classes).join(' ');\n var content = {\n children: [],\n attributes: _objectSpread({}, extra.attributes, {\n 'data-prefix': prefix,\n 'data-icon': iconName,\n 'class': attrClass,\n 'role': extra.attributes.role || 'img',\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'viewBox': \"0 0 \".concat(width, \" \").concat(height)\n })\n };\n\n if (watchable) {\n content.attributes[DATA_FA_I2SVG] = '';\n }\n\n if (title) content.children.push({\n tag: 'title',\n attributes: {\n id: content.attributes['aria-labelledby'] || \"title-\".concat(nextUniqueId())\n },\n children: [title]\n });\n\n var args = _objectSpread({}, content, {\n prefix: prefix,\n iconName: iconName,\n main: main,\n mask: mask,\n transform: transform,\n symbol: symbol,\n styles: extra.styles\n });\n\n var _ref2 = mask.found && main.found ? makeIconMasking(args) : makeIconStandard(args),\n children = _ref2.children,\n attributes = _ref2.attributes;\n\n args.children = children;\n args.attributes = attributes;\n\n if (symbol) {\n return asSymbol(args);\n } else {\n return asIcon(args);\n }\n}\nfunction makeLayersTextAbstract(params) {\n var content = params.content,\n width = params.width,\n height = params.height,\n transform = params.transform,\n title = params.title,\n extra = params.extra,\n _params$watchable2 = params.watchable,\n watchable = _params$watchable2 === void 0 ? false : _params$watchable2;\n\n var attributes = _objectSpread({}, extra.attributes, title ? {\n 'title': title\n } : {}, {\n 'class': extra.classes.join(' ')\n });\n\n if (watchable) {\n attributes[DATA_FA_I2SVG] = '';\n }\n\n var styles = _objectSpread({}, extra.styles);\n\n if (transformIsMeaningful(transform)) {\n styles['transform'] = transformForCss({\n transform: transform,\n startCentered: true,\n width: width,\n height: height\n });\n styles['-webkit-transform'] = styles['transform'];\n }\n\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\nfunction makeLayersCounterAbstract(params) {\n var content = params.content,\n title = params.title,\n extra = params.extra;\n\n var attributes = _objectSpread({}, extra.attributes, title ? {\n 'title': title\n } : {}, {\n 'class': extra.classes.join(' ')\n });\n\n var styleString = joinStyles(extra.styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\n\nvar noop$1 = function noop() {};\n\nvar p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n mark: noop$1,\n measure: noop$1\n};\nvar preamble = \"FA \\\"5.11.2\\\"\";\n\nvar begin = function begin(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n return function () {\n return end(name);\n };\n};\n\nvar end = function end(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n p.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n};\n\nvar perf = {\n begin: begin,\n end: end\n};\n\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\n\nvar bindInternal4 = function bindInternal4(func, thisContext) {\n return function (a, b, c, d) {\n return func.call(thisContext, a, b, c, d);\n };\n};\n\n/**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param {Object} subject The object to reduce over.\n * @param {Function} fn The reducer function.\n * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].\n * @param {Object} thisContext The context for the reducer.\n * @return {mixed} The final result.\n */\n\n\nvar reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {\n var keys = Object.keys(subject),\n length = keys.length,\n iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n i,\n key,\n result;\n\n if (initialValue === undefined) {\n i = 1;\n result = subject[keys[0]];\n } else {\n i = 0;\n result = initialValue;\n }\n\n for (; i < length; i++) {\n key = keys[i];\n result = iterator(result, subject[key], key, subject);\n }\n\n return result;\n};\n\nfunction toHex(unicode) {\n var result = '';\n\n for (var i = 0; i < unicode.length; i++) {\n var hex = unicode.charCodeAt(i).toString(16);\n result += ('000' + hex).slice(-4);\n }\n\n return result;\n}\n\nfunction defineIcons(prefix, icons) {\n var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var _params$skipHooks = params.skipHooks,\n skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;\n var normalized = Object.keys(icons).reduce(function (acc, iconName) {\n var icon = icons[iconName];\n var expanded = !!icon.icon;\n\n if (expanded) {\n acc[icon.iconName] = icon.icon;\n } else {\n acc[iconName] = icon;\n }\n\n return acc;\n }, {});\n\n if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n namespace.hooks.addPack(prefix, normalized);\n } else {\n namespace.styles[prefix] = _objectSpread({}, namespace.styles[prefix] || {}, normalized);\n }\n /**\n * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n * for `fas` so we'll easy the upgrade process for our users by automatically defining\n * this as well.\n */\n\n\n if (prefix === 'fas') {\n defineIcons('fa', icons);\n }\n}\n\nvar styles = namespace.styles,\n shims = namespace.shims;\nvar _byUnicode = {};\nvar _byLigature = {};\nvar _byOldName = {};\nvar build = function build() {\n var lookup = function lookup(reducer) {\n return reduce(styles, function (o, style, prefix) {\n o[prefix] = reduce(style, reducer, {});\n return o;\n }, {});\n };\n\n _byUnicode = lookup(function (acc, icon, iconName) {\n if (icon[3]) {\n acc[icon[3]] = iconName;\n }\n\n return acc;\n });\n _byLigature = lookup(function (acc, icon, iconName) {\n var ligatures = icon[2];\n acc[iconName] = iconName;\n ligatures.forEach(function (ligature) {\n acc[ligature] = iconName;\n });\n return acc;\n });\n var hasRegular = 'far' in styles;\n _byOldName = reduce(shims, function (acc, shim) {\n var oldName = shim[0];\n var prefix = shim[1];\n var iconName = shim[2];\n\n if (prefix === 'far' && !hasRegular) {\n prefix = 'fas';\n }\n\n acc[oldName] = {\n prefix: prefix,\n iconName: iconName\n };\n return acc;\n }, {});\n};\nbuild();\nfunction byUnicode(prefix, unicode) {\n return (_byUnicode[prefix] || {})[unicode];\n}\nfunction byLigature(prefix, ligature) {\n return (_byLigature[prefix] || {})[ligature];\n}\nfunction byOldName(name) {\n return _byOldName[name] || {\n prefix: null,\n iconName: null\n };\n}\n\nvar styles$1 = namespace.styles;\nvar emptyCanonicalIcon = function emptyCanonicalIcon() {\n return {\n prefix: null,\n iconName: null,\n rest: []\n };\n};\nfunction getCanonicalIcon(values) {\n return values.reduce(function (acc, cls) {\n var iconName = getIconName(config.familyPrefix, cls);\n\n if (styles$1[cls]) {\n acc.prefix = cls;\n } else if (config.autoFetchSvg && ['fas', 'far', 'fal', 'fad', 'fab', 'fa'].indexOf(cls) > -1) {\n acc.prefix = cls;\n } else if (iconName) {\n var shim = acc.prefix === 'fa' ? byOldName(iconName) : {};\n acc.iconName = shim.iconName || iconName;\n acc.prefix = shim.prefix || acc.prefix;\n } else if (cls !== config.replacementClass && cls.indexOf('fa-w-') !== 0) {\n acc.rest.push(cls);\n }\n\n return acc;\n }, emptyCanonicalIcon());\n}\nfunction iconFromMapping(mapping, prefix, iconName) {\n if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n return {\n prefix: prefix,\n iconName: iconName,\n icon: mapping[prefix][iconName]\n };\n }\n}\n\nfunction toHtml(abstractNodes) {\n var tag = abstractNodes.tag,\n _abstractNodes$attrib = abstractNodes.attributes,\n attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,\n _abstractNodes$childr = abstractNodes.children,\n children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;\n\n if (typeof abstractNodes === 'string') {\n return htmlEscape(abstractNodes);\n } else {\n return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"\");\n }\n}\n\nvar noop$2 = function noop() {};\n\nfunction isWatched(node) {\n var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n return typeof i2svg === 'string';\n}\n\nfunction getMutator() {\n if (config.autoReplaceSvg === true) {\n return mutators.replace;\n }\n\n var mutator = mutators[config.autoReplaceSvg];\n return mutator || mutators.replace;\n}\n\nvar mutators = {\n replace: function replace(mutation) {\n var node = mutation[0];\n var abstract = mutation[1];\n var newOuterHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n\n if (node.parentNode && node.outerHTML) {\n node.outerHTML = newOuterHTML + (config.keepOriginalSource && node.tagName.toLowerCase() !== 'svg' ? \"\") : '');\n } else if (node.parentNode) {\n var newNode = document.createElement('span');\n node.parentNode.replaceChild(newNode, node);\n newNode.outerHTML = newOuterHTML;\n }\n },\n nest: function nest(mutation) {\n var node = mutation[0];\n var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.\n // Short-circuit to the standard replacement\n\n if (~classArray(node).indexOf(config.replacementClass)) {\n return mutators.replace(mutation);\n }\n\n var forSvg = new RegExp(\"\".concat(config.familyPrefix, \"-.*\"));\n delete abstract[0].attributes.style;\n delete abstract[0].attributes.id;\n var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) {\n if (cls === config.replacementClass || cls.match(forSvg)) {\n acc.toSvg.push(cls);\n } else {\n acc.toNode.push(cls);\n }\n\n return acc;\n }, {\n toNode: [],\n toSvg: []\n });\n abstract[0].attributes.class = splitClasses.toSvg.join(' ');\n var newInnerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.setAttribute('class', splitClasses.toNode.join(' '));\n node.setAttribute(DATA_FA_I2SVG, '');\n node.innerHTML = newInnerHTML;\n }\n};\n\nfunction performOperationSync(op) {\n op();\n}\n\nfunction perform(mutations, callback) {\n var callbackFunction = typeof callback === 'function' ? callback : noop$2;\n\n if (mutations.length === 0) {\n callbackFunction();\n } else {\n var frame = performOperationSync;\n\n if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n frame = WINDOW.requestAnimationFrame || performOperationSync;\n }\n\n frame(function () {\n var mutator = getMutator();\n var mark = perf.begin('mutate');\n mutations.map(mutator);\n mark();\n callbackFunction();\n });\n }\n}\nvar disabled = false;\nfunction disableObservation() {\n disabled = true;\n}\nfunction enableObservation() {\n disabled = false;\n}\nvar mo = null;\nfunction observe(options) {\n if (!MUTATION_OBSERVER) {\n return;\n }\n\n if (!config.observeMutations) {\n return;\n }\n\n var treeCallback = options.treeCallback,\n nodeCallback = options.nodeCallback,\n pseudoElementsCallback = options.pseudoElementsCallback,\n _options$observeMutat = options.observeMutationsRoot,\n observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;\n mo = new MUTATION_OBSERVER(function (objects) {\n if (disabled) return;\n toArray(objects).forEach(function (mutationRecord) {\n if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n if (config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target);\n }\n\n treeCallback(mutationRecord.target);\n }\n\n if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target.parentNode);\n }\n\n if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n if (mutationRecord.attributeName === 'class') {\n var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),\n prefix = _getCanonicalIcon.prefix,\n iconName = _getCanonicalIcon.iconName;\n\n if (prefix) mutationRecord.target.setAttribute('data-prefix', prefix);\n if (iconName) mutationRecord.target.setAttribute('data-icon', iconName);\n } else {\n nodeCallback(mutationRecord.target);\n }\n }\n });\n });\n if (!IS_DOM) return;\n mo.observe(observeMutationsRoot, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true\n });\n}\nfunction disconnect() {\n if (!mo) return;\n mo.disconnect();\n}\n\nfunction styleParser (node) {\n var style = node.getAttribute('style');\n var val = [];\n\n if (style) {\n val = style.split(';').reduce(function (acc, style) {\n var styles = style.split(':');\n var prop = styles[0];\n var value = styles.slice(1);\n\n if (prop && value.length > 0) {\n acc[prop] = value.join(':').trim();\n }\n\n return acc;\n }, {});\n }\n\n return val;\n}\n\nfunction classParser (node) {\n var existingPrefix = node.getAttribute('data-prefix');\n var existingIconName = node.getAttribute('data-icon');\n var innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n var val = getCanonicalIcon(classArray(node));\n\n if (existingPrefix && existingIconName) {\n val.prefix = existingPrefix;\n val.iconName = existingIconName;\n }\n\n if (val.prefix && innerText.length > 1) {\n val.iconName = byLigature(val.prefix, node.innerText);\n } else if (val.prefix && innerText.length === 1) {\n val.iconName = byUnicode(val.prefix, toHex(node.innerText));\n }\n\n return val;\n}\n\nvar parseTransformString = function parseTransformString(transformString) {\n var transform = {\n size: 16,\n x: 0,\n y: 0,\n flipX: false,\n flipY: false,\n rotate: 0\n };\n\n if (!transformString) {\n return transform;\n } else {\n return transformString.toLowerCase().split(' ').reduce(function (acc, n) {\n var parts = n.toLowerCase().split('-');\n var first = parts[0];\n var rest = parts.slice(1).join('-');\n\n if (first && rest === 'h') {\n acc.flipX = true;\n return acc;\n }\n\n if (first && rest === 'v') {\n acc.flipY = true;\n return acc;\n }\n\n rest = parseFloat(rest);\n\n if (isNaN(rest)) {\n return acc;\n }\n\n switch (first) {\n case 'grow':\n acc.size = acc.size + rest;\n break;\n\n case 'shrink':\n acc.size = acc.size - rest;\n break;\n\n case 'left':\n acc.x = acc.x - rest;\n break;\n\n case 'right':\n acc.x = acc.x + rest;\n break;\n\n case 'up':\n acc.y = acc.y - rest;\n break;\n\n case 'down':\n acc.y = acc.y + rest;\n break;\n\n case 'rotate':\n acc.rotate = acc.rotate + rest;\n break;\n }\n\n return acc;\n }, transform);\n }\n};\nfunction transformParser (node) {\n return parseTransformString(node.getAttribute('data-fa-transform'));\n}\n\nfunction symbolParser (node) {\n var symbol = node.getAttribute('data-fa-symbol');\n return symbol === null ? false : symbol === '' ? true : symbol;\n}\n\nfunction attributesParser (node) {\n var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {\n if (acc.name !== 'class' && acc.name !== 'style') {\n acc[attr.name] = attr.value;\n }\n\n return acc;\n }, {});\n var title = node.getAttribute('title');\n\n if (config.autoA11y) {\n if (title) {\n extraAttributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(nextUniqueId());\n } else {\n extraAttributes['aria-hidden'] = 'true';\n extraAttributes['focusable'] = 'false';\n }\n }\n\n return extraAttributes;\n}\n\nfunction maskParser (node) {\n var mask = node.getAttribute('data-fa-mask');\n\n if (!mask) {\n return emptyCanonicalIcon();\n } else {\n return getCanonicalIcon(mask.split(' ').map(function (i) {\n return i.trim();\n }));\n }\n}\n\nfunction blankMeta() {\n return {\n iconName: null,\n title: null,\n prefix: null,\n transform: meaninglessTransform,\n symbol: false,\n mask: null,\n extra: {\n classes: [],\n styles: {},\n attributes: {}\n }\n };\n}\nfunction parseMeta(node) {\n var _classParser = classParser(node),\n iconName = _classParser.iconName,\n prefix = _classParser.prefix,\n extraClasses = _classParser.rest;\n\n var extraStyles = styleParser(node);\n var transform = transformParser(node);\n var symbol = symbolParser(node);\n var extraAttributes = attributesParser(node);\n var mask = maskParser(node);\n return {\n iconName: iconName,\n title: node.getAttribute('title'),\n prefix: prefix,\n transform: transform,\n symbol: symbol,\n mask: mask,\n extra: {\n classes: extraClasses,\n styles: extraStyles,\n attributes: extraAttributes\n }\n };\n}\n\nfunction MissingIcon(error) {\n this.name = 'MissingIcon';\n this.message = error || 'Icon unavailable';\n this.stack = new Error().stack;\n}\nMissingIcon.prototype = Object.create(Error.prototype);\nMissingIcon.prototype.constructor = MissingIcon;\n\nvar FILL = {\n fill: 'currentColor'\n};\nvar ANIMATION_BASE = {\n attributeType: 'XML',\n repeatCount: 'indefinite',\n dur: '2s'\n};\nvar RING = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'\n })\n};\n\nvar OPACITY_ANIMATE = _objectSpread({}, ANIMATION_BASE, {\n attributeName: 'opacity'\n});\n\nvar DOT = {\n tag: 'circle',\n attributes: _objectSpread({}, FILL, {\n cx: '256',\n cy: '364',\n r: '28'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, ANIMATION_BASE, {\n attributeName: 'r',\n values: '28;14;28;28;14;28;'\n })\n }, {\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '1;0;1;1;0;1;'\n })\n }]\n};\nvar QUESTION = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n opacity: '1',\n d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '1;0;0;0;0;1;'\n })\n }]\n};\nvar EXCLAMATION = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n opacity: '0',\n d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '0;0;1;1;0;0;'\n })\n }]\n};\nvar missing = {\n tag: 'g',\n children: [RING, DOT, QUESTION, EXCLAMATION]\n};\n\nvar styles$2 = namespace.styles;\nfunction asFoundIcon(icon) {\n var width = icon[0];\n var height = icon[1];\n\n var _icon$slice = icon.slice(4),\n _icon$slice2 = _slicedToArray(_icon$slice, 1),\n vectorData = _icon$slice2[0];\n\n var element = null;\n\n if (Array.isArray(vectorData)) {\n element = {\n tag: 'g',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n },\n children: [{\n tag: 'path',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n fill: 'currentColor',\n d: vectorData[0]\n }\n }, {\n tag: 'path',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.PRIMARY),\n fill: 'currentColor',\n d: vectorData[1]\n }\n }]\n };\n } else {\n element = {\n tag: 'path',\n attributes: {\n fill: 'currentColor',\n d: vectorData\n }\n };\n }\n\n return {\n found: true,\n width: width,\n height: height,\n icon: element\n };\n}\nfunction findIcon(iconName, prefix) {\n return new picked(function (resolve, reject) {\n var val = {\n found: false,\n width: 512,\n height: 512,\n icon: missing\n };\n\n if (iconName && prefix && styles$2[prefix] && styles$2[prefix][iconName]) {\n var icon = styles$2[prefix][iconName];\n return resolve(asFoundIcon(icon));\n }\n\n var headers = {};\n\n if (_typeof(WINDOW.FontAwesomeKitConfig) === 'object' && typeof window.FontAwesomeKitConfig.token === 'string') {\n headers['fa-kit-token'] = WINDOW.FontAwesomeKitConfig.token;\n }\n\n if (iconName && prefix && !config.showMissingIcons) {\n reject(new MissingIcon(\"Icon is missing for prefix \".concat(prefix, \" with icon name \").concat(iconName)));\n } else {\n resolve(val);\n }\n });\n}\n\nvar styles$3 = namespace.styles;\n\nfunction generateSvgReplacementMutation(node, nodeMeta) {\n var iconName = nodeMeta.iconName,\n title = nodeMeta.title,\n prefix = nodeMeta.prefix,\n transform = nodeMeta.transform,\n symbol = nodeMeta.symbol,\n mask = nodeMeta.mask,\n extra = nodeMeta.extra;\n return new picked(function (resolve, reject) {\n picked.all([findIcon(iconName, prefix), findIcon(mask.iconName, mask.prefix)]).then(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n main = _ref2[0],\n mask = _ref2[1];\n\n resolve([node, makeInlineSvgAbstract({\n icons: {\n main: main,\n mask: mask\n },\n prefix: prefix,\n iconName: iconName,\n transform: transform,\n symbol: symbol,\n mask: mask,\n title: title,\n extra: extra,\n watchable: true\n })]);\n });\n });\n}\n\nfunction generateLayersText(node, nodeMeta) {\n var title = nodeMeta.title,\n transform = nodeMeta.transform,\n extra = nodeMeta.extra;\n var width = null;\n var height = null;\n\n if (IS_IE) {\n var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n var boundingClientRect = node.getBoundingClientRect();\n width = boundingClientRect.width / computedFontSize;\n height = boundingClientRect.height / computedFontSize;\n }\n\n if (config.autoA11y && !title) {\n extra.attributes['aria-hidden'] = 'true';\n }\n\n return picked.resolve([node, makeLayersTextAbstract({\n content: node.innerHTML,\n width: width,\n height: height,\n transform: transform,\n title: title,\n extra: extra,\n watchable: true\n })]);\n}\n\nfunction generateMutation(node) {\n var nodeMeta = parseMeta(node);\n\n if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n return generateLayersText(node, nodeMeta);\n } else {\n return generateSvgReplacementMutation(node, nodeMeta);\n }\n}\n\nfunction onTree(root) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (!IS_DOM) return;\n var htmlClassList = DOCUMENT.documentElement.classList;\n\n var hclAdd = function hclAdd(suffix) {\n return htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var hclRemove = function hclRemove(suffix) {\n return htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var prefixes = config.autoFetchSvg ? Object.keys(PREFIX_TO_STYLE) : Object.keys(styles$3);\n var prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(function (p) {\n return \".\".concat(p, \":not([\").concat(DATA_FA_I2SVG, \"])\");\n })).join(', ');\n\n if (prefixesDomQuery.length === 0) {\n return;\n }\n\n var candidates = [];\n\n try {\n candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n } catch (e) {// noop\n }\n\n if (candidates.length > 0) {\n hclAdd('pending');\n hclRemove('complete');\n } else {\n return;\n }\n\n var mark = perf.begin('onTree');\n var mutations = candidates.reduce(function (acc, node) {\n try {\n var mutation = generateMutation(node);\n\n if (mutation) {\n acc.push(mutation);\n }\n } catch (e) {\n if (!PRODUCTION) {\n if (e instanceof MissingIcon) {\n console.error(e);\n }\n }\n }\n\n return acc;\n }, []);\n return new picked(function (resolve, reject) {\n picked.all(mutations).then(function (resolvedMutations) {\n perform(resolvedMutations, function () {\n hclAdd('active');\n hclAdd('complete');\n hclRemove('pending');\n if (typeof callback === 'function') callback();\n mark();\n resolve();\n });\n }).catch(function () {\n mark();\n reject();\n });\n });\n}\nfunction onNode(node) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n generateMutation(node).then(function (mutation) {\n if (mutation) {\n perform([mutation], callback);\n }\n });\n}\n\nfunction replaceForPosition(node, position) {\n var pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n return new picked(function (resolve, reject) {\n if (node.getAttribute(pendingAttribute) !== null) {\n // This node is already being processed\n return resolve();\n }\n\n var children = toArray(node.children);\n var alreadyProcessedPseudoElement = children.filter(function (c) {\n return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;\n })[0];\n var styles = WINDOW.getComputedStyle(node, position);\n var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);\n var fontWeight = styles.getPropertyValue('font-weight');\n\n if (alreadyProcessedPseudoElement && !fontFamily) {\n // If we've already processed it but the current computed style does not result in a font-family,\n // that probably means that a class name that was previously present to make the icon has been\n // removed. So we now should delete the icon.\n node.removeChild(alreadyProcessedPseudoElement);\n return resolve();\n } else if (fontFamily) {\n var content = styles.getPropertyValue('content');\n var prefix = ~['Solid', 'Regular', 'Light', 'Duotone', 'Brands'].indexOf(fontFamily[1]) ? STYLE_TO_PREFIX[fontFamily[1].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[fontWeight];\n var hexValue = toHex(content.length === 3 ? content.substr(1, 1) : content);\n var iconName = byUnicode(prefix, hexValue);\n var iconIdentifier = iconName; // Only convert the pseudo element in this :before/:after position into an icon if we haven't\n // already done so with the same prefix and iconName\n\n if (iconName && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n node.setAttribute(pendingAttribute, iconIdentifier);\n\n if (alreadyProcessedPseudoElement) {\n // Delete the old one, since we're replacing it with a new one\n node.removeChild(alreadyProcessedPseudoElement);\n }\n\n var meta = blankMeta();\n var extra = meta.extra;\n extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n findIcon(iconName, prefix).then(function (main) {\n var abstract = makeInlineSvgAbstract(_objectSpread({}, meta, {\n icons: {\n main: main,\n mask: emptyCanonicalIcon()\n },\n prefix: prefix,\n iconName: iconIdentifier,\n extra: extra,\n watchable: true\n }));\n var element = DOCUMENT.createElement('svg');\n\n if (position === ':before') {\n node.insertBefore(element, node.firstChild);\n } else {\n node.appendChild(element);\n }\n\n element.outerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.removeAttribute(pendingAttribute);\n resolve();\n }).catch(reject);\n } else {\n resolve();\n }\n } else {\n resolve();\n }\n });\n}\n\nfunction replace(node) {\n return picked.all([replaceForPosition(node, ':before'), replaceForPosition(node, ':after')]);\n}\n\nfunction processable(node) {\n return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');\n}\n\nfunction searchPseudoElements (root) {\n if (!IS_DOM) return;\n return new picked(function (resolve, reject) {\n var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n var end = perf.begin('searchPseudoElements');\n disableObservation();\n picked.all(operations).then(function () {\n end();\n enableObservation();\n resolve();\n }).catch(function () {\n end();\n enableObservation();\n reject();\n });\n });\n}\n\nvar baseStyles = \"svg:not(:root).svg-inline--fa {\\n overflow: visible;\\n}\\n\\n.svg-inline--fa {\\n display: inline-block;\\n font-size: inherit;\\n height: 1em;\\n overflow: visible;\\n vertical-align: -0.125em;\\n}\\n.svg-inline--fa.fa-lg {\\n vertical-align: -0.225em;\\n}\\n.svg-inline--fa.fa-w-1 {\\n width: 0.0625em;\\n}\\n.svg-inline--fa.fa-w-2 {\\n width: 0.125em;\\n}\\n.svg-inline--fa.fa-w-3 {\\n width: 0.1875em;\\n}\\n.svg-inline--fa.fa-w-4 {\\n width: 0.25em;\\n}\\n.svg-inline--fa.fa-w-5 {\\n width: 0.3125em;\\n}\\n.svg-inline--fa.fa-w-6 {\\n width: 0.375em;\\n}\\n.svg-inline--fa.fa-w-7 {\\n width: 0.4375em;\\n}\\n.svg-inline--fa.fa-w-8 {\\n width: 0.5em;\\n}\\n.svg-inline--fa.fa-w-9 {\\n width: 0.5625em;\\n}\\n.svg-inline--fa.fa-w-10 {\\n width: 0.625em;\\n}\\n.svg-inline--fa.fa-w-11 {\\n width: 0.6875em;\\n}\\n.svg-inline--fa.fa-w-12 {\\n width: 0.75em;\\n}\\n.svg-inline--fa.fa-w-13 {\\n width: 0.8125em;\\n}\\n.svg-inline--fa.fa-w-14 {\\n width: 0.875em;\\n}\\n.svg-inline--fa.fa-w-15 {\\n width: 0.9375em;\\n}\\n.svg-inline--fa.fa-w-16 {\\n width: 1em;\\n}\\n.svg-inline--fa.fa-w-17 {\\n width: 1.0625em;\\n}\\n.svg-inline--fa.fa-w-18 {\\n width: 1.125em;\\n}\\n.svg-inline--fa.fa-w-19 {\\n width: 1.1875em;\\n}\\n.svg-inline--fa.fa-w-20 {\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-pull-left {\\n margin-right: 0.3em;\\n width: auto;\\n}\\n.svg-inline--fa.fa-pull-right {\\n margin-left: 0.3em;\\n width: auto;\\n}\\n.svg-inline--fa.fa-border {\\n height: 1.5em;\\n}\\n.svg-inline--fa.fa-li {\\n width: 2em;\\n}\\n.svg-inline--fa.fa-fw {\\n width: 1.25em;\\n}\\n\\n.fa-layers svg.svg-inline--fa {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.fa-layers {\\n display: inline-block;\\n height: 1em;\\n position: relative;\\n text-align: center;\\n vertical-align: -0.125em;\\n width: 1em;\\n}\\n.fa-layers svg.svg-inline--fa {\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter, .fa-layers-text {\\n display: inline-block;\\n position: absolute;\\n text-align: center;\\n}\\n\\n.fa-layers-text {\\n left: 50%;\\n top: 50%;\\n -webkit-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n background-color: #ff253a;\\n border-radius: 1em;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n color: #fff;\\n height: 1.5em;\\n line-height: 1;\\n max-width: 5em;\\n min-width: 1.5em;\\n overflow: hidden;\\n padding: 0.25em;\\n right: 0;\\n text-overflow: ellipsis;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n bottom: 0;\\n right: 0;\\n top: auto;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: bottom right;\\n transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n bottom: 0;\\n left: 0;\\n right: auto;\\n top: auto;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: bottom left;\\n transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n right: 0;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n left: 0;\\n right: auto;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top left;\\n transform-origin: top left;\\n}\\n\\n.fa-lg {\\n font-size: 1.3333333333em;\\n line-height: 0.75em;\\n vertical-align: -0.0667em;\\n}\\n\\n.fa-xs {\\n font-size: 0.75em;\\n}\\n\\n.fa-sm {\\n font-size: 0.875em;\\n}\\n\\n.fa-1x {\\n font-size: 1em;\\n}\\n\\n.fa-2x {\\n font-size: 2em;\\n}\\n\\n.fa-3x {\\n font-size: 3em;\\n}\\n\\n.fa-4x {\\n font-size: 4em;\\n}\\n\\n.fa-5x {\\n font-size: 5em;\\n}\\n\\n.fa-6x {\\n font-size: 6em;\\n}\\n\\n.fa-7x {\\n font-size: 7em;\\n}\\n\\n.fa-8x {\\n font-size: 8em;\\n}\\n\\n.fa-9x {\\n font-size: 9em;\\n}\\n\\n.fa-10x {\\n font-size: 10em;\\n}\\n\\n.fa-fw {\\n text-align: center;\\n width: 1.25em;\\n}\\n\\n.fa-ul {\\n list-style-type: none;\\n margin-left: 2.5em;\\n padding-left: 0;\\n}\\n.fa-ul > li {\\n position: relative;\\n}\\n\\n.fa-li {\\n left: -2em;\\n position: absolute;\\n text-align: center;\\n width: 2em;\\n line-height: inherit;\\n}\\n\\n.fa-border {\\n border: solid 0.08em #eee;\\n border-radius: 0.1em;\\n padding: 0.2em 0.25em 0.15em;\\n}\\n\\n.fa-pull-left {\\n float: left;\\n}\\n\\n.fa-pull-right {\\n float: right;\\n}\\n\\n.fa.fa-pull-left,\\n.fas.fa-pull-left,\\n.far.fa-pull-left,\\n.fal.fa-pull-left,\\n.fab.fa-pull-left {\\n margin-right: 0.3em;\\n}\\n.fa.fa-pull-right,\\n.fas.fa-pull-right,\\n.far.fa-pull-right,\\n.fal.fa-pull-right,\\n.fab.fa-pull-right {\\n margin-left: 0.3em;\\n}\\n\\n.fa-spin {\\n -webkit-animation: fa-spin 2s infinite linear;\\n animation: fa-spin 2s infinite linear;\\n}\\n\\n.fa-pulse {\\n -webkit-animation: fa-spin 1s infinite steps(8);\\n animation: fa-spin 1s infinite steps(8);\\n}\\n\\n@-webkit-keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n\\n@keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n.fa-rotate-90 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\\\";\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\\\";\\n -webkit-transform: rotate(180deg);\\n transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\\\";\\n -webkit-transform: rotate(270deg);\\n transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\\\";\\n -webkit-transform: scale(-1, 1);\\n transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n -webkit-transform: scale(1, -1);\\n transform: scale(1, -1);\\n}\\n\\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n -webkit-transform: scale(-1, -1);\\n transform: scale(-1, -1);\\n}\\n\\n:root .fa-rotate-90,\\n:root .fa-rotate-180,\\n:root .fa-rotate-270,\\n:root .fa-flip-horizontal,\\n:root .fa-flip-vertical,\\n:root .fa-flip-both {\\n -webkit-filter: none;\\n filter: none;\\n}\\n\\n.fa-stack {\\n display: inline-block;\\n height: 2em;\\n position: relative;\\n width: 2.5em;\\n}\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.svg-inline--fa.fa-stack-1x {\\n height: 1em;\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-stack-2x {\\n height: 2em;\\n width: 2.5em;\\n}\\n\\n.fa-inverse {\\n color: #fff;\\n}\\n\\n.sr-only {\\n border: 0;\\n clip: rect(0, 0, 0, 0);\\n height: 1px;\\n margin: -1px;\\n overflow: hidden;\\n padding: 0;\\n position: absolute;\\n width: 1px;\\n}\\n\\n.sr-only-focusable:active, .sr-only-focusable:focus {\\n clip: auto;\\n height: auto;\\n margin: 0;\\n overflow: visible;\\n position: static;\\n width: auto;\\n}\\n\\n.svg-inline--fa .fa-primary {\\n fill: var(--fa-primary-color, currentColor);\\n opacity: 1;\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n fill: var(--fa-secondary-color, currentColor);\\n opacity: 0.4;\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n opacity: 0.4;\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n opacity: 1;\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa mask .fa-primary,\\n.svg-inline--fa mask .fa-secondary {\\n fill: black;\\n}\\n\\n.fad.fa-inverse {\\n color: #fff;\\n}\";\n\nfunction css () {\n var dfp = DEFAULT_FAMILY_PREFIX;\n var drc = DEFAULT_REPLACEMENT_CLASS;\n var fp = config.familyPrefix;\n var rc = config.replacementClass;\n var s = baseStyles;\n\n if (fp !== dfp || rc !== drc) {\n var dPatt = new RegExp(\"\\\\.\".concat(dfp, \"\\\\-\"), 'g');\n var customPropPatt = new RegExp(\"\\\\--\".concat(dfp, \"\\\\-\"), 'g');\n var rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n }\n\n return s;\n}\n\nvar Library =\n/*#__PURE__*/\nfunction () {\n function Library() {\n _classCallCheck(this, Library);\n\n this.definitions = {};\n }\n\n _createClass(Library, [{\n key: \"add\",\n value: function add() {\n var _this = this;\n\n for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n definitions[_key] = arguments[_key];\n }\n\n var additions = definitions.reduce(this._pullDefinitions, {});\n Object.keys(additions).forEach(function (key) {\n _this.definitions[key] = _objectSpread({}, _this.definitions[key] || {}, additions[key]);\n defineIcons(key, additions[key]);\n build();\n });\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.definitions = {};\n }\n }, {\n key: \"_pullDefinitions\",\n value: function _pullDefinitions(additions, definition) {\n var normalized = definition.prefix && definition.iconName && definition.icon ? {\n 0: definition\n } : definition;\n Object.keys(normalized).map(function (key) {\n var _normalized$key = normalized[key],\n prefix = _normalized$key.prefix,\n iconName = _normalized$key.iconName,\n icon = _normalized$key.icon;\n if (!additions[prefix]) additions[prefix] = {};\n additions[prefix][iconName] = icon;\n });\n return additions;\n }\n }]);\n\n return Library;\n}();\n\nfunction ensureCss() {\n if (config.autoAddCss && !_cssInserted) {\n insertCss(css());\n\n _cssInserted = true;\n }\n}\n\nfunction apiObject(val, abstractCreator) {\n Object.defineProperty(val, 'abstract', {\n get: abstractCreator\n });\n Object.defineProperty(val, 'html', {\n get: function get() {\n return val.abstract.map(function (a) {\n return toHtml(a);\n });\n }\n });\n Object.defineProperty(val, 'node', {\n get: function get() {\n if (!IS_DOM) return;\n var container = DOCUMENT.createElement('div');\n container.innerHTML = val.html;\n return container.children;\n }\n });\n return val;\n}\n\nfunction findIconDefinition(iconLookup) {\n var _iconLookup$prefix = iconLookup.prefix,\n prefix = _iconLookup$prefix === void 0 ? 'fa' : _iconLookup$prefix,\n iconName = iconLookup.iconName;\n if (!iconName) return;\n return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\n\nfunction resolveIcons(next) {\n return function (maybeIconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n var mask = params.mask;\n\n if (mask) {\n mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n }\n\n return next(iconDefinition, _objectSpread({}, params, {\n mask: mask\n }));\n };\n}\n\nvar library = new Library();\nvar noAuto = function noAuto() {\n config.autoReplaceSvg = false;\n config.observeMutations = false;\n disconnect();\n};\nvar _cssInserted = false;\nvar dom = {\n i2svg: function i2svg() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (IS_DOM) {\n ensureCss();\n var _params$node = params.node,\n node = _params$node === void 0 ? DOCUMENT : _params$node,\n _params$callback = params.callback,\n callback = _params$callback === void 0 ? function () {} : _params$callback;\n\n if (config.searchPseudoElements) {\n searchPseudoElements(node);\n }\n\n return onTree(node, callback);\n } else {\n return picked.reject('Operation requires a DOM of some kind.');\n }\n },\n css: css,\n insertCss: function insertCss$$1() {\n if (!_cssInserted) {\n insertCss(css());\n\n _cssInserted = true;\n }\n },\n watch: function watch() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var autoReplaceSvgRoot = params.autoReplaceSvgRoot,\n observeMutationsRoot = params.observeMutationsRoot;\n\n if (config.autoReplaceSvg === false) {\n config.autoReplaceSvg = true;\n }\n\n config.observeMutations = true;\n domready(function () {\n autoReplace({\n autoReplaceSvgRoot: autoReplaceSvgRoot\n });\n observe({\n treeCallback: onTree,\n nodeCallback: onNode,\n pseudoElementsCallback: searchPseudoElements,\n observeMutationsRoot: observeMutationsRoot\n });\n });\n }\n};\nvar parse = {\n transform: function transform(transformString) {\n return parseTransformString(transformString);\n }\n};\nvar icon = resolveIcons(function (iconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n _params$symbol = params.symbol,\n symbol = _params$symbol === void 0 ? false : _params$symbol,\n _params$mask = params.mask,\n mask = _params$mask === void 0 ? null : _params$mask,\n _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n if (!iconDefinition) return;\n var prefix = iconDefinition.prefix,\n iconName = iconDefinition.iconName,\n icon = iconDefinition.icon;\n return apiObject(_objectSpread({\n type: 'icon'\n }, iconDefinition), function () {\n ensureCss();\n\n if (config.autoA11y) {\n if (title) {\n attributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(nextUniqueId());\n } else {\n attributes['aria-hidden'] = 'true';\n attributes['focusable'] = 'false';\n }\n }\n\n return makeInlineSvgAbstract({\n icons: {\n main: asFoundIcon(icon),\n mask: mask ? asFoundIcon(mask.icon) : {\n found: false,\n width: null,\n height: null,\n icon: {}\n }\n },\n prefix: prefix,\n iconName: iconName,\n transform: _objectSpread({}, meaninglessTransform, transform),\n symbol: symbol,\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: classes\n }\n });\n });\n});\nvar text = function text(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform2 = params.transform,\n transform = _params$transform2 === void 0 ? meaninglessTransform : _params$transform2,\n _params$title2 = params.title,\n title = _params$title2 === void 0 ? null : _params$title2,\n _params$classes2 = params.classes,\n classes = _params$classes2 === void 0 ? [] : _params$classes2,\n _params$attributes2 = params.attributes,\n attributes = _params$attributes2 === void 0 ? {} : _params$attributes2,\n _params$styles2 = params.styles,\n styles = _params$styles2 === void 0 ? {} : _params$styles2;\n return apiObject({\n type: 'text',\n content: content\n }, function () {\n ensureCss();\n return makeLayersTextAbstract({\n content: content,\n transform: _objectSpread({}, meaninglessTransform, transform),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.familyPrefix, \"-layers-text\")].concat(_toConsumableArray(classes))\n }\n });\n });\n};\nvar counter = function counter(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$title3 = params.title,\n title = _params$title3 === void 0 ? null : _params$title3,\n _params$classes3 = params.classes,\n classes = _params$classes3 === void 0 ? [] : _params$classes3,\n _params$attributes3 = params.attributes,\n attributes = _params$attributes3 === void 0 ? {} : _params$attributes3,\n _params$styles3 = params.styles,\n styles = _params$styles3 === void 0 ? {} : _params$styles3;\n return apiObject({\n type: 'counter',\n content: content\n }, function () {\n ensureCss();\n return makeLayersCounterAbstract({\n content: content.toString(),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.familyPrefix, \"-layers-counter\")].concat(_toConsumableArray(classes))\n }\n });\n });\n};\nvar layer = function layer(assembler) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$classes4 = params.classes,\n classes = _params$classes4 === void 0 ? [] : _params$classes4;\n return apiObject({\n type: 'layer'\n }, function () {\n ensureCss();\n var children = [];\n assembler(function (args) {\n Array.isArray(args) ? args.map(function (a) {\n children = children.concat(a.abstract);\n }) : children = children.concat(args.abstract);\n });\n return [{\n tag: 'span',\n attributes: {\n class: [\"\".concat(config.familyPrefix, \"-layers\")].concat(_toConsumableArray(classes)).join(' ')\n },\n children: children\n }];\n });\n};\nvar api = {\n noAuto: noAuto,\n config: config,\n dom: dom,\n library: library,\n parse: parse,\n findIconDefinition: findIconDefinition,\n icon: icon,\n text: text,\n counter: counter,\n layer: layer,\n toHtml: toHtml\n};\n\nvar autoReplace = function autoReplace() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _params$autoReplaceSv = params.autoReplaceSvgRoot,\n autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;\n if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n node: autoReplaceSvgRoot\n });\n};\n\nexport { icon, noAuto, config, toHtml, layer, text, counter, library, dom, parse, findIconDefinition };\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",f=\"month\",h=\"quarter\",c=\"year\",d=\"date\",$=\"Invalid Date\",l=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\")},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},g={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(v=i),i||!r&&v},w=function(t,e){if(p(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},O=g;O.l=S,O.i=p,O.w=function(t,e){return w(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=S(t.locale,null,!0),this.parse(t)}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(O.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match(l);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return O},m.isValid=function(){return!(this.$d.toString()===$)},m.isSame=function(t,e){var n=w(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return w(t) 1) {\n return \"element\";\n }\n\n return type;\n};\n\nclassname.extend = function (obj1, obj2) {\n var result = {},\n objs = [obj1, obj2];\n\n classname.each(objs, function (obj) {\n classname.each(obj, function (val, key) {\n if (obj.hasOwnProperty(key)) {\n result[key] = val;\n }\n });\n });\n\n return result;\n};\n\nif (typeof module !== \"undefined\" && module.exports) {\n module.exports = classname;\n}\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n /* eslint no-param-reassign: 0 */\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar encode = function encode(str, defaultEncoder, charset) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n maybeMap: maybeMap,\n merge: merge\n};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = processNodes;\n\nvar _isEmptyTextNode = require('./utils/isEmptyTextNode');\n\nvar _isEmptyTextNode2 = _interopRequireDefault(_isEmptyTextNode);\n\nvar _convertNodeToElement = require('./convertNodeToElement');\n\nvar _convertNodeToElement2 = _interopRequireDefault(_convertNodeToElement);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Processes the nodes generated by htmlparser2 and convert them all into React elements\n *\n * @param {Object[]} nodes List of nodes to process\n * @param {Function} transform Transform function to optionally apply to nodes\n * @returns {React.Element[]} The list of processed React elements\n */\nfunction processNodes(nodes, transform) {\n\n return nodes.filter(function (node) {\n return !(0, _isEmptyTextNode2.default)(node);\n }).map(function (node, index) {\n\n // return the result of the transform function if applicable\n var transformed = void 0;\n if (typeof transform === 'function') {\n transformed = transform(node, index);\n if (transformed === null || !!transformed) {\n return transformed;\n }\n }\n\n // otherwise convert the node as standard\n return (0, _convertNodeToElement2.default)(node, index, transform);\n });\n}","/* global window */\nimport ponyfill from './ponyfill.js';\n\nvar root;\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = ponyfill(root);\nexport default result;\n","function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nmodule.exports = _inheritsLoose;","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options))\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$')\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar util = require('./utils');\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = util.assign(\n {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n }\n },\n Format\n);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n var prototype = Component.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component.displayName || Component.name;\n var newApiName =\n typeof Component.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component;\n}\n\nexport { polyfill };\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"javascript\", function(config, parserConfig) {\n var indentUnit = config.indentUnit;\n var statementIndent = parserConfig.statementIndent;\n var jsonldMode = parserConfig.jsonld;\n var jsonMode = parserConfig.json || jsonldMode;\n var trackScope = parserConfig.trackScope !== false\n var isTS = parserConfig.typescript;\n var wordRE = parserConfig.wordCharacters || /[\\w$\\xa1-\\uffff]/;\n\n // Tokenizer\n\n var keywords = function(){\n function kw(type) {return {type: type, style: \"keyword\"};}\n var A = kw(\"keyword a\"), B = kw(\"keyword b\"), C = kw(\"keyword c\"), D = kw(\"keyword d\");\n var operator = kw(\"operator\"), atom = {type: \"atom\", style: \"atom\"};\n\n return {\n \"if\": kw(\"if\"), \"while\": A, \"with\": A, \"else\": B, \"do\": B, \"try\": B, \"finally\": B,\n \"return\": D, \"break\": D, \"continue\": D, \"new\": kw(\"new\"), \"delete\": C, \"void\": C, \"throw\": C,\n \"debugger\": kw(\"debugger\"), \"var\": kw(\"var\"), \"const\": kw(\"var\"), \"let\": kw(\"var\"),\n \"function\": kw(\"function\"), \"catch\": kw(\"catch\"),\n \"for\": kw(\"for\"), \"switch\": kw(\"switch\"), \"case\": kw(\"case\"), \"default\": kw(\"default\"),\n \"in\": operator, \"typeof\": operator, \"instanceof\": operator,\n \"true\": atom, \"false\": atom, \"null\": atom, \"undefined\": atom, \"NaN\": atom, \"Infinity\": atom,\n \"this\": kw(\"this\"), \"class\": kw(\"class\"), \"super\": kw(\"atom\"),\n \"yield\": C, \"export\": kw(\"export\"), \"import\": kw(\"import\"), \"extends\": C,\n \"await\": C\n };\n }();\n\n var isOperatorChar = /[+\\-*&%=<>!?|~^@]/;\n var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)\"/;\n\n function readRegexp(stream) {\n var escaped = false, next, inSet = false;\n while ((next = stream.next()) != null) {\n if (!escaped) {\n if (next == \"/\" && !inSet) return;\n if (next == \"[\") inSet = true;\n else if (inSet && next == \"]\") inSet = false;\n }\n escaped = !escaped && next == \"\\\\\";\n }\n }\n\n // Used as scratch variables to communicate multiple values without\n // consing up tons of objects.\n var type, content;\n function ret(tp, style, cont) {\n type = tp; content = cont;\n return style;\n }\n function tokenBase(stream, state) {\n var ch = stream.next();\n if (ch == '\"' || ch == \"'\") {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n } else if (ch == \".\" && stream.match(/^\\d[\\d_]*(?:[eE][+\\-]?[\\d_]+)?/)) {\n return ret(\"number\", \"number\");\n } else if (ch == \".\" && stream.match(\"..\")) {\n return ret(\"spread\", \"meta\");\n } else if (/[\\[\\]{}\\(\\),;\\:\\.]/.test(ch)) {\n return ret(ch);\n } else if (ch == \"=\" && stream.eat(\">\")) {\n return ret(\"=>\", \"operator\");\n } else if (ch == \"0\" && stream.match(/^(?:x[\\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/)) {\n return ret(\"number\", \"number\");\n } else if (/\\d/.test(ch)) {\n stream.match(/^[\\d_]*(?:n|(?:\\.[\\d_]*)?(?:[eE][+\\-]?[\\d_]+)?)?/);\n return ret(\"number\", \"number\");\n } else if (ch == \"/\") {\n if (stream.eat(\"*\")) {\n state.tokenize = tokenComment;\n return tokenComment(stream, state);\n } else if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return ret(\"comment\", \"comment\");\n } else if (expressionAllowed(stream, state, 1)) {\n readRegexp(stream);\n stream.match(/^\\b(([gimyus])(?![gimyus]*\\2))+\\b/);\n return ret(\"regexp\", \"string-2\");\n } else {\n stream.eat(\"=\");\n return ret(\"operator\", \"operator\", stream.current());\n }\n } else if (ch == \"`\") {\n state.tokenize = tokenQuasi;\n return tokenQuasi(stream, state);\n } else if (ch == \"#\" && stream.peek() == \"!\") {\n stream.skipToEnd();\n return ret(\"meta\", \"meta\");\n } else if (ch == \"#\" && stream.eatWhile(wordRE)) {\n return ret(\"variable\", \"property\")\n } else if (ch == \"<\" && stream.match(\"!--\") ||\n (ch == \"-\" && stream.match(\"->\") && !/\\S/.test(stream.string.slice(0, stream.start)))) {\n stream.skipToEnd()\n return ret(\"comment\", \"comment\")\n } else if (isOperatorChar.test(ch)) {\n if (ch != \">\" || !state.lexical || state.lexical.type != \">\") {\n if (stream.eat(\"=\")) {\n if (ch == \"!\" || ch == \"=\") stream.eat(\"=\")\n } else if (/[<>*+\\-|&?]/.test(ch)) {\n stream.eat(ch)\n if (ch == \">\") stream.eat(ch)\n }\n }\n if (ch == \"?\" && stream.eat(\".\")) return ret(\".\")\n return ret(\"operator\", \"operator\", stream.current());\n } else if (wordRE.test(ch)) {\n stream.eatWhile(wordRE);\n var word = stream.current()\n if (state.lastType != \".\") {\n if (keywords.propertyIsEnumerable(word)) {\n var kw = keywords[word]\n return ret(kw.type, kw.style, word)\n }\n if (word == \"async\" && stream.match(/^(\\s|\\/\\*([^*]|\\*(?!\\/))*?\\*\\/)*[\\[\\(\\w]/, false))\n return ret(\"async\", \"keyword\", word)\n }\n return ret(\"variable\", \"variable\", word)\n }\n }\n\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, next;\n if (jsonldMode && stream.peek() == \"@\" && stream.match(isJsonldKeyword)){\n state.tokenize = tokenBase;\n return ret(\"jsonld-keyword\", \"meta\");\n }\n while ((next = stream.next()) != null) {\n if (next == quote && !escaped) break;\n escaped = !escaped && next == \"\\\\\";\n }\n if (!escaped) state.tokenize = tokenBase;\n return ret(\"string\", \"string\");\n };\n }\n\n function tokenComment(stream, state) {\n var maybeEnd = false, ch;\n while (ch = stream.next()) {\n if (ch == \"/\" && maybeEnd) {\n state.tokenize = tokenBase;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return ret(\"comment\", \"comment\");\n }\n\n function tokenQuasi(stream, state) {\n var escaped = false, next;\n while ((next = stream.next()) != null) {\n if (!escaped && (next == \"`\" || next == \"$\" && stream.eat(\"{\"))) {\n state.tokenize = tokenBase;\n break;\n }\n escaped = !escaped && next == \"\\\\\";\n }\n return ret(\"quasi\", \"string-2\", stream.current());\n }\n\n var brackets = \"([{}])\";\n // This is a crude lookahead trick to try and notice that we're\n // parsing the argument patterns for a fat-arrow function before we\n // actually hit the arrow token. It only works if the arrow is on\n // the same line as the arguments and there's no strange noise\n // (comments) in between. Fallback is to only notice when we hit the\n // arrow, and not declare the arguments as locals for the arrow\n // body.\n function findFatArrow(stream, state) {\n if (state.fatArrowAt) state.fatArrowAt = null;\n var arrow = stream.string.indexOf(\"=>\", stream.start);\n if (arrow < 0) return;\n\n if (isTS) { // Try to skip TypeScript return type declarations after the arguments\n var m = /:\\s*(?:\\w+(?:<[^>]*>|\\[\\])?|\\{[^}]*\\})\\s*$/.exec(stream.string.slice(stream.start, arrow))\n if (m) arrow = m.index\n }\n\n var depth = 0, sawSomething = false;\n for (var pos = arrow - 1; pos >= 0; --pos) {\n var ch = stream.string.charAt(pos);\n var bracket = brackets.indexOf(ch);\n if (bracket >= 0 && bracket < 3) {\n if (!depth) { ++pos; break; }\n if (--depth == 0) { if (ch == \"(\") sawSomething = true; break; }\n } else if (bracket >= 3 && bracket < 6) {\n ++depth;\n } else if (wordRE.test(ch)) {\n sawSomething = true;\n } else if (/[\"'\\/`]/.test(ch)) {\n for (;; --pos) {\n if (pos == 0) return\n var next = stream.string.charAt(pos - 1)\n if (next == ch && stream.string.charAt(pos - 2) != \"\\\\\") { pos--; break }\n }\n } else if (sawSomething && !depth) {\n ++pos;\n break;\n }\n }\n if (sawSomething && !depth) state.fatArrowAt = pos;\n }\n\n // Parser\n\n var atomicTypes = {\"atom\": true, \"number\": true, \"variable\": true, \"string\": true,\n \"regexp\": true, \"this\": true, \"import\": true, \"jsonld-keyword\": true};\n\n function JSLexical(indented, column, type, align, prev, info) {\n this.indented = indented;\n this.column = column;\n this.type = type;\n this.prev = prev;\n this.info = info;\n if (align != null) this.align = align;\n }\n\n function inScope(state, varname) {\n if (!trackScope) return false\n for (var v = state.localVars; v; v = v.next)\n if (v.name == varname) return true;\n for (var cx = state.context; cx; cx = cx.prev) {\n for (var v = cx.vars; v; v = v.next)\n if (v.name == varname) return true;\n }\n }\n\n function parseJS(state, style, type, content, stream) {\n var cc = state.cc;\n // Communicate our context to the combinators.\n // (Less wasteful than consing up a hundred closures on every call.)\n cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; cx.style = style;\n\n if (!state.lexical.hasOwnProperty(\"align\"))\n state.lexical.align = true;\n\n while(true) {\n var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement;\n if (combinator(type, content)) {\n while(cc.length && cc[cc.length - 1].lex)\n cc.pop()();\n if (cx.marked) return cx.marked;\n if (type == \"variable\" && inScope(state, content)) return \"variable-2\";\n return style;\n }\n }\n }\n\n // Combinator utils\n\n var cx = {state: null, column: null, marked: null, cc: null};\n function pass() {\n for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]);\n }\n function cont() {\n pass.apply(null, arguments);\n return true;\n }\n function inList(name, list) {\n for (var v = list; v; v = v.next) if (v.name == name) return true\n return false;\n }\n function register(varname) {\n var state = cx.state;\n cx.marked = \"def\";\n if (!trackScope) return\n if (state.context) {\n if (state.lexical.info == \"var\" && state.context && state.context.block) {\n // FIXME function decls are also not block scoped\n var newContext = registerVarScoped(varname, state.context)\n if (newContext != null) {\n state.context = newContext\n return\n }\n } else if (!inList(varname, state.localVars)) {\n state.localVars = new Var(varname, state.localVars)\n return\n }\n }\n // Fall through means this is global\n if (parserConfig.globalVars && !inList(varname, state.globalVars))\n state.globalVars = new Var(varname, state.globalVars)\n }\n function registerVarScoped(varname, context) {\n if (!context) {\n return null\n } else if (context.block) {\n var inner = registerVarScoped(varname, context.prev)\n if (!inner) return null\n if (inner == context.prev) return context\n return new Context(inner, context.vars, true)\n } else if (inList(varname, context.vars)) {\n return context\n } else {\n return new Context(context.prev, new Var(varname, context.vars), false)\n }\n }\n\n function isModifier(name) {\n return name == \"public\" || name == \"private\" || name == \"protected\" || name == \"abstract\" || name == \"readonly\"\n }\n\n // Combinators\n\n function Context(prev, vars, block) { this.prev = prev; this.vars = vars; this.block = block }\n function Var(name, next) { this.name = name; this.next = next }\n\n var defaultVars = new Var(\"this\", new Var(\"arguments\", null))\n function pushcontext() {\n cx.state.context = new Context(cx.state.context, cx.state.localVars, false)\n cx.state.localVars = defaultVars\n }\n function pushblockcontext() {\n cx.state.context = new Context(cx.state.context, cx.state.localVars, true)\n cx.state.localVars = null\n }\n function popcontext() {\n cx.state.localVars = cx.state.context.vars\n cx.state.context = cx.state.context.prev\n }\n popcontext.lex = true\n function pushlex(type, info) {\n var result = function() {\n var state = cx.state, indent = state.indented;\n if (state.lexical.type == \"stat\") indent = state.lexical.indented;\n else for (var outer = state.lexical; outer && outer.type == \")\" && outer.align; outer = outer.prev)\n indent = outer.indented;\n state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info);\n };\n result.lex = true;\n return result;\n }\n function poplex() {\n var state = cx.state;\n if (state.lexical.prev) {\n if (state.lexical.type == \")\")\n state.indented = state.lexical.indented;\n state.lexical = state.lexical.prev;\n }\n }\n poplex.lex = true;\n\n function expect(wanted) {\n function exp(type) {\n if (type == wanted) return cont();\n else if (wanted == \";\" || type == \"}\" || type == \")\" || type == \"]\") return pass();\n else return cont(exp);\n };\n return exp;\n }\n\n function statement(type, value) {\n if (type == \"var\") return cont(pushlex(\"vardef\", value), vardef, expect(\";\"), poplex);\n if (type == \"keyword a\") return cont(pushlex(\"form\"), parenExpr, statement, poplex);\n if (type == \"keyword b\") return cont(pushlex(\"form\"), statement, poplex);\n if (type == \"keyword d\") return cx.stream.match(/^\\s*$/, false) ? cont() : cont(pushlex(\"stat\"), maybeexpression, expect(\";\"), poplex);\n if (type == \"debugger\") return cont(expect(\";\"));\n if (type == \"{\") return cont(pushlex(\"}\"), pushblockcontext, block, poplex, popcontext);\n if (type == \";\") return cont();\n if (type == \"if\") {\n if (cx.state.lexical.info == \"else\" && cx.state.cc[cx.state.cc.length - 1] == poplex)\n cx.state.cc.pop()();\n return cont(pushlex(\"form\"), parenExpr, statement, poplex, maybeelse);\n }\n if (type == \"function\") return cont(functiondef);\n if (type == \"for\") return cont(pushlex(\"form\"), pushblockcontext, forspec, statement, popcontext, poplex);\n if (type == \"class\" || (isTS && value == \"interface\")) {\n cx.marked = \"keyword\"\n return cont(pushlex(\"form\", type == \"class\" ? type : value), className, poplex)\n }\n if (type == \"variable\") {\n if (isTS && value == \"declare\") {\n cx.marked = \"keyword\"\n return cont(statement)\n } else if (isTS && (value == \"module\" || value == \"enum\" || value == \"type\") && cx.stream.match(/^\\s*\\w/, false)) {\n cx.marked = \"keyword\"\n if (value == \"enum\") return cont(enumdef);\n else if (value == \"type\") return cont(typename, expect(\"operator\"), typeexpr, expect(\";\"));\n else return cont(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), block, poplex, poplex)\n } else if (isTS && value == \"namespace\") {\n cx.marked = \"keyword\"\n return cont(pushlex(\"form\"), expression, statement, poplex)\n } else if (isTS && value == \"abstract\") {\n cx.marked = \"keyword\"\n return cont(statement)\n } else {\n return cont(pushlex(\"stat\"), maybelabel);\n }\n }\n if (type == \"switch\") return cont(pushlex(\"form\"), parenExpr, expect(\"{\"), pushlex(\"}\", \"switch\"), pushblockcontext,\n block, poplex, poplex, popcontext);\n if (type == \"case\") return cont(expression, expect(\":\"));\n if (type == \"default\") return cont(expect(\":\"));\n if (type == \"catch\") return cont(pushlex(\"form\"), pushcontext, maybeCatchBinding, statement, poplex, popcontext);\n if (type == \"export\") return cont(pushlex(\"stat\"), afterExport, poplex);\n if (type == \"import\") return cont(pushlex(\"stat\"), afterImport, poplex);\n if (type == \"async\") return cont(statement)\n if (value == \"@\") return cont(expression, statement)\n return pass(pushlex(\"stat\"), expression, expect(\";\"), poplex);\n }\n function maybeCatchBinding(type) {\n if (type == \"(\") return cont(funarg, expect(\")\"))\n }\n function expression(type, value) {\n return expressionInner(type, value, false);\n }\n function expressionNoComma(type, value) {\n return expressionInner(type, value, true);\n }\n function parenExpr(type) {\n if (type != \"(\") return pass()\n return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex)\n }\n function expressionInner(type, value, noComma) {\n if (cx.state.fatArrowAt == cx.stream.start) {\n var body = noComma ? arrowBodyNoComma : arrowBody;\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, expect(\"=>\"), body, popcontext);\n else if (type == \"variable\") return pass(pushcontext, pattern, expect(\"=>\"), body, popcontext);\n }\n\n var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma;\n if (atomicTypes.hasOwnProperty(type)) return cont(maybeop);\n if (type == \"function\") return cont(functiondef, maybeop);\n if (type == \"class\" || (isTS && value == \"interface\")) { cx.marked = \"keyword\"; return cont(pushlex(\"form\"), classExpression, poplex); }\n if (type == \"keyword c\" || type == \"async\") return cont(noComma ? expressionNoComma : expression);\n if (type == \"(\") return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex, maybeop);\n if (type == \"operator\" || type == \"spread\") return cont(noComma ? expressionNoComma : expression);\n if (type == \"[\") return cont(pushlex(\"]\"), arrayLiteral, poplex, maybeop);\n if (type == \"{\") return contCommasep(objprop, \"}\", null, maybeop);\n if (type == \"quasi\") return pass(quasi, maybeop);\n if (type == \"new\") return cont(maybeTarget(noComma));\n return cont();\n }\n function maybeexpression(type) {\n if (type.match(/[;\\}\\)\\],]/)) return pass();\n return pass(expression);\n }\n\n function maybeoperatorComma(type, value) {\n if (type == \",\") return cont(maybeexpression);\n return maybeoperatorNoComma(type, value, false);\n }\n function maybeoperatorNoComma(type, value, noComma) {\n var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma;\n var expr = noComma == false ? expression : expressionNoComma;\n if (type == \"=>\") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext);\n if (type == \"operator\") {\n if (/\\+\\+|--/.test(value) || isTS && value == \"!\") return cont(me);\n if (isTS && value == \"<\" && cx.stream.match(/^([^<>]|<[^<>]*>)*>\\s*\\(/, false))\n return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, me);\n if (value == \"?\") return cont(expression, expect(\":\"), expr);\n return cont(expr);\n }\n if (type == \"quasi\") { return pass(quasi, me); }\n if (type == \";\") return;\n if (type == \"(\") return contCommasep(expressionNoComma, \")\", \"call\", me);\n if (type == \".\") return cont(property, me);\n if (type == \"[\") return cont(pushlex(\"]\"), maybeexpression, expect(\"]\"), poplex, me);\n if (isTS && value == \"as\") { cx.marked = \"keyword\"; return cont(typeexpr, me) }\n if (type == \"regexp\") {\n cx.state.lastType = cx.marked = \"operator\"\n cx.stream.backUp(cx.stream.pos - cx.stream.start - 1)\n return cont(expr)\n }\n }\n function quasi(type, value) {\n if (type != \"quasi\") return pass();\n if (value.slice(value.length - 2) != \"${\") return cont(quasi);\n return cont(maybeexpression, continueQuasi);\n }\n function continueQuasi(type) {\n if (type == \"}\") {\n cx.marked = \"string-2\";\n cx.state.tokenize = tokenQuasi;\n return cont(quasi);\n }\n }\n function arrowBody(type) {\n findFatArrow(cx.stream, cx.state);\n return pass(type == \"{\" ? statement : expression);\n }\n function arrowBodyNoComma(type) {\n findFatArrow(cx.stream, cx.state);\n return pass(type == \"{\" ? statement : expressionNoComma);\n }\n function maybeTarget(noComma) {\n return function(type) {\n if (type == \".\") return cont(noComma ? targetNoComma : target);\n else if (type == \"variable\" && isTS) return cont(maybeTypeArgs, noComma ? maybeoperatorNoComma : maybeoperatorComma)\n else return pass(noComma ? expressionNoComma : expression);\n };\n }\n function target(_, value) {\n if (value == \"target\") { cx.marked = \"keyword\"; return cont(maybeoperatorComma); }\n }\n function targetNoComma(_, value) {\n if (value == \"target\") { cx.marked = \"keyword\"; return cont(maybeoperatorNoComma); }\n }\n function maybelabel(type) {\n if (type == \":\") return cont(poplex, statement);\n return pass(maybeoperatorComma, expect(\";\"), poplex);\n }\n function property(type) {\n if (type == \"variable\") {cx.marked = \"property\"; return cont();}\n }\n function objprop(type, value) {\n if (type == \"async\") {\n cx.marked = \"property\";\n return cont(objprop);\n } else if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n if (value == \"get\" || value == \"set\") return cont(getterSetter);\n var m // Work around fat-arrow-detection complication for detecting typescript typed arrow params\n if (isTS && cx.state.fatArrowAt == cx.stream.start && (m = cx.stream.match(/^\\s*:\\s*/, false)))\n cx.state.fatArrowAt = cx.stream.pos + m[0].length\n return cont(afterprop);\n } else if (type == \"number\" || type == \"string\") {\n cx.marked = jsonldMode ? \"property\" : (cx.style + \" property\");\n return cont(afterprop);\n } else if (type == \"jsonld-keyword\") {\n return cont(afterprop);\n } else if (isTS && isModifier(value)) {\n cx.marked = \"keyword\"\n return cont(objprop)\n } else if (type == \"[\") {\n return cont(expression, maybetype, expect(\"]\"), afterprop);\n } else if (type == \"spread\") {\n return cont(expressionNoComma, afterprop);\n } else if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(objprop);\n } else if (type == \":\") {\n return pass(afterprop)\n }\n }\n function getterSetter(type) {\n if (type != \"variable\") return pass(afterprop);\n cx.marked = \"property\";\n return cont(functiondef);\n }\n function afterprop(type) {\n if (type == \":\") return cont(expressionNoComma);\n if (type == \"(\") return pass(functiondef);\n }\n function commasep(what, end, sep) {\n function proceed(type, value) {\n if (sep ? sep.indexOf(type) > -1 : type == \",\") {\n var lex = cx.state.lexical;\n if (lex.info == \"call\") lex.pos = (lex.pos || 0) + 1;\n return cont(function(type, value) {\n if (type == end || value == end) return pass()\n return pass(what)\n }, proceed);\n }\n if (type == end || value == end) return cont();\n if (sep && sep.indexOf(\";\") > -1) return pass(what)\n return cont(expect(end));\n }\n return function(type, value) {\n if (type == end || value == end) return cont();\n return pass(what, proceed);\n };\n }\n function contCommasep(what, end, info) {\n for (var i = 3; i < arguments.length; i++)\n cx.cc.push(arguments[i]);\n return cont(pushlex(end, info), commasep(what, end), poplex);\n }\n function block(type) {\n if (type == \"}\") return cont();\n return pass(statement, block);\n }\n function maybetype(type, value) {\n if (isTS) {\n if (type == \":\") return cont(typeexpr);\n if (value == \"?\") return cont(maybetype);\n }\n }\n function maybetypeOrIn(type, value) {\n if (isTS && (type == \":\" || value == \"in\")) return cont(typeexpr)\n }\n function mayberettype(type) {\n if (isTS && type == \":\") {\n if (cx.stream.match(/^\\s*\\w+\\s+is\\b/, false)) return cont(expression, isKW, typeexpr)\n else return cont(typeexpr)\n }\n }\n function isKW(_, value) {\n if (value == \"is\") {\n cx.marked = \"keyword\"\n return cont()\n }\n }\n function typeexpr(type, value) {\n if (value == \"keyof\" || value == \"typeof\" || value == \"infer\" || value == \"readonly\") {\n cx.marked = \"keyword\"\n return cont(value == \"typeof\" ? expressionNoComma : typeexpr)\n }\n if (type == \"variable\" || value == \"void\") {\n cx.marked = \"type\"\n return cont(afterType)\n }\n if (value == \"|\" || value == \"&\") return cont(typeexpr)\n if (type == \"string\" || type == \"number\" || type == \"atom\") return cont(afterType);\n if (type == \"[\") return cont(pushlex(\"]\"), commasep(typeexpr, \"]\", \",\"), poplex, afterType)\n if (type == \"{\") return cont(pushlex(\"}\"), typeprops, poplex, afterType)\n if (type == \"(\") return cont(commasep(typearg, \")\"), maybeReturnType, afterType)\n if (type == \"<\") return cont(commasep(typeexpr, \">\"), typeexpr)\n if (type == \"quasi\") { return pass(quasiType, afterType); }\n }\n function maybeReturnType(type) {\n if (type == \"=>\") return cont(typeexpr)\n }\n function typeprops(type) {\n if (type.match(/[\\}\\)\\]]/)) return cont()\n if (type == \",\" || type == \";\") return cont(typeprops)\n return pass(typeprop, typeprops)\n }\n function typeprop(type, value) {\n if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\"\n return cont(typeprop)\n } else if (value == \"?\" || type == \"number\" || type == \"string\") {\n return cont(typeprop)\n } else if (type == \":\") {\n return cont(typeexpr)\n } else if (type == \"[\") {\n return cont(expect(\"variable\"), maybetypeOrIn, expect(\"]\"), typeprop)\n } else if (type == \"(\") {\n return pass(functiondecl, typeprop)\n } else if (!type.match(/[;\\}\\)\\],]/)) {\n return cont()\n }\n }\n function quasiType(type, value) {\n if (type != \"quasi\") return pass();\n if (value.slice(value.length - 2) != \"${\") return cont(quasiType);\n return cont(typeexpr, continueQuasiType);\n }\n function continueQuasiType(type) {\n if (type == \"}\") {\n cx.marked = \"string-2\";\n cx.state.tokenize = tokenQuasi;\n return cont(quasiType);\n }\n }\n function typearg(type, value) {\n if (type == \"variable\" && cx.stream.match(/^\\s*[?:]/, false) || value == \"?\") return cont(typearg)\n if (type == \":\") return cont(typeexpr)\n if (type == \"spread\") return cont(typearg)\n return pass(typeexpr)\n }\n function afterType(type, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType)\n if (value == \"|\" || type == \".\" || value == \"&\") return cont(typeexpr)\n if (type == \"[\") return cont(typeexpr, expect(\"]\"), afterType)\n if (value == \"extends\" || value == \"implements\") { cx.marked = \"keyword\"; return cont(typeexpr) }\n if (value == \"?\") return cont(typeexpr, expect(\":\"), typeexpr)\n }\n function maybeTypeArgs(_, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType)\n }\n function typeparam() {\n return pass(typeexpr, maybeTypeDefault)\n }\n function maybeTypeDefault(_, value) {\n if (value == \"=\") return cont(typeexpr)\n }\n function vardef(_, value) {\n if (value == \"enum\") {cx.marked = \"keyword\"; return cont(enumdef)}\n return pass(pattern, maybetype, maybeAssign, vardefCont);\n }\n function pattern(type, value) {\n if (isTS && isModifier(value)) { cx.marked = \"keyword\"; return cont(pattern) }\n if (type == \"variable\") { register(value); return cont(); }\n if (type == \"spread\") return cont(pattern);\n if (type == \"[\") return contCommasep(eltpattern, \"]\");\n if (type == \"{\") return contCommasep(proppattern, \"}\");\n }\n function proppattern(type, value) {\n if (type == \"variable\" && !cx.stream.match(/^\\s*:/, false)) {\n register(value);\n return cont(maybeAssign);\n }\n if (type == \"variable\") cx.marked = \"property\";\n if (type == \"spread\") return cont(pattern);\n if (type == \"}\") return pass();\n if (type == \"[\") return cont(expression, expect(']'), expect(':'), proppattern);\n return cont(expect(\":\"), pattern, maybeAssign);\n }\n function eltpattern() {\n return pass(pattern, maybeAssign)\n }\n function maybeAssign(_type, value) {\n if (value == \"=\") return cont(expressionNoComma);\n }\n function vardefCont(type) {\n if (type == \",\") return cont(vardef);\n }\n function maybeelse(type, value) {\n if (type == \"keyword b\" && value == \"else\") return cont(pushlex(\"form\", \"else\"), statement, poplex);\n }\n function forspec(type, value) {\n if (value == \"await\") return cont(forspec);\n if (type == \"(\") return cont(pushlex(\")\"), forspec1, poplex);\n }\n function forspec1(type) {\n if (type == \"var\") return cont(vardef, forspec2);\n if (type == \"variable\") return cont(forspec2);\n return pass(forspec2)\n }\n function forspec2(type, value) {\n if (type == \")\") return cont()\n if (type == \";\") return cont(forspec2)\n if (value == \"in\" || value == \"of\") { cx.marked = \"keyword\"; return cont(expression, forspec2) }\n return pass(expression, forspec2)\n }\n function functiondef(type, value) {\n if (value == \"*\") {cx.marked = \"keyword\"; return cont(functiondef);}\n if (type == \"variable\") {register(value); return cont(functiondef);}\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, statement, popcontext);\n if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondef)\n }\n function functiondecl(type, value) {\n if (value == \"*\") {cx.marked = \"keyword\"; return cont(functiondecl);}\n if (type == \"variable\") {register(value); return cont(functiondecl);}\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, popcontext);\n if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondecl)\n }\n function typename(type, value) {\n if (type == \"keyword\" || type == \"variable\") {\n cx.marked = \"type\"\n return cont(typename)\n } else if (value == \"<\") {\n return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex)\n }\n }\n function funarg(type, value) {\n if (value == \"@\") cont(expression, funarg)\n if (type == \"spread\") return cont(funarg);\n if (isTS && isModifier(value)) { cx.marked = \"keyword\"; return cont(funarg); }\n if (isTS && type == \"this\") return cont(maybetype, maybeAssign)\n return pass(pattern, maybetype, maybeAssign);\n }\n function classExpression(type, value) {\n // Class expressions may have an optional name.\n if (type == \"variable\") return className(type, value);\n return classNameAfter(type, value);\n }\n function className(type, value) {\n if (type == \"variable\") {register(value); return cont(classNameAfter);}\n }\n function classNameAfter(type, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, classNameAfter)\n if (value == \"extends\" || value == \"implements\" || (isTS && type == \",\")) {\n if (value == \"implements\") cx.marked = \"keyword\";\n return cont(isTS ? typeexpr : expression, classNameAfter);\n }\n if (type == \"{\") return cont(pushlex(\"}\"), classBody, poplex);\n }\n function classBody(type, value) {\n if (type == \"async\" ||\n (type == \"variable\" &&\n (value == \"static\" || value == \"get\" || value == \"set\" || (isTS && isModifier(value))) &&\n cx.stream.match(/^\\s+[\\w$\\xa1-\\uffff]/, false))) {\n cx.marked = \"keyword\";\n return cont(classBody);\n }\n if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n return cont(classfield, classBody);\n }\n if (type == \"number\" || type == \"string\") return cont(classfield, classBody);\n if (type == \"[\")\n return cont(expression, maybetype, expect(\"]\"), classfield, classBody)\n if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(classBody);\n }\n if (isTS && type == \"(\") return pass(functiondecl, classBody)\n if (type == \";\" || type == \",\") return cont(classBody);\n if (type == \"}\") return cont();\n if (value == \"@\") return cont(expression, classBody)\n }\n function classfield(type, value) {\n if (value == \"!\") return cont(classfield)\n if (value == \"?\") return cont(classfield)\n if (type == \":\") return cont(typeexpr, maybeAssign)\n if (value == \"=\") return cont(expressionNoComma)\n var context = cx.state.lexical.prev, isInterface = context && context.info == \"interface\"\n return pass(isInterface ? functiondecl : functiondef)\n }\n function afterExport(type, value) {\n if (value == \"*\") { cx.marked = \"keyword\"; return cont(maybeFrom, expect(\";\")); }\n if (value == \"default\") { cx.marked = \"keyword\"; return cont(expression, expect(\";\")); }\n if (type == \"{\") return cont(commasep(exportField, \"}\"), maybeFrom, expect(\";\"));\n return pass(statement);\n }\n function exportField(type, value) {\n if (value == \"as\") { cx.marked = \"keyword\"; return cont(expect(\"variable\")); }\n if (type == \"variable\") return pass(expressionNoComma, exportField);\n }\n function afterImport(type) {\n if (type == \"string\") return cont();\n if (type == \"(\") return pass(expression);\n if (type == \".\") return pass(maybeoperatorComma);\n return pass(importSpec, maybeMoreImports, maybeFrom);\n }\n function importSpec(type, value) {\n if (type == \"{\") return contCommasep(importSpec, \"}\");\n if (type == \"variable\") register(value);\n if (value == \"*\") cx.marked = \"keyword\";\n return cont(maybeAs);\n }\n function maybeMoreImports(type) {\n if (type == \",\") return cont(importSpec, maybeMoreImports)\n }\n function maybeAs(_type, value) {\n if (value == \"as\") { cx.marked = \"keyword\"; return cont(importSpec); }\n }\n function maybeFrom(_type, value) {\n if (value == \"from\") { cx.marked = \"keyword\"; return cont(expression); }\n }\n function arrayLiteral(type) {\n if (type == \"]\") return cont();\n return pass(commasep(expressionNoComma, \"]\"));\n }\n function enumdef() {\n return pass(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), commasep(enummember, \"}\"), poplex, poplex)\n }\n function enummember() {\n return pass(pattern, maybeAssign);\n }\n\n function isContinuedStatement(state, textAfter) {\n return state.lastType == \"operator\" || state.lastType == \",\" ||\n isOperatorChar.test(textAfter.charAt(0)) ||\n /[,.]/.test(textAfter.charAt(0));\n }\n\n function expressionAllowed(stream, state, backUp) {\n return state.tokenize == tokenBase &&\n /^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\\[{}\\(,;:]|=>)$/.test(state.lastType) ||\n (state.lastType == \"quasi\" && /\\{\\s*$/.test(stream.string.slice(0, stream.pos - (backUp || 0))))\n }\n\n // Interface\n\n return {\n startState: function(basecolumn) {\n var state = {\n tokenize: tokenBase,\n lastType: \"sof\",\n cc: [],\n lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, \"block\", false),\n localVars: parserConfig.localVars,\n context: parserConfig.localVars && new Context(null, null, false),\n indented: basecolumn || 0\n };\n if (parserConfig.globalVars && typeof parserConfig.globalVars == \"object\")\n state.globalVars = parserConfig.globalVars;\n return state;\n },\n\n token: function(stream, state) {\n if (stream.sol()) {\n if (!state.lexical.hasOwnProperty(\"align\"))\n state.lexical.align = false;\n state.indented = stream.indentation();\n findFatArrow(stream, state);\n }\n if (state.tokenize != tokenComment && stream.eatSpace()) return null;\n var style = state.tokenize(stream, state);\n if (type == \"comment\") return style;\n state.lastType = type == \"operator\" && (content == \"++\" || content == \"--\") ? \"incdec\" : type;\n return parseJS(state, style, type, content, stream);\n },\n\n indent: function(state, textAfter) {\n if (state.tokenize == tokenComment || state.tokenize == tokenQuasi) return CodeMirror.Pass;\n if (state.tokenize != tokenBase) return 0;\n var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical, top\n // Kludge to prevent 'maybelse' from blocking lexical scope pops\n if (!/^\\s*else\\b/.test(textAfter)) for (var i = state.cc.length - 1; i >= 0; --i) {\n var c = state.cc[i];\n if (c == poplex) lexical = lexical.prev;\n else if (c != maybeelse && c != popcontext) break;\n }\n while ((lexical.type == \"stat\" || lexical.type == \"form\") &&\n (firstChar == \"}\" || ((top = state.cc[state.cc.length - 1]) &&\n (top == maybeoperatorComma || top == maybeoperatorNoComma) &&\n !/^[,\\.=+\\-*:?[\\(]/.test(textAfter))))\n lexical = lexical.prev;\n if (statementIndent && lexical.type == \")\" && lexical.prev.type == \"stat\")\n lexical = lexical.prev;\n var type = lexical.type, closing = firstChar == type;\n\n if (type == \"vardef\") return lexical.indented + (state.lastType == \"operator\" || state.lastType == \",\" ? lexical.info.length + 1 : 0);\n else if (type == \"form\" && firstChar == \"{\") return lexical.indented;\n else if (type == \"form\") return lexical.indented + indentUnit;\n else if (type == \"stat\")\n return lexical.indented + (isContinuedStatement(state, textAfter) ? statementIndent || indentUnit : 0);\n else if (lexical.info == \"switch\" && !closing && parserConfig.doubleIndentSwitch != false)\n return lexical.indented + (/^(?:case|default)\\b/.test(textAfter) ? indentUnit : 2 * indentUnit);\n else if (lexical.align) return lexical.column + (closing ? 0 : 1);\n else return lexical.indented + (closing ? 0 : indentUnit);\n },\n\n electricInput: /^\\s*(?:case .*?:|default:|\\{|\\})$/,\n blockCommentStart: jsonMode ? null : \"/*\",\n blockCommentEnd: jsonMode ? null : \"*/\",\n blockCommentContinue: jsonMode ? null : \" * \",\n lineComment: jsonMode ? null : \"//\",\n fold: \"brace\",\n closeBrackets: \"()[]{}''\\\"\\\"``\",\n\n helperType: jsonMode ? \"json\" : \"javascript\",\n jsonldMode: jsonldMode,\n jsonMode: jsonMode,\n\n expressionAllowed: expressionAllowed,\n\n skipExpression: function(state) {\n parseJS(state, \"atom\", \"atom\", \"true\", new CodeMirror.StringStream(\"\", 2, null))\n }\n };\n});\n\nCodeMirror.registerHelper(\"wordChars\", \"javascript\", /[\\w$]/);\n\nCodeMirror.defineMIME(\"text/javascript\", \"javascript\");\nCodeMirror.defineMIME(\"text/ecmascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/javascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/x-javascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/ecmascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/json\", { name: \"javascript\", json: true });\nCodeMirror.defineMIME(\"application/x-json\", { name: \"javascript\", json: true });\nCodeMirror.defineMIME(\"application/manifest+json\", { name: \"javascript\", json: true })\nCodeMirror.defineMIME(\"application/ld+json\", { name: \"javascript\", jsonld: true });\nCodeMirror.defineMIME(\"text/typescript\", { name: \"javascript\", typescript: true });\nCodeMirror.defineMIME(\"application/typescript\", { name: \"javascript\", typescript: true });\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nvar htmlConfig = {\n autoSelfClosers: {'area': true, 'base': true, 'br': true, 'col': true, 'command': true,\n 'embed': true, 'frame': true, 'hr': true, 'img': true, 'input': true,\n 'keygen': true, 'link': true, 'meta': true, 'param': true, 'source': true,\n 'track': true, 'wbr': true, 'menuitem': true},\n implicitlyClosed: {'dd': true, 'li': true, 'optgroup': true, 'option': true, 'p': true,\n 'rp': true, 'rt': true, 'tbody': true, 'td': true, 'tfoot': true,\n 'th': true, 'tr': true},\n contextGrabbers: {\n 'dd': {'dd': true, 'dt': true},\n 'dt': {'dd': true, 'dt': true},\n 'li': {'li': true},\n 'option': {'option': true, 'optgroup': true},\n 'optgroup': {'optgroup': true},\n 'p': {'address': true, 'article': true, 'aside': true, 'blockquote': true, 'dir': true,\n 'div': true, 'dl': true, 'fieldset': true, 'footer': true, 'form': true,\n 'h1': true, 'h2': true, 'h3': true, 'h4': true, 'h5': true, 'h6': true,\n 'header': true, 'hgroup': true, 'hr': true, 'menu': true, 'nav': true, 'ol': true,\n 'p': true, 'pre': true, 'section': true, 'table': true, 'ul': true},\n 'rp': {'rp': true, 'rt': true},\n 'rt': {'rp': true, 'rt': true},\n 'tbody': {'tbody': true, 'tfoot': true},\n 'td': {'td': true, 'th': true},\n 'tfoot': {'tbody': true},\n 'th': {'td': true, 'th': true},\n 'thead': {'tbody': true, 'tfoot': true},\n 'tr': {'tr': true}\n },\n doNotIndent: {\"pre\": true},\n allowUnquoted: true,\n allowMissing: true,\n caseFold: true\n}\n\nvar xmlConfig = {\n autoSelfClosers: {},\n implicitlyClosed: {},\n contextGrabbers: {},\n doNotIndent: {},\n allowUnquoted: false,\n allowMissing: false,\n allowMissingTagName: false,\n caseFold: false\n}\n\nCodeMirror.defineMode(\"xml\", function(editorConf, config_) {\n var indentUnit = editorConf.indentUnit\n var config = {}\n var defaults = config_.htmlMode ? htmlConfig : xmlConfig\n for (var prop in defaults) config[prop] = defaults[prop]\n for (var prop in config_) config[prop] = config_[prop]\n\n // Return variables for tokenizers\n var type, setStyle;\n\n function inText(stream, state) {\n function chain(parser) {\n state.tokenize = parser;\n return parser(stream, state);\n }\n\n var ch = stream.next();\n if (ch == \"<\") {\n if (stream.eat(\"!\")) {\n if (stream.eat(\"[\")) {\n if (stream.match(\"CDATA[\")) return chain(inBlock(\"atom\", \"]]>\"));\n else return null;\n } else if (stream.match(\"--\")) {\n return chain(inBlock(\"comment\", \"-->\"));\n } else if (stream.match(\"DOCTYPE\", true, true)) {\n stream.eatWhile(/[\\w\\._\\-]/);\n return chain(doctype(1));\n } else {\n return null;\n }\n } else if (stream.eat(\"?\")) {\n stream.eatWhile(/[\\w\\._\\-]/);\n state.tokenize = inBlock(\"meta\", \"?>\");\n return \"meta\";\n } else {\n type = stream.eat(\"/\") ? \"closeTag\" : \"openTag\";\n state.tokenize = inTag;\n return \"tag bracket\";\n }\n } else if (ch == \"&\") {\n var ok;\n if (stream.eat(\"#\")) {\n if (stream.eat(\"x\")) {\n ok = stream.eatWhile(/[a-fA-F\\d]/) && stream.eat(\";\");\n } else {\n ok = stream.eatWhile(/[\\d]/) && stream.eat(\";\");\n }\n } else {\n ok = stream.eatWhile(/[\\w\\.\\-:]/) && stream.eat(\";\");\n }\n return ok ? \"atom\" : \"error\";\n } else {\n stream.eatWhile(/[^&<]/);\n return null;\n }\n }\n inText.isInText = true;\n\n function inTag(stream, state) {\n var ch = stream.next();\n if (ch == \">\" || (ch == \"/\" && stream.eat(\">\"))) {\n state.tokenize = inText;\n type = ch == \">\" ? \"endTag\" : \"selfcloseTag\";\n return \"tag bracket\";\n } else if (ch == \"=\") {\n type = \"equals\";\n return null;\n } else if (ch == \"<\") {\n state.tokenize = inText;\n state.state = baseState;\n state.tagName = state.tagStart = null;\n var next = state.tokenize(stream, state);\n return next ? next + \" tag error\" : \"tag error\";\n } else if (/[\\'\\\"]/.test(ch)) {\n state.tokenize = inAttribute(ch);\n state.stringStartCol = stream.column();\n return state.tokenize(stream, state);\n } else {\n stream.match(/^[^\\s\\u00a0=<>\\\"\\']*[^\\s\\u00a0=<>\\\"\\'\\/]/);\n return \"word\";\n }\n }\n\n function inAttribute(quote) {\n var closure = function(stream, state) {\n while (!stream.eol()) {\n if (stream.next() == quote) {\n state.tokenize = inTag;\n break;\n }\n }\n return \"string\";\n };\n closure.isInAttribute = true;\n return closure;\n }\n\n function inBlock(style, terminator) {\n return function(stream, state) {\n while (!stream.eol()) {\n if (stream.match(terminator)) {\n state.tokenize = inText;\n break;\n }\n stream.next();\n }\n return style;\n }\n }\n\n function doctype(depth) {\n return function(stream, state) {\n var ch;\n while ((ch = stream.next()) != null) {\n if (ch == \"<\") {\n state.tokenize = doctype(depth + 1);\n return state.tokenize(stream, state);\n } else if (ch == \">\") {\n if (depth == 1) {\n state.tokenize = inText;\n break;\n } else {\n state.tokenize = doctype(depth - 1);\n return state.tokenize(stream, state);\n }\n }\n }\n return \"meta\";\n };\n }\n\n function Context(state, tagName, startOfLine) {\n this.prev = state.context;\n this.tagName = tagName || \"\";\n this.indent = state.indented;\n this.startOfLine = startOfLine;\n if (config.doNotIndent.hasOwnProperty(tagName) || (state.context && state.context.noIndent))\n this.noIndent = true;\n }\n function popContext(state) {\n if (state.context) state.context = state.context.prev;\n }\n function maybePopContext(state, nextTagName) {\n var parentTagName;\n while (true) {\n if (!state.context) {\n return;\n }\n parentTagName = state.context.tagName;\n if (!config.contextGrabbers.hasOwnProperty(parentTagName) ||\n !config.contextGrabbers[parentTagName].hasOwnProperty(nextTagName)) {\n return;\n }\n popContext(state);\n }\n }\n\n function baseState(type, stream, state) {\n if (type == \"openTag\") {\n state.tagStart = stream.column();\n return tagNameState;\n } else if (type == \"closeTag\") {\n return closeTagNameState;\n } else {\n return baseState;\n }\n }\n function tagNameState(type, stream, state) {\n if (type == \"word\") {\n state.tagName = stream.current();\n setStyle = \"tag\";\n return attrState;\n } else if (config.allowMissingTagName && type == \"endTag\") {\n setStyle = \"tag bracket\";\n return attrState(type, stream, state);\n } else {\n setStyle = \"error\";\n return tagNameState;\n }\n }\n function closeTagNameState(type, stream, state) {\n if (type == \"word\") {\n var tagName = stream.current();\n if (state.context && state.context.tagName != tagName &&\n config.implicitlyClosed.hasOwnProperty(state.context.tagName))\n popContext(state);\n if ((state.context && state.context.tagName == tagName) || config.matchClosing === false) {\n setStyle = \"tag\";\n return closeState;\n } else {\n setStyle = \"tag error\";\n return closeStateErr;\n }\n } else if (config.allowMissingTagName && type == \"endTag\") {\n setStyle = \"tag bracket\";\n return closeState(type, stream, state);\n } else {\n setStyle = \"error\";\n return closeStateErr;\n }\n }\n\n function closeState(type, _stream, state) {\n if (type != \"endTag\") {\n setStyle = \"error\";\n return closeState;\n }\n popContext(state);\n return baseState;\n }\n function closeStateErr(type, stream, state) {\n setStyle = \"error\";\n return closeState(type, stream, state);\n }\n\n function attrState(type, _stream, state) {\n if (type == \"word\") {\n setStyle = \"attribute\";\n return attrEqState;\n } else if (type == \"endTag\" || type == \"selfcloseTag\") {\n var tagName = state.tagName, tagStart = state.tagStart;\n state.tagName = state.tagStart = null;\n if (type == \"selfcloseTag\" ||\n config.autoSelfClosers.hasOwnProperty(tagName)) {\n maybePopContext(state, tagName);\n } else {\n maybePopContext(state, tagName);\n state.context = new Context(state, tagName, tagStart == state.indented);\n }\n return baseState;\n }\n setStyle = \"error\";\n return attrState;\n }\n function attrEqState(type, stream, state) {\n if (type == \"equals\") return attrValueState;\n if (!config.allowMissing) setStyle = \"error\";\n return attrState(type, stream, state);\n }\n function attrValueState(type, stream, state) {\n if (type == \"string\") return attrContinuedState;\n if (type == \"word\" && config.allowUnquoted) {setStyle = \"string\"; return attrState;}\n setStyle = \"error\";\n return attrState(type, stream, state);\n }\n function attrContinuedState(type, stream, state) {\n if (type == \"string\") return attrContinuedState;\n return attrState(type, stream, state);\n }\n\n return {\n startState: function(baseIndent) {\n var state = {tokenize: inText,\n state: baseState,\n indented: baseIndent || 0,\n tagName: null, tagStart: null,\n context: null}\n if (baseIndent != null) state.baseIndent = baseIndent\n return state\n },\n\n token: function(stream, state) {\n if (!state.tagName && stream.sol())\n state.indented = stream.indentation();\n\n if (stream.eatSpace()) return null;\n type = null;\n var style = state.tokenize(stream, state);\n if ((style || type) && style != \"comment\") {\n setStyle = null;\n state.state = state.state(type || style, stream, state);\n if (setStyle)\n style = setStyle == \"error\" ? style + \" error\" : setStyle;\n }\n return style;\n },\n\n indent: function(state, textAfter, fullLine) {\n var context = state.context;\n // Indent multi-line strings (e.g. css).\n if (state.tokenize.isInAttribute) {\n if (state.tagStart == state.indented)\n return state.stringStartCol + 1;\n else\n return state.indented + indentUnit;\n }\n if (context && context.noIndent) return CodeMirror.Pass;\n if (state.tokenize != inTag && state.tokenize != inText)\n return fullLine ? fullLine.match(/^(\\s*)/)[0].length : 0;\n // Indent the starts of attribute names.\n if (state.tagName) {\n if (config.multilineTagIndentPastTag !== false)\n return state.tagStart + state.tagName.length + 2;\n else\n return state.tagStart + indentUnit * (config.multilineTagIndentFactor || 1);\n }\n if (config.alignCDATA && /$/,\n blockCommentStart: \"\",\n\n configuration: config.htmlMode ? \"html\" : \"xml\",\n helperType: config.htmlMode ? \"html\" : \"xml\",\n\n skipAttribute: function(state) {\n if (state.state == attrValueState)\n state.state = attrState\n },\n\n xmlCurrentTag: function(state) {\n return state.tagName ? {name: state.tagName, close: state.type == \"closeTag\"} : null\n },\n\n xmlCurrentContext: function(state) {\n var context = []\n for (var cx = state.context; cx; cx = cx.prev)\n context.push(cx.tagName)\n return context.reverse()\n }\n };\n});\n\nCodeMirror.defineMIME(\"text/xml\", \"xml\");\nCodeMirror.defineMIME(\"application/xml\", \"xml\");\nif (!CodeMirror.mimeModes.hasOwnProperty(\"text/html\"))\n CodeMirror.defineMIME(\"text/html\", {name: \"xml\", htmlMode: true});\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../xml/xml\"), require(\"../javascript/javascript\"), require(\"../css/css\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../xml/xml\", \"../javascript/javascript\", \"../css/css\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var defaultTags = {\n script: [\n [\"lang\", /(javascript|babel)/i, \"javascript\"],\n [\"type\", /^(?:text|application)\\/(?:x-)?(?:java|ecma)script$|^module$|^$/i, \"javascript\"],\n [\"type\", /./, \"text/plain\"],\n [null, null, \"javascript\"]\n ],\n style: [\n [\"lang\", /^css$/i, \"css\"],\n [\"type\", /^(text\\/)?(x-)?(stylesheet|css)$/i, \"css\"],\n [\"type\", /./, \"text/plain\"],\n [null, null, \"css\"]\n ]\n };\n\n function maybeBackup(stream, pat, style) {\n var cur = stream.current(), close = cur.search(pat);\n if (close > -1) {\n stream.backUp(cur.length - close);\n } else if (cur.match(/<\\/?$/)) {\n stream.backUp(cur.length);\n if (!stream.match(pat, false)) stream.match(cur);\n }\n return style;\n }\n\n var attrRegexpCache = {};\n function getAttrRegexp(attr) {\n var regexp = attrRegexpCache[attr];\n if (regexp) return regexp;\n return attrRegexpCache[attr] = new RegExp(\"\\\\s+\" + attr + \"\\\\s*=\\\\s*('|\\\")?([^'\\\"]+)('|\\\")?\\\\s*\");\n }\n\n function getAttrValue(text, attr) {\n var match = text.match(getAttrRegexp(attr))\n return match ? /^\\s*(.*?)\\s*$/.exec(match[2])[1] : \"\"\n }\n\n function getTagRegexp(tagName, anchored) {\n return new RegExp((anchored ? \"^\" : \"\") + \"<\\/\\s*\" + tagName + \"\\s*>\", \"i\");\n }\n\n function addTags(from, to) {\n for (var tag in from) {\n var dest = to[tag] || (to[tag] = []);\n var source = from[tag];\n for (var i = source.length - 1; i >= 0; i--)\n dest.unshift(source[i])\n }\n }\n\n function findMatchingMode(tagInfo, tagText) {\n for (var i = 0; i < tagInfo.length; i++) {\n var spec = tagInfo[i];\n if (!spec[0] || spec[1].test(getAttrValue(tagText, spec[0]))) return spec[2];\n }\n }\n\n CodeMirror.defineMode(\"htmlmixed\", function (config, parserConfig) {\n var htmlMode = CodeMirror.getMode(config, {\n name: \"xml\",\n htmlMode: true,\n multilineTagIndentFactor: parserConfig.multilineTagIndentFactor,\n multilineTagIndentPastTag: parserConfig.multilineTagIndentPastTag,\n allowMissingTagName: parserConfig.allowMissingTagName,\n });\n\n var tags = {};\n var configTags = parserConfig && parserConfig.tags, configScript = parserConfig && parserConfig.scriptTypes;\n addTags(defaultTags, tags);\n if (configTags) addTags(configTags, tags);\n if (configScript) for (var i = configScript.length - 1; i >= 0; i--)\n tags.script.unshift([\"type\", configScript[i].matches, configScript[i].mode])\n\n function html(stream, state) {\n var style = htmlMode.token(stream, state.htmlState), tag = /\\btag\\b/.test(style), tagName\n if (tag && !/[<>\\s\\/]/.test(stream.current()) &&\n (tagName = state.htmlState.tagName && state.htmlState.tagName.toLowerCase()) &&\n tags.hasOwnProperty(tagName)) {\n state.inTag = tagName + \" \"\n } else if (state.inTag && tag && />$/.test(stream.current())) {\n var inTag = /^([\\S]+) (.*)/.exec(state.inTag)\n state.inTag = null\n var modeSpec = stream.current() == \">\" && findMatchingMode(tags[inTag[1]], inTag[2])\n var mode = CodeMirror.getMode(config, modeSpec)\n var endTagA = getTagRegexp(inTag[1], true), endTag = getTagRegexp(inTag[1], false);\n state.token = function (stream, state) {\n if (stream.match(endTagA, false)) {\n state.token = html;\n state.localState = state.localMode = null;\n return null;\n }\n return maybeBackup(stream, endTag, state.localMode.token(stream, state.localState));\n };\n state.localMode = mode;\n state.localState = CodeMirror.startState(mode, htmlMode.indent(state.htmlState, \"\", \"\"));\n } else if (state.inTag) {\n state.inTag += stream.current()\n if (stream.eol()) state.inTag += \" \"\n }\n return style;\n };\n\n return {\n startState: function () {\n var state = CodeMirror.startState(htmlMode);\n return {token: html, inTag: null, localMode: null, localState: null, htmlState: state};\n },\n\n copyState: function (state) {\n var local;\n if (state.localState) {\n local = CodeMirror.copyState(state.localMode, state.localState);\n }\n return {token: state.token, inTag: state.inTag,\n localMode: state.localMode, localState: local,\n htmlState: CodeMirror.copyState(htmlMode, state.htmlState)};\n },\n\n token: function (stream, state) {\n return state.token(stream, state);\n },\n\n indent: function (state, textAfter, line) {\n if (!state.localMode || /^\\s*<\\//.test(textAfter))\n return htmlMode.indent(state.htmlState, textAfter, line);\n else if (state.localMode.indent)\n return state.localMode.indent(state.localState, textAfter, line);\n else\n return CodeMirror.Pass;\n },\n\n innerMode: function (state) {\n return {state: state.localState || state.htmlState, mode: state.localMode || htmlMode};\n }\n };\n }, \"xml\", \"javascript\", \"css\");\n\n CodeMirror.defineMIME(\"text/html\", \"htmlmixed\");\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"css\", function(config, parserConfig) {\n var inline = parserConfig.inline\n if (!parserConfig.propertyKeywords) parserConfig = CodeMirror.resolveMode(\"text/css\");\n\n var indentUnit = config.indentUnit,\n tokenHooks = parserConfig.tokenHooks,\n documentTypes = parserConfig.documentTypes || {},\n mediaTypes = parserConfig.mediaTypes || {},\n mediaFeatures = parserConfig.mediaFeatures || {},\n mediaValueKeywords = parserConfig.mediaValueKeywords || {},\n propertyKeywords = parserConfig.propertyKeywords || {},\n nonStandardPropertyKeywords = parserConfig.nonStandardPropertyKeywords || {},\n fontProperties = parserConfig.fontProperties || {},\n counterDescriptors = parserConfig.counterDescriptors || {},\n colorKeywords = parserConfig.colorKeywords || {},\n valueKeywords = parserConfig.valueKeywords || {},\n allowNested = parserConfig.allowNested,\n lineComment = parserConfig.lineComment,\n supportsAtComponent = parserConfig.supportsAtComponent === true,\n highlightNonStandardPropertyKeywords = config.highlightNonStandardPropertyKeywords !== false;\n\n var type, override;\n function ret(style, tp) { type = tp; return style; }\n\n // Tokenizers\n\n function tokenBase(stream, state) {\n var ch = stream.next();\n if (tokenHooks[ch]) {\n var result = tokenHooks[ch](stream, state);\n if (result !== false) return result;\n }\n if (ch == \"@\") {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"def\", stream.current());\n } else if (ch == \"=\" || (ch == \"~\" || ch == \"|\") && stream.eat(\"=\")) {\n return ret(null, \"compare\");\n } else if (ch == \"\\\"\" || ch == \"'\") {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n } else if (ch == \"#\") {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"atom\", \"hash\");\n } else if (ch == \"!\") {\n stream.match(/^\\s*\\w*/);\n return ret(\"keyword\", \"important\");\n } else if (/\\d/.test(ch) || ch == \".\" && stream.eat(/\\d/)) {\n stream.eatWhile(/[\\w.%]/);\n return ret(\"number\", \"unit\");\n } else if (ch === \"-\") {\n if (/[\\d.]/.test(stream.peek())) {\n stream.eatWhile(/[\\w.%]/);\n return ret(\"number\", \"unit\");\n } else if (stream.match(/^-[\\w\\\\\\-]*/)) {\n stream.eatWhile(/[\\w\\\\\\-]/);\n if (stream.match(/^\\s*:/, false))\n return ret(\"variable-2\", \"variable-definition\");\n return ret(\"variable-2\", \"variable\");\n } else if (stream.match(/^\\w+-/)) {\n return ret(\"meta\", \"meta\");\n }\n } else if (/[,+>*\\/]/.test(ch)) {\n return ret(null, \"select-op\");\n } else if (ch == \".\" && stream.match(/^-?[_a-z][_a-z0-9-]*/i)) {\n return ret(\"qualifier\", \"qualifier\");\n } else if (/[:;{}\\[\\]\\(\\)]/.test(ch)) {\n return ret(null, ch);\n } else if (stream.match(/^[\\w-.]+(?=\\()/)) {\n if (/^(url(-prefix)?|domain|regexp)$/i.test(stream.current())) {\n state.tokenize = tokenParenthesized;\n }\n return ret(\"variable callee\", \"variable\");\n } else if (/[\\w\\\\\\-]/.test(ch)) {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"property\", \"word\");\n } else {\n return ret(null, null);\n }\n }\n\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, ch;\n while ((ch = stream.next()) != null) {\n if (ch == quote && !escaped) {\n if (quote == \")\") stream.backUp(1);\n break;\n }\n escaped = !escaped && ch == \"\\\\\";\n }\n if (ch == quote || !escaped && quote != \")\") state.tokenize = null;\n return ret(\"string\", \"string\");\n };\n }\n\n function tokenParenthesized(stream, state) {\n stream.next(); // Must be '('\n if (!stream.match(/^\\s*[\\\"\\')]/, false))\n state.tokenize = tokenString(\")\");\n else\n state.tokenize = null;\n return ret(null, \"(\");\n }\n\n // Context management\n\n function Context(type, indent, prev) {\n this.type = type;\n this.indent = indent;\n this.prev = prev;\n }\n\n function pushContext(state, stream, type, indent) {\n state.context = new Context(type, stream.indentation() + (indent === false ? 0 : indentUnit), state.context);\n return type;\n }\n\n function popContext(state) {\n if (state.context.prev)\n state.context = state.context.prev;\n return state.context.type;\n }\n\n function pass(type, stream, state) {\n return states[state.context.type](type, stream, state);\n }\n function popAndPass(type, stream, state, n) {\n for (var i = n || 1; i > 0; i--)\n state.context = state.context.prev;\n return pass(type, stream, state);\n }\n\n // Parser\n\n function wordAsValue(stream) {\n var word = stream.current().toLowerCase();\n if (valueKeywords.hasOwnProperty(word))\n override = \"atom\";\n else if (colorKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else\n override = \"variable\";\n }\n\n var states = {};\n\n states.top = function(type, stream, state) {\n if (type == \"{\") {\n return pushContext(state, stream, \"block\");\n } else if (type == \"}\" && state.context.prev) {\n return popContext(state);\n } else if (supportsAtComponent && /@component/i.test(type)) {\n return pushContext(state, stream, \"atComponentBlock\");\n } else if (/^@(-moz-)?document$/i.test(type)) {\n return pushContext(state, stream, \"documentTypes\");\n } else if (/^@(media|supports|(-moz-)?document|import)$/i.test(type)) {\n return pushContext(state, stream, \"atBlock\");\n } else if (/^@(font-face|counter-style)/i.test(type)) {\n state.stateArg = type;\n return \"restricted_atBlock_before\";\n } else if (/^@(-(moz|ms|o|webkit)-)?keyframes$/i.test(type)) {\n return \"keyframes\";\n } else if (type && type.charAt(0) == \"@\") {\n return pushContext(state, stream, \"at\");\n } else if (type == \"hash\") {\n override = \"builtin\";\n } else if (type == \"word\") {\n override = \"tag\";\n } else if (type == \"variable-definition\") {\n return \"maybeprop\";\n } else if (type == \"interpolation\") {\n return pushContext(state, stream, \"interpolation\");\n } else if (type == \":\") {\n return \"pseudo\";\n } else if (allowNested && type == \"(\") {\n return pushContext(state, stream, \"parens\");\n }\n return state.context.type;\n };\n\n states.block = function(type, stream, state) {\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n if (propertyKeywords.hasOwnProperty(word)) {\n override = \"property\";\n return \"maybeprop\";\n } else if (nonStandardPropertyKeywords.hasOwnProperty(word)) {\n override = highlightNonStandardPropertyKeywords ? \"string-2\" : \"property\";\n return \"maybeprop\";\n } else if (allowNested) {\n override = stream.match(/^\\s*:(?:\\s|$)/, false) ? \"property\" : \"tag\";\n return \"block\";\n } else {\n override += \" error\";\n return \"maybeprop\";\n }\n } else if (type == \"meta\") {\n return \"block\";\n } else if (!allowNested && (type == \"hash\" || type == \"qualifier\")) {\n override = \"error\";\n return \"block\";\n } else {\n return states.top(type, stream, state);\n }\n };\n\n states.maybeprop = function(type, stream, state) {\n if (type == \":\") return pushContext(state, stream, \"prop\");\n return pass(type, stream, state);\n };\n\n states.prop = function(type, stream, state) {\n if (type == \";\") return popContext(state);\n if (type == \"{\" && allowNested) return pushContext(state, stream, \"propBlock\");\n if (type == \"}\" || type == \"{\") return popAndPass(type, stream, state);\n if (type == \"(\") return pushContext(state, stream, \"parens\");\n\n if (type == \"hash\" && !/^#([0-9a-fA-f]{3,4}|[0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/.test(stream.current())) {\n override += \" error\";\n } else if (type == \"word\") {\n wordAsValue(stream);\n } else if (type == \"interpolation\") {\n return pushContext(state, stream, \"interpolation\");\n }\n return \"prop\";\n };\n\n states.propBlock = function(type, _stream, state) {\n if (type == \"}\") return popContext(state);\n if (type == \"word\") { override = \"property\"; return \"maybeprop\"; }\n return state.context.type;\n };\n\n states.parens = function(type, stream, state) {\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state);\n if (type == \")\") return popContext(state);\n if (type == \"(\") return pushContext(state, stream, \"parens\");\n if (type == \"interpolation\") return pushContext(state, stream, \"interpolation\");\n if (type == \"word\") wordAsValue(stream);\n return \"parens\";\n };\n\n states.pseudo = function(type, stream, state) {\n if (type == \"meta\") return \"pseudo\";\n\n if (type == \"word\") {\n override = \"variable-3\";\n return state.context.type;\n }\n return pass(type, stream, state);\n };\n\n states.documentTypes = function(type, stream, state) {\n if (type == \"word\" && documentTypes.hasOwnProperty(stream.current())) {\n override = \"tag\";\n return state.context.type;\n } else {\n return states.atBlock(type, stream, state);\n }\n };\n\n states.atBlock = function(type, stream, state) {\n if (type == \"(\") return pushContext(state, stream, \"atBlock_parens\");\n if (type == \"}\" || type == \";\") return popAndPass(type, stream, state);\n if (type == \"{\") return popContext(state) && pushContext(state, stream, allowNested ? \"block\" : \"top\");\n\n if (type == \"interpolation\") return pushContext(state, stream, \"interpolation\");\n\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n if (word == \"only\" || word == \"not\" || word == \"and\" || word == \"or\")\n override = \"keyword\";\n else if (mediaTypes.hasOwnProperty(word))\n override = \"attribute\";\n else if (mediaFeatures.hasOwnProperty(word))\n override = \"property\";\n else if (mediaValueKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else if (propertyKeywords.hasOwnProperty(word))\n override = \"property\";\n else if (nonStandardPropertyKeywords.hasOwnProperty(word))\n override = highlightNonStandardPropertyKeywords ? \"string-2\" : \"property\";\n else if (valueKeywords.hasOwnProperty(word))\n override = \"atom\";\n else if (colorKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else\n override = \"error\";\n }\n return state.context.type;\n };\n\n states.atComponentBlock = function(type, stream, state) {\n if (type == \"}\")\n return popAndPass(type, stream, state);\n if (type == \"{\")\n return popContext(state) && pushContext(state, stream, allowNested ? \"block\" : \"top\", false);\n if (type == \"word\")\n override = \"error\";\n return state.context.type;\n };\n\n states.atBlock_parens = function(type, stream, state) {\n if (type == \")\") return popContext(state);\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state, 2);\n return states.atBlock(type, stream, state);\n };\n\n states.restricted_atBlock_before = function(type, stream, state) {\n if (type == \"{\")\n return pushContext(state, stream, \"restricted_atBlock\");\n if (type == \"word\" && state.stateArg == \"@counter-style\") {\n override = \"variable\";\n return \"restricted_atBlock_before\";\n }\n return pass(type, stream, state);\n };\n\n states.restricted_atBlock = function(type, stream, state) {\n if (type == \"}\") {\n state.stateArg = null;\n return popContext(state);\n }\n if (type == \"word\") {\n if ((state.stateArg == \"@font-face\" && !fontProperties.hasOwnProperty(stream.current().toLowerCase())) ||\n (state.stateArg == \"@counter-style\" && !counterDescriptors.hasOwnProperty(stream.current().toLowerCase())))\n override = \"error\";\n else\n override = \"property\";\n return \"maybeprop\";\n }\n return \"restricted_atBlock\";\n };\n\n states.keyframes = function(type, stream, state) {\n if (type == \"word\") { override = \"variable\"; return \"keyframes\"; }\n if (type == \"{\") return pushContext(state, stream, \"top\");\n return pass(type, stream, state);\n };\n\n states.at = function(type, stream, state) {\n if (type == \";\") return popContext(state);\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state);\n if (type == \"word\") override = \"tag\";\n else if (type == \"hash\") override = \"builtin\";\n return \"at\";\n };\n\n states.interpolation = function(type, stream, state) {\n if (type == \"}\") return popContext(state);\n if (type == \"{\" || type == \";\") return popAndPass(type, stream, state);\n if (type == \"word\") override = \"variable\";\n else if (type != \"variable\" && type != \"(\" && type != \")\") override = \"error\";\n return \"interpolation\";\n };\n\n return {\n startState: function(base) {\n return {tokenize: null,\n state: inline ? \"block\" : \"top\",\n stateArg: null,\n context: new Context(inline ? \"block\" : \"top\", base || 0, null)};\n },\n\n token: function(stream, state) {\n if (!state.tokenize && stream.eatSpace()) return null;\n var style = (state.tokenize || tokenBase)(stream, state);\n if (style && typeof style == \"object\") {\n type = style[1];\n style = style[0];\n }\n override = style;\n if (type != \"comment\")\n state.state = states[state.state](type, stream, state);\n return override;\n },\n\n indent: function(state, textAfter) {\n var cx = state.context, ch = textAfter && textAfter.charAt(0);\n var indent = cx.indent;\n if (cx.type == \"prop\" && (ch == \"}\" || ch == \")\")) cx = cx.prev;\n if (cx.prev) {\n if (ch == \"}\" && (cx.type == \"block\" || cx.type == \"top\" ||\n cx.type == \"interpolation\" || cx.type == \"restricted_atBlock\")) {\n // Resume indentation from parent context.\n cx = cx.prev;\n indent = cx.indent;\n } else if (ch == \")\" && (cx.type == \"parens\" || cx.type == \"atBlock_parens\") ||\n ch == \"{\" && (cx.type == \"at\" || cx.type == \"atBlock\")) {\n // Dedent relative to current context.\n indent = Math.max(0, cx.indent - indentUnit);\n }\n }\n return indent;\n },\n\n electricChars: \"}\",\n blockCommentStart: \"/*\",\n blockCommentEnd: \"*/\",\n blockCommentContinue: \" * \",\n lineComment: lineComment,\n fold: \"brace\"\n };\n});\n\n function keySet(array) {\n var keys = {};\n for (var i = 0; i < array.length; ++i) {\n keys[array[i].toLowerCase()] = true;\n }\n return keys;\n }\n\n var documentTypes_ = [\n \"domain\", \"regexp\", \"url\", \"url-prefix\"\n ], documentTypes = keySet(documentTypes_);\n\n var mediaTypes_ = [\n \"all\", \"aural\", \"braille\", \"handheld\", \"print\", \"projection\", \"screen\",\n \"tty\", \"tv\", \"embossed\"\n ], mediaTypes = keySet(mediaTypes_);\n\n var mediaFeatures_ = [\n \"width\", \"min-width\", \"max-width\", \"height\", \"min-height\", \"max-height\",\n \"device-width\", \"min-device-width\", \"max-device-width\", \"device-height\",\n \"min-device-height\", \"max-device-height\", \"aspect-ratio\",\n \"min-aspect-ratio\", \"max-aspect-ratio\", \"device-aspect-ratio\",\n \"min-device-aspect-ratio\", \"max-device-aspect-ratio\", \"color\", \"min-color\",\n \"max-color\", \"color-index\", \"min-color-index\", \"max-color-index\",\n \"monochrome\", \"min-monochrome\", \"max-monochrome\", \"resolution\",\n \"min-resolution\", \"max-resolution\", \"scan\", \"grid\", \"orientation\",\n \"device-pixel-ratio\", \"min-device-pixel-ratio\", \"max-device-pixel-ratio\",\n \"pointer\", \"any-pointer\", \"hover\", \"any-hover\", \"prefers-color-scheme\"\n ], mediaFeatures = keySet(mediaFeatures_);\n\n var mediaValueKeywords_ = [\n \"landscape\", \"portrait\", \"none\", \"coarse\", \"fine\", \"on-demand\", \"hover\",\n \"interlace\", \"progressive\",\n \"dark\", \"light\"\n ], mediaValueKeywords = keySet(mediaValueKeywords_);\n\n var propertyKeywords_ = [\n \"align-content\", \"align-items\", \"align-self\", \"alignment-adjust\",\n \"alignment-baseline\", \"all\", \"anchor-point\", \"animation\", \"animation-delay\",\n \"animation-direction\", \"animation-duration\", \"animation-fill-mode\",\n \"animation-iteration-count\", \"animation-name\", \"animation-play-state\",\n \"animation-timing-function\", \"appearance\", \"azimuth\", \"backdrop-filter\",\n \"backface-visibility\", \"background\", \"background-attachment\",\n \"background-blend-mode\", \"background-clip\", \"background-color\",\n \"background-image\", \"background-origin\", \"background-position\",\n \"background-position-x\", \"background-position-y\", \"background-repeat\",\n \"background-size\", \"baseline-shift\", \"binding\", \"bleed\", \"block-size\",\n \"bookmark-label\", \"bookmark-level\", \"bookmark-state\", \"bookmark-target\",\n \"border\", \"border-bottom\", \"border-bottom-color\", \"border-bottom-left-radius\",\n \"border-bottom-right-radius\", \"border-bottom-style\", \"border-bottom-width\",\n \"border-collapse\", \"border-color\", \"border-image\", \"border-image-outset\",\n \"border-image-repeat\", \"border-image-slice\", \"border-image-source\",\n \"border-image-width\", \"border-left\", \"border-left-color\", \"border-left-style\",\n \"border-left-width\", \"border-radius\", \"border-right\", \"border-right-color\",\n \"border-right-style\", \"border-right-width\", \"border-spacing\", \"border-style\",\n \"border-top\", \"border-top-color\", \"border-top-left-radius\",\n \"border-top-right-radius\", \"border-top-style\", \"border-top-width\",\n \"border-width\", \"bottom\", \"box-decoration-break\", \"box-shadow\", \"box-sizing\",\n \"break-after\", \"break-before\", \"break-inside\", \"caption-side\", \"caret-color\",\n \"clear\", \"clip\", \"color\", \"color-profile\", \"column-count\", \"column-fill\",\n \"column-gap\", \"column-rule\", \"column-rule-color\", \"column-rule-style\",\n \"column-rule-width\", \"column-span\", \"column-width\", \"columns\", \"contain\",\n \"content\", \"counter-increment\", \"counter-reset\", \"crop\", \"cue\", \"cue-after\",\n \"cue-before\", \"cursor\", \"direction\", \"display\", \"dominant-baseline\",\n \"drop-initial-after-adjust\", \"drop-initial-after-align\",\n \"drop-initial-before-adjust\", \"drop-initial-before-align\", \"drop-initial-size\",\n \"drop-initial-value\", \"elevation\", \"empty-cells\", \"fit\", \"fit-content\", \"fit-position\",\n \"flex\", \"flex-basis\", \"flex-direction\", \"flex-flow\", \"flex-grow\",\n \"flex-shrink\", \"flex-wrap\", \"float\", \"float-offset\", \"flow-from\", \"flow-into\",\n \"font\", \"font-family\", \"font-feature-settings\", \"font-kerning\",\n \"font-language-override\", \"font-optical-sizing\", \"font-size\",\n \"font-size-adjust\", \"font-stretch\", \"font-style\", \"font-synthesis\",\n \"font-variant\", \"font-variant-alternates\", \"font-variant-caps\",\n \"font-variant-east-asian\", \"font-variant-ligatures\", \"font-variant-numeric\",\n \"font-variant-position\", \"font-variation-settings\", \"font-weight\", \"gap\",\n \"grid\", \"grid-area\", \"grid-auto-columns\", \"grid-auto-flow\", \"grid-auto-rows\",\n \"grid-column\", \"grid-column-end\", \"grid-column-gap\", \"grid-column-start\",\n \"grid-gap\", \"grid-row\", \"grid-row-end\", \"grid-row-gap\", \"grid-row-start\",\n \"grid-template\", \"grid-template-areas\", \"grid-template-columns\",\n \"grid-template-rows\", \"hanging-punctuation\", \"height\", \"hyphens\", \"icon\",\n \"image-orientation\", \"image-rendering\", \"image-resolution\", \"inline-box-align\",\n \"inset\", \"inset-block\", \"inset-block-end\", \"inset-block-start\", \"inset-inline\",\n \"inset-inline-end\", \"inset-inline-start\", \"isolation\", \"justify-content\",\n \"justify-items\", \"justify-self\", \"left\", \"letter-spacing\", \"line-break\",\n \"line-height\", \"line-height-step\", \"line-stacking\", \"line-stacking-ruby\",\n \"line-stacking-shift\", \"line-stacking-strategy\", \"list-style\",\n \"list-style-image\", \"list-style-position\", \"list-style-type\", \"margin\",\n \"margin-bottom\", \"margin-left\", \"margin-right\", \"margin-top\", \"marks\",\n \"marquee-direction\", \"marquee-loop\", \"marquee-play-count\", \"marquee-speed\",\n \"marquee-style\", \"mask-clip\", \"mask-composite\", \"mask-image\", \"mask-mode\",\n \"mask-origin\", \"mask-position\", \"mask-repeat\", \"mask-size\",\"mask-type\",\n \"max-block-size\", \"max-height\", \"max-inline-size\",\n \"max-width\", \"min-block-size\", \"min-height\", \"min-inline-size\", \"min-width\",\n \"mix-blend-mode\", \"move-to\", \"nav-down\", \"nav-index\", \"nav-left\", \"nav-right\",\n \"nav-up\", \"object-fit\", \"object-position\", \"offset\", \"offset-anchor\",\n \"offset-distance\", \"offset-path\", \"offset-position\", \"offset-rotate\",\n \"opacity\", \"order\", \"orphans\", \"outline\", \"outline-color\", \"outline-offset\",\n \"outline-style\", \"outline-width\", \"overflow\", \"overflow-style\",\n \"overflow-wrap\", \"overflow-x\", \"overflow-y\", \"padding\", \"padding-bottom\",\n \"padding-left\", \"padding-right\", \"padding-top\", \"page\", \"page-break-after\",\n \"page-break-before\", \"page-break-inside\", \"page-policy\", \"pause\",\n \"pause-after\", \"pause-before\", \"perspective\", \"perspective-origin\", \"pitch\",\n \"pitch-range\", \"place-content\", \"place-items\", \"place-self\", \"play-during\",\n \"position\", \"presentation-level\", \"punctuation-trim\", \"quotes\",\n \"region-break-after\", \"region-break-before\", \"region-break-inside\",\n \"region-fragment\", \"rendering-intent\", \"resize\", \"rest\", \"rest-after\",\n \"rest-before\", \"richness\", \"right\", \"rotate\", \"rotation\", \"rotation-point\",\n \"row-gap\", \"ruby-align\", \"ruby-overhang\", \"ruby-position\", \"ruby-span\",\n \"scale\", \"scroll-behavior\", \"scroll-margin\", \"scroll-margin-block\",\n \"scroll-margin-block-end\", \"scroll-margin-block-start\", \"scroll-margin-bottom\",\n \"scroll-margin-inline\", \"scroll-margin-inline-end\",\n \"scroll-margin-inline-start\", \"scroll-margin-left\", \"scroll-margin-right\",\n \"scroll-margin-top\", \"scroll-padding\", \"scroll-padding-block\",\n \"scroll-padding-block-end\", \"scroll-padding-block-start\",\n \"scroll-padding-bottom\", \"scroll-padding-inline\", \"scroll-padding-inline-end\",\n \"scroll-padding-inline-start\", \"scroll-padding-left\", \"scroll-padding-right\",\n \"scroll-padding-top\", \"scroll-snap-align\", \"scroll-snap-type\",\n \"shape-image-threshold\", \"shape-inside\", \"shape-margin\", \"shape-outside\",\n \"size\", \"speak\", \"speak-as\", \"speak-header\", \"speak-numeral\",\n \"speak-punctuation\", \"speech-rate\", \"stress\", \"string-set\", \"tab-size\",\n \"table-layout\", \"target\", \"target-name\", \"target-new\", \"target-position\",\n \"text-align\", \"text-align-last\", \"text-combine-upright\", \"text-decoration\",\n \"text-decoration-color\", \"text-decoration-line\", \"text-decoration-skip\",\n \"text-decoration-skip-ink\", \"text-decoration-style\", \"text-emphasis\",\n \"text-emphasis-color\", \"text-emphasis-position\", \"text-emphasis-style\",\n \"text-height\", \"text-indent\", \"text-justify\", \"text-orientation\",\n \"text-outline\", \"text-overflow\", \"text-rendering\", \"text-shadow\",\n \"text-size-adjust\", \"text-space-collapse\", \"text-transform\",\n \"text-underline-position\", \"text-wrap\", \"top\", \"touch-action\", \"transform\", \"transform-origin\",\n \"transform-style\", \"transition\", \"transition-delay\", \"transition-duration\",\n \"transition-property\", \"transition-timing-function\", \"translate\",\n \"unicode-bidi\", \"user-select\", \"vertical-align\", \"visibility\", \"voice-balance\",\n \"voice-duration\", \"voice-family\", \"voice-pitch\", \"voice-range\", \"voice-rate\",\n \"voice-stress\", \"voice-volume\", \"volume\", \"white-space\", \"widows\", \"width\",\n \"will-change\", \"word-break\", \"word-spacing\", \"word-wrap\", \"writing-mode\", \"z-index\",\n // SVG-specific\n \"clip-path\", \"clip-rule\", \"mask\", \"enable-background\", \"filter\", \"flood-color\",\n \"flood-opacity\", \"lighting-color\", \"stop-color\", \"stop-opacity\", \"pointer-events\",\n \"color-interpolation\", \"color-interpolation-filters\",\n \"color-rendering\", \"fill\", \"fill-opacity\", \"fill-rule\", \"image-rendering\",\n \"marker\", \"marker-end\", \"marker-mid\", \"marker-start\", \"paint-order\", \"shape-rendering\", \"stroke\",\n \"stroke-dasharray\", \"stroke-dashoffset\", \"stroke-linecap\", \"stroke-linejoin\",\n \"stroke-miterlimit\", \"stroke-opacity\", \"stroke-width\", \"text-rendering\",\n \"baseline-shift\", \"dominant-baseline\", \"glyph-orientation-horizontal\",\n \"glyph-orientation-vertical\", \"text-anchor\", \"writing-mode\",\n ], propertyKeywords = keySet(propertyKeywords_);\n\n var nonStandardPropertyKeywords_ = [\n \"accent-color\", \"aspect-ratio\", \"border-block\", \"border-block-color\", \"border-block-end\",\n \"border-block-end-color\", \"border-block-end-style\", \"border-block-end-width\",\n \"border-block-start\", \"border-block-start-color\", \"border-block-start-style\",\n \"border-block-start-width\", \"border-block-style\", \"border-block-width\",\n \"border-inline\", \"border-inline-color\", \"border-inline-end\",\n \"border-inline-end-color\", \"border-inline-end-style\",\n \"border-inline-end-width\", \"border-inline-start\", \"border-inline-start-color\",\n \"border-inline-start-style\", \"border-inline-start-width\",\n \"border-inline-style\", \"border-inline-width\", \"content-visibility\", \"margin-block\",\n \"margin-block-end\", \"margin-block-start\", \"margin-inline\", \"margin-inline-end\",\n \"margin-inline-start\", \"overflow-anchor\", \"overscroll-behavior\", \"padding-block\", \"padding-block-end\",\n \"padding-block-start\", \"padding-inline\", \"padding-inline-end\",\n \"padding-inline-start\", \"scroll-snap-stop\", \"scrollbar-3d-light-color\",\n \"scrollbar-arrow-color\", \"scrollbar-base-color\", \"scrollbar-dark-shadow-color\",\n \"scrollbar-face-color\", \"scrollbar-highlight-color\", \"scrollbar-shadow-color\",\n \"scrollbar-track-color\", \"searchfield-cancel-button\", \"searchfield-decoration\",\n \"searchfield-results-button\", \"searchfield-results-decoration\", \"shape-inside\", \"zoom\"\n ], nonStandardPropertyKeywords = keySet(nonStandardPropertyKeywords_);\n\n var fontProperties_ = [\n \"font-display\", \"font-family\", \"src\", \"unicode-range\", \"font-variant\",\n \"font-feature-settings\", \"font-stretch\", \"font-weight\", \"font-style\"\n ], fontProperties = keySet(fontProperties_);\n\n var counterDescriptors_ = [\n \"additive-symbols\", \"fallback\", \"negative\", \"pad\", \"prefix\", \"range\",\n \"speak-as\", \"suffix\", \"symbols\", \"system\"\n ], counterDescriptors = keySet(counterDescriptors_);\n\n var colorKeywords_ = [\n \"aliceblue\", \"antiquewhite\", \"aqua\", \"aquamarine\", \"azure\", \"beige\",\n \"bisque\", \"black\", \"blanchedalmond\", \"blue\", \"blueviolet\", \"brown\",\n \"burlywood\", \"cadetblue\", \"chartreuse\", \"chocolate\", \"coral\", \"cornflowerblue\",\n \"cornsilk\", \"crimson\", \"cyan\", \"darkblue\", \"darkcyan\", \"darkgoldenrod\",\n \"darkgray\", \"darkgreen\", \"darkgrey\", \"darkkhaki\", \"darkmagenta\", \"darkolivegreen\",\n \"darkorange\", \"darkorchid\", \"darkred\", \"darksalmon\", \"darkseagreen\",\n \"darkslateblue\", \"darkslategray\", \"darkslategrey\", \"darkturquoise\", \"darkviolet\",\n \"deeppink\", \"deepskyblue\", \"dimgray\", \"dimgrey\", \"dodgerblue\", \"firebrick\",\n \"floralwhite\", \"forestgreen\", \"fuchsia\", \"gainsboro\", \"ghostwhite\",\n \"gold\", \"goldenrod\", \"gray\", \"grey\", \"green\", \"greenyellow\", \"honeydew\",\n \"hotpink\", \"indianred\", \"indigo\", \"ivory\", \"khaki\", \"lavender\",\n \"lavenderblush\", \"lawngreen\", \"lemonchiffon\", \"lightblue\", \"lightcoral\",\n \"lightcyan\", \"lightgoldenrodyellow\", \"lightgray\", \"lightgreen\", \"lightgrey\", \"lightpink\",\n \"lightsalmon\", \"lightseagreen\", \"lightskyblue\", \"lightslategray\", \"lightslategrey\",\n \"lightsteelblue\", \"lightyellow\", \"lime\", \"limegreen\", \"linen\", \"magenta\",\n \"maroon\", \"mediumaquamarine\", \"mediumblue\", \"mediumorchid\", \"mediumpurple\",\n \"mediumseagreen\", \"mediumslateblue\", \"mediumspringgreen\", \"mediumturquoise\",\n \"mediumvioletred\", \"midnightblue\", \"mintcream\", \"mistyrose\", \"moccasin\",\n \"navajowhite\", \"navy\", \"oldlace\", \"olive\", \"olivedrab\", \"orange\", \"orangered\",\n \"orchid\", \"palegoldenrod\", \"palegreen\", \"paleturquoise\", \"palevioletred\",\n \"papayawhip\", \"peachpuff\", \"peru\", \"pink\", \"plum\", \"powderblue\",\n \"purple\", \"rebeccapurple\", \"red\", \"rosybrown\", \"royalblue\", \"saddlebrown\",\n \"salmon\", \"sandybrown\", \"seagreen\", \"seashell\", \"sienna\", \"silver\", \"skyblue\",\n \"slateblue\", \"slategray\", \"slategrey\", \"snow\", \"springgreen\", \"steelblue\", \"tan\",\n \"teal\", \"thistle\", \"tomato\", \"turquoise\", \"violet\", \"wheat\", \"white\",\n \"whitesmoke\", \"yellow\", \"yellowgreen\"\n ], colorKeywords = keySet(colorKeywords_);\n\n var valueKeywords_ = [\n \"above\", \"absolute\", \"activeborder\", \"additive\", \"activecaption\", \"afar\",\n \"after-white-space\", \"ahead\", \"alias\", \"all\", \"all-scroll\", \"alphabetic\", \"alternate\",\n \"always\", \"amharic\", \"amharic-abegede\", \"antialiased\", \"appworkspace\",\n \"arabic-indic\", \"armenian\", \"asterisks\", \"attr\", \"auto\", \"auto-flow\", \"avoid\", \"avoid-column\", \"avoid-page\",\n \"avoid-region\", \"axis-pan\", \"background\", \"backwards\", \"baseline\", \"below\", \"bidi-override\", \"binary\",\n \"bengali\", \"blink\", \"block\", \"block-axis\", \"blur\", \"bold\", \"bolder\", \"border\", \"border-box\",\n \"both\", \"bottom\", \"break\", \"break-all\", \"break-word\", \"brightness\", \"bullets\", \"button\", \"button-bevel\",\n \"buttonface\", \"buttonhighlight\", \"buttonshadow\", \"buttontext\", \"calc\", \"cambodian\",\n \"capitalize\", \"caps-lock-indicator\", \"caption\", \"captiontext\", \"caret\",\n \"cell\", \"center\", \"checkbox\", \"circle\", \"cjk-decimal\", \"cjk-earthly-branch\",\n \"cjk-heavenly-stem\", \"cjk-ideographic\", \"clear\", \"clip\", \"close-quote\",\n \"col-resize\", \"collapse\", \"color\", \"color-burn\", \"color-dodge\", \"column\", \"column-reverse\",\n \"compact\", \"condensed\", \"contain\", \"content\", \"contents\",\n \"content-box\", \"context-menu\", \"continuous\", \"contrast\", \"copy\", \"counter\", \"counters\", \"cover\", \"crop\",\n \"cross\", \"crosshair\", \"cubic-bezier\", \"currentcolor\", \"cursive\", \"cyclic\", \"darken\", \"dashed\", \"decimal\",\n \"decimal-leading-zero\", \"default\", \"default-button\", \"dense\", \"destination-atop\",\n \"destination-in\", \"destination-out\", \"destination-over\", \"devanagari\", \"difference\",\n \"disc\", \"discard\", \"disclosure-closed\", \"disclosure-open\", \"document\",\n \"dot-dash\", \"dot-dot-dash\",\n \"dotted\", \"double\", \"down\", \"drop-shadow\", \"e-resize\", \"ease\", \"ease-in\", \"ease-in-out\", \"ease-out\",\n \"element\", \"ellipse\", \"ellipsis\", \"embed\", \"end\", \"ethiopic\", \"ethiopic-abegede\",\n \"ethiopic-abegede-am-et\", \"ethiopic-abegede-gez\", \"ethiopic-abegede-ti-er\",\n \"ethiopic-abegede-ti-et\", \"ethiopic-halehame-aa-er\",\n \"ethiopic-halehame-aa-et\", \"ethiopic-halehame-am-et\",\n \"ethiopic-halehame-gez\", \"ethiopic-halehame-om-et\",\n \"ethiopic-halehame-sid-et\", \"ethiopic-halehame-so-et\",\n \"ethiopic-halehame-ti-er\", \"ethiopic-halehame-ti-et\", \"ethiopic-halehame-tig\",\n \"ethiopic-numeric\", \"ew-resize\", \"exclusion\", \"expanded\", \"extends\", \"extra-condensed\",\n \"extra-expanded\", \"fantasy\", \"fast\", \"fill\", \"fill-box\", \"fixed\", \"flat\", \"flex\", \"flex-end\", \"flex-start\", \"footnotes\",\n \"forwards\", \"from\", \"geometricPrecision\", \"georgian\", \"grayscale\", \"graytext\", \"grid\", \"groove\",\n \"gujarati\", \"gurmukhi\", \"hand\", \"hangul\", \"hangul-consonant\", \"hard-light\", \"hebrew\",\n \"help\", \"hidden\", \"hide\", \"higher\", \"highlight\", \"highlighttext\",\n \"hiragana\", \"hiragana-iroha\", \"horizontal\", \"hsl\", \"hsla\", \"hue\", \"hue-rotate\", \"icon\", \"ignore\",\n \"inactiveborder\", \"inactivecaption\", \"inactivecaptiontext\", \"infinite\",\n \"infobackground\", \"infotext\", \"inherit\", \"initial\", \"inline\", \"inline-axis\",\n \"inline-block\", \"inline-flex\", \"inline-grid\", \"inline-table\", \"inset\", \"inside\", \"intrinsic\", \"invert\",\n \"italic\", \"japanese-formal\", \"japanese-informal\", \"justify\", \"kannada\",\n \"katakana\", \"katakana-iroha\", \"keep-all\", \"khmer\",\n \"korean-hangul-formal\", \"korean-hanja-formal\", \"korean-hanja-informal\",\n \"landscape\", \"lao\", \"large\", \"larger\", \"left\", \"level\", \"lighter\", \"lighten\",\n \"line-through\", \"linear\", \"linear-gradient\", \"lines\", \"list-item\", \"listbox\", \"listitem\",\n \"local\", \"logical\", \"loud\", \"lower\", \"lower-alpha\", \"lower-armenian\",\n \"lower-greek\", \"lower-hexadecimal\", \"lower-latin\", \"lower-norwegian\",\n \"lower-roman\", \"lowercase\", \"ltr\", \"luminosity\", \"malayalam\", \"manipulation\", \"match\", \"matrix\", \"matrix3d\",\n \"media-controls-background\", \"media-current-time-display\",\n \"media-fullscreen-button\", \"media-mute-button\", \"media-play-button\",\n \"media-return-to-realtime-button\", \"media-rewind-button\",\n \"media-seek-back-button\", \"media-seek-forward-button\", \"media-slider\",\n \"media-sliderthumb\", \"media-time-remaining-display\", \"media-volume-slider\",\n \"media-volume-slider-container\", \"media-volume-sliderthumb\", \"medium\",\n \"menu\", \"menulist\", \"menulist-button\", \"menulist-text\",\n \"menulist-textfield\", \"menutext\", \"message-box\", \"middle\", \"min-intrinsic\",\n \"mix\", \"mongolian\", \"monospace\", \"move\", \"multiple\", \"multiple_mask_images\", \"multiply\", \"myanmar\", \"n-resize\",\n \"narrower\", \"ne-resize\", \"nesw-resize\", \"no-close-quote\", \"no-drop\",\n \"no-open-quote\", \"no-repeat\", \"none\", \"normal\", \"not-allowed\", \"nowrap\",\n \"ns-resize\", \"numbers\", \"numeric\", \"nw-resize\", \"nwse-resize\", \"oblique\", \"octal\", \"opacity\", \"open-quote\",\n \"optimizeLegibility\", \"optimizeSpeed\", \"oriya\", \"oromo\", \"outset\",\n \"outside\", \"outside-shape\", \"overlay\", \"overline\", \"padding\", \"padding-box\",\n \"painted\", \"page\", \"paused\", \"persian\", \"perspective\", \"pinch-zoom\", \"plus-darker\", \"plus-lighter\",\n \"pointer\", \"polygon\", \"portrait\", \"pre\", \"pre-line\", \"pre-wrap\", \"preserve-3d\",\n \"progress\", \"push-button\", \"radial-gradient\", \"radio\", \"read-only\",\n \"read-write\", \"read-write-plaintext-only\", \"rectangle\", \"region\",\n \"relative\", \"repeat\", \"repeating-linear-gradient\",\n \"repeating-radial-gradient\", \"repeat-x\", \"repeat-y\", \"reset\", \"reverse\",\n \"rgb\", \"rgba\", \"ridge\", \"right\", \"rotate\", \"rotate3d\", \"rotateX\", \"rotateY\",\n \"rotateZ\", \"round\", \"row\", \"row-resize\", \"row-reverse\", \"rtl\", \"run-in\", \"running\",\n \"s-resize\", \"sans-serif\", \"saturate\", \"saturation\", \"scale\", \"scale3d\", \"scaleX\", \"scaleY\", \"scaleZ\", \"screen\",\n \"scroll\", \"scrollbar\", \"scroll-position\", \"se-resize\", \"searchfield\",\n \"searchfield-cancel-button\", \"searchfield-decoration\",\n \"searchfield-results-button\", \"searchfield-results-decoration\", \"self-start\", \"self-end\",\n \"semi-condensed\", \"semi-expanded\", \"separate\", \"sepia\", \"serif\", \"show\", \"sidama\",\n \"simp-chinese-formal\", \"simp-chinese-informal\", \"single\",\n \"skew\", \"skewX\", \"skewY\", \"skip-white-space\", \"slide\", \"slider-horizontal\",\n \"slider-vertical\", \"sliderthumb-horizontal\", \"sliderthumb-vertical\", \"slow\",\n \"small\", \"small-caps\", \"small-caption\", \"smaller\", \"soft-light\", \"solid\", \"somali\",\n \"source-atop\", \"source-in\", \"source-out\", \"source-over\", \"space\", \"space-around\", \"space-between\", \"space-evenly\", \"spell-out\", \"square\",\n \"square-button\", \"start\", \"static\", \"status-bar\", \"stretch\", \"stroke\", \"stroke-box\", \"sub\",\n \"subpixel-antialiased\", \"svg_masks\", \"super\", \"sw-resize\", \"symbolic\", \"symbols\", \"system-ui\", \"table\",\n \"table-caption\", \"table-cell\", \"table-column\", \"table-column-group\",\n \"table-footer-group\", \"table-header-group\", \"table-row\", \"table-row-group\",\n \"tamil\",\n \"telugu\", \"text\", \"text-bottom\", \"text-top\", \"textarea\", \"textfield\", \"thai\",\n \"thick\", \"thin\", \"threeddarkshadow\", \"threedface\", \"threedhighlight\",\n \"threedlightshadow\", \"threedshadow\", \"tibetan\", \"tigre\", \"tigrinya-er\",\n \"tigrinya-er-abegede\", \"tigrinya-et\", \"tigrinya-et-abegede\", \"to\", \"top\",\n \"trad-chinese-formal\", \"trad-chinese-informal\", \"transform\",\n \"translate\", \"translate3d\", \"translateX\", \"translateY\", \"translateZ\",\n \"transparent\", \"ultra-condensed\", \"ultra-expanded\", \"underline\", \"unidirectional-pan\", \"unset\", \"up\",\n \"upper-alpha\", \"upper-armenian\", \"upper-greek\", \"upper-hexadecimal\",\n \"upper-latin\", \"upper-norwegian\", \"upper-roman\", \"uppercase\", \"urdu\", \"url\",\n \"var\", \"vertical\", \"vertical-text\", \"view-box\", \"visible\", \"visibleFill\", \"visiblePainted\",\n \"visibleStroke\", \"visual\", \"w-resize\", \"wait\", \"wave\", \"wider\",\n \"window\", \"windowframe\", \"windowtext\", \"words\", \"wrap\", \"wrap-reverse\", \"x-large\", \"x-small\", \"xor\",\n \"xx-large\", \"xx-small\"\n ], valueKeywords = keySet(valueKeywords_);\n\n var allWords = documentTypes_.concat(mediaTypes_).concat(mediaFeatures_).concat(mediaValueKeywords_)\n .concat(propertyKeywords_).concat(nonStandardPropertyKeywords_).concat(colorKeywords_)\n .concat(valueKeywords_);\n CodeMirror.registerHelper(\"hintWords\", \"css\", allWords);\n\n function tokenCComment(stream, state) {\n var maybeEnd = false, ch;\n while ((ch = stream.next()) != null) {\n if (maybeEnd && ch == \"/\") {\n state.tokenize = null;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return [\"comment\", \"comment\"];\n }\n\n CodeMirror.defineMIME(\"text/css\", {\n documentTypes: documentTypes,\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n fontProperties: fontProperties,\n counterDescriptors: counterDescriptors,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n tokenHooks: {\n \"/\": function(stream, state) {\n if (!stream.eat(\"*\")) return false;\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n }\n },\n name: \"css\"\n });\n\n CodeMirror.defineMIME(\"text/x-scss\", {\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n fontProperties: fontProperties,\n allowNested: true,\n lineComment: \"//\",\n tokenHooks: {\n \"/\": function(stream, state) {\n if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return [\"comment\", \"comment\"];\n } else if (stream.eat(\"*\")) {\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n } else {\n return [\"operator\", \"operator\"];\n }\n },\n \":\": function(stream) {\n if (stream.match(/^\\s*\\{/, false))\n return [null, null]\n return false;\n },\n \"$\": function(stream) {\n stream.match(/^[\\w-]+/);\n if (stream.match(/^\\s*:/, false))\n return [\"variable-2\", \"variable-definition\"];\n return [\"variable-2\", \"variable\"];\n },\n \"#\": function(stream) {\n if (!stream.eat(\"{\")) return false;\n return [null, \"interpolation\"];\n }\n },\n name: \"css\",\n helperType: \"scss\"\n });\n\n CodeMirror.defineMIME(\"text/x-less\", {\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n fontProperties: fontProperties,\n allowNested: true,\n lineComment: \"//\",\n tokenHooks: {\n \"/\": function(stream, state) {\n if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return [\"comment\", \"comment\"];\n } else if (stream.eat(\"*\")) {\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n } else {\n return [\"operator\", \"operator\"];\n }\n },\n \"@\": function(stream) {\n if (stream.eat(\"{\")) return [null, \"interpolation\"];\n if (stream.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\\b/i, false)) return false;\n stream.eatWhile(/[\\w\\\\\\-]/);\n if (stream.match(/^\\s*:/, false))\n return [\"variable-2\", \"variable-definition\"];\n return [\"variable-2\", \"variable\"];\n },\n \"&\": function() {\n return [\"atom\", \"atom\"];\n }\n },\n name: \"css\",\n helperType: \"less\"\n });\n\n CodeMirror.defineMIME(\"text/x-gss\", {\n documentTypes: documentTypes,\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n fontProperties: fontProperties,\n counterDescriptors: counterDescriptors,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n supportsAtComponent: true,\n tokenHooks: {\n \"/\": function(stream, state) {\n if (!stream.eat(\"*\")) return false;\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n }\n },\n name: \"css\",\n helperType: \"gss\"\n });\n\n});\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = convertNodeToElement;\n\nvar _elementTypes = require('./elementTypes');\n\nvar _elementTypes2 = _interopRequireDefault(_elementTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Converts a htmlparser2 node to a React element\n *\n * @param {Object} node The htmlparser2 node to convert\n * @param {Number} index The index of the current node\n * @param {Function} transform Transform function to apply to children of the node\n * @returns {React.Element}\n */\nfunction convertNodeToElement(node, index, transform) {\n return _elementTypes2.default[node.type](node, index, transform);\n}","var Tokenizer = require(\"./Tokenizer.js\");\n\n/*\n\tOptions:\n\n\txmlMode: Disables the special behavior for script/style tags (false by default)\n\tlowerCaseAttributeNames: call .toLowerCase for each attribute name (true if xmlMode is `false`)\n\tlowerCaseTags: call .toLowerCase for each tag name (true if xmlMode is `false`)\n*/\n\n/*\n\tCallbacks:\n\n\toncdataend,\n\toncdatastart,\n\tonclosetag,\n\toncomment,\n\toncommentend,\n\tonerror,\n\tonopentag,\n\tonprocessinginstruction,\n\tonreset,\n\tontext\n*/\n\nvar formTags = {\n input: true,\n option: true,\n optgroup: true,\n select: true,\n button: true,\n datalist: true,\n textarea: true\n};\n\nvar openImpliesClose = {\n tr: { tr: true, th: true, td: true },\n th: { th: true },\n td: { thead: true, th: true, td: true },\n body: { head: true, link: true, script: true },\n li: { li: true },\n p: { p: true },\n h1: { p: true },\n h2: { p: true },\n h3: { p: true },\n h4: { p: true },\n h5: { p: true },\n h6: { p: true },\n select: formTags,\n input: formTags,\n output: formTags,\n button: formTags,\n datalist: formTags,\n textarea: formTags,\n option: { option: true },\n optgroup: { optgroup: true }\n};\n\nvar voidElements = {\n __proto__: null,\n area: true,\n base: true,\n basefont: true,\n br: true,\n col: true,\n command: true,\n embed: true,\n frame: true,\n hr: true,\n img: true,\n input: true,\n isindex: true,\n keygen: true,\n link: true,\n meta: true,\n param: true,\n source: true,\n track: true,\n wbr: true\n};\n\nvar foreignContextElements = {\n __proto__: null,\n math: true,\n svg: true\n};\nvar htmlIntegrationElements = {\n __proto__: null,\n mi: true,\n mo: true,\n mn: true,\n ms: true,\n mtext: true,\n \"annotation-xml\": true,\n foreignObject: true,\n desc: true,\n title: true\n};\n\nvar re_nameEnd = /\\s|\\//;\n\nfunction Parser(cbs, options) {\n this._options = options || {};\n this._cbs = cbs || {};\n\n this._tagname = \"\";\n this._attribname = \"\";\n this._attribvalue = \"\";\n this._attribs = null;\n this._stack = [];\n this._foreignContext = [];\n\n this.startIndex = 0;\n this.endIndex = null;\n\n this._lowerCaseTagNames =\n \"lowerCaseTags\" in this._options\n ? !!this._options.lowerCaseTags\n : !this._options.xmlMode;\n this._lowerCaseAttributeNames =\n \"lowerCaseAttributeNames\" in this._options\n ? !!this._options.lowerCaseAttributeNames\n : !this._options.xmlMode;\n\n if (this._options.Tokenizer) {\n Tokenizer = this._options.Tokenizer;\n }\n this._tokenizer = new Tokenizer(this._options, this);\n\n if (this._cbs.onparserinit) this._cbs.onparserinit(this);\n}\n\nrequire(\"inherits\")(Parser, require(\"events\").EventEmitter);\n\nParser.prototype._updatePosition = function(initialOffset) {\n if (this.endIndex === null) {\n if (this._tokenizer._sectionStart <= initialOffset) {\n this.startIndex = 0;\n } else {\n this.startIndex = this._tokenizer._sectionStart - initialOffset;\n }\n } else this.startIndex = this.endIndex + 1;\n this.endIndex = this._tokenizer.getAbsoluteIndex();\n};\n\n//Tokenizer event handlers\nParser.prototype.ontext = function(data) {\n this._updatePosition(1);\n this.endIndex--;\n\n if (this._cbs.ontext) this._cbs.ontext(data);\n};\n\nParser.prototype.onopentagname = function(name) {\n if (this._lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n\n this._tagname = name;\n\n if (!this._options.xmlMode && name in openImpliesClose) {\n for (\n var el;\n (el = this._stack[this._stack.length - 1]) in\n openImpliesClose[name];\n this.onclosetag(el)\n );\n }\n\n if (this._options.xmlMode || !(name in voidElements)) {\n this._stack.push(name);\n if (name in foreignContextElements) this._foreignContext.push(true);\n else if (name in htmlIntegrationElements)\n this._foreignContext.push(false);\n }\n\n if (this._cbs.onopentagname) this._cbs.onopentagname(name);\n if (this._cbs.onopentag) this._attribs = {};\n};\n\nParser.prototype.onopentagend = function() {\n this._updatePosition(1);\n\n if (this._attribs) {\n if (this._cbs.onopentag)\n this._cbs.onopentag(this._tagname, this._attribs);\n this._attribs = null;\n }\n\n if (\n !this._options.xmlMode &&\n this._cbs.onclosetag &&\n this._tagname in voidElements\n ) {\n this._cbs.onclosetag(this._tagname);\n }\n\n this._tagname = \"\";\n};\n\nParser.prototype.onclosetag = function(name) {\n this._updatePosition(1);\n\n if (this._lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n \n if (name in foreignContextElements || name in htmlIntegrationElements) {\n this._foreignContext.pop();\n }\n\n if (\n this._stack.length &&\n (!(name in voidElements) || this._options.xmlMode)\n ) {\n var pos = this._stack.lastIndexOf(name);\n if (pos !== -1) {\n if (this._cbs.onclosetag) {\n pos = this._stack.length - pos;\n while (pos--) this._cbs.onclosetag(this._stack.pop());\n } else this._stack.length = pos;\n } else if (name === \"p\" && !this._options.xmlMode) {\n this.onopentagname(name);\n this._closeCurrentTag();\n }\n } else if (!this._options.xmlMode && (name === \"br\" || name === \"p\")) {\n this.onopentagname(name);\n this._closeCurrentTag();\n }\n};\n\nParser.prototype.onselfclosingtag = function() {\n if (\n this._options.xmlMode ||\n this._options.recognizeSelfClosing ||\n this._foreignContext[this._foreignContext.length - 1]\n ) {\n this._closeCurrentTag();\n } else {\n this.onopentagend();\n }\n};\n\nParser.prototype._closeCurrentTag = function() {\n var name = this._tagname;\n\n this.onopentagend();\n\n //self-closing tags will be on the top of the stack\n //(cheaper check than in onclosetag)\n if (this._stack[this._stack.length - 1] === name) {\n if (this._cbs.onclosetag) {\n this._cbs.onclosetag(name);\n }\n this._stack.pop();\n \n }\n};\n\nParser.prototype.onattribname = function(name) {\n if (this._lowerCaseAttributeNames) {\n name = name.toLowerCase();\n }\n this._attribname = name;\n};\n\nParser.prototype.onattribdata = function(value) {\n this._attribvalue += value;\n};\n\nParser.prototype.onattribend = function() {\n if (this._cbs.onattribute)\n this._cbs.onattribute(this._attribname, this._attribvalue);\n if (\n this._attribs &&\n !Object.prototype.hasOwnProperty.call(this._attribs, this._attribname)\n ) {\n this._attribs[this._attribname] = this._attribvalue;\n }\n this._attribname = \"\";\n this._attribvalue = \"\";\n};\n\nParser.prototype._getInstructionName = function(value) {\n var idx = value.search(re_nameEnd),\n name = idx < 0 ? value : value.substr(0, idx);\n\n if (this._lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n\n return name;\n};\n\nParser.prototype.ondeclaration = function(value) {\n if (this._cbs.onprocessinginstruction) {\n var name = this._getInstructionName(value);\n this._cbs.onprocessinginstruction(\"!\" + name, \"!\" + value);\n }\n};\n\nParser.prototype.onprocessinginstruction = function(value) {\n if (this._cbs.onprocessinginstruction) {\n var name = this._getInstructionName(value);\n this._cbs.onprocessinginstruction(\"?\" + name, \"?\" + value);\n }\n};\n\nParser.prototype.oncomment = function(value) {\n this._updatePosition(4);\n\n if (this._cbs.oncomment) this._cbs.oncomment(value);\n if (this._cbs.oncommentend) this._cbs.oncommentend();\n};\n\nParser.prototype.oncdata = function(value) {\n this._updatePosition(1);\n\n if (this._options.xmlMode || this._options.recognizeCDATA) {\n if (this._cbs.oncdatastart) this._cbs.oncdatastart();\n if (this._cbs.ontext) this._cbs.ontext(value);\n if (this._cbs.oncdataend) this._cbs.oncdataend();\n } else {\n this.oncomment(\"[CDATA[\" + value + \"]]\");\n }\n};\n\nParser.prototype.onerror = function(err) {\n if (this._cbs.onerror) this._cbs.onerror(err);\n};\n\nParser.prototype.onend = function() {\n if (this._cbs.onclosetag) {\n for (\n var i = this._stack.length;\n i > 0;\n this._cbs.onclosetag(this._stack[--i])\n );\n }\n if (this._cbs.onend) this._cbs.onend();\n};\n\n//Resets the parser to a blank state, ready to parse a new HTML document\nParser.prototype.reset = function() {\n if (this._cbs.onreset) this._cbs.onreset();\n this._tokenizer.reset();\n\n this._tagname = \"\";\n this._attribname = \"\";\n this._attribs = null;\n this._stack = [];\n\n if (this._cbs.onparserinit) this._cbs.onparserinit(this);\n};\n\n//Parses a complete HTML document and pushes it to the handler\nParser.prototype.parseComplete = function(data) {\n this.reset();\n this.end(data);\n};\n\nParser.prototype.write = function(chunk) {\n this._tokenizer.write(chunk);\n};\n\nParser.prototype.end = function(chunk) {\n this._tokenizer.end(chunk);\n};\n\nParser.prototype.pause = function() {\n this._tokenizer.pause();\n};\n\nParser.prototype.resume = function() {\n this._tokenizer.resume();\n};\n\n//alias for backwards compat\nParser.prototype.parseChunk = Parser.prototype.write;\nParser.prototype.done = Parser.prototype.end;\n\nmodule.exports = Parser;\n","module.exports = Tokenizer;\n\nvar decodeCodePoint = require(\"entities/lib/decode_codepoint.js\");\nvar entityMap = require(\"entities/maps/entities.json\");\nvar legacyMap = require(\"entities/maps/legacy.json\");\nvar xmlMap = require(\"entities/maps/xml.json\");\n\nvar i = 0;\n\nvar TEXT = i++;\nvar BEFORE_TAG_NAME = i++; //after <\nvar IN_TAG_NAME = i++;\nvar IN_SELF_CLOSING_TAG = i++;\nvar BEFORE_CLOSING_TAG_NAME = i++;\nvar IN_CLOSING_TAG_NAME = i++;\nvar AFTER_CLOSING_TAG_NAME = i++;\n\n//attributes\nvar BEFORE_ATTRIBUTE_NAME = i++;\nvar IN_ATTRIBUTE_NAME = i++;\nvar AFTER_ATTRIBUTE_NAME = i++;\nvar BEFORE_ATTRIBUTE_VALUE = i++;\nvar IN_ATTRIBUTE_VALUE_DQ = i++; // \"\nvar IN_ATTRIBUTE_VALUE_SQ = i++; // '\nvar IN_ATTRIBUTE_VALUE_NQ = i++;\n\n//declarations\nvar BEFORE_DECLARATION = i++; // !\nvar IN_DECLARATION = i++;\n\n//processing instructions\nvar IN_PROCESSING_INSTRUCTION = i++; // ?\n\n//comments\nvar BEFORE_COMMENT = i++;\nvar IN_COMMENT = i++;\nvar AFTER_COMMENT_1 = i++;\nvar AFTER_COMMENT_2 = i++;\n\n//cdata\nvar BEFORE_CDATA_1 = i++; // [\nvar BEFORE_CDATA_2 = i++; // C\nvar BEFORE_CDATA_3 = i++; // D\nvar BEFORE_CDATA_4 = i++; // A\nvar BEFORE_CDATA_5 = i++; // T\nvar BEFORE_CDATA_6 = i++; // A\nvar IN_CDATA = i++; // [\nvar AFTER_CDATA_1 = i++; // ]\nvar AFTER_CDATA_2 = i++; // ]\n\n//special tags\nvar BEFORE_SPECIAL = i++; //S\nvar BEFORE_SPECIAL_END = i++; //S\n\nvar BEFORE_SCRIPT_1 = i++; //C\nvar BEFORE_SCRIPT_2 = i++; //R\nvar BEFORE_SCRIPT_3 = i++; //I\nvar BEFORE_SCRIPT_4 = i++; //P\nvar BEFORE_SCRIPT_5 = i++; //T\nvar AFTER_SCRIPT_1 = i++; //C\nvar AFTER_SCRIPT_2 = i++; //R\nvar AFTER_SCRIPT_3 = i++; //I\nvar AFTER_SCRIPT_4 = i++; //P\nvar AFTER_SCRIPT_5 = i++; //T\n\nvar BEFORE_STYLE_1 = i++; //T\nvar BEFORE_STYLE_2 = i++; //Y\nvar BEFORE_STYLE_3 = i++; //L\nvar BEFORE_STYLE_4 = i++; //E\nvar AFTER_STYLE_1 = i++; //T\nvar AFTER_STYLE_2 = i++; //Y\nvar AFTER_STYLE_3 = i++; //L\nvar AFTER_STYLE_4 = i++; //E\n\nvar BEFORE_ENTITY = i++; //&\nvar BEFORE_NUMERIC_ENTITY = i++; //#\nvar IN_NAMED_ENTITY = i++;\nvar IN_NUMERIC_ENTITY = i++;\nvar IN_HEX_ENTITY = i++; //X\n\nvar j = 0;\n\nvar SPECIAL_NONE = j++;\nvar SPECIAL_SCRIPT = j++;\nvar SPECIAL_STYLE = j++;\n\nfunction whitespace(c) {\n return c === \" \" || c === \"\\n\" || c === \"\\t\" || c === \"\\f\" || c === \"\\r\";\n}\n\nfunction ifElseState(upper, SUCCESS, FAILURE) {\n var lower = upper.toLowerCase();\n\n if (upper === lower) {\n return function(c) {\n if (c === lower) {\n this._state = SUCCESS;\n } else {\n this._state = FAILURE;\n this._index--;\n }\n };\n } else {\n return function(c) {\n if (c === lower || c === upper) {\n this._state = SUCCESS;\n } else {\n this._state = FAILURE;\n this._index--;\n }\n };\n }\n}\n\nfunction consumeSpecialNameChar(upper, NEXT_STATE) {\n var lower = upper.toLowerCase();\n\n return function(c) {\n if (c === lower || c === upper) {\n this._state = NEXT_STATE;\n } else {\n this._state = IN_TAG_NAME;\n this._index--; //consume the token again\n }\n };\n}\n\nfunction Tokenizer(options, cbs) {\n this._state = TEXT;\n this._buffer = \"\";\n this._sectionStart = 0;\n this._index = 0;\n this._bufferOffset = 0; //chars removed from _buffer\n this._baseState = TEXT;\n this._special = SPECIAL_NONE;\n this._cbs = cbs;\n this._running = true;\n this._ended = false;\n this._xmlMode = !!(options && options.xmlMode);\n this._decodeEntities = !!(options && options.decodeEntities);\n}\n\nTokenizer.prototype._stateText = function(c) {\n if (c === \"<\") {\n if (this._index > this._sectionStart) {\n this._cbs.ontext(this._getSection());\n }\n this._state = BEFORE_TAG_NAME;\n this._sectionStart = this._index;\n } else if (\n this._decodeEntities &&\n this._special === SPECIAL_NONE &&\n c === \"&\"\n ) {\n if (this._index > this._sectionStart) {\n this._cbs.ontext(this._getSection());\n }\n this._baseState = TEXT;\n this._state = BEFORE_ENTITY;\n this._sectionStart = this._index;\n }\n};\n\nTokenizer.prototype._stateBeforeTagName = function(c) {\n if (c === \"/\") {\n this._state = BEFORE_CLOSING_TAG_NAME;\n } else if (c === \"<\") {\n this._cbs.ontext(this._getSection());\n this._sectionStart = this._index;\n } else if (c === \">\" || this._special !== SPECIAL_NONE || whitespace(c)) {\n this._state = TEXT;\n } else if (c === \"!\") {\n this._state = BEFORE_DECLARATION;\n this._sectionStart = this._index + 1;\n } else if (c === \"?\") {\n this._state = IN_PROCESSING_INSTRUCTION;\n this._sectionStart = this._index + 1;\n } else {\n this._state =\n !this._xmlMode && (c === \"s\" || c === \"S\")\n ? BEFORE_SPECIAL\n : IN_TAG_NAME;\n this._sectionStart = this._index;\n }\n};\n\nTokenizer.prototype._stateInTagName = function(c) {\n if (c === \"/\" || c === \">\" || whitespace(c)) {\n this._emitToken(\"onopentagname\");\n this._state = BEFORE_ATTRIBUTE_NAME;\n this._index--;\n }\n};\n\nTokenizer.prototype._stateBeforeCloseingTagName = function(c) {\n if (whitespace(c));\n else if (c === \">\") {\n this._state = TEXT;\n } else if (this._special !== SPECIAL_NONE) {\n if (c === \"s\" || c === \"S\") {\n this._state = BEFORE_SPECIAL_END;\n } else {\n this._state = TEXT;\n this._index--;\n }\n } else {\n this._state = IN_CLOSING_TAG_NAME;\n this._sectionStart = this._index;\n }\n};\n\nTokenizer.prototype._stateInCloseingTagName = function(c) {\n if (c === \">\" || whitespace(c)) {\n this._emitToken(\"onclosetag\");\n this._state = AFTER_CLOSING_TAG_NAME;\n this._index--;\n }\n};\n\nTokenizer.prototype._stateAfterCloseingTagName = function(c) {\n //skip everything until \">\"\n if (c === \">\") {\n this._state = TEXT;\n this._sectionStart = this._index + 1;\n }\n};\n\nTokenizer.prototype._stateBeforeAttributeName = function(c) {\n if (c === \">\") {\n this._cbs.onopentagend();\n this._state = TEXT;\n this._sectionStart = this._index + 1;\n } else if (c === \"/\") {\n this._state = IN_SELF_CLOSING_TAG;\n } else if (!whitespace(c)) {\n this._state = IN_ATTRIBUTE_NAME;\n this._sectionStart = this._index;\n }\n};\n\nTokenizer.prototype._stateInSelfClosingTag = function(c) {\n if (c === \">\") {\n this._cbs.onselfclosingtag();\n this._state = TEXT;\n this._sectionStart = this._index + 1;\n } else if (!whitespace(c)) {\n this._state = BEFORE_ATTRIBUTE_NAME;\n this._index--;\n }\n};\n\nTokenizer.prototype._stateInAttributeName = function(c) {\n if (c === \"=\" || c === \"/\" || c === \">\" || whitespace(c)) {\n this._cbs.onattribname(this._getSection());\n this._sectionStart = -1;\n this._state = AFTER_ATTRIBUTE_NAME;\n this._index--;\n }\n};\n\nTokenizer.prototype._stateAfterAttributeName = function(c) {\n if (c === \"=\") {\n this._state = BEFORE_ATTRIBUTE_VALUE;\n } else if (c === \"/\" || c === \">\") {\n this._cbs.onattribend();\n this._state = BEFORE_ATTRIBUTE_NAME;\n this._index--;\n } else if (!whitespace(c)) {\n this._cbs.onattribend();\n this._state = IN_ATTRIBUTE_NAME;\n this._sectionStart = this._index;\n }\n};\n\nTokenizer.prototype._stateBeforeAttributeValue = function(c) {\n if (c === '\"') {\n this._state = IN_ATTRIBUTE_VALUE_DQ;\n this._sectionStart = this._index + 1;\n } else if (c === \"'\") {\n this._state = IN_ATTRIBUTE_VALUE_SQ;\n this._sectionStart = this._index + 1;\n } else if (!whitespace(c)) {\n this._state = IN_ATTRIBUTE_VALUE_NQ;\n this._sectionStart = this._index;\n this._index--; //reconsume token\n }\n};\n\nTokenizer.prototype._stateInAttributeValueDoubleQuotes = function(c) {\n if (c === '\"') {\n this._emitToken(\"onattribdata\");\n this._cbs.onattribend();\n this._state = BEFORE_ATTRIBUTE_NAME;\n } else if (this._decodeEntities && c === \"&\") {\n this._emitToken(\"onattribdata\");\n this._baseState = this._state;\n this._state = BEFORE_ENTITY;\n this._sectionStart = this._index;\n }\n};\n\nTokenizer.prototype._stateInAttributeValueSingleQuotes = function(c) {\n if (c === \"'\") {\n this._emitToken(\"onattribdata\");\n this._cbs.onattribend();\n this._state = BEFORE_ATTRIBUTE_NAME;\n } else if (this._decodeEntities && c === \"&\") {\n this._emitToken(\"onattribdata\");\n this._baseState = this._state;\n this._state = BEFORE_ENTITY;\n this._sectionStart = this._index;\n }\n};\n\nTokenizer.prototype._stateInAttributeValueNoQuotes = function(c) {\n if (whitespace(c) || c === \">\") {\n this._emitToken(\"onattribdata\");\n this._cbs.onattribend();\n this._state = BEFORE_ATTRIBUTE_NAME;\n this._index--;\n } else if (this._decodeEntities && c === \"&\") {\n this._emitToken(\"onattribdata\");\n this._baseState = this._state;\n this._state = BEFORE_ENTITY;\n this._sectionStart = this._index;\n }\n};\n\nTokenizer.prototype._stateBeforeDeclaration = function(c) {\n this._state =\n c === \"[\"\n ? BEFORE_CDATA_1\n : c === \"-\"\n ? BEFORE_COMMENT\n : IN_DECLARATION;\n};\n\nTokenizer.prototype._stateInDeclaration = function(c) {\n if (c === \">\") {\n this._cbs.ondeclaration(this._getSection());\n this._state = TEXT;\n this._sectionStart = this._index + 1;\n }\n};\n\nTokenizer.prototype._stateInProcessingInstruction = function(c) {\n if (c === \">\") {\n this._cbs.onprocessinginstruction(this._getSection());\n this._state = TEXT;\n this._sectionStart = this._index + 1;\n }\n};\n\nTokenizer.prototype._stateBeforeComment = function(c) {\n if (c === \"-\") {\n this._state = IN_COMMENT;\n this._sectionStart = this._index + 1;\n } else {\n this._state = IN_DECLARATION;\n }\n};\n\nTokenizer.prototype._stateInComment = function(c) {\n if (c === \"-\") this._state = AFTER_COMMENT_1;\n};\n\nTokenizer.prototype._stateAfterComment1 = function(c) {\n if (c === \"-\") {\n this._state = AFTER_COMMENT_2;\n } else {\n this._state = IN_COMMENT;\n }\n};\n\nTokenizer.prototype._stateAfterComment2 = function(c) {\n if (c === \">\") {\n //remove 2 trailing chars\n this._cbs.oncomment(\n this._buffer.substring(this._sectionStart, this._index - 2)\n );\n this._state = TEXT;\n this._sectionStart = this._index + 1;\n } else if (c !== \"-\") {\n this._state = IN_COMMENT;\n }\n // else: stay in AFTER_COMMENT_2 (`--->`)\n};\n\nTokenizer.prototype._stateBeforeCdata1 = ifElseState(\n \"C\",\n BEFORE_CDATA_2,\n IN_DECLARATION\n);\nTokenizer.prototype._stateBeforeCdata2 = ifElseState(\n \"D\",\n BEFORE_CDATA_3,\n IN_DECLARATION\n);\nTokenizer.prototype._stateBeforeCdata3 = ifElseState(\n \"A\",\n BEFORE_CDATA_4,\n IN_DECLARATION\n);\nTokenizer.prototype._stateBeforeCdata4 = ifElseState(\n \"T\",\n BEFORE_CDATA_5,\n IN_DECLARATION\n);\nTokenizer.prototype._stateBeforeCdata5 = ifElseState(\n \"A\",\n BEFORE_CDATA_6,\n IN_DECLARATION\n);\n\nTokenizer.prototype._stateBeforeCdata6 = function(c) {\n if (c === \"[\") {\n this._state = IN_CDATA;\n this._sectionStart = this._index + 1;\n } else {\n this._state = IN_DECLARATION;\n this._index--;\n }\n};\n\nTokenizer.prototype._stateInCdata = function(c) {\n if (c === \"]\") this._state = AFTER_CDATA_1;\n};\n\nTokenizer.prototype._stateAfterCdata1 = function(c) {\n if (c === \"]\") this._state = AFTER_CDATA_2;\n else this._state = IN_CDATA;\n};\n\nTokenizer.prototype._stateAfterCdata2 = function(c) {\n if (c === \">\") {\n //remove 2 trailing chars\n this._cbs.oncdata(\n this._buffer.substring(this._sectionStart, this._index - 2)\n );\n this._state = TEXT;\n this._sectionStart = this._index + 1;\n } else if (c !== \"]\") {\n this._state = IN_CDATA;\n }\n //else: stay in AFTER_CDATA_2 (`]]]>`)\n};\n\nTokenizer.prototype._stateBeforeSpecial = function(c) {\n if (c === \"c\" || c === \"C\") {\n this._state = BEFORE_SCRIPT_1;\n } else if (c === \"t\" || c === \"T\") {\n this._state = BEFORE_STYLE_1;\n } else {\n this._state = IN_TAG_NAME;\n this._index--; //consume the token again\n }\n};\n\nTokenizer.prototype._stateBeforeSpecialEnd = function(c) {\n if (this._special === SPECIAL_SCRIPT && (c === \"c\" || c === \"C\")) {\n this._state = AFTER_SCRIPT_1;\n } else if (this._special === SPECIAL_STYLE && (c === \"t\" || c === \"T\")) {\n this._state = AFTER_STYLE_1;\n } else this._state = TEXT;\n};\n\nTokenizer.prototype._stateBeforeScript1 = consumeSpecialNameChar(\n \"R\",\n BEFORE_SCRIPT_2\n);\nTokenizer.prototype._stateBeforeScript2 = consumeSpecialNameChar(\n \"I\",\n BEFORE_SCRIPT_3\n);\nTokenizer.prototype._stateBeforeScript3 = consumeSpecialNameChar(\n \"P\",\n BEFORE_SCRIPT_4\n);\nTokenizer.prototype._stateBeforeScript4 = consumeSpecialNameChar(\n \"T\",\n BEFORE_SCRIPT_5\n);\n\nTokenizer.prototype._stateBeforeScript5 = function(c) {\n if (c === \"/\" || c === \">\" || whitespace(c)) {\n this._special = SPECIAL_SCRIPT;\n }\n this._state = IN_TAG_NAME;\n this._index--; //consume the token again\n};\n\nTokenizer.prototype._stateAfterScript1 = ifElseState(\"R\", AFTER_SCRIPT_2, TEXT);\nTokenizer.prototype._stateAfterScript2 = ifElseState(\"I\", AFTER_SCRIPT_3, TEXT);\nTokenizer.prototype._stateAfterScript3 = ifElseState(\"P\", AFTER_SCRIPT_4, TEXT);\nTokenizer.prototype._stateAfterScript4 = ifElseState(\"T\", AFTER_SCRIPT_5, TEXT);\n\nTokenizer.prototype._stateAfterScript5 = function(c) {\n if (c === \">\" || whitespace(c)) {\n this._special = SPECIAL_NONE;\n this._state = IN_CLOSING_TAG_NAME;\n this._sectionStart = this._index - 6;\n this._index--; //reconsume the token\n } else this._state = TEXT;\n};\n\nTokenizer.prototype._stateBeforeStyle1 = consumeSpecialNameChar(\n \"Y\",\n BEFORE_STYLE_2\n);\nTokenizer.prototype._stateBeforeStyle2 = consumeSpecialNameChar(\n \"L\",\n BEFORE_STYLE_3\n);\nTokenizer.prototype._stateBeforeStyle3 = consumeSpecialNameChar(\n \"E\",\n BEFORE_STYLE_4\n);\n\nTokenizer.prototype._stateBeforeStyle4 = function(c) {\n if (c === \"/\" || c === \">\" || whitespace(c)) {\n this._special = SPECIAL_STYLE;\n }\n this._state = IN_TAG_NAME;\n this._index--; //consume the token again\n};\n\nTokenizer.prototype._stateAfterStyle1 = ifElseState(\"Y\", AFTER_STYLE_2, TEXT);\nTokenizer.prototype._stateAfterStyle2 = ifElseState(\"L\", AFTER_STYLE_3, TEXT);\nTokenizer.prototype._stateAfterStyle3 = ifElseState(\"E\", AFTER_STYLE_4, TEXT);\n\nTokenizer.prototype._stateAfterStyle4 = function(c) {\n if (c === \">\" || whitespace(c)) {\n this._special = SPECIAL_NONE;\n this._state = IN_CLOSING_TAG_NAME;\n this._sectionStart = this._index - 5;\n this._index--; //reconsume the token\n } else this._state = TEXT;\n};\n\nTokenizer.prototype._stateBeforeEntity = ifElseState(\n \"#\",\n BEFORE_NUMERIC_ENTITY,\n IN_NAMED_ENTITY\n);\nTokenizer.prototype._stateBeforeNumericEntity = ifElseState(\n \"X\",\n IN_HEX_ENTITY,\n IN_NUMERIC_ENTITY\n);\n\n//for entities terminated with a semicolon\nTokenizer.prototype._parseNamedEntityStrict = function() {\n //offset = 1\n if (this._sectionStart + 1 < this._index) {\n var entity = this._buffer.substring(\n this._sectionStart + 1,\n this._index\n ),\n map = this._xmlMode ? xmlMap : entityMap;\n\n if (map.hasOwnProperty(entity)) {\n this._emitPartial(map[entity]);\n this._sectionStart = this._index + 1;\n }\n }\n};\n\n//parses legacy entities (without trailing semicolon)\nTokenizer.prototype._parseLegacyEntity = function() {\n var start = this._sectionStart + 1,\n limit = this._index - start;\n\n if (limit > 6) limit = 6; //the max length of legacy entities is 6\n\n while (limit >= 2) {\n //the min length of legacy entities is 2\n var entity = this._buffer.substr(start, limit);\n\n if (legacyMap.hasOwnProperty(entity)) {\n this._emitPartial(legacyMap[entity]);\n this._sectionStart += limit + 1;\n return;\n } else {\n limit--;\n }\n }\n};\n\nTokenizer.prototype._stateInNamedEntity = function(c) {\n if (c === \";\") {\n this._parseNamedEntityStrict();\n if (this._sectionStart + 1 < this._index && !this._xmlMode) {\n this._parseLegacyEntity();\n }\n this._state = this._baseState;\n } else if (\n (c < \"a\" || c > \"z\") &&\n (c < \"A\" || c > \"Z\") &&\n (c < \"0\" || c > \"9\")\n ) {\n if (this._xmlMode);\n else if (this._sectionStart + 1 === this._index);\n else if (this._baseState !== TEXT) {\n if (c !== \"=\") {\n this._parseNamedEntityStrict();\n }\n } else {\n this._parseLegacyEntity();\n }\n\n this._state = this._baseState;\n this._index--;\n }\n};\n\nTokenizer.prototype._decodeNumericEntity = function(offset, base) {\n var sectionStart = this._sectionStart + offset;\n\n if (sectionStart !== this._index) {\n //parse entity\n var entity = this._buffer.substring(sectionStart, this._index);\n var parsed = parseInt(entity, base);\n\n this._emitPartial(decodeCodePoint(parsed));\n this._sectionStart = this._index;\n } else {\n this._sectionStart--;\n }\n\n this._state = this._baseState;\n};\n\nTokenizer.prototype._stateInNumericEntity = function(c) {\n if (c === \";\") {\n this._decodeNumericEntity(2, 10);\n this._sectionStart++;\n } else if (c < \"0\" || c > \"9\") {\n if (!this._xmlMode) {\n this._decodeNumericEntity(2, 10);\n } else {\n this._state = this._baseState;\n }\n this._index--;\n }\n};\n\nTokenizer.prototype._stateInHexEntity = function(c) {\n if (c === \";\") {\n this._decodeNumericEntity(3, 16);\n this._sectionStart++;\n } else if (\n (c < \"a\" || c > \"f\") &&\n (c < \"A\" || c > \"F\") &&\n (c < \"0\" || c > \"9\")\n ) {\n if (!this._xmlMode) {\n this._decodeNumericEntity(3, 16);\n } else {\n this._state = this._baseState;\n }\n this._index--;\n }\n};\n\nTokenizer.prototype._cleanup = function() {\n if (this._sectionStart < 0) {\n this._buffer = \"\";\n this._bufferOffset += this._index;\n this._index = 0;\n } else if (this._running) {\n if (this._state === TEXT) {\n if (this._sectionStart !== this._index) {\n this._cbs.ontext(this._buffer.substr(this._sectionStart));\n }\n this._buffer = \"\";\n this._bufferOffset += this._index;\n this._index = 0;\n } else if (this._sectionStart === this._index) {\n //the section just started\n this._buffer = \"\";\n this._bufferOffset += this._index;\n this._index = 0;\n } else {\n //remove everything unnecessary\n this._buffer = this._buffer.substr(this._sectionStart);\n this._index -= this._sectionStart;\n this._bufferOffset += this._sectionStart;\n }\n\n this._sectionStart = 0;\n }\n};\n\n//TODO make events conditional\nTokenizer.prototype.write = function(chunk) {\n if (this._ended) this._cbs.onerror(Error(\".write() after done!\"));\n\n this._buffer += chunk;\n this._parse();\n};\n\nTokenizer.prototype._parse = function() {\n while (this._index < this._buffer.length && this._running) {\n var c = this._buffer.charAt(this._index);\n if (this._state === TEXT) {\n this._stateText(c);\n } else if (this._state === BEFORE_TAG_NAME) {\n this._stateBeforeTagName(c);\n } else if (this._state === IN_TAG_NAME) {\n this._stateInTagName(c);\n } else if (this._state === BEFORE_CLOSING_TAG_NAME) {\n this._stateBeforeCloseingTagName(c);\n } else if (this._state === IN_CLOSING_TAG_NAME) {\n this._stateInCloseingTagName(c);\n } else if (this._state === AFTER_CLOSING_TAG_NAME) {\n this._stateAfterCloseingTagName(c);\n } else if (this._state === IN_SELF_CLOSING_TAG) {\n this._stateInSelfClosingTag(c);\n } else if (this._state === BEFORE_ATTRIBUTE_NAME) {\n\n /*\n\t\t*\tattributes\n\t\t*/\n this._stateBeforeAttributeName(c);\n } else if (this._state === IN_ATTRIBUTE_NAME) {\n this._stateInAttributeName(c);\n } else if (this._state === AFTER_ATTRIBUTE_NAME) {\n this._stateAfterAttributeName(c);\n } else if (this._state === BEFORE_ATTRIBUTE_VALUE) {\n this._stateBeforeAttributeValue(c);\n } else if (this._state === IN_ATTRIBUTE_VALUE_DQ) {\n this._stateInAttributeValueDoubleQuotes(c);\n } else if (this._state === IN_ATTRIBUTE_VALUE_SQ) {\n this._stateInAttributeValueSingleQuotes(c);\n } else if (this._state === IN_ATTRIBUTE_VALUE_NQ) {\n this._stateInAttributeValueNoQuotes(c);\n } else if (this._state === BEFORE_DECLARATION) {\n\n /*\n\t\t*\tdeclarations\n\t\t*/\n this._stateBeforeDeclaration(c);\n } else if (this._state === IN_DECLARATION) {\n this._stateInDeclaration(c);\n } else if (this._state === IN_PROCESSING_INSTRUCTION) {\n\n /*\n\t\t*\tprocessing instructions\n\t\t*/\n this._stateInProcessingInstruction(c);\n } else if (this._state === BEFORE_COMMENT) {\n\n /*\n\t\t*\tcomments\n\t\t*/\n this._stateBeforeComment(c);\n } else if (this._state === IN_COMMENT) {\n this._stateInComment(c);\n } else if (this._state === AFTER_COMMENT_1) {\n this._stateAfterComment1(c);\n } else if (this._state === AFTER_COMMENT_2) {\n this._stateAfterComment2(c);\n } else if (this._state === BEFORE_CDATA_1) {\n\n /*\n\t\t*\tcdata\n\t\t*/\n this._stateBeforeCdata1(c);\n } else if (this._state === BEFORE_CDATA_2) {\n this._stateBeforeCdata2(c);\n } else if (this._state === BEFORE_CDATA_3) {\n this._stateBeforeCdata3(c);\n } else if (this._state === BEFORE_CDATA_4) {\n this._stateBeforeCdata4(c);\n } else if (this._state === BEFORE_CDATA_5) {\n this._stateBeforeCdata5(c);\n } else if (this._state === BEFORE_CDATA_6) {\n this._stateBeforeCdata6(c);\n } else if (this._state === IN_CDATA) {\n this._stateInCdata(c);\n } else if (this._state === AFTER_CDATA_1) {\n this._stateAfterCdata1(c);\n } else if (this._state === AFTER_CDATA_2) {\n this._stateAfterCdata2(c);\n } else if (this._state === BEFORE_SPECIAL) {\n\n /*\n\t\t* special tags\n\t\t*/\n this._stateBeforeSpecial(c);\n } else if (this._state === BEFORE_SPECIAL_END) {\n this._stateBeforeSpecialEnd(c);\n } else if (this._state === BEFORE_SCRIPT_1) {\n\n /*\n\t\t* script\n\t\t*/\n this._stateBeforeScript1(c);\n } else if (this._state === BEFORE_SCRIPT_2) {\n this._stateBeforeScript2(c);\n } else if (this._state === BEFORE_SCRIPT_3) {\n this._stateBeforeScript3(c);\n } else if (this._state === BEFORE_SCRIPT_4) {\n this._stateBeforeScript4(c);\n } else if (this._state === BEFORE_SCRIPT_5) {\n this._stateBeforeScript5(c);\n } else if (this._state === AFTER_SCRIPT_1) {\n this._stateAfterScript1(c);\n } else if (this._state === AFTER_SCRIPT_2) {\n this._stateAfterScript2(c);\n } else if (this._state === AFTER_SCRIPT_3) {\n this._stateAfterScript3(c);\n } else if (this._state === AFTER_SCRIPT_4) {\n this._stateAfterScript4(c);\n } else if (this._state === AFTER_SCRIPT_5) {\n this._stateAfterScript5(c);\n } else if (this._state === BEFORE_STYLE_1) {\n\n /*\n\t\t* style\n\t\t*/\n this._stateBeforeStyle1(c);\n } else if (this._state === BEFORE_STYLE_2) {\n this._stateBeforeStyle2(c);\n } else if (this._state === BEFORE_STYLE_3) {\n this._stateBeforeStyle3(c);\n } else if (this._state === BEFORE_STYLE_4) {\n this._stateBeforeStyle4(c);\n } else if (this._state === AFTER_STYLE_1) {\n this._stateAfterStyle1(c);\n } else if (this._state === AFTER_STYLE_2) {\n this._stateAfterStyle2(c);\n } else if (this._state === AFTER_STYLE_3) {\n this._stateAfterStyle3(c);\n } else if (this._state === AFTER_STYLE_4) {\n this._stateAfterStyle4(c);\n } else if (this._state === BEFORE_ENTITY) {\n\n /*\n\t\t* entities\n\t\t*/\n this._stateBeforeEntity(c);\n } else if (this._state === BEFORE_NUMERIC_ENTITY) {\n this._stateBeforeNumericEntity(c);\n } else if (this._state === IN_NAMED_ENTITY) {\n this._stateInNamedEntity(c);\n } else if (this._state === IN_NUMERIC_ENTITY) {\n this._stateInNumericEntity(c);\n } else if (this._state === IN_HEX_ENTITY) {\n this._stateInHexEntity(c);\n } else {\n this._cbs.onerror(Error(\"unknown _state\"), this._state);\n }\n\n this._index++;\n }\n\n this._cleanup();\n};\n\nTokenizer.prototype.pause = function() {\n this._running = false;\n};\nTokenizer.prototype.resume = function() {\n this._running = true;\n\n if (this._index < this._buffer.length) {\n this._parse();\n }\n if (this._ended) {\n this._finish();\n }\n};\n\nTokenizer.prototype.end = function(chunk) {\n if (this._ended) this._cbs.onerror(Error(\".end() after done!\"));\n if (chunk) this.write(chunk);\n\n this._ended = true;\n\n if (this._running) this._finish();\n};\n\nTokenizer.prototype._finish = function() {\n //if there is remaining data, emit it in a reasonable way\n if (this._sectionStart < this._index) {\n this._handleTrailingData();\n }\n\n this._cbs.onend();\n};\n\nTokenizer.prototype._handleTrailingData = function() {\n var data = this._buffer.substr(this._sectionStart);\n\n if (\n this._state === IN_CDATA ||\n this._state === AFTER_CDATA_1 ||\n this._state === AFTER_CDATA_2\n ) {\n this._cbs.oncdata(data);\n } else if (\n this._state === IN_COMMENT ||\n this._state === AFTER_COMMENT_1 ||\n this._state === AFTER_COMMENT_2\n ) {\n this._cbs.oncomment(data);\n } else if (this._state === IN_NAMED_ENTITY && !this._xmlMode) {\n this._parseLegacyEntity();\n if (this._sectionStart < this._index) {\n this._state = this._baseState;\n this._handleTrailingData();\n }\n } else if (this._state === IN_NUMERIC_ENTITY && !this._xmlMode) {\n this._decodeNumericEntity(2, 10);\n if (this._sectionStart < this._index) {\n this._state = this._baseState;\n this._handleTrailingData();\n }\n } else if (this._state === IN_HEX_ENTITY && !this._xmlMode) {\n this._decodeNumericEntity(3, 16);\n if (this._sectionStart < this._index) {\n this._state = this._baseState;\n this._handleTrailingData();\n }\n } else if (\n this._state !== IN_TAG_NAME &&\n this._state !== BEFORE_ATTRIBUTE_NAME &&\n this._state !== BEFORE_ATTRIBUTE_VALUE &&\n this._state !== AFTER_ATTRIBUTE_NAME &&\n this._state !== IN_ATTRIBUTE_NAME &&\n this._state !== IN_ATTRIBUTE_VALUE_SQ &&\n this._state !== IN_ATTRIBUTE_VALUE_DQ &&\n this._state !== IN_ATTRIBUTE_VALUE_NQ &&\n this._state !== IN_CLOSING_TAG_NAME\n ) {\n this._cbs.ontext(data);\n }\n //else, ignore remaining data\n //TODO add a way to remove current tag\n};\n\nTokenizer.prototype.reset = function() {\n Tokenizer.call(\n this,\n { xmlMode: this._xmlMode, decodeEntities: this._decodeEntities },\n this._cbs\n );\n};\n\nTokenizer.prototype.getAbsoluteIndex = function() {\n return this._bufferOffset + this._index;\n};\n\nTokenizer.prototype._getSection = function() {\n return this._buffer.substring(this._sectionStart, this._index);\n};\n\nTokenizer.prototype._emitToken = function(name) {\n this._cbs[name](this._getSection());\n this._sectionStart = -1;\n};\n\nTokenizer.prototype._emitPartial = function(value) {\n if (this._baseState !== TEXT) {\n this._cbs.onattribdata(value); //TODO implement the new event\n } else {\n this._cbs.ontext(value);\n }\n};\n","var ElementType = require(\"domelementtype\");\n\nvar re_whitespace = /\\s+/g;\nvar NodePrototype = require(\"./lib/node\");\nvar ElementPrototype = require(\"./lib/element\");\n\nfunction DomHandler(callback, options, elementCB){\n\tif(typeof callback === \"object\"){\n\t\telementCB = options;\n\t\toptions = callback;\n\t\tcallback = null;\n\t} else if(typeof options === \"function\"){\n\t\telementCB = options;\n\t\toptions = defaultOpts;\n\t}\n\tthis._callback = callback;\n\tthis._options = options || defaultOpts;\n\tthis._elementCB = elementCB;\n\tthis.dom = [];\n\tthis._done = false;\n\tthis._tagStack = [];\n\tthis._parser = this._parser || null;\n}\n\n//default options\nvar defaultOpts = {\n\tnormalizeWhitespace: false, //Replace all whitespace with single spaces\n\twithStartIndices: false, //Add startIndex properties to nodes\n\twithEndIndices: false, //Add endIndex properties to nodes\n};\n\nDomHandler.prototype.onparserinit = function(parser){\n\tthis._parser = parser;\n};\n\n//Resets the handler back to starting state\nDomHandler.prototype.onreset = function(){\n\tDomHandler.call(this, this._callback, this._options, this._elementCB);\n};\n\n//Signals the handler that parsing is done\nDomHandler.prototype.onend = function(){\n\tif(this._done) return;\n\tthis._done = true;\n\tthis._parser = null;\n\tthis._handleCallback(null);\n};\n\nDomHandler.prototype._handleCallback =\nDomHandler.prototype.onerror = function(error){\n\tif(typeof this._callback === \"function\"){\n\t\tthis._callback(error, this.dom);\n\t} else {\n\t\tif(error) throw error;\n\t}\n};\n\nDomHandler.prototype.onclosetag = function(){\n\t//if(this._tagStack.pop().name !== name) this._handleCallback(Error(\"Tagname didn't match!\"));\n\t\n\tvar elem = this._tagStack.pop();\n\n\tif(this._options.withEndIndices && elem){\n\t\telem.endIndex = this._parser.endIndex;\n\t}\n\n\tif(this._elementCB) this._elementCB(elem);\n};\n\nDomHandler.prototype._createDomElement = function(properties){\n\tif (!this._options.withDomLvl1) return properties;\n\n\tvar element;\n\tif (properties.type === \"tag\") {\n\t\telement = Object.create(ElementPrototype);\n\t} else {\n\t\telement = Object.create(NodePrototype);\n\t}\n\n\tfor (var key in properties) {\n\t\tif (properties.hasOwnProperty(key)) {\n\t\t\telement[key] = properties[key];\n\t\t}\n\t}\n\n\treturn element;\n};\n\nDomHandler.prototype._addDomElement = function(element){\n\tvar parent = this._tagStack[this._tagStack.length - 1];\n\tvar siblings = parent ? parent.children : this.dom;\n\tvar previousSibling = siblings[siblings.length - 1];\n\n\telement.next = null;\n\n\tif(this._options.withStartIndices){\n\t\telement.startIndex = this._parser.startIndex;\n\t}\n\tif(this._options.withEndIndices){\n\t\telement.endIndex = this._parser.endIndex;\n\t}\n\n\tif(previousSibling){\n\t\telement.prev = previousSibling;\n\t\tpreviousSibling.next = element;\n\t} else {\n\t\telement.prev = null;\n\t}\n\n\tsiblings.push(element);\n\telement.parent = parent || null;\n};\n\nDomHandler.prototype.onopentag = function(name, attribs){\n\tvar properties = {\n\t\ttype: name === \"script\" ? ElementType.Script : name === \"style\" ? ElementType.Style : ElementType.Tag,\n\t\tname: name,\n\t\tattribs: attribs,\n\t\tchildren: []\n\t};\n\n\tvar element = this._createDomElement(properties);\n\n\tthis._addDomElement(element);\n\n\tthis._tagStack.push(element);\n};\n\nDomHandler.prototype.ontext = function(data){\n\t//the ignoreWhitespace is officially dropped, but for now,\n\t//it's an alias for normalizeWhitespace\n\tvar normalize = this._options.normalizeWhitespace || this._options.ignoreWhitespace;\n\n\tvar lastTag;\n\n\tif(!this._tagStack.length && this.dom.length && (lastTag = this.dom[this.dom.length-1]).type === ElementType.Text){\n\t\tif(normalize){\n\t\t\tlastTag.data = (lastTag.data + data).replace(re_whitespace, \" \");\n\t\t} else {\n\t\t\tlastTag.data += data;\n\t\t}\n\t} else {\n\t\tif(\n\t\t\tthis._tagStack.length &&\n\t\t\t(lastTag = this._tagStack[this._tagStack.length - 1]) &&\n\t\t\t(lastTag = lastTag.children[lastTag.children.length - 1]) &&\n\t\t\tlastTag.type === ElementType.Text\n\t\t){\n\t\t\tif(normalize){\n\t\t\t\tlastTag.data = (lastTag.data + data).replace(re_whitespace, \" \");\n\t\t\t} else {\n\t\t\t\tlastTag.data += data;\n\t\t\t}\n\t\t} else {\n\t\t\tif(normalize){\n\t\t\t\tdata = data.replace(re_whitespace, \" \");\n\t\t\t}\n\n\t\t\tvar element = this._createDomElement({\n\t\t\t\tdata: data,\n\t\t\t\ttype: ElementType.Text\n\t\t\t});\n\n\t\t\tthis._addDomElement(element);\n\t\t}\n\t}\n};\n\nDomHandler.prototype.oncomment = function(data){\n\tvar lastTag = this._tagStack[this._tagStack.length - 1];\n\n\tif(lastTag && lastTag.type === ElementType.Comment){\n\t\tlastTag.data += data;\n\t\treturn;\n\t}\n\n\tvar properties = {\n\t\tdata: data,\n\t\ttype: ElementType.Comment\n\t};\n\n\tvar element = this._createDomElement(properties);\n\n\tthis._addDomElement(element);\n\tthis._tagStack.push(element);\n};\n\nDomHandler.prototype.oncdatastart = function(){\n\tvar properties = {\n\t\tchildren: [{\n\t\t\tdata: \"\",\n\t\t\ttype: ElementType.Text\n\t\t}],\n\t\ttype: ElementType.CDATA\n\t};\n\n\tvar element = this._createDomElement(properties);\n\n\tthis._addDomElement(element);\n\tthis._tagStack.push(element);\n};\n\nDomHandler.prototype.oncommentend = DomHandler.prototype.oncdataend = function(){\n\tthis._tagStack.pop();\n};\n\nDomHandler.prototype.onprocessinginstruction = function(name, data){\n\tvar element = this._createDomElement({\n\t\tname: name,\n\t\tdata: data,\n\t\ttype: ElementType.Directive\n\t});\n\n\tthis._addDomElement(element);\n};\n\nmodule.exports = DomHandler;\n","// This object will be used as the prototype for Nodes when creating a\n// DOM-Level-1-compliant structure.\nvar NodePrototype = module.exports = {\n\tget firstChild() {\n\t\tvar children = this.children;\n\t\treturn children && children[0] || null;\n\t},\n\tget lastChild() {\n\t\tvar children = this.children;\n\t\treturn children && children[children.length - 1] || null;\n\t},\n\tget nodeType() {\n\t\treturn nodeTypes[this.type] || nodeTypes.element;\n\t}\n};\n\nvar domLvl1 = {\n\ttagName: \"name\",\n\tchildNodes: \"children\",\n\tparentNode: \"parent\",\n\tpreviousSibling: \"prev\",\n\tnextSibling: \"next\",\n\tnodeValue: \"data\"\n};\n\nvar nodeTypes = {\n\telement: 1,\n\ttext: 3,\n\tcdata: 4,\n\tcomment: 8\n};\n\nObject.keys(domLvl1).forEach(function(key) {\n\tvar shorthand = domLvl1[key];\n\tObject.defineProperty(NodePrototype, key, {\n\t\tget: function() {\n\t\t\treturn this[shorthand] || null;\n\t\t},\n\t\tset: function(val) {\n\t\t\tthis[shorthand] = val;\n\t\t\treturn val;\n\t\t}\n\t});\n});\n","var DomUtils = module.exports;\n\n[\n\trequire(\"./lib/stringify\"),\n\trequire(\"./lib/traversal\"),\n\trequire(\"./lib/manipulation\"),\n\trequire(\"./lib/querying\"),\n\trequire(\"./lib/legacy\"),\n\trequire(\"./lib/helpers\")\n].forEach(function(ext){\n\tObject.keys(ext).forEach(function(key){\n\t\tDomUtils[key] = ext[key].bind(DomUtils);\n\t});\n});\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodeHTML = exports.decodeHTMLStrict = exports.decodeXML = void 0;\nvar entities_json_1 = __importDefault(require(\"./maps/entities.json\"));\nvar legacy_json_1 = __importDefault(require(\"./maps/legacy.json\"));\nvar xml_json_1 = __importDefault(require(\"./maps/xml.json\"));\nvar decode_codepoint_1 = __importDefault(require(\"./decode_codepoint\"));\nexports.decodeXML = getStrictDecoder(xml_json_1.default);\nexports.decodeHTMLStrict = getStrictDecoder(entities_json_1.default);\nfunction getStrictDecoder(map) {\n var keys = Object.keys(map).join(\"|\");\n var replace = getReplacer(map);\n keys += \"|#[xX][\\\\da-fA-F]+|#\\\\d+\";\n var re = new RegExp(\"&(?:\" + keys + \");\", \"g\");\n return function (str) { return String(str).replace(re, replace); };\n}\nvar sorter = function (a, b) { return (a < b ? 1 : -1); };\nexports.decodeHTML = (function () {\n var legacy = Object.keys(legacy_json_1.default).sort(sorter);\n var keys = Object.keys(entities_json_1.default).sort(sorter);\n for (var i = 0, j = 0; i < keys.length; i++) {\n if (legacy[j] === keys[i]) {\n keys[i] += \";?\";\n j++;\n }\n else {\n keys[i] += \";\";\n }\n }\n var re = new RegExp(\"&(?:\" + keys.join(\"|\") + \"|#[xX][\\\\da-fA-F]+;?|#\\\\d+;?)\", \"g\");\n var replace = getReplacer(entities_json_1.default);\n function replacer(str) {\n if (str.substr(-1) !== \";\")\n str += \";\";\n return replace(str);\n }\n //TODO consider creating a merged map\n return function (str) { return String(str).replace(re, replacer); };\n})();\nfunction getReplacer(map) {\n return function replace(str) {\n if (str.charAt(1) === \"#\") {\n var secondChar = str.charAt(2);\n if (secondChar === \"X\" || secondChar === \"x\") {\n return decode_codepoint_1.default(parseInt(str.substr(3), 16));\n }\n return decode_codepoint_1.default(parseInt(str.substr(2), 10));\n }\n return map[str.slice(1, -1)];\n };\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.escape = exports.encodeHTML = exports.encodeXML = void 0;\nvar xml_json_1 = __importDefault(require(\"./maps/xml.json\"));\nvar inverseXML = getInverseObj(xml_json_1.default);\nvar xmlReplacer = getInverseReplacer(inverseXML);\nexports.encodeXML = getInverse(inverseXML, xmlReplacer);\nvar entities_json_1 = __importDefault(require(\"./maps/entities.json\"));\nvar inverseHTML = getInverseObj(entities_json_1.default);\nvar htmlReplacer = getInverseReplacer(inverseHTML);\nexports.encodeHTML = getInverse(inverseHTML, htmlReplacer);\nfunction getInverseObj(obj) {\n return Object.keys(obj)\n .sort()\n .reduce(function (inverse, name) {\n inverse[obj[name]] = \"&\" + name + \";\";\n return inverse;\n }, {});\n}\nfunction getInverseReplacer(inverse) {\n var single = [];\n var multiple = [];\n for (var _i = 0, _a = Object.keys(inverse); _i < _a.length; _i++) {\n var k = _a[_i];\n if (k.length === 1) {\n // Add value to single array\n single.push(\"\\\\\" + k);\n }\n else {\n // Add value to multiple array\n multiple.push(k);\n }\n }\n // Add ranges to single characters.\n single.sort();\n for (var start = 0; start < single.length - 1; start++) {\n // Find the end of a run of characters\n var end = start;\n while (end < single.length - 1 &&\n single[end].charCodeAt(1) + 1 === single[end + 1].charCodeAt(1)) {\n end += 1;\n }\n var count = 1 + end - start;\n // We want to replace at least three characters\n if (count < 3)\n continue;\n single.splice(start, count, single[start] + \"-\" + single[end]);\n }\n multiple.unshift(\"[\" + single.join(\"\") + \"]\");\n return new RegExp(multiple.join(\"|\"), \"g\");\n}\nvar reNonASCII = /(?:[\\x80-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])/g;\nfunction singleCharReplacer(c) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return \"&#x\" + c.codePointAt(0).toString(16).toUpperCase() + \";\";\n}\nfunction getInverse(inverse, re) {\n return function (data) {\n return data\n .replace(re, function (name) { return inverse[name]; })\n .replace(reNonASCII, singleCharReplacer);\n };\n}\nvar reXmlChars = getInverseReplacer(inverseXML);\nfunction escape(data) {\n return data\n .replace(reXmlChars, singleCharReplacer)\n .replace(reNonASCII, singleCharReplacer);\n}\nexports.escape = escape;\n","module.exports = Stream;\n\nvar Parser = require(\"./Parser.js\");\nvar WritableStream = require(\"readable-stream\").Writable;\nvar StringDecoder = require(\"string_decoder\").StringDecoder;\nvar Buffer = require(\"buffer\").Buffer;\n\nfunction Stream(cbs, options) {\n var parser = (this._parser = new Parser(cbs, options));\n var decoder = (this._decoder = new StringDecoder());\n\n WritableStream.call(this, { decodeStrings: false });\n\n this.once(\"finish\", function() {\n parser.end(decoder.end());\n });\n}\n\nrequire(\"inherits\")(Stream, WritableStream);\n\nStream.prototype._write = function(chunk, encoding, cb) {\n if (chunk instanceof Buffer) chunk = this._decoder.write(chunk);\n this._parser.write(chunk);\n cb();\n};\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.default = generatePropsFromAttributes;\n\nvar _htmlAttributesToReact = require('./htmlAttributesToReact');\n\nvar _htmlAttributesToReact2 = _interopRequireDefault(_htmlAttributesToReact);\n\nvar _inlineStyleToObject = require('./inlineStyleToObject');\n\nvar _inlineStyleToObject2 = _interopRequireDefault(_inlineStyleToObject);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Generates props for a React element from an object of HTML attributes\n *\n * @param {Object} attributes The HTML attributes\n * @param {String} key The key to give the react element\n */\nfunction generatePropsFromAttributes(attributes, key) {\n\n // generate props\n var props = _extends({}, (0, _htmlAttributesToReact2.default)(attributes), { key: key });\n\n // if there is an inline/string style prop then convert it to a React style object\n // otherwise, it is invalid and omitted\n if (typeof props.style === 'string' || props.style instanceof String) {\n props.style = (0, _inlineStyleToObject2.default)(props.style);\n } else {\n delete props.style;\n }\n\n return props;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isValidTagOrAttributeName;\nvar VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/;\n\nvar nameCache = {};\n\nfunction isValidTagOrAttributeName(tagName) {\n if (!nameCache.hasOwnProperty(tagName)) {\n nameCache[tagName] = VALID_TAG_REGEX.test(tagName);\n }\n return nameCache[tagName];\n}","export default function symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n","\"use strict\";\n\nvar compose = require('redux').compose;\n\nexports.__esModule = true;\nexports.composeWithDevTools = (\n typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ?\n window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ :\n function() {\n if (arguments.length === 0) return undefined;\n if (typeof arguments[0] === 'object') return compose;\n return compose.apply(null, arguments);\n }\n);\n\nexports.devToolsEnhancer = (\n typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION__ ?\n window.__REDUX_DEVTOOLS_EXTENSION__ :\n function() { return function(noop) { return noop; } }\n);\n","function createThunkMiddleware(extraArgument) {\n return function (_ref) {\n var dispatch = _ref.dispatch,\n getState = _ref.getState;\n return function (next) {\n return function (action) {\n if (typeof action === 'function') {\n return action(dispatch, getState, extraArgument);\n }\n\n return next(action);\n };\n };\n };\n}\n\nvar thunk = createThunkMiddleware();\nthunk.withExtraArgument = createThunkMiddleware;\n\nexport default thunk;","// @flow\n'use strict';\n\nvar key = '__global_unique_id__';\n\nmodule.exports = function() {\n return global[key] = (global[key] || 0) + 1;\n};\n","'use strict';\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar React = require('react');\nvar React__default = _interopDefault(React);\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient, mapStateOnServer) {\n if (typeof reducePropsToState !== 'function') {\n throw new Error('Expected reducePropsToState to be a function.');\n }\n\n if (typeof handleStateChangeOnClient !== 'function') {\n throw new Error('Expected handleStateChangeOnClient to be a function.');\n }\n\n if (typeof mapStateOnServer !== 'undefined' && typeof mapStateOnServer !== 'function') {\n throw new Error('Expected mapStateOnServer to either be undefined or a function.');\n }\n\n function getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n }\n\n return function wrap(WrappedComponent) {\n if (typeof WrappedComponent !== 'function') {\n throw new Error('Expected WrappedComponent to be a React component.');\n }\n\n var mountedInstances = [];\n var state;\n\n function emitChange() {\n state = reducePropsToState(mountedInstances.map(function (instance) {\n return instance.props;\n }));\n\n if (SideEffect.canUseDOM) {\n handleStateChangeOnClient(state);\n } else if (mapStateOnServer) {\n state = mapStateOnServer(state);\n }\n }\n\n var SideEffect = /*#__PURE__*/function (_PureComponent) {\n _inheritsLoose(SideEffect, _PureComponent);\n\n function SideEffect() {\n return _PureComponent.apply(this, arguments) || this;\n }\n\n // Try to use displayName of wrapped component\n // Expose canUseDOM so tests can monkeypatch it\n SideEffect.peek = function peek() {\n return state;\n };\n\n SideEffect.rewind = function rewind() {\n if (SideEffect.canUseDOM) {\n throw new Error('You may only call rewind() on the server. Call peek() to read the current state.');\n }\n\n var recordedState = state;\n state = undefined;\n mountedInstances = [];\n return recordedState;\n };\n\n var _proto = SideEffect.prototype;\n\n _proto.UNSAFE_componentWillMount = function UNSAFE_componentWillMount() {\n mountedInstances.push(this);\n emitChange();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n emitChange();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n var index = mountedInstances.indexOf(this);\n mountedInstances.splice(index, 1);\n emitChange();\n };\n\n _proto.render = function render() {\n return /*#__PURE__*/React__default.createElement(WrappedComponent, this.props);\n };\n\n return SideEffect;\n }(React.PureComponent);\n\n _defineProperty(SideEffect, \"displayName\", \"SideEffect(\" + getDisplayName(WrappedComponent) + \")\");\n\n _defineProperty(SideEffect, \"canUseDOM\", canUseDOM);\n\n return SideEffect;\n };\n}\n\nmodule.exports = withSideEffect;\n","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.1\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = exports.EXITING = exports.ENTERED = exports.ENTERING = exports.EXITED = exports.UNMOUNTED = void 0;\n\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _PropTypes = require(\"./utils/PropTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar UNMOUNTED = 'unmounted';\nexports.UNMOUNTED = UNMOUNTED;\nvar EXITED = 'exited';\nexports.EXITED = EXITED;\nvar ENTERING = 'entering';\nexports.ENTERING = ENTERING;\nvar ENTERED = 'entered';\nexports.ENTERED = ENTERED;\nvar EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 0 },\n * entered: { opacity: 1 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {state => (\n *
    \n * I'm a fade Transition!\n *
    \n * )}\n *
    \n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
    \n * \n * {state => (\n * // ...\n * )}\n * \n * \n *
    \n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nexports.EXITING = EXITING;\n\nvar Transition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context.transitionGroup; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n var _proto = Transition.prototype;\n\n _proto.getChildContext = function getChildContext() {\n return {\n transitionGroup: null // allows for nested Transitions\n\n };\n };\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n }; // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n var node = _reactDom.default.findDOMNode(this);\n\n if (nextStatus === ENTERING) {\n this.performEnter(node, mounting);\n } else {\n this.performExit(node);\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(node, mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context.transitionGroup ? this.context.transitionGroup.isMounting : mounting;\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node);\n });\n return;\n }\n\n this.props.onEnter(node, appearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(node, appearing);\n\n _this2.onTransitionEnd(node, enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node, appearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit(node) {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts(); // no exit animation skip right to EXITED\n\n if (!exit) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n return;\n }\n\n this.props.onExit(node);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(node);\n\n _this3.onTransitionEnd(node, timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(node, timeout, handler) {\n this.setNextCallback(handler);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n this.props.addEndListener(node, this.nextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\"]); // filter props for Transtition\n\n\n delete childProps.in;\n delete childProps.mountOnEnter;\n delete childProps.unmountOnExit;\n delete childProps.appear;\n delete childProps.enter;\n delete childProps.exit;\n delete childProps.timeout;\n delete childProps.addEndListener;\n delete childProps.onEnter;\n delete childProps.onEntering;\n delete childProps.onEntered;\n delete childProps.onExit;\n delete childProps.onExiting;\n delete childProps.onExited;\n\n if (typeof children === 'function') {\n return children(status, childProps);\n }\n\n var child = _react.default.Children.only(children);\n\n return _react.default.cloneElement(child, childProps);\n };\n\n return Transition;\n}(_react.default.Component);\n\nTransition.contextTypes = {\n transitionGroup: PropTypes.object\n};\nTransition.childContextTypes = {\n transitionGroup: function transitionGroup() {}\n};\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`, `'unmounted'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * \n * {state => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * Normally a component is not transitioned if it is shown when the `` component mounts.\n * If you want to transition on the first mount set `appear` to `true`, and the\n * component will transition in as soon as the `` mounts.\n *\n * > Note: there are no specific \"appear\" states. `appear` only adds an additional `enter` transition.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = _PropTypes.timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. **Note:** Timeouts are still used as a fallback if provided.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func // Name the function so it is clearer in the documentation\n\n} : {};\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = 0;\nTransition.EXITED = 1;\nTransition.ENTERING = 2;\nTransition.ENTERED = 3;\nTransition.EXITING = 4;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(Transition);\n\nexports.default = _default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _ChildMapping = require(\"./utils/ChildMapping\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n /**\n * The `` component manages a set of transition components\n * (`` and ``) in a list. Like with the transition\n * components, `` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the ``.\n *\n * Note that `` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\n};\n\nvar TransitionGroup =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_assertThisInitialized(_this))); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.getChildContext = function getChildContext() {\n return {\n transitionGroup: {\n isMounting: !this.appeared\n }\n };\n };\n\n _proto.componentDidMount = function componentDidMount() {\n this.appeared = true;\n this.mounted = true;\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? (0, _ChildMapping.getInitialChildMapping)(nextProps, handleExited) : (0, _ChildMapping.getNextChildMapping)(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n };\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = (0, _ChildMapping.getChildMapping)(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return children;\n }\n\n return _react.default.createElement(Component, props, children);\n };\n\n return TransitionGroup;\n}(_react.default.Component);\n\nTransitionGroup.childContextTypes = {\n transitionGroup: _propTypes.default.object.isRequired\n};\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `` renders a `
    ` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `
    ` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: _propTypes.default.any,\n\n /**\n * A set of `` components, that are toggled `in` and out as they\n * leave. the `` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `` as\n * with our `` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: _propTypes.default.node,\n\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: _propTypes.default.bool,\n\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: _propTypes.default.bool,\n\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: _propTypes.default.bool,\n\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: _propTypes.default.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(TransitionGroup);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];","'use strict';\n\nvar React = require('react');\nvar ReactDOM = require('react-dom');\nvar PropTypes = require('prop-types');\nvar className = require('classnames');\nvar debounce = require('lodash.debounce');\nvar isEqual = require('lodash.isequal');\nvar createReactClass = require('create-react-class');\n\nfunction normalizeLineEndings(str) {\n\tif (!str) return str;\n\treturn str.replace(/\\r\\n|\\r/g, '\\n');\n}\n\nvar CodeMirror = createReactClass({\n\tpropTypes: {\n\t\tautoFocus: PropTypes.bool,\n\t\tclassName: PropTypes.any,\n\t\tcodeMirrorInstance: PropTypes.func,\n\t\tdefaultValue: PropTypes.string,\n\t\tname: PropTypes.string,\n\t\tonChange: PropTypes.func,\n\t\tonCursorActivity: PropTypes.func,\n\t\tonFocusChange: PropTypes.func,\n\t\tonScroll: PropTypes.func,\n\t\toptions: PropTypes.object,\n\t\tpath: PropTypes.string,\n\t\tvalue: PropTypes.string,\n\t\tpreserveScrollPosition: PropTypes.bool\n\t},\n\tgetDefaultProps: function getDefaultProps() {\n\t\treturn {\n\t\t\tpreserveScrollPosition: false\n\t\t};\n\t},\n\tgetCodeMirrorInstance: function getCodeMirrorInstance() {\n\t\treturn this.props.codeMirrorInstance || require('codemirror');\n\t},\n\tgetInitialState: function getInitialState() {\n\t\treturn {\n\t\t\tisFocused: false\n\t\t};\n\t},\n\tcomponentWillMount: function componentWillMount() {\n\t\tthis.componentWillReceiveProps = debounce(this.componentWillReceiveProps, 0);\n\t\tif (this.props.path) {\n\t\t\tconsole.error('Warning: react-codemirror: the `path` prop has been changed to `name`');\n\t\t}\n\t},\n\tcomponentDidMount: function componentDidMount() {\n\t\tvar codeMirrorInstance = this.getCodeMirrorInstance();\n\t\tthis.codeMirror = codeMirrorInstance.fromTextArea(this.textareaNode, this.props.options);\n\t\tthis.codeMirror.on('change', this.codemirrorValueChanged);\n\t\tthis.codeMirror.on('cursorActivity', this.cursorActivity);\n\t\tthis.codeMirror.on('focus', this.focusChanged.bind(this, true));\n\t\tthis.codeMirror.on('blur', this.focusChanged.bind(this, false));\n\t\tthis.codeMirror.on('scroll', this.scrollChanged);\n\t\tthis.codeMirror.setValue(this.props.defaultValue || this.props.value || '');\n\t},\n\tcomponentWillUnmount: function componentWillUnmount() {\n\t\t// is there a lighter-weight way to remove the cm instance?\n\t\tif (this.codeMirror) {\n\t\t\tthis.codeMirror.toTextArea();\n\t\t}\n\t},\n\tcomponentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n\t\tif (this.codeMirror && nextProps.value !== undefined && nextProps.value !== this.props.value && normalizeLineEndings(this.codeMirror.getValue()) !== normalizeLineEndings(nextProps.value)) {\n\t\t\tif (this.props.preserveScrollPosition) {\n\t\t\t\tvar prevScrollPosition = this.codeMirror.getScrollInfo();\n\t\t\t\tthis.codeMirror.setValue(nextProps.value);\n\t\t\t\tthis.codeMirror.scrollTo(prevScrollPosition.left, prevScrollPosition.top);\n\t\t\t} else {\n\t\t\t\tthis.codeMirror.setValue(nextProps.value);\n\t\t\t}\n\t\t}\n\t\tif (typeof nextProps.options === 'object') {\n\t\t\tfor (var optionName in nextProps.options) {\n\t\t\t\tif (nextProps.options.hasOwnProperty(optionName)) {\n\t\t\t\t\tthis.setOptionIfChanged(optionName, nextProps.options[optionName]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tsetOptionIfChanged: function setOptionIfChanged(optionName, newValue) {\n\t\tvar oldValue = this.codeMirror.getOption(optionName);\n\t\tif (!isEqual(oldValue, newValue)) {\n\t\t\tthis.codeMirror.setOption(optionName, newValue);\n\t\t}\n\t},\n\tgetCodeMirror: function getCodeMirror() {\n\t\treturn this.codeMirror;\n\t},\n\tfocus: function focus() {\n\t\tif (this.codeMirror) {\n\t\t\tthis.codeMirror.focus();\n\t\t}\n\t},\n\tfocusChanged: function focusChanged(focused) {\n\t\tthis.setState({\n\t\t\tisFocused: focused\n\t\t});\n\t\tthis.props.onFocusChange && this.props.onFocusChange(focused);\n\t},\n\tcursorActivity: function cursorActivity(cm) {\n\t\tthis.props.onCursorActivity && this.props.onCursorActivity(cm);\n\t},\n\tscrollChanged: function scrollChanged(cm) {\n\t\tthis.props.onScroll && this.props.onScroll(cm.getScrollInfo());\n\t},\n\tcodemirrorValueChanged: function codemirrorValueChanged(doc, change) {\n\t\tif (this.props.onChange && change.origin !== 'setValue') {\n\t\t\tthis.props.onChange(doc.getValue(), change);\n\t\t}\n\t},\n\trender: function render() {\n\t\tvar _this = this;\n\n\t\tvar editorClassName = className('ReactCodeMirror', this.state.isFocused ? 'ReactCodeMirror--focused' : null, this.props.className);\n\t\treturn React.createElement(\n\t\t\t'div',\n\t\t\t{ className: editorClassName },\n\t\t\tReact.createElement('textarea', {\n\t\t\t\tref: function (ref) {\n\t\t\t\t\treturn _this.textareaNode = ref;\n\t\t\t\t},\n\t\t\t\tname: this.props.name || this.props.path,\n\t\t\t\tdefaultValue: this.props.value,\n\t\t\t\tautoComplete: 'off',\n\t\t\t\tautoFocus: this.props.autoFocus\n\t\t\t})\n\t\t);\n\t}\n});\n\nmodule.exports = CodeMirror;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _scrollbar = require('./scrollbar');\n\nvar _scrollbar2 = _interopRequireDefault(_scrollbar);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _scrollbar2.default;\nmodule.exports = exports['default'];","/** @license React v16.10.2\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var h=require(\"object-assign\"),n=\"function\"===typeof Symbol&&Symbol.for,p=n?Symbol.for(\"react.element\"):60103,q=n?Symbol.for(\"react.portal\"):60106,r=n?Symbol.for(\"react.fragment\"):60107,t=n?Symbol.for(\"react.strict_mode\"):60108,u=n?Symbol.for(\"react.profiler\"):60114,v=n?Symbol.for(\"react.provider\"):60109,w=n?Symbol.for(\"react.context\"):60110,x=n?Symbol.for(\"react.forward_ref\"):60112,y=n?Symbol.for(\"react.suspense\"):60113,aa=n?Symbol.for(\"react.suspense_list\"):60120,ba=n?Symbol.for(\"react.memo\"):\n60115,ca=n?Symbol.for(\"react.lazy\"):60116;n&&Symbol.for(\"react.fundamental\");n&&Symbol.for(\"react.responder\");n&&Symbol.for(\"react.scope\");var z=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction A(a){for(var b=a.message,c=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+b,d=1;dP.length&&P.push(a)}\nfunction S(a,b,c,d){var e=typeof a;if(\"undefined\"===e||\"boolean\"===e)a=null;var g=!1;if(null===a)g=!0;else switch(e){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return c(d,a,\"\"===b?\".\"+T(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var l=0;lb}return!1}function B(a,b,c,d,e,f){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f}var C={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){C[a]=new B(a,0,!1,a,null,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];C[b]=new B(b,1,!1,a[1],null,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){C[a]=new B(a,2,!1,a.toLowerCase(),null,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){C[a]=new B(a,2,!1,a,null,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){C[a]=new B(a,3,!1,a.toLowerCase(),null,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){C[a]=new B(a,3,!0,a,null,!1)});[\"capture\",\"download\"].forEach(function(a){C[a]=new B(a,4,!1,a,null,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){C[a]=new B(a,6,!1,a,null,!1)});[\"rowSpan\",\"start\"].forEach(function(a){C[a]=new B(a,5,!1,a.toLowerCase(),null,!1)});var rb=/[\\-:]([a-z])/g;function sb(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(rb,\nsb);C[b]=new B(b,1,!1,a,null,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(rb,sb);C[b]=new B(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(rb,sb);C[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){C[a]=new B(a,1,!1,a.toLowerCase(),null,!1)});\nC.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){C[a]=new B(a,1,!1,a.toLowerCase(),null,!0)});function tb(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}\nfunction ub(a,b,c,d){var e=C.hasOwnProperty(b)?C[b]:null;var f=null!==e?0===e.type:d?!1:!(2=b.length))throw t(Error(93));b=b[0]}c=b}null==c&&(c=\"\")}a._wrapperState={initialValue:tb(c)}}\nfunction Mb(a,b){var c=tb(b.value),d=tb(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function Nb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var Ob={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction Pb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function Qb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?Pb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar Rb,Sb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==Ob.svg||\"innerHTML\"in a)a.innerHTML=b;else{Rb=Rb||document.createElement(\"div\");Rb.innerHTML=\"\"+b.valueOf().toString()+\"\";for(b=Rb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction Tb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}function Ub(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Vb={animationend:Ub(\"Animation\",\"AnimationEnd\"),animationiteration:Ub(\"Animation\",\"AnimationIteration\"),animationstart:Ub(\"Animation\",\"AnimationStart\"),transitionend:Ub(\"Transition\",\"TransitionEnd\")},Wb={},Xb={};\nXa&&(Xb=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Vb.animationend.animation,delete Vb.animationiteration.animation,delete Vb.animationstart.animation),\"TransitionEvent\"in window||delete Vb.transitionend.transition);function Yb(a){if(Wb[a])return Wb[a];if(!Vb[a])return a;var b=Vb[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Xb)return Wb[a]=b[c];return a}\nvar Zb=Yb(\"animationend\"),$b=Yb(\"animationiteration\"),ac=Yb(\"animationstart\"),bc=Yb(\"transitionend\"),dc=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),ec=!1,fc=[],gc=null,hc=null,ic=null,jc=new Map,kc=new Map,lc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput close cancel copy cut paste click change contextmenu reset submit\".split(\" \"),\nmc=\"focus blur dragenter dragleave mouseover mouseout pointerover pointerout gotpointercapture lostpointercapture\".split(\" \");function nc(a){var b=oc(a);lc.forEach(function(c){pc(c,a,b)});mc.forEach(function(c){pc(c,a,b)})}function qc(a,b,c,d){return{blockedOn:a,topLevelType:b,eventSystemFlags:c|32,nativeEvent:d}}\nfunction rc(a,b){switch(a){case \"focus\":case \"blur\":gc=null;break;case \"dragenter\":case \"dragleave\":hc=null;break;case \"mouseover\":case \"mouseout\":ic=null;break;case \"pointerover\":case \"pointerout\":jc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":kc.delete(b.pointerId)}}function sc(a,b,c,d,e){if(null===a||a.nativeEvent!==e)return qc(b,c,d,e);a.eventSystemFlags|=d;return a}\nfunction tc(a,b,c,d){switch(b){case \"focus\":return gc=sc(gc,a,b,c,d),!0;case \"dragenter\":return hc=sc(hc,a,b,c,d),!0;case \"mouseover\":return ic=sc(ic,a,b,c,d),!0;case \"pointerover\":var e=d.pointerId;jc.set(e,sc(jc.get(e)||null,a,b,c,d));return!0;case \"gotpointercapture\":return e=d.pointerId,kc.set(e,sc(kc.get(e)||null,a,b,c,d)),!0}return!1}function uc(a){if(null!==a.blockedOn)return!1;var b=vc(a.topLevelType,a.eventSystemFlags,a.nativeEvent);return null!==b?(a.blockedOn=b,!1):!0}\nfunction wc(a,b,c){uc(a)&&c.delete(b)}function xc(){for(ec=!1;0this.eventPool.length&&this.eventPool.push(a)}function Oc(a){a.eventPool=[];a.getPooled=Pc;a.release=Qc}var Rc=F.extend({animationName:null,elapsedTime:null,pseudoElement:null}),Sc=F.extend({clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),Tc=F.extend({view:null,detail:null}),Uc=Tc.extend({relatedTarget:null});\nfunction Vc(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}\nvar Wc={Esc:\"Escape\",Spacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},Xc={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",\n116:\"F5\",117:\"F6\",118:\"F7\",119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},Yc={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Zc(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Yc[a])?!!b[a]:!1}function $c(){return Zc}\nvar ad=Tc.extend({key:function(a){if(a.key){var b=Wc[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=Vc(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?Xc[a.keyCode]||\"Unidentified\":\"\"},location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:$c,charCode:function(a){return\"keypress\"===a.type?Vc(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?Vc(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),bd=0,cd=0,dd=!1,fd=!1,gd=Tc.extend({screenX:null,screenY:null,clientX:null,clientY:null,pageX:null,pageY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:$c,button:null,buttons:null,relatedTarget:function(a){return a.relatedTarget||(a.fromElement===a.srcElement?a.toElement:a.fromElement)},movementX:function(a){if(\"movementX\"in a)return a.movementX;var b=bd;bd=a.screenX;return dd?\"mousemove\"===a.type?a.screenX-\nb:0:(dd=!0,0)},movementY:function(a){if(\"movementY\"in a)return a.movementY;var b=cd;cd=a.screenY;return fd?\"mousemove\"===a.type?a.screenY-b:0:(fd=!0,0)}}),hd=gd.extend({pointerId:null,width:null,height:null,pressure:null,tangentialPressure:null,tiltX:null,tiltY:null,twist:null,pointerType:null,isPrimary:null}),id=gd.extend({dataTransfer:null}),jd=Tc.extend({touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:$c}),kd=F.extend({propertyName:null,\nelapsedTime:null,pseudoElement:null}),ld=gd.extend({deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},deltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:null,deltaMode:null}),md=[[\"blur\",\"blur\",0],[\"cancel\",\"cancel\",0],[\"click\",\"click\",0],[\"close\",\"close\",0],[\"contextmenu\",\"contextMenu\",0],[\"copy\",\"copy\",0],[\"cut\",\"cut\",0],[\"auxclick\",\"auxClick\",0],[\"dblclick\",\"doubleClick\",0],[\"dragend\",\"dragEnd\",\n0],[\"dragstart\",\"dragStart\",0],[\"drop\",\"drop\",0],[\"focus\",\"focus\",0],[\"input\",\"input\",0],[\"invalid\",\"invalid\",0],[\"keydown\",\"keyDown\",0],[\"keypress\",\"keyPress\",0],[\"keyup\",\"keyUp\",0],[\"mousedown\",\"mouseDown\",0],[\"mouseup\",\"mouseUp\",0],[\"paste\",\"paste\",0],[\"pause\",\"pause\",0],[\"play\",\"play\",0],[\"pointercancel\",\"pointerCancel\",0],[\"pointerdown\",\"pointerDown\",0],[\"pointerup\",\"pointerUp\",0],[\"ratechange\",\"rateChange\",0],[\"reset\",\"reset\",0],[\"seeked\",\"seeked\",0],[\"submit\",\"submit\",0],[\"touchcancel\",\"touchCancel\",\n0],[\"touchend\",\"touchEnd\",0],[\"touchstart\",\"touchStart\",0],[\"volumechange\",\"volumeChange\",0],[\"drag\",\"drag\",1],[\"dragenter\",\"dragEnter\",1],[\"dragexit\",\"dragExit\",1],[\"dragleave\",\"dragLeave\",1],[\"dragover\",\"dragOver\",1],[\"mousemove\",\"mouseMove\",1],[\"mouseout\",\"mouseOut\",1],[\"mouseover\",\"mouseOver\",1],[\"pointermove\",\"pointerMove\",1],[\"pointerout\",\"pointerOut\",1],[\"pointerover\",\"pointerOver\",1],[\"scroll\",\"scroll\",1],[\"toggle\",\"toggle\",1],[\"touchmove\",\"touchMove\",1],[\"wheel\",\"wheel\",1],[\"abort\",\"abort\",\n2],[Zb,\"animationEnd\",2],[$b,\"animationIteration\",2],[ac,\"animationStart\",2],[\"canplay\",\"canPlay\",2],[\"canplaythrough\",\"canPlayThrough\",2],[\"durationchange\",\"durationChange\",2],[\"emptied\",\"emptied\",2],[\"encrypted\",\"encrypted\",2],[\"ended\",\"ended\",2],[\"error\",\"error\",2],[\"gotpointercapture\",\"gotPointerCapture\",2],[\"load\",\"load\",2],[\"loadeddata\",\"loadedData\",2],[\"loadedmetadata\",\"loadedMetadata\",2],[\"loadstart\",\"loadStart\",2],[\"lostpointercapture\",\"lostPointerCapture\",2],[\"playing\",\"playing\",2],[\"progress\",\n\"progress\",2],[\"seeking\",\"seeking\",2],[\"stalled\",\"stalled\",2],[\"suspend\",\"suspend\",2],[\"timeupdate\",\"timeUpdate\",2],[bc,\"transitionEnd\",2],[\"waiting\",\"waiting\",2]],nd={},od={},pd=0;for(;pd=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Vd(c)}}\nfunction Xd(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Xd(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}function Yd(){for(var a=window,b=Ud();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Ud(a.document)}return b}\nfunction Zd(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}var $d=\"$\",ae=\"/$\",be=\"$?\",ce=\"$!\",de=null,ee=null;function fe(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}\nfunction ge(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}var he=\"function\"===typeof setTimeout?setTimeout:void 0,ie=\"function\"===typeof clearTimeout?clearTimeout:void 0;function je(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break}return a}\nfunction ke(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(c===$d||c===ce||c===be){if(0===b)return a;b--}else c===ae&&b++}a=a.previousSibling}return null}var le=Math.random().toString(36).slice(2),me=\"__reactInternalInstance$\"+le,ne=\"__reactEventHandlers$\"+le,oe=\"__reactContainere$\"+le;\nfunction Cd(a){var b=a[me];if(b)return b;for(var c=a.parentNode;c;){if(b=c[oe]||c[me]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=ke(a);null!==a;){if(c=a[me])return c;a=ke(a)}return b}a=c;c=a.parentNode}return null}function pe(a){a=a[me]||a[oe];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function qe(a){if(5===a.tag||6===a.tag)return a.stateNode;throw t(Error(33));}function re(a){return a[ne]||null}var se=null,te=null,ue=null;\nfunction ve(){if(ue)return ue;var a,b=te,c=b.length,d,e=\"value\"in se?se.value:se.textContent,f=e.length;for(a=0;a=Ae),De=String.fromCharCode(32),Ee={beforeInput:{phasedRegistrationNames:{bubbled:\"onBeforeInput\",captured:\"onBeforeInputCapture\"},dependencies:[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]},compositionEnd:{phasedRegistrationNames:{bubbled:\"onCompositionEnd\",captured:\"onCompositionEndCapture\"},dependencies:\"blur compositionend keydown keypress keyup mousedown\".split(\" \")},compositionStart:{phasedRegistrationNames:{bubbled:\"onCompositionStart\",\ncaptured:\"onCompositionStartCapture\"},dependencies:\"blur compositionstart keydown keypress keyup mousedown\".split(\" \")},compositionUpdate:{phasedRegistrationNames:{bubbled:\"onCompositionUpdate\",captured:\"onCompositionUpdateCapture\"},dependencies:\"blur compositionupdate keydown keypress keyup mousedown\".split(\" \")}},Fe=!1;\nfunction Ge(a,b){switch(a){case \"keyup\":return-1!==ye.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"blur\":return!0;default:return!1}}function He(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var Ie=!1;function Je(a,b){switch(a){case \"compositionend\":return He(b);case \"keypress\":if(32!==b.which)return null;Fe=!0;return De;case \"textInput\":return a=b.data,a===De&&Fe?null:a;default:return null}}\nfunction Ke(a,b){if(Ie)return\"compositionend\"===a||!ze&&Ge(a,b)?(a=ve(),ue=te=se=null,Ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=document.documentMode,kf={select:{phasedRegistrationNames:{bubbled:\"onSelect\",captured:\"onSelectCapture\"},dependencies:\"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange\".split(\" \")}},lf=null,mf=null,nf=null,of=!1;\nfunction pf(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if(of||null==lf||lf!==Ud(c))return null;c=lf;\"selectionStart\"in c&&Zd(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return nf&&hf(nf,c)?null:(nf=c,a=F.getPooled(kf.select,mf,a,b),a.type=\"select\",a.target=lf,Lc(a),a)}\nvar qf={eventTypes:kf,extractEvents:function(a,b,c,d){var e=d.window===d?d.document:9===d.nodeType?d:d.ownerDocument,f;if(!(f=!e)){a:{e=oc(e);f=ja.onSelect;for(var g=0;gsf||(a.current=rf[sf],rf[sf]=null,sf--)}\nfunction I(a,b){sf++;rf[sf]=a.current;a.current=b}var tf={},J={current:tf},K={current:!1},uf=tf;function vf(a,b){var c=a.type.contextTypes;if(!c)return tf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function N(a){a=a.childContextTypes;return null!==a&&void 0!==a}\nfunction wf(a){H(K,a);H(J,a)}function xf(a){H(K,a);H(J,a)}function zf(a,b,c){if(J.current!==tf)throw t(Error(168));I(J,b,a);I(K,c,a)}function Af(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw t(Error(108),Va(b)||\"Unknown\",e);return n({},c,{},d)}function Bf(a){var b=a.stateNode;b=b&&b.__reactInternalMemoizedMergedChildContext||tf;uf=J.current;I(J,b,a);I(K,K.current,a);return!0}\nfunction Cf(a,b,c){var d=a.stateNode;if(!d)throw t(Error(169));c?(b=Af(a,b,uf),d.__reactInternalMemoizedMergedChildContext=b,H(K,a),H(J,a),I(J,b,a)):H(K,a);I(K,c,a)}\nvar Df=r.unstable_runWithPriority,Ef=r.unstable_scheduleCallback,Ff=r.unstable_cancelCallback,Gf=r.unstable_shouldYield,Hf=r.unstable_requestPaint,If=r.unstable_now,Jf=r.unstable_getCurrentPriorityLevel,Kf=r.unstable_ImmediatePriority,Lf=r.unstable_UserBlockingPriority,Mf=r.unstable_NormalPriority,Nf=r.unstable_LowPriority,Of=r.unstable_IdlePriority,Pf={},Qf=void 0!==Hf?Hf:function(){},Rf=null,Sf=null,Tf=!1,Uf=If(),Vf=1E4>Uf?If:function(){return If()-Uf};\nfunction Wf(){switch(Jf()){case Kf:return 99;case Lf:return 98;case Mf:return 97;case Nf:return 96;case Of:return 95;default:throw t(Error(332));}}function Xf(a){switch(a){case 99:return Kf;case 98:return Lf;case 97:return Mf;case 96:return Nf;case 95:return Of;default:throw t(Error(332));}}function Yf(a,b){a=Xf(a);return Df(a,b)}function Zf(a,b,c){a=Xf(a);return Ef(a,b,c)}function $f(a){null===Rf?(Rf=[a],Sf=Ef(Kf,ag)):Rf.push(a);return Pf}function bg(){if(null!==Sf){var a=Sf;Sf=null;Ff(a)}ag()}\nfunction ag(){if(!Tf&&null!==Rf){Tf=!0;var a=0;try{var b=Rf;Yf(99,function(){for(;a=b&&(mg=!0),a.firstContext=null)}\nfunction ng(a,b){if(gg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)gg=a,b=1073741823;b={context:a,observedBits:b,next:null};if(null===fg){if(null===eg)throw t(Error(308));fg=b;eg.dependencies={expirationTime:0,firstContext:b,responders:null}}else fg=fg.next=b}return a._currentValue}var og=!1;\nfunction pg(a){return{baseState:a,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function qg(a){return{baseState:a.baseState,firstUpdate:a.firstUpdate,lastUpdate:a.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}\nfunction rg(a,b){return{expirationTime:a,suspenseConfig:b,tag:0,payload:null,callback:null,next:null,nextEffect:null}}function sg(a,b){null===a.lastUpdate?a.firstUpdate=a.lastUpdate=b:(a.lastUpdate.next=b,a.lastUpdate=b)}\nfunction tg(a,b){var c=a.alternate;if(null===c){var d=a.updateQueue;var e=null;null===d&&(d=a.updateQueue=pg(a.memoizedState))}else d=a.updateQueue,e=c.updateQueue,null===d?null===e?(d=a.updateQueue=pg(a.memoizedState),e=c.updateQueue=pg(c.memoizedState)):d=a.updateQueue=qg(e):null===e&&(e=c.updateQueue=qg(d));null===e||d===e?sg(d,b):null===d.lastUpdate||null===e.lastUpdate?(sg(d,b),sg(e,b)):(sg(d,b),e.lastUpdate=b)}\nfunction ug(a,b){var c=a.updateQueue;c=null===c?a.updateQueue=pg(a.memoizedState):vg(a,c);null===c.lastCapturedUpdate?c.firstCapturedUpdate=c.lastCapturedUpdate=b:(c.lastCapturedUpdate.next=b,c.lastCapturedUpdate=b)}function vg(a,b){var c=a.alternate;null!==c&&b===c.updateQueue&&(b=a.updateQueue=qg(b));return b}\nfunction wg(a,b,c,d,e,f){switch(c.tag){case 1:return a=c.payload,\"function\"===typeof a?a.call(f,d,e):a;case 3:a.effectTag=a.effectTag&-4097|64;case 0:a=c.payload;e=\"function\"===typeof a?a.call(f,d,e):a;if(null===e||void 0===e)break;return n({},d,e);case 2:og=!0}return d}\nfunction xg(a,b,c,d,e){og=!1;b=vg(a,b);for(var f=b.baseState,g=null,h=0,k=b.firstUpdate,l=f;null!==k;){var m=k.expirationTime;my?(z=q,q=null):z=q.sibling;var p=w(e,q,h[y],k);if(null===p){null===q&&(q=z);break}a&&\nq&&null===p.alternate&&b(e,q);g=f(p,g,y);null===m?l=p:m.sibling=p;m=p;q=z}if(y===h.length)return c(e,q),l;if(null===q){for(;yy?(z=q,q=null):z=q.sibling;var M=w(e,q,p.value,k);if(null===M){null===q&&(q=z);break}a&&q&&null===M.alternate&&b(e,q);g=f(M,g,y);null===m?l=M:m.sibling=M;m=M;q=z}if(p.done)return c(e,q),l;if(null===q){for(;!p.done;y++,p=h.next())p=A(e,p.value,k),null!==p&&(g=f(p,g,y),null===m?l=p:m.sibling=p,m=p);return l}for(q=d(e,q);!p.done;y++,p=h.next())p=L(q,e,y,p.value,k),null!==p&&(a&&null!==\np.alternate&&q.delete(null===p.key?y:p.key),g=f(p,g,y),null===m?l=p:m.sibling=p,m=p);a&&q.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===Ha&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case Fa:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){if(7===k.tag?f.type===Ha:k.elementType===f.type){c(a,k.sibling);d=e(k,f.type===Ha?f.props.children:f.props,h);d.ref=Og(a,k,f);d.return=a;a=d;break a}c(a,\nk);break}else b(a,k);k=k.sibling}f.type===Ha?(d=Vg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Tg(f.type,f.key,f.props,null,a.mode,h),h.ref=Og(a,d,f),h.return=a,a=h)}return g(a);case Ga:a:{for(k=f.key;null!==d;){if(d.key===k){if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[],h);d.return=a;a=d;break a}c(a,d);break}else b(a,d);d=d.sibling}d=Ug(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\n\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f,h),d.return=a,a=d):(c(a,d),d=Sg(f,a.mode,h),d.return=a,a=d),g(a);if(Ng(f))return wb(a,d,f,h);if(Ta(f))return M(a,d,f,h);l&&Pg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 0:throw a=a.type,t(Error(152),a.displayName||a.name||\"Component\");}return c(a,d)}}var Wg=Qg(!0),Xg=Qg(!1),Yg={},Zg={current:Yg},$g={current:Yg},ah={current:Yg};function bh(a){if(a===Yg)throw t(Error(174));return a}\nfunction ch(a,b){I(ah,b,a);I($g,a,a);I(Zg,Yg,a);var c=b.nodeType;switch(c){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:Qb(null,\"\");break;default:c=8===c?b.parentNode:b,b=c.namespaceURI||null,c=c.tagName,b=Qb(b,c)}H(Zg,a);I(Zg,b,a)}function dh(a){H(Zg,a);H($g,a);H(ah,a)}function eh(a){bh(ah.current);var b=bh(Zg.current);var c=Qb(b,a.type);b!==c&&(I($g,a,a),I(Zg,c,a))}function fh(a){$g.current===a&&(H(Zg,a),H($g,a))}var O={current:0};\nfunction gh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||c.data===be||c.data===ce))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if((b.effectTag&64)!==D)return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}function hh(a,b){return{responder:a,props:b}}\nvar ih=Da.ReactCurrentDispatcher,jh=0,kh=null,P=null,lh=null,mh=null,Q=null,nh=null,oh=0,ph=null,qh=0,rh=!1,sh=null,th=0;function uh(){throw t(Error(321));}function vh(a,b){if(null===b)return!1;for(var c=0;coh&&(oh=m,zg(oh))):(yg(m,k.suspenseConfig),f=k.eagerReducer===a?k.eagerState:a(f,k.action));g=k;k=k.next}while(null!==k&&k!==d);l||(h=g,e=f);ff(f,b.memoizedState)||(mg=!0);b.memoizedState=f;b.baseUpdate=h;b.baseState=e;c.lastRenderedState=f}return[b.memoizedState,c.dispatch]}\nfunction Ih(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};null===ph?(ph={lastEffect:null},ph.lastEffect=a.next=a):(b=ph.lastEffect,null===b?ph.lastEffect=a.next=a:(c=b.next,b.next=a,a.next=c,ph.lastEffect=a));return a}function Jh(a,b,c,d){var e=Eh();qh|=a;e.memoizedState=Ih(b,c,void 0,void 0===d?null:d)}\nfunction Kh(a,b,c,d){var e=Fh();d=void 0===d?null:d;var f=void 0;if(null!==P){var g=P.memoizedState;f=g.destroy;if(null!==d&&vh(d,g.deps)){Ih(0,c,f,d);return}}qh|=a;e.memoizedState=Ih(b,c,f,d)}function Lh(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function Mh(){}\nfunction Nh(a,b,c){if(!(25>th))throw t(Error(301));var d=a.alternate;if(a===kh||null!==d&&d===kh)if(rh=!0,a={expirationTime:jh,suspenseConfig:null,action:c,eagerReducer:null,eagerState:null,next:null},null===sh&&(sh=new Map),c=sh.get(b),void 0===c)sh.set(b,a);else{for(b=c;null!==b.next;)b=b.next;b.next=a}else{var e=Fg(),f=Cg.suspense;e=Gg(e,a,f);f={expirationTime:e,suspenseConfig:f,action:c,eagerReducer:null,eagerState:null,next:null};var g=b.last;if(null===g)f.next=f;else{var h=g.next;null!==h&&\n(f.next=h);g.next=f}b.last=f;if(0===a.expirationTime&&(null===d||0===d.expirationTime)&&(d=b.lastRenderedReducer,null!==d))try{var k=b.lastRenderedState,l=d(k,c);f.eagerReducer=d;f.eagerState=l;if(ff(l,k))return}catch(m){}finally{}Hg(a,e)}}\nvar zh={readContext:ng,useCallback:uh,useContext:uh,useEffect:uh,useImperativeHandle:uh,useLayoutEffect:uh,useMemo:uh,useReducer:uh,useRef:uh,useState:uh,useDebugValue:uh,useResponder:uh},xh={readContext:ng,useCallback:function(a,b){Eh().memoizedState=[a,void 0===b?null:b];return a},useContext:ng,useEffect:function(a,b){return Jh(516,192,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Jh(4,36,Lh.bind(null,b,a),c)},useLayoutEffect:function(a,b){return Jh(4,\n36,a,b)},useMemo:function(a,b){var c=Eh();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Eh();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={last:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=Nh.bind(null,kh,a);return[d.memoizedState,a]},useRef:function(a){var b=Eh();a={current:a};return b.memoizedState=a},useState:function(a){var b=Eh();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={last:null,\ndispatch:null,lastRenderedReducer:Gh,lastRenderedState:a};a=a.dispatch=Nh.bind(null,kh,a);return[b.memoizedState,a]},useDebugValue:Mh,useResponder:hh},yh={readContext:ng,useCallback:function(a,b){var c=Fh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&vh(b,d[1]))return d[0];c.memoizedState=[a,b];return a},useContext:ng,useEffect:function(a,b){return Kh(516,192,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Kh(4,36,Lh.bind(null,b,a),c)},\nuseLayoutEffect:function(a,b){return Kh(4,36,a,b)},useMemo:function(a,b){var c=Fh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&vh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a},useReducer:Hh,useRef:function(){return Fh().memoizedState},useState:function(a){return Hh(Gh,a)},useDebugValue:Mh,useResponder:hh},Oh=null,Ph=null,Qh=!1;\nfunction Rh(a,b){var c=Sh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function Th(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction Uh(a){if(Qh){var b=Ph;if(b){var c=b;if(!Th(a,b)){b=je(c.nextSibling);if(!b||!Th(a,b)){a.effectTag=a.effectTag&~Ac|E;Qh=!1;Oh=a;return}Rh(Oh,c)}Oh=a;Ph=je(b.firstChild)}else a.effectTag=a.effectTag&~Ac|E,Qh=!1,Oh=a}}function Vh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;Oh=a}\nfunction Wh(a){if(a!==Oh)return!1;if(!Qh)return Vh(a),Qh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!ge(b,a.memoizedProps))for(b=Ph;b;)Rh(a,b),b=je(b.nextSibling);Vh(a);if(13===a.tag)if(a=a.memoizedState,a=null!==a?a.dehydrated:null,null===a)a=Ph;else a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(c===ae){if(0===b){a=je(a.nextSibling);break a}b--}else c!==$d&&c!==ce&&c!==be||b++}a=a.nextSibling}a=null}else a=Oh?je(a.stateNode.nextSibling):null;Ph=a;return!0}\nfunction Xh(){Ph=Oh=null;Qh=!1}var Yh=Da.ReactCurrentOwner,mg=!1;function R(a,b,c,d){b.child=null===a?Xg(b,null,c,d):Wg(b,a.child,c,d)}function Zh(a,b,c,d,e){c=c.render;var f=b.ref;lg(b,e);d=wh(a,b,c,d,f,e);if(null!==a&&!mg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),$h(a,b,e);b.effectTag|=1;R(a,b,d,e);return b.child}\nfunction ai(a,b,c,d,e,f){if(null===a){var g=c.type;if(\"function\"===typeof g&&!bi(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,ci(a,b,g,d,e,f);a=Tg(c.type,null,d,null,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(eb)&&rj.set(a,b)))}}\nfunction wj(a,b){a.expirationTimea?b:a}\nfunction Z(a){if(0!==a.lastExpiredTime)a.callbackExpirationTime=1073741823,a.callbackPriority=99,a.callbackNode=$f(xj.bind(null,a));else{var b=Aj(a),c=a.callbackNode;if(0===b)null!==c&&(a.callbackNode=null,a.callbackExpirationTime=0,a.callbackPriority=90);else{var d=Fg();1073741823===b?d=99:1===b||2===b?d=95:(d=10*(1073741821-b)-10*(1073741821-d),d=0>=d?99:250>=d?98:5250>=d?97:95);if(null!==c){var e=a.callbackPriority;if(a.callbackExpirationTime===b&&e>=d)return;c!==Pf&&Ff(c)}a.callbackExpirationTime=\nb;a.callbackPriority=d;b=1073741823===b?$f(xj.bind(null,a)):Zf(d,Cj.bind(null,a),{timeout:10*(1073741821-b)-Vf()});a.callbackNode=b}}}\nfunction Cj(a,b){uj=0;if(b)return b=Fg(),Dj(a,b),Z(a),null;var c=Aj(a);if(0!==c){b=a.callbackNode;if((T&(Zi|$i))!==S)throw t(Error(327));Ej();a===U&&c===W||Fj(a,c);if(null!==V){var d=T;T|=Zi;var e=Gj(a);do try{Hj();break}catch(h){Ij(a,h)}while(1);hg();T=d;Wi.current=e;if(X===bj)throw b=hj,Fj(a,c),yj(a,c),Z(a),b;if(null===V)switch(e=a.finishedWork=a.current.alternate,a.finishedExpirationTime=c,Jj(a,c),d=X,U=null,d){case aj:case bj:throw t(Error(345));case cj:if(2!==c){Dj(a,2);break}Kj(a);break;case dj:yj(a,\nc);d=a.lastSuspendedTime;c===d&&(a.nextKnownPendingLevel=Lj(e));if(1073741823===ij&&(e=Mi+nj-Vf(),10=c){a.lastPingedTime=c;Fj(a,c);break}}f=Aj(a);if(0!==f&&f!==c)break;if(0!==d&&d!==c){a.lastPingedTime=d;break}a.timeoutHandle=he(Kj.bind(null,a),e);break}Kj(a);break;case ej:yj(a,c);d=a.lastSuspendedTime;c===d&&(a.nextKnownPendingLevel=Lj(e));if(mj&&(e=a.lastPingedTime,0===e||e>=c)){a.lastPingedTime=c;Fj(a,c);break}e=Aj(a);if(0!==e&&e!==c)break;if(0!==\nd&&d!==c){a.lastPingedTime=d;break}1073741823!==jj?d=10*(1073741821-jj)-Vf():1073741823===ij?d=0:(d=10*(1073741821-ij)-5E3,e=Vf(),c=10*(1073741821-c)-e,d=e-d,0>d&&(d=0),d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*Vi(d/1960))-d,c=d?d=0:(e=g.busyDelayMs|0,f=Vf()-(10*(1073741821-f)-(g.timeoutMs|0||5E3)),d=f<=e?0:e+d-f);\nif(10=b&&(Zf(97,function(){c._onComplete();return null}),X=gj)}function Oj(){if(null!==rj){var a=rj;rj=null;a.forEach(function(a,c){Dj(c,a);Z(c)});bg()}}function Pj(a,b){var c=T;T|=1;try{return a(b)}finally{T=c,T===S&&bg()}}function Qj(a,b,c,d){var e=T;T|=4;try{return Yf(98,a.bind(null,b,c,d))}finally{T=e,T===S&&bg()}}\nfunction Rj(a,b){var c=T;T&=-2;T|=Yi;try{return a(b)}finally{T=c,T===S&&bg()}}\nfunction Fj(a,b){a.finishedWork=null;a.finishedExpirationTime=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,ie(c));if(null!==V)for(c=V.return;null!==c;){var d=c;switch(d.tag){case 1:var e=d.type.childContextTypes;null!==e&&void 0!==e&&wf(d);break;case 3:dh(d);xf(d);break;case 5:fh(d);break;case 4:dh(d);break;case 13:H(O,d);break;case 19:H(O,d);break;case 10:jg(d)}c=c.return}U=a;V=Rg(a.current,null,b);W=b;X=aj;hj=null;jj=ij=1073741823;kj=null;lj=0;mj=!1}\nfunction Ij(a,b){do{try{hg();Ah();if(null===V||null===V.return)return X=bj,hj=b,null;a:{var c=a,d=V.return,e=V,f=b;b=W;e.effectTag|=2048;e.firstEffect=e.lastEffect=null;if(null!==f&&\"object\"===typeof f&&\"function\"===typeof f.then){var g=f,h=0!==(O.current&1),k=d;do{var l;if(l=13===k.tag){var m=k.memoizedState;if(null!==m)l=null!==m.dehydrated?!0:!1;else{var A=k.memoizedProps;l=void 0===A.fallback?!1:!0!==A.unstable_avoidThisFallback?!0:h?!1:!0}}if(l){var w=k.updateQueue;if(null===w){var L=new Set;\nL.add(g);k.updateQueue=L}else w.add(g);if(0===(k.mode&2)){k.effectTag|=64;e.effectTag&=-2981;if(1===e.tag)if(null===e.alternate)e.tag=17;else{var wb=rg(1073741823,null);wb.tag=2;tg(e,wb)}e.expirationTime=1073741823;break a}f=void 0;e=b;var M=c.pingCache;null===M?(M=c.pingCache=new Pi,f=new Set,M.set(g,f)):(f=M.get(g),void 0===f&&(f=new Set,M.set(g,f)));if(!f.has(e)){f.add(e);var q=Sj.bind(null,c,g,e);g.then(q,q)}k.effectTag|=4096;k.expirationTime=b;break a}k=k.return}while(null!==k);f=Error((Va(e.type)||\n\"A React component\")+\" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a component higher in the tree to provide a loading indicator or placeholder to display.\"+Wa(e))}X!==fj&&(X=cj);f=ti(f,e);k=d;do{switch(k.tag){case 3:g=f;k.effectTag|=4096;k.expirationTime=b;var y=Qi(k,g,b);ug(k,y);break a;case 1:g=f;var z=k.type,p=k.stateNode;if((k.effectTag&64)===D&&(\"function\"===typeof z.getDerivedStateFromError||null!==p&&\"function\"===typeof p.componentDidCatch&&\n(null===Ui||!Ui.has(p)))){k.effectTag|=4096;k.expirationTime=b;var u=Ti(k,g,b);ug(k,u);break a}}k=k.return}while(null!==k)}V=Tj(V)}catch(v){b=v;continue}break}while(1)}function Gj(){var a=Wi.current;Wi.current=zh;return null===a?zh:a}function yg(a,b){alj&&(lj=a)}function Mj(){for(;null!==V;)V=Uj(V)}function Hj(){for(;null!==V&&!Gf();)V=Uj(V)}\nfunction Uj(a){var b=Vj(a.alternate,a,W);a.memoizedProps=a.pendingProps;null===b&&(b=Tj(a));Xi.current=null;return b}\nfunction Tj(a){V=a;do{var b=V.alternate;a=V.return;if((V.effectTag&2048)===D){a:{var c=b;b=V;var d=W,e=b.pendingProps;switch(b.tag){case 2:break;case 16:break;case 15:case 0:break;case 1:N(b.type)&&wf(b);break;case 3:dh(b);xf(b);d=b.stateNode;d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);(null===c||null===c.child)&&Wh(b)&&mi(b);oi(b);break;case 5:fh(b);d=bh(ah.current);var f=b.type;if(null!==c&&null!=b.stateNode)pi(c,b,f,e,d),c.ref!==b.ref&&(b.effectTag|=128);else if(e){var g=\nbh(Zg.current);if(Wh(b)){e=b;f=void 0;c=e.stateNode;var h=e.type,k=e.memoizedProps;c[me]=e;c[ne]=k;switch(h){case \"iframe\":case \"object\":case \"embed\":G(\"load\",c);break;case \"video\":case \"audio\":for(var l=0;l\\x3c/script>\",l=k.removeChild(k.firstChild)):\"string\"===typeof c.is?l=l.createElement(k,{is:c.is}):(l=l.createElement(k),\"select\"===k&&(k=l,c.multiple?k.multiple=!0:c.size&&(k.size=c.size))):l=l.createElementNS(g,k);k=l;k[me]=h;k[ne]=c;c=k;ni(c,b,!1,!1);b.stateNode=c;g=d;var m=Rd(f,e);switch(f){case \"iframe\":case \"object\":case \"embed\":G(\"load\",\nc);d=e;break;case \"video\":case \"audio\":for(d=0;de.tailExpiration&&1e&&(e=c),h>e&&(e=h),f=f.sibling;d.childExpirationTime=e}if(null!==b)return b;null!==a&&(a.effectTag&2048)===D&&(null===a.firstEffect&&(a.firstEffect=V.firstEffect),null!==V.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=V.firstEffect),a.lastEffect=V.lastEffect),1a?b:a}function Kj(a){var b=Wf();Yf(99,Wj.bind(null,a,b));return null}\nfunction Wj(a,b){Ej();if((T&(Zi|$i))!==S)throw t(Error(327));var c=a.finishedWork,d=a.finishedExpirationTime;if(null===c)return null;a.finishedWork=null;a.finishedExpirationTime=0;if(c===a.current)throw t(Error(177));a.callbackNode=null;a.callbackExpirationTime=0;a.callbackPriority=90;a.nextKnownPendingLevel=0;var e=Lj(c);a.firstPendingTime=e;d<=a.lastSuspendedTime?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:d<=a.firstSuspendedTime&&(a.firstSuspendedTime=d-1);d<=a.lastPingedTime&&\n(a.lastPingedTime=0);d<=a.lastExpiredTime&&(a.lastExpiredTime=0);a===U&&(V=U=null,W=0);1h&&(l=h,h=g,g=l),l=Wd(p,g),m=Wd(p,h),l&&m&&(1!==v.rangeCount||v.anchorNode!==l.node||v.anchorOffset!==l.offset||v.focusNode!==m.node||v.focusOffset!==m.offset)&&(u=u.createRange(),u.setStart(l.node,l.offset),v.removeAllRanges(),g>h?(v.addRange(u),v.extend(m.node,m.offset)):(u.setEnd(m.node,m.offset),v.addRange(u))))));u=[];for(v=p;v=v.parentNode;)1===v.nodeType&&u.push({element:v,left:v.scrollLeft,top:v.scrollTop});\"function\"===\ntypeof p.focus&&p.focus();for(p=0;p=c)return ji(a,b,c);I(O,O.current&\n1,b);b=$h(a,b,c);return null!==b?b.sibling:null}I(O,O.current&1,b);break;case 19:d=b.childExpirationTime>=c;if((a.effectTag&64)!==D){if(d)return li(a,b,c);b.effectTag|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null);I(O,O.current,b);if(!d)return null}return $h(a,b,c)}mg=!1}}else mg=!1;b.expirationTime=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=E);a=b.pendingProps;e=vf(b,J.current);lg(b,c);e=wh(null,b,d,a,e,c);b.effectTag|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;Ah();if(N(d)){var f=!0;Bf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Eg(b,d,g,a);e.updater=Ig;b.stateNode=e;e._reactInternalFiber=b;Mg(b,d,a,c);b=gi(null,b,d,!0,f,c)}else b.tag=0,R(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=E);a=b.pendingProps;Ua(e);if(1!==e._status)throw e._result;\ne=e._result;b.type=e;f=b.tag=ck(e);a=cg(e,a);switch(f){case 0:b=di(null,b,e,a,c);break;case 1:b=fi(null,b,e,a,c);break;case 11:b=Zh(null,b,e,a,c);break;case 14:b=ai(null,b,e,cg(e.type,a),d,c);break;default:throw t(Error(306),e,\"\");}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:cg(d,e),di(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:cg(d,e),fi(a,b,d,e,c);case 3:hi(b);d=b.updateQueue;if(null===d)throw t(Error(282));e=b.memoizedState;e=null!==e?e.element:\nnull;xg(b,d,b.pendingProps,null,c);d=b.memoizedState.element;if(d===e)Xh(),b=$h(a,b,c);else{if(e=b.stateNode.hydrate)Ph=je(b.stateNode.containerInfo.firstChild),Oh=b,e=Qh=!0;if(e)for(c=Xg(b,null,d,c),b.child=c;c;)c.effectTag=c.effectTag&~E|Ac,c=c.sibling;else R(a,b,d,c),Xh();b=b.child}return b;case 5:return eh(b),null===a&&Uh(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,ge(d,e)?g=null:null!==f&&ge(d,f)&&(b.effectTag|=16),ei(a,b),b.mode&4&&1!==c&&e.hidden?(b.expirationTime=\nb.childExpirationTime=1,b=null):(R(a,b,g,c),b=b.child),b;case 6:return null===a&&Uh(b),null;case 13:return ji(a,b,c);case 4:return ch(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Wg(b,null,d,c):R(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:cg(d,e),Zh(a,b,d,e,c);case 7:return R(a,b,b.pendingProps,c),b.child;case 8:return R(a,b,b.pendingProps.children,c),b.child;case 12:return R(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;\ne=b.pendingProps;g=b.memoizedProps;f=e.value;ig(b,f);if(null!==g){var h=g.value;f=ff(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0;if(0===f){if(g.children===e.children&&!K.current){b=$h(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var k=h.dependencies;if(null!==k){g=h.child;for(var l=k.firstContext;null!==l;){if(l.context===d&&0!==(l.observedBits&f)){1===h.tag&&(l=rg(c,null),l.tag=2,tg(h,l));h.expirationTime=b&&a<=b}function yj(a,b){var c=a.firstSuspendedTime,d=a.lastSuspendedTime;cb||0===c)a.lastSuspendedTime=b;b<=a.lastPingedTime&&(a.lastPingedTime=0);b<=a.lastExpiredTime&&(a.lastExpiredTime=0)}\nfunction zj(a,b){b>a.firstPendingTime&&(a.firstPendingTime=b);var c=a.firstSuspendedTime;0!==c&&(b>=c?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:b>=a.lastSuspendedTime&&(a.lastSuspendedTime=b+1),b>a.nextKnownPendingLevel&&(a.nextKnownPendingLevel=b))}function Dj(a,b){var c=a.lastExpiredTime;if(0===c||c>b)a.lastExpiredTime=b}\nfunction gk(a,b,c,d,e,f){var g=b.current;a:if(c){c=c._reactInternalFiber;b:{if(Bc(c)!==c||1!==c.tag)throw t(Error(170));var h=c;do{switch(h.tag){case 3:h=h.stateNode.context;break b;case 1:if(N(h.type)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}}h=h.return}while(null!==h);throw t(Error(171));}if(1===c.tag){var k=c.type;if(N(k)){c=Af(c,k,h);break a}}c=h}else c=tf;null===b.context?b.context=c:b.pendingContext=c;b=f;e=rg(d,e);e.payload={element:a};b=void 0===b?null:b;null!==b&&\n(e.callback=b);tg(g,e);Hg(g,d);return d}function hk(a,b,c,d){var e=b.current,f=Fg(),g=Cg.suspense;e=Gg(f,e,g);return gk(a,b,c,e,g,d)}function ik(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function jk(a,b,c){var d=3=b;)c=d,d=d._next;a._next=d;null!==c&&(c._next=a)}return a};function qk(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}db=Pj;eb=Qj;fb=Nj;gb=function(a,b){var c=T;T|=2;try{return a(b)}finally{T=c,T===S&&bg()}};\nfunction rk(a,b){b||(b=a?9===a.nodeType?a.documentElement:a.firstChild:null,b=!(!b||1!==b.nodeType||!b.hasAttribute(\"data-reactroot\")));if(!b)for(var c;c=a.lastChild;)a.removeChild(c);return new nk(a,0,b?{hydrate:!0}:void 0)}\nfunction sk(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f._internalRoot;if(\"function\"===typeof e){var h=e;e=function(){var a=ik(g);h.call(a)}}hk(b,g,a,e)}else{f=c._reactRootContainer=rk(c,d);g=f._internalRoot;if(\"function\"===typeof e){var k=e;e=function(){var a=ik(g);k.call(a)}}Rj(function(){hk(b,g,a,e)})}return ik(g)}function tk(a,b){var c=2=H};l=function(){};exports.unstable_forceFrameRate=function(a){0>a||125L(n,c))void 0!==r&&0>L(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>L(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function L(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var O=[],P=[],Q=1,R=null,S=3,T=!1,U=!1,V=!1;\nfunction W(a){for(var b=M(P);null!==b;){if(null===b.callback)N(P);else if(b.startTime<=a)N(P),b.sortIndex=b.expirationTime,K(O,b);else break;b=M(P)}}function X(a){V=!1;W(a);if(!U)if(null!==M(O))U=!0,f(Y);else{var b=M(P);null!==b&&g(X,b.startTime-a)}}\nfunction Y(a,b){U=!1;V&&(V=!1,h());T=!0;var c=S;try{W(b);for(R=M(O);null!==R&&(!(R.expirationTime>b)||a&&!k());){var d=R.callback;if(null!==d){R.callback=null;S=R.priorityLevel;var e=d(R.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?R.callback=e:R===M(O)&&N(O);W(b)}else N(O);R=M(O)}if(null!==R)var m=!0;else{var n=M(P);null!==n&&g(X,n.startTime-b);m=!1}return m}finally{R=null,S=c,T=!1}}\nfunction Z(a){switch(a){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1E4;default:return 5E3}}var aa=l;exports.unstable_ImmediatePriority=1;exports.unstable_UserBlockingPriority=2;exports.unstable_NormalPriority=3;exports.unstable_IdlePriority=5;exports.unstable_LowPriority=4;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=S;S=a;try{return b()}finally{S=c}};\nexports.unstable_next=function(a){switch(S){case 1:case 2:case 3:var b=3;break;default:b=S}var c=S;S=b;try{return a()}finally{S=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();if(\"object\"===typeof c&&null!==c){var e=c.delay;e=\"number\"===typeof e&&0d?(a.sortIndex=e,K(P,a),null===M(O)&&a===M(P)&&(V?h():V=!0,g(X,e-d))):(a.sortIndex=c,K(O,a),U||T||(U=!0,f(Y)));return a};exports.unstable_cancelCallback=function(a){a.callback=null};\nexports.unstable_wrapCallback=function(a){var b=S;return function(){var c=S;S=b;try{return a.apply(this,arguments)}finally{S=c}}};exports.unstable_getCurrentPriorityLevel=function(){return S};exports.unstable_shouldYield=function(){var a=exports.unstable_now();W(a);var b=M(O);return b!==R&&null!==R&&null!==b&&null!==b.callback&&b.startTime<=a&&b.expirationTime result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a