├── .gitignore ├── Dockerfile ├── LICENSES ├── LICENSE ├── VENDORLICENSES.html └── VENDORLICENSES_files │ ├── bootstrap.css │ ├── bootstrap.js │ ├── css.css │ ├── css_002.css │ ├── font-awesome.css │ ├── jquery.js │ ├── jquery_002.js │ ├── main.css │ ├── main.js │ └── template.css ├── MSconvertGUI.png ├── MSconvertGUI.sh ├── README.md ├── Singularity ├── Singularity.md ├── msconvert.ctd ├── msconvert.xml ├── msconvert2.xml ├── mywine ├── neg-MM8_1-A,1_01_376.mzML ├── neg-MM8_1-A,1_01_376.zip ├── pwiz-logo.png ├── runTest1.sh ├── runTest2.sh ├── small.RAW ├── small.pwiz.1.1.mzML ├── test_cmds.txt ├── threonine_i2_e35_pH_tree.mzXML └── waitonprocess.sh /.gitignore: -------------------------------------------------------------------------------- 1 | pwiz-setup-*.msi 2 | *~ 3 | threonine_i2_e35_pH_tree.mzML 4 | neg-MM8_1-A,1_01_376.mzML 5 | .swp 6 | .*.swp 7 | .vagrant 8 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM i386/debian:stretch-backports 2 | 3 | ################################################################################ 4 | ### set metadata 5 | ENV TOOL_NAME=msconvert 6 | ENV TOOL_VERSION=3.0.18205 7 | ENV CONTAINER_VERSION=1.3 8 | ENV CONTAINER_GITHUB=https://github.com/phnmnl/container-pwiz 9 | 10 | LABEL version=1.3 11 | LABEL software.version=3.0.18205 12 | LABEL software=msconvert 13 | LABEL base.image="i386/debian:stretch-backports" 14 | LABEL description="Convert LC/MS or GC/MS RAW vendor files to mzML." 15 | LABEL website=https://github.com/phnmnl/container-pwiz 16 | LABEL documentation=https://github.com/phnmnl/container-pwiz 17 | LABEL license=https://github.com/phnmnl/container-pwiz 18 | LABEL tags="Metabolomics" 19 | 20 | # we need wget, bzip2, wine from winehq, 21 | # xvfb to fake X11 for winetricks during installation, 22 | # and winbind because wine complains about missing 23 | RUN apt-get update && \ 24 | apt-get -y install wget gnupg && \ 25 | echo "deb http://dl.winehq.org/wine-builds/debian/ stretch main" >> \ 26 | /etc/apt/sources.list.d/winehq.list && \ 27 | wget http://dl.winehq.org/wine-builds/winehq.key -qO- | apt-key add - && \ 28 | apt-get update && \ 29 | apt-get -y --install-recommends install \ 30 | bzip2 unzip curl \ 31 | winehq-devel \ 32 | winbind \ 33 | xvfb \ 34 | cabextract \ 35 | && \ 36 | apt-get -y clean && \ 37 | rm -rf \ 38 | /var/lib/apt/lists/* \ 39 | /usr/share/doc \ 40 | /usr/share/doc-base \ 41 | /usr/share/man \ 42 | /usr/share/locale \ 43 | /usr/share/zoneinfo \ 44 | && \ 45 | wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks \ 46 | -O /usr/local/bin/winetricks && chmod +x /usr/local/bin/winetricks 47 | 48 | # put C:\pwiz on the Windows search path 49 | ENV WINEARCH win32 50 | ENV WINEDEBUG -all,err+all 51 | ENV WINEPATH "C:\pwiz" 52 | ENV DISPLAY :0 53 | 54 | # To be singularity friendly, avoid installing anything to /root 55 | RUN mkdir /wineprefix/ 56 | ENV WINEPREFIX /wineprefix 57 | WORKDIR /wineprefix 58 | 59 | # wineserver needs to shut down properly!!! 60 | ADD waitonprocess.sh /wineprefix/waitonprocess.sh 61 | RUN chmod +x waitonprocess.sh 62 | 63 | # Install dependencies 64 | RUN winetricks -q win7 && xvfb-run winetricks -q vcrun2008 corefonts && xvfb-run winetricks -q dotnet452 && xvfb-run winetricks --force -q dotnet462 && ./waitonprocess.sh wineserver 65 | 66 | # 67 | # download ProteoWizard and extract it to C:\pwiz 68 | # 69 | 70 | # Pull latest version from TeamCity 71 | RUN wget -O- "https://teamcity.labkey.org/httpAuth/app/rest/builds/?locator=buildType:bt36,status:success,running:false,count:1&guest=1" | sed -e 's#.*build id=\"\([0-9]*\)\".*#\1#' >/tmp/pwiz.build 72 | 73 | # To specify a particular build, 74 | # e.g. https://teamcity.labkey.org/viewLog.html?buildId=574320&buildTypeId=bt36&tab=artifacts&guest=1 75 | # Don't forget to also change TOOL_VERSION=3.0.XXXX at the top of this file 76 | 77 | #RUN echo "606438" >/tmp/pwiz.build 78 | 79 | #RUN wget -O /tmp/pwiz.version https://teamcity.labkey.org/repository/download/bt36/`cat /tmp/pwiz.build`:id/VERSION?guest=1 80 | RUN wget -O /tmp/pwiz.artifacts https://teamcity.labkey.org/httpAuth/app/rest/builds/id:`cat /tmp/pwiz.build`/artifacts/children/?guest=1 81 | RUN mkdir /wineprefix/drive_c/pwiz && \ 82 | wget -O /tmp/pwiz.tar.bz2 https://teamcity.labkey.org`cat /tmp/pwiz.artifacts | grep -o 'content href="[^"]*bz2' | sed 's/content href="//g'`?guest=1 83 | RUN tar -f /tmp/pwiz.tar.bz2 --directory=/wineprefix/drive_c/pwiz -xj 84 | 85 | ## Add wrapper with xauth handling 86 | ADD MSconvertGUI.sh /usr/local/bin 87 | 88 | ## Prepare for container testing following 89 | ## https://github.com/phnmnl/phenomenal-h2020/wiki/Testing-Guide-Proposal-3 90 | ADD runTest1.sh /usr/local/bin/runTest1.sh 91 | RUN chmod +x /usr/local/bin/runTest1.sh 92 | 93 | ADD runTest2.sh /usr/local/bin/runTest2.sh 94 | RUN chmod +x /usr/local/bin/runTest2.sh 95 | 96 | # Prepare that a user-specific WINEPREFIX can be set, 97 | # since the global wineprefix is owned by root 98 | ADD mywine /usr/local/bin/mywine 99 | RUN mkdir /mywineprefix ; rm '/wineprefix/dosdevices/c:' ; ln -sf /wineprefix/drive_c /wineprefix/dosdevices/c\: ; chmod 777 /mywineprefix ; chmod +x /usr/local/bin/mywine ; ln -sf /wineprefix/drive_c '/wineprefix/dosdevices/c:' 100 | 101 | # Set up working directory and permissions to let user xclient save data 102 | RUN mkdir /data 103 | WORKDIR /data 104 | 105 | CMD ["mywine", "msconvert" ] 106 | 107 | ## If you need a proxy during build, don't put it into the Dockerfile itself: 108 | ## docker build --build-arg http_proxy=http://www-cache.ipb-halle.de:3128/ -t phnmnl/pwiz:3.0.9098-0.1 . 109 | -------------------------------------------------------------------------------- /LICENSES/LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "{}" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright {yyyy} {name of copyright owner} 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | 203 | -------------------------------------------------------------------------------- /LICENSES/VENDORLICENSES_files/bootstrap.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v3.3.6 (http://getbootstrap.com) 3 | * Copyright 2011-2015 Twitter, Inc. 4 | * Licensed under the MIT license 5 | */ 6 | 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); -------------------------------------------------------------------------------- /LICENSES/VENDORLICENSES_files/css.css: -------------------------------------------------------------------------------- 1 | /* cyrillic-ext */ 2 | @font-face { 3 | font-family: 'Lora'; 4 | font-style: italic; 5 | font-weight: 400; 6 | src: local('Lora Italic'), local('Lora-Italic'), url(http://fonts.gstatic.com/s/lora/v12/0QIhMX1D_JOuMw_LLPtLp_A.woff2) format('woff2'); 7 | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 8 | } 9 | /* cyrillic */ 10 | @font-face { 11 | font-family: 'Lora'; 12 | font-style: italic; 13 | font-weight: 400; 14 | src: local('Lora Italic'), local('Lora-Italic'), url(http://fonts.gstatic.com/s/lora/v12/0QIhMX1D_JOuMw_LJftLp_A.woff2) format('woff2'); 15 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 16 | } 17 | /* vietnamese */ 18 | @font-face { 19 | font-family: 'Lora'; 20 | font-style: italic; 21 | font-weight: 400; 22 | src: local('Lora Italic'), local('Lora-Italic'), url(http://fonts.gstatic.com/s/lora/v12/0QIhMX1D_JOuMw_LLvtLp_A.woff2) format('woff2'); 23 | unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; 24 | } 25 | /* latin-ext */ 26 | @font-face { 27 | font-family: 'Lora'; 28 | font-style: italic; 29 | font-weight: 400; 30 | src: local('Lora Italic'), local('Lora-Italic'), url(http://fonts.gstatic.com/s/lora/v12/0QIhMX1D_JOuMw_LL_tLp_A.woff2) format('woff2'); 31 | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; 32 | } 33 | /* latin */ 34 | @font-face { 35 | font-family: 'Lora'; 36 | font-style: italic; 37 | font-weight: 400; 38 | src: local('Lora Italic'), local('Lora-Italic'), url(http://fonts.gstatic.com/s/lora/v12/0QIhMX1D_JOuMw_LIftL.woff2) format('woff2'); 39 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 40 | } 41 | /* cyrillic-ext */ 42 | @font-face { 43 | font-family: 'Lora'; 44 | font-style: italic; 45 | font-weight: 700; 46 | src: local('Lora Bold Italic'), local('Lora-BoldItalic'), url(http://fonts.gstatic.com/s/lora/v12/0QIiMX1D_JOuMw_Dmt5eldGry70.woff2) format('woff2'); 47 | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 48 | } 49 | /* cyrillic */ 50 | @font-face { 51 | font-family: 'Lora'; 52 | font-style: italic; 53 | font-weight: 700; 54 | src: local('Lora Bold Italic'), local('Lora-BoldItalic'), url(http://fonts.gstatic.com/s/lora/v12/0QIiMX1D_JOuMw_Dmt5enNGry70.woff2) format('woff2'); 55 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 56 | } 57 | /* vietnamese */ 58 | @font-face { 59 | font-family: 'Lora'; 60 | font-style: italic; 61 | font-weight: 700; 62 | src: local('Lora Bold Italic'), local('Lora-BoldItalic'), url(http://fonts.gstatic.com/s/lora/v12/0QIiMX1D_JOuMw_Dmt5el9Gry70.woff2) format('woff2'); 63 | unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; 64 | } 65 | /* latin-ext */ 66 | @font-face { 67 | font-family: 'Lora'; 68 | font-style: italic; 69 | font-weight: 700; 70 | src: local('Lora Bold Italic'), local('Lora-BoldItalic'), url(http://fonts.gstatic.com/s/lora/v12/0QIiMX1D_JOuMw_Dmt5eltGry70.woff2) format('woff2'); 71 | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; 72 | } 73 | /* latin */ 74 | @font-face { 75 | font-family: 'Lora'; 76 | font-style: italic; 77 | font-weight: 700; 78 | src: local('Lora Bold Italic'), local('Lora-BoldItalic'), url(http://fonts.gstatic.com/s/lora/v12/0QIiMX1D_JOuMw_Dmt5emNGr.woff2) format('woff2'); 79 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 80 | } 81 | /* cyrillic-ext */ 82 | @font-face { 83 | font-family: 'Lora'; 84 | font-style: normal; 85 | font-weight: 400; 86 | src: local('Lora Regular'), local('Lora-Regular'), url(http://fonts.gstatic.com/s/lora/v12/0QIvMX1D_JOuMwf7I-NP.woff2) format('woff2'); 87 | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 88 | } 89 | /* cyrillic */ 90 | @font-face { 91 | font-family: 'Lora'; 92 | font-style: normal; 93 | font-weight: 400; 94 | src: local('Lora Regular'), local('Lora-Regular'), url(http://fonts.gstatic.com/s/lora/v12/0QIvMX1D_JOuMw77I-NP.woff2) format('woff2'); 95 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 96 | } 97 | /* vietnamese */ 98 | @font-face { 99 | font-family: 'Lora'; 100 | font-style: normal; 101 | font-weight: 400; 102 | src: local('Lora Regular'), local('Lora-Regular'), url(http://fonts.gstatic.com/s/lora/v12/0QIvMX1D_JOuMwX7I-NP.woff2) format('woff2'); 103 | unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; 104 | } 105 | /* latin-ext */ 106 | @font-face { 107 | font-family: 'Lora'; 108 | font-style: normal; 109 | font-weight: 400; 110 | src: local('Lora Regular'), local('Lora-Regular'), url(http://fonts.gstatic.com/s/lora/v12/0QIvMX1D_JOuMwT7I-NP.woff2) format('woff2'); 111 | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; 112 | } 113 | /* latin */ 114 | @font-face { 115 | font-family: 'Lora'; 116 | font-style: normal; 117 | font-weight: 400; 118 | src: local('Lora Regular'), local('Lora-Regular'), url(http://fonts.gstatic.com/s/lora/v12/0QIvMX1D_JOuMwr7Iw.woff2) format('woff2'); 119 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 120 | } 121 | /* cyrillic-ext */ 122 | @font-face { 123 | font-family: 'Lora'; 124 | font-style: normal; 125 | font-weight: 700; 126 | src: local('Lora Bold'), local('Lora-Bold'), url(http://fonts.gstatic.com/s/lora/v12/0QIgMX1D_JOuO7HeNtFumsmv.woff2) format('woff2'); 127 | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 128 | } 129 | /* cyrillic */ 130 | @font-face { 131 | font-family: 'Lora'; 132 | font-style: normal; 133 | font-weight: 700; 134 | src: local('Lora Bold'), local('Lora-Bold'), url(http://fonts.gstatic.com/s/lora/v12/0QIgMX1D_JOuO7HeNthumsmv.woff2) format('woff2'); 135 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 136 | } 137 | /* vietnamese */ 138 | @font-face { 139 | font-family: 'Lora'; 140 | font-style: normal; 141 | font-weight: 700; 142 | src: local('Lora Bold'), local('Lora-Bold'), url(http://fonts.gstatic.com/s/lora/v12/0QIgMX1D_JOuO7HeNtNumsmv.woff2) format('woff2'); 143 | unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; 144 | } 145 | /* latin-ext */ 146 | @font-face { 147 | font-family: 'Lora'; 148 | font-style: normal; 149 | font-weight: 700; 150 | src: local('Lora Bold'), local('Lora-Bold'), url(http://fonts.gstatic.com/s/lora/v12/0QIgMX1D_JOuO7HeNtJumsmv.woff2) format('woff2'); 151 | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; 152 | } 153 | /* latin */ 154 | @font-face { 155 | font-family: 'Lora'; 156 | font-style: normal; 157 | font-weight: 700; 158 | src: local('Lora Bold'), local('Lora-Bold'), url(http://fonts.gstatic.com/s/lora/v12/0QIgMX1D_JOuO7HeNtxumg.woff2) format('woff2'); 159 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 160 | } 161 | -------------------------------------------------------------------------------- /LICENSES/VENDORLICENSES_files/css_002.css: -------------------------------------------------------------------------------- 1 | /* cyrillic-ext */ 2 | @font-face { 3 | font-family: 'Montserrat'; 4 | font-style: normal; 5 | font-weight: 400; 6 | src: local('Montserrat Regular'), local('Montserrat-Regular'), url(http://fonts.gstatic.com/s/montserrat/v12/JTUSjIg1_i6t8kCHKm459WRhyzbi.woff2) format('woff2'); 7 | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 8 | } 9 | /* cyrillic */ 10 | @font-face { 11 | font-family: 'Montserrat'; 12 | font-style: normal; 13 | font-weight: 400; 14 | src: local('Montserrat Regular'), local('Montserrat-Regular'), url(http://fonts.gstatic.com/s/montserrat/v12/JTUSjIg1_i6t8kCHKm459W1hyzbi.woff2) format('woff2'); 15 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 16 | } 17 | /* vietnamese */ 18 | @font-face { 19 | font-family: 'Montserrat'; 20 | font-style: normal; 21 | font-weight: 400; 22 | src: local('Montserrat Regular'), local('Montserrat-Regular'), url(http://fonts.gstatic.com/s/montserrat/v12/JTUSjIg1_i6t8kCHKm459WZhyzbi.woff2) format('woff2'); 23 | unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; 24 | } 25 | /* latin-ext */ 26 | @font-face { 27 | font-family: 'Montserrat'; 28 | font-style: normal; 29 | font-weight: 400; 30 | src: local('Montserrat Regular'), local('Montserrat-Regular'), url(http://fonts.gstatic.com/s/montserrat/v12/JTUSjIg1_i6t8kCHKm459Wdhyzbi.woff2) format('woff2'); 31 | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; 32 | } 33 | /* latin */ 34 | @font-face { 35 | font-family: 'Montserrat'; 36 | font-style: normal; 37 | font-weight: 400; 38 | src: local('Montserrat Regular'), local('Montserrat-Regular'), url(http://fonts.gstatic.com/s/montserrat/v12/JTUSjIg1_i6t8kCHKm459Wlhyw.woff2) format('woff2'); 39 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 40 | } 41 | /* cyrillic-ext */ 42 | @font-face { 43 | font-family: 'Montserrat'; 44 | font-style: normal; 45 | font-weight: 700; 46 | src: local('Montserrat Bold'), local('Montserrat-Bold'), url(http://fonts.gstatic.com/s/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3gTD_u50.woff2) format('woff2'); 47 | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 48 | } 49 | /* cyrillic */ 50 | @font-face { 51 | font-family: 'Montserrat'; 52 | font-style: normal; 53 | font-weight: 700; 54 | src: local('Montserrat Bold'), local('Montserrat-Bold'), url(http://fonts.gstatic.com/s/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3g3D_u50.woff2) format('woff2'); 55 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 56 | } 57 | /* vietnamese */ 58 | @font-face { 59 | font-family: 'Montserrat'; 60 | font-style: normal; 61 | font-weight: 700; 62 | src: local('Montserrat Bold'), local('Montserrat-Bold'), url(http://fonts.gstatic.com/s/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3gbD_u50.woff2) format('woff2'); 63 | unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB; 64 | } 65 | /* latin-ext */ 66 | @font-face { 67 | font-family: 'Montserrat'; 68 | font-style: normal; 69 | font-weight: 700; 70 | src: local('Montserrat Bold'), local('Montserrat-Bold'), url(http://fonts.gstatic.com/s/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3gfD_u50.woff2) format('woff2'); 71 | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; 72 | } 73 | /* latin */ 74 | @font-face { 75 | font-family: 'Montserrat'; 76 | font-style: normal; 77 | font-weight: 700; 78 | src: local('Montserrat Bold'), local('Montserrat-Bold'), url(http://fonts.gstatic.com/s/montserrat/v12/JTURjIg1_i6t8kCHKm45_dJE3gnD_g.woff2) format('woff2'); 79 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 80 | } 81 | -------------------------------------------------------------------------------- /LICENSES/VENDORLICENSES_files/font-awesome.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.6.3');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.6.3') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.6.3') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.6.3') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.6.3') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.6.3#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.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} 5 | -------------------------------------------------------------------------------- /LICENSES/VENDORLICENSES_files/jquery_002.js: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/ 3 | * 4 | * Uses the built in easing capabilities added In jQuery 1.1 5 | * to offer multiple easing options 6 | * 7 | * TERMS OF USE - EASING EQUATIONS 8 | * 9 | * Open source under the BSD License. 10 | * 11 | * Copyright © 2001 Robert Penner 12 | * All rights reserved. 13 | * 14 | * TERMS OF USE - jQuery Easing 15 | * 16 | * Open source under the BSD License. 17 | * 18 | * Copyright © 2008 George McGinley Smith 19 | * All rights reserved. 20 | * 21 | * Redistribution and use in source and binary forms, with or without modification, 22 | * are permitted provided that the following conditions are met: 23 | * 24 | * Redistributions of source code must retain the above copyright notice, this list of 25 | * conditions and the following disclaimer. 26 | * Redistributions in binary form must reproduce the above copyright notice, this list 27 | * of conditions and the following disclaimer in the documentation and/or other materials 28 | * provided with the distribution. 29 | * 30 | * Neither the name of the author nor the names of contributors may be used to endorse 31 | * or promote products derived from this software without specific prior written permission. 32 | * 33 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 34 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 35 | * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 36 | * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 37 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 38 | * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 39 | * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 40 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 41 | * OF THE POSSIBILITY OF SUCH DAMAGE. 42 | * 43 | */ 44 | jQuery.easing.jswing=jQuery.easing.swing;jQuery.extend(jQuery.easing,{def:"easeOutQuad",swing:function(e,f,a,h,g){return jQuery.easing[jQuery.easing.def](e,f,a,h,g)},easeInQuad:function(e,f,a,h,g){return h*(f/=g)*f+a},easeOutQuad:function(e,f,a,h,g){return -h*(f/=g)*(f-2)+a},easeInOutQuad:function(e,f,a,h,g){if((f/=g/2)<1){return h/2*f*f+a}return -h/2*((--f)*(f-2)-1)+a},easeInCubic:function(e,f,a,h,g){return h*(f/=g)*f*f+a},easeOutCubic:function(e,f,a,h,g){return h*((f=f/g-1)*f*f+1)+a},easeInOutCubic:function(e,f,a,h,g){if((f/=g/2)<1){return h/2*f*f*f+a}return h/2*((f-=2)*f*f+2)+a},easeInQuart:function(e,f,a,h,g){return h*(f/=g)*f*f*f+a},easeOutQuart:function(e,f,a,h,g){return -h*((f=f/g-1)*f*f*f-1)+a},easeInOutQuart:function(e,f,a,h,g){if((f/=g/2)<1){return h/2*f*f*f*f+a}return -h/2*((f-=2)*f*f*f-2)+a},easeInQuint:function(e,f,a,h,g){return h*(f/=g)*f*f*f*f+a},easeOutQuint:function(e,f,a,h,g){return h*((f=f/g-1)*f*f*f*f+1)+a},easeInOutQuint:function(e,f,a,h,g){if((f/=g/2)<1){return h/2*f*f*f*f*f+a}return h/2*((f-=2)*f*f*f*f+2)+a},easeInSine:function(e,f,a,h,g){return -h*Math.cos(f/g*(Math.PI/2))+h+a},easeOutSine:function(e,f,a,h,g){return h*Math.sin(f/g*(Math.PI/2))+a},easeInOutSine:function(e,f,a,h,g){return -h/2*(Math.cos(Math.PI*f/g)-1)+a},easeInExpo:function(e,f,a,h,g){return(f==0)?a:h*Math.pow(2,10*(f/g-1))+a},easeOutExpo:function(e,f,a,h,g){return(f==g)?a+h:h*(-Math.pow(2,-10*f/g)+1)+a},easeInOutExpo:function(e,f,a,h,g){if(f==0){return a}if(f==g){return a+h}if((f/=g/2)<1){return h/2*Math.pow(2,10*(f-1))+a}return h/2*(-Math.pow(2,-10*--f)+2)+a},easeInCirc:function(e,f,a,h,g){return -h*(Math.sqrt(1-(f/=g)*f)-1)+a},easeOutCirc:function(e,f,a,h,g){return h*Math.sqrt(1-(f=f/g-1)*f)+a},easeInOutCirc:function(e,f,a,h,g){if((f/=g/2)<1){return -h/2*(Math.sqrt(1-f*f)-1)+a}return h/2*(Math.sqrt(1-(f-=2)*f)+1)+a},easeInElastic:function(f,h,e,l,k){var i=1.70158;var j=0;var g=l;if(h==0){return e}if((h/=k)==1){return e+l}if(!j){j=k*0.3}if(g a, 121 | .nav .open > a:hover, 122 | .nav .open > a:focus { 123 | background-color: #171814; 124 | } 125 | .open > .dropdown-toggle { 126 | color: white; 127 | } 128 | .dropdown-menu-custom { 129 | background-color: #4B4B4B; 130 | font-size: 18px; 131 | min-width: 148px; 132 | } 133 | .dropdown-menu-custom > li > a { 134 | color: white; 135 | } 136 | @media (min-width: 768px) { 137 | .navbar-custom { 138 | /*padding: 20px 0; 139 | border-bottom: none; 140 | letter-spacing: 1px; 141 | background: transparent; 142 | -webkit-transition: background 0.5s ease-in-out, padding 0.5s ease-in-out; 143 | -moz-transition: background 0.5s ease-in-out, padding 0.5s ease-in-out; 144 | transition: background 0.5s ease-in-out, padding 0.5s ease-in-out;*/ 145 | } 146 | .navbar-custom.top-nav-collapse { 147 | padding: 0; 148 | background: #171814; 149 | border-bottom: 1px solid rgba(255, 255, 255, 0.3); 150 | } 151 | } 152 | @media (max-width: 767px) { 153 | .navbar-custom .nav li a { 154 | line-height: 20px; 155 | } 156 | } 157 | .intro { 158 | display: table; 159 | width: 100%; 160 | height: auto; 161 | padding: 100px 0; 162 | text-align: center; 163 | color: white; 164 | background: url(../img/intro-bg.jpg) no-repeat bottom center scroll; 165 | background-color: #171814; 166 | -webkit-background-size: cover; 167 | -moz-background-size: cover; 168 | background-size: cover; 169 | -o-background-size: cover; 170 | } 171 | .intro .intro-body { 172 | display: table-cell; 173 | vertical-align: middle; 174 | } 175 | .intro .intro-body .brand-heading { 176 | font-size: 40px; 177 | margin-bottom: 0; 178 | } 179 | .intro .intro-body .intro-text { 180 | font-size: 24px; 181 | } 182 | @media (min-width: 768px) { 183 | .intro { 184 | height: 100%; 185 | padding: 0; 186 | } 187 | .intro .intro-body .brand-heading { 188 | font-size: 100px; 189 | } 190 | .intro .intro-body .intro-text { 191 | font-size: 40px; 192 | } 193 | } 194 | .btn-circle { 195 | width: 50px; 196 | height: 50px; 197 | margin-top: 15px; 198 | padding: 5px 11px; 199 | border: 1px solid white; 200 | border-radius: 100% !important; 201 | font-size: 28px; 202 | color: white; 203 | background: transparent; 204 | -webkit-transition: background 0.3s ease-in-out; 205 | -moz-transition: background 0.3s ease-in-out; 206 | transition: background 0.3s ease-in-out; 207 | } 208 | @media (min-width: 768px) { 209 | .btn-circle { 210 | width: 70px; 211 | height: 70px; 212 | padding: 7px 16px; 213 | border: 2px solid white; 214 | font-size: 40px; 215 | } 216 | } 217 | .btn-circle:hover, 218 | .btn-circle:focus { 219 | outline: none; 220 | color: #FAC74A; 221 | background: rgba(255, 255, 255, 0.1); 222 | } 223 | .btn-circle i.animated { 224 | -webkit-transition-property: -webkit-transform; 225 | -webkit-transition-duration: 1s; 226 | -moz-transition-property: -moz-transform; 227 | -moz-transition-duration: 1s; 228 | } 229 | .btn-circle:hover i.animated { 230 | -webkit-animation-name: pulse; 231 | -moz-animation-name: pulse; 232 | -webkit-animation-duration: 1.5s; 233 | -moz-animation-duration: 1.5s; 234 | -webkit-animation-iteration-count: infinite; 235 | -moz-animation-iteration-count: infinite; 236 | -webkit-animation-timing-function: linear; 237 | -moz-animation-timing-function: linear; 238 | } 239 | @-webkit-keyframes pulse { 240 | 0 { 241 | -webkit-transform: scale(1); 242 | transform: scale(1); 243 | } 244 | 50% { 245 | -webkit-transform: scale(1.2); 246 | transform: scale(1.2); 247 | } 248 | 100% { 249 | -webkit-transform: scale(1); 250 | transform: scale(1); 251 | } 252 | } 253 | @-moz-keyframes pulse { 254 | 0 { 255 | -moz-transform: scale(1); 256 | transform: scale(1); 257 | } 258 | 50% { 259 | -moz-transform: scale(1.2); 260 | transform: scale(1.2); 261 | } 262 | 100% { 263 | -moz-transform: scale(1); 264 | transform: scale(1); 265 | } 266 | } 267 | .content-section { 268 | padding: 50px 0; 269 | text-align: center; 270 | } 271 | .content-section h2 { 272 | border-bottom: 2px solid #FAC74A; 273 | } 274 | @media (min-width: 768px) { 275 | .content-section { 276 | padding: 100px 0; 277 | } 278 | } 279 | .btn { 280 | text-transform: uppercase; 281 | /*font-family: "Montserrat", "Helvetica Neue", Helvetica, Arial, sans-serif;*/ 282 | font-weight: bold; 283 | -webkit-transition: all 0.3s ease-in-out; 284 | -moz-transition: all 0.3s ease-in-out; 285 | transition: all 0.3s ease-in-out; 286 | border-radius: 0; 287 | } 288 | .btn-default { 289 | width: 160px; 290 | margin-bottom: 25px; 291 | border: 1px solid white; 292 | color: white; 293 | background-color: transparent; 294 | } 295 | .btn-default:hover, 296 | .btn-default:focus { 297 | border: 1px solid #653990; 298 | outline: none; 299 | color: #FAC74A; 300 | background-color: #653990; 301 | } 302 | /* TODO: make color slide to next button and features slide */ 303 | .btn-selected { 304 | border: 1px solid #653990; 305 | color: #FAC74A; 306 | background-color: #653990; 307 | } 308 | .btn-custom { 309 | text-transform: none; 310 | font-size: 24px; 311 | display: block; 312 | border: 1px solid white; 313 | color: white; 314 | background-color: transparent; 315 | width: 150px; 316 | margin: 0 auto; 317 | } 318 | @media (min-width: 768px) { 319 | .btn-default { 320 | margin-bottom: 35px; 321 | border: 2px solid white; 322 | } 323 | .btn-default:hover, 324 | .btn-default:focus, 325 | .btn-selected { 326 | border: 2px solid #653990; 327 | } 328 | .btn-custom { 329 | font-size: 40px; 330 | width: 300px; 331 | border: 2px solid white; 332 | } 333 | } 334 | .btn-custom:hover, 335 | .btn-custom:focus { 336 | outline: none; 337 | color: #FAC74A; 338 | background: rgba(255, 255, 255, 0.1); 339 | } 340 | .show-features { 341 | display: block; 342 | } 343 | .hide-features { 344 | display: none; 345 | } 346 | footer { 347 | padding: 25px 0; 348 | background-color: #653990 349 | } 350 | footer h3 { 351 | color: #FAC74A; 352 | margin-bottom: 15px; 353 | } 354 | footer p { 355 | margin: 0; 356 | } 357 | footer > div > p { 358 | font-size: 16px; 359 | } 360 | footer .row p { 361 | margin: 0 0 15px; 362 | } 363 | #sourceforge-banner { 364 | width: 100%; 365 | background-color: #171814; 366 | text-align: center; 367 | } 368 | @media (min-width: 768px) { 369 | footer > div > p { 370 | font-size: 18px; 371 | } 372 | } 373 | ::-moz-selection { 374 | text-shadow: none; 375 | background: #fcfcfc; 376 | background: rgba(255, 255, 255, 0.2); 377 | } 378 | ::selection { 379 | text-shadow: none; 380 | background: #fcfcfc; 381 | background: rgba(255, 255, 255, 0.2); 382 | } 383 | img::selection { 384 | background: transparent; 385 | } 386 | img::-moz-selection { 387 | background: transparent; 388 | } 389 | body { 390 | webkit-tap-highlight-color: rgba(255, 255, 255, 0.2); 391 | } 392 | -------------------------------------------------------------------------------- /LICENSES/VENDORLICENSES_files/main.js: -------------------------------------------------------------------------------- 1 | // jQuery for page scrolling feature - requires jQuery Easing plugin 2 | $(function() { 3 | $('a.page-scroll').bind('click', function(event) { 4 | var $anchor = $(this); 5 | $('html, body').stop().animate({ 6 | scrollTop: $($anchor.attr('href')).offset().top 7 | }, 1500, 'easeInOutExpo'); 8 | event.preventDefault(); 9 | }); 10 | }); 11 | 12 | // Closes the Responsive Menu on Menu Item Click 13 | $('.navbar-collapse ul li a').click(function() { 14 | if ($(this).attr('class') != 'dropdown-toggle active' && $(this).attr('class') != 'dropdown-toggle') { 15 | $('.navbar-toggle:visible').click(); 16 | } 17 | }); 18 | 19 | // Toggles hidden divs on button click 20 | $('.content-section button').click(function() { 21 | if (!($(this).hasClass('btn-selected')) && $(this).attr('id') != 'download-btn') { 22 | $('.content-section button').removeClass('btn-selected'); 23 | $(this).addClass('btn-selected'); 24 | 25 | var oldHidden = $('.hidden'); 26 | var oldShown = $('.shown'); 27 | switch($(this).attr('id')) { 28 | case 'prot-btn': 29 | $('#prot-content').removeClass('hidden'); 30 | $('#prot-content').addClass('shown'); 31 | break; 32 | case 'bumb-btn': 33 | $('#bumb-content').removeClass('hidden'); 34 | $('#bumb-content').addClass('shown'); 35 | break; 36 | case 'sky-btn': 37 | $('#sky-content').removeClass('hidden'); 38 | $('#sky-content').addClass('shown'); 39 | break; 40 | default: 41 | oldHidden.removeClass('hidden'); 42 | oldHidden.addClass('shown'); 43 | break; 44 | } 45 | oldShown.removeClass('shown'); 46 | oldShown.addClass('hidden'); 47 | } 48 | }) 49 | 50 | // Popup window for license agreements 51 | function popup(link, windowName) { 52 | if (!window.focus) 53 | return true; 54 | var href; 55 | if (typeof(link) == 'string') 56 | href = link; 57 | else 58 | href = link.href; 59 | window.open(href, windowName, 'width=600,height=400,scrollbars=yes'); 60 | return false; 61 | } 62 | 63 | // Toggles currently shown license agreement 64 | function switchLicense(className) { 65 | if ($('div.' + className).hasClass('hidden')) { 66 | var oldHidden = $('div.' + className); 67 | var oldShown = $('.shown'); 68 | oldHidden.removeClass('hidden'); 69 | oldHidden.addClass('shown'); 70 | oldShown.removeClass('shown'); 71 | oldShown.addClass('hidden'); 72 | } 73 | } 74 | 75 | // Software selector 76 | $('#softwareType').change(function() { 77 | if ($(this).data('options') == undefined) 78 | $(this).data('options', $('#downloadType option').clone()); 79 | var id = $(this).val(); 80 | var options = $(this).data('options').filter('[value=' + id + ']'); 81 | $('#downloadType').html(options); 82 | }); 83 | $('#softwareType').change(); 84 | 85 | // Downloads specified software 86 | function download() { 87 | /*var name = document.getElementById('inputName').value; 88 | if (!validateName(name)) { 89 | alert("The name field cannot be left blank."); 90 | return 91 | }*/ 92 | 93 | var email = document.getElementById('inputEmail').value.trim(); 94 | if (email && !validateEmail(email)) { 95 | alert("Invalid email address."); 96 | return; 97 | } 98 | 99 | if (!document.getElementById('license-agreements').checked) { 100 | alert("You must accept the license agreements before downloading."); 101 | return; 102 | } 103 | 104 | var selected = document.getElementById('downloadType'); 105 | var selectedData = selected.options[selected.selectedIndex]; 106 | var downloadType = selectedData.getAttribute('data-value'); 107 | var downloadTypeString = downloadType; 108 | var matchPattern = /(\/guestAuth\/[\w\/\-.:]+\/content\/[\w\/\-.:]+.tar.bz2)/g; 109 | 110 | if (downloadType.match(/_installer$/)) { 111 | matchPattern = /(\/guestAuth\/[\w\/\-.:]+\/content\/[\w\/\-.:]+.msi)/g; 112 | downloadTypeString = downloadTypeString.replace("_installer", "").trim(); 113 | } else if (downloadType.match(/_no_binary_msdata$/)) { 114 | matchPattern = /(\/guestAuth\/[\w\/\-.:]+\/content\/pwiz-src-without-v-[\w\/\-.:]+.tar.bz2)/g; 115 | downloadTypeString = downloadTypeString.replace("_no_binary_msdata", "").trim(); 116 | } else if (downloadType.match(/_without_tests$/)) { 117 | matchPattern = /(\/guestAuth\/[\w\/\-.:]+\/content\/bumbershoot-src-without-t-[\w\/\-.:]+.tar.bz2)/g; 118 | downloadTypeString = downloadTypeString.replace("_without_tests", "").trim(); 119 | } 120 | 121 | var remoteURL = "http://teamcity.labkey.org/guestAuth/app/rest/builds/status:SUCCESS,buildType:id:" + downloadTypeString + "/artifacts/children"; 122 | //alert("Remote URL: " + remoteURL); 123 | 124 | var teamCityInfoString = ""; 125 | var request = createCORSRequest("GET", remoteURL); 126 | if (request) { 127 | request.onload = function(){ 128 | teamCityInfoString = request.responseText; 129 | 130 | var matches = teamCityInfoString.match(matchPattern); 131 | var downloadURL = matches[0]; 132 | if(email) { 133 | writeEmailToFile(email, function() { 134 | window.location = "http://teamcity.labkey.org" + downloadURL; 135 | }); 136 | } else { 137 | window.location = "http://teamcity.labkey.org" + downloadURL; 138 | } 139 | }; 140 | request.send(); 141 | } 142 | } 143 | 144 | // Writes email to file 145 | function writeEmailToFile(email, callback) { 146 | 147 | $.post("js/ajax.php", { 148 | email: email 149 | }, function(data, status) { 150 | console.log(status); 151 | callback(); 152 | }); 153 | } 154 | 155 | // Validates name of downloader 156 | function validateName(name) { 157 | var nameRegex = /^[A-Za-z\s]+$/; 158 | return nameRegex.test(name); 159 | } 160 | 161 | // Validates email of downloader 162 | function validateEmail(email) { 163 | var emailRegex = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; 164 | return emailRegex.test(email); 165 | } 166 | 167 | // Cross-domain AJAX request 168 | // http://jquery-howto.blogspot.fr/2013/09/jquery-cross-domain-ajax-request.html#cors 169 | function createCORSRequest(method, url) { 170 | var xhr = new XMLHttpRequest(); 171 | if ("withCredentials" in xhr){ 172 | // XHR has 'withCredentials' property only if it supports CORS 173 | xhr.open(method, url, false); 174 | } else if (typeof XDomainRequest != "undefined"){ // if IE use XDR 175 | xhr = new XDomainRequest(); 176 | xhr.open(method, url); 177 | } else { 178 | xhr = null; 179 | } 180 | return xhr; 181 | } 182 | 183 | // Javascript equivalent basename function in PHP 184 | // http://stackoverflow.com/questions/3820381/need-a-basename-function-in-javascript 185 | function baseName(str) { 186 | var base = new String(str).substring(str.lastIndexOf('/') + 1); 187 | if(base.lastIndexOf(".") != -1) 188 | base = base.substring(0, base.lastIndexOf(".")); 189 | return base; 190 | } -------------------------------------------------------------------------------- /LICENSES/VENDORLICENSES_files/template.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | font-size: 44px; 3 | margin-bottom: 10px; 4 | } 5 | table { 6 | font-size: 18px; 7 | line-height: 1.5; 8 | } 9 | thead { 10 | background-color: #653990; 11 | } 12 | thead { 13 | color: #FAC74A; 14 | } 15 | td { 16 | padding-right: 20px; 17 | padding-bottom: 20px; 18 | } 19 | form { 20 | margin: 0 0 25px; 21 | font-size: 18px; 22 | } 23 | details { 24 | margin: 0 0 25px; 25 | } 26 | details[open] { 27 | color: white; 28 | } 29 | details[open] summary { 30 | color: #FAC74A; 31 | } 32 | details[open] summary::-webkit-details-marker { 33 | color: white; 34 | } 35 | @media (min-width: 768px) { 36 | h1 { 37 | font-size: 48px; 38 | } 39 | table { 40 | font-size: 20px; 41 | line-height: 1.6; 42 | } 43 | form { 44 | margin: 0 0 35px; 45 | font-size: 20px; 46 | } 47 | details { 48 | font-size: 0 0 35px; 49 | } 50 | } 51 | .underline { 52 | border-bottom: 2px solid #FAC74A; 53 | } 54 | .content-section { 55 | padding: 100px 0; 56 | text-align: left; 57 | } 58 | .content-section h1 { 59 | border-bottom: 2px solid #FAC74A; 60 | } 61 | .content-section div div h2:nth-child(2) { 62 | border-bottom: none; 63 | } 64 | .content-section ul, .content-section ol { 65 | font-size: 18px 66 | } 67 | .content-section ul li, .content-section ol li { 68 | padding-bottom: 25px; 69 | line-height: 1.5; 70 | } 71 | .content-section ul li ul li, .content-section ul li ol li { 72 | padding-bottom: 0; 73 | } 74 | .content-section table img { 75 | height: 150px; 76 | width: 150px; 77 | border-radius: 50%; 78 | border: 2px solid #653990; 79 | } 80 | .project-img { 81 | margin: -25px auto 25px; 82 | min-width: 100%; 83 | } 84 | .form-check { 85 | /*margin-bottom: 25px;*/ 86 | } 87 | @media (min-width: 768px) { 88 | .content-section { 89 | padding: 150px 0; 90 | } 91 | .content-section ul, .content-section ol { 92 | font-size: 20px; 93 | } 94 | .content-section ul li, .content-section ol li { 95 | padding-bottom: 35px; 96 | line-height: 1.6; 97 | } 98 | .project-img { 99 | margin: -35px auto 35px; 100 | } 101 | .form-check { 102 | /*margin-bottom: 35px;*/ 103 | } 104 | } 105 | #inputEmail::selection { 106 | background: #a8d1ff; 107 | } 108 | #inputEmail::-moz-selection { 109 | background: #a8d1ff; 110 | } -------------------------------------------------------------------------------- /MSconvertGUI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phnmnl/container-pwiz/82943830c1ed9e60ddcdde825ba3338fa1e61e9d/MSconvertGUI.png -------------------------------------------------------------------------------- /MSconvertGUI.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | xauth list | cut -d" " -f 3- | xargs xauth add :0 4 | XAUTHORITY=/root/.Xauthority-n wine MSconvertGUI 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![Logo](pwiz-logo.png) 2 | 3 | # Proteowizard msconvert 4 | Version: 3.0.18205 5 | 6 | ## This container is unmaintained 7 | Please head over to https://github.com/ProteoWizard/container for the new upstream home. 8 | 9 | ## Short Description 10 | 11 | Conversion of mass spectrometry vendor formats to mzML. 12 | 13 | ## Description 14 | 15 | Please note that there is now a container by the Proteowizard team 16 | as part of their continuous integration pipeline 17 | which should be used instead of this `phnmnl/container-pwiz`: 18 | https://hub.docker.com/r/chambm/pwiz-skyline-i-agree-to-the-vendor-licenses 19 | 20 | The first step in a metabolomics data processing workflow with Open 21 | Source tools is the conversion to an open raw data format like 22 | [mzML](https://github.com/HUPO-PSI/mzML/). One of the main routes to mzML-formatted data is using Open Source converter 23 | msconvert developed by the Proteowizard team (Chambers et al. 2012), 24 | which is one of the reference implementations for mzML. It can convert 25 | to mzML from Sciex, Bruker, Thermo, Agilent, Shimadzu, Waters 26 | and also the earlier file formats like mzData or mzXML. 27 | Although Proteowizard was initially targeting LC/MS data, it can also readily 28 | convert GC/MS data for example from the Waters GCT Premier or Agilent instruments. 29 | 30 | ## Key features 31 | - MS raw data conversion 32 | 33 | ## Functionality 34 | - Preprocessing 35 | 36 | ## Approaches 37 | - Metabolomics 38 | - Lipidomics 39 | - Glycomics 40 | - Proteomics 41 | 42 | ## Instrument Data Types 43 | - MS 44 | 45 | ## Screenshots 46 | ![screenshot](MSconvertGUI.png) 47 | 48 | ## Tool Authors 49 | - Several hundred labs around the world are using ProteoWizard within their development processes and computational workflows. We'd like to thank the many users who have contributed feedback to the project. We also thank the TPP team for their ongoing support. 50 | - See http://proteowizard.sourceforge.net/team.html for the full list of contributors. 51 | 52 | ## Container Contributors 53 | - [Steffen Neumann](https://github.com/sneumann) (IPB Halle) 54 | - [Rene Meier](https://github.com/meier-rene) (IPB Halle) 55 | - [Pablo Moreno](https://github.com/pcm32) (EMBL-EBI) 56 | - [Pierrick Roger](https://github.com/pkrog) (CAE) 57 | 58 | ## Website 59 | - http://proteowizard.sourceforge.net/ 60 | 61 | ## Git Repository 62 | - https://github.com/phnmnl/container-pwiz.git 63 | 64 | ## Installation 65 | 66 | The conversion can be started with e.g. 67 | 68 | `docker run -v $PWD:/data:rw phnmnl/phnmnl/pwiz-i-agree-to-the-vendor-licenses:latest /data/neg-MM8_1-A,1_01_376.d -o /data/ --mzML` 69 | 70 | The currently tested vendor formats are: 71 | 72 | * mzXML: `docker run -it -v $PWD:/data phnmnl/pwiz-i-agree-to-the-vendor-licenses:latest threonine_i2_e35_pH_tree.mzXML` 73 | * Bruker .d: `docker run -it -v $PWD:/data phnmnl/phnmnl/pwiz-i-agree-to-the-vendor-licenses:latest neg-MM8_1-A,1_01_376.d` 74 | 75 | To run the MSconvertGUI as shown in the above screenshot, you have to enable X11 access on the client machine, and pass the X11 information to the container: 76 | 77 | `docker run --rm -v $HOME/.Xauthority:/root/.Xauthority:r -v /tmp/.X11-unix:/tmp/.X11-unix:rw -v $HOME:/data:rw phnmnl/pwiz-i-agree-to-the-vendor-licenses wine MSconvertGUI` 78 | 79 | ## Galaxy usage 80 | 81 | A rudimentary Galaxy node description is included as `msconvert.xml`, 82 | it was obtained from the `msconvert.ctd` using 83 | `python CTD2Galaxy/generator.py -i /vol/phenomenal/vmis/docker-pwiz/msconvert.ctd -m sample_files/macros.xml -o /vol/phenomenal/vmis/docker-pwiz/msconvert.xml` 84 | 85 | 86 | ## Build instructions 87 | 88 | Please note that for licensing reasons we can not include all required 89 | files in this repository. Upon container building, the Proteowizard files 90 | will be downloaded from http://proteowizard.sourceforge.net/downloads.shtml and included 91 | in the created container. By building this container, you agree 92 | to all the vendor licenses that are shown at the above download links, 93 | and also included in the container and Dockerfile repository. To build, please use 94 | 95 | `docker build --tag="phnmnl/pwiz-i-agree-to-the-vendor-licenses:latest" .` 96 | 97 | Also note that the build is known to fail with Docker-1.9, make sure to use Docker-1.10 or above. 98 | 99 | ## Publications 100 | 101 | Chambers MC, Maclean B, Burke R, Amodei D, Ruderman DL, Neumann S, Gatto L, 102 | Fischer B, Pratt B, Egertson J, Hoff K, Kessner D, Tasman N, Shulman N, Frewen B, 103 | Baker TA, Brusniak MY, Paulse C, Creasy D, Flashner L, Kani K, Moulding C, 104 | Seymour SL, Nuwaysir LM, Lefebvre B, Kuhlmann F, Roark J, Rainer P, Detlev S, 105 | Hemenway T, Huhmer A, Langridge J, Connolly B, Chadick T, Holly K, Eckels J, 106 | Deutsch EW, Moritz RL, Katz JE, Agus DB, MacCoss M, Tabb DL, Mallick P. A 107 | cross-platform toolkit for mass spectrometry and proteomics. Nat Biotechnol. 2012 108 | Oct;30(10):918-20. doi: 10.1038/nbt.2377. PubMed PMID: 23051804; PubMed Central 109 | PMCID: PMC3471674. 110 | 111 | ## Licensing: APACHE LICENSE 112 | Please see LICENSES/LICENSE, this Apache License Covers Core ProteoWizard Tools and Library. This software does, however, depend on other software libraries which place further restrictions on its use and redistribution, see below. 113 | 114 | ### ADDENDUM TO APACHE LICENSE 115 | 116 | To the best of our ability we deliver this software to you under the Apache 2.0 License listed below (the source code is available in the ProteoWizard project). This software does, however, depend on other software libraries which place further restrictions on its use and redistribution. By accepting the license terms for this software, you agree to comply with the restrictions imposed on you by the 117 | [license agreements of the software libraries](LICENSES/VENDORLICENSES.html) 118 | on which it depends: 119 | 120 | * AB Sciex WIFF Reader Library 121 | * Agilent Mass Hunter Data Access Component Library 122 | * Bruker CompassXtract 123 | * Shimadzu SFCS 124 | * Thermo-Scientific MSFileReader Library 125 | * Waters Raw Data Access Component Library 126 | 127 | NOTE: If you do not plan to redistribute this software yourself, then you are the "end-user" in the above agreements. 128 | -------------------------------------------------------------------------------- /Singularity: -------------------------------------------------------------------------------- 1 | Bootstrap: docker 2 | From: pwiz-i-agree-to-the-vendor-licenses:latest 3 | 4 | #Registry: container-registry.phenomenal-h2020.eu 5 | Registry: http://localhost:5000 6 | 7 | Namespace: 8 | 9 | ## Then do: 10 | ## singularity build pwiz-i-agree-to-the-vendor-licenses.simg Singularity 11 | 12 | ## Usage: 13 | ## singularity run /tmp/singularity/pwiz-i-agree-to-the-vendor-licenses 14 | -------------------------------------------------------------------------------- /Singularity.md: -------------------------------------------------------------------------------- 1 | ## Why Singularity ? 2 | 3 | While docker is probably the older and well established container 4 | technology, there are use cases where some Docker concepts are 5 | show-stoppers or difficult to work around. 6 | 7 | msconvert will very often be used to convert MS raw data 8 | on a network file share such as NFS. Because docker containers 9 | are executed through the dockerd daemon which is by default running 10 | as `root` user, the container can not write the converted files 11 | back to the NFS share (unless you do some `uid` remapping magic, 12 | or run NFS as `no_root_squash`). 13 | 14 | ## Creating a singularity container from the pwiz docker container 15 | 16 | We don't (yet ?) have a recipe to create a Singularity pwiz container image, 17 | but here are the steps to convert the Docker image to a Singularity image. 18 | This requires that the docker image can be pulled from a registry. 19 | You can run an insecure ad-hoc created local registry running in a container itself: 20 | ``` 21 | docker run -d -p 5000:5000 --restart=always --name registry registry:2 22 | ``` 23 | 24 | First, build the docker image as described in the README.md, and push it 25 | into a docker registry: 26 | 27 | ``` 28 | docker build --tag="phnmnl/pwiz-i-agree-to-the-vendor-licenses:latest" . 29 | docker tag phnmnl/pwiz-i-agree-to-the-vendor-licenses localhost:5000/pwiz-i-agree-to-the-vendor-licenses 30 | docker push localhost:5000/pwiz-i-agree-to-the-vendor-licenses:latest 31 | ``` 32 | 33 | As root you can then convert the docker image with instructions in `Singularity` 34 | into a `.simg` image. The docker registry information, image name and tag 35 | are in that `Singularity` recipe. We need `--writable` because we need to 36 | write to the WINEPREFIX inside the container: 37 | 38 | 39 | ``` 40 | SINGULARITY_NOHTTPS=1 singularity build --writable pwiz-i-agree-to-the-vendor-licenses.simg Singularity 41 | ``` 42 | 43 | Now you are ready to execute the `pwiz-i-agree-to-the-vendor-licenses.simg` 44 | as a normal user. We need to specify a temporary diectory 45 | with `-S /mywineprefix/`, and we can optionally mount an NFS share that exists 46 | on the host system with `-B /nfs`. 47 | 48 | 49 | ``` 50 | singularity exec -B /nfs -S /mywineprefix/ ./pwiz-i-agree-to-the-vendor-licenses.simg mywine msconvert /nfs/.../neg_MM8_1-A,2_01_9980.d -o $HOME/mzML` 51 | ``` 52 | 53 | -------------------------------------------------------------------------------- /msconvert.ctd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | -------------------------------------------------------------------------------- /msconvert.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | phnmnl/pwiz 7 | 8 | Converts vendor RAW MS to mzML. 9 | 10 | wine "/home/xclient/.wine/drive_c/Program Files/ProteoWizard/ProteoWizard/msconvert.exe" $infile 2>/dev/null | cat >$outfile 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | Converts between different MS file formats. For more information, visit http://proteowizard.sourceforge.net/tools/msconvert.html 19 | 20 | -------------------------------------------------------------------------------- /msconvert2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | phnmnl/pwiz 7 | 8 | Converts vendor RAW MS to mzML. 9 | /dev/null; 14 | sudo mv \$PWD/tmp_msconvert/out.mzML $outfile 15 | ]]> 16 | 17 | 18 | 19 | 20 | 21 | 22 | Converts between different MS file formats. For more information, visit http://proteowizard.sourceforge.net/tools/msconvert.html 23 | 24 | -------------------------------------------------------------------------------- /mywine: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | GLOBALWINEPREFIX=/wineprefix 4 | MYWINEPREFIX=/mywineprefix/my 5 | 6 | mkdir -p "$MYWINEPREFIX" 7 | cp -v "$GLOBALWINEPREFIX"/*.reg "$MYWINEPREFIX" 8 | cp -avx "$GLOBALWINEPREFIX/dosdevices" "$MYWINEPREFIX" 9 | 10 | export WINEPREFIX=$MYWINEPREFIX 11 | wine "$@" 12 | 13 | -------------------------------------------------------------------------------- /neg-MM8_1-A,1_01_376.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phnmnl/container-pwiz/82943830c1ed9e60ddcdde825ba3338fa1e61e9d/neg-MM8_1-A,1_01_376.zip -------------------------------------------------------------------------------- /pwiz-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phnmnl/container-pwiz/82943830c1ed9e60ddcdde825ba3338fa1e61e9d/pwiz-logo.png -------------------------------------------------------------------------------- /runTest1.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | function DOWNLOAD() { 4 | # Download RAW 5 | curl -L -o /tmp/test.zip "https://github.com/phnmnl/container-pwiz/raw/master/neg-MM8_1-A%2C1_01_376.zip" 6 | 7 | # Download expected output and run it through mscat 8 | curl -L -o /tmp/test.mzml_expected_output "https://github.com/phnmnl/container-pwiz/raw/master/neg-MM8_1-A%2C1_01_376.mzML" 9 | wine mscat /tmp/test.mzml_expected_output > /tmp/test.expected_output 10 | } 11 | 12 | function MSCONVERT() { 13 | # Process RAW, create mzml and run it through mscat 14 | unzip -d /tmp/test /tmp/test.zip 15 | #export WINEPREFIX=~/.wine-new 16 | wine msconvert.exe /tmp/test --mzML 17 | wine mscat /tmp/test.mzML > /tmp/test.output 18 | } 19 | 20 | function EXIT1() { 21 | echo "msconvert output does not match expected output!" 22 | exit 1 23 | } 24 | 25 | function TEST1() { 26 | # Compare msconvert-output with expected output 27 | cmp /tmp/test.output /tmp/test.expected_output || EXIT1 28 | } 29 | 30 | # Set WORKDIR!!! 31 | cd /tmp 32 | 33 | # Launch functions 34 | DOWNLOAD 35 | MSCONVERT 36 | TEST1 37 | -------------------------------------------------------------------------------- /runTest2.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | function DOWNLOAD() { 4 | # Download RAW 5 | curl -L -o /tmp/small.RAW "https://github.com/phnmnl/container-pwiz/raw/master/small.RAW" 6 | 7 | # Download expected output and run it through mscat 8 | curl -L -o /tmp/small.pwiz.1.1.mzML "https://github.com/phnmnl/container-pwiz/raw/master/small.pwiz.1.1.mzML" 9 | wine mscat /tmp/small.pwiz.1.1.mzML > /tmp/test.expected_output 10 | } 11 | 12 | function MSCONVERT() { 13 | wine msconvert.exe /tmp/small.RAW --mzML 14 | wine mscat /tmp/test.mzML > /tmp/test.output 15 | } 16 | 17 | function EXIT1() { 18 | echo "msconvert output does not match expected output!" 19 | exit 1 20 | } 21 | 22 | function TEST1() { 23 | # Compare msconvert-output with expected output 24 | cmp /tmp/test.output /tmp/test.expected_output || EXIT1 25 | } 26 | 27 | # Set WORKDIR!!! 28 | cd /tmp 29 | 30 | # Launch functions 31 | DOWNLOAD 32 | MSCONVERT 33 | TEST1 34 | -------------------------------------------------------------------------------- /small.RAW: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phnmnl/container-pwiz/82943830c1ed9e60ddcdde825ba3338fa1e61e9d/small.RAW -------------------------------------------------------------------------------- /test_cmds.txt: -------------------------------------------------------------------------------- 1 | wine msconvert --help 2 | -------------------------------------------------------------------------------- /waitonprocess.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # inspired by http://stackoverflow.com/a/10407912 4 | 5 | echo "Start waiting on $@" 6 | while pgrep "$@" > /dev/null 7 | do 8 | echo "waiting ..." 9 | sleep 1 10 | done 11 | echo "$@ completed" 12 | --------------------------------------------------------------------------------