diff --git a/convert.py b/convert.py index 2034fa2c..82ad4c38 100644 --- a/convert.py +++ b/convert.py @@ -1,6 +1,9 @@ #!/usr/bin/env python3 from pathlib import Path +import markdown +# https://github.com/FND/markdown-checklist +from markdown_checklist.extension import ChecklistExtension OUTPUT_DIR = 'html' @@ -18,6 +21,40 @@ CHAPTERS = ( 'troubleshooting', 'faq') +MD_EXTENSIONS = ['toc', 'meta', 'extra', 'footnotes', 'admonition', 'tables', + 'attr_list', ChecklistExtension()] + +TITLE = 'iRedMail Documentations' +LINK_INDEX = '  //  Document Index' +TEMPLATE = """ + + + + {title} + + + + + + + {body} + + + + + +""" + def _get_dir_languages(path): FILE_NAME = '_lang.md' @@ -35,6 +72,17 @@ def _get_dir_languages(path): return languages +def _get_content_dir(path): + files = sorted([p for p in Path(path).iterdir() if not '_summary' in str(p)]) + title = files.pop(-1) + return files, title + + +def _get_target_name(path): + path_html = path.stem.split('-')[1].replace('.', '_') + '.html' + return path_html + + def main(): current_dir = Path(__file__).parent output_dir = current_dir / OUTPUT_DIR @@ -42,6 +90,41 @@ def main(): languages = _get_dir_languages(current_dir) en = languages.pop('en_us') + index_md = [] + + for chapter in CHAPTERS: + path_chapter = en['path'] / chapter + files, file_title = _get_content_dir(path_chapter) + title_chapter = file_title.open(encoding='utf-8').readline() + index_md.append(f'### {title_chapter}') + index_md.append('') + for f in files: + name_html = _get_target_name(f) + path_html = OUTPUT_DIR + '/' + name_html + title = f.open(encoding='utf-8').readline() + index_md.append(f'- [{title[2:]}]({name_html})') + source = f.read_text(encoding='utf-8') + body = markdown.markdown(source, extensions=MD_EXTENSIONS) + data = dict( + title = title, + link_index = LINK_INDEX, + body = body + ) + html = TEMPLATE.format(**data) + Path(path_html).write_text(html, encoding='utf-8') + index_md.append('') + break + + path_html = OUTPUT_DIR + '/index.html' + body = markdown.markdown('\n'.join(index_md), extensions=MD_EXTENSIONS) + data = dict( + title = TITLE, + link_index = '', + body = body + ) + html = TEMPLATE.format(**data) + Path(path_html).write_text(html, encoding='utf-8') + return diff --git a/en_US/overview/0-why.build.your.own.mail.server.md b/en_US/overview/1-why.build.your.own.mail.server.md similarity index 100% rename from en_US/overview/0-why.build.your.own.mail.server.md rename to en_US/overview/1-why.build.your.own.mail.server.md diff --git a/en_US/overview/0-used.components.md b/en_US/overview/2-used.components.md similarity index 100% rename from en_US/overview/0-used.components.md rename to en_US/overview/2-used.components.md diff --git a/en_US/overview/0-network.ports.md b/en_US/overview/3-network.ports.md similarity index 100% rename from en_US/overview/0-network.ports.md rename to en_US/overview/3-network.ports.md diff --git a/html/index.html b/html/index.html index 70d6c5d0..8644e484 100644 --- a/html/index.html +++ b/html/index.html @@ -1,11 +1,11 @@ - - - iRedMail Documentations - - - + + + iRedMail Documentations + + +
-

Some tutorials have been translated to different languages. Help translate more

-

Italiano / 简体中文 / Español /

-
-

Overview

+ + + +

Overview

-

Install iRedMail

- -

Configure mail client applications

-
-

Quick MUA Settings

- -
- -

Release notes and upgrade tutorials

- -

iRedMail Easy - Web-based Deployment, Upgrade and Tech Support Platform

- -

Migrations

- -

How to

- -

Documents contributed by iRedMail users:

- -

Third-party integrations

-

Below tutorials are maintained by iRedMail project.

- -

Documents contributed by iRedMail users:

- -

Cluster

-

Documents contributed by iRedMail users:

- -

iRedAdmin-Pro

- -

Troubleshooting and Debug

- -

Frequently Asked Questions

- \ No newline at end of file + + + + + diff --git a/html/network_ports.html b/html/network_ports.html new file mode 100644 index 00000000..02d173bf --- /dev/null +++ b/html/network_ports.html @@ -0,0 +1,265 @@ + + + + + # Which network ports are open by iRedMail + + + + + + + +

Which network ports are open by iRedMail

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PortServiceSoftwareCommentAllow Public Access?
25smtpPostfixUsed for communication betweem mail servers. WARNING: This port MUST be open, otherwise you cannot receive email sent by other mail servers.YES (REQUIRED)
587submissionPostfixSMTP over TLS. Used by end users to send/submit email.YES (open to your end users)
110pop3DovecotUsed by end users to retrieve emails via POP3 protocol, secure connection over STARTTLS is enforced by default.YES (open to your end users)
995pop3sDovecotUsed by end users to retrieve emails via POP3 protocol over SSL.YES (open to your end users)
143imapDovecotUsed by end users to retrieve emails via IMAP protocol, secure connection over STARTTLS is enforced by default.YES (open to your end users)
993imapsDovecotUsed by end users to retrieve emails via IMAP protocol over SSL.YES (open to your end users)
24lmtpDovecotUsed to deliver email to local mailboxes via LMTP protocol.NO (listen on 127.0.0.1 by default)
4190managesieveDovecotSieve service used by end users to manage mail filters. Note: in old iRedMail releases, it's port 2000 (deprecated and not even listed in /etc/services file).NO (disabled by default and users are forced to manage mail filters with webmail)
80httpApache/NginxWeb service. Redirect to https by default.YES (open to your webmail users)
443httpsApache/NginxWeb service over over SSL, secure connection.YES (open to your webmail and ActiveSync users)
3306mysqlMySQL/MariaDBMySQL/MariaDB database serviceNO (listen on 127.0.0.1 by default)
5432postgresqlPostgreSQLPostgreSQL database serviceNO (listen on 127.0.0.1 by default)
389ldapOpenLDAP (or OpenBSD ldapd)LDAP service, STARTTLS is available for secure connection.NO (listen on 127.0.0.1 by default)
636ldapsOpenLDAP (or OpenBSD ldapd)LDAP service over SSL. Deprecated, port 389 with STARTTLS is recommended.NO (Not enabled by default)
10024Amavisd-newUsed to scan inbound messages, includes spam/virus scanning, DKIM verification, applying spam policy.NO (listen on 127.0.0.1 by default)
10025smtpPostfixUsed by Amavisd to inject scanned emails back to Postfix queue.NO (listen on 127.0.0.1 by default)
10026Amavisd-newUsed to scan outbound messages, includes spam/virus scanning, DKIM signing, applying spam policy.NO (listen on 127.0.0.1 by default)
10027Amavisd-newUsed by mlmmj mailing list manager, it bypasses spam/virus/header/banned checks by default, but have DKIM signing enabled.NO (listen on 127.0.0.1 by default)
10028PostfixUsed by Amavisd-new to handle email message sent by mlmmj mailing list manager. Introduced in iRedMail-0.9.9.NO (listen on 127.0.0.1 by default)
9998Amavisd-newUsed to manage quarantined emails.NO (listen on 127.0.0.1 by default)
7777iRedAPDPostfix policy service for greylisting, whitelisting, blacklists, throttling, etcNO (listen on 127.0.0.1 by default)
7778iRedAPDSRS sender address rewritting.NO (listen on 127.0.0.1 by default)
7779iRedAPDSRS recipient address rewritting.NO (listen on 127.0.0.1 by default)
7790httpmlmmjadminRESTful API server used to manage mlmmj mailing lists. Introduced in iRedMail-0.9.8.NO (listen on 127.0.0.1 by default)
7791httpiredadminiRedAdmin (standalone uwsgi instance). Introduced in iRedMail-0.9.9.NO (listen on 127.0.0.1 by default)
20000SOGoSOGo groupwareNO (listen on 127.0.0.1 by default)
11211MemcachedA distributed, high performance memory object caching system. Currently used by only SOGo Groupware.NO (listen on 127.0.0.1 by default)
12340DovecotDovecot quota status. Introduced in iRedMail-1.0.NO (listen on 127.0.0.1 by default)
24242DovecotDovecot service status. Introduced in iRedMail-0.9.8.NO (listen on 127.0.0.1 by default)
19999NetdataNetdata monitor. Introduced in iRedMail-0.9.8.NO (listen on 127.0.0.1 by default)
+
+

Note

+ +
+ + + + + diff --git a/html/used_components.html b/html/used_components.html new file mode 100644 index 00000000..ebd57bb7 --- /dev/null +++ b/html/used_components.html @@ -0,0 +1,114 @@ + + + + + # Major open source softwares used in iRedMail + + + + + + + +

Major open source softwares used in iRedMail

+
+ +
+

Used Components

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameComment
PostfixMail Transfer Agent (MTA)
DovecotPOP3, IMAP and Managesieve server
Nginx, NginxWeb server
OpenLDAP, ldapd(8)LDAP server, used for storing mail accounts (optional)
MySQL, MariaDB, PostgreSQLSQL server used to store application data. Could be used to store mail accounts too.
mlmmjMailing list manager. Shipped in iRedMail-0.9.8 and later releases.
Amavisd-newInterface between Postfix and SpamAssassin, ClamAV.
SpamAssassinContent-based spam scanner
ClamAVVirus scanner
Roundcube webmailWebmail (PHP)
SOGo GroupwareA groupware which provides calendar (CalDAV), contact (CardDAV), tasks and ActiveSync services
Fail2banScans log files and bans IPs that show the malicious signs
iRedAPDA simple postfix policy server developed by iRedMail team, with SRS (Sender Rewrite Scheme) support.
+

The Big Picture

+

+

Mail Flow of Inbound Emails

+

+

Mail Flow of Outbound Emails

+

+

See also

+ + + + + + diff --git a/html/why_build_your_own_mail_server.html b/html/why_build_your_own_mail_server.html new file mode 100644 index 00000000..384890d5 --- /dev/null +++ b/html/why_build_your_own_mail_server.html @@ -0,0 +1,72 @@ + + + + + # Why build your own mail server instead of outsourcing to external entities + + + + + + + +

Why build your own mail server instead of outsourcing to external entities

+

Quote from Spamhaus news article:

+
+

outsourcing (the mail service) does not come without costs, even when the +outsourced service appears to be "free". Hidden costs include:

+ +
+ + + + + diff --git a/html_bk/404.html b/html_bk/404.html new file mode 100644 index 00000000..d11c1170 --- /dev/null +++ b/html_bk/404.html @@ -0,0 +1,9 @@ + + + + Page not found + + +

The page you're looking for does not exist. Redirecting to home page in 5 seconds.

+ + diff --git a/html/active.directory.html b/html_bk/active.directory.html similarity index 100% rename from html/active.directory.html rename to html_bk/active.directory.html diff --git a/html/activesync.android.html b/html_bk/activesync.android.html similarity index 100% rename from html/activesync.android.html rename to html_bk/activesync.android.html diff --git a/html/activesync.bb10.html b/html_bk/activesync.bb10.html similarity index 100% rename from html/activesync.bb10.html rename to html_bk/activesync.bb10.html diff --git a/html/activesync.ios.html b/html_bk/activesync.ios.html similarity index 100% rename from html/activesync.ios.html rename to html_bk/activesync.ios.html diff --git a/html/activesync.outlook.html b/html_bk/activesync.outlook.html similarity index 100% rename from html/activesync.outlook.html rename to html_bk/activesync.outlook.html diff --git a/html/additional.smtp.port-it_IT.html b/html_bk/additional.smtp.port-it_IT.html similarity index 100% rename from html/additional.smtp.port-it_IT.html rename to html_bk/additional.smtp.port-it_IT.html diff --git a/html/additional.smtp.port.html b/html_bk/additional.smtp.port.html similarity index 100% rename from html/additional.smtp.port.html rename to html_bk/additional.smtp.port.html diff --git a/html/allow.certain.users.to.send.email.as.different.user-it_IT.html b/html_bk/allow.certain.users.to.send.email.as.different.user-it_IT.html similarity index 100% rename from html/allow.certain.users.to.send.email.as.different.user-it_IT.html rename to html_bk/allow.certain.users.to.send.email.as.different.user-it_IT.html diff --git a/html/allow.certain.users.to.send.email.as.different.user.html b/html_bk/allow.certain.users.to.send.email.as.different.user.html similarity index 100% rename from html/allow.certain.users.to.send.email.as.different.user.html rename to html_bk/allow.certain.users.to.send.email.as.different.user.html diff --git a/html/allow.insecure.pop3.imap.smtp.connections-it_IT.html b/html_bk/allow.insecure.pop3.imap.smtp.connections-it_IT.html similarity index 100% rename from html/allow.insecure.pop3.imap.smtp.connections-it_IT.html rename to html_bk/allow.insecure.pop3.imap.smtp.connections-it_IT.html diff --git a/html/allow.insecure.pop3.imap.smtp.connections.html b/html_bk/allow.insecure.pop3.imap.smtp.connections.html similarity index 100% rename from html/allow.insecure.pop3.imap.smtp.connections.html rename to html_bk/allow.insecure.pop3.imap.smtp.connections.html diff --git a/html/allow.member.to.send.email.as.mail.list-it_IT.html b/html_bk/allow.member.to.send.email.as.mail.list-it_IT.html similarity index 100% rename from html/allow.member.to.send.email.as.mail.list-it_IT.html rename to html_bk/allow.member.to.send.email.as.mail.list-it_IT.html diff --git a/html/allow.member.to.send.email.as.mail.list-zh_CN.html b/html_bk/allow.member.to.send.email.as.mail.list-zh_CN.html similarity index 100% rename from html/allow.member.to.send.email.as.mail.list-zh_CN.html rename to html_bk/allow.member.to.send.email.as.mail.list-zh_CN.html diff --git a/html/allow.member.to.send.email.as.mail.list.html b/html_bk/allow.member.to.send.email.as.mail.list.html similarity index 100% rename from html/allow.member.to.send.email.as.mail.list.html rename to html_bk/allow.member.to.send.email.as.mail.list.html diff --git a/html/allow.send.without.smtp.auth.html b/html_bk/allow.send.without.smtp.auth.html similarity index 100% rename from html/allow.send.without.smtp.auth.html rename to html_bk/allow.send.without.smtp.auth.html diff --git a/html/allow.user.to.send.email.without.authentication-it_IT.html b/html_bk/allow.user.to.send.email.without.authentication-it_IT.html similarity index 100% rename from html/allow.user.to.send.email.without.authentication-it_IT.html rename to html_bk/allow.user.to.send.email.without.authentication-it_IT.html diff --git a/html/allow.user.to.send.email.without.authentication-zh_CN.html b/html_bk/allow.user.to.send.email.without.authentication-zh_CN.html similarity index 100% rename from html/allow.user.to.send.email.without.authentication-zh_CN.html rename to html_bk/allow.user.to.send.email.without.authentication-zh_CN.html diff --git a/html/allow.user.to.send.email.without.authentication.html b/html_bk/allow.user.to.send.email.without.authentication.html similarity index 100% rename from html/allow.user.to.send.email.without.authentication.html rename to html_bk/allow.user.to.send.email.without.authentication.html diff --git a/html/amavisd.per-recipient.policy.lookup-it_IT.html b/html_bk/amavisd.per-recipient.policy.lookup-it_IT.html similarity index 100% rename from html/amavisd.per-recipient.policy.lookup-it_IT.html rename to html_bk/amavisd.per-recipient.policy.lookup-it_IT.html diff --git a/html/amavisd.per-recipient.policy.lookup.html b/html_bk/amavisd.per-recipient.policy.lookup.html similarity index 100% rename from html/amavisd.per-recipient.policy.lookup.html rename to html_bk/amavisd.per-recipient.policy.lookup.html diff --git a/html/amavisd.sql.db.html b/html_bk/amavisd.sql.db.html similarity index 100% rename from html/amavisd.sql.db.html rename to html_bk/amavisd.sql.db.html diff --git a/html/amavisd.wblist-it_IT.html b/html_bk/amavisd.wblist-it_IT.html similarity index 100% rename from html/amavisd.wblist-it_IT.html rename to html_bk/amavisd.wblist-it_IT.html diff --git a/html/amavisd.wblist.html b/html_bk/amavisd.wblist.html similarity index 100% rename from html/amavisd.wblist.html rename to html_bk/amavisd.wblist.html diff --git a/html/authenticate.without.domain.name.html b/html_bk/authenticate.without.domain.name.html similarity index 100% rename from html/authenticate.without.domain.name.html rename to html_bk/authenticate.without.domain.name.html diff --git a/html/backup.restore.html b/html_bk/backup.restore.html similarity index 100% rename from html/backup.restore.html rename to html_bk/backup.restore.html diff --git a/html/backupmx.html b/html_bk/backupmx.html similarity index 100% rename from html/backupmx.html rename to html_bk/backupmx.html diff --git a/html/change.mail.attachment.size-it_IT.html b/html_bk/change.mail.attachment.size-it_IT.html similarity index 100% rename from html/change.mail.attachment.size-it_IT.html rename to html_bk/change.mail.attachment.size-it_IT.html diff --git a/html/change.mail.attachment.size-zh_CN.html b/html_bk/change.mail.attachment.size-zh_CN.html similarity index 100% rename from html/change.mail.attachment.size-zh_CN.html rename to html_bk/change.mail.attachment.size-zh_CN.html diff --git a/html/change.mail.attachment.size.html b/html_bk/change.mail.attachment.size.html similarity index 100% rename from html/change.mail.attachment.size.html rename to html_bk/change.mail.attachment.size.html diff --git a/html/change.mailbox.format.html b/html_bk/change.mailbox.format.html similarity index 100% rename from html/change.mailbox.format.html rename to html_bk/change.mailbox.format.html diff --git a/html/change.server.hostname-zh_CN.html b/html_bk/change.server.hostname-zh_CN.html similarity index 100% rename from html/change.server.hostname-zh_CN.html rename to html_bk/change.server.hostname-zh_CN.html diff --git a/html/change.server.hostname.html b/html_bk/change.server.hostname.html similarity index 100% rename from html/change.server.hostname.html rename to html_bk/change.server.hostname.html diff --git a/html/cluebringer.to.iredapd.html b/html_bk/cluebringer.to.iredapd.html similarity index 100% rename from html/cluebringer.to.iredapd.html rename to html_bk/cluebringer.to.iredapd.html diff --git a/html/completely.disable.amavisd.clamav.spamassassin-it_IT.html b/html_bk/completely.disable.amavisd.clamav.spamassassin-it_IT.html similarity index 100% rename from html/completely.disable.amavisd.clamav.spamassassin-it_IT.html rename to html_bk/completely.disable.amavisd.clamav.spamassassin-it_IT.html diff --git a/html/completely.disable.amavisd.clamav.spamassassin.html b/html_bk/completely.disable.amavisd.clamav.spamassassin.html similarity index 100% rename from html/completely.disable.amavisd.clamav.spamassassin.html rename to html_bk/completely.disable.amavisd.clamav.spamassassin.html diff --git a/html/concurrent.processing.html b/html_bk/concurrent.processing.html similarity index 100% rename from html/concurrent.processing.html rename to html_bk/concurrent.processing.html diff --git a/html/configure.thunderbird.html b/html_bk/configure.thunderbird.html similarity index 100% rename from html/configure.thunderbird.html rename to html_bk/configure.thunderbird.html diff --git a/html_bk/css/markdown.css b/html_bk/css/markdown.css new file mode 100755 index 00000000..8a1bcaa3 --- /dev/null +++ b/html_bk/css/markdown.css @@ -0,0 +1,460 @@ +body{ + margin: 0 auto; + font-family: 'PT Sans', Georgia, Palatino, serif; + line-height: 1; + max-width: 75%; + padding: 30px 0px 100px 0px; +} +h1, h2, h3, h4, h5 { + font-weight: bold; + margin-top: 24px; + margin-bottom: 24px; +} +p { + margin-bottom: 4px; + padding: 0; +} +h1 { font-size: 40px; } +h2 { font-size: 36px; padding-top: 24px;} +h3 { font-size: 24px; } +h4 { font-size: 21px; } +h5 { font-size: 18px; } + +h1 code { font-size: 40px; } +h2 code { font-size: 36px; } +h3 code { font-size: 24px; } +h4 code { font-size: 21px; } +h5 code { font-size: 18px; } + +a { + color: #0099ff; + margin: 0; + padding: 0; + vertical-align: baseline; + text-decoration: none; +} +a:hover { + text-decoration: none; + color: #ff6600; +} +a:visited { + color: purple; +} +ul, ol { + padding-left: 30px; + margin: 0; +} +li { + line-height: 24px; +} +li ul, li ul { + margin-left: 24px; +} +p, ul, ol { + font-size: 16px; + line-height: 24px; + /*max-width: 540px;*/ +} +pre { + padding: 0px 24px; + /*max-width: 800px;*/ + white-space: pre-wrap; +} +code { + font-family: Consolas, Monaco, Andale Mono, monospace; + line-height: 1.5; + font-size: 13px; +} +h3 code { font-size: 18px; } +aside { + display: block; + float: right; + /*width: 390px;*/ +} +blockquote { + border-left: 0.5em solid #eee; + padding: 0 1em; + margin-left:0; + font-style: italic; + /*max-width: 476px;*/ +} +blockquote cite { + font-size:14px; + line-height:20px; + color:#bfbfbf; +} +blockquote cite:before { + content: '\2014 \00A0'; +} + +blockquote p { + color: #666; + /*max-width: 460px;*/ +} +hr { + /*width: 540px;*/ + text-align: left; + margin: 0 auto 0 0; + color: #999; +} + +/* Code below this line is copyright Twitter Inc. */ + +button, .button, input, select, textarea { + font-size: 100%; + margin: 0; + vertical-align: baseline; + vertical-align: middle; +} +button, .button, input { + line-height: normal; + overflow: visible; +} +button::-moz-focus-inner, .button::-moz-focus-inner, input::-moz-focus-inner { + border: 0; + padding: 0; +} +button, +.button, +input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; + -webkit-appearance: button; +} +input[type=checkbox], input[type=radio] { + cursor: pointer; +} +/* override default chrome & firefox settings */ +input:not([type="image"]), textarea { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} + +input[type="search"] { + -webkit-appearance: textfield; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +label, +input, +select, +textarea { + font-family: 'PT Sans', Georgia, Palatino, serif; + font-size: 13px; + font-weight: normal; + line-height: normal; + margin-bottom: 18px; +} +input[type=checkbox], input[type=radio] { + cursor: pointer; + margin-bottom: 0; +} +input[type=text], +input[type=password], +textarea, +select { + display: inline-block; + width: 210px; + padding: 4px; + font-size: 13px; + font-weight: normal; + line-height: 18px; + height: 18px; + color: #808080; + border: 1px solid #ccc; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +select, input[type=file] { + height: 27px; + line-height: 27px; +} +textarea { + height: auto; +} + +/* grey out placeholders */ +:-moz-placeholder { + color: #bfbfbf; +} +::-webkit-input-placeholder { + color: #bfbfbf; +} + +input[type=text], +input[type=password], +select, +textarea { + -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; + -moz-transition: border linear 0.2s, box-shadow linear 0.2s; + transition: border linear 0.2s, box-shadow linear 0.2s; + -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); +} +input[type=text]:focus, input[type=password]:focus, textarea:focus { + outline: none; + border-color: rgba(82, 168, 236, 0.8); + -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 8px rgba(82, 168, 236, 0.6); + -moz-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 8px rgba(82, 168, 236, 0.6); + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 8px rgba(82, 168, 236, 0.6); +} + +/* buttons */ +button, .button { + display: inline-block; + padding: 4px 14px; + font-family: 'PT Sans', Georgia, Palatino, serif; + font-size: 13px; + line-height: 18px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + background-color: #0064cd; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd)); + background-image: -moz-linear-gradient(top, #049cdb, #0064cd); + background-image: -ms-linear-gradient(top, #049cdb, #0064cd); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd)); + background-image: -webkit-linear-gradient(top, #049cdb, #0064cd); + background-image: -o-linear-gradient(top, #049cdb, #0064cd); + background-image: linear-gradient(top, #049cdb, #0064cd); + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border: 1px solid #004b9a; + border-bottom-color: #003f81; + -webkit-transition: 0.1s linear all; + -moz-transition: 0.1s linear all; + transition: 0.1s linear all; + border-color: #0064cd #0064cd #003f81; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); +} +button:hover, .button:hover { + color: #fff; + background-position: 0 -15px; + text-decoration: none; +} +button:active, .button:active { + -webkit-box-shadow: inset 0 3px 7px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 3px 7px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 3px 7px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} +button::-moz-focus-inner, .button::-moz-focus-inner { + padding: 0; + border: 0; +} + +/* Customizations */ +h2, h3, h4, h5 { padding-top: 20px; } +.footer { padding-top: 40px; } +pre, code { + background: #f5f5f5; + border: 1px solid #ccc; + border-radius: 2px; + padding: 5px 10px 5px 10px; + word-wrap: normal; + font-size: 14px; + line-height: 25px; +} +code { padding: 1px 5px 1px 5px; } +pre>code { + margin: 0; + border: 0; + padding: 5px 10px 5px 0px; +} + +/* A fixed navigation bar */ +#navigation { + /*position: fixed;*/ + top: 0; + width: 70%; + height: 35px; + /* + text-align: center; + */ + padding-top: 15px; + /* + color: #ffffff; + */ + /* Adds shadow to the bottom of the bar */ + /* + -webkit-box-shadow: 0px 0px 8px 0px #000000; + -moz-box-shadow: 0px 0px 8px 0px #000000; + box-shadow: 0px 0px 8px 0px #000000; + */ + /* Adds the transparent background */ + /* + background-color: #000000; + */ +} + +#navigation a { + font-size: 20px; + /* + padding-left: 15px; + padding-right: 15px; + */ + text-decoration: none; +} + +#navigation a:hover { + color: #0099ff; +} + +th { font-style: bold; text-align: left; } + +.red { color: red; } +/* +code.bash { background-color: green; color: white; } +*/ +pre { margin-left: 30px; } +p, ul, ol { font-size: 17px; } +li { line-height: 26px; } + +.f_left { float: left; } +.f_right { float: right; } + +/* +.note { + background: #e7f2fa; + padding: 12px; + line-height: 24px; + margin-bottom: 24px; +} +.note .admonition-title { + background: #6ab0de; +} +.note p:last-child { + margin-bottom: 0; +} +*/ + +.note, .attention, .caution, .danger, .error, .hint, .important, .tip, .warning, .seealso, .admonition-todo { + padding: 12px; + line-height: 24px; + margin-bottom: 24px; + background: #e7f2fa; +} + +.admonition { margin-top: 20px; } +.admonition-title { + font-weight: bold; + display: block; + color: #fff; + margin: -12px; + padding: 6px 12px; + margin-bottom: 12px +} + +/* +.caution .admonition-title, +.danger .admonition-title, +.error .admonition-title, +.hint .admonition-title, +.important .admonition-title, +.tip .admonition-title, +.seealso .admonition-title, +.admonition-todo .admonition-title +*/ + +.note .admonition-title { background: #6ab0de; } +.warning .admonition-title { background: #f0b37e; } +.attention .admonition-title { display: none; } +.attention { background: #e7f2fa; } +.warning { background: #FFFFE1; } +.attention p { margin-top: 4px; } + +/* Table */ +table { border: 1px solid black; border-collapse: collapse;} +th { padding: 5px 10px 5px 10px; } +td { padding: 5px 10px 5px 10px; } +th, td { border: 1px solid black; } + +button, .button { font-size: 16px; padding: 5px 5px 5px 5px; } + +/* Style for API document */ +.api { + line-height: 18px; + padding: 3px 12px 0px 0px; + margin-top: 0px; + margin-bottom: 0px; +} +.api .admonition-title { + background-color: white; + padding: 0px 12px 0px 5px; +} + +.api code.url { background-color: white; color: black; display: inline-block; } +.api code.get, +.api code.post, +.api code.put, +.api code.delete, +.api code.has_params, +.api code.has_params_throttle, +.api code.has_params_greylisting, +.api code.has_params_greylisting_whitelists, +.api code.has_params_spampolicy, +.api code.has_params_wblist +{ + display: inline-block; + width: 60px; + text-align: center; +} +.api code.get { background-color: #0f6ab4; } +.api code.post { background-color: #10a54a; } +.api code.put { background-color: #c5862b; padding-left: 5px; padding-right: 5px;} +.api code.delete { background-color: #a41e22; } +.api code.upcoming { background-color: #0f6ab4; text-transform: uppercase; font-size: 12px; } +.api code.new { background-color: #10a54a; text-transform: uppercase; } +.api code.has_params, +.api code.has_params_throttle, +.api code.has_params_greylisting, +.api code.has_params_greylisting_whitelists, +.api code.has_params_spampolicy, +.api code.has_params_wblist +{ + background-color: #0064cd; + font-size: 12px; + float: right; + width: auto; + cursor: pointer; +} +.api code.comment { + color: black; + background-color: white; + border: 0px; + font-family: 'PT Sans', Georgia, Palatino, serif; + font-size: 16px; + font-style: normal; +} + +.api table { + border: 0px; + border-collapse: collapse; + /* + width: 100%; + */ + text-align: left; + line-height: 30px; + vertical-align: middle; + margin-bottom: 20px; +} +.api table thead { background-color: #ccc; } +.api th { padding: 0px 10px 0px 10px; } +.api td { padding: 0px 10px 0px 10px; } +/* END style for API Document */ + +ul .checklist { + list-style-type: none; + padding-left: 5px; +} diff --git a/html/dbmail.mysql.centos.html b/html_bk/dbmail.mysql.centos.html similarity index 100% rename from html/dbmail.mysql.centos.html rename to html_bk/dbmail.mysql.centos.html diff --git a/html/debug.amavisd-zh_CN.html b/html_bk/debug.amavisd-zh_CN.html similarity index 100% rename from html/debug.amavisd-zh_CN.html rename to html_bk/debug.amavisd-zh_CN.html diff --git a/html/debug.amavisd.html b/html_bk/debug.amavisd.html similarity index 100% rename from html/debug.amavisd.html rename to html_bk/debug.amavisd.html diff --git a/html/debug.cluebringer.html b/html_bk/debug.cluebringer.html similarity index 100% rename from html/debug.cluebringer.html rename to html_bk/debug.cluebringer.html diff --git a/html/debug.dovecot-zh_CN.html b/html_bk/debug.dovecot-zh_CN.html similarity index 100% rename from html/debug.dovecot-zh_CN.html rename to html_bk/debug.dovecot-zh_CN.html diff --git a/html/debug.dovecot.html b/html_bk/debug.dovecot.html similarity index 100% rename from html/debug.dovecot.html rename to html_bk/debug.dovecot.html diff --git a/html/debug.fail2ban.html b/html_bk/debug.fail2ban.html similarity index 100% rename from html/debug.fail2ban.html rename to html_bk/debug.fail2ban.html diff --git a/html/debug.iredapd.html b/html_bk/debug.iredapd.html similarity index 100% rename from html/debug.iredapd.html rename to html_bk/debug.iredapd.html diff --git a/html/debug.mysql.html b/html_bk/debug.mysql.html similarity index 100% rename from html/debug.mysql.html rename to html_bk/debug.mysql.html diff --git a/html/debug.nginx.html b/html_bk/debug.nginx.html similarity index 100% rename from html/debug.nginx.html rename to html_bk/debug.nginx.html diff --git a/html/debug.openldap.html b/html_bk/debug.openldap.html similarity index 100% rename from html/debug.openldap.html rename to html_bk/debug.openldap.html diff --git a/html/debug.postfix.html b/html_bk/debug.postfix.html similarity index 100% rename from html/debug.postfix.html rename to html_bk/debug.postfix.html diff --git a/html/debug.roundcubemail.html b/html_bk/debug.roundcubemail.html similarity index 100% rename from html/debug.roundcubemail.html rename to html_bk/debug.roundcubemail.html diff --git a/html/debug.sogo.html b/html_bk/debug.sogo.html similarity index 100% rename from html/debug.sogo.html rename to html_bk/debug.sogo.html diff --git a/html/disable.greylisting-it_IT.html b/html_bk/disable.greylisting-it_IT.html similarity index 100% rename from html/disable.greylisting-it_IT.html rename to html_bk/disable.greylisting-it_IT.html diff --git a/html/disable.greylisting-zh_CN.html b/html_bk/disable.greylisting-zh_CN.html similarity index 100% rename from html/disable.greylisting-zh_CN.html rename to html_bk/disable.greylisting-zh_CN.html diff --git a/html/disable.greylisting.html b/html_bk/disable.greylisting.html similarity index 100% rename from html/disable.greylisting.html rename to html_bk/disable.greylisting.html diff --git a/html/disable.spam.virus.scanning.for.outgoing.mails-it_IT.html b/html_bk/disable.spam.virus.scanning.for.outgoing.mails-it_IT.html similarity index 100% rename from html/disable.spam.virus.scanning.for.outgoing.mails-it_IT.html rename to html_bk/disable.spam.virus.scanning.for.outgoing.mails-it_IT.html diff --git a/html/disable.spam.virus.scanning.for.outgoing.mails-zh_CN.html b/html_bk/disable.spam.virus.scanning.for.outgoing.mails-zh_CN.html similarity index 100% rename from html/disable.spam.virus.scanning.for.outgoing.mails-zh_CN.html rename to html_bk/disable.spam.virus.scanning.for.outgoing.mails-zh_CN.html diff --git a/html/disable.spam.virus.scanning.for.outgoing.mails.html b/html_bk/disable.spam.virus.scanning.for.outgoing.mails.html similarity index 100% rename from html/disable.spam.virus.scanning.for.outgoing.mails.html rename to html_bk/disable.spam.virus.scanning.for.outgoing.mails.html diff --git a/html/dovecot.imapsieve.html b/html_bk/dovecot.imapsieve.html similarity index 100% rename from html/dovecot.imapsieve.html rename to html_bk/dovecot.imapsieve.html diff --git a/html/dovecot.master.user.html b/html_bk/dovecot.master.user.html similarity index 100% rename from html/dovecot.master.user.html rename to html_bk/dovecot.master.user.html diff --git a/html/ejabberd.openldap.ubuntu.html b/html_bk/ejabberd.openldap.ubuntu.html similarity index 100% rename from html/ejabberd.openldap.ubuntu.html rename to html_bk/ejabberd.openldap.ubuntu.html diff --git a/html/enable.dnsbl.html b/html_bk/enable.dnsbl.html similarity index 100% rename from html/enable.dnsbl.html rename to html_bk/enable.dnsbl.html diff --git a/html/enable.postscreen.html b/html_bk/enable.postscreen.html similarity index 100% rename from html/enable.postscreen.html rename to html_bk/enable.postscreen.html diff --git a/html/enable.smtp.auth.on.port.25-it_IT.html b/html_bk/enable.smtp.auth.on.port.25-it_IT.html similarity index 100% rename from html/enable.smtp.auth.on.port.25-it_IT.html rename to html_bk/enable.smtp.auth.on.port.25-it_IT.html diff --git a/html/enable.smtp.auth.on.port.25.html b/html_bk/enable.smtp.auth.on.port.25.html similarity index 100% rename from html/enable.smtp.auth.on.port.25.html rename to html_bk/enable.smtp.auth.on.port.25.html diff --git a/html/enable.smtps-it_IT.html b/html_bk/enable.smtps-it_IT.html similarity index 100% rename from html/enable.smtps-it_IT.html rename to html_bk/enable.smtps-it_IT.html diff --git a/html/enable.smtps.html b/html_bk/enable.smtps.html similarity index 100% rename from html/enable.smtps.html rename to html_bk/enable.smtps.html diff --git a/html/errors.html b/html_bk/errors.html similarity index 100% rename from html/errors.html rename to html_bk/errors.html diff --git a/html/fail2ban.sql.html b/html_bk/fail2ban.sql.html similarity index 100% rename from html/fail2ban.sql.html rename to html_bk/fail2ban.sql.html diff --git a/html/favicon.ico b/html_bk/favicon.ico similarity index 100% rename from html/favicon.ico rename to html_bk/favicon.ico diff --git a/html/file.locations.html b/html_bk/file.locations.html similarity index 100% rename from html/file.locations.html rename to html_bk/file.locations.html diff --git a/html/files/sogo/calentry.schema b/html_bk/files/sogo/calentry.schema similarity index 100% rename from html/files/sogo/calentry.schema rename to html_bk/files/sogo/calentry.schema diff --git a/html/files/sogo/calresource.schema b/html_bk/files/sogo/calresource.schema similarity index 100% rename from html/files/sogo/calresource.schema rename to html_bk/files/sogo/calresource.schema diff --git a/html/force.user.to.change.password.html b/html_bk/force.user.to.change.password.html similarity index 100% rename from html/force.user.to.change.password.html rename to html_bk/force.user.to.change.password.html diff --git a/html/haproxy.keepalived.glusterfs.html b/html_bk/haproxy.keepalived.glusterfs.html similarity index 100% rename from html/haproxy.keepalived.glusterfs.html rename to html_bk/haproxy.keepalived.glusterfs.html diff --git a/html/ignore.trash.folder.in.quota-zh_CN.html b/html_bk/ignore.trash.folder.in.quota-zh_CN.html similarity index 100% rename from html/ignore.trash.folder.in.quota-zh_CN.html rename to html_bk/ignore.trash.folder.in.quota-zh_CN.html diff --git a/html/ignore.trash.folder.in.quota.html b/html_bk/ignore.trash.folder.in.quota.html similarity index 100% rename from html/ignore.trash.folder.in.quota.html rename to html_bk/ignore.trash.folder.in.quota.html diff --git a/html_bk/images/ad/admin_account_1.png b/html_bk/images/ad/admin_account_1.png new file mode 100644 index 00000000..295a8c12 Binary files /dev/null and b/html_bk/images/ad/admin_account_1.png differ diff --git a/html_bk/images/ad/admin_account_2.png b/html_bk/images/ad/admin_account_2.png new file mode 100644 index 00000000..5f579f1a Binary files /dev/null and b/html_bk/images/ad/admin_account_2.png differ diff --git a/html_bk/images/ad/admin_account_3.png b/html_bk/images/ad/admin_account_3.png new file mode 100644 index 00000000..3c914aca Binary files /dev/null and b/html_bk/images/ad/admin_account_3.png differ diff --git a/html_bk/images/ad/admin_account_4.png b/html_bk/images/ad/admin_account_4.png new file mode 100644 index 00000000..2233b0b0 Binary files /dev/null and b/html_bk/images/ad/admin_account_4.png differ diff --git a/html_bk/images/ad/admin_account_5.png b/html_bk/images/ad/admin_account_5.png new file mode 100644 index 00000000..02db8b37 Binary files /dev/null and b/html_bk/images/ad/admin_account_5.png differ diff --git a/html_bk/images/ad/admin_account_6.png b/html_bk/images/ad/admin_account_6.png new file mode 100644 index 00000000..dcb9d9af Binary files /dev/null and b/html_bk/images/ad/admin_account_6.png differ diff --git a/html_bk/images/ad/admin_account_7.png b/html_bk/images/ad/admin_account_7.png new file mode 100644 index 00000000..c449e7fb Binary files /dev/null and b/html_bk/images/ad/admin_account_7.png differ diff --git a/html_bk/images/ad/create_ad_account_1.png b/html_bk/images/ad/create_ad_account_1.png new file mode 100644 index 00000000..c717f7fe Binary files /dev/null and b/html_bk/images/ad/create_ad_account_1.png differ diff --git a/html_bk/images/ad/create_ad_account_2.png b/html_bk/images/ad/create_ad_account_2.png new file mode 100644 index 00000000..d275df19 Binary files /dev/null and b/html_bk/images/ad/create_ad_account_2.png differ diff --git a/html_bk/images/ad/create_ad_account_3.png b/html_bk/images/ad/create_ad_account_3.png new file mode 100644 index 00000000..32354a23 Binary files /dev/null and b/html_bk/images/ad/create_ad_account_3.png differ diff --git a/html_bk/images/ad/create_ad_account_4.png b/html_bk/images/ad/create_ad_account_4.png new file mode 100644 index 00000000..570dd03e Binary files /dev/null and b/html_bk/images/ad/create_ad_account_4.png differ diff --git a/html_bk/images/ad/create_ad_account_5.png b/html_bk/images/ad/create_ad_account_5.png new file mode 100644 index 00000000..99387cbe Binary files /dev/null and b/html_bk/images/ad/create_ad_account_5.png differ diff --git a/html_bk/images/ad/create_ad_account_6.png b/html_bk/images/ad/create_ad_account_6.png new file mode 100644 index 00000000..950f7f44 Binary files /dev/null and b/html_bk/images/ad/create_ad_account_6.png differ diff --git a/html_bk/images/ad/read_only_account_1.png b/html_bk/images/ad/read_only_account_1.png new file mode 100644 index 00000000..cded969b Binary files /dev/null and b/html_bk/images/ad/read_only_account_1.png differ diff --git a/html_bk/images/ad/read_only_account_2.png b/html_bk/images/ad/read_only_account_2.png new file mode 100644 index 00000000..5f579f1a Binary files /dev/null and b/html_bk/images/ad/read_only_account_2.png differ diff --git a/html_bk/images/ad/read_only_account_3.png b/html_bk/images/ad/read_only_account_3.png new file mode 100644 index 00000000..e39a790f Binary files /dev/null and b/html_bk/images/ad/read_only_account_3.png differ diff --git a/html_bk/images/ad/read_only_account_4.png b/html_bk/images/ad/read_only_account_4.png new file mode 100644 index 00000000..c52b37e5 Binary files /dev/null and b/html_bk/images/ad/read_only_account_4.png differ diff --git a/html_bk/images/ad/read_only_account_5.png b/html_bk/images/ad/read_only_account_5.png new file mode 100644 index 00000000..c91dd48c Binary files /dev/null and b/html_bk/images/ad/read_only_account_5.png differ diff --git a/html_bk/images/ad/read_only_account_6.png b/html_bk/images/ad/read_only_account_6.png new file mode 100644 index 00000000..737c1c9c Binary files /dev/null and b/html_bk/images/ad/read_only_account_6.png differ diff --git a/html_bk/images/ad/read_only_account_7.png b/html_bk/images/ad/read_only_account_7.png new file mode 100644 index 00000000..fb08ffed Binary files /dev/null and b/html_bk/images/ad/read_only_account_7.png differ diff --git a/html_bk/images/ad/start-server-manager.png b/html_bk/images/ad/start-server-manager.png new file mode 100644 index 00000000..22027b80 Binary files /dev/null and b/html_bk/images/ad/start-server-manager.png differ diff --git a/html_bk/images/big.picture.png b/html_bk/images/big.picture.png new file mode 100644 index 00000000..6bb9ec96 Binary files /dev/null and b/html_bk/images/big.picture.png differ diff --git a/html_bk/images/cluster/contrib/iredmailhat10.png b/html_bk/images/cluster/contrib/iredmailhat10.png new file mode 100644 index 00000000..05af687d Binary files /dev/null and b/html_bk/images/cluster/contrib/iredmailhat10.png differ diff --git a/html_bk/images/flow.inbound.dot b/html_bk/images/flow.inbound.dot new file mode 100644 index 00000000..29163ed4 --- /dev/null +++ b/html_bk/images/flow.inbound.dot @@ -0,0 +1,47 @@ +// Flow of inbound mails +// +// Convert to png with Graphviz: +// dot -Tpng flow.inbound.dot -o flow.inbound.png +digraph inbound { + label="Flow of Inbound Mail" + + sender[label="Sender"] + sender_server[label="Sender Server"] + //postfix[label="Postfix (MTA)", style=filled] + postfix_postscreen[label="Postfix (postscreen)", style=filled] + postfix_smtpd[label="Postfix (smtpd)", style=filled] + //postfix_iredapd[label="Postfix (smtpd)"] + dovecot[label="Dovecot (POP3/IMAP/Sieve/LDA/LMTP/SASL)", style=filled] + iredapd[label="iRedAPD (Postfix Policy Server)", style=filled, shape=diamond] + db[label="OpenLDAP, MySQL/MariaDB/PostgreSQL", style=filled] + //amavisd[label="Amavisd", style=filled] + amavisd_10024[label="Amavisd (port 10024)", style=filled, shape=diamond] + postfix_queue_10025[label="Postfix queue", style=filled] + sa_clamav[label="SpamAssassin, ClamAV", style=filled] + mailboxes[label="Mailboxes"] + + // Flow of inbound emails + sender -> sender_server[style=dotted] + sender_server -> postfix_postscreen[label=" Enter iRedMail Server, Port 25", style=dotted] + postfix_postscreen -> sender_server[label=" REJECT", color=red] + postfix_postscreen -> postfix_smtpd + postfix_smtpd -> iredapd[label=" Greylisting \nWhitelisting \nBlacklisting \nThrottling \n SRS (Recipient Address Rewriting, port 7779) \n..."] + postfix_smtpd -> db[label="User verification"] + iredapd -> postfix_smtpd[label=" DUNNO \nREJECT \n451 (Greylisting) \nOK (Whitelisting)...", color=blue] + iredapd -> db[label="User verification"] + postfix_smtpd -> sender_server[label=" REJECT \n451 (Greylisting)", color=red] + postfix_smtpd -> amavisd_10024[label=" Spam/Virus scanning\nDKIM verification\nand more"] + amavisd_10024 -> postfix_smtpd[label=" DISCARD\nREJECT\nBOUNCE...", color=blue] + amavisd_10024 -> sa_clamav[label=" Spam/Virus Scanning \nDKIM verification \n...", dir="both"] + amavisd_10024 -> db[label=" User verification \nWhite/Blacklisting \nQuarantine Spam/Virus \n..."] + amavisd_10024 -> postfix_queue_10025[label="Re-inject scanned message to queue (Port 10025)"] + postfix_queue_10025 -> dovecot[label=" Pipe/LMTP"] + dovecot -> db[label=" User Authentication"] + dovecot -> mailboxes[label=" LDA, LMTP"] + dovecot -> postfix_smtpd[label=" REJECT (mailbox quota exceeded)", color=blue] + //end_users -> dovecot[label="Retrieve mails via POP3/IMAP"] + //end_users -> postfix[label="Send email (port 587)"] + //Webmail -> dovecot[label="Access mailbox on web browser (IMAP)"] + //Webmail -> postfix[label="Send email (port 587)"] + iRedAdmin -> db[label="Account management \nand more"] +} diff --git a/html_bk/images/flow.inbound.png b/html_bk/images/flow.inbound.png new file mode 100644 index 00000000..2c0a0ac1 Binary files /dev/null and b/html_bk/images/flow.inbound.png differ diff --git a/html_bk/images/flow.outbound.dot b/html_bk/images/flow.outbound.dot new file mode 100644 index 00000000..775b13bd --- /dev/null +++ b/html_bk/images/flow.outbound.dot @@ -0,0 +1,53 @@ +// Flow of outbound mails +// +// Convert to png with Graphviz: +// dot -Tpng flow.outbound.dot -o flow.outbound.png +digraph outbound { + label="Flow of Outbound Mail" + + sender[label="Sender"] + recipient[label="Recipient"] + rcpt_server[label="Recipient Server"] + + postfix_smtp[label="Postfix (smtp)", style=filled] + postfix_queue[label="Postfix (queue)", style=filled] + postfix_submission[label="Postfix (submission, port 587, TLS)", style=filled] + postfix_queue_10028[label="Postfix queue", style=filled] + + //postfix_iredapd[label="Postfix (smtpd)"] + dovecot[label="Dovecot (POP3/IMAP/Sieve/LDA/LMTP/SASL)", style=filled] + iredapd[label="iRedAPD (Postfix Policy Server)", style=filled, shape=diamond] + db[label="OpenLDAP, MySQL/MariaDB/PostgreSQL", style=filled] + sa_clamav[label="SpamAssassin, ClamAV", style=filled] + amavisd_10026[label="Amavisd (for submission, port 10026)", style=filled, shape=diamond] + amavisd_10027[label="Amavisd (for MLMMJ mailing list, port 10027)", style=filled, shape=diamond] + //mailboxes[label="Mailboxes"] + + sender -> postfix_submission[label=" Connects to iRedMail Server", style=dotted] + postfix_submission -> iredapd[label=" White/Blacklisting\n Throttling\n Sender Address Rewriting (SRS, port 7778)\n ..."] + iredapd -> postfix_submission[label=" DUNNO \nREJECT \n...", color=blue] + postfix_submission -> amavisd_10026[label=" Spam/Virus Scanning"] + amavisd_10026 -> sa_clamav[label=" Spam/Virus Scanning \nDKIM verification \n...", dir="both"] + amavisd_10026 -> postfix_queue[label=" Inject scanned message to Postfix queue"] + + postfix_queue -> postfix_smtp + postfix_smtp -> rcpt_server[label=" Leave iRedMail Server", style=dotted] + rcpt_server -> recipient[style=dotted] + + amavisd_10026 -> postfix_submission[label=" REJECT, BOUNCE, ... \n(Detected SPAM/VIRUS, ...)", color=blue] + + iredapd -> db[label=" User Verification\n Additional SQL/LDAP queries"] + amavisd_10026 -> db[label=" User verification \nWhite/Blacklisting \nQuarantine Spam/Virus \n..."] + postfix_submission -> db[label=" User Verification"] + + postfix_submission -> dovecot[label="User Authentication \n(Dovecot is SASL AUTH server)"] + dovecot -> db + + //postfix_submission -> sender[label=" REJECT, ...", color=red] + + // MLMMJ mailing list + postfix_submission -> amavisd_10027[label="Recipient is a mailing list"] + amavisd_10027 -> sa_clamav[label="Spam/Virus scanning\n DKIM signing\n ...", dir="both"] + amavisd_10027 -> postfix_queue_10028[label=" Inject scanned message to Postfix queue (Port 10028)"] + postfix_queue_10028 -> postfix_smtp +} diff --git a/html_bk/images/flow.outbound.png b/html_bk/images/flow.outbound.png new file mode 100644 index 00000000..c6615a1c Binary files /dev/null and b/html_bk/images/flow.outbound.png differ diff --git a/html_bk/images/installation/admin_pw.png b/html_bk/images/installation/admin_pw.png new file mode 100644 index 00000000..dbd28a77 Binary files /dev/null and b/html_bk/images/installation/admin_pw.png differ diff --git a/html_bk/images/installation/backends.png b/html_bk/images/installation/backends.png new file mode 100644 index 00000000..18816a87 Binary files /dev/null and b/html_bk/images/installation/backends.png differ diff --git a/html_bk/images/installation/backends_openbsd.png b/html_bk/images/installation/backends_openbsd.png new file mode 100644 index 00000000..8934b632 Binary files /dev/null and b/html_bk/images/installation/backends_openbsd.png differ diff --git a/html_bk/images/installation/first_domain.png b/html_bk/images/installation/first_domain.png new file mode 100644 index 00000000..fe9297ec Binary files /dev/null and b/html_bk/images/installation/first_domain.png differ diff --git a/html_bk/images/installation/ldap_suffix.png b/html_bk/images/installation/ldap_suffix.png new file mode 100644 index 00000000..30d07294 Binary files /dev/null and b/html_bk/images/installation/ldap_suffix.png differ diff --git a/html_bk/images/installation/mail_storage.png b/html_bk/images/installation/mail_storage.png new file mode 100644 index 00000000..7421b97e Binary files /dev/null and b/html_bk/images/installation/mail_storage.png differ diff --git a/html_bk/images/installation/optional_components.png b/html_bk/images/installation/optional_components.png new file mode 100644 index 00000000..5e9de6b3 Binary files /dev/null and b/html_bk/images/installation/optional_components.png differ diff --git a/html_bk/images/installation/review.png b/html_bk/images/installation/review.png new file mode 100644 index 00000000..ffad1a54 Binary files /dev/null and b/html_bk/images/installation/review.png differ diff --git a/html_bk/images/installation/web_servers.png b/html_bk/images/installation/web_servers.png new file mode 100644 index 00000000..63dc2be8 Binary files /dev/null and b/html_bk/images/installation/web_servers.png differ diff --git a/html_bk/images/installation/welcome.png b/html_bk/images/installation/welcome.png new file mode 100644 index 00000000..3d1a3497 Binary files /dev/null and b/html_bk/images/installation/welcome.png differ diff --git a/html_bk/images/iredadmin/activity_banned_ip_addresses.png b/html_bk/images/iredadmin/activity_banned_ip_addresses.png new file mode 100644 index 00000000..ac7bf455 Binary files /dev/null and b/html_bk/images/iredadmin/activity_banned_ip_addresses.png differ diff --git a/html_bk/images/iredadmin/activity_domain_sent.png b/html_bk/images/iredadmin/activity_domain_sent.png new file mode 100644 index 00000000..151e21f5 Binary files /dev/null and b/html_bk/images/iredadmin/activity_domain_sent.png differ diff --git a/html_bk/images/iredadmin/activity_search.png b/html_bk/images/iredadmin/activity_search.png new file mode 100644 index 00000000..263edecd Binary files /dev/null and b/html_bk/images/iredadmin/activity_search.png differ diff --git a/html_bk/images/iredadmin/admin_create.png b/html_bk/images/iredadmin/admin_create.png new file mode 100644 index 00000000..587438d5 Binary files /dev/null and b/html_bk/images/iredadmin/admin_create.png differ diff --git a/html_bk/images/iredadmin/admin_list.png b/html_bk/images/iredadmin/admin_list.png new file mode 100644 index 00000000..53ace6bf Binary files /dev/null and b/html_bk/images/iredadmin/admin_list.png differ diff --git a/html_bk/images/iredadmin/admin_profile_general.png b/html_bk/images/iredadmin/admin_profile_general.png new file mode 100644 index 00000000..a997612c Binary files /dev/null and b/html_bk/images/iredadmin/admin_profile_general.png differ diff --git a/html_bk/images/iredadmin/alias_create.png b/html_bk/images/iredadmin/alias_create.png new file mode 100644 index 00000000..2fe7a71b Binary files /dev/null and b/html_bk/images/iredadmin/alias_create.png differ diff --git a/html_bk/images/iredadmin/alias_list.png b/html_bk/images/iredadmin/alias_list.png new file mode 100644 index 00000000..d3f408fc Binary files /dev/null and b/html_bk/images/iredadmin/alias_list.png differ diff --git a/html_bk/images/iredadmin/alias_profile_general.png b/html_bk/images/iredadmin/alias_profile_general.png new file mode 100644 index 00000000..c7e5c039 Binary files /dev/null and b/html_bk/images/iredadmin/alias_profile_general.png differ diff --git a/html_bk/images/iredadmin/custom_user_services.png b/html_bk/images/iredadmin/custom_user_services.png new file mode 100644 index 00000000..45673ad0 Binary files /dev/null and b/html_bk/images/iredadmin/custom_user_services.png differ diff --git a/html_bk/images/iredadmin/dashboard.png b/html_bk/images/iredadmin/dashboard.png new file mode 100644 index 00000000..235cbc79 Binary files /dev/null and b/html_bk/images/iredadmin/dashboard.png differ diff --git a/html_bk/images/iredadmin/dashboard_top10.png b/html_bk/images/iredadmin/dashboard_top10.png new file mode 100644 index 00000000..e75f1fb8 Binary files /dev/null and b/html_bk/images/iredadmin/dashboard_top10.png differ diff --git a/html_bk/images/iredadmin/domain_create.png b/html_bk/images/iredadmin/domain_create.png new file mode 100644 index 00000000..7e302549 Binary files /dev/null and b/html_bk/images/iredadmin/domain_create.png differ diff --git a/html_bk/images/iredadmin/domain_list.png b/html_bk/images/iredadmin/domain_list.png new file mode 100644 index 00000000..406e287c Binary files /dev/null and b/html_bk/images/iredadmin/domain_list.png differ diff --git a/html_bk/images/iredadmin/domain_profile_advanced.png b/html_bk/images/iredadmin/domain_profile_advanced.png new file mode 100644 index 00000000..6ebd405f Binary files /dev/null and b/html_bk/images/iredadmin/domain_profile_advanced.png differ diff --git a/html_bk/images/iredadmin/domain_profile_alias.png b/html_bk/images/iredadmin/domain_profile_alias.png new file mode 100644 index 00000000..bb425d96 Binary files /dev/null and b/html_bk/images/iredadmin/domain_profile_alias.png differ diff --git a/html_bk/images/iredadmin/domain_profile_backupmx.png b/html_bk/images/iredadmin/domain_profile_backupmx.png new file mode 100644 index 00000000..f26f0d41 Binary files /dev/null and b/html_bk/images/iredadmin/domain_profile_backupmx.png differ diff --git a/html_bk/images/iredadmin/domain_profile_bcc.png b/html_bk/images/iredadmin/domain_profile_bcc.png new file mode 100644 index 00000000..94092ee4 Binary files /dev/null and b/html_bk/images/iredadmin/domain_profile_bcc.png differ diff --git a/html_bk/images/iredadmin/domain_profile_catchall.png b/html_bk/images/iredadmin/domain_profile_catchall.png new file mode 100644 index 00000000..ccb2e7c8 Binary files /dev/null and b/html_bk/images/iredadmin/domain_profile_catchall.png differ diff --git a/html_bk/images/iredadmin/domain_profile_disclaimer.png b/html_bk/images/iredadmin/domain_profile_disclaimer.png new file mode 100644 index 00000000..3bbaccf8 Binary files /dev/null and b/html_bk/images/iredadmin/domain_profile_disclaimer.png differ diff --git a/html_bk/images/iredadmin/domain_profile_general.png b/html_bk/images/iredadmin/domain_profile_general.png new file mode 100644 index 00000000..326ee1b4 Binary files /dev/null and b/html_bk/images/iredadmin/domain_profile_general.png differ diff --git a/html_bk/images/iredadmin/domain_profile_relay.png b/html_bk/images/iredadmin/domain_profile_relay.png new file mode 100644 index 00000000..ab8b9e00 Binary files /dev/null and b/html_bk/images/iredadmin/domain_profile_relay.png differ diff --git a/html_bk/images/iredadmin/domain_profile_services.png b/html_bk/images/iredadmin/domain_profile_services.png new file mode 100644 index 00000000..8d8185a5 Binary files /dev/null and b/html_bk/images/iredadmin/domain_profile_services.png differ diff --git a/html_bk/images/iredadmin/domain_profile_throttle.png b/html_bk/images/iredadmin/domain_profile_throttle.png new file mode 100644 index 00000000..0b801574 Binary files /dev/null and b/html_bk/images/iredadmin/domain_profile_throttle.png differ diff --git a/html_bk/images/iredadmin/login.png b/html_bk/images/iredadmin/login.png new file mode 100644 index 00000000..6f4f3bc4 Binary files /dev/null and b/html_bk/images/iredadmin/login.png differ diff --git a/html_bk/images/iredadmin/mailinglist_newsletter.png b/html_bk/images/iredadmin/mailinglist_newsletter.png new file mode 100644 index 00000000..ec8a8f61 Binary files /dev/null and b/html_bk/images/iredadmin/mailinglist_newsletter.png differ diff --git a/html_bk/images/iredadmin/mailinglist_profile.png b/html_bk/images/iredadmin/mailinglist_profile.png new file mode 100644 index 00000000..34f003ea Binary files /dev/null and b/html_bk/images/iredadmin/mailinglist_profile.png differ diff --git a/html_bk/images/iredadmin/mailinglist_signup_code.png b/html_bk/images/iredadmin/mailinglist_signup_code.png new file mode 100644 index 00000000..d207976e Binary files /dev/null and b/html_bk/images/iredadmin/mailinglist_signup_code.png differ diff --git a/html_bk/images/iredadmin/maillist_create.png b/html_bk/images/iredadmin/maillist_create.png new file mode 100644 index 00000000..83a38d7d Binary files /dev/null and b/html_bk/images/iredadmin/maillist_create.png differ diff --git a/html_bk/images/iredadmin/maillist_list.png b/html_bk/images/iredadmin/maillist_list.png new file mode 100644 index 00000000..96549bd4 Binary files /dev/null and b/html_bk/images/iredadmin/maillist_list.png differ diff --git a/html_bk/images/iredadmin/maillist_profile_add.png b/html_bk/images/iredadmin/maillist_profile_add.png new file mode 100644 index 00000000..ab99d628 Binary files /dev/null and b/html_bk/images/iredadmin/maillist_profile_add.png differ diff --git a/html_bk/images/iredadmin/maillist_profile_general.png b/html_bk/images/iredadmin/maillist_profile_general.png new file mode 100644 index 00000000..80ca2d5e Binary files /dev/null and b/html_bk/images/iredadmin/maillist_profile_general.png differ diff --git a/html_bk/images/iredadmin/maillist_profile_members.png b/html_bk/images/iredadmin/maillist_profile_members.png new file mode 100644 index 00000000..0394a542 Binary files /dev/null and b/html_bk/images/iredadmin/maillist_profile_members.png differ diff --git a/html_bk/images/iredadmin/mlmmj/create.png b/html_bk/images/iredadmin/mlmmj/create.png new file mode 100644 index 00000000..18626fac Binary files /dev/null and b/html_bk/images/iredadmin/mlmmj/create.png differ diff --git a/html_bk/images/iredadmin/mlmmj/get_signup_form.png b/html_bk/images/iredadmin/mlmmj/get_signup_form.png new file mode 100644 index 00000000..a41744c4 Binary files /dev/null and b/html_bk/images/iredadmin/mlmmj/get_signup_form.png differ diff --git a/html_bk/images/iredadmin/mlmmj/newsletter.png b/html_bk/images/iredadmin/mlmmj/newsletter.png new file mode 100644 index 00000000..847b0e1b Binary files /dev/null and b/html_bk/images/iredadmin/mlmmj/newsletter.png differ diff --git a/html_bk/images/iredadmin/mlmmj/subscribed.png b/html_bk/images/iredadmin/mlmmj/subscribed.png new file mode 100644 index 00000000..a8f592a7 Binary files /dev/null and b/html_bk/images/iredadmin/mlmmj/subscribed.png differ diff --git a/html_bk/images/iredadmin/mlmmj/subscription.png b/html_bk/images/iredadmin/mlmmj/subscription.png new file mode 100644 index 00000000..8624d899 Binary files /dev/null and b/html_bk/images/iredadmin/mlmmj/subscription.png differ diff --git a/html_bk/images/iredadmin/mlmmj/subscription_confirm.png b/html_bk/images/iredadmin/mlmmj/subscription_confirm.png new file mode 100644 index 00000000..1cdc8bb7 Binary files /dev/null and b/html_bk/images/iredadmin/mlmmj/subscription_confirm.png differ diff --git a/html_bk/images/iredadmin/mlmmj/subscription_email.png b/html_bk/images/iredadmin/mlmmj/subscription_email.png new file mode 100644 index 00000000..3facdbf7 Binary files /dev/null and b/html_bk/images/iredadmin/mlmmj/subscription_email.png differ diff --git a/html_bk/images/iredadmin/mlmmj/subscription_members.png b/html_bk/images/iredadmin/mlmmj/subscription_members.png new file mode 100644 index 00000000..ca6524db Binary files /dev/null and b/html_bk/images/iredadmin/mlmmj/subscription_members.png differ diff --git a/html_bk/images/iredadmin/preferences.png b/html_bk/images/iredadmin/preferences.png new file mode 100644 index 00000000..8d5ca540 Binary files /dev/null and b/html_bk/images/iredadmin/preferences.png differ diff --git a/html_bk/images/iredadmin/sample_mail_notify_quarantined_recipients.png b/html_bk/images/iredadmin/sample_mail_notify_quarantined_recipients.png new file mode 100644 index 00000000..95a8070f Binary files /dev/null and b/html_bk/images/iredadmin/sample_mail_notify_quarantined_recipients.png differ diff --git a/html_bk/images/iredadmin/search.png b/html_bk/images/iredadmin/search.png new file mode 100644 index 00000000..8259b7b7 Binary files /dev/null and b/html_bk/images/iredadmin/search.png differ diff --git a/html_bk/images/iredadmin/self-service.preferences.forwarding.png b/html_bk/images/iredadmin/self-service.preferences.forwarding.png new file mode 100644 index 00000000..07be350b Binary files /dev/null and b/html_bk/images/iredadmin/self-service.preferences.forwarding.png differ diff --git a/html_bk/images/iredadmin/self-service.preferences.general.png b/html_bk/images/iredadmin/self-service.preferences.general.png new file mode 100644 index 00000000..c8b3ec3b Binary files /dev/null and b/html_bk/images/iredadmin/self-service.preferences.general.png differ diff --git a/html_bk/images/iredadmin/self-service.preferences.password.png b/html_bk/images/iredadmin/self-service.preferences.password.png new file mode 100644 index 00000000..1c8427d2 Binary files /dev/null and b/html_bk/images/iredadmin/self-service.preferences.password.png differ diff --git a/html_bk/images/iredadmin/self-service.quarantined.2.png b/html_bk/images/iredadmin/self-service.quarantined.2.png new file mode 100644 index 00000000..4143afd9 Binary files /dev/null and b/html_bk/images/iredadmin/self-service.quarantined.2.png differ diff --git a/html_bk/images/iredadmin/self-service.quarantined.png b/html_bk/images/iredadmin/self-service.quarantined.png new file mode 100644 index 00000000..a99ea8f2 Binary files /dev/null and b/html_bk/images/iredadmin/self-service.quarantined.png differ diff --git a/html_bk/images/iredadmin/self-service.received.png b/html_bk/images/iredadmin/self-service.received.png new file mode 100644 index 00000000..b5455607 Binary files /dev/null and b/html_bk/images/iredadmin/self-service.received.png differ diff --git a/html_bk/images/iredadmin/self-service.spampolicy.png b/html_bk/images/iredadmin/self-service.spampolicy.png new file mode 100644 index 00000000..372a44ca Binary files /dev/null and b/html_bk/images/iredadmin/self-service.spampolicy.png differ diff --git a/html_bk/images/iredadmin/self-service.wblist.png b/html_bk/images/iredadmin/self-service.wblist.png new file mode 100644 index 00000000..b7e99edf Binary files /dev/null and b/html_bk/images/iredadmin/self-service.wblist.png differ diff --git a/html_bk/images/iredadmin/system_admin_log.png b/html_bk/images/iredadmin/system_admin_log.png new file mode 100644 index 00000000..1a9bfcaa Binary files /dev/null and b/html_bk/images/iredadmin/system_admin_log.png differ diff --git a/html_bk/images/iredadmin/system_blacklist_add.png b/html_bk/images/iredadmin/system_blacklist_add.png new file mode 100644 index 00000000..a782d60f Binary files /dev/null and b/html_bk/images/iredadmin/system_blacklist_add.png differ diff --git a/html_bk/images/iredadmin/system_blacklist_view_helo.png b/html_bk/images/iredadmin/system_blacklist_view_helo.png new file mode 100644 index 00000000..9cf475fd Binary files /dev/null and b/html_bk/images/iredadmin/system_blacklist_view_helo.png differ diff --git a/html_bk/images/iredadmin/system_blacklist_view_ip.png b/html_bk/images/iredadmin/system_blacklist_view_ip.png new file mode 100644 index 00000000..6bd0feeb Binary files /dev/null and b/html_bk/images/iredadmin/system_blacklist_view_ip.png differ diff --git a/html_bk/images/iredadmin/system_global_spam_policy.png b/html_bk/images/iredadmin/system_global_spam_policy.png new file mode 100644 index 00000000..abfc1d19 Binary files /dev/null and b/html_bk/images/iredadmin/system_global_spam_policy.png differ diff --git a/html_bk/images/iredadmin/system_maillog_quarantined.png b/html_bk/images/iredadmin/system_maillog_quarantined.png new file mode 100644 index 00000000..61d4fbd2 Binary files /dev/null and b/html_bk/images/iredadmin/system_maillog_quarantined.png differ diff --git a/html_bk/images/iredadmin/system_maillog_quarantined_expanded.png b/html_bk/images/iredadmin/system_maillog_quarantined_expanded.png new file mode 100644 index 00000000..77790768 Binary files /dev/null and b/html_bk/images/iredadmin/system_maillog_quarantined_expanded.png differ diff --git a/html_bk/images/iredadmin/system_maillog_received.png b/html_bk/images/iredadmin/system_maillog_received.png new file mode 100644 index 00000000..25e1b6af Binary files /dev/null and b/html_bk/images/iredadmin/system_maillog_received.png differ diff --git a/html_bk/images/iredadmin/system_maillog_sent.png b/html_bk/images/iredadmin/system_maillog_sent.png new file mode 100644 index 00000000..dcf9ce08 Binary files /dev/null and b/html_bk/images/iredadmin/system_maillog_sent.png differ diff --git a/html_bk/images/iredadmin/system_throttling.png b/html_bk/images/iredadmin/system_throttling.png new file mode 100644 index 00000000..b893ef3c Binary files /dev/null and b/html_bk/images/iredadmin/system_throttling.png differ diff --git a/html_bk/images/iredadmin/system_wblist.png b/html_bk/images/iredadmin/system_wblist.png new file mode 100644 index 00000000..7d439846 Binary files /dev/null and b/html_bk/images/iredadmin/system_wblist.png differ diff --git a/html_bk/images/iredadmin/system_whitelist_add.png b/html_bk/images/iredadmin/system_whitelist_add.png new file mode 100644 index 00000000..220f8a86 Binary files /dev/null and b/html_bk/images/iredadmin/system_whitelist_add.png differ diff --git a/html_bk/images/iredadmin/system_whitelist_view_ip.png b/html_bk/images/iredadmin/system_whitelist_view_ip.png new file mode 100644 index 00000000..45ad207e Binary files /dev/null and b/html_bk/images/iredadmin/system_whitelist_view_ip.png differ diff --git a/html_bk/images/iredadmin/user_create.png b/html_bk/images/iredadmin/user_create.png new file mode 100644 index 00000000..1fe20fa2 Binary files /dev/null and b/html_bk/images/iredadmin/user_create.png differ diff --git a/html_bk/images/iredadmin/user_list.png b/html_bk/images/iredadmin/user_list.png new file mode 100644 index 00000000..33c6dd54 Binary files /dev/null and b/html_bk/images/iredadmin/user_list.png differ diff --git a/html_bk/images/iredadmin/user_profile_advanced.png b/html_bk/images/iredadmin/user_profile_advanced.png new file mode 100644 index 00000000..6284a5d5 Binary files /dev/null and b/html_bk/images/iredadmin/user_profile_advanced.png differ diff --git a/html_bk/images/iredadmin/user_profile_aliases.png b/html_bk/images/iredadmin/user_profile_aliases.png new file mode 100644 index 00000000..5bb1d573 Binary files /dev/null and b/html_bk/images/iredadmin/user_profile_aliases.png differ diff --git a/html_bk/images/iredadmin/user_profile_bcc.png b/html_bk/images/iredadmin/user_profile_bcc.png new file mode 100644 index 00000000..6862b233 Binary files /dev/null and b/html_bk/images/iredadmin/user_profile_bcc.png differ diff --git a/html_bk/images/iredadmin/user_profile_general.png b/html_bk/images/iredadmin/user_profile_general.png new file mode 100644 index 00000000..14df9845 Binary files /dev/null and b/html_bk/images/iredadmin/user_profile_general.png differ diff --git a/html_bk/images/iredadmin/user_profile_mail_forwarding.png b/html_bk/images/iredadmin/user_profile_mail_forwarding.png new file mode 100644 index 00000000..20287181 Binary files /dev/null and b/html_bk/images/iredadmin/user_profile_mail_forwarding.png differ diff --git a/html_bk/images/iredadmin/user_profile_maildir.png b/html_bk/images/iredadmin/user_profile_maildir.png new file mode 100644 index 00000000..2f7272e8 Binary files /dev/null and b/html_bk/images/iredadmin/user_profile_maildir.png differ diff --git a/html_bk/images/iredadmin/user_profile_memberOfGroup.png b/html_bk/images/iredadmin/user_profile_memberOfGroup.png new file mode 100644 index 00000000..b2282b87 Binary files /dev/null and b/html_bk/images/iredadmin/user_profile_memberOfGroup.png differ diff --git a/html_bk/images/iredadmin/user_profile_password.png b/html_bk/images/iredadmin/user_profile_password.png new file mode 100644 index 00000000..952f3b82 Binary files /dev/null and b/html_bk/images/iredadmin/user_profile_password.png differ diff --git a/html_bk/images/iredadmin/user_profile_relay.png b/html_bk/images/iredadmin/user_profile_relay.png new file mode 100644 index 00000000..0d6d4ad5 Binary files /dev/null and b/html_bk/images/iredadmin/user_profile_relay.png differ diff --git a/html_bk/images/iredadmin/user_profile_restrictions.png b/html_bk/images/iredadmin/user_profile_restrictions.png new file mode 100644 index 00000000..d15d316b Binary files /dev/null and b/html_bk/images/iredadmin/user_profile_restrictions.png differ diff --git a/html_bk/images/iredadmin/user_profile_services_control.png b/html_bk/images/iredadmin/user_profile_services_control.png new file mode 100644 index 00000000..66081deb Binary files /dev/null and b/html_bk/images/iredadmin/user_profile_services_control.png differ diff --git a/html_bk/images/iredadmin/user_profile_spampolicy.png b/html_bk/images/iredadmin/user_profile_spampolicy.png new file mode 100644 index 00000000..a4ba3378 Binary files /dev/null and b/html_bk/images/iredadmin/user_profile_spampolicy.png differ diff --git a/html_bk/images/iredadmin/user_profile_throttle.png b/html_bk/images/iredadmin/user_profile_throttle.png new file mode 100644 index 00000000..25046f73 Binary files /dev/null and b/html_bk/images/iredadmin/user_profile_throttle.png differ diff --git a/html_bk/images/iredadmin/user_profile_wblist.png b/html_bk/images/iredadmin/user_profile_wblist.png new file mode 100644 index 00000000..b63ae2ef Binary files /dev/null and b/html_bk/images/iredadmin/user_profile_wblist.png differ diff --git a/html_bk/images/iredmail-easy/installation/account_profile.png b/html_bk/images/iredmail-easy/installation/account_profile.png new file mode 100644 index 00000000..b3a56e66 Binary files /dev/null and b/html_bk/images/iredmail-easy/installation/account_profile.png differ diff --git a/html_bk/images/iredmail-easy/installation/add_mailserver.png b/html_bk/images/iredmail-easy/installation/add_mailserver.png new file mode 100644 index 00000000..22ec7a2f Binary files /dev/null and b/html_bk/images/iredmail-easy/installation/add_mailserver.png differ diff --git a/html_bk/images/iredmail-easy/installation/added_mailserver.png b/html_bk/images/iredmail-easy/installation/added_mailserver.png new file mode 100644 index 00000000..3c294118 Binary files /dev/null and b/html_bk/images/iredmail-easy/installation/added_mailserver.png differ diff --git a/html_bk/images/iredmail-easy/installation/backends.png b/html_bk/images/iredmail-easy/installation/backends.png new file mode 100644 index 00000000..a2a2057c Binary files /dev/null and b/html_bk/images/iredmail-easy/installation/backends.png differ diff --git a/html_bk/images/iredmail-easy/installation/components.png b/html_bk/images/iredmail-easy/installation/components.png new file mode 100644 index 00000000..1253e6fe Binary files /dev/null and b/html_bk/images/iredmail-easy/installation/components.png differ diff --git a/html_bk/images/iredmail-easy/installation/deployment.png b/html_bk/images/iredmail-easy/installation/deployment.png new file mode 100644 index 00000000..c292ed00 Binary files /dev/null and b/html_bk/images/iredmail-easy/installation/deployment.png differ diff --git a/html_bk/images/iredmail-easy/installation/login.png b/html_bk/images/iredmail-easy/installation/login.png new file mode 100644 index 00000000..9a6bc19f Binary files /dev/null and b/html_bk/images/iredmail-easy/installation/login.png differ diff --git a/html_bk/images/iredmail-easy/installation/settings.png b/html_bk/images/iredmail-easy/installation/settings.png new file mode 100644 index 00000000..790e53c2 Binary files /dev/null and b/html_bk/images/iredmail-easy/installation/settings.png differ diff --git a/html_bk/images/iredmail-easy/installation/signup.png b/html_bk/images/iredmail-easy/installation/signup.png new file mode 100644 index 00000000..b6b4fb85 Binary files /dev/null and b/html_bk/images/iredmail-easy/installation/signup.png differ diff --git a/html_bk/images/iredmail-easy/installation/support.png b/html_bk/images/iredmail-easy/installation/support.png new file mode 100644 index 00000000..9b7e0d97 Binary files /dev/null and b/html_bk/images/iredmail-easy/installation/support.png differ diff --git a/html_bk/images/iredmail-easy/subscription/unsubscribe.png b/html_bk/images/iredmail-easy/subscription/unsubscribe.png new file mode 100644 index 00000000..cce5a0f7 Binary files /dev/null and b/html_bk/images/iredmail-easy/subscription/unsubscribe.png differ diff --git a/html_bk/images/logo-iredmail.png b/html_bk/images/logo-iredmail.png new file mode 100644 index 00000000..8d8cca42 Binary files /dev/null and b/html_bk/images/logo-iredmail.png differ diff --git a/html_bk/images/markasjunk2_toolbar_button.png b/html_bk/images/markasjunk2_toolbar_button.png new file mode 100644 index 00000000..1ad1f393 Binary files /dev/null and b/html_bk/images/markasjunk2_toolbar_button.png differ diff --git a/html_bk/images/netdata/system-overview.png b/html_bk/images/netdata/system-overview.png new file mode 100644 index 00000000..0b496f77 Binary files /dev/null and b/html_bk/images/netdata/system-overview.png differ diff --git a/html_bk/images/setup.ad.ssl/config_ad_ssl_1.png b/html_bk/images/setup.ad.ssl/config_ad_ssl_1.png new file mode 100644 index 00000000..fe5eb385 Binary files /dev/null and b/html_bk/images/setup.ad.ssl/config_ad_ssl_1.png differ diff --git a/html_bk/images/setup.ad.ssl/config_ad_ssl_10.png b/html_bk/images/setup.ad.ssl/config_ad_ssl_10.png new file mode 100644 index 00000000..39b77313 Binary files /dev/null and b/html_bk/images/setup.ad.ssl/config_ad_ssl_10.png differ diff --git a/html_bk/images/setup.ad.ssl/config_ad_ssl_11.png b/html_bk/images/setup.ad.ssl/config_ad_ssl_11.png new file mode 100644 index 00000000..6c6bc091 Binary files /dev/null and b/html_bk/images/setup.ad.ssl/config_ad_ssl_11.png differ diff --git a/html_bk/images/setup.ad.ssl/config_ad_ssl_2.png b/html_bk/images/setup.ad.ssl/config_ad_ssl_2.png new file mode 100644 index 00000000..e8c0513c Binary files /dev/null and b/html_bk/images/setup.ad.ssl/config_ad_ssl_2.png differ diff --git a/html_bk/images/setup.ad.ssl/config_ad_ssl_3.png b/html_bk/images/setup.ad.ssl/config_ad_ssl_3.png new file mode 100644 index 00000000..c20a51cf Binary files /dev/null and b/html_bk/images/setup.ad.ssl/config_ad_ssl_3.png differ diff --git a/html_bk/images/setup.ad.ssl/config_ad_ssl_4.png b/html_bk/images/setup.ad.ssl/config_ad_ssl_4.png new file mode 100644 index 00000000..0aafcaab Binary files /dev/null and b/html_bk/images/setup.ad.ssl/config_ad_ssl_4.png differ diff --git a/html_bk/images/setup.ad.ssl/config_ad_ssl_5.png b/html_bk/images/setup.ad.ssl/config_ad_ssl_5.png new file mode 100644 index 00000000..ecd85e7a Binary files /dev/null and b/html_bk/images/setup.ad.ssl/config_ad_ssl_5.png differ diff --git a/html_bk/images/setup.ad.ssl/config_ad_ssl_6.png b/html_bk/images/setup.ad.ssl/config_ad_ssl_6.png new file mode 100644 index 00000000..5416bfd0 Binary files /dev/null and b/html_bk/images/setup.ad.ssl/config_ad_ssl_6.png differ diff --git a/html_bk/images/setup.ad.ssl/config_ad_ssl_7.png b/html_bk/images/setup.ad.ssl/config_ad_ssl_7.png new file mode 100644 index 00000000..cf0d951e Binary files /dev/null and b/html_bk/images/setup.ad.ssl/config_ad_ssl_7.png differ diff --git a/html_bk/images/setup.ad.ssl/config_ad_ssl_8.png b/html_bk/images/setup.ad.ssl/config_ad_ssl_8.png new file mode 100644 index 00000000..52971465 Binary files /dev/null and b/html_bk/images/setup.ad.ssl/config_ad_ssl_8.png differ diff --git a/html_bk/images/setup.ad.ssl/config_ad_ssl_9.png b/html_bk/images/setup.ad.ssl/config_ad_ssl_9.png new file mode 100644 index 00000000..7dcf362e Binary files /dev/null and b/html_bk/images/setup.ad.ssl/config_ad_ssl_9.png differ diff --git a/html_bk/images/setup.ad.ssl/server-manager-add-roles-and-features.png b/html_bk/images/setup.ad.ssl/server-manager-add-roles-and-features.png new file mode 100644 index 00000000..587794a9 Binary files /dev/null and b/html_bk/images/setup.ad.ssl/server-manager-add-roles-and-features.png differ diff --git a/html_bk/images/setup.ad.ssl/server_manager_configuration_ad_certificate.png b/html_bk/images/setup.ad.ssl/server_manager_configuration_ad_certificate.png new file mode 100644 index 00000000..471a7d45 Binary files /dev/null and b/html_bk/images/setup.ad.ssl/server_manager_configuration_ad_certificate.png differ diff --git a/html_bk/images/setup.ad.ssl/setup_ad_ssl_1.png b/html_bk/images/setup.ad.ssl/setup_ad_ssl_1.png new file mode 100644 index 00000000..4c5c334a Binary files /dev/null and b/html_bk/images/setup.ad.ssl/setup_ad_ssl_1.png differ diff --git a/html_bk/images/setup.ad.ssl/setup_ad_ssl_2.png b/html_bk/images/setup.ad.ssl/setup_ad_ssl_2.png new file mode 100644 index 00000000..63fe0a63 Binary files /dev/null and b/html_bk/images/setup.ad.ssl/setup_ad_ssl_2.png differ diff --git a/html_bk/images/setup.ad.ssl/setup_ad_ssl_3.png b/html_bk/images/setup.ad.ssl/setup_ad_ssl_3.png new file mode 100644 index 00000000..f948f472 Binary files /dev/null and b/html_bk/images/setup.ad.ssl/setup_ad_ssl_3.png differ diff --git a/html_bk/images/setup.ad.ssl/setup_ad_ssl_4-1.png b/html_bk/images/setup.ad.ssl/setup_ad_ssl_4-1.png new file mode 100644 index 00000000..f6789088 Binary files /dev/null and b/html_bk/images/setup.ad.ssl/setup_ad_ssl_4-1.png differ diff --git a/html_bk/images/setup.ad.ssl/setup_ad_ssl_4-2.png b/html_bk/images/setup.ad.ssl/setup_ad_ssl_4-2.png new file mode 100644 index 00000000..bccf05a1 Binary files /dev/null and b/html_bk/images/setup.ad.ssl/setup_ad_ssl_4-2.png differ diff --git a/html_bk/images/setup.ad.ssl/setup_ad_ssl_4.png b/html_bk/images/setup.ad.ssl/setup_ad_ssl_4.png new file mode 100644 index 00000000..bccf05a1 Binary files /dev/null and b/html_bk/images/setup.ad.ssl/setup_ad_ssl_4.png differ diff --git a/html_bk/images/setup.ad.ssl/setup_ad_ssl_5.png b/html_bk/images/setup.ad.ssl/setup_ad_ssl_5.png new file mode 100644 index 00000000..fc857f87 Binary files /dev/null and b/html_bk/images/setup.ad.ssl/setup_ad_ssl_5.png differ diff --git a/html_bk/images/setup.ad.ssl/setup_ad_ssl_6.png b/html_bk/images/setup.ad.ssl/setup_ad_ssl_6.png new file mode 100644 index 00000000..40084eb7 Binary files /dev/null and b/html_bk/images/setup.ad.ssl/setup_ad_ssl_6.png differ diff --git a/html_bk/images/setup.ad.ssl/setup_ad_ssl_7.png b/html_bk/images/setup.ad.ssl/setup_ad_ssl_7.png new file mode 100644 index 00000000..c8349a6a Binary files /dev/null and b/html_bk/images/setup.ad.ssl/setup_ad_ssl_7.png differ diff --git a/html_bk/images/setup.ad.ssl/setup_ad_ssl_8.png b/html_bk/images/setup.ad.ssl/setup_ad_ssl_8.png new file mode 100644 index 00000000..523250f6 Binary files /dev/null and b/html_bk/images/setup.ad.ssl/setup_ad_ssl_8.png differ diff --git a/html_bk/images/setup.ad.ssl/setup_ad_ssl_9.png b/html_bk/images/setup.ad.ssl/setup_ad_ssl_9.png new file mode 100644 index 00000000..412e5e1e Binary files /dev/null and b/html_bk/images/setup.ad.ssl/setup_ad_ssl_9.png differ diff --git a/html_bk/images/setup.ad.ssl/start-server-manager.png b/html_bk/images/setup.ad.ssl/start-server-manager.png new file mode 100644 index 00000000..22027b80 Binary files /dev/null and b/html_bk/images/setup.ad.ssl/start-server-manager.png differ diff --git a/html_bk/images/setup.ad.ssl/test_ldap_1.png b/html_bk/images/setup.ad.ssl/test_ldap_1.png new file mode 100644 index 00000000..11940078 Binary files /dev/null and b/html_bk/images/setup.ad.ssl/test_ldap_1.png differ diff --git a/html_bk/images/setup.ad.ssl/test_ldap_2.png b/html_bk/images/setup.ad.ssl/test_ldap_2.png new file mode 100644 index 00000000..b4a5c264 Binary files /dev/null and b/html_bk/images/setup.ad.ssl/test_ldap_2.png differ diff --git a/html_bk/images/setup.ad.ssl/test_ldaps_1.png b/html_bk/images/setup.ad.ssl/test_ldaps_1.png new file mode 100644 index 00000000..45a37c11 Binary files /dev/null and b/html_bk/images/setup.ad.ssl/test_ldaps_1.png differ diff --git a/html_bk/images/setup.ad.ssl/test_ldaps_2.png b/html_bk/images/setup.ad.ssl/test_ldaps_2.png new file mode 100644 index 00000000..aae037f8 Binary files /dev/null and b/html_bk/images/setup.ad.ssl/test_ldaps_2.png differ diff --git a/html_bk/images/sogo/android.account.details.png b/html_bk/images/sogo/android.account.details.png new file mode 100755 index 00000000..d458d122 Binary files /dev/null and b/html_bk/images/sogo/android.account.details.png differ diff --git a/html_bk/images/sogo/android.account.name.png b/html_bk/images/sogo/android.account.name.png new file mode 100755 index 00000000..5801569b Binary files /dev/null and b/html_bk/images/sogo/android.account.name.png differ diff --git a/html_bk/images/sogo/android.account.settings.png b/html_bk/images/sogo/android.account.settings.png new file mode 100755 index 00000000..c6630b34 Binary files /dev/null and b/html_bk/images/sogo/android.account.settings.png differ diff --git a/html_bk/images/sogo/android.account.setup.png b/html_bk/images/sogo/android.account.setup.png new file mode 100755 index 00000000..289d341a Binary files /dev/null and b/html_bk/images/sogo/android.account.setup.png differ diff --git a/html_bk/images/sogo/android.account.type.png b/html_bk/images/sogo/android.account.type.png new file mode 100755 index 00000000..837c59b7 Binary files /dev/null and b/html_bk/images/sogo/android.account.type.png differ diff --git a/html_bk/images/sogo/android.mail.png b/html_bk/images/sogo/android.mail.png new file mode 100644 index 00000000..dda687f3 Binary files /dev/null and b/html_bk/images/sogo/android.mail.png differ diff --git a/html_bk/images/sogo/bb10.add.exchange.png b/html_bk/images/sogo/bb10.add.exchange.png new file mode 100755 index 00000000..65386eae Binary files /dev/null and b/html_bk/images/sogo/bb10.add.exchange.png differ diff --git a/html_bk/images/sogo/bb10.exchange.1.png b/html_bk/images/sogo/bb10.exchange.1.png new file mode 100755 index 00000000..f6fea52a Binary files /dev/null and b/html_bk/images/sogo/bb10.exchange.1.png differ diff --git a/html_bk/images/sogo/bb10.exchange.2.png b/html_bk/images/sogo/bb10.exchange.2.png new file mode 100755 index 00000000..72942cbc Binary files /dev/null and b/html_bk/images/sogo/bb10.exchange.2.png differ diff --git a/html_bk/images/sogo/bb10.settings.accounts.list.png b/html_bk/images/sogo/bb10.settings.accounts.list.png new file mode 100755 index 00000000..a36e1d11 Binary files /dev/null and b/html_bk/images/sogo/bb10.settings.accounts.list.png differ diff --git a/html_bk/images/sogo/bb10.settings.accounts.png b/html_bk/images/sogo/bb10.settings.accounts.png new file mode 100755 index 00000000..51794946 Binary files /dev/null and b/html_bk/images/sogo/bb10.settings.accounts.png differ diff --git a/html_bk/images/sogo/bb10.settings.add.account.png b/html_bk/images/sogo/bb10.settings.add.account.png new file mode 100755 index 00000000..fb1d3249 Binary files /dev/null and b/html_bk/images/sogo/bb10.settings.add.account.png differ diff --git a/html_bk/images/sogo/bb10.settings.png b/html_bk/images/sogo/bb10.settings.png new file mode 100644 index 00000000..5d6cc618 Binary files /dev/null and b/html_bk/images/sogo/bb10.settings.png differ diff --git a/html_bk/images/sogo/free.busy/check.availability.png b/html_bk/images/sogo/free.busy/check.availability.png new file mode 100644 index 00000000..0dfb7426 Binary files /dev/null and b/html_bk/images/sogo/free.busy/check.availability.png differ diff --git a/html_bk/images/sogo/free.busy/grant.permission.png b/html_bk/images/sogo/free.busy/grant.permission.png new file mode 100644 index 00000000..4053fbeb Binary files /dev/null and b/html_bk/images/sogo/free.busy/grant.permission.png differ diff --git a/html_bk/images/sogo/ios.exchange.1.png b/html_bk/images/sogo/ios.exchange.1.png new file mode 100644 index 00000000..9dddc462 Binary files /dev/null and b/html_bk/images/sogo/ios.exchange.1.png differ diff --git a/html_bk/images/sogo/ios.exchange.2.png b/html_bk/images/sogo/ios.exchange.2.png new file mode 100644 index 00000000..bf544c6d Binary files /dev/null and b/html_bk/images/sogo/ios.exchange.2.png differ diff --git a/html_bk/images/sogo/ios.exchange.sync.items.png b/html_bk/images/sogo/ios.exchange.sync.items.png new file mode 100644 index 00000000..375faa28 Binary files /dev/null and b/html_bk/images/sogo/ios.exchange.sync.items.png differ diff --git a/html_bk/images/sogo/ios.settings.accounts.add.exchange.png b/html_bk/images/sogo/ios.settings.accounts.add.exchange.png new file mode 100644 index 00000000..4b9eaf9d Binary files /dev/null and b/html_bk/images/sogo/ios.settings.accounts.add.exchange.png differ diff --git a/html_bk/images/sogo/ios.settings.accounts.add.png b/html_bk/images/sogo/ios.settings.accounts.add.png new file mode 100644 index 00000000..73aa2dde Binary files /dev/null and b/html_bk/images/sogo/ios.settings.accounts.add.png differ diff --git a/html_bk/images/sogo/ios.settings.accounts.png b/html_bk/images/sogo/ios.settings.accounts.png new file mode 100644 index 00000000..16fb7a56 Binary files /dev/null and b/html_bk/images/sogo/ios.settings.accounts.png differ diff --git a/html_bk/images/sogo/ios.settings.png b/html_bk/images/sogo/ios.settings.png new file mode 100644 index 00000000..7115ce02 Binary files /dev/null and b/html_bk/images/sogo/ios.settings.png differ diff --git a/html_bk/images/sogo/macosx.add.caldav.account.png b/html_bk/images/sogo/macosx.add.caldav.account.png new file mode 100644 index 00000000..d215109e Binary files /dev/null and b/html_bk/images/sogo/macosx.add.caldav.account.png differ diff --git a/html_bk/images/sogo/macosx.add.carddav.account.png b/html_bk/images/sogo/macosx.add.carddav.account.png new file mode 100644 index 00000000..3bc82e98 Binary files /dev/null and b/html_bk/images/sogo/macosx.add.carddav.account.png differ diff --git a/html_bk/images/sogo/macosx.add.other.account.png b/html_bk/images/sogo/macosx.add.other.account.png new file mode 100644 index 00000000..64a49aa6 Binary files /dev/null and b/html_bk/images/sogo/macosx.add.other.account.png differ diff --git a/html_bk/images/sogo/macosx.add.reminder.png b/html_bk/images/sogo/macosx.add.reminder.png new file mode 100644 index 00000000..60971116 Binary files /dev/null and b/html_bk/images/sogo/macosx.add.reminder.png differ diff --git a/html_bk/images/sogo/macosx.choose.account.type.caldav.png b/html_bk/images/sogo/macosx.choose.account.type.caldav.png new file mode 100644 index 00000000..8f159728 Binary files /dev/null and b/html_bk/images/sogo/macosx.choose.account.type.caldav.png differ diff --git a/html_bk/images/sogo/macosx.choose.account.type.carddav.png b/html_bk/images/sogo/macosx.choose.account.type.carddav.png new file mode 100644 index 00000000..6456dbe2 Binary files /dev/null and b/html_bk/images/sogo/macosx.choose.account.type.carddav.png differ diff --git a/html_bk/images/sogo/macosx.internet.accounts.png b/html_bk/images/sogo/macosx.internet.accounts.png new file mode 100644 index 00000000..1bf3ceec Binary files /dev/null and b/html_bk/images/sogo/macosx.internet.accounts.png differ diff --git a/html_bk/images/sogo/macosx.system.preferences.png b/html_bk/images/sogo/macosx.system.preferences.png new file mode 100644 index 00000000..89620d8e Binary files /dev/null and b/html_bk/images/sogo/macosx.system.preferences.png differ diff --git a/html_bk/images/sogo/outlook.2013.app.png b/html_bk/images/sogo/outlook.2013.app.png new file mode 100644 index 00000000..e4ed1084 Binary files /dev/null and b/html_bk/images/sogo/outlook.2013.app.png differ diff --git a/html_bk/images/sogo/outlook.add.account.png b/html_bk/images/sogo/outlook.add.account.png new file mode 100644 index 00000000..750109ce Binary files /dev/null and b/html_bk/images/sogo/outlook.add.account.png differ diff --git a/html_bk/images/sogo/outlook.choose.service.png b/html_bk/images/sogo/outlook.choose.service.png new file mode 100644 index 00000000..e6948f35 Binary files /dev/null and b/html_bk/images/sogo/outlook.choose.service.png differ diff --git a/html_bk/images/sogo/outlook.server.settings.png b/html_bk/images/sogo/outlook.server.settings.png new file mode 100644 index 00000000..b7be0a98 Binary files /dev/null and b/html_bk/images/sogo/outlook.server.settings.png differ diff --git a/html_bk/images/sogo/outlook.test.account.settings.png b/html_bk/images/sogo/outlook.test.account.settings.png new file mode 100644 index 00000000..e1db3ab6 Binary files /dev/null and b/html_bk/images/sogo/outlook.test.account.settings.png differ diff --git a/html_bk/images/sogo/resources/access-rights.png b/html_bk/images/sogo/resources/access-rights.png new file mode 100644 index 00000000..966f183e Binary files /dev/null and b/html_bk/images/sogo/resources/access-rights.png differ diff --git a/html_bk/images/sogo/resources/free-busy.png b/html_bk/images/sogo/resources/free-busy.png new file mode 100644 index 00000000..07cf802e Binary files /dev/null and b/html_bk/images/sogo/resources/free-busy.png differ diff --git a/html_bk/images/thunderbird/imap.png b/html_bk/images/thunderbird/imap.png new file mode 100644 index 00000000..274cca17 Binary files /dev/null and b/html_bk/images/thunderbird/imap.png differ diff --git a/html_bk/images/thunderbird/new.mail.account.png b/html_bk/images/thunderbird/new.mail.account.png new file mode 100644 index 00000000..0621137b Binary files /dev/null and b/html_bk/images/thunderbird/new.mail.account.png differ diff --git a/html_bk/images/thunderbird/new.mail.account.setup.png b/html_bk/images/thunderbird/new.mail.account.setup.png new file mode 100644 index 00000000..bfc4f8cc Binary files /dev/null and b/html_bk/images/thunderbird/new.mail.account.setup.png differ diff --git a/html_bk/images/thunderbird/pop3.png b/html_bk/images/thunderbird/pop3.png new file mode 100644 index 00000000..7cc8f3ca Binary files /dev/null and b/html_bk/images/thunderbird/pop3.png differ diff --git a/html_bk/images/thunderbird/smtp.png b/html_bk/images/thunderbird/smtp.png new file mode 100644 index 00000000..8811f6c3 Binary files /dev/null and b/html_bk/images/thunderbird/smtp.png differ diff --git a/html_bk/images/thunderbird/sogo_configure_calendar.png b/html_bk/images/thunderbird/sogo_configure_calendar.png new file mode 100755 index 00000000..12ec7596 Binary files /dev/null and b/html_bk/images/thunderbird/sogo_configure_calendar.png differ diff --git a/html_bk/images/thunderbird/sogo_install_addons_from_file.png b/html_bk/images/thunderbird/sogo_install_addons_from_file.png new file mode 100755 index 00000000..b12f6b5a Binary files /dev/null and b/html_bk/images/thunderbird/sogo_install_addons_from_file.png differ diff --git a/html_bk/images/thunderbird/sogo_lightning_addon_install.png b/html_bk/images/thunderbird/sogo_lightning_addon_install.png new file mode 100755 index 00000000..f2c83037 Binary files /dev/null and b/html_bk/images/thunderbird/sogo_lightning_addon_install.png differ diff --git a/html_bk/images/thunderbird/sogo_link_to_address_book.png b/html_bk/images/thunderbird/sogo_link_to_address_book.png new file mode 100755 index 00000000..17a88f4e Binary files /dev/null and b/html_bk/images/thunderbird/sogo_link_to_address_book.png differ diff --git a/html_bk/images/thunderbird/sogo_link_to_calendar.png b/html_bk/images/thunderbird/sogo_link_to_calendar.png new file mode 100755 index 00000000..f73553f5 Binary files /dev/null and b/html_bk/images/thunderbird/sogo_link_to_calendar.png differ diff --git a/html_bk/images/thunderbird/sogo_menu_addons.png b/html_bk/images/thunderbird/sogo_menu_addons.png new file mode 100755 index 00000000..4edbdd5d Binary files /dev/null and b/html_bk/images/thunderbird/sogo_menu_addons.png differ diff --git a/html_bk/images/thunderbird/sogo_new_calendar.png b/html_bk/images/thunderbird/sogo_new_calendar.png new file mode 100755 index 00000000..c5ec29f0 Binary files /dev/null and b/html_bk/images/thunderbird/sogo_new_calendar.png differ diff --git a/html_bk/images/thunderbird/sogo_new_remote_address_book.png b/html_bk/images/thunderbird/sogo_new_remote_address_book.png new file mode 100755 index 00000000..95d1b45b Binary files /dev/null and b/html_bk/images/thunderbird/sogo_new_remote_address_book.png differ diff --git a/html_bk/images/thunderbird/sogo_remote_address_book.png b/html_bk/images/thunderbird/sogo_remote_address_book.png new file mode 100755 index 00000000..e8bae126 Binary files /dev/null and b/html_bk/images/thunderbird/sogo_remote_address_book.png differ diff --git a/html/index-es_MX.html b/html_bk/index-es_MX.html similarity index 100% rename from html/index-es_MX.html rename to html_bk/index-es_MX.html diff --git a/html/index-it_IT.html b/html_bk/index-it_IT.html similarity index 100% rename from html/index-it_IT.html rename to html_bk/index-it_IT.html diff --git a/html/index-lv_LV.html b/html_bk/index-lv_LV.html similarity index 100% rename from html/index-lv_LV.html rename to html_bk/index-lv_LV.html diff --git a/html/index-zh_CN.html b/html_bk/index-zh_CN.html similarity index 100% rename from html/index-zh_CN.html rename to html_bk/index-zh_CN.html diff --git a/html_bk/index.html b/html_bk/index.html new file mode 100644 index 00000000..70d6c5d0 --- /dev/null +++ b/html_bk/index.html @@ -0,0 +1,259 @@ + + + + + iRedMail Documentations + + + + +
+

Some tutorials have been translated to different languages. Help translate more

+

Italiano / 简体中文 / Español /

+
+

Overview

+ +

Install iRedMail

+ +

Configure mail client applications

+
+

Quick MUA Settings

+ +
+ +

Release notes and upgrade tutorials

+ +

iRedMail Easy - Web-based Deployment, Upgrade and Tech Support Platform

+ +

Migrations

+ +

How to

+ +

Documents contributed by iRedMail users:

+ +

Third-party integrations

+

Below tutorials are maintained by iRedMail project.

+ +

Documents contributed by iRedMail users:

+ +

Cluster

+

Documents contributed by iRedMail users:

+ +

iRedAdmin-Pro

+ +

Troubleshooting and Debug

+ +

Frequently Asked Questions

+ \ No newline at end of file diff --git a/html/install.iredadmin.on.debian.html b/html_bk/install.iredadmin.on.debian.html similarity index 100% rename from html/install.iredadmin.on.debian.html rename to html_bk/install.iredadmin.on.debian.html diff --git a/html/install.iredadmin.on.freebsd.html b/html_bk/install.iredadmin.on.freebsd.html similarity index 100% rename from html/install.iredadmin.on.freebsd.html rename to html_bk/install.iredadmin.on.freebsd.html diff --git a/html/install.iredadmin.on.openbsd.html b/html_bk/install.iredadmin.on.openbsd.html similarity index 100% rename from html/install.iredadmin.on.openbsd.html rename to html_bk/install.iredadmin.on.openbsd.html diff --git a/html/install.iredadmin.on.rhel.html b/html_bk/install.iredadmin.on.rhel.html similarity index 100% rename from html/install.iredadmin.on.rhel.html rename to html_bk/install.iredadmin.on.rhel.html diff --git a/html/install.iredmail.on.debian.ubuntu-zh_CN.html b/html_bk/install.iredmail.on.debian.ubuntu-zh_CN.html similarity index 100% rename from html/install.iredmail.on.debian.ubuntu-zh_CN.html rename to html_bk/install.iredmail.on.debian.ubuntu-zh_CN.html diff --git a/html/install.iredmail.on.debian.ubuntu.html b/html_bk/install.iredmail.on.debian.ubuntu.html similarity index 100% rename from html/install.iredmail.on.debian.ubuntu.html rename to html_bk/install.iredmail.on.debian.ubuntu.html diff --git a/html/install.iredmail.on.freebsd.html b/html_bk/install.iredmail.on.freebsd.html similarity index 100% rename from html/install.iredmail.on.freebsd.html rename to html_bk/install.iredmail.on.freebsd.html diff --git a/html/install.iredmail.on.freebsd.with.jail.html b/html_bk/install.iredmail.on.freebsd.with.jail.html similarity index 100% rename from html/install.iredmail.on.freebsd.with.jail.html rename to html_bk/install.iredmail.on.freebsd.with.jail.html diff --git a/html/install.iredmail.on.openbsd.html b/html_bk/install.iredmail.on.openbsd.html similarity index 100% rename from html/install.iredmail.on.openbsd.html rename to html_bk/install.iredmail.on.openbsd.html diff --git a/html/install.iredmail.on.rhel-zh_CN.html b/html_bk/install.iredmail.on.rhel-zh_CN.html similarity index 100% rename from html/install.iredmail.on.rhel-zh_CN.html rename to html_bk/install.iredmail.on.rhel-zh_CN.html diff --git a/html/install.iredmail.on.rhel.html b/html_bk/install.iredmail.on.rhel.html similarity index 100% rename from html/install.iredmail.on.rhel.html rename to html_bk/install.iredmail.on.rhel.html diff --git a/html/install.iredmail.with.remote.mysql.server.html b/html_bk/install.iredmail.with.remote.mysql.server.html similarity index 100% rename from html/install.iredmail.with.remote.mysql.server.html rename to html_bk/install.iredmail.with.remote.mysql.server.html diff --git a/html/integration.mlmmj.ldap.html b/html_bk/integration.mlmmj.ldap.html similarity index 100% rename from html/integration.mlmmj.ldap.html rename to html_bk/integration.mlmmj.ldap.html diff --git a/html/integration.mlmmj.mysql.html b/html_bk/integration.mlmmj.mysql.html similarity index 100% rename from html/integration.mlmmj.mysql.html rename to html_bk/integration.mlmmj.mysql.html diff --git a/html/integration.mlmmj.pgsql.html b/html_bk/integration.mlmmj.pgsql.html similarity index 100% rename from html/integration.mlmmj.pgsql.html rename to html_bk/integration.mlmmj.pgsql.html diff --git a/html/integration.netdata.freebsd.html b/html_bk/integration.netdata.freebsd.html similarity index 100% rename from html/integration.netdata.freebsd.html rename to html_bk/integration.netdata.freebsd.html diff --git a/html/integration.netdata.linux.html b/html_bk/integration.netdata.linux.html similarity index 100% rename from html/integration.netdata.linux.html rename to html_bk/integration.netdata.linux.html diff --git a/html/iredadmin-pro.custom.ban.rules.html b/html_bk/iredadmin-pro.custom.ban.rules.html similarity index 100% rename from html/iredadmin-pro.custom.ban.rules.html rename to html_bk/iredadmin-pro.custom.ban.rules.html diff --git a/html/iredadmin-pro.custom.base.url.html b/html_bk/iredadmin-pro.custom.base.url.html similarity index 100% rename from html/iredadmin-pro.custom.base.url.html rename to html_bk/iredadmin-pro.custom.base.url.html diff --git a/html/iredadmin-pro.custom.logo.html b/html_bk/iredadmin-pro.custom.logo.html similarity index 100% rename from html/iredadmin-pro.custom.logo.html rename to html_bk/iredadmin-pro.custom.logo.html diff --git a/html/iredadmin-pro.custom.user.services.html b/html_bk/iredadmin-pro.custom.user.services.html similarity index 100% rename from html/iredadmin-pro.custom.user.services.html rename to html_bk/iredadmin-pro.custom.user.services.html diff --git a/html/iredadmin-pro.customize.maildir.path.html b/html_bk/iredadmin-pro.customize.maildir.path.html similarity index 100% rename from html/iredadmin-pro.customize.maildir.path.html rename to html_bk/iredadmin-pro.customize.maildir.path.html diff --git a/html/iredadmin-pro.default.password.policy.html b/html_bk/iredadmin-pro.default.password.policy.html similarity index 100% rename from html/iredadmin-pro.default.password.policy.html rename to html_bk/iredadmin-pro.default.password.policy.html diff --git a/html/iredadmin-pro.domain.ownership.verification.html b/html_bk/iredadmin-pro.domain.ownership.verification.html similarity index 100% rename from html/iredadmin-pro.domain.ownership.verification.html rename to html_bk/iredadmin-pro.domain.ownership.verification.html diff --git a/html/iredadmin-pro.releases.html b/html_bk/iredadmin-pro.releases.html similarity index 100% rename from html/iredadmin-pro.releases.html rename to html_bk/iredadmin-pro.releases.html diff --git a/html/iredadmin-pro.restful.api-20170123.html b/html_bk/iredadmin-pro.restful.api-20170123.html similarity index 100% rename from html/iredadmin-pro.restful.api-20170123.html rename to html_bk/iredadmin-pro.restful.api-20170123.html diff --git a/html/iredadmin-pro.restful.api-20170824.html b/html_bk/iredadmin-pro.restful.api-20170824.html similarity index 100% rename from html/iredadmin-pro.restful.api-20170824.html rename to html_bk/iredadmin-pro.restful.api-20170824.html diff --git a/html/iredadmin-pro.restful.api-20180403.html b/html_bk/iredadmin-pro.restful.api-20180403.html similarity index 100% rename from html/iredadmin-pro.restful.api-20180403.html rename to html_bk/iredadmin-pro.restful.api-20180403.html diff --git a/html/iredadmin-pro.restful.api-20181217.html b/html_bk/iredadmin-pro.restful.api-20181217.html similarity index 100% rename from html/iredadmin-pro.restful.api-20181217.html rename to html_bk/iredadmin-pro.restful.api-20181217.html diff --git a/html/iredadmin-pro.restful.api-20190327.html b/html_bk/iredadmin-pro.restful.api-20190327.html similarity index 100% rename from html/iredadmin-pro.restful.api-20190327.html rename to html_bk/iredadmin-pro.restful.api-20190327.html diff --git a/html/iredadmin-pro.restful.api-20190428.html b/html_bk/iredadmin-pro.restful.api-20190428.html similarity index 100% rename from html/iredadmin-pro.restful.api-20190428.html rename to html_bk/iredadmin-pro.restful.api-20190428.html diff --git a/html/iredadmin-pro.restful.api-20190606.html b/html_bk/iredadmin-pro.restful.api-20190606.html similarity index 100% rename from html/iredadmin-pro.restful.api-20190606.html rename to html_bk/iredadmin-pro.restful.api-20190606.html diff --git a/html/iredadmin-pro.restful.api-20190715.html b/html_bk/iredadmin-pro.restful.api-20190715.html similarity index 100% rename from html/iredadmin-pro.restful.api-20190715.html rename to html_bk/iredadmin-pro.restful.api-20190715.html diff --git a/html/iredadmin-pro.restful.api-20190801.html b/html_bk/iredadmin-pro.restful.api-20190801.html similarity index 100% rename from html/iredadmin-pro.restful.api-20190801.html rename to html_bk/iredadmin-pro.restful.api-20190801.html diff --git a/html/iredadmin-pro.restful.api-20190906.html b/html_bk/iredadmin-pro.restful.api-20190906.html similarity index 100% rename from html/iredadmin-pro.restful.api-20190906.html rename to html_bk/iredadmin-pro.restful.api-20190906.html diff --git a/html/iredadmin-pro.restful.api-20191022.html b/html_bk/iredadmin-pro.restful.api-20191022.html similarity index 100% rename from html/iredadmin-pro.restful.api-20191022.html rename to html_bk/iredadmin-pro.restful.api-20191022.html diff --git a/html/iredadmin-pro.restful.api-20191209.html b/html_bk/iredadmin-pro.restful.api-20191209.html similarity index 100% rename from html/iredadmin-pro.restful.api-20191209.html rename to html_bk/iredadmin-pro.restful.api-20191209.html diff --git a/html/iredadmin-pro.restful.api-20200210.html b/html_bk/iredadmin-pro.restful.api-20200210.html similarity index 100% rename from html/iredadmin-pro.restful.api-20200210.html rename to html_bk/iredadmin-pro.restful.api-20200210.html diff --git a/html/iredadmin-pro.restful.api-new.html b/html_bk/iredadmin-pro.restful.api-new.html similarity index 100% rename from html/iredadmin-pro.restful.api-new.html rename to html_bk/iredadmin-pro.restful.api-new.html diff --git a/html/iredadmin-pro.restful.api.curl.html b/html_bk/iredadmin-pro.restful.api.curl.html similarity index 100% rename from html/iredadmin-pro.restful.api.curl.html rename to html_bk/iredadmin-pro.restful.api.curl.html diff --git a/html/iredadmin-pro.restful.api.html b/html_bk/iredadmin-pro.restful.api.html similarity index 100% rename from html/iredadmin-pro.restful.api.html rename to html_bk/iredadmin-pro.restful.api.html diff --git a/html/iredadmin-pro.restful.api.python.html b/html_bk/iredadmin-pro.restful.api.python.html similarity index 100% rename from html/iredadmin-pro.restful.api.python.html rename to html_bk/iredadmin-pro.restful.api.python.html diff --git a/html/iredadmin-pro.self-service.html b/html_bk/iredadmin-pro.self-service.html similarity index 100% rename from html/iredadmin-pro.self-service.html rename to html_bk/iredadmin-pro.self-service.html diff --git a/html/iredadmin-pro.set.a.proper.timezone.html b/html_bk/iredadmin-pro.set.a.proper.timezone.html similarity index 100% rename from html/iredadmin-pro.set.a.proper.timezone.html rename to html_bk/iredadmin-pro.set.a.proper.timezone.html diff --git a/html/iredadmin-pro.spam.policy.priority.html b/html_bk/iredadmin-pro.spam.policy.priority.html similarity index 100% rename from html/iredadmin-pro.spam.policy.priority.html rename to html_bk/iredadmin-pro.spam.policy.priority.html diff --git a/html/iredadmin-pro.subscribable.mailing.list.html b/html_bk/iredadmin-pro.subscribable.mailing.list.html similarity index 100% rename from html/iredadmin-pro.subscribable.mailing.list.html rename to html_bk/iredadmin-pro.subscribable.mailing.list.html diff --git a/html/iredapd.releases.html b/html_bk/iredapd.releases.html similarity index 100% rename from html/iredapd.releases.html rename to html_bk/iredapd.releases.html diff --git a/html/iredmail-easy.ad.preparations.html b/html_bk/iredmail-easy.ad.preparations.html similarity index 100% rename from html/iredmail-easy.ad.preparations.html rename to html_bk/iredmail-easy.ad.preparations.html diff --git a/html/iredmail-easy.autoconfig.autodiscover.html b/html_bk/iredmail-easy.autoconfig.autodiscover.html similarity index 100% rename from html/iredmail-easy.autoconfig.autodiscover.html rename to html_bk/iredmail-easy.autoconfig.autodiscover.html diff --git a/html/iredmail-easy.best.practice.html b/html_bk/iredmail-easy.best.practice.html similarity index 100% rename from html/iredmail-easy.best.practice.html rename to html_bk/iredmail-easy.best.practice.html diff --git a/html/iredmail-easy.create.ad.account.html b/html_bk/iredmail-easy.create.ad.account.html similarity index 100% rename from html/iredmail-easy.create.ad.account.html rename to html_bk/iredmail-easy.create.ad.account.html diff --git a/html/iredmail-easy.faq.html b/html_bk/iredmail-easy.faq.html similarity index 100% rename from html/iredmail-easy.faq.html rename to html_bk/iredmail-easy.faq.html diff --git a/html/iredmail-easy.getting.start.html b/html_bk/iredmail-easy.getting.start.html similarity index 100% rename from html/iredmail-easy.getting.start.html rename to html_bk/iredmail-easy.getting.start.html diff --git a/html/iredmail-easy.release.notes.html b/html_bk/iredmail-easy.release.notes.html similarity index 100% rename from html/iredmail-easy.release.notes.html rename to html_bk/iredmail-easy.release.notes.html diff --git a/html/iredmail-easy.setup.ad.ssl.html b/html_bk/iredmail-easy.setup.ad.ssl.html similarity index 100% rename from html/iredmail-easy.setup.ad.ssl.html rename to html_bk/iredmail-easy.setup.ad.ssl.html diff --git a/html/iredmail-easy.setup.sudo.html b/html_bk/iredmail-easy.setup.sudo.html similarity index 100% rename from html/iredmail-easy.setup.sudo.html rename to html_bk/iredmail-easy.setup.sudo.html diff --git a/html/iredmail-easy.unsubscribe.html b/html_bk/iredmail-easy.unsubscribe.html similarity index 100% rename from html/iredmail-easy.unsubscribe.html rename to html_bk/iredmail-easy.unsubscribe.html diff --git a/html/iredmail-easy.what.is.ssh.jump.server.html b/html_bk/iredmail-easy.what.is.ssh.jump.server.html similarity index 100% rename from html/iredmail-easy.what.is.ssh.jump.server.html rename to html_bk/iredmail-easy.what.is.ssh.jump.server.html diff --git a/html/iredmail.releases.html b/html_bk/iredmail.releases.html similarity index 100% rename from html/iredmail.releases.html rename to html_bk/iredmail.releases.html diff --git a/html_bk/js/jquery-1.12.4.min.js b/html_bk/js/jquery-1.12.4.min.js new file mode 100644 index 00000000..e8364758 --- /dev/null +++ b/html_bk/js/jquery-1.12.4.min.js @@ -0,0 +1,5 @@ +/*! jQuery v1.12.4 | (c) jQuery Foundation | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m="1.12.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return e.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!k.call(a,"constructor")&&!k.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(!l.ownFirst)for(b in a)return k.call(a,b);for(b in a);return void 0===b||k.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?i[j.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):g.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(h)return h.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=e.call(arguments,2),d=function(){return a.apply(b||this,c.concat(e.call(arguments)))},d.guid=a.guid=a.guid||n.guid++,d):void 0},now:function(){return+new Date},support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){i["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=!!a&&"length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+L+"*\\]",O=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+N+")*)|.*)\\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)},input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}if(f=d.getElementById(e[2]),f&&f.parentNode){if(f.id!==e[2])return A.find(a);this.length=1,this[0]=f}return this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||(e=n.uniqueSort(e)),D.test(a)&&(e=e.reverse())),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=!0,c||j.disable(),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.addEventListener?(d.removeEventListener("DOMContentLoaded",K),a.removeEventListener("load",K)):(d.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(d.addEventListener||"load"===a.event.type||"complete"===d.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll)a.setTimeout(n.ready);else if(d.addEventListener)d.addEventListener("DOMContentLoaded",K),a.addEventListener("load",K);else{d.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&d.documentElement}catch(e){}c&&c.doScroll&&!function f(){if(!n.isReady){try{c.doScroll("left")}catch(b){return a.setTimeout(f,50)}J(),n.ready()}}()}return I.promise(b)},n.ready.promise();var L;for(L in n(l))break;l.ownFirst="0"===L,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c,e;c=d.getElementsByTagName("body")[0],c&&c.style&&(b=d.createElement("div"),e=d.createElement("div"),e.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(e).appendChild(b),"undefined"!=typeof b.style.zoom&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",l.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(e))}),function(){var a=d.createElement("div");l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}a=null}();var M=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b},N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0; +}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(M(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),"object"!=typeof b&&"function"!=typeof b||(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f}}function S(a,b,c){if(M(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=void 0)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},Z=/^(?:checkbox|radio)$/i,$=/<([\w:-]+)/,_=/^$|\/(?:java|ecma)script/i,aa=/^\s+/,ba="abbr|article|aside|audio|bdi|canvas|data|datalist|details|dialog|figcaption|figure|footer|header|hgroup|main|mark|meter|nav|output|picture|progress|section|summary|template|time|video";function ca(a){var b=ba.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}!function(){var a=d.createElement("div"),b=d.createDocumentFragment(),c=d.createElement("input");a.innerHTML="
a",l.leadingWhitespace=3===a.firstChild.nodeType,l.tbody=!a.getElementsByTagName("tbody").length,l.htmlSerialize=!!a.getElementsByTagName("link").length,l.html5Clone="<:nav>"!==d.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,b.appendChild(c),l.appendChecked=c.checked,a.innerHTML="",l.noCloneChecked=!!a.cloneNode(!0).lastChild.defaultValue,b.appendChild(a),c=d.createElement("input"),c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),a.appendChild(c),l.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!!a.addEventListener,a[n.expando]=1,l.attributes=!a.getAttribute(n.expando)}();var da={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:l.htmlSerialize?[0,"",""]:[1,"X
","
"]};da.optgroup=da.option,da.tbody=da.tfoot=da.colgroup=da.caption=da.thead,da.th=da.td;function ea(a,b){var c,d,e=0,f="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,ea(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function fa(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}var ga=/<|&#?\w+;/,ha=/r;r++)if(g=a[r],g||0===g)if("object"===n.type(g))n.merge(q,g.nodeType?[g]:g);else if(ga.test(g)){i=i||p.appendChild(b.createElement("div")),j=($.exec(g)||["",""])[1].toLowerCase(),m=da[j]||da._default,i.innerHTML=m[1]+n.htmlPrefilter(g)+m[2],f=m[0];while(f--)i=i.lastChild;if(!l.leadingWhitespace&&aa.test(g)&&q.push(b.createTextNode(aa.exec(g)[0])),!l.tbody){g="table"!==j||ha.test(g)?""!==m[1]||ha.test(g)?0:i:i.firstChild,f=g&&g.childNodes.length;while(f--)n.nodeName(k=g.childNodes[f],"tbody")&&!k.childNodes.length&&g.removeChild(k)}n.merge(q,i.childNodes),i.textContent="";while(i.firstChild)i.removeChild(i.firstChild);i=p.lastChild}else q.push(b.createTextNode(g));i&&p.removeChild(i),l.appendChecked||n.grep(ea(q,"input"),ia),r=0;while(g=q[r++])if(d&&n.inArray(g,d)>-1)e&&e.push(g);else if(h=n.contains(g.ownerDocument,g),i=ea(p.appendChild(g),"script"),h&&fa(i),c){f=0;while(g=i[f++])_.test(g.type||"")&&c.push(g)}return i=null,p}!function(){var b,c,e=d.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b]=c in a)||(e.setAttribute(c,"t"),l[b]=e.attributes[c].expando===!1);e=null}();var ka=/^(?:input|select|textarea)$/i,la=/^key/,ma=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,na=/^(?:focusinfocus|focusoutblur)$/,oa=/^([^.]*)(?:\.(.+)|)/;function pa(){return!0}function qa(){return!1}function ra(){try{return d.activeElement}catch(a){}}function sa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)sa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=qa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return"undefined"==typeof n||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(G)||[""],h=b.length;while(h--)f=oa.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=oa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,e,f){var g,h,i,j,l,m,o,p=[e||d],q=k.call(b,"type")?b.type:b,r=k.call(b,"namespace")?b.namespace.split("."):[];if(i=m=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!na.test(q+n.event.triggered)&&(q.indexOf(".")>-1&&(r=q.split("."),q=r.shift(),r.sort()),h=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=r.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:n.makeArray(c,[b]),l=n.event.special[q]||{},f||!l.trigger||l.trigger.apply(e,c)!==!1)){if(!f&&!l.noBubble&&!n.isWindow(e)){for(j=l.delegateType||q,na.test(j+q)||(i=i.parentNode);i;i=i.parentNode)p.push(i),m=i;m===(e.ownerDocument||d)&&p.push(m.defaultView||m.parentWindow||a)}o=0;while((i=p[o++])&&!b.isPropagationStopped())b.type=o>1?j:l.bindType||q,g=(n._data(i,"events")||{})[b.type]&&n._data(i,"handle"),g&&g.apply(i,c),g=h&&i[h],g&&g.apply&&M(i)&&(b.result=g.apply(i,c),b.result===!1&&b.preventDefault());if(b.type=q,!f&&!b.isDefaultPrevented()&&(!l._default||l._default.apply(p.pop(),c)===!1)&&M(e)&&h&&e[q]&&!n.isWindow(e)){m=e[h],m&&(e[h]=null),n.event.triggered=q;try{e[q]()}catch(s){}n.event.triggered=void 0,m&&(e[h]=m)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())a.rnamespace&&!a.rnamespace.test(g.namespace)||(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]","i"),va=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,wa=/\s*$/g,Aa=ca(d),Ba=Aa.appendChild(d.createElement("div"));function Ca(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function Da(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function Ea(a){var b=ya.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Fa(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Ga(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(Da(b).text=a.text,Ea(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&Z.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}}function Ha(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&xa.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),Ha(f,b,c,d)});if(o&&(k=ja(b,a[0].ownerDocument,!1,a,d),e=k.firstChild,1===k.childNodes.length&&(k=e),e||d)){for(i=n.map(ea(k,"script"),Da),h=i.length;o>m;m++)g=k,m!==p&&(g=n.clone(g,!0,!0),h&&n.merge(i,ea(g,"script"))),c.call(a[m],g,m);if(h)for(j=i[i.length-1].ownerDocument,n.map(i,Ea),m=0;h>m;m++)g=i[m],_.test(g.type||"")&&!n._data(g,"globalEval")&&n.contains(j,g)&&(g.src?n._evalUrl&&n._evalUrl(g.src):n.globalEval((g.text||g.textContent||g.innerHTML||"").replace(za,"")));k=e=null}return a}function Ia(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(ea(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&fa(ea(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(va,"<$1>")},clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!ua.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(Ba.innerHTML=a.outerHTML,Ba.removeChild(f=Ba.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=ea(f),h=ea(a),g=0;null!=(e=h[g]);++g)d[g]&&Ga(e,d[g]);if(b)if(c)for(h=h||ea(a),d=d||ea(f),g=0;null!=(e=h[g]);g++)Fa(e,d[g]);else Fa(a,f);return d=ea(f,"script"),d.length>0&&fa(d,!i&&ea(a,"script")),d=h=e=null,f},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.attributes,m=n.event.special;null!=(d=a[h]);h++)if((b||M(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k||"undefined"==typeof d.removeAttribute?d[i]=void 0:d.removeAttribute(i),c.push(f))}}}),n.fn.extend({domManip:Ha,detach:function(a){return Ia(this,a,!0)},remove:function(a){return Ia(this,a)},text:function(a){return Y(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||d).createTextNode(a))},null,a,arguments.length)},append:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.appendChild(a)}})},prepend:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(ea(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return Y(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(ta,""):void 0;if("string"==typeof a&&!wa.test(a)&&(l.htmlSerialize||!ua.test(a))&&(l.leadingWhitespace||!aa.test(a))&&!da[($.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ea(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ha(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(ea(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],f=n(a),h=f.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(f[d])[b](c),g.apply(e,c.get());return this.pushStack(e)}});var Ja,Ka={HTML:"block",BODY:"block"};function La(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function Ma(a){var b=d,c=Ka[a];return c||(c=La(a,b),"none"!==c&&c||(Ja=(Ja||n("