diff --git a/Doc/Config/cabinet config.xml b/Doc/Config/cabinet config.xml new file mode 100644 index 0000000..1d6eba7 --- /dev/null +++ b/Doc/Config/cabinet config.xml @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + false + + + + + + false + + + en + + + + + 50 + + 900 + + + + + + + + + + + + \ No newline at end of file diff --git a/Doc/Config/config.xml b/Doc/Config/config.xml new file mode 100644 index 0000000..11362a7 --- /dev/null +++ b/Doc/Config/config.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + true + + false + + + + + \ No newline at end of file diff --git a/Doc/Config/end user config.xml b/Doc/Config/end user config.xml new file mode 100644 index 0000000..de27475 --- /dev/null +++ b/Doc/Config/end user config.xml @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + 2 + + + + + + + + + + + + + + + login-id + + + + password + + + + domain + + + + + + + + + + + false + + + en + + + + + 50 + + 900 + + + + + + + + + + + + \ No newline at end of file diff --git a/Doc/Config/log4j2.xml b/Doc/Config/log4j2.xml new file mode 100644 index 0000000..0756304 --- /dev/null +++ b/Doc/Config/log4j2.xml @@ -0,0 +1,43 @@ + + + + + + ${ctx:applicationPath}/logs + + + + + + + + + + + + + UTF-8 + %d{MMM dd, yyyy HH:mm:ss.SSS}: %t: %p: %m%n + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Doc/Seclore Server SDK Java Guide v4.5.2.0.pdf b/Doc/Seclore Server SDK Java Guide v4.5.2.0.pdf new file mode 100644 index 0000000..0150b75 Binary files /dev/null and b/Doc/Seclore Server SDK Java Guide v4.5.2.0.pdf differ diff --git a/FOSS-Licenses.txt b/FOSS-Licenses.txt new file mode 100644 index 0000000..22789b3 --- /dev/null +++ b/FOSS-Licenses.txt @@ -0,0 +1,597 @@ +THIRD-PARTY OPEN SOURCE SOFTWARE NOTICES AND INFORMATION +Do Not Translate or Localize + +Seclore Server SDK Java incorporates third party material from the opensource +projects listed below. The original copyright notice and the license under +which Seclore received such third party material are set forth below. Seclore +reserves all other rights not expressly granted, whether by implication, +estoppel or otherwise. Such licenses and notices are provided for +informational purposes only. + + +All files or libraries mentioned below are externally maintained libraries +used by this software which have their own licenses; +we recommend you read them, as their terms may differ from the Seclore +commercial terms. + + +List includes open source third party libraries used by Seclore Policy Server +For more details on Free and Open Source Software (FOSS) libraries used visit +project home or check notices and licenses shipped with binaries of these +libraries. + + + + + +List of open source libraries: +1. BouncyCastle Crypto Library Java 1.0.2.4 +2. Apache Logging for Java 2.17.1 +3. Apache Commons +4. xerces XML Parser 2.12.2 + + + + +------------------------------------------------------------------------------- + + +1. BouncyCastle Crypto Library Java 1.0.2.4 + +https://www.bouncycastle.org/fips-java/ + +MIT + + + +--- begin of LICENSE --- + + + +Copyright (c) 2000-2021 The Legion of the Bouncy Castle Inc. (http://www.bouncycastle.org) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the "Software"), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial +portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + + + + +--- end of LICENSE --- + + + +------------------------------------------------------------------------------- + + +2. Apache Logging for Java 2.17.1 + +https://logging.apache.org/log4j/2.0/download.html +https://github.com/apache/logging-log4j2/tree/rel/2.17.1 + +Apache 2.0 + + + +--- begin of LICENSE --- + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + + +--- end of LICENSE --- + + + +------------------------------------------------------------------------------- + + +3. Apache Commons + +http://commons.apache.org/ + +Apache 2.0 + + + +--- begin of LICENSE --- + +Apache License + +Version 2.0, January 2004 + +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. + +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: + +You must give any other recipients of the Work or Derivative Works a copy of this License; and +You must cause any modified files to carry prominent notices stating that You changed the files; and +You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and +If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. + +You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. +5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + + + +--- end of LICENSE --- + + + +------------------------------------------------------------------------------- + + +4. xerces XML Parser 2.12.2 + +https://github.com/apache/xerces2-j + +Apache 2.0 + + + +--- begin of LICENSE --- + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + +--- end of LICENSE --- + + + +------------------------------------------------------------------------------- + + diff --git a/README.md b/README.md new file mode 100644 index 0000000..07f7c72 --- /dev/null +++ b/README.md @@ -0,0 +1,32 @@ +
+ Seclore Server SDK +
+ +# Seclore Server SDK Examples + +Welcome to the Seclore Server SDK Examples repository! Here, you'll find a curated collection of example projects showcasing the robust capabilities of the [Seclore Software Development Kit](https://repo.seclore.com/public/-/packages/generic/seclore-java-sdk/4.4.18.0). + +## Table of Contents + +1. [About this Repo](#About) +2. [Examples](#Examples) +3. [Learning Resources](#Learning) + +## About this Repo + +This repository serves as a comprehensive guide to leveraging the powerful Web Service APIs exposed by the Seclore Policy Server. It includes an official list of meticulously crafted SDK examples (see ["Examples"](#Examples)) tailored to empower developers in seamlessly integrating the SDK into their applications. Each example provides practical demonstrations of common service implementations and essential infrastructure patterns, ensuring a smooth integration experience with the Seclore Server SDK. + +## Examples + +Refer the examples in Java language, fully supported by the Seclore Server SDK. Explore the intricacies of secure data management, access controls, and much more by visiting the following link: [Examples](examples) + +## Learning Resources + +While this is an excellent learning resource for the SDK, there are other resources that can be referenced to assist with your learning/development process. + +### Official Resources + +- [Developer Guide](Doc/Seclore%20Server%20SDK%20Java%20Guide%20v4.5.2.0.pdf) +- [API Reference](https://ps.seclore.com/sdk/4.4.18.0/apidocs) +- [Error Codes](https://ps.seclore.com/sdk/4.4.18.0/errorcodes) +- [Seclore Server SDK Package](https://repo.seclore.com/public/-/packages/generic/seclore-java-sdk/4.4.18.0) diff --git a/config-files/log4j2.xml b/config-files/log4j2.xml new file mode 100644 index 0000000..e69de29 diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Protect and Wrap Sample Code Walkthrough.mp4 b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Protect and Wrap Sample Code Walkthrough.mp4 new file mode 100755 index 0000000..6384ea3 Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Protect and Wrap Sample Code Walkthrough.mp4 differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/Readme.txt b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/Readme.txt new file mode 100755 index 0000000..c798d20 --- /dev/null +++ b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/Readme.txt @@ -0,0 +1,24 @@ + +Protect With Hot Folder and Wrap Sample App +============================================ + +Deployment Steps: +------------------ + +1. make sure your policy server is running . This app requires java 8 or above to run so make + sure java 8 or above is installed. + +2. go inside 'bin/Protect With Hot Folder and Wrap Sample App' + +3. Configure the 'tenant config.xml' in 'config/' + a. Policy Server Details: + server : Server name on which Policy Server is running + port : Server Port on which Policy Server is running + app-name : Policy Server application name + + b. fill hot folder details i.e id and passphrase + +4. If you are using java 8 , put libs present inside 'doc/JCE Files/java8' into + 'bin/Protect With Hot Folder and Wrap Sample App/lib' + +5. click on run.bat to start sample app , follow instruction on terminal \ No newline at end of file diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/config/cabinet config.xml b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/config/cabinet config.xml new file mode 100644 index 0000000..1d6eba7 --- /dev/null +++ b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/config/cabinet config.xml @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + false + + + + + + false + + + en + + + + + 50 + + 900 + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/config/config.xml b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/config/config.xml new file mode 100644 index 0000000..11362a7 --- /dev/null +++ b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/config/config.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + true + + false + + + + + \ No newline at end of file diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/config/log4j.properties b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/config/log4j.properties new file mode 100755 index 0000000..8293be6 --- /dev/null +++ b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/config/log4j.properties @@ -0,0 +1,15 @@ + +log4j.category.WSCLIENT=debug, WSCLIENT + +# If we want to change the Appender, we have to change +# UtilFunction.initializeLoggers() too, because it assumes that the appender +# is 'org.apache.log4j.RollingFileAppender' and changes path of the file by +# getting appender from this logger. +log4j.appender.WSCLIENT=com.seclore.fs.ws.client.logger.DailyZippedRollingFileAppender +# Path of the file should be relative to application ROOT +log4j.appender.WSCLIENT.File=logs/WSClient.log +log4j.appender.WSCLIENT.MaxFileSize=10MB +#log4j.appender.REQUEST_LOGGER.MaxBackupIndex=10 +log4j.appender.WSCLIENT.DatePattern='_'yyyy-MM-dd +log4j.appender.WSCLIENT.layout=org.apache.log4j.PatternLayout +log4j.appender.WSCLIENT.layout.ConversionPattern=%d{MMM dd, yyyy HH:mm:ss.SSS} %F:%L%n%p: %m%n diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/config/log4j2.xml b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/config/log4j2.xml new file mode 100644 index 0000000..0756304 --- /dev/null +++ b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/config/log4j2.xml @@ -0,0 +1,43 @@ + + + + + + ${ctx:applicationPath}/logs + + + + + + + + + + + + + UTF-8 + %d{MMM dd, yyyy HH:mm:ss.SSS}: %t: %p: %m%n + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/bc-fips-1.0.2.4.jar b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/bc-fips-1.0.2.4.jar new file mode 100644 index 0000000..a38f9d0 Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/bc-fips-1.0.2.4.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/commons-codec-1.6.jar b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/commons-codec-1.6.jar new file mode 100644 index 0000000..ee1bc49 Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/commons-codec-1.6.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/disruptor-3.3.7.jar b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/disruptor-3.3.7.jar new file mode 100644 index 0000000..1777a37 Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/disruptor-3.3.7.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/fs-smaillibrary-1.2.7.0.jar b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/fs-smaillibrary-1.2.7.0.jar new file mode 100644 index 0000000..c01ec4a Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/fs-smaillibrary-1.2.7.0.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/fs-ws-client-4.4.18.0.jar b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/fs-ws-client-4.4.18.0.jar new file mode 100644 index 0000000..d0a949c Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/fs-ws-client-4.4.18.0.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/juniversalchardet-1.0.3.jar b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/juniversalchardet-1.0.3.jar new file mode 100755 index 0000000..1af703f Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/juniversalchardet-1.0.3.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/log4j-api-2.17.1.jar b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/log4j-api-2.17.1.jar new file mode 100644 index 0000000..1aae243 Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/log4j-api-2.17.1.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/log4j-core-2.17.1.jar b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/log4j-core-2.17.1.jar new file mode 100644 index 0000000..4682527 Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/log4j-core-2.17.1.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/sample-app.jar b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/sample-app.jar new file mode 100644 index 0000000..3d503e9 Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/sample-app.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/seclore-io-1.0.0.0.jar b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/seclore-io-1.0.0.0.jar new file mode 100644 index 0000000..365237b Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/seclore-io-1.0.0.0.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/xercesImpl-2.12.2.jar b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/xercesImpl-2.12.2.jar new file mode 100644 index 0000000..ccbae9f Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/xercesImpl-2.12.2.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/run.bat b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/run.bat new file mode 100755 index 0000000..45ecf70 --- /dev/null +++ b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/run.bat @@ -0,0 +1,18 @@ +@echo off +set "CURRENT_DIR=%cd%" +echo --------------------------------------------------------- +echo Seclore 'Protect with Hot Folder Wrap Sample App' Utility +echo --------------------------------------------------------- +echo. + +rem if your want to run on a different jdk or java path is not configured uncomment below line +rem for example , +rem set path="C:\Program Files\Java\jdk-11.0.1\bin"; +java -version +echo. + +REM uncomment below line to see the version of sample app i.e( remove REM mentioned below) +REM java -cp "./lib/sample-app.jar"; com.seclore.fs.protect.example.Version + + java -cp "./lib/*"; com.seclore.fs.protect.example.main.SecloreMain +pause \ No newline at end of file diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/doc/Developer_s Reference.txt b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/doc/Developer_s Reference.txt new file mode 100755 index 0000000..d49ade4 --- /dev/null +++ b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/doc/Developer_s Reference.txt @@ -0,0 +1,37 @@ +FileSecure Interfaces integration source code reference. + +FS Helper Initialization +------------------------ + - At application startup initializing FSHelperlibrary and FSHelper + - Below classes are used for the same + - SecloreMain + - static block :- + InitializeWSClient.initializeHelperLibrary((FSHELPERLIBRARY_CONFIG_XML_PATH, );); + InitializeWSClient.initializeHelper(HELPER_INSTANCE_KEY, FSHELPER_RESOURCE_PATH, FSHELPER_CONFIG_XML_PATH, ); + - InitializeWSClient + - initializeHelperLibrary( ... ) + - initializeHelper( ... ) + + + +Main Class +------------ + - com.seclore.fs.protect.example.main + - SecloreMain class + +Note: +===== +while preparing xml string for request or response. please escape below spacial character for the string which will be written within xml tag. + "&" -> "&" + "<" -> "<" + ">", -> ">" + "\"" -> """ + "'" -> "'"; + + Refer: com.seclore.fs.protect.example.util.XMLUtil class and + - escapeForXML () method + +Example: sample xml is "Sample Sales & purchase report.pdf" + here "Sample Sales and purchase report" should be escaped. + Use: String fileName = XMLHelper.escapeForXML( "Sample Sales & purchase report" ); + ""+fileName+"" diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/doc/JCE Files/Java7/US_export_policy.jar b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/doc/JCE Files/Java7/US_export_policy.jar new file mode 100755 index 0000000..7173213 Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/doc/JCE Files/Java7/US_export_policy.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/doc/JCE Files/Java7/local_policy.jar b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/doc/JCE Files/Java7/local_policy.jar new file mode 100755 index 0000000..c34d036 Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/doc/JCE Files/Java7/local_policy.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/doc/JCE Files/Java8/US_export_policy.jar b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/doc/JCE Files/Java8/US_export_policy.jar new file mode 100755 index 0000000..251b102 Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/doc/JCE Files/Java8/US_export_policy.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/doc/JCE Files/Java8/local_policy.jar b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/doc/JCE Files/Java8/local_policy.jar new file mode 100755 index 0000000..1c58939 Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/doc/JCE Files/Java8/local_policy.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/.classpath b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/.classpath new file mode 100755 index 0000000..4e3bf4d --- /dev/null +++ b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/.classpath @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/.project b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/.project new file mode 100755 index 0000000..5160502 --- /dev/null +++ b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/.project @@ -0,0 +1,17 @@ + + + Protect With Hot Folder and Wrap Sample App Code + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/.settings/org.eclipse.jdt.core.prefs b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/.settings/org.eclipse.jdt.core.prefs new file mode 100755 index 0000000..3a21537 --- /dev/null +++ b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/bin/com/seclore/fs/protect/example/Version.class b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/bin/com/seclore/fs/protect/example/Version.class new file mode 100644 index 0000000..a202905 Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/bin/com/seclore/fs/protect/example/Version.class differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/bin/com/seclore/fs/protect/example/core/InitializeWSClient.class b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/bin/com/seclore/fs/protect/example/core/InitializeWSClient.class new file mode 100644 index 0000000..48cd199 Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/bin/com/seclore/fs/protect/example/core/InitializeWSClient.class differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/bin/com/seclore/fs/protect/example/main/SecloreMain.class b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/bin/com/seclore/fs/protect/example/main/SecloreMain.class new file mode 100644 index 0000000..b4b3a00 Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/bin/com/seclore/fs/protect/example/main/SecloreMain.class differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/config/cabinet config.xml b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/config/cabinet config.xml new file mode 100644 index 0000000..1d6eba7 --- /dev/null +++ b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/config/cabinet config.xml @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + false + + + + + + false + + + en + + + + + 50 + + 900 + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/config/config.xml b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/config/config.xml new file mode 100644 index 0000000..11362a7 --- /dev/null +++ b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/config/config.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + true + + false + + + + + \ No newline at end of file diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/config/log4j.properties b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/config/log4j.properties new file mode 100755 index 0000000..8293be6 --- /dev/null +++ b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/config/log4j.properties @@ -0,0 +1,15 @@ + +log4j.category.WSCLIENT=debug, WSCLIENT + +# If we want to change the Appender, we have to change +# UtilFunction.initializeLoggers() too, because it assumes that the appender +# is 'org.apache.log4j.RollingFileAppender' and changes path of the file by +# getting appender from this logger. +log4j.appender.WSCLIENT=com.seclore.fs.ws.client.logger.DailyZippedRollingFileAppender +# Path of the file should be relative to application ROOT +log4j.appender.WSCLIENT.File=logs/WSClient.log +log4j.appender.WSCLIENT.MaxFileSize=10MB +#log4j.appender.REQUEST_LOGGER.MaxBackupIndex=10 +log4j.appender.WSCLIENT.DatePattern='_'yyyy-MM-dd +log4j.appender.WSCLIENT.layout=org.apache.log4j.PatternLayout +log4j.appender.WSCLIENT.layout.ConversionPattern=%d{MMM dd, yyyy HH:mm:ss.SSS} %F:%L%n%p: %m%n diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/config/log4j2.xml b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/config/log4j2.xml new file mode 100644 index 0000000..0756304 --- /dev/null +++ b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/config/log4j2.xml @@ -0,0 +1,43 @@ + + + + + + ${ctx:applicationPath}/logs + + + + + + + + + + + + + UTF-8 + %d{MMM dd, yyyy HH:mm:ss.SSS}: %t: %p: %m%n + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/bc-fips-1.0.2.4.jar b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/bc-fips-1.0.2.4.jar new file mode 100644 index 0000000..a38f9d0 Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/bc-fips-1.0.2.4.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/commons-codec-1.6.jar b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/commons-codec-1.6.jar new file mode 100644 index 0000000..ee1bc49 Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/commons-codec-1.6.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/disruptor-3.3.7.jar b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/disruptor-3.3.7.jar new file mode 100644 index 0000000..1777a37 Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/disruptor-3.3.7.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/fs-smaillibrary-1.2.7.0.jar b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/fs-smaillibrary-1.2.7.0.jar new file mode 100644 index 0000000..c01ec4a Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/fs-smaillibrary-1.2.7.0.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/fs-ws-client-4.4.18.0.jar b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/fs-ws-client-4.4.18.0.jar new file mode 100644 index 0000000..d0a949c Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/fs-ws-client-4.4.18.0.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/juniversalchardet-1.0.3.jar b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/juniversalchardet-1.0.3.jar new file mode 100755 index 0000000..1af703f Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/juniversalchardet-1.0.3.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/log4j-api-2.17.1.jar b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/log4j-api-2.17.1.jar new file mode 100644 index 0000000..1aae243 Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/log4j-api-2.17.1.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/log4j-core-2.17.1.jar b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/log4j-core-2.17.1.jar new file mode 100644 index 0000000..4682527 Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/log4j-core-2.17.1.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/seclore-io-1.0.0.0.jar b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/seclore-io-1.0.0.0.jar new file mode 100644 index 0000000..365237b Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/seclore-io-1.0.0.0.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/xercesImpl-2.12.2.jar b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/xercesImpl-2.12.2.jar new file mode 100644 index 0000000..ccbae9f Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/xercesImpl-2.12.2.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/src/com/seclore/fs/protect/example/Version.java b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/src/com/seclore/fs/protect/example/Version.java new file mode 100755 index 0000000..df17df2 --- /dev/null +++ b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/src/com/seclore/fs/protect/example/Version.java @@ -0,0 +1,23 @@ +package com.seclore.fs.protect.example; + +/** + * Represents the Sample App version. + */ +public class Version +{ + /** + * The version of the Sample App. + */ + public static final String Version = "3.0.0.0"; + + /** + * Displays the version of the Sample App + * + * @param args + */ + public static void main(String[] args) + { + System.out.println("Sample App version : " + Version); + System.out.println("Copyright (c) 2008 Seclore Technology Pvt. Ltd."); + } +} \ No newline at end of file diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/src/com/seclore/fs/protect/example/core/InitializeWSClient.java b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/src/com/seclore/fs/protect/example/core/InitializeWSClient.java new file mode 100755 index 0000000..ffd901f --- /dev/null +++ b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/src/com/seclore/fs/protect/example/core/InitializeWSClient.java @@ -0,0 +1,193 @@ +package com.seclore.fs.protect.example.core; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.StringWriter; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; + +import org.mozilla.universalchardet.UniversalDetector; +import org.w3c.dom.Document; +import org.xml.sax.InputSource; + +import com.seclore.fs.helper.exception.FSHelperException; +import com.seclore.fs.helper.library.FSHelperLibrary; + +public class InitializeWSClient { + /** + * @param configPath + * Takes the application config file path as input + * @throws Exception + */ + public static void initializeHelperLibrary(String configPath) throws Exception { + try { + String configContentXMLString = getConfigFileContent(configPath); + // Initialize method takes WSClient config content not the config file path. + FSHelperLibrary.initialize(configContentXMLString); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * @param helperId + * Tenant Id + * @param helperResourcePath + * Resource Path for files of Seclore Policy Server. + * To be left empty here. + * @param helperConfigPath + * File path for 'tenant config.xml' file + * @throws Exception + * Code snippet won't run if any exception is thrown in this + * block + */ + public static void initializeHelper(String helperId, String helperResourcePath, String helperConfigPath) + throws Exception { + try { + String configContentXMLString = getConfigFileContent(helperConfigPath); + // Initialize method takes WSClient config content not the config file path. + FSHelperLibrary.initializeHelper(helperId, helperResourcePath, configContentXMLString); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * This method reads an XML file and returns the content of the XML file in + * string format + * + * @param appPath + * XML file path + * @return File content in string format + * @throws Exception + */ + private static String getConfigFileContent(String appPath) throws Exception { + validateConfigFile(appPath); + + InputStream inputStream = null; + try { + String lstrEncoding = detectEncoding(appPath); + if (lstrEncoding == null || lstrEncoding.trim().isEmpty()) { + lstrEncoding = "UTF-8"; + } + + DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); + builderFactory.setNamespaceAware(false); + builderFactory.setValidating(false); + DocumentBuilder builder = builderFactory.newDocumentBuilder(); + inputStream = new FileInputStream(appPath); + InputSource lInputSource = new InputSource(inputStream); + lInputSource.setEncoding(lstrEncoding); + Document document = builder.parse(lInputSource); + + TransformerFactory lTransFactory = TransformerFactory.newInstance(); + Transformer lTrans = lTransFactory.newTransformer(); + DOMSource lSource = new DOMSource(document); + StringWriter lStringWriter = new StringWriter(); + lTrans.transform(lSource, new StreamResult(lStringWriter)); + return lStringWriter.toString(); + } catch (Exception e) { + System.out.println("*** Config file should be in UTF-8 encoding ***"); + e.printStackTrace(); + System.exit(0); + } finally { + if (inputStream != null) { + try { + inputStream.close(); + } catch (IOException ioException) { + // ignore + } + } + } + return ""; + } + + /** + * Validates whether the file exists at the given location & has valid BOM + * format + * + * @param configFilePath + * @throws Exception + * @return The file object representing the configFilePath + */ + private static File validateConfigFile(String configFilePath) throws Exception { + + if (configFilePath == null || configFilePath.trim().isEmpty()) { + throw new Exception("Configuration File path is not provided."); + } + + File file = new File(configFilePath); + if (!file.exists()) { + throw new Exception("Configuration File does not exist at '" + file.getAbsolutePath() + "'"); + } + + if (!file.isFile()) { + throw new Exception("'" + file.getAbsolutePath() + "' is not a file."); + } + + // Length 3 is checked to make sure that enough bytes are available for + // BOM reading. + if (file.length() < 3) { + throw new Exception("'" + file.getAbsolutePath() + "' is not a valid configuration file."); + } + return file; + } + + /** + * Detect encoding format of file + * + * @param pConfigXmlPath + * File path whose encoding type is to be detected + * @return encoding format (eg: utf-8, utf-16) + */ + private static String detectEncoding(String configXmlPath) { + FileInputStream fis = null; + try { + fis = new FileInputStream(configXmlPath); + UniversalDetector detector = new UniversalDetector(null); + byte[] buffer = new byte[512]; + int read; + while ((read = fis.read(buffer)) > 0 && !detector.isDone()) { + detector.handleData(buffer, 0, read); + } + detector.dataEnd(); + String encoding = detector.getDetectedCharset(); + detector.reset(); + return encoding; + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (fis != null) { + try { + fis.close(); + } catch (IOException e) { + // Igniore + } + } + } + return null; + } + + /** + * Terminate the created session and reset the initialized Server SDK library. + */ + public static void terminateWSClient() { + try { + FSHelperLibrary.logInfo("Terminating FSHelper Library"); + if (FSHelperLibrary.isTerminated() == false) { + System.out.println("FSHelperLibrary.isTerminated(): " + FSHelperLibrary.isTerminated()); + FSHelperLibrary.terminate(); + } + } catch (FSHelperException e) { + FSHelperLibrary.logError(e.getMessage(), e); + } + } + +} diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/src/com/seclore/fs/protect/example/main/SecloreMain.java b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/src/com/seclore/fs/protect/example/main/SecloreMain.java new file mode 100755 index 0000000..537586f --- /dev/null +++ b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/src/com/seclore/fs/protect/example/main/SecloreMain.java @@ -0,0 +1,152 @@ +package com.seclore.fs.protect.example.main; + +import java.util.Scanner; + +import com.seclore.fs.helper.core.ProtectedFile; +import com.seclore.fs.helper.enums.ProtectionType; +import com.seclore.fs.helper.exception.FSHelperException; +import com.seclore.fs.helper.library.FSHelper; +import com.seclore.fs.helper.library.FSHelperLibrary; +import com.seclore.fs.protect.example.core.InitializeWSClient; + +public class SecloreMain { + // # FS Helper library is multi-tenant. Use unique tenant identifier for each + // tenant + private static String tenantID = "Tenant-1"; + + // # This file contains information about the Application into which this code + // snippet is to be integrated. + private static final String appConfigXMLFilePath = "config/config.xml"; + + // # This file contains info for creating session with Seclore Policy Server and + // initializing Server SDK library + private static final String tenantConfigXMLFilePath = "config/cabinet config.xml"; + + // # Used to take user input + private static Scanner scanner = null; + + /** + *

+ * This block initializes the Server SDK library and creates a session with + * Seclore Policy Server + *

+ * + * @exception Code snippet won't run if any exception is thrown in this block. + */ + static { + try { + InitializeWSClient.initializeHelperLibrary(appConfigXMLFilePath); + InitializeWSClient.initializeHelper(tenantID, "", tenantConfigXMLFilePath); + scanner = new Scanner(System.in); + } catch (Exception e) { + e.printStackTrace(); + System.exit(0); + } + } + + // # Entry point to run this application + public static void main(String[] args) { + try { + String outputFilePath = protectAndWrapFile(); + + if (outputFilePath != null && !outputFilePath.trim().isEmpty()) { + + System.out.println("File '" + outputFilePath + "' is protected and wrapped successfully"); + } else { + throw new Exception("Unexpected error"); + } + + } catch (Exception exp) { + exp.printStackTrace(); + } finally { + if (scanner != null) { + scanner.close(); + } + + InitializeWSClient.terminateWSClient(); + } + } + + /** + * Protect and wrap a file using Seclore SDK + * + * @return the absolute file path of protected file + * @throws Exception + */ + public static String protectAndWrapFile() throws Exception { + System.out.println("Enter absolute path of the file to be protected and wrapped:"); + String filePath = scanner.nextLine(); + + // # get the FSHelper object by specifying the tenantId. + // note: This tenant id should be same which was used during initialization of + // Seclore SDK + FSHelper tenantObj = FSHelperLibrary.getHelper(tenantID); + + // # does basic validation checks to see if the file is supported by SDK and is + // not already protected + validateIfFileSupportsProtection(tenantObj, filePath); + + // # used to change display name of file in activity log + String displayFileName = filePath; + // # get XML structure to protect with hot folder + String protectionDetails = getProtectDetailsXML(); + // # show details about protector + String protectorDetails = ""; + // # activity comments to be shown + String actvityComments = "Protected by using FS Helper Library's protectAndWrap method"; + + ProtectedFile protectedWrappedFile = tenantObj.protectAndWrap(null, + filePath, + displayFileName, + ProtectionType.PROTECT_WITH_HF, + protectionDetails, + protectorDetails, + actvityComments); + System.out.println("Protected File Id: " + protectedWrappedFile.getFileId()); + + return protectedWrappedFile.getFilePath(); + } + + /** + * Validates if the file supports Seclore protection + * + * @param tenantObj - FSHelper object created for the tenant. + * @param filePath - Absolute path of the file to be protected. + * @throws Exception + */ + private static void validateIfFileSupportsProtection(FSHelper tenantObj, String filePath) + throws FSHelperException, Exception { + // check if file is already Seclore protected + if (tenantObj.isProtectedFile(filePath) || tenantObj.isHTMLWrapped(filePath)) { + throw new Exception("File '" + filePath + "' is already protected"); + } + + // check if file extension is supported by Seclore FS Helper Library + if (tenantObj.isSupportedFile(filePath) == false && tenantObj.isBasicProtectionSupported(filePath) == false) { + String fileExt = filePath.substring(filePath.lastIndexOf(".") + 1); + // note: if file is not of standard format and does not support basic protection + // then throw error + throw new Exception("File with extention '" + fileExt + "' is not supported by Seclore FS Helper Library"); + } + + // check if file extension is supported for HTML wrapping by Seclore FS Helper + // Library + if (tenantObj.isHTMLWrapSupported(filePath) == false) { + // note: file is of standard format but not supported for HTML wrapping + throw new Exception("File '" + filePath + "' does not support HTML wrapping"); + } + } + + /** + * Forms the protection XML request string to be sent to PS. + * + * @return protection request XML structure + */ + public static String getProtectDetailsXML() throws Exception { + System.out.println("Enter Hot Folder id:"); + String HFid = scanner.nextLine(); + String protectionDetailsXML = "" + HFid + ""; + return protectionDetailsXML; + } + +} diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Start Here - Protect and Wrap with HF - Enterprise Policy Server.pptx b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Start Here - Protect and Wrap with HF - Enterprise Policy Server.pptx new file mode 100755 index 0000000..fae909c Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/Start Here - Protect and Wrap with HF - Enterprise Policy Server.pptx differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/scripts/build.sh b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/scripts/build.sh new file mode 100755 index 0000000..7b6d78f --- /dev/null +++ b/examples/Protect & Wrap with Hot Folder/Using Enterprise Policy Server/scripts/build.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +set -e + +# Set the project root directory +PROJECT_ROOT=$(dirname "$0")/.. + +# Function to exit script +_exitScriptIfError() { + if [ $1 -ne 0 ]; then + echo $2 + # Handle the error here, e.g., exit the script or perform some recovery actions + exit 1 + fi +} + +# Clean all bin folders +rm -rf "$PROJECT_ROOT/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/config"/* +rm -rf "$PROJECT_ROOT/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib"/* + +# Clear the src/bin dir containing compiled class files +rm -rf "$PROJECT_ROOT/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/bin"/* + +echo "Successfully cleared the existing bin dir." + +#find and compile all java files +find "$PROJECT_ROOT/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/src" -name "*.java" -exec javac -d "$PROJECT_ROOT/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/bin" -cp "$PROJECT_ROOT/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/*" {} + +_exitScriptIfError $? "ERROR: Java files compilation failed." +echo "Successfully compiled the java files." + +# Package the compiled classes into a JAR file +jar cvf "$PROJECT_ROOT/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/sample-app.jar" -C "$PROJECT_ROOT/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/bin" . +_exitScriptIfError $? "ERROR: error making jar file." +echo "Successfully built the jar file ." + +# Copy all libs and config files to bin +cp -rf "$PROJECT_ROOT/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib"/* "$PROJECT_ROOT/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib" +_exitScriptIfError $? "Error while copying libs from '$PROJECT_ROOT/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib' to '$PROJECT_ROOT/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib'" +echo "Successfully copied libs from '$PROJECT_ROOT/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib' to '$PROJECT_ROOT/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib'." + +cp -rf "$PROJECT_ROOT/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/config"/* "$PROJECT_ROOT/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/config" +_exitScriptIfError $? "Error while copying config from '$PROJECT_ROOT/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/config' to '$PROJECT_ROOT/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/config'." +echo "Successfully compiled the java files." \ No newline at end of file diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Protect and Wrap Sample Code Walkthrough.mp4 b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Protect and Wrap Sample Code Walkthrough.mp4 new file mode 100755 index 0000000..6384ea3 Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Protect and Wrap Sample Code Walkthrough.mp4 differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code Configuration Details.xlsx b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code Configuration Details.xlsx new file mode 100755 index 0000000..97632a6 Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code Configuration Details.xlsx differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/Readme.txt b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/Readme.txt new file mode 100755 index 0000000..c798d20 --- /dev/null +++ b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/Readme.txt @@ -0,0 +1,24 @@ + +Protect With Hot Folder and Wrap Sample App +============================================ + +Deployment Steps: +------------------ + +1. make sure your policy server is running . This app requires java 8 or above to run so make + sure java 8 or above is installed. + +2. go inside 'bin/Protect With Hot Folder and Wrap Sample App' + +3. Configure the 'tenant config.xml' in 'config/' + a. Policy Server Details: + server : Server name on which Policy Server is running + port : Server Port on which Policy Server is running + app-name : Policy Server application name + + b. fill hot folder details i.e id and passphrase + +4. If you are using java 8 , put libs present inside 'doc/JCE Files/java8' into + 'bin/Protect With Hot Folder and Wrap Sample App/lib' + +5. click on run.bat to start sample app , follow instruction on terminal \ No newline at end of file diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/config/cabinet config.xml b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/config/cabinet config.xml new file mode 100644 index 0000000..1d6eba7 --- /dev/null +++ b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/config/cabinet config.xml @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + false + + + + + + false + + + en + + + + + 50 + + 900 + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/config/config.xml b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/config/config.xml new file mode 100644 index 0000000..11362a7 --- /dev/null +++ b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/config/config.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + true + + false + + + + + \ No newline at end of file diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/config/log4j.properties b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/config/log4j.properties new file mode 100755 index 0000000..8293be6 --- /dev/null +++ b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/config/log4j.properties @@ -0,0 +1,15 @@ + +log4j.category.WSCLIENT=debug, WSCLIENT + +# If we want to change the Appender, we have to change +# UtilFunction.initializeLoggers() too, because it assumes that the appender +# is 'org.apache.log4j.RollingFileAppender' and changes path of the file by +# getting appender from this logger. +log4j.appender.WSCLIENT=com.seclore.fs.ws.client.logger.DailyZippedRollingFileAppender +# Path of the file should be relative to application ROOT +log4j.appender.WSCLIENT.File=logs/WSClient.log +log4j.appender.WSCLIENT.MaxFileSize=10MB +#log4j.appender.REQUEST_LOGGER.MaxBackupIndex=10 +log4j.appender.WSCLIENT.DatePattern='_'yyyy-MM-dd +log4j.appender.WSCLIENT.layout=org.apache.log4j.PatternLayout +log4j.appender.WSCLIENT.layout.ConversionPattern=%d{MMM dd, yyyy HH:mm:ss.SSS} %F:%L%n%p: %m%n diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/config/log4j2.xml b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/config/log4j2.xml new file mode 100644 index 0000000..0756304 --- /dev/null +++ b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/config/log4j2.xml @@ -0,0 +1,43 @@ + + + + + + ${ctx:applicationPath}/logs + + + + + + + + + + + + + UTF-8 + %d{MMM dd, yyyy HH:mm:ss.SSS}: %t: %p: %m%n + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/bc-fips-1.0.2.4.jar b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/bc-fips-1.0.2.4.jar new file mode 100644 index 0000000..a38f9d0 Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/bc-fips-1.0.2.4.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/commons-codec-1.6.jar b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/commons-codec-1.6.jar new file mode 100644 index 0000000..ee1bc49 Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/commons-codec-1.6.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/disruptor-3.3.7.jar b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/disruptor-3.3.7.jar new file mode 100644 index 0000000..1777a37 Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/disruptor-3.3.7.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/fs-smaillibrary-1.2.7.0.jar b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/fs-smaillibrary-1.2.7.0.jar new file mode 100644 index 0000000..c01ec4a Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/fs-smaillibrary-1.2.7.0.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/fs-ws-client-4.4.18.0.jar b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/fs-ws-client-4.4.18.0.jar new file mode 100644 index 0000000..d0a949c Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/fs-ws-client-4.4.18.0.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/juniversalchardet-1.0.3.jar b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/juniversalchardet-1.0.3.jar new file mode 100755 index 0000000..1af703f Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/juniversalchardet-1.0.3.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/log4j-api-2.17.1.jar b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/log4j-api-2.17.1.jar new file mode 100644 index 0000000..1aae243 Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/log4j-api-2.17.1.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/log4j-core-2.17.1.jar b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/log4j-core-2.17.1.jar new file mode 100644 index 0000000..4682527 Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/log4j-core-2.17.1.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/sample-app.jar b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/sample-app.jar new file mode 100644 index 0000000..a2e23d0 Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/sample-app.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/seclore-io-1.0.0.0.jar b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/seclore-io-1.0.0.0.jar new file mode 100644 index 0000000..365237b Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/seclore-io-1.0.0.0.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/xercesImpl-2.12.2.jar b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/xercesImpl-2.12.2.jar new file mode 100644 index 0000000..ccbae9f Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/xercesImpl-2.12.2.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/run.bat b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/run.bat new file mode 100755 index 0000000..45ecf70 --- /dev/null +++ b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/run.bat @@ -0,0 +1,18 @@ +@echo off +set "CURRENT_DIR=%cd%" +echo --------------------------------------------------------- +echo Seclore 'Protect with Hot Folder Wrap Sample App' Utility +echo --------------------------------------------------------- +echo. + +rem if your want to run on a different jdk or java path is not configured uncomment below line +rem for example , +rem set path="C:\Program Files\Java\jdk-11.0.1\bin"; +java -version +echo. + +REM uncomment below line to see the version of sample app i.e( remove REM mentioned below) +REM java -cp "./lib/sample-app.jar"; com.seclore.fs.protect.example.Version + + java -cp "./lib/*"; com.seclore.fs.protect.example.main.SecloreMain +pause \ No newline at end of file diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/doc/Developer_s Reference.txt b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/doc/Developer_s Reference.txt new file mode 100755 index 0000000..d49ade4 --- /dev/null +++ b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/doc/Developer_s Reference.txt @@ -0,0 +1,37 @@ +FileSecure Interfaces integration source code reference. + +FS Helper Initialization +------------------------ + - At application startup initializing FSHelperlibrary and FSHelper + - Below classes are used for the same + - SecloreMain + - static block :- + InitializeWSClient.initializeHelperLibrary((FSHELPERLIBRARY_CONFIG_XML_PATH, );); + InitializeWSClient.initializeHelper(HELPER_INSTANCE_KEY, FSHELPER_RESOURCE_PATH, FSHELPER_CONFIG_XML_PATH, ); + - InitializeWSClient + - initializeHelperLibrary( ... ) + - initializeHelper( ... ) + + + +Main Class +------------ + - com.seclore.fs.protect.example.main + - SecloreMain class + +Note: +===== +while preparing xml string for request or response. please escape below spacial character for the string which will be written within xml tag. + "&" -> "&" + "<" -> "<" + ">", -> ">" + "\"" -> """ + "'" -> "'"; + + Refer: com.seclore.fs.protect.example.util.XMLUtil class and + - escapeForXML () method + +Example: sample xml is "Sample Sales & purchase report.pdf" + here "Sample Sales and purchase report" should be escaped. + Use: String fileName = XMLHelper.escapeForXML( "Sample Sales & purchase report" ); + ""+fileName+"" diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/doc/JCE Files/Java7/US_export_policy.jar b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/doc/JCE Files/Java7/US_export_policy.jar new file mode 100755 index 0000000..7173213 Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/doc/JCE Files/Java7/US_export_policy.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/doc/JCE Files/Java7/local_policy.jar b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/doc/JCE Files/Java7/local_policy.jar new file mode 100755 index 0000000..c34d036 Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/doc/JCE Files/Java7/local_policy.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/doc/JCE Files/Java8/US_export_policy.jar b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/doc/JCE Files/Java8/US_export_policy.jar new file mode 100755 index 0000000..251b102 Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/doc/JCE Files/Java8/US_export_policy.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/doc/JCE Files/Java8/local_policy.jar b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/doc/JCE Files/Java8/local_policy.jar new file mode 100755 index 0000000..1c58939 Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/doc/JCE Files/Java8/local_policy.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/.classpath b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/.classpath new file mode 100755 index 0000000..4e3bf4d --- /dev/null +++ b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/.classpath @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/.project b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/.project new file mode 100755 index 0000000..5160502 --- /dev/null +++ b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/.project @@ -0,0 +1,17 @@ + + + Protect With Hot Folder and Wrap Sample App Code + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/.settings/org.eclipse.jdt.core.prefs b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/.settings/org.eclipse.jdt.core.prefs new file mode 100755 index 0000000..3a21537 --- /dev/null +++ b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/bin/com/seclore/fs/protect/example/Version.class b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/bin/com/seclore/fs/protect/example/Version.class new file mode 100644 index 0000000..a202905 Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/bin/com/seclore/fs/protect/example/Version.class differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/bin/com/seclore/fs/protect/example/core/InitializeWSClient.class b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/bin/com/seclore/fs/protect/example/core/InitializeWSClient.class new file mode 100644 index 0000000..48cd199 Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/bin/com/seclore/fs/protect/example/core/InitializeWSClient.class differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/bin/com/seclore/fs/protect/example/main/SecloreMain.class b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/bin/com/seclore/fs/protect/example/main/SecloreMain.class new file mode 100644 index 0000000..b4b3a00 Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/bin/com/seclore/fs/protect/example/main/SecloreMain.class differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/config/cabinet config.xml b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/config/cabinet config.xml new file mode 100644 index 0000000..1d6eba7 --- /dev/null +++ b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/config/cabinet config.xml @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + false + + + + + + false + + + en + + + + + 50 + + 900 + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/config/config.xml b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/config/config.xml new file mode 100644 index 0000000..11362a7 --- /dev/null +++ b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/config/config.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + true + + false + + + + + \ No newline at end of file diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/config/log4j.properties b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/config/log4j.properties new file mode 100755 index 0000000..8293be6 --- /dev/null +++ b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/config/log4j.properties @@ -0,0 +1,15 @@ + +log4j.category.WSCLIENT=debug, WSCLIENT + +# If we want to change the Appender, we have to change +# UtilFunction.initializeLoggers() too, because it assumes that the appender +# is 'org.apache.log4j.RollingFileAppender' and changes path of the file by +# getting appender from this logger. +log4j.appender.WSCLIENT=com.seclore.fs.ws.client.logger.DailyZippedRollingFileAppender +# Path of the file should be relative to application ROOT +log4j.appender.WSCLIENT.File=logs/WSClient.log +log4j.appender.WSCLIENT.MaxFileSize=10MB +#log4j.appender.REQUEST_LOGGER.MaxBackupIndex=10 +log4j.appender.WSCLIENT.DatePattern='_'yyyy-MM-dd +log4j.appender.WSCLIENT.layout=org.apache.log4j.PatternLayout +log4j.appender.WSCLIENT.layout.ConversionPattern=%d{MMM dd, yyyy HH:mm:ss.SSS} %F:%L%n%p: %m%n diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/config/log4j2.xml b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/config/log4j2.xml new file mode 100644 index 0000000..0756304 --- /dev/null +++ b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/config/log4j2.xml @@ -0,0 +1,43 @@ + + + + + + ${ctx:applicationPath}/logs + + + + + + + + + + + + + UTF-8 + %d{MMM dd, yyyy HH:mm:ss.SSS}: %t: %p: %m%n + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/bc-fips-1.0.2.4.jar b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/bc-fips-1.0.2.4.jar new file mode 100644 index 0000000..a38f9d0 Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/bc-fips-1.0.2.4.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/commons-codec-1.6.jar b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/commons-codec-1.6.jar new file mode 100644 index 0000000..ee1bc49 Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/commons-codec-1.6.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/disruptor-3.3.7.jar b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/disruptor-3.3.7.jar new file mode 100644 index 0000000..1777a37 Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/disruptor-3.3.7.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/fs-smaillibrary-1.2.7.0.jar b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/fs-smaillibrary-1.2.7.0.jar new file mode 100644 index 0000000..c01ec4a Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/fs-smaillibrary-1.2.7.0.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/fs-ws-client-4.4.18.0.jar b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/fs-ws-client-4.4.18.0.jar new file mode 100644 index 0000000..d0a949c Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/fs-ws-client-4.4.18.0.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/juniversalchardet-1.0.3.jar b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/juniversalchardet-1.0.3.jar new file mode 100755 index 0000000..1af703f Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/juniversalchardet-1.0.3.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/log4j-api-2.17.1.jar b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/log4j-api-2.17.1.jar new file mode 100644 index 0000000..1aae243 Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/log4j-api-2.17.1.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/log4j-core-2.17.1.jar b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/log4j-core-2.17.1.jar new file mode 100644 index 0000000..4682527 Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/log4j-core-2.17.1.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/seclore-io-1.0.0.0.jar b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/seclore-io-1.0.0.0.jar new file mode 100644 index 0000000..365237b Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/seclore-io-1.0.0.0.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/xercesImpl-2.12.2.jar b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/xercesImpl-2.12.2.jar new file mode 100644 index 0000000..ccbae9f Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/xercesImpl-2.12.2.jar differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/src/com/seclore/fs/protect/example/Version.java b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/src/com/seclore/fs/protect/example/Version.java new file mode 100755 index 0000000..df17df2 --- /dev/null +++ b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/src/com/seclore/fs/protect/example/Version.java @@ -0,0 +1,23 @@ +package com.seclore.fs.protect.example; + +/** + * Represents the Sample App version. + */ +public class Version +{ + /** + * The version of the Sample App. + */ + public static final String Version = "3.0.0.0"; + + /** + * Displays the version of the Sample App + * + * @param args + */ + public static void main(String[] args) + { + System.out.println("Sample App version : " + Version); + System.out.println("Copyright (c) 2008 Seclore Technology Pvt. Ltd."); + } +} \ No newline at end of file diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/src/com/seclore/fs/protect/example/core/InitializeWSClient.java b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/src/com/seclore/fs/protect/example/core/InitializeWSClient.java new file mode 100755 index 0000000..ffd901f --- /dev/null +++ b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/src/com/seclore/fs/protect/example/core/InitializeWSClient.java @@ -0,0 +1,193 @@ +package com.seclore.fs.protect.example.core; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.StringWriter; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; + +import org.mozilla.universalchardet.UniversalDetector; +import org.w3c.dom.Document; +import org.xml.sax.InputSource; + +import com.seclore.fs.helper.exception.FSHelperException; +import com.seclore.fs.helper.library.FSHelperLibrary; + +public class InitializeWSClient { + /** + * @param configPath + * Takes the application config file path as input + * @throws Exception + */ + public static void initializeHelperLibrary(String configPath) throws Exception { + try { + String configContentXMLString = getConfigFileContent(configPath); + // Initialize method takes WSClient config content not the config file path. + FSHelperLibrary.initialize(configContentXMLString); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * @param helperId + * Tenant Id + * @param helperResourcePath + * Resource Path for files of Seclore Policy Server. + * To be left empty here. + * @param helperConfigPath + * File path for 'tenant config.xml' file + * @throws Exception + * Code snippet won't run if any exception is thrown in this + * block + */ + public static void initializeHelper(String helperId, String helperResourcePath, String helperConfigPath) + throws Exception { + try { + String configContentXMLString = getConfigFileContent(helperConfigPath); + // Initialize method takes WSClient config content not the config file path. + FSHelperLibrary.initializeHelper(helperId, helperResourcePath, configContentXMLString); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * This method reads an XML file and returns the content of the XML file in + * string format + * + * @param appPath + * XML file path + * @return File content in string format + * @throws Exception + */ + private static String getConfigFileContent(String appPath) throws Exception { + validateConfigFile(appPath); + + InputStream inputStream = null; + try { + String lstrEncoding = detectEncoding(appPath); + if (lstrEncoding == null || lstrEncoding.trim().isEmpty()) { + lstrEncoding = "UTF-8"; + } + + DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); + builderFactory.setNamespaceAware(false); + builderFactory.setValidating(false); + DocumentBuilder builder = builderFactory.newDocumentBuilder(); + inputStream = new FileInputStream(appPath); + InputSource lInputSource = new InputSource(inputStream); + lInputSource.setEncoding(lstrEncoding); + Document document = builder.parse(lInputSource); + + TransformerFactory lTransFactory = TransformerFactory.newInstance(); + Transformer lTrans = lTransFactory.newTransformer(); + DOMSource lSource = new DOMSource(document); + StringWriter lStringWriter = new StringWriter(); + lTrans.transform(lSource, new StreamResult(lStringWriter)); + return lStringWriter.toString(); + } catch (Exception e) { + System.out.println("*** Config file should be in UTF-8 encoding ***"); + e.printStackTrace(); + System.exit(0); + } finally { + if (inputStream != null) { + try { + inputStream.close(); + } catch (IOException ioException) { + // ignore + } + } + } + return ""; + } + + /** + * Validates whether the file exists at the given location & has valid BOM + * format + * + * @param configFilePath + * @throws Exception + * @return The file object representing the configFilePath + */ + private static File validateConfigFile(String configFilePath) throws Exception { + + if (configFilePath == null || configFilePath.trim().isEmpty()) { + throw new Exception("Configuration File path is not provided."); + } + + File file = new File(configFilePath); + if (!file.exists()) { + throw new Exception("Configuration File does not exist at '" + file.getAbsolutePath() + "'"); + } + + if (!file.isFile()) { + throw new Exception("'" + file.getAbsolutePath() + "' is not a file."); + } + + // Length 3 is checked to make sure that enough bytes are available for + // BOM reading. + if (file.length() < 3) { + throw new Exception("'" + file.getAbsolutePath() + "' is not a valid configuration file."); + } + return file; + } + + /** + * Detect encoding format of file + * + * @param pConfigXmlPath + * File path whose encoding type is to be detected + * @return encoding format (eg: utf-8, utf-16) + */ + private static String detectEncoding(String configXmlPath) { + FileInputStream fis = null; + try { + fis = new FileInputStream(configXmlPath); + UniversalDetector detector = new UniversalDetector(null); + byte[] buffer = new byte[512]; + int read; + while ((read = fis.read(buffer)) > 0 && !detector.isDone()) { + detector.handleData(buffer, 0, read); + } + detector.dataEnd(); + String encoding = detector.getDetectedCharset(); + detector.reset(); + return encoding; + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (fis != null) { + try { + fis.close(); + } catch (IOException e) { + // Igniore + } + } + } + return null; + } + + /** + * Terminate the created session and reset the initialized Server SDK library. + */ + public static void terminateWSClient() { + try { + FSHelperLibrary.logInfo("Terminating FSHelper Library"); + if (FSHelperLibrary.isTerminated() == false) { + System.out.println("FSHelperLibrary.isTerminated(): " + FSHelperLibrary.isTerminated()); + FSHelperLibrary.terminate(); + } + } catch (FSHelperException e) { + FSHelperLibrary.logError(e.getMessage(), e); + } + } + +} diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/src/com/seclore/fs/protect/example/main/SecloreMain.java b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/src/com/seclore/fs/protect/example/main/SecloreMain.java new file mode 100755 index 0000000..537586f --- /dev/null +++ b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/src/com/seclore/fs/protect/example/main/SecloreMain.java @@ -0,0 +1,152 @@ +package com.seclore.fs.protect.example.main; + +import java.util.Scanner; + +import com.seclore.fs.helper.core.ProtectedFile; +import com.seclore.fs.helper.enums.ProtectionType; +import com.seclore.fs.helper.exception.FSHelperException; +import com.seclore.fs.helper.library.FSHelper; +import com.seclore.fs.helper.library.FSHelperLibrary; +import com.seclore.fs.protect.example.core.InitializeWSClient; + +public class SecloreMain { + // # FS Helper library is multi-tenant. Use unique tenant identifier for each + // tenant + private static String tenantID = "Tenant-1"; + + // # This file contains information about the Application into which this code + // snippet is to be integrated. + private static final String appConfigXMLFilePath = "config/config.xml"; + + // # This file contains info for creating session with Seclore Policy Server and + // initializing Server SDK library + private static final String tenantConfigXMLFilePath = "config/cabinet config.xml"; + + // # Used to take user input + private static Scanner scanner = null; + + /** + *

+ * This block initializes the Server SDK library and creates a session with + * Seclore Policy Server + *

+ * + * @exception Code snippet won't run if any exception is thrown in this block. + */ + static { + try { + InitializeWSClient.initializeHelperLibrary(appConfigXMLFilePath); + InitializeWSClient.initializeHelper(tenantID, "", tenantConfigXMLFilePath); + scanner = new Scanner(System.in); + } catch (Exception e) { + e.printStackTrace(); + System.exit(0); + } + } + + // # Entry point to run this application + public static void main(String[] args) { + try { + String outputFilePath = protectAndWrapFile(); + + if (outputFilePath != null && !outputFilePath.trim().isEmpty()) { + + System.out.println("File '" + outputFilePath + "' is protected and wrapped successfully"); + } else { + throw new Exception("Unexpected error"); + } + + } catch (Exception exp) { + exp.printStackTrace(); + } finally { + if (scanner != null) { + scanner.close(); + } + + InitializeWSClient.terminateWSClient(); + } + } + + /** + * Protect and wrap a file using Seclore SDK + * + * @return the absolute file path of protected file + * @throws Exception + */ + public static String protectAndWrapFile() throws Exception { + System.out.println("Enter absolute path of the file to be protected and wrapped:"); + String filePath = scanner.nextLine(); + + // # get the FSHelper object by specifying the tenantId. + // note: This tenant id should be same which was used during initialization of + // Seclore SDK + FSHelper tenantObj = FSHelperLibrary.getHelper(tenantID); + + // # does basic validation checks to see if the file is supported by SDK and is + // not already protected + validateIfFileSupportsProtection(tenantObj, filePath); + + // # used to change display name of file in activity log + String displayFileName = filePath; + // # get XML structure to protect with hot folder + String protectionDetails = getProtectDetailsXML(); + // # show details about protector + String protectorDetails = ""; + // # activity comments to be shown + String actvityComments = "Protected by using FS Helper Library's protectAndWrap method"; + + ProtectedFile protectedWrappedFile = tenantObj.protectAndWrap(null, + filePath, + displayFileName, + ProtectionType.PROTECT_WITH_HF, + protectionDetails, + protectorDetails, + actvityComments); + System.out.println("Protected File Id: " + protectedWrappedFile.getFileId()); + + return protectedWrappedFile.getFilePath(); + } + + /** + * Validates if the file supports Seclore protection + * + * @param tenantObj - FSHelper object created for the tenant. + * @param filePath - Absolute path of the file to be protected. + * @throws Exception + */ + private static void validateIfFileSupportsProtection(FSHelper tenantObj, String filePath) + throws FSHelperException, Exception { + // check if file is already Seclore protected + if (tenantObj.isProtectedFile(filePath) || tenantObj.isHTMLWrapped(filePath)) { + throw new Exception("File '" + filePath + "' is already protected"); + } + + // check if file extension is supported by Seclore FS Helper Library + if (tenantObj.isSupportedFile(filePath) == false && tenantObj.isBasicProtectionSupported(filePath) == false) { + String fileExt = filePath.substring(filePath.lastIndexOf(".") + 1); + // note: if file is not of standard format and does not support basic protection + // then throw error + throw new Exception("File with extention '" + fileExt + "' is not supported by Seclore FS Helper Library"); + } + + // check if file extension is supported for HTML wrapping by Seclore FS Helper + // Library + if (tenantObj.isHTMLWrapSupported(filePath) == false) { + // note: file is of standard format but not supported for HTML wrapping + throw new Exception("File '" + filePath + "' does not support HTML wrapping"); + } + } + + /** + * Forms the protection XML request string to be sent to PS. + * + * @return protection request XML structure + */ + public static String getProtectDetailsXML() throws Exception { + System.out.println("Enter Hot Folder id:"); + String HFid = scanner.nextLine(); + String protectionDetailsXML = "" + HFid + ""; + return protectionDetailsXML; + } + +} diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Start Here - Protect and Wrap with HF - Seclore Cloud Policy Server.pptx b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Start Here - Protect and Wrap with HF - Seclore Cloud Policy Server.pptx new file mode 100755 index 0000000..dc91b64 Binary files /dev/null and b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/Start Here - Protect and Wrap with HF - Seclore Cloud Policy Server.pptx differ diff --git a/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/scripts/build.sh b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/scripts/build.sh new file mode 100755 index 0000000..d204215 --- /dev/null +++ b/examples/Protect & Wrap with Hot Folder/Using Seclore PoC Policy Server/scripts/build.sh @@ -0,0 +1,42 @@ +#!/bin/bash + +set -e + +# Set the project root directory +PROJECT_ROOT=$(dirname "$0")/.. + +# Function to exit script +_exitScriptIfError() { + if [ $1 -ne 0 ]; then + echo $2 + # Handle the error here, e.g., exit the script or perform some recovery actions + exit 1 + fi +} + +# Clean all bin folders +rm -rf "$PROJECT_ROOT/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/config"/* +rm -rf "$PROJECT_ROOT/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib"/* + +# Clear the src/bin dir containing compiled class files +rm -rf "$PROJECT_ROOT/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/bin"/* + +echo "Successfully cleared the existing bin dir." + +#find and compile all java files +find "$PROJECT_ROOT/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/src" -name "*.java" -exec javac -d "$PROJECT_ROOT/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/bin" -cp "$PROJECT_ROOT/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib/*" {} + +_exitScriptIfError $? "ERROR: Java files compilation failed." +echo "Successfully compiled the java files." + +# Package the compiled classes into a JAR file +jar cvf "$PROJECT_ROOT/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib/sample-app.jar" -C "$PROJECT_ROOT/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/bin" . +_exitScriptIfError $? "ERROR: error making jar file." +echo "Successfully built the jar file ." + +# Copy all libs and config files to bin +cp -r "$PROJECT_ROOT/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib"/* "$PROJECT_ROOT/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib" +echo "Successfully copied libs from '$PROJECT_ROOT/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/lib' to '$PROJECT_ROOT/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/lib'." + +cp -r "$PROJECT_ROOT/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/config"/* "$PROJECT_ROOT/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/config" +_exitScriptIfError $? "Error while copying config from '$PROJECT_ROOT/Sample Code/src/Protect With Hot Folder and Wrap Sample App Code/config' to '$PROJECT_ROOT/Sample Code/bin/Protect With Hot Folder and Wrap Sample App/config'." +echo "Successfully compiled the java files." \ No newline at end of file diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/FSRighstsCalculator.html b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/FSRighstsCalculator.html new file mode 100755 index 0000000..20c67d1 --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/FSRighstsCalculator.html @@ -0,0 +1,90 @@ + + + + + + + +
+

FileSecure Rights Calculator

+
+

(primary access rights)

+ +
+ Final: +
+ +
+

View

+

Lite Viewer

+

Edit

+

Copy Data

+

Print

+

Screen Capture

+

Macro

+

Full Control

+ +
+ + + + \ No newline at end of file diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code Walkthrough.mp4 b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code Walkthrough.mp4 new file mode 100755 index 0000000..f272a55 Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code Walkthrough.mp4 differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/Readme.txt b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/Readme.txt new file mode 100755 index 0000000..5e1f885 --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/Readme.txt @@ -0,0 +1,30 @@ + +Protect With Independent Rights & Wrap Sample App +================================================== + + +Deployment Steps: +------------------ +1. make sure your policy server is running . This app requires java 8 or above to run so make + sure java 8 or above is installed. + +2. go inside 'bin/Protect With Independent Rights & Wrap Sample App' + +3. Configure the 'tenant config.xml' in 'config/' + a. Policy Server Details: + server : Server name on which Policy Server is running + port : Server Port on which Policy Server is running + app-name : Policy Server application name + + b. fill hot folder details i.e id and passphrase + +3. Configure the config.properties in 'config/' + +4. If you are using java 8 , put libs present inside 'doc/JCE Files/java8' into + 'bin/Protect With Independent Rights & Wrap Sample App/lib' + +4. click on run.bat to start sample app , follow instruction on terminal + +5. The independent rights given to each user are numeric values.Use + the 'FSRighstsCalculator.html' present inside the 'doc' folder to + calculate right's value. \ No newline at end of file diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/config/cabinet config.xml b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/config/cabinet config.xml new file mode 100644 index 0000000..1d6eba7 --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/config/cabinet config.xml @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + false + + + + + + false + + + en + + + + + 50 + + 900 + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/config/config.properties b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/config/config.properties new file mode 100755 index 0000000..d824b9a --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/config/config.properties @@ -0,0 +1,6 @@ +#Other Rights to be applied on file, refer FSRighstsCalculator.html for primary.access.right. +offline=0 +redistribute=0 +lock.to.first.machine=0 +no.of.days.since.protection=-1 +no.of.days.since.first.access=-1 diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/config/config.xml b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/config/config.xml new file mode 100644 index 0000000..11362a7 --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/config/config.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + true + + false + + + + + \ No newline at end of file diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/config/log4j.properties b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/config/log4j.properties new file mode 100755 index 0000000..8293be6 --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/config/log4j.properties @@ -0,0 +1,15 @@ + +log4j.category.WSCLIENT=debug, WSCLIENT + +# If we want to change the Appender, we have to change +# UtilFunction.initializeLoggers() too, because it assumes that the appender +# is 'org.apache.log4j.RollingFileAppender' and changes path of the file by +# getting appender from this logger. +log4j.appender.WSCLIENT=com.seclore.fs.ws.client.logger.DailyZippedRollingFileAppender +# Path of the file should be relative to application ROOT +log4j.appender.WSCLIENT.File=logs/WSClient.log +log4j.appender.WSCLIENT.MaxFileSize=10MB +#log4j.appender.REQUEST_LOGGER.MaxBackupIndex=10 +log4j.appender.WSCLIENT.DatePattern='_'yyyy-MM-dd +log4j.appender.WSCLIENT.layout=org.apache.log4j.PatternLayout +log4j.appender.WSCLIENT.layout.ConversionPattern=%d{MMM dd, yyyy HH:mm:ss.SSS} %F:%L%n%p: %m%n diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/config/log4j2.xml b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/config/log4j2.xml new file mode 100644 index 0000000..0756304 --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/config/log4j2.xml @@ -0,0 +1,43 @@ + + + + + + ${ctx:applicationPath}/logs + + + + + + + + + + + + + UTF-8 + %d{MMM dd, yyyy HH:mm:ss.SSS}: %t: %p: %m%n + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/bc-fips-1.0.2.4.jar b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/bc-fips-1.0.2.4.jar new file mode 100644 index 0000000..a38f9d0 Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/bc-fips-1.0.2.4.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/commons-codec-1.6.jar b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/commons-codec-1.6.jar new file mode 100644 index 0000000..ee1bc49 Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/commons-codec-1.6.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/disruptor-3.3.7.jar b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/disruptor-3.3.7.jar new file mode 100644 index 0000000..1777a37 Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/disruptor-3.3.7.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/fs-smaillibrary-1.2.7.0.jar b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/fs-smaillibrary-1.2.7.0.jar new file mode 100644 index 0000000..c01ec4a Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/fs-smaillibrary-1.2.7.0.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/fs-ws-client-4.4.18.0.jar b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/fs-ws-client-4.4.18.0.jar new file mode 100644 index 0000000..d0a949c Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/fs-ws-client-4.4.18.0.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/juniversalchardet-1.0.3.jar b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/juniversalchardet-1.0.3.jar new file mode 100755 index 0000000..1af703f Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/juniversalchardet-1.0.3.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/log4j-api-2.17.1.jar b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/log4j-api-2.17.1.jar new file mode 100644 index 0000000..1aae243 Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/log4j-api-2.17.1.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/log4j-core-2.17.1.jar b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/log4j-core-2.17.1.jar new file mode 100644 index 0000000..4682527 Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/log4j-core-2.17.1.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/sample-app.jar b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/sample-app.jar new file mode 100644 index 0000000..f34eea0 Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/sample-app.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/seclore-io-1.0.0.0.jar b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/seclore-io-1.0.0.0.jar new file mode 100644 index 0000000..365237b Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/seclore-io-1.0.0.0.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/xercesImpl-2.12.2.jar b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/xercesImpl-2.12.2.jar new file mode 100644 index 0000000..ccbae9f Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/xercesImpl-2.12.2.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/run.bat b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/run.bat new file mode 100755 index 0000000..47f1076 --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/run.bat @@ -0,0 +1,17 @@ +@echo off +set "CURRENT_DIR=%cd%" +echo --------------------------------------------------------------------- +echo Seclore 'Protect with Independent Rights And Wrap Sample App' Utility +echo --------------------------------------------------------------------- +echo. + +rem if your want to run on a different jdk or java path is not configured uncomment below line +rem for example , +rem path="C:\Program Files\Java\jdk-11.0.1\bin"; +java -version +echo. + +REM uncomment below line to see the version of sample app i.e( remove REM mentioned below) +REM java -cp "./lib/sample-app.jar"; com.seclore.fs.protect.example.Version + java -cp "./lib/*"; com.seclore.fs.protect.example.main.SecloreMain +pause \ No newline at end of file diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/doc/Developer_s Reference.txt b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/doc/Developer_s Reference.txt new file mode 100755 index 0000000..d49ade4 --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/doc/Developer_s Reference.txt @@ -0,0 +1,37 @@ +FileSecure Interfaces integration source code reference. + +FS Helper Initialization +------------------------ + - At application startup initializing FSHelperlibrary and FSHelper + - Below classes are used for the same + - SecloreMain + - static block :- + InitializeWSClient.initializeHelperLibrary((FSHELPERLIBRARY_CONFIG_XML_PATH, );); + InitializeWSClient.initializeHelper(HELPER_INSTANCE_KEY, FSHELPER_RESOURCE_PATH, FSHELPER_CONFIG_XML_PATH, ); + - InitializeWSClient + - initializeHelperLibrary( ... ) + - initializeHelper( ... ) + + + +Main Class +------------ + - com.seclore.fs.protect.example.main + - SecloreMain class + +Note: +===== +while preparing xml string for request or response. please escape below spacial character for the string which will be written within xml tag. + "&" -> "&" + "<" -> "<" + ">", -> ">" + "\"" -> """ + "'" -> "'"; + + Refer: com.seclore.fs.protect.example.util.XMLUtil class and + - escapeForXML () method + +Example: sample xml is "Sample Sales & purchase report.pdf" + here "Sample Sales and purchase report" should be escaped. + Use: String fileName = XMLHelper.escapeForXML( "Sample Sales & purchase report" ); + ""+fileName+"" diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/doc/FSRighstsCalculator.html b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/doc/FSRighstsCalculator.html new file mode 100755 index 0000000..9d405cb --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/doc/FSRighstsCalculator.html @@ -0,0 +1,90 @@ + + + + + + + +
+

FileSecure Rights Calculator

+
+

(primary access rights)

+ +
+ Final: +
+ +
+

View

+

Lite Viewer

+

Edit

+

Copy Data

+

Print

+

Screen Capture

+

Macro

+

Full Control

+ +
+ + + + \ No newline at end of file diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/doc/JCE Files/Java7/US_export_policy.jar b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/doc/JCE Files/Java7/US_export_policy.jar new file mode 100755 index 0000000..7173213 Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/doc/JCE Files/Java7/US_export_policy.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/doc/JCE Files/Java7/local_policy.jar b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/doc/JCE Files/Java7/local_policy.jar new file mode 100755 index 0000000..c34d036 Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/doc/JCE Files/Java7/local_policy.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/doc/JCE Files/Java8/US_export_policy.jar b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/doc/JCE Files/Java8/US_export_policy.jar new file mode 100755 index 0000000..251b102 Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/doc/JCE Files/Java8/US_export_policy.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/doc/JCE Files/Java8/local_policy.jar b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/doc/JCE Files/Java8/local_policy.jar new file mode 100755 index 0000000..1c58939 Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/doc/JCE Files/Java8/local_policy.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/.classpath b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/.classpath new file mode 100755 index 0000000..4e3bf4d --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/.classpath @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/.project b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/.project new file mode 100755 index 0000000..496d8fb --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/.project @@ -0,0 +1,17 @@ + + + Protect With Independent Rights & Wrap Sample Code + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/.settings/org.eclipse.jdt.core.prefs b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/.settings/org.eclipse.jdt.core.prefs new file mode 100755 index 0000000..3a21537 --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/bin/com/seclore/fs/protect/example/core/Config.class b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/bin/com/seclore/fs/protect/example/core/Config.class new file mode 100644 index 0000000..1e6a821 Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/bin/com/seclore/fs/protect/example/core/Config.class differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/bin/com/seclore/fs/protect/example/core/FSEntity.class b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/bin/com/seclore/fs/protect/example/core/FSEntity.class new file mode 100644 index 0000000..0f004c3 Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/bin/com/seclore/fs/protect/example/core/FSEntity.class differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/bin/com/seclore/fs/protect/example/core/InitializeWSClient.class b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/bin/com/seclore/fs/protect/example/core/InitializeWSClient.class new file mode 100644 index 0000000..0326058 Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/bin/com/seclore/fs/protect/example/core/InitializeWSClient.class differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/bin/com/seclore/fs/protect/example/main/SecloreMain.class b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/bin/com/seclore/fs/protect/example/main/SecloreMain.class new file mode 100644 index 0000000..893b123 Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/bin/com/seclore/fs/protect/example/main/SecloreMain.class differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/bin/com/seclore/fs/protect/example/util/XMLUtil.class b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/bin/com/seclore/fs/protect/example/util/XMLUtil.class new file mode 100644 index 0000000..a9a541a Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/bin/com/seclore/fs/protect/example/util/XMLUtil.class differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/config/cabinet config.xml b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/config/cabinet config.xml new file mode 100644 index 0000000..1d6eba7 --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/config/cabinet config.xml @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + false + + + + + + false + + + en + + + + + 50 + + 900 + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/config/config.properties b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/config/config.properties new file mode 100755 index 0000000..d824b9a --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/config/config.properties @@ -0,0 +1,6 @@ +#Other Rights to be applied on file, refer FSRighstsCalculator.html for primary.access.right. +offline=0 +redistribute=0 +lock.to.first.machine=0 +no.of.days.since.protection=-1 +no.of.days.since.first.access=-1 diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/config/config.xml b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/config/config.xml new file mode 100644 index 0000000..11362a7 --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/config/config.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + true + + false + + + + + \ No newline at end of file diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/config/log4j.properties b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/config/log4j.properties new file mode 100755 index 0000000..8293be6 --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/config/log4j.properties @@ -0,0 +1,15 @@ + +log4j.category.WSCLIENT=debug, WSCLIENT + +# If we want to change the Appender, we have to change +# UtilFunction.initializeLoggers() too, because it assumes that the appender +# is 'org.apache.log4j.RollingFileAppender' and changes path of the file by +# getting appender from this logger. +log4j.appender.WSCLIENT=com.seclore.fs.ws.client.logger.DailyZippedRollingFileAppender +# Path of the file should be relative to application ROOT +log4j.appender.WSCLIENT.File=logs/WSClient.log +log4j.appender.WSCLIENT.MaxFileSize=10MB +#log4j.appender.REQUEST_LOGGER.MaxBackupIndex=10 +log4j.appender.WSCLIENT.DatePattern='_'yyyy-MM-dd +log4j.appender.WSCLIENT.layout=org.apache.log4j.PatternLayout +log4j.appender.WSCLIENT.layout.ConversionPattern=%d{MMM dd, yyyy HH:mm:ss.SSS} %F:%L%n%p: %m%n diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/config/log4j2.xml b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/config/log4j2.xml new file mode 100644 index 0000000..0756304 --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/config/log4j2.xml @@ -0,0 +1,43 @@ + + + + + + ${ctx:applicationPath}/logs + + + + + + + + + + + + + UTF-8 + %d{MMM dd, yyyy HH:mm:ss.SSS}: %t: %p: %m%n + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/bc-fips-1.0.2.4.jar b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/bc-fips-1.0.2.4.jar new file mode 100644 index 0000000..a38f9d0 Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/bc-fips-1.0.2.4.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/commons-codec-1.6.jar b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/commons-codec-1.6.jar new file mode 100644 index 0000000..ee1bc49 Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/commons-codec-1.6.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/disruptor-3.3.7.jar b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/disruptor-3.3.7.jar new file mode 100644 index 0000000..1777a37 Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/disruptor-3.3.7.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/fs-smaillibrary-1.2.7.0.jar b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/fs-smaillibrary-1.2.7.0.jar new file mode 100644 index 0000000..c01ec4a Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/fs-smaillibrary-1.2.7.0.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/fs-ws-client-4.4.18.0.jar b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/fs-ws-client-4.4.18.0.jar new file mode 100644 index 0000000..d0a949c Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/fs-ws-client-4.4.18.0.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/juniversalchardet-1.0.3.jar b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/juniversalchardet-1.0.3.jar new file mode 100755 index 0000000..1af703f Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/juniversalchardet-1.0.3.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/log4j-api-2.17.1.jar b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/log4j-api-2.17.1.jar new file mode 100644 index 0000000..1aae243 Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/log4j-api-2.17.1.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/log4j-core-2.17.1.jar b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/log4j-core-2.17.1.jar new file mode 100644 index 0000000..4682527 Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/log4j-core-2.17.1.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/seclore-io-1.0.0.0.jar b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/seclore-io-1.0.0.0.jar new file mode 100644 index 0000000..365237b Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/seclore-io-1.0.0.0.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/xercesImpl-2.12.2.jar b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/xercesImpl-2.12.2.jar new file mode 100644 index 0000000..ccbae9f Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/xercesImpl-2.12.2.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/src/Version.properties b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/src/Version.properties new file mode 100755 index 0000000..adf74cc --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/src/Version.properties @@ -0,0 +1 @@ +SAMPLE.APP.VERSION=2.0.0.0 diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/src/com/seclore/fs/protect/example/core/Config.java b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/src/com/seclore/fs/protect/example/core/Config.java new file mode 100755 index 0000000..5d2f60c --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/src/com/seclore/fs/protect/example/core/Config.java @@ -0,0 +1,55 @@ +package com.seclore.fs.protect.example.core; + +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.Properties; + +public class Config +{ + private static Properties props = null; + + /** + * read the config/config.properties file + * @param appPath + */ + public static void initConfig(String appPath) + { + String configPath = appPath ; + InputStream lInputStream = null; + try + { + Properties lProps = new Properties(); + lInputStream = new FileInputStream(configPath); + lProps.load(lInputStream); + props = lProps; + } + catch(Exception lEx) + { + lEx.printStackTrace(); + } + finally + { + if( lInputStream != null) + { + try + { + lInputStream.close(); + } + catch(IOException ioException) + { + // Ignore + } + } + } + } + + /** + * gets the value of property key defined in config/config.properties + * + */ + public static String getProperty(String key, String defaultValue) + { + return props.getProperty(key, defaultValue); + } +} diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/src/com/seclore/fs/protect/example/core/FSEntity.java b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/src/com/seclore/fs/protect/example/core/FSEntity.java new file mode 100755 index 0000000..334bc73 --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/src/com/seclore/fs/protect/example/core/FSEntity.java @@ -0,0 +1,58 @@ +package com.seclore.fs.protect.example.core; + +public class FSEntity +{ + private String id; + + /** + * repository code + */ + private int repCode; + /** + * + * entity type + * 1 for user + * 2 for group + */ + private int type; + + // Default constructor + public FSEntity() + { + + } + + public FSEntity(String id, int repCode, int type) + { + this.id = id; + this.repCode = repCode; + this.type = type; + } + + public String getId() + { + return id; + } + public void setId(String id) + { + this.id = id; + } + public int getRepCode() + { + return repCode; + } + public void setRepCode(int repCode) + { + this.repCode = repCode; + } + public int getType() + { + return type; + } + public void setType(int type) + { + this.type = type; + } + + +} diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/src/com/seclore/fs/protect/example/core/InitializeWSClient.java b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/src/com/seclore/fs/protect/example/core/InitializeWSClient.java new file mode 100755 index 0000000..0cfcab0 --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/src/com/seclore/fs/protect/example/core/InitializeWSClient.java @@ -0,0 +1,193 @@ +package com.seclore.fs.protect.example.core; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.StringWriter; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; + +import org.mozilla.universalchardet.UniversalDetector; +import org.w3c.dom.Document; +import org.xml.sax.InputSource; + +import com.seclore.fs.helper.exception.FSHelperException; +import com.seclore.fs.helper.library.FSHelperLibrary; + +public class InitializeWSClient { + /** + * @param configPath + * Takes the application config file path as input + * @throws Exception + */ + public static void initializeHelperLibrary(String configPath) throws Exception { + try { + String configContentXMLString = getConfigFileContent(configPath); + // Initialize method takes WSClient config content not the config file path. + FSHelperLibrary.initialize(configContentXMLString); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * @param helperId + * Tenant Id + * @param helperResourcePath + * Resource Path for files of Seclore Policy Server. + * To be left empty here. + * @param helperConfigPath + * File path for 'tenant config.xml' file + * @throws Exception + * Code snippet won't run if any exception is thrown in this + * block + */ + public static void initializeHelper(String helperId, String helperResourcePath, String helperConfigPath) + throws Exception { + try { + String configContentXMLString = getConfigFileContent(helperConfigPath); + // Initialize method takes WSClient config content not the config file path. + FSHelperLibrary.initializeHelper(helperId, helperResourcePath, configContentXMLString); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * This method reads an XML file and returns the content of the XML file in + * string format + * + * @param appPath + * XML file path + * @return File content in string format + * @throws Exception + */ + private static String getConfigFileContent(String appPath) throws Exception { + validateConfigFile(appPath); + + InputStream inputStream = null; + try { + String encoding = detectEncoding(appPath); + if (encoding == null || encoding.trim().isEmpty()) { + encoding = "UTF-8"; + } + + DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); + builderFactory.setNamespaceAware(false); + builderFactory.setValidating(false); + DocumentBuilder builder = builderFactory.newDocumentBuilder(); + inputStream = new FileInputStream(appPath); + InputSource lInputSource = new InputSource(inputStream); + lInputSource.setEncoding(encoding); + Document document = builder.parse(lInputSource); + + TransformerFactory lTransFactory = TransformerFactory.newInstance(); + Transformer lTrans = lTransFactory.newTransformer(); + DOMSource lSource = new DOMSource(document); + StringWriter lStringWriter = new StringWriter(); + lTrans.transform(lSource, new StreamResult(lStringWriter)); + return lStringWriter.toString(); + } catch (Exception e) { + System.out.println("*** Config file should be in UTF-8 encoding ***"); + e.printStackTrace(); + System.exit(0); + } finally { + if (inputStream != null) { + try { + inputStream.close(); + } catch (IOException ioException) { + // ignore + } + } + } + return ""; + } + + /** + * Validates whether the file exists at the given location & has valid BOM + * format + * + * @param configFilePath + * @throws Exception + * @return The file object representing the configFilePath + */ + private static File validateConfigFile(String configFilePath) throws Exception { + + if (configFilePath == null || configFilePath.trim().isEmpty()) { + throw new Exception("Configuration File path is not provided."); + } + + File file = new File(configFilePath); + if (!file.exists()) { + throw new Exception("Configuration File does not exist at '" + file.getAbsolutePath() + "'"); + } + + if (!file.isFile()) { + throw new Exception("'" + file.getAbsolutePath() + "' is not a file."); + } + + // Length 3 is checked to make sure that enough bytes are available for + // BOM reading. + if (file.length() < 3) { + throw new Exception("'" + file.getAbsolutePath() + "' is not a valid configuration file."); + } + return file; + } + + /** + * Detect encoding format of file + * + * @param pConfigXmlPath + * File path whose encoding type is to be detected + * @return encoding format (eg: utf-8, utf-16) + */ + public static String detectEncoding(String pConfigXmlPath) { + FileInputStream lFis = null; + try { + lFis = new FileInputStream(pConfigXmlPath); + UniversalDetector lDetector = new UniversalDetector(null); + byte[] lBuff = new byte[512]; + int liread; + while ((liread = lFis.read(lBuff)) > 0 && !lDetector.isDone()) { + lDetector.handleData(lBuff, 0, liread); + } + lDetector.dataEnd(); + String lstrEncoding = lDetector.getDetectedCharset(); + lDetector.reset(); + return lstrEncoding; + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (lFis != null) { + try { + lFis.close(); + } catch (IOException e) { + // Igniore + } + } + } + return null; + } + + /** + * Terminate the created session and reset the initialized Server SDK library. + */ + public static void terminateWSClient() { + try { + FSHelperLibrary.logInfo("Terminating FSHelper Library"); + if (FSHelperLibrary.isTerminated() == false) { + System.out.println("FSHelperLibrary.isTerminated(): " + FSHelperLibrary.isTerminated()); + FSHelperLibrary.terminate(); + } + } catch (FSHelperException e) { + FSHelperLibrary.logError(e.getMessage(), e); + } + } + +} diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/src/com/seclore/fs/protect/example/main/SecloreMain.java b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/src/com/seclore/fs/protect/example/main/SecloreMain.java new file mode 100755 index 0000000..8de5492 --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/src/com/seclore/fs/protect/example/main/SecloreMain.java @@ -0,0 +1,371 @@ +package com.seclore.fs.protect.example.main; + +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; + +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + +import com.seclore.fs.helper.core.ProtectedFile; +import com.seclore.fs.helper.enums.ProtectionType; +import com.seclore.fs.helper.exception.FSHelperException; +import com.seclore.fs.helper.library.FSHelper; +import com.seclore.fs.helper.library.FSHelperLibrary; +import com.seclore.fs.protect.example.core.Config; +import com.seclore.fs.protect.example.core.FSEntity; +import com.seclore.fs.protect.example.core.InitializeWSClient; +import com.seclore.fs.protect.example.util.XMLUtil; + +public class SecloreMain { + + // FS Helper library is multi-tenant. Use unique tenant identifier for each + // tenant + private static String tenantID = "Tenant-1"; + + // This file contains information about the Application into which this code + // snippet is to be integrated. + private static final String appConfigXMLFilePath = "config/config.xml"; + + // This file contains info for creating session with Seclore Policy Server and + // initializing Server SDK library + private static final String tenantConfigXMLFilePath = "config/cabinet config.xml"; + + // Used to take user input + private static Scanner scanner = null; + + /** + *

+ * This block initializes the Server SDK library and creates a session with + * Seclore Policy Server + *

+ * + * @exception Code snippet won't run if any exception is thrown in this block. + */ + static { + try { + Config.initConfig("config/config.properties"); + InitializeWSClient.initializeHelperLibrary(appConfigXMLFilePath); + InitializeWSClient.initializeHelper(tenantID, "", tenantConfigXMLFilePath); + scanner = new Scanner(System.in); + } catch (Exception e) { + e.printStackTrace(); + System.exit(0); + } + } + + // Entry point to run this application + public static void main(String[] args) { + + try { + String outputFilePath = protectAndWrapFile(); + + if (outputFilePath != null && !outputFilePath.trim().isEmpty()) { + System.out.println("File '" + outputFilePath + "' is protected and wrapped successfully"); + } else { + throw new Exception("Unexpected error"); + } + + } catch (Exception exp) { + exp.printStackTrace(); + } finally { + if (scanner != null) { + scanner.close(); + } + + InitializeWSClient.terminateWSClient(); + } + } + + /** + * Protect and wrap a file using Seclore SDK + * + * @return the absolute file path of protected file + * @throws Exception + */ + public static String protectAndWrapFile() throws Exception { + System.out.println("Enter absolute path of the file to be protected and wrapped:"); + String filePath = scanner.nextLine(); + + // get the FSHelper object by specifying the tenantId. + // note: This tenant id should be same which was used during initialization of + // Seclore SDK + FSHelper tenantObj = FSHelperLibrary.getHelper(tenantID); + + // does basic validation checks to see if the file is supported by SDK and is + // not already protected + validateIfFileSupportsProtection(tenantObj, filePath); + + // this display file name goes in activity log + // for more details see javadoc of FSHelper.protectAndWrap() + String dispFileName = filePath; + // get XML structure to protect with hot folder + String protectionDetails = getProtectDetailsXML(); + // show details about protector + String protectorDetails = ""; + // activity comments to be shown + String actvityComments = "Protected by using FS Helper Library's protectAndWrap method"; + + // calling Seclore SDK's protectAndWrap api + ProtectedFile protectedWrappedFile = tenantObj.protectAndWrap(null, + filePath, + dispFileName, + ProtectionType.PROTECT, + protectionDetails, + protectorDetails, + actvityComments); + System.out.println("Protected File Id: " + protectedWrappedFile.getFileId()); + + return protectedWrappedFile.getFilePath(); + } + + /** + * Validates if the file supports Seclore protection + * + * @param tenantObj - FSHelper object created for the tenant. + * @param filePath - Absolute path of the file to be protected. + * @throws Exception + */ + private static void validateIfFileSupportsProtection(FSHelper tenantObj, String filePath) + throws FSHelperException, Exception { + // check if file is already Seclore protected + if (tenantObj.isProtectedFile(filePath) || tenantObj.isHTMLWrapped(filePath)) { + throw new Exception("File '" + filePath + "' is already protected"); + } + + // check if file extension is supported by Seclore FS Helper Library + if (tenantObj.isSupportedFile(filePath) == false && tenantObj.isBasicProtectionSupported(filePath) == false) { + String fileExt = filePath.substring(filePath.lastIndexOf(".") + 1); + // note: if file is not of standard format and does not support basic protection + // then throw error + throw new Exception("File with extention '" + fileExt + "' is not supported by Seclore FS Helper Library"); + } + + // check if file extension is supported for HTML wrapping by Seclore FS Helper + // Library + if (tenantObj.isHTMLWrapSupported(filePath) == false) { + // note: file is of standard format but not supported for HTML wrapping + throw new Exception("File '" + filePath + "' does not support HTML wrapping"); + } + } + + /** + * Forms the protection XML request string to be sent to PS. + * + * @return protection request XML structure + */ + private static String getProtectDetailsXML() throws Exception { + System.out.println("Enter owner mail id:"); + String ownerEmail = scanner.nextLine(); + + System.out.println("Enter recipient(s) mail id: [if multiple seperate by using comma ,]"); + String recipientsEmailCommaSeperated = scanner.nextLine(); + + System.out.println("Enter recipient(s) rights id: [if multiple seperate by using comma ,]"); + String rightsCommaSeparated = scanner.nextLine(); + // unlike the recipient's , you cannot create the owner + // i.e you cannot call createUser on owner emailId + // This is because the create user method needs a referrer-email-id and + // this user should already exist in the policy server. + FSEntity owner = searchUser(ownerEmail.trim()); + if (owner == null) { + throw new Exception("owner does not exist in Policy Server."); + } + + String[] emails = recipientsEmailCommaSeperated.split(","); + String[] rights = rightsCommaSeparated.split(","); + + List entities = new ArrayList(); + for (int i = 0; i < emails.length; i++) { + // Searching the user in the Policy Server's repositories based on email id. + // if not found creating the recipient user in the Policy Server's repository. + // note: owner should already exist in the Policy Server + // else the protect request will fail. + FSEntity recipient = searchAndCreateUser(emails[i].trim(), ownerEmail); + // user does not exist + if (recipient == null) { // creation of the user failed , abort the request + System.err.println("*** No entity found for email id '" + emails[i] + "' "); + return null; + } + entities.add(recipient); + } + + if (rights.length != entities.size()) { + throw new Exception("Number of recipients and number of rights do not match."); + } + + StringBuilder fileAccessRightMappings = new StringBuilder(); + int i = 0; + for (FSEntity entity : entities) { + String fileAccessRightMapping = "" + + "1" + + "" + + "" + + "" + XMLUtil.escapeForXML(entity.getId()) + "" + + "" + entity.getRepCode() + "" + + "" + entity.getType() + "" + + "" + + "" + rights[i] + "" + + "" + Config.getProperty("offline", "0") + "" + + "" + Config.getProperty("redistribute", "0") + "" + + "" + Config.getProperty("lock.to.first.machine", "0") + + "" + + "" + Config.getProperty("no.of.days.since.protection", "-1") + + "" + + "" + Config.getProperty("no.of.days.since.first.access", "-1") + + "" + + "" + + ""; + fileAccessRightMappings.append(fileAccessRightMapping); + i++; + } + + String xml = "" + + "1" + + "" + + fileAccessRightMappings.toString() + + "" + + "" + + "" + + "" + owner.getId() + "" + + "" + owner.getRepCode() + "" + + "1" + + "" + + "" + + ""; + return xml; + } + + /** + * A helper method to get user details if exists + * or create a new user in PS repository. + * For more details see searchUser & createUser. + * + */ + private static FSEntity searchAndCreateUser(String emailId, String referrerEmailId) + throws FSHelperException, Exception { + FSEntity user = searchUser(emailId); + // user not found in any repository + if (user != null) { + return user; + } + // note: referrer should already exist in policy server before calling create + // user + return createUser(emailId, referrerEmailId); + } + + /** + * searches a user in the policy server with given email id. + * + * @param emailId - emailId of the user to be created in PS + * @return - FSEntity representing the repository information in which the user + * exists. + * In case the user does not exist returns null + * + * @throws FSHelperException + * - In case some error occurs while searching the + * user + * + */ + private static FSEntity searchUser(String emailId) throws FSHelperException, Exception { + FSHelper tenantObj = FSHelperLibrary.getHelper(tenantID); + // XML request structure to search a user in Policy Server , if does not exist + // creating a new user + String searchUserXML = "" + + "" + + "2" + + "" + + "" + + "" + XMLUtil.escapeForXML(emailId) + "" + + "" + + ""; + // sending search user request to Policy Server + String responseXML = tenantObj.sendRequest(null, 74, searchUserXML); + Node rootNode = XMLUtil.getRootNode(responseXML); + Node requestStatusNode = XMLUtil.parseNode("request-status", rootNode); + String returnValue = XMLUtil.parseString("return-value", requestStatusNode); + if ("1".equals(returnValue)) { + NodeList nodeList = XMLUtil.parseNodeList("entities/entity", rootNode); + if (nodeList != null && nodeList.getLength() > 0) { + // Get first entity + Node node = nodeList.item(0); + String id = XMLUtil.parseString("id", node); + int repCode = XMLUtil.parseInteger("rep-code", node); + int type = XMLUtil.parseInteger("type", node); + return new FSEntity(id, repCode, type); + } + } + // if no such user found in Policy Server then it will return this error + // '-220372 :- No Entities Found.' + // checking if there is some processing other than error code -220372 then + // throwing the exception + if ("-220372".equals(returnValue) == false) { + String errorMessage = XMLUtil.parseString("error-message", requestStatusNode); + String displayMessage = XMLUtil.parseString("display-message", requestStatusNode); + if (displayMessage == null || displayMessage.trim().isEmpty()) { + displayMessage = errorMessage; + } + throw new Exception(displayMessage + "(" + returnValue + ")"); + } + + return null; + } + + /** + * to create a new user in policy server with given emailId. + * Before calling this method check if the user with given emailId + * already exists in policy server using searchUser method. + * + * @param emailId + * emailId of the new user to be created in policy server + * @param referrerEmailId + * emailId of the person who is referring this person. + * This user should already exist in the policy server. + * + * @throws Exception if user already exists or + * no user exists in policy server with given referrerEmailId + */ + private static FSEntity createUser(String emailId, String referrerEmailId) throws Exception { + FSHelper tenantObj = FSHelperLibrary.getHelper(tenantID); + // request structure for creating a user + String createUserXML = "" + + "" + + "2" + + "" + + "" + + "" + + "" + XMLUtil.escapeForXML(emailId) + "" + + "User created by MFP" + + "" + referrerEmailId + "" + + "" + + "" + + ""; + // sending create user request to Policy Server + String responseXML = tenantObj.sendRequest(null, 109, createUserXML); + Node rootNode = XMLUtil.getRootNode(responseXML); + Node requestStatusNode = XMLUtil.parseNode("request-status", rootNode); + String returnValue = XMLUtil.parseString("return-value", requestStatusNode); + // if return-value is not 1 this means user creation failed , hence throwing the + // error + if ("1".equals(returnValue) == false) { + String errorMessage = XMLUtil.parseString("error-message", requestStatusNode); + String displayMessage = XMLUtil.parseString("display-message", requestStatusNode); + if (displayMessage == null || displayMessage.trim().isEmpty()) { + displayMessage = errorMessage; + } + // user cannot be created in Policy Server , hence throwing exception + System.out.println("user can't be created " + displayMessage); + throw new Exception(displayMessage + "(" + returnValue + ")"); + } + // user already exist + // -220394 :- User with email id ''{0}'' already exist. + // -220518 :- User with email id ''{0}'' already exist in a repository which is + // not visible. + Node node = XMLUtil.parseNode("im-user", rootNode); + String id = XMLUtil.parseString("id", node); + int repCode = XMLUtil.parseInteger("rep-code", node); + int type = 1; + return new FSEntity(id, repCode, type); + } + +} diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/src/com/seclore/fs/protect/example/util/XMLUtil.java b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/src/com/seclore/fs/protect/example/util/XMLUtil.java new file mode 100755 index 0000000..14657c5 --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/src/com/seclore/fs/protect/example/util/XMLUtil.java @@ -0,0 +1,164 @@ +package com.seclore.fs.protect.example.util; + +import java.io.IOException; +import java.io.InputStream; +import java.io.StringReader; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.xpath.XPath; +import javax.xml.xpath.XPathConstants; +import javax.xml.xpath.XPathExpressionException; +import javax.xml.xpath.XPathFactory; + +import org.w3c.dom.Document; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.xml.sax.InputSource; + +public class XMLUtil +{ + private static XPath xpath = null; + static + { + xpath = XPathFactory.newInstance().newXPath(); + } + + + /** + * @param xmlString + * @return + */ + public static Document parseDocument(String xmlString) + { + InputStream inputStream = null; + try + { + DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder builder = builderFactory.newDocumentBuilder(); + Document xmlDocument = builder.parse( new InputSource(new StringReader(xmlString)) ); + return xmlDocument; + } + catch (Exception e) + { + e.printStackTrace(); + //LoggerUtil.logError("Error while parsing - "+xmlString, e); + } + finally + { + if(inputStream != null) + { + try{ + inputStream.close(); + } + catch(IOException ioException) + { + //ignore + } + } + } + return null; + } + + /** + * @param document + * @return + */ + public static Node getRootNode(Document document) + { + NodeList nodeList = document.getChildNodes(); + return nodeList.item(0); + } + + /** + * @param XML String + * @return + */ + public static Node getRootNode(String xmlString) + { + Document document = parseDocument(xmlString); + return getRootNode(document); + } + + /** + * @param xmlTagName + * @param parentNode + * @return + */ + public static Node parseNode(String xmlTagName, Node parentNode) + { + try + { + Node node = (Node) xpath.evaluate(xmlTagName, parentNode, XPathConstants.NODE); + return node; + } + catch (XPathExpressionException e) + { + e.printStackTrace(); + } + return null; + } + + /** + * @param xmlTagName + * @param parentNode + * @return + */ + public static NodeList parseNodeList(String xmlTagName, Node parentNode) + { + try + { + NodeList nodeList = (NodeList) xpath.evaluate(xmlTagName, parentNode, XPathConstants.NODESET); + return nodeList; + } + catch (XPathExpressionException e) + { + e.printStackTrace(); + } + return null; + } + + /** + * @param xmlTagName + * @param parentNode + * @return + */ + public static String parseString(String xmlTagName, Node parentNode) + { + try + { + String requestId = (String) xpath.evaluate(xmlTagName+"/text()", parentNode, XPathConstants.STRING); + return requestId; + } + catch (XPathExpressionException e) + { + e.printStackTrace(); + } + return null; + } + + public static Integer parseInteger(String xmlTagName, Node parentNode) + { + try + { + Number li = (Number) xpath.evaluate(xmlTagName, parentNode, XPathConstants.NUMBER); + return li.intValue(); + } + catch (XPathExpressionException e) + { + e.printStackTrace(); + } + return null; + } + + public static String escapeForXML(String strXML) + { + if(strXML == null || strXML.trim().isEmpty()) + { + return strXML; + } + + return strXML.replace("&", "&").replace("<", "<").replace(">", ">").replace("\"", """).replace("'", "'"); + } +} + diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Start Here - Protect & Wrap with Independent Rights - Enterprise Policy Server.pptx b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Start Here - Protect & Wrap with Independent Rights - Enterprise Policy Server.pptx new file mode 100755 index 0000000..5aea992 Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/Start Here - Protect & Wrap with Independent Rights - Enterprise Policy Server.pptx differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/scripts/build.sh b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/scripts/build.sh new file mode 100755 index 0000000..f977094 --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Enterprise Policy Server/scripts/build.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +set -e + +# Set the project root directory +PROJECT_ROOT=$(dirname "$0")/.. + +# Clean all bin folders +rm -rf "$PROJECT_ROOT/Sample Code/bin/Protect With Independent Rights & Wrap/config"/* +rm -rf "$PROJECT_ROOT/Sample Code/bin/Protect With Independent Rights & Wrap/lib"/* + +# Clear the src/bin dir containing compiled class files +rm -rf "$PROJECT_ROOT/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/bin"/* + +#find and compile all java files +find "$PROJECT_ROOT/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/src" -name "*.java" -exec javac -d "$PROJECT_ROOT/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/bin" -cp "$PROJECT_ROOT/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/*" {} + + +# Package the compiled classes into a JAR file +jar cvf "$PROJECT_ROOT/Sample Code/bin/Protect With Independent Rights & Wrap/lib/sample-app.jar" -C "$PROJECT_ROOT/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/bin" . + +# Copy all libs and config files to bin +cp -r "$PROJECT_ROOT/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib"/* "$PROJECT_ROOT/Sample Code/bin/Protect With Independent Rights & Wrap/lib" +cp -r "$PROJECT_ROOT/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/config"/* "$PROJECT_ROOT/Sample Code/bin/Protect With Independent Rights & Wrap/config" \ No newline at end of file diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/FSRighstsCalculator.html b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/FSRighstsCalculator.html new file mode 100755 index 0000000..f349722 --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/FSRighstsCalculator.html @@ -0,0 +1,90 @@ + + + + + + + +
+

FileSecure Rights Calculator

+
+

(primary access rights)

+ +
+ Final: +
+ +
+

View

+

Lite Viewer

+

Edit

+

Copy Data

+

Print

+

Screen Capture

+

Macro

+

Full Control

+ +
+ + + + \ No newline at end of file diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code Configuration Details.xlsx b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code Configuration Details.xlsx new file mode 100755 index 0000000..2aae805 Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code Configuration Details.xlsx differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code Walkthrough.mp4 b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code Walkthrough.mp4 new file mode 100755 index 0000000..f272a55 Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code Walkthrough.mp4 differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/Readme.txt b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/Readme.txt new file mode 100755 index 0000000..5e1f885 --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/Readme.txt @@ -0,0 +1,30 @@ + +Protect With Independent Rights & Wrap Sample App +================================================== + + +Deployment Steps: +------------------ +1. make sure your policy server is running . This app requires java 8 or above to run so make + sure java 8 or above is installed. + +2. go inside 'bin/Protect With Independent Rights & Wrap Sample App' + +3. Configure the 'tenant config.xml' in 'config/' + a. Policy Server Details: + server : Server name on which Policy Server is running + port : Server Port on which Policy Server is running + app-name : Policy Server application name + + b. fill hot folder details i.e id and passphrase + +3. Configure the config.properties in 'config/' + +4. If you are using java 8 , put libs present inside 'doc/JCE Files/java8' into + 'bin/Protect With Independent Rights & Wrap Sample App/lib' + +4. click on run.bat to start sample app , follow instruction on terminal + +5. The independent rights given to each user are numeric values.Use + the 'FSRighstsCalculator.html' present inside the 'doc' folder to + calculate right's value. \ No newline at end of file diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/config/cabinet config.xml b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/config/cabinet config.xml new file mode 100644 index 0000000..1d6eba7 --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/config/cabinet config.xml @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + false + + + + + + false + + + en + + + + + 50 + + 900 + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/config/config.properties b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/config/config.properties new file mode 100755 index 0000000..d824b9a --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/config/config.properties @@ -0,0 +1,6 @@ +#Other Rights to be applied on file, refer FSRighstsCalculator.html for primary.access.right. +offline=0 +redistribute=0 +lock.to.first.machine=0 +no.of.days.since.protection=-1 +no.of.days.since.first.access=-1 diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/config/config.xml b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/config/config.xml new file mode 100644 index 0000000..11362a7 --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/config/config.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + true + + false + + + + + \ No newline at end of file diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/config/log4j.properties b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/config/log4j.properties new file mode 100755 index 0000000..8293be6 --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/config/log4j.properties @@ -0,0 +1,15 @@ + +log4j.category.WSCLIENT=debug, WSCLIENT + +# If we want to change the Appender, we have to change +# UtilFunction.initializeLoggers() too, because it assumes that the appender +# is 'org.apache.log4j.RollingFileAppender' and changes path of the file by +# getting appender from this logger. +log4j.appender.WSCLIENT=com.seclore.fs.ws.client.logger.DailyZippedRollingFileAppender +# Path of the file should be relative to application ROOT +log4j.appender.WSCLIENT.File=logs/WSClient.log +log4j.appender.WSCLIENT.MaxFileSize=10MB +#log4j.appender.REQUEST_LOGGER.MaxBackupIndex=10 +log4j.appender.WSCLIENT.DatePattern='_'yyyy-MM-dd +log4j.appender.WSCLIENT.layout=org.apache.log4j.PatternLayout +log4j.appender.WSCLIENT.layout.ConversionPattern=%d{MMM dd, yyyy HH:mm:ss.SSS} %F:%L%n%p: %m%n diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/config/log4j2.xml b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/config/log4j2.xml new file mode 100644 index 0000000..0756304 --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/config/log4j2.xml @@ -0,0 +1,43 @@ + + + + + + ${ctx:applicationPath}/logs + + + + + + + + + + + + + UTF-8 + %d{MMM dd, yyyy HH:mm:ss.SSS}: %t: %p: %m%n + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/bc-fips-1.0.2.4.jar b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/bc-fips-1.0.2.4.jar new file mode 100644 index 0000000..a38f9d0 Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/bc-fips-1.0.2.4.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/commons-codec-1.6.jar b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/commons-codec-1.6.jar new file mode 100644 index 0000000..ee1bc49 Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/commons-codec-1.6.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/disruptor-3.3.7.jar b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/disruptor-3.3.7.jar new file mode 100644 index 0000000..1777a37 Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/disruptor-3.3.7.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/fs-smaillibrary-1.2.7.0.jar b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/fs-smaillibrary-1.2.7.0.jar new file mode 100644 index 0000000..c01ec4a Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/fs-smaillibrary-1.2.7.0.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/fs-ws-client-4.4.18.0.jar b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/fs-ws-client-4.4.18.0.jar new file mode 100644 index 0000000..d0a949c Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/fs-ws-client-4.4.18.0.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/juniversalchardet-1.0.3.jar b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/juniversalchardet-1.0.3.jar new file mode 100755 index 0000000..1af703f Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/juniversalchardet-1.0.3.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/log4j-api-2.17.1.jar b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/log4j-api-2.17.1.jar new file mode 100644 index 0000000..1aae243 Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/log4j-api-2.17.1.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/log4j-core-2.17.1.jar b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/log4j-core-2.17.1.jar new file mode 100644 index 0000000..4682527 Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/log4j-core-2.17.1.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/sample-app.jar b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/sample-app.jar new file mode 100644 index 0000000..553b9a0 Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/sample-app.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/seclore-io-1.0.0.0.jar b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/seclore-io-1.0.0.0.jar new file mode 100644 index 0000000..365237b Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/seclore-io-1.0.0.0.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/xercesImpl-2.12.2.jar b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/xercesImpl-2.12.2.jar new file mode 100644 index 0000000..ccbae9f Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/lib/xercesImpl-2.12.2.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/run.bat b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/run.bat new file mode 100755 index 0000000..47f1076 --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/bin/Protect With Independent Rights & Wrap/run.bat @@ -0,0 +1,17 @@ +@echo off +set "CURRENT_DIR=%cd%" +echo --------------------------------------------------------------------- +echo Seclore 'Protect with Independent Rights And Wrap Sample App' Utility +echo --------------------------------------------------------------------- +echo. + +rem if your want to run on a different jdk or java path is not configured uncomment below line +rem for example , +rem path="C:\Program Files\Java\jdk-11.0.1\bin"; +java -version +echo. + +REM uncomment below line to see the version of sample app i.e( remove REM mentioned below) +REM java -cp "./lib/sample-app.jar"; com.seclore.fs.protect.example.Version + java -cp "./lib/*"; com.seclore.fs.protect.example.main.SecloreMain +pause \ No newline at end of file diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/doc/Developer_s Reference.txt b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/doc/Developer_s Reference.txt new file mode 100755 index 0000000..d49ade4 --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/doc/Developer_s Reference.txt @@ -0,0 +1,37 @@ +FileSecure Interfaces integration source code reference. + +FS Helper Initialization +------------------------ + - At application startup initializing FSHelperlibrary and FSHelper + - Below classes are used for the same + - SecloreMain + - static block :- + InitializeWSClient.initializeHelperLibrary((FSHELPERLIBRARY_CONFIG_XML_PATH, );); + InitializeWSClient.initializeHelper(HELPER_INSTANCE_KEY, FSHELPER_RESOURCE_PATH, FSHELPER_CONFIG_XML_PATH, ); + - InitializeWSClient + - initializeHelperLibrary( ... ) + - initializeHelper( ... ) + + + +Main Class +------------ + - com.seclore.fs.protect.example.main + - SecloreMain class + +Note: +===== +while preparing xml string for request or response. please escape below spacial character for the string which will be written within xml tag. + "&" -> "&" + "<" -> "<" + ">", -> ">" + "\"" -> """ + "'" -> "'"; + + Refer: com.seclore.fs.protect.example.util.XMLUtil class and + - escapeForXML () method + +Example: sample xml is "Sample Sales & purchase report.pdf" + here "Sample Sales and purchase report" should be escaped. + Use: String fileName = XMLHelper.escapeForXML( "Sample Sales & purchase report" ); + ""+fileName+"" diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/doc/FSRighstsCalculator.html b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/doc/FSRighstsCalculator.html new file mode 100755 index 0000000..02e4029 --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/doc/FSRighstsCalculator.html @@ -0,0 +1,90 @@ + + + + + + + +
+

FileSecure Rights Calculator

+
+

(primary access rights)

+ +
+ Final: +
+ +
+

View

+

Lite Viewer

+

Edit

+

Copy Data

+

Print

+

Screen Capture

+

Macro

+

Full Control

+ +
+ + + + \ No newline at end of file diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/doc/JCE Files/Java7/US_export_policy.jar b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/doc/JCE Files/Java7/US_export_policy.jar new file mode 100755 index 0000000..7173213 Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/doc/JCE Files/Java7/US_export_policy.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/doc/JCE Files/Java7/local_policy.jar b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/doc/JCE Files/Java7/local_policy.jar new file mode 100755 index 0000000..c34d036 Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/doc/JCE Files/Java7/local_policy.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/doc/JCE Files/Java8/US_export_policy.jar b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/doc/JCE Files/Java8/US_export_policy.jar new file mode 100755 index 0000000..251b102 Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/doc/JCE Files/Java8/US_export_policy.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/doc/JCE Files/Java8/local_policy.jar b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/doc/JCE Files/Java8/local_policy.jar new file mode 100755 index 0000000..1c58939 Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/doc/JCE Files/Java8/local_policy.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/.classpath b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/.classpath new file mode 100755 index 0000000..4e3bf4d --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/.classpath @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/.project b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/.project new file mode 100755 index 0000000..496d8fb --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/.project @@ -0,0 +1,17 @@ + + + Protect With Independent Rights & Wrap Sample Code + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/.settings/org.eclipse.jdt.core.prefs b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/.settings/org.eclipse.jdt.core.prefs new file mode 100755 index 0000000..3a21537 --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/bin/com/seclore/fs/protect/example/core/Config.class b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/bin/com/seclore/fs/protect/example/core/Config.class new file mode 100644 index 0000000..1e6a821 Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/bin/com/seclore/fs/protect/example/core/Config.class differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/bin/com/seclore/fs/protect/example/core/FSEntity.class b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/bin/com/seclore/fs/protect/example/core/FSEntity.class new file mode 100644 index 0000000..0f004c3 Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/bin/com/seclore/fs/protect/example/core/FSEntity.class differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/bin/com/seclore/fs/protect/example/core/InitializeWSClient.class b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/bin/com/seclore/fs/protect/example/core/InitializeWSClient.class new file mode 100644 index 0000000..0326058 Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/bin/com/seclore/fs/protect/example/core/InitializeWSClient.class differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/bin/com/seclore/fs/protect/example/main/SecloreMain.class b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/bin/com/seclore/fs/protect/example/main/SecloreMain.class new file mode 100644 index 0000000..893b123 Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/bin/com/seclore/fs/protect/example/main/SecloreMain.class differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/bin/com/seclore/fs/protect/example/util/XMLUtil.class b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/bin/com/seclore/fs/protect/example/util/XMLUtil.class new file mode 100644 index 0000000..a9a541a Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/bin/com/seclore/fs/protect/example/util/XMLUtil.class differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/config/cabinet config.xml b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/config/cabinet config.xml new file mode 100644 index 0000000..1d6eba7 --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/config/cabinet config.xml @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + false + + + + + + false + + + en + + + + + 50 + + 900 + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/config/config.properties b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/config/config.properties new file mode 100755 index 0000000..d824b9a --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/config/config.properties @@ -0,0 +1,6 @@ +#Other Rights to be applied on file, refer FSRighstsCalculator.html for primary.access.right. +offline=0 +redistribute=0 +lock.to.first.machine=0 +no.of.days.since.protection=-1 +no.of.days.since.first.access=-1 diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/config/config.xml b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/config/config.xml new file mode 100644 index 0000000..11362a7 --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/config/config.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + true + + false + + + + + \ No newline at end of file diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/config/log4j.properties b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/config/log4j.properties new file mode 100755 index 0000000..8293be6 --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/config/log4j.properties @@ -0,0 +1,15 @@ + +log4j.category.WSCLIENT=debug, WSCLIENT + +# If we want to change the Appender, we have to change +# UtilFunction.initializeLoggers() too, because it assumes that the appender +# is 'org.apache.log4j.RollingFileAppender' and changes path of the file by +# getting appender from this logger. +log4j.appender.WSCLIENT=com.seclore.fs.ws.client.logger.DailyZippedRollingFileAppender +# Path of the file should be relative to application ROOT +log4j.appender.WSCLIENT.File=logs/WSClient.log +log4j.appender.WSCLIENT.MaxFileSize=10MB +#log4j.appender.REQUEST_LOGGER.MaxBackupIndex=10 +log4j.appender.WSCLIENT.DatePattern='_'yyyy-MM-dd +log4j.appender.WSCLIENT.layout=org.apache.log4j.PatternLayout +log4j.appender.WSCLIENT.layout.ConversionPattern=%d{MMM dd, yyyy HH:mm:ss.SSS} %F:%L%n%p: %m%n diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/config/log4j2.xml b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/config/log4j2.xml new file mode 100644 index 0000000..0756304 --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/config/log4j2.xml @@ -0,0 +1,43 @@ + + + + + + ${ctx:applicationPath}/logs + + + + + + + + + + + + + UTF-8 + %d{MMM dd, yyyy HH:mm:ss.SSS}: %t: %p: %m%n + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/bc-fips-1.0.2.4.jar b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/bc-fips-1.0.2.4.jar new file mode 100644 index 0000000..a38f9d0 Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/bc-fips-1.0.2.4.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/commons-codec-1.6.jar b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/commons-codec-1.6.jar new file mode 100644 index 0000000..ee1bc49 Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/commons-codec-1.6.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/disruptor-3.3.7.jar b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/disruptor-3.3.7.jar new file mode 100644 index 0000000..1777a37 Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/disruptor-3.3.7.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/fs-smaillibrary-1.2.7.0.jar b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/fs-smaillibrary-1.2.7.0.jar new file mode 100644 index 0000000..c01ec4a Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/fs-smaillibrary-1.2.7.0.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/fs-ws-client-4.4.18.0.jar b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/fs-ws-client-4.4.18.0.jar new file mode 100644 index 0000000..d0a949c Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/fs-ws-client-4.4.18.0.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/juniversalchardet-1.0.3.jar b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/juniversalchardet-1.0.3.jar new file mode 100755 index 0000000..1af703f Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/juniversalchardet-1.0.3.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/log4j-api-2.17.1.jar b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/log4j-api-2.17.1.jar new file mode 100644 index 0000000..1aae243 Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/log4j-api-2.17.1.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/log4j-core-2.17.1.jar b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/log4j-core-2.17.1.jar new file mode 100644 index 0000000..4682527 Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/log4j-core-2.17.1.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/seclore-io-1.0.0.0.jar b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/seclore-io-1.0.0.0.jar new file mode 100644 index 0000000..365237b Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/seclore-io-1.0.0.0.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/xercesImpl-2.12.2.jar b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/xercesImpl-2.12.2.jar new file mode 100644 index 0000000..ccbae9f Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/xercesImpl-2.12.2.jar differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/src/Version.properties b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/src/Version.properties new file mode 100755 index 0000000..adf74cc --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/src/Version.properties @@ -0,0 +1 @@ +SAMPLE.APP.VERSION=2.0.0.0 diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/src/com/seclore/fs/protect/example/core/Config.java b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/src/com/seclore/fs/protect/example/core/Config.java new file mode 100755 index 0000000..5d2f60c --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/src/com/seclore/fs/protect/example/core/Config.java @@ -0,0 +1,55 @@ +package com.seclore.fs.protect.example.core; + +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.Properties; + +public class Config +{ + private static Properties props = null; + + /** + * read the config/config.properties file + * @param appPath + */ + public static void initConfig(String appPath) + { + String configPath = appPath ; + InputStream lInputStream = null; + try + { + Properties lProps = new Properties(); + lInputStream = new FileInputStream(configPath); + lProps.load(lInputStream); + props = lProps; + } + catch(Exception lEx) + { + lEx.printStackTrace(); + } + finally + { + if( lInputStream != null) + { + try + { + lInputStream.close(); + } + catch(IOException ioException) + { + // Ignore + } + } + } + } + + /** + * gets the value of property key defined in config/config.properties + * + */ + public static String getProperty(String key, String defaultValue) + { + return props.getProperty(key, defaultValue); + } +} diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/src/com/seclore/fs/protect/example/core/FSEntity.java b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/src/com/seclore/fs/protect/example/core/FSEntity.java new file mode 100755 index 0000000..334bc73 --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/src/com/seclore/fs/protect/example/core/FSEntity.java @@ -0,0 +1,58 @@ +package com.seclore.fs.protect.example.core; + +public class FSEntity +{ + private String id; + + /** + * repository code + */ + private int repCode; + /** + * + * entity type + * 1 for user + * 2 for group + */ + private int type; + + // Default constructor + public FSEntity() + { + + } + + public FSEntity(String id, int repCode, int type) + { + this.id = id; + this.repCode = repCode; + this.type = type; + } + + public String getId() + { + return id; + } + public void setId(String id) + { + this.id = id; + } + public int getRepCode() + { + return repCode; + } + public void setRepCode(int repCode) + { + this.repCode = repCode; + } + public int getType() + { + return type; + } + public void setType(int type) + { + this.type = type; + } + + +} diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/src/com/seclore/fs/protect/example/core/InitializeWSClient.java b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/src/com/seclore/fs/protect/example/core/InitializeWSClient.java new file mode 100755 index 0000000..0cfcab0 --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/src/com/seclore/fs/protect/example/core/InitializeWSClient.java @@ -0,0 +1,193 @@ +package com.seclore.fs.protect.example.core; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.StringWriter; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; + +import org.mozilla.universalchardet.UniversalDetector; +import org.w3c.dom.Document; +import org.xml.sax.InputSource; + +import com.seclore.fs.helper.exception.FSHelperException; +import com.seclore.fs.helper.library.FSHelperLibrary; + +public class InitializeWSClient { + /** + * @param configPath + * Takes the application config file path as input + * @throws Exception + */ + public static void initializeHelperLibrary(String configPath) throws Exception { + try { + String configContentXMLString = getConfigFileContent(configPath); + // Initialize method takes WSClient config content not the config file path. + FSHelperLibrary.initialize(configContentXMLString); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * @param helperId + * Tenant Id + * @param helperResourcePath + * Resource Path for files of Seclore Policy Server. + * To be left empty here. + * @param helperConfigPath + * File path for 'tenant config.xml' file + * @throws Exception + * Code snippet won't run if any exception is thrown in this + * block + */ + public static void initializeHelper(String helperId, String helperResourcePath, String helperConfigPath) + throws Exception { + try { + String configContentXMLString = getConfigFileContent(helperConfigPath); + // Initialize method takes WSClient config content not the config file path. + FSHelperLibrary.initializeHelper(helperId, helperResourcePath, configContentXMLString); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * This method reads an XML file and returns the content of the XML file in + * string format + * + * @param appPath + * XML file path + * @return File content in string format + * @throws Exception + */ + private static String getConfigFileContent(String appPath) throws Exception { + validateConfigFile(appPath); + + InputStream inputStream = null; + try { + String encoding = detectEncoding(appPath); + if (encoding == null || encoding.trim().isEmpty()) { + encoding = "UTF-8"; + } + + DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); + builderFactory.setNamespaceAware(false); + builderFactory.setValidating(false); + DocumentBuilder builder = builderFactory.newDocumentBuilder(); + inputStream = new FileInputStream(appPath); + InputSource lInputSource = new InputSource(inputStream); + lInputSource.setEncoding(encoding); + Document document = builder.parse(lInputSource); + + TransformerFactory lTransFactory = TransformerFactory.newInstance(); + Transformer lTrans = lTransFactory.newTransformer(); + DOMSource lSource = new DOMSource(document); + StringWriter lStringWriter = new StringWriter(); + lTrans.transform(lSource, new StreamResult(lStringWriter)); + return lStringWriter.toString(); + } catch (Exception e) { + System.out.println("*** Config file should be in UTF-8 encoding ***"); + e.printStackTrace(); + System.exit(0); + } finally { + if (inputStream != null) { + try { + inputStream.close(); + } catch (IOException ioException) { + // ignore + } + } + } + return ""; + } + + /** + * Validates whether the file exists at the given location & has valid BOM + * format + * + * @param configFilePath + * @throws Exception + * @return The file object representing the configFilePath + */ + private static File validateConfigFile(String configFilePath) throws Exception { + + if (configFilePath == null || configFilePath.trim().isEmpty()) { + throw new Exception("Configuration File path is not provided."); + } + + File file = new File(configFilePath); + if (!file.exists()) { + throw new Exception("Configuration File does not exist at '" + file.getAbsolutePath() + "'"); + } + + if (!file.isFile()) { + throw new Exception("'" + file.getAbsolutePath() + "' is not a file."); + } + + // Length 3 is checked to make sure that enough bytes are available for + // BOM reading. + if (file.length() < 3) { + throw new Exception("'" + file.getAbsolutePath() + "' is not a valid configuration file."); + } + return file; + } + + /** + * Detect encoding format of file + * + * @param pConfigXmlPath + * File path whose encoding type is to be detected + * @return encoding format (eg: utf-8, utf-16) + */ + public static String detectEncoding(String pConfigXmlPath) { + FileInputStream lFis = null; + try { + lFis = new FileInputStream(pConfigXmlPath); + UniversalDetector lDetector = new UniversalDetector(null); + byte[] lBuff = new byte[512]; + int liread; + while ((liread = lFis.read(lBuff)) > 0 && !lDetector.isDone()) { + lDetector.handleData(lBuff, 0, liread); + } + lDetector.dataEnd(); + String lstrEncoding = lDetector.getDetectedCharset(); + lDetector.reset(); + return lstrEncoding; + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (lFis != null) { + try { + lFis.close(); + } catch (IOException e) { + // Igniore + } + } + } + return null; + } + + /** + * Terminate the created session and reset the initialized Server SDK library. + */ + public static void terminateWSClient() { + try { + FSHelperLibrary.logInfo("Terminating FSHelper Library"); + if (FSHelperLibrary.isTerminated() == false) { + System.out.println("FSHelperLibrary.isTerminated(): " + FSHelperLibrary.isTerminated()); + FSHelperLibrary.terminate(); + } + } catch (FSHelperException e) { + FSHelperLibrary.logError(e.getMessage(), e); + } + } + +} diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/src/com/seclore/fs/protect/example/main/SecloreMain.java b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/src/com/seclore/fs/protect/example/main/SecloreMain.java new file mode 100755 index 0000000..8de5492 --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/src/com/seclore/fs/protect/example/main/SecloreMain.java @@ -0,0 +1,371 @@ +package com.seclore.fs.protect.example.main; + +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; + +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + +import com.seclore.fs.helper.core.ProtectedFile; +import com.seclore.fs.helper.enums.ProtectionType; +import com.seclore.fs.helper.exception.FSHelperException; +import com.seclore.fs.helper.library.FSHelper; +import com.seclore.fs.helper.library.FSHelperLibrary; +import com.seclore.fs.protect.example.core.Config; +import com.seclore.fs.protect.example.core.FSEntity; +import com.seclore.fs.protect.example.core.InitializeWSClient; +import com.seclore.fs.protect.example.util.XMLUtil; + +public class SecloreMain { + + // FS Helper library is multi-tenant. Use unique tenant identifier for each + // tenant + private static String tenantID = "Tenant-1"; + + // This file contains information about the Application into which this code + // snippet is to be integrated. + private static final String appConfigXMLFilePath = "config/config.xml"; + + // This file contains info for creating session with Seclore Policy Server and + // initializing Server SDK library + private static final String tenantConfigXMLFilePath = "config/cabinet config.xml"; + + // Used to take user input + private static Scanner scanner = null; + + /** + *

+ * This block initializes the Server SDK library and creates a session with + * Seclore Policy Server + *

+ * + * @exception Code snippet won't run if any exception is thrown in this block. + */ + static { + try { + Config.initConfig("config/config.properties"); + InitializeWSClient.initializeHelperLibrary(appConfigXMLFilePath); + InitializeWSClient.initializeHelper(tenantID, "", tenantConfigXMLFilePath); + scanner = new Scanner(System.in); + } catch (Exception e) { + e.printStackTrace(); + System.exit(0); + } + } + + // Entry point to run this application + public static void main(String[] args) { + + try { + String outputFilePath = protectAndWrapFile(); + + if (outputFilePath != null && !outputFilePath.trim().isEmpty()) { + System.out.println("File '" + outputFilePath + "' is protected and wrapped successfully"); + } else { + throw new Exception("Unexpected error"); + } + + } catch (Exception exp) { + exp.printStackTrace(); + } finally { + if (scanner != null) { + scanner.close(); + } + + InitializeWSClient.terminateWSClient(); + } + } + + /** + * Protect and wrap a file using Seclore SDK + * + * @return the absolute file path of protected file + * @throws Exception + */ + public static String protectAndWrapFile() throws Exception { + System.out.println("Enter absolute path of the file to be protected and wrapped:"); + String filePath = scanner.nextLine(); + + // get the FSHelper object by specifying the tenantId. + // note: This tenant id should be same which was used during initialization of + // Seclore SDK + FSHelper tenantObj = FSHelperLibrary.getHelper(tenantID); + + // does basic validation checks to see if the file is supported by SDK and is + // not already protected + validateIfFileSupportsProtection(tenantObj, filePath); + + // this display file name goes in activity log + // for more details see javadoc of FSHelper.protectAndWrap() + String dispFileName = filePath; + // get XML structure to protect with hot folder + String protectionDetails = getProtectDetailsXML(); + // show details about protector + String protectorDetails = ""; + // activity comments to be shown + String actvityComments = "Protected by using FS Helper Library's protectAndWrap method"; + + // calling Seclore SDK's protectAndWrap api + ProtectedFile protectedWrappedFile = tenantObj.protectAndWrap(null, + filePath, + dispFileName, + ProtectionType.PROTECT, + protectionDetails, + protectorDetails, + actvityComments); + System.out.println("Protected File Id: " + protectedWrappedFile.getFileId()); + + return protectedWrappedFile.getFilePath(); + } + + /** + * Validates if the file supports Seclore protection + * + * @param tenantObj - FSHelper object created for the tenant. + * @param filePath - Absolute path of the file to be protected. + * @throws Exception + */ + private static void validateIfFileSupportsProtection(FSHelper tenantObj, String filePath) + throws FSHelperException, Exception { + // check if file is already Seclore protected + if (tenantObj.isProtectedFile(filePath) || tenantObj.isHTMLWrapped(filePath)) { + throw new Exception("File '" + filePath + "' is already protected"); + } + + // check if file extension is supported by Seclore FS Helper Library + if (tenantObj.isSupportedFile(filePath) == false && tenantObj.isBasicProtectionSupported(filePath) == false) { + String fileExt = filePath.substring(filePath.lastIndexOf(".") + 1); + // note: if file is not of standard format and does not support basic protection + // then throw error + throw new Exception("File with extention '" + fileExt + "' is not supported by Seclore FS Helper Library"); + } + + // check if file extension is supported for HTML wrapping by Seclore FS Helper + // Library + if (tenantObj.isHTMLWrapSupported(filePath) == false) { + // note: file is of standard format but not supported for HTML wrapping + throw new Exception("File '" + filePath + "' does not support HTML wrapping"); + } + } + + /** + * Forms the protection XML request string to be sent to PS. + * + * @return protection request XML structure + */ + private static String getProtectDetailsXML() throws Exception { + System.out.println("Enter owner mail id:"); + String ownerEmail = scanner.nextLine(); + + System.out.println("Enter recipient(s) mail id: [if multiple seperate by using comma ,]"); + String recipientsEmailCommaSeperated = scanner.nextLine(); + + System.out.println("Enter recipient(s) rights id: [if multiple seperate by using comma ,]"); + String rightsCommaSeparated = scanner.nextLine(); + // unlike the recipient's , you cannot create the owner + // i.e you cannot call createUser on owner emailId + // This is because the create user method needs a referrer-email-id and + // this user should already exist in the policy server. + FSEntity owner = searchUser(ownerEmail.trim()); + if (owner == null) { + throw new Exception("owner does not exist in Policy Server."); + } + + String[] emails = recipientsEmailCommaSeperated.split(","); + String[] rights = rightsCommaSeparated.split(","); + + List entities = new ArrayList(); + for (int i = 0; i < emails.length; i++) { + // Searching the user in the Policy Server's repositories based on email id. + // if not found creating the recipient user in the Policy Server's repository. + // note: owner should already exist in the Policy Server + // else the protect request will fail. + FSEntity recipient = searchAndCreateUser(emails[i].trim(), ownerEmail); + // user does not exist + if (recipient == null) { // creation of the user failed , abort the request + System.err.println("*** No entity found for email id '" + emails[i] + "' "); + return null; + } + entities.add(recipient); + } + + if (rights.length != entities.size()) { + throw new Exception("Number of recipients and number of rights do not match."); + } + + StringBuilder fileAccessRightMappings = new StringBuilder(); + int i = 0; + for (FSEntity entity : entities) { + String fileAccessRightMapping = "" + + "1" + + "" + + "" + + "" + XMLUtil.escapeForXML(entity.getId()) + "" + + "" + entity.getRepCode() + "" + + "" + entity.getType() + "" + + "" + + "" + rights[i] + "" + + "" + Config.getProperty("offline", "0") + "" + + "" + Config.getProperty("redistribute", "0") + "" + + "" + Config.getProperty("lock.to.first.machine", "0") + + "" + + "" + Config.getProperty("no.of.days.since.protection", "-1") + + "" + + "" + Config.getProperty("no.of.days.since.first.access", "-1") + + "" + + "" + + ""; + fileAccessRightMappings.append(fileAccessRightMapping); + i++; + } + + String xml = "" + + "1" + + "" + + fileAccessRightMappings.toString() + + "" + + "" + + "" + + "" + owner.getId() + "" + + "" + owner.getRepCode() + "" + + "1" + + "" + + "" + + ""; + return xml; + } + + /** + * A helper method to get user details if exists + * or create a new user in PS repository. + * For more details see searchUser & createUser. + * + */ + private static FSEntity searchAndCreateUser(String emailId, String referrerEmailId) + throws FSHelperException, Exception { + FSEntity user = searchUser(emailId); + // user not found in any repository + if (user != null) { + return user; + } + // note: referrer should already exist in policy server before calling create + // user + return createUser(emailId, referrerEmailId); + } + + /** + * searches a user in the policy server with given email id. + * + * @param emailId - emailId of the user to be created in PS + * @return - FSEntity representing the repository information in which the user + * exists. + * In case the user does not exist returns null + * + * @throws FSHelperException + * - In case some error occurs while searching the + * user + * + */ + private static FSEntity searchUser(String emailId) throws FSHelperException, Exception { + FSHelper tenantObj = FSHelperLibrary.getHelper(tenantID); + // XML request structure to search a user in Policy Server , if does not exist + // creating a new user + String searchUserXML = "" + + "" + + "2" + + "" + + "" + + "" + XMLUtil.escapeForXML(emailId) + "" + + "" + + ""; + // sending search user request to Policy Server + String responseXML = tenantObj.sendRequest(null, 74, searchUserXML); + Node rootNode = XMLUtil.getRootNode(responseXML); + Node requestStatusNode = XMLUtil.parseNode("request-status", rootNode); + String returnValue = XMLUtil.parseString("return-value", requestStatusNode); + if ("1".equals(returnValue)) { + NodeList nodeList = XMLUtil.parseNodeList("entities/entity", rootNode); + if (nodeList != null && nodeList.getLength() > 0) { + // Get first entity + Node node = nodeList.item(0); + String id = XMLUtil.parseString("id", node); + int repCode = XMLUtil.parseInteger("rep-code", node); + int type = XMLUtil.parseInteger("type", node); + return new FSEntity(id, repCode, type); + } + } + // if no such user found in Policy Server then it will return this error + // '-220372 :- No Entities Found.' + // checking if there is some processing other than error code -220372 then + // throwing the exception + if ("-220372".equals(returnValue) == false) { + String errorMessage = XMLUtil.parseString("error-message", requestStatusNode); + String displayMessage = XMLUtil.parseString("display-message", requestStatusNode); + if (displayMessage == null || displayMessage.trim().isEmpty()) { + displayMessage = errorMessage; + } + throw new Exception(displayMessage + "(" + returnValue + ")"); + } + + return null; + } + + /** + * to create a new user in policy server with given emailId. + * Before calling this method check if the user with given emailId + * already exists in policy server using searchUser method. + * + * @param emailId + * emailId of the new user to be created in policy server + * @param referrerEmailId + * emailId of the person who is referring this person. + * This user should already exist in the policy server. + * + * @throws Exception if user already exists or + * no user exists in policy server with given referrerEmailId + */ + private static FSEntity createUser(String emailId, String referrerEmailId) throws Exception { + FSHelper tenantObj = FSHelperLibrary.getHelper(tenantID); + // request structure for creating a user + String createUserXML = "" + + "" + + "2" + + "" + + "" + + "" + + "" + XMLUtil.escapeForXML(emailId) + "" + + "User created by MFP" + + "" + referrerEmailId + "" + + "" + + "" + + ""; + // sending create user request to Policy Server + String responseXML = tenantObj.sendRequest(null, 109, createUserXML); + Node rootNode = XMLUtil.getRootNode(responseXML); + Node requestStatusNode = XMLUtil.parseNode("request-status", rootNode); + String returnValue = XMLUtil.parseString("return-value", requestStatusNode); + // if return-value is not 1 this means user creation failed , hence throwing the + // error + if ("1".equals(returnValue) == false) { + String errorMessage = XMLUtil.parseString("error-message", requestStatusNode); + String displayMessage = XMLUtil.parseString("display-message", requestStatusNode); + if (displayMessage == null || displayMessage.trim().isEmpty()) { + displayMessage = errorMessage; + } + // user cannot be created in Policy Server , hence throwing exception + System.out.println("user can't be created " + displayMessage); + throw new Exception(displayMessage + "(" + returnValue + ")"); + } + // user already exist + // -220394 :- User with email id ''{0}'' already exist. + // -220518 :- User with email id ''{0}'' already exist in a repository which is + // not visible. + Node node = XMLUtil.parseNode("im-user", rootNode); + String id = XMLUtil.parseString("id", node); + int repCode = XMLUtil.parseInteger("rep-code", node); + int type = 1; + return new FSEntity(id, repCode, type); + } + +} diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/src/com/seclore/fs/protect/example/util/XMLUtil.java b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/src/com/seclore/fs/protect/example/util/XMLUtil.java new file mode 100755 index 0000000..14657c5 --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/src/com/seclore/fs/protect/example/util/XMLUtil.java @@ -0,0 +1,164 @@ +package com.seclore.fs.protect.example.util; + +import java.io.IOException; +import java.io.InputStream; +import java.io.StringReader; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.xpath.XPath; +import javax.xml.xpath.XPathConstants; +import javax.xml.xpath.XPathExpressionException; +import javax.xml.xpath.XPathFactory; + +import org.w3c.dom.Document; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.xml.sax.InputSource; + +public class XMLUtil +{ + private static XPath xpath = null; + static + { + xpath = XPathFactory.newInstance().newXPath(); + } + + + /** + * @param xmlString + * @return + */ + public static Document parseDocument(String xmlString) + { + InputStream inputStream = null; + try + { + DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder builder = builderFactory.newDocumentBuilder(); + Document xmlDocument = builder.parse( new InputSource(new StringReader(xmlString)) ); + return xmlDocument; + } + catch (Exception e) + { + e.printStackTrace(); + //LoggerUtil.logError("Error while parsing - "+xmlString, e); + } + finally + { + if(inputStream != null) + { + try{ + inputStream.close(); + } + catch(IOException ioException) + { + //ignore + } + } + } + return null; + } + + /** + * @param document + * @return + */ + public static Node getRootNode(Document document) + { + NodeList nodeList = document.getChildNodes(); + return nodeList.item(0); + } + + /** + * @param XML String + * @return + */ + public static Node getRootNode(String xmlString) + { + Document document = parseDocument(xmlString); + return getRootNode(document); + } + + /** + * @param xmlTagName + * @param parentNode + * @return + */ + public static Node parseNode(String xmlTagName, Node parentNode) + { + try + { + Node node = (Node) xpath.evaluate(xmlTagName, parentNode, XPathConstants.NODE); + return node; + } + catch (XPathExpressionException e) + { + e.printStackTrace(); + } + return null; + } + + /** + * @param xmlTagName + * @param parentNode + * @return + */ + public static NodeList parseNodeList(String xmlTagName, Node parentNode) + { + try + { + NodeList nodeList = (NodeList) xpath.evaluate(xmlTagName, parentNode, XPathConstants.NODESET); + return nodeList; + } + catch (XPathExpressionException e) + { + e.printStackTrace(); + } + return null; + } + + /** + * @param xmlTagName + * @param parentNode + * @return + */ + public static String parseString(String xmlTagName, Node parentNode) + { + try + { + String requestId = (String) xpath.evaluate(xmlTagName+"/text()", parentNode, XPathConstants.STRING); + return requestId; + } + catch (XPathExpressionException e) + { + e.printStackTrace(); + } + return null; + } + + public static Integer parseInteger(String xmlTagName, Node parentNode) + { + try + { + Number li = (Number) xpath.evaluate(xmlTagName, parentNode, XPathConstants.NUMBER); + return li.intValue(); + } + catch (XPathExpressionException e) + { + e.printStackTrace(); + } + return null; + } + + public static String escapeForXML(String strXML) + { + if(strXML == null || strXML.trim().isEmpty()) + { + return strXML; + } + + return strXML.replace("&", "&").replace("<", "<").replace(">", ">").replace("\"", """).replace("'", "'"); + } +} + diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Start Here - Protect & Wrap with Independent Rights - Seclore Cloud Policy Server.pptx b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Start Here - Protect & Wrap with Independent Rights - Seclore Cloud Policy Server.pptx new file mode 100755 index 0000000..5395fde Binary files /dev/null and b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/Start Here - Protect & Wrap with Independent Rights - Seclore Cloud Policy Server.pptx differ diff --git a/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/scripts/build.sh b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/scripts/build.sh new file mode 100755 index 0000000..f977094 --- /dev/null +++ b/examples/Protect & Wrap with Independent Rights/Using Seclore PoC Policy Server/scripts/build.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +set -e + +# Set the project root directory +PROJECT_ROOT=$(dirname "$0")/.. + +# Clean all bin folders +rm -rf "$PROJECT_ROOT/Sample Code/bin/Protect With Independent Rights & Wrap/config"/* +rm -rf "$PROJECT_ROOT/Sample Code/bin/Protect With Independent Rights & Wrap/lib"/* + +# Clear the src/bin dir containing compiled class files +rm -rf "$PROJECT_ROOT/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/bin"/* + +#find and compile all java files +find "$PROJECT_ROOT/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/src" -name "*.java" -exec javac -d "$PROJECT_ROOT/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/bin" -cp "$PROJECT_ROOT/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib/*" {} + + +# Package the compiled classes into a JAR file +jar cvf "$PROJECT_ROOT/Sample Code/bin/Protect With Independent Rights & Wrap/lib/sample-app.jar" -C "$PROJECT_ROOT/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/bin" . + +# Copy all libs and config files to bin +cp -r "$PROJECT_ROOT/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/lib"/* "$PROJECT_ROOT/Sample Code/bin/Protect With Independent Rights & Wrap/lib" +cp -r "$PROJECT_ROOT/Sample Code/src/Protect With Independent Rights & Wrap Sample Code/config"/* "$PROJECT_ROOT/Sample Code/bin/Protect With Independent Rights & Wrap/config" \ No newline at end of file diff --git a/examples/Sample App/DMS Sample App/bin/Readme.txt b/examples/Sample App/DMS Sample App/bin/Readme.txt new file mode 100755 index 0000000..49b2f12 --- /dev/null +++ b/examples/Sample App/DMS Sample App/bin/Readme.txt @@ -0,0 +1,7 @@ +=============================================== +Seclore SampleApp 3.0.0.0 +=============================================== + +Please follow the below steps to configure the Seclore SampleApp: + +1) Refer the "1- Installation and Setup.pdf" file in '/doc' folder and follow the steps in it to configure Seclore SampleApp. \ No newline at end of file diff --git a/examples/Sample App/DMS Sample App/bin/Web App/META-INF/MANIFEST.MF b/examples/Sample App/DMS Sample App/bin/Web App/META-INF/MANIFEST.MF new file mode 100755 index 0000000..254272e --- /dev/null +++ b/examples/Sample App/DMS Sample App/bin/Web App/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Class-Path: + diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/ara/webservice/ARAClassificationDetails.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/ara/webservice/ARAClassificationDetails.class new file mode 100644 index 0000000..21d34d1 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/ara/webservice/ARAClassificationDetails.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/ara/webservice/ARAEnvironmentDetails.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/ara/webservice/ARAEnvironmentDetails.class new file mode 100644 index 0000000..cc41461 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/ara/webservice/ARAEnvironmentDetails.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/ara/webservice/ARAFileDetails.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/ara/webservice/ARAFileDetails.class new file mode 100644 index 0000000..06abcac Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/ara/webservice/ARAFileDetails.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/ara/webservice/ARAHotFolderDetails.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/ara/webservice/ARAHotFolderDetails.class new file mode 100644 index 0000000..b6a1ed2 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/ara/webservice/ARAHotFolderDetails.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/ara/webservice/ARAOwnerDetails.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/ara/webservice/ARAOwnerDetails.class new file mode 100644 index 0000000..fe31503 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/ara/webservice/ARAOwnerDetails.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/ara/webservice/ARARequestHandler.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/ara/webservice/ARARequestHandler.class new file mode 100644 index 0000000..31e01ea Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/ara/webservice/ARARequestHandler.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/ara/webservice/ARAUserDetails.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/ara/webservice/ARAUserDetails.class new file mode 100644 index 0000000..06232c5 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/ara/webservice/ARAUserDetails.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/ara/webservice/XMLHelper.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/ara/webservice/XMLHelper.class new file mode 100644 index 0000000..ea2122b Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/ara/webservice/XMLHelper.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/config/SampleAppConfig.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/config/SampleAppConfig.class new file mode 100644 index 0000000..004f71f Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/config/SampleAppConfig.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/config/SecloreWSClientConfig.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/config/SecloreWSClientConfig.class new file mode 100644 index 0000000..af1659e Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/config/SecloreWSClientConfig.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/constant/Constants.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/constant/Constants.class new file mode 100644 index 0000000..a4065b5 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/constant/Constants.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/AppData.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/AppData.class new file mode 100644 index 0000000..33b4666 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/AppData.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/AppFile.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/AppFile.class new file mode 100644 index 0000000..1f47e9e Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/AppFile.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/AppFolder.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/AppFolder.class new file mode 100644 index 0000000..91495ed Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/AppFolder.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/Classification.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/Classification.class new file mode 100644 index 0000000..a28ecb5 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/Classification.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/ClassificationData.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/ClassificationData.class new file mode 100644 index 0000000..6d33aab Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/ClassificationData.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/FileActivityLog.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/FileActivityLog.class new file mode 100644 index 0000000..9e73599 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/FileActivityLog.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/FileHtmlWrapInfo.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/FileHtmlWrapInfo.class new file mode 100644 index 0000000..728588f Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/FileHtmlWrapInfo.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/FileMapAdapter$AdaptedFileMap.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/FileMapAdapter$AdaptedFileMap.class new file mode 100644 index 0000000..bdcf4ab Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/FileMapAdapter$AdaptedFileMap.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/FileMapAdapter.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/FileMapAdapter.class new file mode 100644 index 0000000..60588fe Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/FileMapAdapter.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/FileOpenTimeLog.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/FileOpenTimeLog.class new file mode 100644 index 0000000..89fc9ce Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/FileOpenTimeLog.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/FolderMapAdapter$AdaptedFolderMap.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/FolderMapAdapter$AdaptedFolderMap.class new file mode 100644 index 0000000..52d8ed2 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/FolderMapAdapter$AdaptedFolderMap.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/FolderMapAdapter.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/FolderMapAdapter.class new file mode 100644 index 0000000..4d47255 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/FolderMapAdapter.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/IPGeoDetails.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/IPGeoDetails.class new file mode 100644 index 0000000..c28e5cf Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/IPGeoDetails.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/Owner.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/Owner.class new file mode 100644 index 0000000..4f5048b Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/Owner.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/UserRight.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/UserRight.class new file mode 100644 index 0000000..f71e93c Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/UserRight.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/master/AppRights.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/master/AppRights.class new file mode 100644 index 0000000..601cb66 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/master/AppRights.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/master/AppUsers.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/master/AppUsers.class new file mode 100644 index 0000000..377c6e9 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/master/AppUsers.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/master/Rights.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/master/Rights.class new file mode 100644 index 0000000..10c9102 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/master/Rights.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/master/RightsMapAdapter$AdaptedRights.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/master/RightsMapAdapter$AdaptedRights.class new file mode 100644 index 0000000..b6d9a9f Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/master/RightsMapAdapter$AdaptedRights.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/master/RightsMapAdapter.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/master/RightsMapAdapter.class new file mode 100644 index 0000000..1347652 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/master/RightsMapAdapter.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/master/User.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/master/User.class new file mode 100644 index 0000000..75a5466 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/master/User.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/master/UserMapAdapter$AdaptedUser.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/master/UserMapAdapter$AdaptedUser.class new file mode 100644 index 0000000..f2622ca Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/master/UserMapAdapter$AdaptedUser.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/master/UserMapAdapter.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/master/UserMapAdapter.class new file mode 100644 index 0000000..46593c2 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/core/master/UserMapAdapter.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/filter/AuthorizationFilter.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/filter/AuthorizationFilter.class new file mode 100644 index 0000000..3a5b99d Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/filter/AuthorizationFilter.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/home/servlet/HomeServlet.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/home/servlet/HomeServlet.class new file mode 100644 index 0000000..07abfa0 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/home/servlet/HomeServlet.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/listener/ServletContextListenerImpl.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/listener/ServletContextListenerImpl.class new file mode 100644 index 0000000..44095dd Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/listener/ServletContextListenerImpl.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/log/ChangeLoggerLevelServlet.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/log/ChangeLoggerLevelServlet.class new file mode 100644 index 0000000..272da36 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/log/ChangeLoggerLevelServlet.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/log/GetAccessOnlineLogServlet.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/log/GetAccessOnlineLogServlet.class new file mode 100644 index 0000000..f90de58 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/log/GetAccessOnlineLogServlet.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/log/GetLogServlet.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/log/GetLogServlet.class new file mode 100644 index 0000000..79e28fa Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/log/GetLogServlet.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/security/service/SecurityService.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/security/service/SecurityService.class new file mode 100644 index 0000000..1369433 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/security/service/SecurityService.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/file/CheckInFileServlet.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/file/CheckInFileServlet.class new file mode 100644 index 0000000..66a7d52 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/file/CheckInFileServlet.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/file/DeleteFileServlet.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/file/DeleteFileServlet.class new file mode 100644 index 0000000..4bfc0ca Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/file/DeleteFileServlet.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/file/DownloadFileServlet.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/file/DownloadFileServlet.class new file mode 100644 index 0000000..498e4c7 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/file/DownloadFileServlet.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/file/FileListServlet.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/file/FileListServlet.class new file mode 100644 index 0000000..7b0901e Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/file/FileListServlet.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/file/GetMapsForActivityAction.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/file/GetMapsForActivityAction.class new file mode 100644 index 0000000..a1ffb0c Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/file/GetMapsForActivityAction.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/file/PreAddFileServlet.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/file/PreAddFileServlet.class new file mode 100644 index 0000000..524b88d Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/file/PreAddFileServlet.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/file/PreEditFileServlet.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/file/PreEditFileServlet.class new file mode 100644 index 0000000..5292a6e Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/file/PreEditFileServlet.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/file/SaveFileServlet$1.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/file/SaveFileServlet$1.class new file mode 100644 index 0000000..8c9f97d Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/file/SaveFileServlet$1.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/file/SaveFileServlet.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/file/SaveFileServlet.class new file mode 100644 index 0000000..9e21d27 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/file/SaveFileServlet.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/file/ViewFileLogsServlet.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/file/ViewFileLogsServlet.class new file mode 100644 index 0000000..01da6d5 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/file/ViewFileLogsServlet.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/folder/DeleteFolderServlet.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/folder/DeleteFolderServlet.class new file mode 100644 index 0000000..998f471 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/folder/DeleteFolderServlet.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/folder/FolderListServlet.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/folder/FolderListServlet.class new file mode 100644 index 0000000..675bd95 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/folder/FolderListServlet.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/folder/PreCreateFolderServlet.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/folder/PreCreateFolderServlet.class new file mode 100644 index 0000000..907978a Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/folder/PreCreateFolderServlet.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/folder/PreEditFolderServlet.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/folder/PreEditFolderServlet.class new file mode 100644 index 0000000..9519509 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/folder/PreEditFolderServlet.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/folder/SaveFolderServlet.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/folder/SaveFolderServlet.class new file mode 100644 index 0000000..4c5d2dd Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/servlet/folder/SaveFolderServlet.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/discovery/core/Discovery.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/discovery/core/Discovery.class new file mode 100644 index 0000000..70e90e9 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/discovery/core/Discovery.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/discovery/core/DiscoveryVersion.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/discovery/core/DiscoveryVersion.class new file mode 100644 index 0000000..137a47b Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/discovery/core/DiscoveryVersion.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/discovery/core/ProofKey.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/discovery/core/ProofKey.class new file mode 100644 index 0000000..3b6757e Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/discovery/core/ProofKey.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/discovery/core/ProofKeyWrapper.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/discovery/core/ProofKeyWrapper.class new file mode 100644 index 0000000..ff41389 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/discovery/core/ProofKeyWrapper.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/discovery/core/ProofKeys.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/discovery/core/ProofKeys.class new file mode 100644 index 0000000..87b3165 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/discovery/core/ProofKeys.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/discovery/service/DiscoveryService.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/discovery/service/DiscoveryService.class new file mode 100644 index 0000000..fa5505e Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/discovery/service/DiscoveryService.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/integration/core/CheckFileResponse.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/integration/core/CheckFileResponse.class new file mode 100644 index 0000000..a9ac493 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/integration/core/CheckFileResponse.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/integration/core/CloseEventRequest.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/integration/core/CloseEventRequest.class new file mode 100644 index 0000000..e60fb5a Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/integration/core/CloseEventRequest.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/integration/core/OpenEventRequest.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/integration/core/OpenEventRequest.class new file mode 100644 index 0000000..df9aa76 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/integration/core/OpenEventRequest.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/integration/core/OpenRequestDetails.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/integration/core/OpenRequestDetails.class new file mode 100644 index 0000000..140da15 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/integration/core/OpenRequestDetails.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/integration/core/Options.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/integration/core/Options.class new file mode 100644 index 0000000..15e9b4b Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/integration/core/Options.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/integration/core/PreFlightResponse.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/integration/core/PreFlightResponse.class new file mode 100644 index 0000000..9b65af3 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/integration/core/PreFlightResponse.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/integration/core/RenewAccessTokenResponse.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/integration/core/RenewAccessTokenResponse.class new file mode 100644 index 0000000..6ab0613 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/integration/core/RenewAccessTokenResponse.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/integration/core/SessionContext.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/integration/core/SessionContext.class new file mode 100644 index 0000000..4586916 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/integration/core/SessionContext.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/integration/core/SessionState.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/integration/core/SessionState.class new file mode 100644 index 0000000..5438e64 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/integration/core/SessionState.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/integration/repository/SessionRepository.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/integration/repository/SessionRepository.class new file mode 100644 index 0000000..8f2f4bb Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/integration/repository/SessionRepository.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/integration/service/FileOpenService.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/integration/service/FileOpenService.class new file mode 100644 index 0000000..0d71c69 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/integration/service/FileOpenService.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/integration/service/IntegrationAPIService.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/integration/service/IntegrationAPIService.class new file mode 100644 index 0000000..92d8553 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/integration/service/IntegrationAPIService.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/integration/service/PreflightService.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/integration/service/PreflightService.class new file mode 100644 index 0000000..ea9b415 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/integration/service/PreflightService.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/integration/service/RestService.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/integration/service/RestService.class new file mode 100644 index 0000000..3b89af5 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/integration/service/RestService.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/servlet/RenewAccessTokenController.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/servlet/RenewAccessTokenController.class new file mode 100644 index 0000000..c57660b Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/servlet/RenewAccessTokenController.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/servlet/SecloreOnlineAPIEndpoints.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/servlet/SecloreOnlineAPIEndpoints.class new file mode 100644 index 0000000..11b89d2 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/so/servlet/SecloreOnlineAPIEndpoints.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/user/servlet/AddAppUserServlet.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/user/servlet/AddAppUserServlet.class new file mode 100644 index 0000000..567d451 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/user/servlet/AddAppUserServlet.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/user/servlet/AppUserServlet.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/user/servlet/AppUserServlet.class new file mode 100644 index 0000000..9027b5e Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/user/servlet/AppUserServlet.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/user/servlet/DeleteAppUserServlet.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/user/servlet/DeleteAppUserServlet.class new file mode 100644 index 0000000..1bb0f19 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/user/servlet/DeleteAppUserServlet.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/user/servlet/SearchUserServlet.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/user/servlet/SearchUserServlet.class new file mode 100644 index 0000000..cd2f86f Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/user/servlet/SearchUserServlet.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/user/servlet/UpdateAppUserServlet.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/user/servlet/UpdateAppUserServlet.class new file mode 100644 index 0000000..e953666 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/user/servlet/UpdateAppUserServlet.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/util/CommonUtil.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/util/CommonUtil.class new file mode 100644 index 0000000..84da2b3 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/util/CommonUtil.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/util/GeoLocationUtil.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/util/GeoLocationUtil.class new file mode 100644 index 0000000..ee2fb6f Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/util/GeoLocationUtil.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/util/Global.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/util/Global.class new file mode 100644 index 0000000..7519887 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/util/Global.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/util/LoggerUtil.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/util/LoggerUtil.class new file mode 100644 index 0000000..4dd9955 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/util/LoggerUtil.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/util/ParserUtil.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/util/ParserUtil.class new file mode 100644 index 0000000..c7b80b0 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/util/ParserUtil.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/util/PortalUtil.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/util/PortalUtil.class new file mode 100644 index 0000000..6d5b15d Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/util/PortalUtil.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/util/SecloreProtectUtil.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/util/SecloreProtectUtil.class new file mode 100644 index 0000000..bae8063 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/util/SecloreProtectUtil.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/util/xml/XMLDBService.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/util/xml/XMLDBService.class new file mode 100644 index 0000000..f09d506 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/util/xml/XMLDBService.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/util/xml/XMLDataUtil.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/util/xml/XMLDataUtil.class new file mode 100644 index 0000000..7771621 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/util/xml/XMLDataUtil.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/version/Version.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/version/Version.class new file mode 100644 index 0000000..339176a Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/dms/version/Version.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/exceptions/AppFileNotFoundException.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/exceptions/AppFileNotFoundException.class new file mode 100644 index 0000000..d71b09e Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/exceptions/AppFileNotFoundException.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/exceptions/AppFolderNotFoundException.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/exceptions/AppFolderNotFoundException.class new file mode 100644 index 0000000..1605b80 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/exceptions/AppFolderNotFoundException.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/exceptions/DMSSampleException.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/exceptions/DMSSampleException.class new file mode 100644 index 0000000..d089e3f Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/exceptions/DMSSampleException.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/exceptions/FileDetailsNotFoundException.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/exceptions/FileDetailsNotFoundException.class new file mode 100644 index 0000000..823b38d Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/exceptions/FileDetailsNotFoundException.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/ps/db/DBConnection.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/ps/db/DBConnection.class new file mode 100644 index 0000000..050d5d4 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/ps/db/DBConnection.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/webconnect/servlet/OpenFileServlet.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/webconnect/servlet/OpenFileServlet.class new file mode 100644 index 0000000..b14455e Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/webconnect/servlet/OpenFileServlet.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/webconnect/servlet/PostChangeUserServlet.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/webconnect/servlet/PostChangeUserServlet.class new file mode 100644 index 0000000..eda349c Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/webconnect/servlet/PostChangeUserServlet.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/webconnect/servlet/PreChangeUserServlet.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/webconnect/servlet/PreChangeUserServlet.class new file mode 100644 index 0000000..7cb88f6 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/webconnect/servlet/PreChangeUserServlet.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/webconnect/servlet/ViewFileOnlineServlet.class b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/webconnect/servlet/ViewFileOnlineServlet.class new file mode 100644 index 0000000..013399e Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/com/seclore/sample/webconnect/servlet/ViewFileOnlineServlet.class differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/log4j.properties b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/log4j.properties new file mode 100755 index 0000000..172074e --- /dev/null +++ b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/classes/log4j.properties @@ -0,0 +1,21 @@ +log4j.logger.SampleAppLogger=debug, SampleAppLogger +log4j.appender.SampleAppLogger=org.apache.log4j.DailyRollingFileAppender +log4j.appender.SampleAppLogger.File=logs/SecloreSampleApp.log +log4j.appender.SampleAppLogger.DatePattern='_'yyyy-MMM'.log' +log4j.appender.SampleAppLogger.layout=org.apache.log4j.PatternLayout +log4j.appender.SampleAppLogger.layout.ConversionPattern=%d{MMM dd, yyyy HH:mm:ss.SSS} %-5p: %m%n + + +log4j.logger.AccessOnlineLogger=debug, AccessOnlineLogger +log4j.appender.AccessOnlineLogger=org.apache.log4j.DailyRollingFileAppender +log4j.appender.AccessOnlineLogger.File=data/Access Online/AccessOnline.log +log4j.appender.AccessOnlineLogger.DatePattern='_'yyyy-MMM'.log' +log4j.appender.AccessOnlineLogger.layout=org.apache.log4j.PatternLayout +log4j.appender.AccessOnlineLogger.layout.ConversionPattern=%d{MMM dd, yyyy HH:mm:ss.SSS} %-5p: %m%n + +# Root logger option +#log4j.rootLogger=INFO, stdout +#log4j.appender.stdout=org.apache.log4j.ConsoleAppender +#log4j.appender.stdout.Target=System.out +#log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +#log4j.appender.stdout.layout.ConversionPattern=%d{dd-MM-yyyy HH:mm:ss} %-5p: %m%n diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/activation-1.1.1.jar b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/activation-1.1.1.jar new file mode 100755 index 0000000..1b703ab Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/activation-1.1.1.jar differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/bc-fips-1.0.0.jar b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/bc-fips-1.0.0.jar new file mode 100755 index 0000000..321e563 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/bc-fips-1.0.0.jar differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/bc-fips-1.0.2.4.jar b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/bc-fips-1.0.2.4.jar new file mode 100644 index 0000000..a38f9d0 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/bc-fips-1.0.2.4.jar differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/bcprov-jdk15on-152.jar b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/bcprov-jdk15on-152.jar new file mode 100755 index 0000000..6c54dd9 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/bcprov-jdk15on-152.jar differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/commons-codec-1.6.jar b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/commons-codec-1.6.jar new file mode 100644 index 0000000..ee1bc49 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/commons-codec-1.6.jar differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/disruptor-3.3.7.jar b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/disruptor-3.3.7.jar new file mode 100644 index 0000000..1777a37 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/disruptor-3.3.7.jar differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/fs-smaillibrary-1.2.7.0.jar b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/fs-smaillibrary-1.2.7.0.jar new file mode 100644 index 0000000..c01ec4a Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/fs-smaillibrary-1.2.7.0.jar differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/fs-smaillibrary.jar b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/fs-smaillibrary.jar new file mode 100755 index 0000000..aa95e22 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/fs-smaillibrary.jar differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/fs-ws-client-4.4.18.0.jar b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/fs-ws-client-4.4.18.0.jar new file mode 100644 index 0000000..d0a949c Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/fs-ws-client-4.4.18.0.jar differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/fs-ws-client.jar b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/fs-ws-client.jar new file mode 100755 index 0000000..c9dea16 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/fs-ws-client.jar differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/gson-2.2.4.jar b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/gson-2.2.4.jar new file mode 100755 index 0000000..9478253 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/gson-2.2.4.jar differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/httpclient-4.5.13.jar b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/httpclient-4.5.13.jar new file mode 100755 index 0000000..218ee25 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/httpclient-4.5.13.jar differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/httpcore-4.4.14.jar b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/httpcore-4.4.14.jar new file mode 100755 index 0000000..349db18 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/httpcore-4.4.14.jar differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/jackson-annotations-2.12.3.jar b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/jackson-annotations-2.12.3.jar new file mode 100755 index 0000000..fd71f66 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/jackson-annotations-2.12.3.jar differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/jackson-core-2.12.3.jar b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/jackson-core-2.12.3.jar new file mode 100755 index 0000000..3062f8f Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/jackson-core-2.12.3.jar differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/jackson-databind-2.12.3.jar b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/jackson-databind-2.12.3.jar new file mode 100755 index 0000000..47efedf Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/jackson-databind-2.12.3.jar differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/javassist-3.12.1.GA.jar b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/javassist-3.12.1.GA.jar new file mode 100755 index 0000000..aba1783 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/javassist-3.12.1.GA.jar differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/javax.servlet.jsp.jstl-1.2.1.jar b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/javax.servlet.jsp.jstl-1.2.1.jar new file mode 100755 index 0000000..a86a365 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/javax.servlet.jsp.jstl-1.2.1.jar differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/javax.servlet.jsp.jstl-api-1.2.1.jar b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/javax.servlet.jsp.jstl-api-1.2.1.jar new file mode 100755 index 0000000..4b3b433 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/javax.servlet.jsp.jstl-api-1.2.1.jar differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/jaxb-api-2.3.0.jar b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/jaxb-api-2.3.0.jar new file mode 100755 index 0000000..0817c08 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/jaxb-api-2.3.0.jar differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/jaxb-core-2.3.0.jar b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/jaxb-core-2.3.0.jar new file mode 100755 index 0000000..864ba31 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/jaxb-core-2.3.0.jar differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/jaxb-impl-2.3.0.jar b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/jaxb-impl-2.3.0.jar new file mode 100755 index 0000000..02f50ab Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/jaxb-impl-2.3.0.jar differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/jaxrs-api-3.0.9.Final.jar b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/jaxrs-api-3.0.9.Final.jar new file mode 100755 index 0000000..de09a61 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/jaxrs-api-3.0.9.Final.jar differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/jcip-annotations-1.0.jar b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/jcip-annotations-1.0.jar new file mode 100755 index 0000000..06e9066 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/jcip-annotations-1.0.jar differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/joda-time-2.3.jar b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/joda-time-2.3.jar new file mode 100755 index 0000000..9dce4f9 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/joda-time-2.3.jar differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/jsr250-api-1.0.jar b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/jsr250-api-1.0.jar new file mode 100755 index 0000000..c1f29bf Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/jsr250-api-1.0.jar differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/juniversalchardet-1.0.3.jar b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/juniversalchardet-1.0.3.jar new file mode 100755 index 0000000..1af703f Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/juniversalchardet-1.0.3.jar differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/log4j-1.2.14.jar b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/log4j-1.2.14.jar new file mode 100755 index 0000000..6251307 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/log4j-1.2.14.jar differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/log4j-api-2.10.0.jar b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/log4j-api-2.10.0.jar new file mode 100755 index 0000000..9603b1b Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/log4j-api-2.10.0.jar differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/log4j-api-2.17.1.jar b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/log4j-api-2.17.1.jar new file mode 100644 index 0000000..1aae243 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/log4j-api-2.17.1.jar differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/log4j-core-2.10.0.jar b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/log4j-core-2.10.0.jar new file mode 100755 index 0000000..1be9e67 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/log4j-core-2.10.0.jar differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/log4j-core-2.17.1.jar b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/log4j-core-2.17.1.jar new file mode 100644 index 0000000..4682527 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/log4j-core-2.17.1.jar differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/nimbus-jose-jwt-9.1.3.jar b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/nimbus-jose-jwt-9.1.3.jar new file mode 100755 index 0000000..7b7563f Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/nimbus-jose-jwt-9.1.3.jar differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/resteasy-jaxrs-3.0.9.Final.jar b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/resteasy-jaxrs-3.0.9.Final.jar new file mode 100755 index 0000000..a7e2689 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/resteasy-jaxrs-3.0.9.Final.jar differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/scannotation-1.0.2.jar b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/scannotation-1.0.2.jar new file mode 100755 index 0000000..599753a Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/scannotation-1.0.2.jar differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/seclore-io-1.0.0.0.jar b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/seclore-io-1.0.0.0.jar new file mode 100644 index 0000000..365237b Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/seclore-io-1.0.0.0.jar differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/xercesImpl-2.12.2.jar b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/xercesImpl-2.12.2.jar new file mode 100644 index 0000000..ccbae9f Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/xercesImpl-2.12.2.jar differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/xercesImpl-X.jar b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/xercesImpl-X.jar new file mode 100755 index 0000000..38fca83 Binary files /dev/null and b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/lib/xercesImpl-X.jar differ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/web.xml b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/web.xml new file mode 100755 index 0000000..40d2bef --- /dev/null +++ b/examples/Sample App/DMS Sample App/bin/Web App/WEB-INF/web.xml @@ -0,0 +1,82 @@ + + + SecloreSampleApp + + + home + + + + + resteasy.use.builtin.providers + true + + + + + ara-resteasy-servlet + org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher + + resteasy.servlet.mapping.prefix + /services + + + resteasy.resources + com.seclore.sample.ara.webservice.ARARequestHandler + + + + + integration-resteasy-servlet + org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher + + resteasy.resources + com.seclore.sample.dms.so.servlet.SecloreOnlineAPIEndpoints,com.seclore.sample.dms.so.servlet.RenewAccessTokenController + + + + + + ara-resteasy-servlet + /services/* + + + + integration-resteasy-servlet + /seclore/1.0/* + + + + + Protected Context + /logs/* + /config/* + /data/* + /SECLORE_TEMP_FOLDER/* + + + + + 404 + /portal/pages/pageNotFound404.jsp + + + 500 + /portal/pages/serverError.jsp + + + java.lang.Throwable + /portal/pages/serverError.jsp + + + java.lang.IllegalStateException + /portal/pages/serverError.jsp + + + 60 + + \ No newline at end of file diff --git a/examples/Sample App/DMS Sample App/bin/Web App/config/SampleAppConfig.properties b/examples/Sample App/DMS Sample App/bin/Web App/config/SampleAppConfig.properties new file mode 100755 index 0000000..ca8118a --- /dev/null +++ b/examples/Sample App/DMS Sample App/bin/Web App/config/SampleAppConfig.properties @@ -0,0 +1,64 @@ +#Provide the external reference id which is used while creating the HotFolder in Policy Server +hotFolder.external.ref.id= + +#Configs required for Map features +#Keep location.based.features.enable as false and other values as empty if not configured. +location.based.features.enable=false +ip.stack.api.key= +mapbox.api.key= + +#Dummy user name when login context is missing a name. +#Change it to any name of your choice. +dummy.user.name=My file share user + +# Controls whether the open online mode is view or edit. +# Set value as view to open the file in view mode. +# Set value as edit to open the file in edit mode directly. +open.online.mode=edit + +########################################################## + +#The Application URL of the DMS Sample App. +#Example: https://www.acemegroup.com/integrationapp +EnterpriseAppURL= + +#The Application URL of the deployed Seclore Online. +#Example: https://www.acemegroup.com/secloreonline +SecloreOnlineURL= + +# URL of the Policy Server of which the protected files will be opened via Seclore Online.. +#Example: https://www.acemegroup.com/policyserver +PolicyServerURL= + +#########################Flags################################## + +#Allow the user to switch edit mode when the file is opened in view mode. +#(i.e. Show Edit button when file is opened in View Mode). +# Set value as 1 to allow showing the button. +# Set value as 0 to deny showing the button. +Allow-Edit=1 + +#Controls whether the a copy of the file can be downloaded from Seclore Online Renderer. +# Set value as 1 to allow download. +# Set value as 0 to deny download. +Allow-Download=1 + +#Controls whether a file opened in edit mode can save back the edited changes to Seclore Online Integration App. +# Set value as 1 to allow saveback. +# Set value as 0 to deny saveback. +Allow-Saveback=1 + +#Controls whether the a unprotected copy of the file can be downloaded from Seclore Online Renderer. +# Set value as 1 to allow. +# Set value as 0 to deny. +Allow-Unprotect-Download=1 + +#Controls whether the copy of the editted file has to be mailed to the user after the file is closed. +# Set value as 1 to allow. +# Set value as 0 to deny. +Email-Copy=1 + +#Time value in Milliseconds to keep the Access Token Alive. +#After expiry, Seclore Online will call the 'renewToken' endpoint to extend the expiry of the Access Token +# Default set here is 1 hour. +AccessTokenTimeToLive=3600000 diff --git a/examples/Sample App/DMS Sample App/bin/Web App/config/cabinet config.xml b/examples/Sample App/DMS Sample App/bin/Web App/config/cabinet config.xml new file mode 100644 index 0000000..1d6eba7 --- /dev/null +++ b/examples/Sample App/DMS Sample App/bin/Web App/config/cabinet config.xml @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + false + + + + + + false + + + en + + + + + 50 + + 900 + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/Sample App/DMS Sample App/bin/Web App/config/config.xml b/examples/Sample App/DMS Sample App/bin/Web App/config/config.xml new file mode 100644 index 0000000..11362a7 --- /dev/null +++ b/examples/Sample App/DMS Sample App/bin/Web App/config/config.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + true + + false + + + + + \ No newline at end of file diff --git a/examples/Sample App/DMS Sample App/bin/Web App/config/log4j.properties b/examples/Sample App/DMS Sample App/bin/Web App/config/log4j.properties new file mode 100755 index 0000000..dc04007 --- /dev/null +++ b/examples/Sample App/DMS Sample App/bin/Web App/config/log4j.properties @@ -0,0 +1,15 @@ + +log4j.category.WSCLIENT=debug, WSCLIENT + +# If we want to change the Appender, we have to change +# UtilFunction.initializeLoggers() too, because it assumes that the appender +# is 'org.apache.log4j.RollingFileAppender' and changes path of the file by +# getting appender from this logger. +log4j.appender.WSCLIENT=com.seclore.fs.ws.client.logger.DailyZippedRollingFileAppender +# Path of the file should be relative to application ROOT +log4j.appender.WSCLIENT.File=logs/WSClient.log +log4j.appender.WSCLIENT.MaxFileSize=5MB +#log4j.appender.REQUEST_LOGGER.MaxBackupIndex=10 +log4j.appender.WSCLIENT.DatePattern='_'yyyy-MM-dd +log4j.appender.WSCLIENT.layout=org.apache.log4j.PatternLayout +log4j.appender.WSCLIENT.layout.ConversionPattern=%d{MMM dd, yyyy HH:mm:ss.SSS} %F:%L%n%p: %m%n diff --git a/examples/Sample App/DMS Sample App/bin/Web App/config/log4j2.xml b/examples/Sample App/DMS Sample App/bin/Web App/config/log4j2.xml new file mode 100644 index 0000000..0756304 --- /dev/null +++ b/examples/Sample App/DMS Sample App/bin/Web App/config/log4j2.xml @@ -0,0 +1,43 @@ + + + + + + ${ctx:applicationPath}/logs + + + + + + + + + + + + + UTF-8 + %d{MMM dd, yyyy HH:mm:ss.SSS}: %t: %p: %m%n + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/Sample App/DMS Sample App/bin/Web App/data/AppDataDB.xml b/examples/Sample App/DMS Sample App/bin/Web App/data/AppDataDB.xml new file mode 100755 index 0000000..23b8360 --- /dev/null +++ b/examples/Sample App/DMS Sample App/bin/Web App/data/AppDataDB.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/examples/Sample App/DMS Sample App/bin/Web App/data/Classification.xml b/examples/Sample App/DMS Sample App/bin/Web App/data/Classification.xml new file mode 100755 index 0000000..2138b07 --- /dev/null +++ b/examples/Sample App/DMS Sample App/bin/Web App/data/Classification.xml @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/examples/Sample App/DMS Sample App/bin/Web App/data/RightsMaster.xml b/examples/Sample App/DMS Sample App/bin/Web App/data/RightsMaster.xml new file mode 100755 index 0000000..86f23b8 --- /dev/null +++ b/examples/Sample App/DMS Sample App/bin/Web App/data/RightsMaster.xml @@ -0,0 +1,29 @@ + + + + 1 + Read + + + + 2 + Read + Change + + + + 3 + Read + Print + + + + 4 + Read + Change + Print + + + + 5 + Full Control + + + + \ No newline at end of file diff --git a/examples/Sample App/DMS Sample App/bin/Web App/data/UserMaster.xml b/examples/Sample App/DMS Sample App/bin/Web App/data/UserMaster.xml new file mode 100755 index 0000000..c36c46d --- /dev/null +++ b/examples/Sample App/DMS Sample App/bin/Web App/data/UserMaster.xml @@ -0,0 +1,17 @@ + + + + + + diff --git a/examples/Sample App/DMS Sample App/bin/Web App/index.jsp b/examples/Sample App/DMS Sample App/bin/Web App/index.jsp new file mode 100755 index 0000000..2c2ecbf --- /dev/null +++ b/examples/Sample App/DMS Sample App/bin/Web App/index.jsp @@ -0,0 +1,13 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> + + + + +Insert title here + + + <% + response.sendRedirect("home"); + return; + %> + \ No newline at end of file diff --git a/examples/Sample App/DMS Sample App/bin/Web App/portal/bootstrap-3.3.1/css/bootstrap-theme.css b/examples/Sample App/DMS Sample App/bin/Web App/portal/bootstrap-3.3.1/css/bootstrap-theme.css new file mode 100755 index 0000000..c4cadf1 --- /dev/null +++ b/examples/Sample App/DMS Sample App/bin/Web App/portal/bootstrap-3.3.1/css/bootstrap-theme.css @@ -0,0 +1,470 @@ +/*! + * Bootstrap v3.3.1 (http://getbootstrap.com) + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +.btn-default, +.btn-primary, +.btn-success, +.btn-info, +.btn-warning, +.btn-danger { + text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); +} +.btn-default:active, +.btn-primary:active, +.btn-success:active, +.btn-info:active, +.btn-warning:active, +.btn-danger:active, +.btn-default.active, +.btn-primary.active, +.btn-success.active, +.btn-info.active, +.btn-warning.active, +.btn-danger.active { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); +} +.btn-default .badge, +.btn-primary .badge, +.btn-success .badge, +.btn-info .badge, +.btn-warning .badge, +.btn-danger .badge { + text-shadow: none; +} +.btn:active, +.btn.active { + background-image: none; +} +.btn-default { + text-shadow: 0 1px 0 #fff; + background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%); + background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0)); + background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #dbdbdb; + border-color: #ccc; +} +.btn-default:hover, +.btn-default:focus { + background-color: #e0e0e0; + background-position: 0 -15px; +} +.btn-default:active, +.btn-default.active { + background-color: #e0e0e0; + border-color: #dbdbdb; +} +.btn-default:disabled, +.btn-default[disabled] { + background-color: #e0e0e0; + background-image: none; +} +.btn-primary { + background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%); + background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88)); + background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #245580; +} +.btn-primary:hover, +.btn-primary:focus { + background-color: #265a88; + background-position: 0 -15px; +} +.btn-primary:active, +.btn-primary.active { + background-color: #265a88; + border-color: #245580; +} +.btn-primary:disabled, +.btn-primary[disabled] { + background-color: #265a88; + background-image: none; +} +.btn-success { + background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%); + background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641)); + background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #3e8f3e; +} +.btn-success:hover, +.btn-success:focus { + background-color: #419641; + background-position: 0 -15px; +} +.btn-success:active, +.btn-success.active { + background-color: #419641; + border-color: #3e8f3e; +} +.btn-success:disabled, +.btn-success[disabled] { + background-color: #419641; + background-image: none; +} +.btn-info { + background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); + background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2)); + background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #28a4c9; +} +.btn-info:hover, +.btn-info:focus { + background-color: #2aabd2; + background-position: 0 -15px; +} +.btn-info:active, +.btn-info.active { + background-color: #2aabd2; + border-color: #28a4c9; +} +.btn-info:disabled, +.btn-info[disabled] { + background-color: #2aabd2; + background-image: none; +} +.btn-warning { + background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); + background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316)); + background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #e38d13; +} +.btn-warning:hover, +.btn-warning:focus { + background-color: #eb9316; + background-position: 0 -15px; +} +.btn-warning:active, +.btn-warning.active { + background-color: #eb9316; + border-color: #e38d13; +} +.btn-warning:disabled, +.btn-warning[disabled] { + background-color: #eb9316; + background-image: none; +} +.btn-danger { + background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%); + background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a)); + background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #b92c28; +} +.btn-danger:hover, +.btn-danger:focus { + background-color: #c12e2a; + background-position: 0 -15px; +} +.btn-danger:active, +.btn-danger.active { + background-color: #c12e2a; + border-color: #b92c28; +} +.btn-danger:disabled, +.btn-danger[disabled] { + background-color: #c12e2a; + background-image: none; +} +.thumbnail, +.img-thumbnail { + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); + box-shadow: 0 1px 2px rgba(0, 0, 0, .075); +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + background-color: #e8e8e8; + background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); + background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8)); + background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); + background-repeat: repeat-x; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + background-color: #2e6da4; + background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); + background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); + background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); + background-repeat: repeat-x; +} +.navbar-default { + background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%); + background-image: -o-linear-gradient(top, #fff 0%, #f8f8f8 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8)); + background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); +} +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .active > a { + background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%); + background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2)); + background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0); + background-repeat: repeat-x; + -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); + box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); +} +.navbar-brand, +.navbar-nav > li > a { + text-shadow: 0 1px 0 rgba(255, 255, 255, .25); +} +.navbar-inverse { + background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%); + background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222)); + background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; +} +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .active > a { + background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%); + background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f)); + background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0); + background-repeat: repeat-x; + -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); + box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); +} +.navbar-inverse .navbar-brand, +.navbar-inverse .navbar-nav > li > a { + text-shadow: 0 -1px 0 rgba(0, 0, 0, .25); +} +.navbar-static-top, +.navbar-fixed-top, +.navbar-fixed-bottom { + border-radius: 0; +} +@media (max-width: 767px) { + .navbar .navbar-nav .open .dropdown-menu > .active > a, + .navbar .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #fff; + background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); + background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); + background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); + background-repeat: repeat-x; + } +} +.alert { + text-shadow: 0 1px 0 rgba(255, 255, 255, .2); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); +} +.alert-success { + background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); + background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc)); + background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0); + background-repeat: repeat-x; + border-color: #b2dba1; +} +.alert-info { + background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%); + background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0)); + background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0); + background-repeat: repeat-x; + border-color: #9acfea; +} +.alert-warning { + background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); + background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0)); + background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0); + background-repeat: repeat-x; + border-color: #f5e79e; +} +.alert-danger { + background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); + background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3)); + background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0); + background-repeat: repeat-x; + border-color: #dca7a7; +} +.progress { + background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); + background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5)); + background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar { + background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%); + background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090)); + background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar-success { + background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%); + background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44)); + background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar-info { + background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); + background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5)); + background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar-warning { + background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); + background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f)); + background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar-danger { + background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%); + background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c)); + background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar-striped { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.list-group { + border-radius: 4px; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); + box-shadow: 0 1px 2px rgba(0, 0, 0, .075); +} +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + text-shadow: 0 -1px 0 #286090; + background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%); + background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a)); + background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0); + background-repeat: repeat-x; + border-color: #2b669a; +} +.list-group-item.active .badge, +.list-group-item.active:hover .badge, +.list-group-item.active:focus .badge { + text-shadow: none; +} +.panel { + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05); + box-shadow: 0 1px 2px rgba(0, 0, 0, .05); +} +.panel-default > .panel-heading { + background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); + background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8)); + background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); + background-repeat: repeat-x; +} +.panel-primary > .panel-heading { + background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); + background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); + background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); + background-repeat: repeat-x; +} +.panel-success > .panel-heading { + background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); + background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6)); + background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0); + background-repeat: repeat-x; +} +.panel-info > .panel-heading { + background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); + background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3)); + background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0); + background-repeat: repeat-x; +} +.panel-warning > .panel-heading { + background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); + background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc)); + background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0); + background-repeat: repeat-x; +} +.panel-danger > .panel-heading { + background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%); + background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc)); + background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0); + background-repeat: repeat-x; +} +.well { + background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); + background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5)); + background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0); + background-repeat: repeat-x; + border-color: #dcdcdc; + -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); +} +/*# sourceMappingURL=bootstrap-theme.css.map */ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/portal/bootstrap-3.3.1/css/bootstrap-theme.css.map b/examples/Sample App/DMS Sample App/bin/Web App/portal/bootstrap-3.3.1/css/bootstrap-theme.css.map new file mode 100755 index 0000000..016a8da --- /dev/null +++ b/examples/Sample App/DMS Sample App/bin/Web App/portal/bootstrap-3.3.1/css/bootstrap-theme.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["less/theme.less","less/mixins/vendor-prefixes.less","bootstrap-theme.css","less/mixins/gradients.less","less/mixins/reset-filter.less"],"names":[],"mappings":"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","file":"bootstrap-theme.css","sourcesContent":["\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@import \"mixins.less\";\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// Common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0,0,0,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n // Reset the shadow\n &:active,\n &.active {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n .badge {\n text-shadow: none;\n }\n}\n\n// Mixin for generating new styles\n.btn-styles(@btn-color: #555) {\n #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));\n .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners\n background-repeat: repeat-x;\n border-color: darken(@btn-color, 14%);\n\n &:hover,\n &:focus {\n background-color: darken(@btn-color, 12%);\n background-position: 0 -15px;\n }\n\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n border-color: darken(@btn-color, 14%);\n }\n\n &:disabled,\n &[disabled] {\n background-color: darken(@btn-color, 12%);\n background-image: none;\n }\n}\n\n// Common styles\n.btn {\n // Remove the gradient for the pressed/active state\n &:active,\n &.active {\n background-image: none;\n }\n}\n\n// Apply the mixin to the buttons\n.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }\n.btn-primary { .btn-styles(@btn-primary-bg); }\n.btn-success { .btn-styles(@btn-success-bg); }\n.btn-info { .btn-styles(@btn-info-bg); }\n.btn-warning { .btn-styles(@btn-warning-bg); }\n.btn-danger { .btn-styles(@btn-danger-bg); }\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));\n background-color: darken(@dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n background-color: darken(@dropdown-link-active-bg, 5%);\n}\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n border-radius: @navbar-border-radius;\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: darken(@navbar-default-link-active-bg, 5%); @end-color: darken(@navbar-default-link-active-bg, 2%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.075));\n }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255,255,255,.25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.25));\n }\n\n .navbar-brand,\n .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0,0,0,.25);\n }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n\n// Fix active state of dropdown items in collapsed mode\n@media (max-width: @grid-float-breakpoint-max) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: #fff;\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n }\n }\n}\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n text-shadow: 0 1px 0 rgba(255,255,255,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);\n .box-shadow(@shadow);\n}\n\n// Mixin for generating new styles\n.alert-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));\n border-color: darken(@color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success { .alert-styles(@alert-success-bg); }\n.alert-info { .alert-styles(@alert-info-bg); }\n.alert-warning { .alert-styles(@alert-warning-bg); }\n.alert-danger { .alert-styles(@alert-danger-bg); }\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)\n}\n\n// Mixin for generating new styles\n.progress-bar-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar { .progress-bar-styles(@progress-bar-bg); }\n.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); }\n.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); }\n.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); }\n.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); }\n\n// Reset the striped class because our mixins don't do multiple gradients and\n// the above custom styles override the new `.progress-bar-striped` in v3.2.0.\n.progress-bar-striped {\n #gradient > .striped();\n}\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n border-radius: @border-radius-base;\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);\n #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));\n border-color: darken(@list-group-active-border, 7.5%);\n\n .badge {\n text-shadow: none;\n }\n}\n\n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n .box-shadow(0 1px 2px rgba(0,0,0,.05));\n}\n\n// Mixin for generating new styles\n.panel-heading-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading { .panel-heading-styles(@panel-default-heading-bg); }\n.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); }\n.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); }\n.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); }\n.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); }\n.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); }\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);\n border-color: darken(@well-bg, 10%);\n @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They will be removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility){\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // See https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n",".btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.btn-default:active,\n.btn-primary:active,\n.btn-success:active,\n.btn-info:active,\n.btn-warning:active,\n.btn-danger:active,\n.btn-default.active,\n.btn-primary.active,\n.btn-success.active,\n.btn-info.active,\n.btn-warning.active,\n.btn-danger.active {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-default .badge,\n.btn-primary .badge,\n.btn-success .badge,\n.btn-info .badge,\n.btn-warning .badge,\n.btn-danger .badge {\n text-shadow: none;\n}\n.btn:active,\n.btn.active {\n background-image: none;\n}\n.btn-default {\n background-image: -webkit-linear-gradient(top, #ffffff 0%, #e0e0e0 100%);\n background-image: -o-linear-gradient(top, #ffffff 0%, #e0e0e0 100%);\n background-image: linear-gradient(to bottom, #ffffff 0%, #e0e0e0 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #dbdbdb;\n text-shadow: 0 1px 0 #fff;\n border-color: #ccc;\n}\n.btn-default:hover,\n.btn-default:focus {\n background-color: #e0e0e0;\n background-position: 0 -15px;\n}\n.btn-default:active,\n.btn-default.active {\n background-color: #e0e0e0;\n border-color: #dbdbdb;\n}\n.btn-default:disabled,\n.btn-default[disabled] {\n background-color: #e0e0e0;\n background-image: none;\n}\n.btn-primary {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #245580;\n}\n.btn-primary:hover,\n.btn-primary:focus {\n background-color: #265a88;\n background-position: 0 -15px;\n}\n.btn-primary:active,\n.btn-primary.active {\n background-color: #265a88;\n border-color: #245580;\n}\n.btn-primary:disabled,\n.btn-primary[disabled] {\n background-color: #265a88;\n background-image: none;\n}\n.btn-success {\n background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);\n background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);\n background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #3e8f3e;\n}\n.btn-success:hover,\n.btn-success:focus {\n background-color: #419641;\n background-position: 0 -15px;\n}\n.btn-success:active,\n.btn-success.active {\n background-color: #419641;\n border-color: #3e8f3e;\n}\n.btn-success:disabled,\n.btn-success[disabled] {\n background-color: #419641;\n background-image: none;\n}\n.btn-info {\n background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #28a4c9;\n}\n.btn-info:hover,\n.btn-info:focus {\n background-color: #2aabd2;\n background-position: 0 -15px;\n}\n.btn-info:active,\n.btn-info.active {\n background-color: #2aabd2;\n border-color: #28a4c9;\n}\n.btn-info:disabled,\n.btn-info[disabled] {\n background-color: #2aabd2;\n background-image: none;\n}\n.btn-warning {\n background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #e38d13;\n}\n.btn-warning:hover,\n.btn-warning:focus {\n background-color: #eb9316;\n background-position: 0 -15px;\n}\n.btn-warning:active,\n.btn-warning.active {\n background-color: #eb9316;\n border-color: #e38d13;\n}\n.btn-warning:disabled,\n.btn-warning[disabled] {\n background-color: #eb9316;\n background-image: none;\n}\n.btn-danger {\n background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #b92c28;\n}\n.btn-danger:hover,\n.btn-danger:focus {\n background-color: #c12e2a;\n background-position: 0 -15px;\n}\n.btn-danger:active,\n.btn-danger.active {\n background-color: #c12e2a;\n border-color: #b92c28;\n}\n.btn-danger:disabled,\n.btn-danger[disabled] {\n background-color: #c12e2a;\n background-image: none;\n}\n.thumbnail,\n.img-thumbnail {\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n background-color: #e8e8e8;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n background-color: #2e6da4;\n}\n.navbar-default {\n background-image: -webkit-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n background-image: -o-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .active > a {\n background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);\n -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);\n}\n.navbar-inverse {\n background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222222 100%);\n background-image: -o-linear-gradient(top, #3c3c3c 0%, #222222 100%);\n background-image: linear-gradient(to bottom, #3c3c3c 0%, #222222 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .active > a {\n background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);\n -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n}\n.navbar-inverse .navbar-brand,\n.navbar-inverse .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n@media (max-width: 767px) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a,\n .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n }\n}\n.alert {\n text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.alert-success {\n background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);\n border-color: #b2dba1;\n}\n.alert-info {\n background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);\n border-color: #9acfea;\n}\n.alert-warning {\n background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);\n border-color: #f5e79e;\n}\n.alert-danger {\n background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);\n border-color: #dca7a7;\n}\n.progress {\n background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);\n}\n.progress-bar {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);\n}\n.progress-bar-success {\n background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);\n}\n.progress-bar-info {\n background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);\n}\n.progress-bar-warning {\n background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);\n}\n.progress-bar-danger {\n background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);\n}\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.list-group {\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 #286090;\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);\n border-color: #2b669a;\n}\n.list-group-item.active .badge,\n.list-group-item.active:hover .badge,\n.list-group-item.active:focus .badge {\n text-shadow: none;\n}\n.panel {\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.panel-default > .panel-heading {\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n}\n.panel-primary > .panel-heading {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n}\n.panel-success > .panel-heading {\n background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);\n}\n.panel-info > .panel-heading {\n background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);\n}\n.panel-warning > .panel-heading {\n background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);\n}\n.panel-danger > .panel-heading {\n background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);\n}\n.well {\n background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);\n border-color: #dcdcdc;\n -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n}\n/*# sourceMappingURL=bootstrap-theme.css.map */","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n"]} \ No newline at end of file diff --git a/examples/Sample App/DMS Sample App/bin/Web App/portal/bootstrap-3.3.1/css/bootstrap-theme.min.css b/examples/Sample App/DMS Sample App/bin/Web App/portal/bootstrap-3.3.1/css/bootstrap-theme.min.css new file mode 100755 index 0000000..4c3e7ba --- /dev/null +++ b/examples/Sample App/DMS Sample App/bin/Web App/portal/bootstrap-3.3.1/css/bootstrap-theme.min.css @@ -0,0 +1,5 @@ +/*! + * Bootstrap v3.3.1 (http://getbootstrap.com) + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */.btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-default:active,.btn-primary:active,.btn-success:active,.btn-info:active,.btn-warning:active,.btn-danger:active,.btn-default.active,.btn-primary.active,.btn-success.active,.btn-info.active,.btn-warning.active,.btn-danger.active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-default .badge,.btn-primary .badge,.btn-success .badge,.btn-info .badge,.btn-warning .badge,.btn-danger .badge{text-shadow:none}.btn:active,.btn.active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-o-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e0e0e0));background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc}.btn-default:hover,.btn-default:focus{background-color:#e0e0e0;background-position:0 -15px}.btn-default:active,.btn-default.active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default:disabled,.btn-default[disabled]{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-o-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#265a88));background-image:linear-gradient(to bottom,#337ab7 0,#265a88 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#245580}.btn-primary:hover,.btn-primary:focus{background-color:#265a88;background-position:0 -15px}.btn-primary:active,.btn-primary.active{background-color:#265a88;border-color:#245580}.btn-primary:disabled,.btn-primary[disabled]{background-color:#265a88;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#419641));background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:hover,.btn-success:focus{background-color:#419641;background-position:0 -15px}.btn-success:active,.btn-success.active{background-color:#419641;border-color:#3e8f3e}.btn-success:disabled,.btn-success[disabled]{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#2aabd2));background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:hover,.btn-info:focus{background-color:#2aabd2;background-position:0 -15px}.btn-info:active,.btn-info.active{background-color:#2aabd2;border-color:#28a4c9}.btn-info:disabled,.btn-info[disabled]{background-color:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#eb9316));background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:hover,.btn-warning:focus{background-color:#eb9316;background-position:0 -15px}.btn-warning:active,.btn-warning.active{background-color:#eb9316;border-color:#e38d13}.btn-warning:disabled,.btn-warning[disabled]{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c12e2a));background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:hover,.btn-danger:focus{background-color:#c12e2a;background-position:0 -15px}.btn-danger:active,.btn-danger.active{background-color:#c12e2a;border-color:#b92c28}.btn-danger:disabled,.btn-danger[disabled]{background-color:#c12e2a;background-image:none}.thumbnail,.img-thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{background-color:#2e6da4;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-o-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f8f8f8));background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-o-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dbdbdb),to(#e2e2e2));background-image:linear-gradient(to bottom,#dbdbdb 0,#e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-o-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#222));background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-o-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#080808),to(#0f0f0f));background-image:linear-gradient(to bottom,#080808 0,#0f0f0f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-static-top,.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}@media (max-width:767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);background-repeat:repeat-x;border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#b9def0));background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);background-repeat:repeat-x;border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#f8efc0));background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);background-repeat:repeat-x;border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-o-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#e7c3c3));background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);background-repeat:repeat-x;border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#f5f5f5));background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x}.progress-bar{background-image:-webkit-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-o-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#286090));background-image:linear-gradient(to bottom,#337ab7 0,#286090 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);background-repeat:repeat-x}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#449d44));background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);background-repeat:repeat-x}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#31b0d5));background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);background-repeat:repeat-x}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#ec971f));background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);background-repeat:repeat-x}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c9302c));background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);background-repeat:repeat-x}.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{text-shadow:0 -1px 0 #286090;background-image:-webkit-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2b669a));background-image:linear-gradient(to bottom,#337ab7 0,#2b669a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);background-repeat:repeat-x;border-color:#2b669a}.list-group-item.active .badge,.list-group-item.active:hover .badge,.list-group-item.active:focus .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#d0e9c6));background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);background-repeat:repeat-x}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#c4e3f3));background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);background-repeat:repeat-x}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#faf2cc));background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);background-repeat:repeat-x}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-o-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#ebcccc));background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);background-repeat:repeat-x}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#e8e8e8),to(#f5f5f5));background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x;border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)} \ No newline at end of file diff --git a/examples/Sample App/DMS Sample App/bin/Web App/portal/bootstrap-3.3.1/css/bootstrap.css b/examples/Sample App/DMS Sample App/bin/Web App/portal/bootstrap-3.3.1/css/bootstrap.css new file mode 100755 index 0000000..c6f3d21 --- /dev/null +++ b/examples/Sample App/DMS Sample App/bin/Web App/portal/bootstrap-3.3.1/css/bootstrap.css @@ -0,0 +1,6332 @@ +/*! + * Bootstrap v3.3.1 (http://getbootstrap.com) + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ +html { + font-family: sans-serif; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} +body { + margin: 0; +} +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline; +} +audio:not([controls]) { + display: none; + height: 0; +} +[hidden], +template { + display: none; +} +a { + background-color: transparent; +} +a:active, +a:hover { + outline: 0; +} +abbr[title] { + border-bottom: 1px dotted; +} +b, +strong { + font-weight: bold; +} +dfn { + font-style: italic; +} +h1 { + margin: .67em 0; + font-size: 2em; +} +mark { + color: #000; + background: #ff0; +} +small { + font-size: 80%; +} +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} +sup { + top: -.5em; +} +sub { + bottom: -.25em; +} +img { + border: 0; +} +svg:not(:root) { + overflow: hidden; +} +figure { + margin: 1em 40px; +} +hr { + height: 0; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +pre { + overflow: auto; +} +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} +button, +input, +optgroup, +select, +textarea { + margin: 0; + font: inherit; + color: inherit; +} +button { + overflow: visible; +} +button, +select { + text-transform: none; +} +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; +} +button[disabled], +html input[disabled] { + cursor: default; +} +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} +input { + line-height: normal; +} +input[type="checkbox"], +input[type="radio"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0; +} +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +fieldset { + padding: .35em .625em .75em; + margin: 0 2px; + border: 1px solid #c0c0c0; +} +legend { + padding: 0; + border: 0; +} +textarea { + overflow: auto; +} +optgroup { + font-weight: bold; +} +table { + border-spacing: 0; + border-collapse: collapse; +} +td, +th { + padding: 0; +} +/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ +@media print { + *, + *:before, + *:after { + color: #000 !important; + text-shadow: none !important; + background: transparent !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + a[href^="#"]:after, + a[href^="javascript:"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + select { + background: #fff !important; + } + .navbar { + display: none; + } + .btn > .caret, + .dropup > .btn > .caret { + border-top-color: #000 !important; + } + .label { + border: 1px solid #000; + } + .table { + border-collapse: collapse !important; + } + .table td, + .table th { + background-color: #fff !important; + } + .table-bordered th, + .table-bordered td { + border: 1px solid #ddd !important; + } +} +@font-face { + font-family: 'Glyphicons Halflings'; + + src: url('../fonts/glyphicons-halflings-regular.eot'); + src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); +} +.glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: normal; + line-height: 1; + + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.glyphicon-asterisk:before { + content: "\2a"; +} +.glyphicon-plus:before { + content: "\2b"; +} +.glyphicon-euro:before, +.glyphicon-eur:before { + content: "\20ac"; +} +.glyphicon-minus:before { + content: "\2212"; +} +.glyphicon-cloud:before { + content: "\2601"; +} +.glyphicon-envelope:before { + content: "\2709"; +} +.glyphicon-pencil:before { + content: "\270f"; +} +.glyphicon-glass:before { + content: "\e001"; +} +.glyphicon-music:before { + content: "\e002"; +} +.glyphicon-search:before { + content: "\e003"; +} +.glyphicon-heart:before { + content: "\e005"; +} +.glyphicon-star:before { + content: "\e006"; +} +.glyphicon-star-empty:before { + content: "\e007"; +} +.glyphicon-user:before { + content: "\e008"; +} +.glyphicon-film:before { + content: "\e009"; +} +.glyphicon-th-large:before { + content: "\e010"; +} +.glyphicon-th:before { + content: "\e011"; +} +.glyphicon-th-list:before { + content: "\e012"; +} +.glyphicon-ok:before { + content: "\e013"; +} +.glyphicon-remove:before { + content: "\e014"; +} +.glyphicon-zoom-in:before { + content: "\e015"; +} +.glyphicon-zoom-out:before { + content: "\e016"; +} +.glyphicon-off:before { + content: "\e017"; +} +.glyphicon-signal:before { + content: "\e018"; +} +.glyphicon-cog:before { + content: "\e019"; +} +.glyphicon-trash:before { + content: "\e020"; +} +.glyphicon-home:before { + content: "\e021"; +} +.glyphicon-file:before { + content: "\e022"; +} +.glyphicon-time:before { + content: "\e023"; +} +.glyphicon-road:before { + content: "\e024"; +} +.glyphicon-download-alt:before { + content: "\e025"; +} +.glyphicon-download:before { + content: "\e026"; +} +.glyphicon-upload:before { + content: "\e027"; +} +.glyphicon-inbox:before { + content: "\e028"; +} +.glyphicon-play-circle:before { + content: "\e029"; +} +.glyphicon-repeat:before { + content: "\e030"; +} +.glyphicon-refresh:before { + content: "\e031"; +} +.glyphicon-list-alt:before { + content: "\e032"; +} +.glyphicon-lock:before { + content: "\e033"; +} +.glyphicon-flag:before { + content: "\e034"; +} +.glyphicon-headphones:before { + content: "\e035"; +} +.glyphicon-volume-off:before { + content: "\e036"; +} +.glyphicon-volume-down:before { + content: "\e037"; +} +.glyphicon-volume-up:before { + content: "\e038"; +} +.glyphicon-qrcode:before { + content: "\e039"; +} +.glyphicon-barcode:before { + content: "\e040"; +} +.glyphicon-tag:before { + content: "\e041"; +} +.glyphicon-tags:before { + content: "\e042"; +} +.glyphicon-book:before { + content: "\e043"; +} +.glyphicon-bookmark:before { + content: "\e044"; +} +.glyphicon-print:before { + content: "\e045"; +} +.glyphicon-camera:before { + content: "\e046"; +} +.glyphicon-font:before { + content: "\e047"; +} +.glyphicon-bold:before { + content: "\e048"; +} +.glyphicon-italic:before { + content: "\e049"; +} +.glyphicon-text-height:before { + content: "\e050"; +} +.glyphicon-text-width:before { + content: "\e051"; +} +.glyphicon-align-left:before { + content: "\e052"; +} +.glyphicon-align-center:before { + content: "\e053"; +} +.glyphicon-align-right:before { + content: "\e054"; +} +.glyphicon-align-justify:before { + content: "\e055"; +} +.glyphicon-list:before { + content: "\e056"; +} +.glyphicon-indent-left:before { + content: "\e057"; +} +.glyphicon-indent-right:before { + content: "\e058"; +} +.glyphicon-facetime-video:before { + content: "\e059"; +} +.glyphicon-picture:before { + content: "\e060"; +} +.glyphicon-map-marker:before { + content: "\e062"; +} +.glyphicon-adjust:before { + content: "\e063"; +} +.glyphicon-tint:before { + content: "\e064"; +} +.glyphicon-edit:before { + content: "\e065"; +} +.glyphicon-share:before { + content: "\e066"; +} +.glyphicon-check:before { + content: "\e067"; +} +.glyphicon-move:before { + content: "\e068"; +} +.glyphicon-step-backward:before { + content: "\e069"; +} +.glyphicon-fast-backward:before { + content: "\e070"; +} +.glyphicon-backward:before { + content: "\e071"; +} +.glyphicon-play:before { + content: "\e072"; +} +.glyphicon-pause:before { + content: "\e073"; +} +.glyphicon-stop:before { + content: "\e074"; +} +.glyphicon-forward:before { + content: "\e075"; +} +.glyphicon-fast-forward:before { + content: "\e076"; +} +.glyphicon-step-forward:before { + content: "\e077"; +} +.glyphicon-eject:before { + content: "\e078"; +} +.glyphicon-chevron-left:before { + content: "\e079"; +} +.glyphicon-chevron-right:before { + content: "\e080"; +} +.glyphicon-plus-sign:before { + content: "\e081"; +} +.glyphicon-minus-sign:before { + content: "\e082"; +} +.glyphicon-remove-sign:before { + content: "\e083"; +} +.glyphicon-ok-sign:before { + content: "\e084"; +} +.glyphicon-question-sign:before { + content: "\e085"; +} +.glyphicon-info-sign:before { + content: "\e086"; +} +.glyphicon-screenshot:before { + content: "\e087"; +} +.glyphicon-remove-circle:before { + content: "\e088"; +} +.glyphicon-ok-circle:before { + content: "\e089"; +} +.glyphicon-ban-circle:before { + content: "\e090"; +} +.glyphicon-arrow-left:before { + content: "\e091"; +} +.glyphicon-arrow-right:before { + content: "\e092"; +} +.glyphicon-arrow-up:before { + content: "\e093"; +} +.glyphicon-arrow-down:before { + content: "\e094"; +} +.glyphicon-share-alt:before { + content: "\e095"; +} +.glyphicon-resize-full:before { + content: "\e096"; +} +.glyphicon-resize-small:before { + content: "\e097"; +} +.glyphicon-exclamation-sign:before { + content: "\e101"; +} +.glyphicon-gift:before { + content: "\e102"; +} +.glyphicon-leaf:before { + content: "\e103"; +} +.glyphicon-fire:before { + content: "\e104"; +} +.glyphicon-eye-open:before { + content: "\e105"; +} +.glyphicon-eye-close:before { + content: "\e106"; +} +.glyphicon-warning-sign:before { + content: "\e107"; +} +.glyphicon-plane:before { + content: "\e108"; +} +.glyphicon-calendar:before { + content: "\e109"; +} +.glyphicon-random:before { + content: "\e110"; +} +.glyphicon-comment:before { + content: "\e111"; +} +.glyphicon-magnet:before { + content: "\e112"; +} +.glyphicon-chevron-up:before { + content: "\e113"; +} +.glyphicon-chevron-down:before { + content: "\e114"; +} +.glyphicon-retweet:before { + content: "\e115"; +} +.glyphicon-shopping-cart:before { + content: "\e116"; +} +.glyphicon-folder-close:before { + content: "\e117"; +} +.glyphicon-folder-open:before { + content: "\e118"; +} +.glyphicon-resize-vertical:before { + content: "\e119"; +} +.glyphicon-resize-horizontal:before { + content: "\e120"; +} +.glyphicon-hdd:before { + content: "\e121"; +} +.glyphicon-bullhorn:before { + content: "\e122"; +} +.glyphicon-bell:before { + content: "\e123"; +} +.glyphicon-certificate:before { + content: "\e124"; +} +.glyphicon-thumbs-up:before { + content: "\e125"; +} +.glyphicon-thumbs-down:before { + content: "\e126"; +} +.glyphicon-hand-right:before { + content: "\e127"; +} +.glyphicon-hand-left:before { + content: "\e128"; +} +.glyphicon-hand-up:before { + content: "\e129"; +} +.glyphicon-hand-down:before { + content: "\e130"; +} +.glyphicon-circle-arrow-right:before { + content: "\e131"; +} +.glyphicon-circle-arrow-left:before { + content: "\e132"; +} +.glyphicon-circle-arrow-up:before { + content: "\e133"; +} +.glyphicon-circle-arrow-down:before { + content: "\e134"; +} +.glyphicon-globe:before { + content: "\e135"; +} +.glyphicon-wrench:before { + content: "\e136"; +} +.glyphicon-tasks:before { + content: "\e137"; +} +.glyphicon-filter:before { + content: "\e138"; +} +.glyphicon-briefcase:before { + content: "\e139"; +} +.glyphicon-fullscreen:before { + content: "\e140"; +} +.glyphicon-dashboard:before { + content: "\e141"; +} +.glyphicon-paperclip:before { + content: "\e142"; +} +.glyphicon-heart-empty:before { + content: "\e143"; +} +.glyphicon-link:before { + content: "\e144"; +} +.glyphicon-phone:before { + content: "\e145"; +} +.glyphicon-pushpin:before { + content: "\e146"; +} +.glyphicon-usd:before { + content: "\e148"; +} +.glyphicon-gbp:before { + content: "\e149"; +} +.glyphicon-sort:before { + content: "\e150"; +} +.glyphicon-sort-by-alphabet:before { + content: "\e151"; +} +.glyphicon-sort-by-alphabet-alt:before { + content: "\e152"; +} +.glyphicon-sort-by-order:before { + content: "\e153"; +} +.glyphicon-sort-by-order-alt:before { + content: "\e154"; +} +.glyphicon-sort-by-attributes:before { + content: "\e155"; +} +.glyphicon-sort-by-attributes-alt:before { + content: "\e156"; +} +.glyphicon-unchecked:before { + content: "\e157"; +} +.glyphicon-expand:before { + content: "\e158"; +} +.glyphicon-collapse-down:before { + content: "\e159"; +} +.glyphicon-collapse-up:before { + content: "\e160"; +} +.glyphicon-log-in:before { + content: "\e161"; +} +.glyphicon-flash:before { + content: "\e162"; +} +.glyphicon-log-out:before { + content: "\e163"; +} +.glyphicon-new-window:before { + content: "\e164"; +} +.glyphicon-record:before { + content: "\e165"; +} +.glyphicon-save:before { + content: "\e166"; +} +.glyphicon-open:before { + content: "\e167"; +} +.glyphicon-saved:before { + content: "\e168"; +} +.glyphicon-import:before { + content: "\e169"; +} +.glyphicon-export:before { + content: "\e170"; +} +.glyphicon-send:before { + content: "\e171"; +} +.glyphicon-floppy-disk:before { + content: "\e172"; +} +.glyphicon-floppy-saved:before { + content: "\e173"; +} +.glyphicon-floppy-remove:before { + content: "\e174"; +} +.glyphicon-floppy-save:before { + content: "\e175"; +} +.glyphicon-floppy-open:before { + content: "\e176"; +} +.glyphicon-credit-card:before { + content: "\e177"; +} +.glyphicon-transfer:before { + content: "\e178"; +} +.glyphicon-cutlery:before { + content: "\e179"; +} +.glyphicon-header:before { + content: "\e180"; +} +.glyphicon-compressed:before { + content: "\e181"; +} +.glyphicon-earphone:before { + content: "\e182"; +} +.glyphicon-phone-alt:before { + content: "\e183"; +} +.glyphicon-tower:before { + content: "\e184"; +} +.glyphicon-stats:before { + content: "\e185"; +} +.glyphicon-sd-video:before { + content: "\e186"; +} +.glyphicon-hd-video:before { + content: "\e187"; +} +.glyphicon-subtitles:before { + content: "\e188"; +} +.glyphicon-sound-stereo:before { + content: "\e189"; +} +.glyphicon-sound-dolby:before { + content: "\e190"; +} +.glyphicon-sound-5-1:before { + content: "\e191"; +} +.glyphicon-sound-6-1:before { + content: "\e192"; +} +.glyphicon-sound-7-1:before { + content: "\e193"; +} +.glyphicon-copyright-mark:before { + content: "\e194"; +} +.glyphicon-registration-mark:before { + content: "\e195"; +} +.glyphicon-cloud-download:before { + content: "\e197"; +} +.glyphicon-cloud-upload:before { + content: "\e198"; +} +.glyphicon-tree-conifer:before { + content: "\e199"; +} +.glyphicon-tree-deciduous:before { + content: "\e200"; +} +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +*:before, +*:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +html { + font-size: 10px; + + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +body { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.42857143; + color: #333; + background-color: #fff; +} +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} +a { + color: #337ab7; + text-decoration: none; +} +a:hover, +a:focus { + color: #23527c; + text-decoration: underline; +} +a:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +figure { + margin: 0; +} +img { + vertical-align: middle; +} +.img-responsive, +.thumbnail > img, +.thumbnail a > img, +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + max-width: 100%; + height: auto; +} +.img-rounded { + border-radius: 6px; +} +.img-thumbnail { + display: inline-block; + max-width: 100%; + height: auto; + padding: 4px; + line-height: 1.42857143; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: all .2s ease-in-out; + -o-transition: all .2s ease-in-out; + transition: all .2s ease-in-out; +} +.img-circle { + border-radius: 50%; +} +hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eee; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} +h1, +h2, +h3, +h4, +h5, +h6, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-family: inherit; + font-weight: 500; + line-height: 1.1; + color: inherit; +} +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small, +.h1 small, +.h2 small, +.h3 small, +.h4 small, +.h5 small, +.h6 small, +h1 .small, +h2 .small, +h3 .small, +h4 .small, +h5 .small, +h6 .small, +.h1 .small, +.h2 .small, +.h3 .small, +.h4 .small, +.h5 .small, +.h6 .small { + font-weight: normal; + line-height: 1; + color: #777; +} +h1, +.h1, +h2, +.h2, +h3, +.h3 { + margin-top: 20px; + margin-bottom: 10px; +} +h1 small, +.h1 small, +h2 small, +.h2 small, +h3 small, +.h3 small, +h1 .small, +.h1 .small, +h2 .small, +.h2 .small, +h3 .small, +.h3 .small { + font-size: 65%; +} +h4, +.h4, +h5, +.h5, +h6, +.h6 { + margin-top: 10px; + margin-bottom: 10px; +} +h4 small, +.h4 small, +h5 small, +.h5 small, +h6 small, +.h6 small, +h4 .small, +.h4 .small, +h5 .small, +.h5 .small, +h6 .small, +.h6 .small { + font-size: 75%; +} +h1, +.h1 { + font-size: 36px; +} +h2, +.h2 { + font-size: 30px; +} +h3, +.h3 { + font-size: 24px; +} +h4, +.h4 { + font-size: 18px; +} +h5, +.h5 { + font-size: 14px; +} +h6, +.h6 { + font-size: 12px; +} +p { + margin: 0 0 10px; +} +.lead { + margin-bottom: 20px; + font-size: 16px; + font-weight: 300; + line-height: 1.4; +} +@media (min-width: 768px) { + .lead { + font-size: 21px; + } +} +small, +.small { + font-size: 85%; +} +mark, +.mark { + padding: .2em; + background-color: #fcf8e3; +} +.text-left { + text-align: left; +} +.text-right { + text-align: right; +} +.text-center { + text-align: center; +} +.text-justify { + text-align: justify; +} +.text-nowrap { + white-space: nowrap; +} +.text-lowercase { + text-transform: lowercase; +} +.text-uppercase { + text-transform: uppercase; +} +.text-capitalize { + text-transform: capitalize; +} +.text-muted { + color: #777; +} +.text-primary { + color: #337ab7; +} +a.text-primary:hover { + color: #286090; +} +.text-success { + color: #3c763d; +} +a.text-success:hover { + color: #2b542c; +} +.text-info { + color: #31708f; +} +a.text-info:hover { + color: #245269; +} +.text-warning { + color: #8a6d3b; +} +a.text-warning:hover { + color: #66512c; +} +.text-danger { + color: #a94442; +} +a.text-danger:hover { + color: #843534; +} +.bg-primary { + color: #fff; + background-color: #337ab7; +} +a.bg-primary:hover { + background-color: #286090; +} +.bg-success { + background-color: #dff0d8; +} +a.bg-success:hover { + background-color: #c1e2b3; +} +.bg-info { + background-color: #d9edf7; +} +a.bg-info:hover { + background-color: #afd9ee; +} +.bg-warning { + background-color: #fcf8e3; +} +a.bg-warning:hover { + background-color: #f7ecb5; +} +.bg-danger { + background-color: #f2dede; +} +a.bg-danger:hover { + background-color: #e4b9b9; +} +.page-header { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #eee; +} +ul, +ol { + margin-top: 0; + margin-bottom: 10px; +} +ul ul, +ol ul, +ul ol, +ol ol { + margin-bottom: 0; +} +.list-unstyled { + padding-left: 0; + list-style: none; +} +.list-inline { + padding-left: 0; + margin-left: -5px; + list-style: none; +} +.list-inline > li { + display: inline-block; + padding-right: 5px; + padding-left: 5px; +} +dl { + margin-top: 0; + margin-bottom: 20px; +} +dt, +dd { + line-height: 1.42857143; +} +dt { + font-weight: bold; +} +dd { + margin-left: 0; +} +@media (min-width: 768px) { + .dl-horizontal dt { + float: left; + width: 160px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; + } + .dl-horizontal dd { + margin-left: 180px; + } +} +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #777; +} +.initialism { + font-size: 90%; + text-transform: uppercase; +} +blockquote { + padding: 10px 20px; + margin: 0 0 20px; + font-size: 17.5px; + border-left: 5px solid #eee; +} +blockquote p:last-child, +blockquote ul:last-child, +blockquote ol:last-child { + margin-bottom: 0; +} +blockquote footer, +blockquote small, +blockquote .small { + display: block; + font-size: 80%; + line-height: 1.42857143; + color: #777; +} +blockquote footer:before, +blockquote small:before, +blockquote .small:before { + content: '\2014 \00A0'; +} +.blockquote-reverse, +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + text-align: right; + border-right: 5px solid #eee; + border-left: 0; +} +.blockquote-reverse footer:before, +blockquote.pull-right footer:before, +.blockquote-reverse small:before, +blockquote.pull-right small:before, +.blockquote-reverse .small:before, +blockquote.pull-right .small:before { + content: ''; +} +.blockquote-reverse footer:after, +blockquote.pull-right footer:after, +.blockquote-reverse small:after, +blockquote.pull-right small:after, +.blockquote-reverse .small:after, +blockquote.pull-right .small:after { + content: '\00A0 \2014'; +} +address { + margin-bottom: 20px; + font-style: normal; + line-height: 1.42857143; +} +code, +kbd, +pre, +samp { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; +} +code { + padding: 2px 4px; + font-size: 90%; + color: #c7254e; + background-color: #f9f2f4; + border-radius: 4px; +} +kbd { + padding: 2px 4px; + font-size: 90%; + color: #fff; + background-color: #333; + border-radius: 3px; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); +} +kbd kbd { + padding: 0; + font-size: 100%; + font-weight: bold; + -webkit-box-shadow: none; + box-shadow: none; +} +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.42857143; + color: #333; + word-break: break-all; + word-wrap: break-word; + background-color: #f5f5f5; + border: 1px solid #ccc; + border-radius: 4px; +} +pre code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0; +} +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} +.container { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} +@media (min-width: 768px) { + .container { + width: 750px; + } +} +@media (min-width: 992px) { + .container { + width: 970px; + } +} +@media (min-width: 1200px) { + .container { + width: 1170px; + } +} +.container-fluid { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} +.row { + margin-right: -15px; + margin-left: -15px; +} +.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { + position: relative; + min-height: 1px; + padding-right: 15px; + padding-left: 15px; +} +.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { + float: left; +} +.col-xs-12 { + width: 100%; +} +.col-xs-11 { + width: 91.66666667%; +} +.col-xs-10 { + width: 83.33333333%; +} +.col-xs-9 { + width: 75%; +} +.col-xs-8 { + width: 66.66666667%; +} +.col-xs-7 { + width: 58.33333333%; +} +.col-xs-6 { + width: 50%; +} +.col-xs-5 { + width: 41.66666667%; +} +.col-xs-4 { + width: 33.33333333%; +} +.col-xs-3 { + width: 25%; +} +.col-xs-2 { + width: 16.66666667%; +} +.col-xs-1 { + width: 8.33333333%; +} +.col-xs-pull-12 { + right: 100%; +} +.col-xs-pull-11 { + right: 91.66666667%; +} +.col-xs-pull-10 { + right: 83.33333333%; +} +.col-xs-pull-9 { + right: 75%; +} +.col-xs-pull-8 { + right: 66.66666667%; +} +.col-xs-pull-7 { + right: 58.33333333%; +} +.col-xs-pull-6 { + right: 50%; +} +.col-xs-pull-5 { + right: 41.66666667%; +} +.col-xs-pull-4 { + right: 33.33333333%; +} +.col-xs-pull-3 { + right: 25%; +} +.col-xs-pull-2 { + right: 16.66666667%; +} +.col-xs-pull-1 { + right: 8.33333333%; +} +.col-xs-pull-0 { + right: auto; +} +.col-xs-push-12 { + left: 100%; +} +.col-xs-push-11 { + left: 91.66666667%; +} +.col-xs-push-10 { + left: 83.33333333%; +} +.col-xs-push-9 { + left: 75%; +} +.col-xs-push-8 { + left: 66.66666667%; +} +.col-xs-push-7 { + left: 58.33333333%; +} +.col-xs-push-6 { + left: 50%; +} +.col-xs-push-5 { + left: 41.66666667%; +} +.col-xs-push-4 { + left: 33.33333333%; +} +.col-xs-push-3 { + left: 25%; +} +.col-xs-push-2 { + left: 16.66666667%; +} +.col-xs-push-1 { + left: 8.33333333%; +} +.col-xs-push-0 { + left: auto; +} +.col-xs-offset-12 { + margin-left: 100%; +} +.col-xs-offset-11 { + margin-left: 91.66666667%; +} +.col-xs-offset-10 { + margin-left: 83.33333333%; +} +.col-xs-offset-9 { + margin-left: 75%; +} +.col-xs-offset-8 { + margin-left: 66.66666667%; +} +.col-xs-offset-7 { + margin-left: 58.33333333%; +} +.col-xs-offset-6 { + margin-left: 50%; +} +.col-xs-offset-5 { + margin-left: 41.66666667%; +} +.col-xs-offset-4 { + margin-left: 33.33333333%; +} +.col-xs-offset-3 { + margin-left: 25%; +} +.col-xs-offset-2 { + margin-left: 16.66666667%; +} +.col-xs-offset-1 { + margin-left: 8.33333333%; +} +.col-xs-offset-0 { + margin-left: 0; +} +@media (min-width: 768px) { + .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { + float: left; + } + .col-sm-12 { + width: 100%; + } + .col-sm-11 { + width: 91.66666667%; + } + .col-sm-10 { + width: 83.33333333%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-8 { + width: 66.66666667%; + } + .col-sm-7 { + width: 58.33333333%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-5 { + width: 41.66666667%; + } + .col-sm-4 { + width: 33.33333333%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-2 { + width: 16.66666667%; + } + .col-sm-1 { + width: 8.33333333%; + } + .col-sm-pull-12 { + right: 100%; + } + .col-sm-pull-11 { + right: 91.66666667%; + } + .col-sm-pull-10 { + right: 83.33333333%; + } + .col-sm-pull-9 { + right: 75%; + } + .col-sm-pull-8 { + right: 66.66666667%; + } + .col-sm-pull-7 { + right: 58.33333333%; + } + .col-sm-pull-6 { + right: 50%; + } + .col-sm-pull-5 { + right: 41.66666667%; + } + .col-sm-pull-4 { + right: 33.33333333%; + } + .col-sm-pull-3 { + right: 25%; + } + .col-sm-pull-2 { + right: 16.66666667%; + } + .col-sm-pull-1 { + right: 8.33333333%; + } + .col-sm-pull-0 { + right: auto; + } + .col-sm-push-12 { + left: 100%; + } + .col-sm-push-11 { + left: 91.66666667%; + } + .col-sm-push-10 { + left: 83.33333333%; + } + .col-sm-push-9 { + left: 75%; + } + .col-sm-push-8 { + left: 66.66666667%; + } + .col-sm-push-7 { + left: 58.33333333%; + } + .col-sm-push-6 { + left: 50%; + } + .col-sm-push-5 { + left: 41.66666667%; + } + .col-sm-push-4 { + left: 33.33333333%; + } + .col-sm-push-3 { + left: 25%; + } + .col-sm-push-2 { + left: 16.66666667%; + } + .col-sm-push-1 { + left: 8.33333333%; + } + .col-sm-push-0 { + left: auto; + } + .col-sm-offset-12 { + margin-left: 100%; + } + .col-sm-offset-11 { + margin-left: 91.66666667%; + } + .col-sm-offset-10 { + margin-left: 83.33333333%; + } + .col-sm-offset-9 { + margin-left: 75%; + } + .col-sm-offset-8 { + margin-left: 66.66666667%; + } + .col-sm-offset-7 { + margin-left: 58.33333333%; + } + .col-sm-offset-6 { + margin-left: 50%; + } + .col-sm-offset-5 { + margin-left: 41.66666667%; + } + .col-sm-offset-4 { + margin-left: 33.33333333%; + } + .col-sm-offset-3 { + margin-left: 25%; + } + .col-sm-offset-2 { + margin-left: 16.66666667%; + } + .col-sm-offset-1 { + margin-left: 8.33333333%; + } + .col-sm-offset-0 { + margin-left: 0; + } +} +@media (min-width: 992px) { + .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { + float: left; + } + .col-md-12 { + width: 100%; + } + .col-md-11 { + width: 91.66666667%; + } + .col-md-10 { + width: 83.33333333%; + } + .col-md-9 { + width: 75%; + } + .col-md-8 { + width: 66.66666667%; + } + .col-md-7 { + width: 58.33333333%; + } + .col-md-6 { + width: 50%; + } + .col-md-5 { + width: 41.66666667%; + } + .col-md-4 { + width: 33.33333333%; + } + .col-md-3 { + width: 25%; + } + .col-md-2 { + width: 16.66666667%; + } + .col-md-1 { + width: 8.33333333%; + } + .col-md-pull-12 { + right: 100%; + } + .col-md-pull-11 { + right: 91.66666667%; + } + .col-md-pull-10 { + right: 83.33333333%; + } + .col-md-pull-9 { + right: 75%; + } + .col-md-pull-8 { + right: 66.66666667%; + } + .col-md-pull-7 { + right: 58.33333333%; + } + .col-md-pull-6 { + right: 50%; + } + .col-md-pull-5 { + right: 41.66666667%; + } + .col-md-pull-4 { + right: 33.33333333%; + } + .col-md-pull-3 { + right: 25%; + } + .col-md-pull-2 { + right: 16.66666667%; + } + .col-md-pull-1 { + right: 8.33333333%; + } + .col-md-pull-0 { + right: auto; + } + .col-md-push-12 { + left: 100%; + } + .col-md-push-11 { + left: 91.66666667%; + } + .col-md-push-10 { + left: 83.33333333%; + } + .col-md-push-9 { + left: 75%; + } + .col-md-push-8 { + left: 66.66666667%; + } + .col-md-push-7 { + left: 58.33333333%; + } + .col-md-push-6 { + left: 50%; + } + .col-md-push-5 { + left: 41.66666667%; + } + .col-md-push-4 { + left: 33.33333333%; + } + .col-md-push-3 { + left: 25%; + } + .col-md-push-2 { + left: 16.66666667%; + } + .col-md-push-1 { + left: 8.33333333%; + } + .col-md-push-0 { + left: auto; + } + .col-md-offset-12 { + margin-left: 100%; + } + .col-md-offset-11 { + margin-left: 91.66666667%; + } + .col-md-offset-10 { + margin-left: 83.33333333%; + } + .col-md-offset-9 { + margin-left: 75%; + } + .col-md-offset-8 { + margin-left: 66.66666667%; + } + .col-md-offset-7 { + margin-left: 58.33333333%; + } + .col-md-offset-6 { + margin-left: 50%; + } + .col-md-offset-5 { + margin-left: 41.66666667%; + } + .col-md-offset-4 { + margin-left: 33.33333333%; + } + .col-md-offset-3 { + margin-left: 25%; + } + .col-md-offset-2 { + margin-left: 16.66666667%; + } + .col-md-offset-1 { + margin-left: 8.33333333%; + } + .col-md-offset-0 { + margin-left: 0; + } +} +@media (min-width: 1200px) { + .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { + float: left; + } + .col-lg-12 { + width: 100%; + } + .col-lg-11 { + width: 91.66666667%; + } + .col-lg-10 { + width: 83.33333333%; + } + .col-lg-9 { + width: 75%; + } + .col-lg-8 { + width: 66.66666667%; + } + .col-lg-7 { + width: 58.33333333%; + } + .col-lg-6 { + width: 50%; + } + .col-lg-5 { + width: 41.66666667%; + } + .col-lg-4 { + width: 33.33333333%; + } + .col-lg-3 { + width: 25%; + } + .col-lg-2 { + width: 16.66666667%; + } + .col-lg-1 { + width: 8.33333333%; + } + .col-lg-pull-12 { + right: 100%; + } + .col-lg-pull-11 { + right: 91.66666667%; + } + .col-lg-pull-10 { + right: 83.33333333%; + } + .col-lg-pull-9 { + right: 75%; + } + .col-lg-pull-8 { + right: 66.66666667%; + } + .col-lg-pull-7 { + right: 58.33333333%; + } + .col-lg-pull-6 { + right: 50%; + } + .col-lg-pull-5 { + right: 41.66666667%; + } + .col-lg-pull-4 { + right: 33.33333333%; + } + .col-lg-pull-3 { + right: 25%; + } + .col-lg-pull-2 { + right: 16.66666667%; + } + .col-lg-pull-1 { + right: 8.33333333%; + } + .col-lg-pull-0 { + right: auto; + } + .col-lg-push-12 { + left: 100%; + } + .col-lg-push-11 { + left: 91.66666667%; + } + .col-lg-push-10 { + left: 83.33333333%; + } + .col-lg-push-9 { + left: 75%; + } + .col-lg-push-8 { + left: 66.66666667%; + } + .col-lg-push-7 { + left: 58.33333333%; + } + .col-lg-push-6 { + left: 50%; + } + .col-lg-push-5 { + left: 41.66666667%; + } + .col-lg-push-4 { + left: 33.33333333%; + } + .col-lg-push-3 { + left: 25%; + } + .col-lg-push-2 { + left: 16.66666667%; + } + .col-lg-push-1 { + left: 8.33333333%; + } + .col-lg-push-0 { + left: auto; + } + .col-lg-offset-12 { + margin-left: 100%; + } + .col-lg-offset-11 { + margin-left: 91.66666667%; + } + .col-lg-offset-10 { + margin-left: 83.33333333%; + } + .col-lg-offset-9 { + margin-left: 75%; + } + .col-lg-offset-8 { + margin-left: 66.66666667%; + } + .col-lg-offset-7 { + margin-left: 58.33333333%; + } + .col-lg-offset-6 { + margin-left: 50%; + } + .col-lg-offset-5 { + margin-left: 41.66666667%; + } + .col-lg-offset-4 { + margin-left: 33.33333333%; + } + .col-lg-offset-3 { + margin-left: 25%; + } + .col-lg-offset-2 { + margin-left: 16.66666667%; + } + .col-lg-offset-1 { + margin-left: 8.33333333%; + } + .col-lg-offset-0 { + margin-left: 0; + } +} +table { + background-color: transparent; +} +caption { + padding-top: 8px; + padding-bottom: 8px; + color: #777; + text-align: left; +} +th { + text-align: left; +} +.table { + width: 100%; + max-width: 100%; + margin-bottom: 20px; +} +.table > thead > tr > th, +.table > tbody > tr > th, +.table > tfoot > tr > th, +.table > thead > tr > td, +.table > tbody > tr > td, +.table > tfoot > tr > td { + padding: 8px; + line-height: 1.42857143; + vertical-align: top; + border-top: 1px solid #ddd; +} +.table > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #ddd; +} +.table > caption + thead > tr:first-child > th, +.table > colgroup + thead > tr:first-child > th, +.table > thead:first-child > tr:first-child > th, +.table > caption + thead > tr:first-child > td, +.table > colgroup + thead > tr:first-child > td, +.table > thead:first-child > tr:first-child > td { + border-top: 0; +} +.table > tbody + tbody { + border-top: 2px solid #ddd; +} +.table .table { + background-color: #fff; +} +.table-condensed > thead > tr > th, +.table-condensed > tbody > tr > th, +.table-condensed > tfoot > tr > th, +.table-condensed > thead > tr > td, +.table-condensed > tbody > tr > td, +.table-condensed > tfoot > tr > td { + padding: 5px; +} +.table-bordered { + border: 1px solid #ddd; +} +.table-bordered > thead > tr > th, +.table-bordered > tbody > tr > th, +.table-bordered > tfoot > tr > th, +.table-bordered > thead > tr > td, +.table-bordered > tbody > tr > td, +.table-bordered > tfoot > tr > td { + border: 1px solid #ddd; +} +.table-bordered > thead > tr > th, +.table-bordered > thead > tr > td { + border-bottom-width: 2px; +} +.table-striped > tbody > tr:nth-child(odd) { + background-color: #f9f9f9; +} +.table-hover > tbody > tr:hover { + background-color: #f5f5f5; +} +table col[class*="col-"] { + position: static; + display: table-column; + float: none; +} +table td[class*="col-"], +table th[class*="col-"] { + position: static; + display: table-cell; + float: none; +} +.table > thead > tr > td.active, +.table > tbody > tr > td.active, +.table > tfoot > tr > td.active, +.table > thead > tr > th.active, +.table > tbody > tr > th.active, +.table > tfoot > tr > th.active, +.table > thead > tr.active > td, +.table > tbody > tr.active > td, +.table > tfoot > tr.active > td, +.table > thead > tr.active > th, +.table > tbody > tr.active > th, +.table > tfoot > tr.active > th { + background-color: #f5f5f5; +} +.table-hover > tbody > tr > td.active:hover, +.table-hover > tbody > tr > th.active:hover, +.table-hover > tbody > tr.active:hover > td, +.table-hover > tbody > tr:hover > .active, +.table-hover > tbody > tr.active:hover > th { + background-color: #e8e8e8; +} +.table > thead > tr > td.success, +.table > tbody > tr > td.success, +.table > tfoot > tr > td.success, +.table > thead > tr > th.success, +.table > tbody > tr > th.success, +.table > tfoot > tr > th.success, +.table > thead > tr.success > td, +.table > tbody > tr.success > td, +.table > tfoot > tr.success > td, +.table > thead > tr.success > th, +.table > tbody > tr.success > th, +.table > tfoot > tr.success > th { + background-color: #dff0d8; +} +.table-hover > tbody > tr > td.success:hover, +.table-hover > tbody > tr > th.success:hover, +.table-hover > tbody > tr.success:hover > td, +.table-hover > tbody > tr:hover > .success, +.table-hover > tbody > tr.success:hover > th { + background-color: #d0e9c6; +} +.table > thead > tr > td.info, +.table > tbody > tr > td.info, +.table > tfoot > tr > td.info, +.table > thead > tr > th.info, +.table > tbody > tr > th.info, +.table > tfoot > tr > th.info, +.table > thead > tr.info > td, +.table > tbody > tr.info > td, +.table > tfoot > tr.info > td, +.table > thead > tr.info > th, +.table > tbody > tr.info > th, +.table > tfoot > tr.info > th { + background-color: #d9edf7; +} +.table-hover > tbody > tr > td.info:hover, +.table-hover > tbody > tr > th.info:hover, +.table-hover > tbody > tr.info:hover > td, +.table-hover > tbody > tr:hover > .info, +.table-hover > tbody > tr.info:hover > th { + background-color: #c4e3f3; +} +.table > thead > tr > td.warning, +.table > tbody > tr > td.warning, +.table > tfoot > tr > td.warning, +.table > thead > tr > th.warning, +.table > tbody > tr > th.warning, +.table > tfoot > tr > th.warning, +.table > thead > tr.warning > td, +.table > tbody > tr.warning > td, +.table > tfoot > tr.warning > td, +.table > thead > tr.warning > th, +.table > tbody > tr.warning > th, +.table > tfoot > tr.warning > th { + background-color: #fcf8e3; +} +.table-hover > tbody > tr > td.warning:hover, +.table-hover > tbody > tr > th.warning:hover, +.table-hover > tbody > tr.warning:hover > td, +.table-hover > tbody > tr:hover > .warning, +.table-hover > tbody > tr.warning:hover > th { + background-color: #faf2cc; +} +.table > thead > tr > td.danger, +.table > tbody > tr > td.danger, +.table > tfoot > tr > td.danger, +.table > thead > tr > th.danger, +.table > tbody > tr > th.danger, +.table > tfoot > tr > th.danger, +.table > thead > tr.danger > td, +.table > tbody > tr.danger > td, +.table > tfoot > tr.danger > td, +.table > thead > tr.danger > th, +.table > tbody > tr.danger > th, +.table > tfoot > tr.danger > th { + background-color: #f2dede; +} +.table-hover > tbody > tr > td.danger:hover, +.table-hover > tbody > tr > th.danger:hover, +.table-hover > tbody > tr.danger:hover > td, +.table-hover > tbody > tr:hover > .danger, +.table-hover > tbody > tr.danger:hover > th { + background-color: #ebcccc; +} +.table-responsive { + min-height: .01%; + overflow-x: auto; +} +@media screen and (max-width: 767px) { + .table-responsive { + width: 100%; + margin-bottom: 15px; + overflow-y: hidden; + -ms-overflow-style: -ms-autohiding-scrollbar; + border: 1px solid #ddd; + } + .table-responsive > .table { + margin-bottom: 0; + } + .table-responsive > .table > thead > tr > th, + .table-responsive > .table > tbody > tr > th, + .table-responsive > .table > tfoot > tr > th, + .table-responsive > .table > thead > tr > td, + .table-responsive > .table > tbody > tr > td, + .table-responsive > .table > tfoot > tr > td { + white-space: nowrap; + } + .table-responsive > .table-bordered { + border: 0; + } + .table-responsive > .table-bordered > thead > tr > th:first-child, + .table-responsive > .table-bordered > tbody > tr > th:first-child, + .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .table-responsive > .table-bordered > thead > tr > td:first-child, + .table-responsive > .table-bordered > tbody > tr > td:first-child, + .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; + } + .table-responsive > .table-bordered > thead > tr > th:last-child, + .table-responsive > .table-bordered > tbody > tr > th:last-child, + .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .table-responsive > .table-bordered > thead > tr > td:last-child, + .table-responsive > .table-bordered > tbody > tr > td:last-child, + .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; + } + .table-responsive > .table-bordered > tbody > tr:last-child > th, + .table-responsive > .table-bordered > tfoot > tr:last-child > th, + .table-responsive > .table-bordered > tbody > tr:last-child > td, + .table-responsive > .table-bordered > tfoot > tr:last-child > td { + border-bottom: 0; + } +} +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; +} +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: inherit; + color: #333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} +label { + display: inline-block; + max-width: 100%; + margin-bottom: 5px; + font-weight: bold; +} +input[type="search"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + line-height: normal; +} +input[type="file"] { + display: block; +} +input[type="range"] { + display: block; + width: 100%; +} +select[multiple], +select[size] { + height: auto; +} +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +output { + display: block; + padding-top: 7px; + font-size: 14px; + line-height: 1.42857143; + color: #555; +} +.form-control { + display: block; + width: 100%; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; +} +.form-control:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); +} +.form-control::-moz-placeholder { + color: #999; + opacity: 1; +} +.form-control:-ms-input-placeholder { + color: #999; +} +.form-control::-webkit-input-placeholder { + color: #999; +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + cursor: not-allowed; + background-color: #eee; + opacity: 1; +} +textarea.form-control { + height: auto; +} +input[type="search"] { + -webkit-appearance: none; +} +@media screen and (-webkit-min-device-pixel-ratio: 0) { + input[type="date"], + input[type="time"], + input[type="datetime-local"], + input[type="month"] { + line-height: 34px; + } + input[type="date"].input-sm, + input[type="time"].input-sm, + input[type="datetime-local"].input-sm, + input[type="month"].input-sm { + line-height: 30px; + } + input[type="date"].input-lg, + input[type="time"].input-lg, + input[type="datetime-local"].input-lg, + input[type="month"].input-lg { + line-height: 46px; + } +} +.form-group { + margin-bottom: 15px; +} +.radio, +.checkbox { + position: relative; + display: block; + margin-top: 10px; + margin-bottom: 10px; +} +.radio label, +.checkbox label { + min-height: 20px; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; +} +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + position: absolute; + margin-top: 4px \9; + margin-left: -20px; +} +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; +} +.radio-inline, +.checkbox-inline { + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + vertical-align: middle; + cursor: pointer; +} +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; +} +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"].disabled, +input[type="checkbox"].disabled, +fieldset[disabled] input[type="radio"], +fieldset[disabled] input[type="checkbox"] { + cursor: not-allowed; +} +.radio-inline.disabled, +.checkbox-inline.disabled, +fieldset[disabled] .radio-inline, +fieldset[disabled] .checkbox-inline { + cursor: not-allowed; +} +.radio.disabled label, +.checkbox.disabled label, +fieldset[disabled] .radio label, +fieldset[disabled] .checkbox label { + cursor: not-allowed; +} +.form-control-static { + padding-top: 7px; + padding-bottom: 7px; + margin-bottom: 0; +} +.form-control-static.input-lg, +.form-control-static.input-sm { + padding-right: 0; + padding-left: 0; +} +.input-sm, +.form-group-sm .form-control { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.input-sm, +select.form-group-sm .form-control { + height: 30px; + line-height: 30px; +} +textarea.input-sm, +textarea.form-group-sm .form-control, +select[multiple].input-sm, +select[multiple].form-group-sm .form-control { + height: auto; +} +.input-lg, +.form-group-lg .form-control { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} +select.input-lg, +select.form-group-lg .form-control { + height: 46px; + line-height: 46px; +} +textarea.input-lg, +textarea.form-group-lg .form-control, +select[multiple].input-lg, +select[multiple].form-group-lg .form-control { + height: auto; +} +.has-feedback { + position: relative; +} +.has-feedback .form-control { + padding-right: 42.5px; +} +.form-control-feedback { + position: absolute; + top: 0; + right: 0; + z-index: 2; + display: block; + width: 34px; + height: 34px; + line-height: 34px; + text-align: center; + pointer-events: none; +} +.input-lg + .form-control-feedback { + width: 46px; + height: 46px; + line-height: 46px; +} +.input-sm + .form-control-feedback { + width: 30px; + height: 30px; + line-height: 30px; +} +.has-success .help-block, +.has-success .control-label, +.has-success .radio, +.has-success .checkbox, +.has-success .radio-inline, +.has-success .checkbox-inline, +.has-success.radio label, +.has-success.checkbox label, +.has-success.radio-inline label, +.has-success.checkbox-inline label { + color: #3c763d; +} +.has-success .form-control { + border-color: #3c763d; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-success .form-control:focus { + border-color: #2b542c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; +} +.has-success .input-group-addon { + color: #3c763d; + background-color: #dff0d8; + border-color: #3c763d; +} +.has-success .form-control-feedback { + color: #3c763d; +} +.has-warning .help-block, +.has-warning .control-label, +.has-warning .radio, +.has-warning .checkbox, +.has-warning .radio-inline, +.has-warning .checkbox-inline, +.has-warning.radio label, +.has-warning.checkbox label, +.has-warning.radio-inline label, +.has-warning.checkbox-inline label { + color: #8a6d3b; +} +.has-warning .form-control { + border-color: #8a6d3b; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-warning .form-control:focus { + border-color: #66512c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; +} +.has-warning .input-group-addon { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #8a6d3b; +} +.has-warning .form-control-feedback { + color: #8a6d3b; +} +.has-error .help-block, +.has-error .control-label, +.has-error .radio, +.has-error .checkbox, +.has-error .radio-inline, +.has-error .checkbox-inline, +.has-error.radio label, +.has-error.checkbox label, +.has-error.radio-inline label, +.has-error.checkbox-inline label { + color: #a94442; +} +.has-error .form-control { + border-color: #a94442; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-error .form-control:focus { + border-color: #843534; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; +} +.has-error .input-group-addon { + color: #a94442; + background-color: #f2dede; + border-color: #a94442; +} +.has-error .form-control-feedback { + color: #a94442; +} +.has-feedback label ~ .form-control-feedback { + top: 25px; +} +.has-feedback label.sr-only ~ .form-control-feedback { + top: 0; +} +.help-block { + display: block; + margin-top: 5px; + margin-bottom: 10px; + color: #737373; +} +@media (min-width: 768px) { + .form-inline .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .form-inline .form-control-static { + display: inline-block; + } + .form-inline .input-group { + display: inline-table; + vertical-align: middle; + } + .form-inline .input-group .input-group-addon, + .form-inline .input-group .input-group-btn, + .form-inline .input-group .form-control { + width: auto; + } + .form-inline .input-group > .form-control { + width: 100%; + } + .form-inline .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio, + .form-inline .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio label, + .form-inline .checkbox label { + padding-left: 0; + } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .form-inline .has-feedback .form-control-feedback { + top: 0; + } +} +.form-horizontal .radio, +.form-horizontal .checkbox, +.form-horizontal .radio-inline, +.form-horizontal .checkbox-inline { + padding-top: 7px; + margin-top: 0; + margin-bottom: 0; +} +.form-horizontal .radio, +.form-horizontal .checkbox { + min-height: 27px; +} +.form-horizontal .form-group { + margin-right: -15px; + margin-left: -15px; +} +@media (min-width: 768px) { + .form-horizontal .control-label { + padding-top: 7px; + margin-bottom: 0; + text-align: right; + } +} +.form-horizontal .has-feedback .form-control-feedback { + right: 15px; +} +@media (min-width: 768px) { + .form-horizontal .form-group-lg .control-label { + padding-top: 14.3px; + } +} +@media (min-width: 768px) { + .form-horizontal .form-group-sm .control-label { + padding-top: 6px; + } +} +.btn { + display: inline-block; + padding: 6px 12px; + margin-bottom: 0; + font-size: 14px; + font-weight: normal; + line-height: 1.42857143; + text-align: center; + white-space: nowrap; + vertical-align: middle; + -ms-touch-action: manipulation; + touch-action: manipulation; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} +.btn:focus, +.btn:active:focus, +.btn.active:focus, +.btn.focus, +.btn:active.focus, +.btn.active.focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.btn:hover, +.btn:focus, +.btn.focus { + color: #333; + text-decoration: none; +} +.btn:active, +.btn.active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); +} +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + pointer-events: none; + cursor: not-allowed; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; + opacity: .65; +} +.btn-default { + color: #333; + background-color: #fff; + border-color: #ccc; +} +.btn-default:hover, +.btn-default:focus, +.btn-default.focus, +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + color: #333; + background-color: #e6e6e6; + border-color: #adadad; +} +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + background-image: none; +} +.btn-default.disabled, +.btn-default[disabled], +fieldset[disabled] .btn-default, +.btn-default.disabled:hover, +.btn-default[disabled]:hover, +fieldset[disabled] .btn-default:hover, +.btn-default.disabled:focus, +.btn-default[disabled]:focus, +fieldset[disabled] .btn-default:focus, +.btn-default.disabled.focus, +.btn-default[disabled].focus, +fieldset[disabled] .btn-default.focus, +.btn-default.disabled:active, +.btn-default[disabled]:active, +fieldset[disabled] .btn-default:active, +.btn-default.disabled.active, +.btn-default[disabled].active, +fieldset[disabled] .btn-default.active { + background-color: #fff; + border-color: #ccc; +} +.btn-default .badge { + color: #fff; + background-color: #333; +} +.btn-primary { + color: #fff; + background-color: #337ab7; + border-color: #2e6da4; +} +.btn-primary:hover, +.btn-primary:focus, +.btn-primary.focus, +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + color: #fff; + background-color: #286090; + border-color: #204d74; +} +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + background-image: none; +} +.btn-primary.disabled, +.btn-primary[disabled], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled.focus, +.btn-primary[disabled].focus, +fieldset[disabled] .btn-primary.focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + background-color: #337ab7; + border-color: #2e6da4; +} +.btn-primary .badge { + color: #337ab7; + background-color: #fff; +} +.btn-success { + color: #fff; + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success:hover, +.btn-success:focus, +.btn-success.focus, +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + color: #fff; + background-color: #449d44; + border-color: #398439; +} +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + background-image: none; +} +.btn-success.disabled, +.btn-success[disabled], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled.focus, +.btn-success[disabled].focus, +fieldset[disabled] .btn-success.focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success .badge { + color: #5cb85c; + background-color: #fff; +} +.btn-info { + color: #fff; + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info:hover, +.btn-info:focus, +.btn-info.focus, +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + color: #fff; + background-color: #31b0d5; + border-color: #269abc; +} +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + background-image: none; +} +.btn-info.disabled, +.btn-info[disabled], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled.focus, +.btn-info[disabled].focus, +fieldset[disabled] .btn-info.focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info .badge { + color: #5bc0de; + background-color: #fff; +} +.btn-warning { + color: #fff; + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning:hover, +.btn-warning:focus, +.btn-warning.focus, +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + color: #fff; + background-color: #ec971f; + border-color: #d58512; +} +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + background-image: none; +} +.btn-warning.disabled, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled.focus, +.btn-warning[disabled].focus, +fieldset[disabled] .btn-warning.focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning .badge { + color: #f0ad4e; + background-color: #fff; +} +.btn-danger { + color: #fff; + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger:hover, +.btn-danger:focus, +.btn-danger.focus, +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + color: #fff; + background-color: #c9302c; + border-color: #ac2925; +} +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + background-image: none; +} +.btn-danger.disabled, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled.focus, +.btn-danger[disabled].focus, +fieldset[disabled] .btn-danger.focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger .badge { + color: #d9534f; + background-color: #fff; +} +.btn-link { + font-weight: normal; + color: #337ab7; + border-radius: 0; +} +.btn-link, +.btn-link:active, +.btn-link.active, +.btn-link[disabled], +fieldset[disabled] .btn-link { + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} +.btn-link, +.btn-link:hover, +.btn-link:focus, +.btn-link:active { + border-color: transparent; +} +.btn-link:hover, +.btn-link:focus { + color: #23527c; + text-decoration: underline; + background-color: transparent; +} +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:hover, +.btn-link[disabled]:focus, +fieldset[disabled] .btn-link:focus { + color: #777; + text-decoration: none; +} +.btn-lg, +.btn-group-lg > .btn { + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} +.btn-sm, +.btn-group-sm > .btn { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-xs, +.btn-group-xs > .btn { + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-block { + display: block; + width: 100%; +} +.btn-block + .btn-block { + margin-top: 5px; +} +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} +.fade { + opacity: 0; + -webkit-transition: opacity .15s linear; + -o-transition: opacity .15s linear; + transition: opacity .15s linear; +} +.fade.in { + opacity: 1; +} +.collapse { + display: none; + visibility: hidden; +} +.collapse.in { + display: block; + visibility: visible; +} +tr.collapse.in { + display: table-row; +} +tbody.collapse.in { + display: table-row-group; +} +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition-timing-function: ease; + -o-transition-timing-function: ease; + transition-timing-function: ease; + -webkit-transition-duration: .35s; + -o-transition-duration: .35s; + transition-duration: .35s; + -webkit-transition-property: height, visibility; + -o-transition-property: height, visibility; + transition-property: height, visibility; +} +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 4px solid; + border-right: 4px solid transparent; + border-left: 4px solid transparent; +} +.dropdown { + position: relative; +} +.dropdown-toggle:focus { + outline: 0; +} +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + font-size: 14px; + text-align: left; + list-style: none; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); + box-shadow: 0 6px 12px rgba(0, 0, 0, .175); +} +.dropdown-menu.pull-right { + right: 0; + left: auto; +} +.dropdown-menu .divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 1.42857143; + color: #333; + white-space: nowrap; +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + color: #262626; + text-decoration: none; + background-color: #f5f5f5; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #fff; + text-decoration: none; + background-color: #337ab7; + outline: 0; +} +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #777; +} +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + cursor: not-allowed; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.open > .dropdown-menu { + display: block; +} +.open > a { + outline: 0; +} +.dropdown-menu-right { + right: 0; + left: auto; +} +.dropdown-menu-left { + right: auto; + left: 0; +} +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + line-height: 1.42857143; + color: #777; + white-space: nowrap; +} +.dropdown-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 990; +} +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + content: ""; + border-top: 0; + border-bottom: 4px solid; +} +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; +} +@media (min-width: 768px) { + .navbar-right .dropdown-menu { + right: 0; + left: auto; + } + .navbar-right .dropdown-menu-left { + right: auto; + left: 0; + } +} +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; +} +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + float: left; +} +.btn-group > .btn:hover, +.btn-group-vertical > .btn:hover, +.btn-group > .btn:focus, +.btn-group-vertical > .btn:focus, +.btn-group > .btn:active, +.btn-group-vertical > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn.active { + z-index: 2; +} +.btn-group .btn + .btn, +.btn-group .btn + .btn-group, +.btn-group .btn-group + .btn, +.btn-group .btn-group + .btn-group { + margin-left: -1px; +} +.btn-toolbar { + margin-left: -5px; +} +.btn-toolbar .btn-group, +.btn-toolbar .input-group { + float: left; +} +.btn-toolbar > .btn, +.btn-toolbar > .btn-group, +.btn-toolbar > .input-group { + margin-left: 5px; +} +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} +.btn-group > .btn:first-child { + margin-left: 0; +} +.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group > .btn-group { + float: left; +} +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group > .btn-group:first-child > .btn:last-child, +.btn-group > .btn-group:first-child > .dropdown-toggle { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group > .btn-group:last-child > .btn:first-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} +.btn-group > .btn + .dropdown-toggle { + padding-right: 8px; + padding-left: 8px; +} +.btn-group > .btn-lg + .dropdown-toggle { + padding-right: 12px; + padding-left: 12px; +} +.btn-group.open .dropdown-toggle { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); +} +.btn-group.open .dropdown-toggle.btn-link { + -webkit-box-shadow: none; + box-shadow: none; +} +.btn .caret { + margin-left: 0; +} +.btn-lg .caret { + border-width: 5px 5px 0; + border-bottom-width: 0; +} +.dropup .btn-lg .caret { + border-width: 0 5px 5px; +} +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group, +.btn-group-vertical > .btn-group > .btn { + display: block; + float: none; + width: 100%; + max-width: 100%; +} +.btn-group-vertical > .btn-group > .btn { + float: none; +} +.btn-group-vertical > .btn + .btn, +.btn-group-vertical > .btn + .btn-group, +.btn-group-vertical > .btn-group + .btn, +.btn-group-vertical > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; +} +.btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; +} +.btn-group-vertical > .btn:first-child:not(:last-child) { + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-left-radius: 4px; +} +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; +} +.btn-group-justified > .btn, +.btn-group-justified > .btn-group { + display: table-cell; + float: none; + width: 1%; +} +.btn-group-justified > .btn-group .btn { + width: 100%; +} +.btn-group-justified > .btn-group .dropdown-menu { + left: auto; +} +[data-toggle="buttons"] > .btn input[type="radio"], +[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], +[data-toggle="buttons"] > .btn input[type="checkbox"], +[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; +} +.input-group { + position: relative; + display: table; + border-collapse: separate; +} +.input-group[class*="col-"] { + float: none; + padding-right: 0; + padding-left: 0; +} +.input-group .form-control { + position: relative; + z-index: 2; + float: left; + width: 100%; + margin-bottom: 0; +} +.input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} +select.input-group-lg > .form-control, +select.input-group-lg > .input-group-addon, +select.input-group-lg > .input-group-btn > .btn { + height: 46px; + line-height: 46px; +} +textarea.input-group-lg > .form-control, +textarea.input-group-lg > .input-group-addon, +textarea.input-group-lg > .input-group-btn > .btn, +select[multiple].input-group-lg > .form-control, +select[multiple].input-group-lg > .input-group-addon, +select[multiple].input-group-lg > .input-group-btn > .btn { + height: auto; +} +.input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.input-group-sm > .form-control, +select.input-group-sm > .input-group-addon, +select.input-group-sm > .input-group-btn > .btn { + height: 30px; + line-height: 30px; +} +textarea.input-group-sm > .form-control, +textarea.input-group-sm > .input-group-addon, +textarea.input-group-sm > .input-group-btn > .btn, +select[multiple].input-group-sm > .form-control, +select[multiple].input-group-sm > .input-group-addon, +select[multiple].input-group-sm > .input-group-btn > .btn { + height: auto; +} +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: table-cell; +} +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child), +.input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; +} +.input-group-addon, +.input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; +} +.input-group-addon { + padding: 6px 12px; + font-size: 14px; + font-weight: normal; + line-height: 1; + color: #555; + text-align: center; + background-color: #eee; + border: 1px solid #ccc; + border-radius: 4px; +} +.input-group-addon.input-sm { + padding: 5px 10px; + font-size: 12px; + border-radius: 3px; +} +.input-group-addon.input-lg { + padding: 10px 16px; + font-size: 18px; + border-radius: 6px; +} +.input-group-addon input[type="radio"], +.input-group-addon input[type="checkbox"] { + margin-top: 0; +} +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group-addon:first-child { + border-right: 0; +} +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.input-group-addon:last-child { + border-left: 0; +} +.input-group-btn { + position: relative; + font-size: 0; + white-space: nowrap; +} +.input-group-btn > .btn { + position: relative; +} +.input-group-btn > .btn + .btn { + margin-left: -1px; +} +.input-group-btn > .btn:hover, +.input-group-btn > .btn:focus, +.input-group-btn > .btn:active { + z-index: 2; +} +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group { + margin-right: -1px; +} +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group { + margin-left: -1px; +} +.nav { + padding-left: 0; + margin-bottom: 0; + list-style: none; +} +.nav > li { + position: relative; + display: block; +} +.nav > li > a { + position: relative; + display: block; + padding: 10px 15px; +} +.nav > li > a:hover, +.nav > li > a:focus { + text-decoration: none; + background-color: #eee; +} +.nav > li.disabled > a { + color: #777; +} +.nav > li.disabled > a:hover, +.nav > li.disabled > a:focus { + color: #777; + text-decoration: none; + cursor: not-allowed; + background-color: transparent; +} +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + background-color: #eee; + border-color: #337ab7; +} +.nav .nav-divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.nav > li > a > img { + max-width: none; +} +.nav-tabs { + border-bottom: 1px solid #ddd; +} +.nav-tabs > li { + float: left; + margin-bottom: -1px; +} +.nav-tabs > li > a { + margin-right: 2px; + line-height: 1.42857143; + border: 1px solid transparent; + border-radius: 4px 4px 0 0; +} +.nav-tabs > li > a:hover { + border-color: #eee #eee #ddd; +} +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus { + color: #555; + cursor: default; + background-color: #fff; + border: 1px solid #ddd; + border-bottom-color: transparent; +} +.nav-tabs.nav-justified { + width: 100%; + border-bottom: 0; +} +.nav-tabs.nav-justified > li { + float: none; +} +.nav-tabs.nav-justified > li > a { + margin-bottom: 5px; + text-align: center; +} +.nav-tabs.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-tabs.nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs.nav-justified > li > a { + margin-right: 0; + border-radius: 4px; +} +.nav-tabs.nav-justified > .active > a, +.nav-tabs.nav-justified > .active > a:hover, +.nav-tabs.nav-justified > .active > a:focus { + border: 1px solid #ddd; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs.nav-justified > .active > a, + .nav-tabs.nav-justified > .active > a:hover, + .nav-tabs.nav-justified > .active > a:focus { + border-bottom-color: #fff; + } +} +.nav-pills > li { + float: left; +} +.nav-pills > li > a { + border-radius: 4px; +} +.nav-pills > li + li { + margin-left: 2px; +} +.nav-pills > li.active > a, +.nav-pills > li.active > a:hover, +.nav-pills > li.active > a:focus { + color: #fff; + background-color: #337ab7; +} +.nav-stacked > li { + float: none; +} +.nav-stacked > li + li { + margin-top: 2px; + margin-left: 0; +} +.nav-justified { + width: 100%; +} +.nav-justified > li { + float: none; +} +.nav-justified > li > a { + margin-bottom: 5px; + text-align: center; +} +.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs-justified { + border-bottom: 0; +} +.nav-tabs-justified > li > a { + margin-right: 0; + border-radius: 4px; +} +.nav-tabs-justified > .active > a, +.nav-tabs-justified > .active > a:hover, +.nav-tabs-justified > .active > a:focus { + border: 1px solid #ddd; +} +@media (min-width: 768px) { + .nav-tabs-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs-justified > .active > a, + .nav-tabs-justified > .active > a:hover, + .nav-tabs-justified > .active > a:focus { + border-bottom-color: #fff; + } +} +.tab-content > .tab-pane { + display: none; + visibility: hidden; +} +.tab-content > .active { + display: block; + visibility: visible; +} +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.navbar { + position: relative; + min-height: 50px; + margin-bottom: 20px; + border: 1px solid transparent; +} +@media (min-width: 768px) { + .navbar { + border-radius: 4px; + } +} +@media (min-width: 768px) { + .navbar-header { + float: left; + } +} +.navbar-collapse { + padding-right: 15px; + padding-left: 15px; + overflow-x: visible; + -webkit-overflow-scrolling: touch; + border-top: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); +} +.navbar-collapse.in { + overflow-y: auto; +} +@media (min-width: 768px) { + .navbar-collapse { + width: auto; + border-top: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-collapse.collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important; + visibility: visible !important; + } + .navbar-collapse.in { + overflow-y: visible; + } + .navbar-fixed-top .navbar-collapse, + .navbar-static-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + padding-right: 0; + padding-left: 0; + } +} +.navbar-fixed-top .navbar-collapse, +.navbar-fixed-bottom .navbar-collapse { + max-height: 340px; +} +@media (max-device-width: 480px) and (orientation: landscape) { + .navbar-fixed-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + max-height: 200px; + } +} +.container > .navbar-header, +.container-fluid > .navbar-header, +.container > .navbar-collapse, +.container-fluid > .navbar-collapse { + margin-right: -15px; + margin-left: -15px; +} +@media (min-width: 768px) { + .container > .navbar-header, + .container-fluid > .navbar-header, + .container > .navbar-collapse, + .container-fluid > .navbar-collapse { + margin-right: 0; + margin-left: 0; + } +} +.navbar-static-top { + z-index: 1000; + border-width: 0 0 1px; +} +@media (min-width: 768px) { + .navbar-static-top { + border-radius: 0; + } +} +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; +} +@media (min-width: 768px) { + .navbar-fixed-top, + .navbar-fixed-bottom { + border-radius: 0; + } +} +.navbar-fixed-top { + top: 0; + border-width: 0 0 1px; +} +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; + border-width: 1px 0 0; +} +.navbar-brand { + float: left; + height: 50px; + padding: 15px 15px; + font-size: 18px; + line-height: 20px; +} +.navbar-brand:hover, +.navbar-brand:focus { + text-decoration: none; +} +.navbar-brand > img { + display: block; +} +@media (min-width: 768px) { + .navbar > .container .navbar-brand, + .navbar > .container-fluid .navbar-brand { + margin-left: -15px; + } +} +.navbar-toggle { + position: relative; + float: right; + padding: 9px 10px; + margin-top: 8px; + margin-right: 15px; + margin-bottom: 8px; + background-color: transparent; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} +.navbar-toggle:focus { + outline: 0; +} +.navbar-toggle .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px; +} +.navbar-toggle .icon-bar + .icon-bar { + margin-top: 4px; +} +@media (min-width: 768px) { + .navbar-toggle { + display: none; + } +} +.navbar-nav { + margin: 7.5px -15px; +} +.navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; + line-height: 20px; +} +@media (max-width: 767px) { + .navbar-nav .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-nav .open .dropdown-menu > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 5px 15px 5px 25px; + } + .navbar-nav .open .dropdown-menu > li > a { + line-height: 20px; + } + .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-nav .open .dropdown-menu > li > a:focus { + background-image: none; + } +} +@media (min-width: 768px) { + .navbar-nav { + float: left; + margin: 0; + } + .navbar-nav > li { + float: left; + } + .navbar-nav > li > a { + padding-top: 15px; + padding-bottom: 15px; + } +} +.navbar-form { + padding: 10px 15px; + margin-top: 8px; + margin-right: -15px; + margin-bottom: 8px; + margin-left: -15px; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); +} +@media (min-width: 768px) { + .navbar-form .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .navbar-form .form-control-static { + display: inline-block; + } + .navbar-form .input-group { + display: inline-table; + vertical-align: middle; + } + .navbar-form .input-group .input-group-addon, + .navbar-form .input-group .input-group-btn, + .navbar-form .input-group .form-control { + width: auto; + } + .navbar-form .input-group > .form-control { + width: 100%; + } + .navbar-form .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio, + .navbar-form .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio label, + .navbar-form .checkbox label { + padding-left: 0; + } + .navbar-form .radio input[type="radio"], + .navbar-form .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .navbar-form .has-feedback .form-control-feedback { + top: 0; + } +} +@media (max-width: 767px) { + .navbar-form .form-group { + margin-bottom: 5px; + } + .navbar-form .form-group:last-child { + margin-bottom: 0; + } +} +@media (min-width: 768px) { + .navbar-form { + width: auto; + padding-top: 0; + padding-bottom: 0; + margin-right: 0; + margin-left: 0; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } +} +.navbar-nav > li > .dropdown-menu { + margin-top: 0; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.navbar-btn { + margin-top: 8px; + margin-bottom: 8px; +} +.navbar-btn.btn-sm { + margin-top: 10px; + margin-bottom: 10px; +} +.navbar-btn.btn-xs { + margin-top: 14px; + margin-bottom: 14px; +} +.navbar-text { + margin-top: 15px; + margin-bottom: 15px; +} +@media (min-width: 768px) { + .navbar-text { + float: left; + margin-right: 15px; + margin-left: 15px; + } +} +@media (min-width: 768px) { + .navbar-left { + float: left !important; + } + .navbar-right { + float: right !important; + margin-right: -15px; + } + .navbar-right ~ .navbar-right { + margin-right: 0; + } +} +.navbar-default { + background-color: #f8f8f8; + border-color: #e7e7e7; +} +.navbar-default .navbar-brand { + color: #777; +} +.navbar-default .navbar-brand:hover, +.navbar-default .navbar-brand:focus { + color: #5e5e5e; + background-color: transparent; +} +.navbar-default .navbar-text { + color: #777; +} +.navbar-default .navbar-nav > li > a { + color: #777; +} +.navbar-default .navbar-nav > li > a:hover, +.navbar-default .navbar-nav > li > a:focus { + color: #333; + background-color: transparent; +} +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:hover, +.navbar-default .navbar-nav > .active > a:focus { + color: #555; + background-color: #e7e7e7; +} +.navbar-default .navbar-nav > .disabled > a, +.navbar-default .navbar-nav > .disabled > a:hover, +.navbar-default .navbar-nav > .disabled > a:focus { + color: #ccc; + background-color: transparent; +} +.navbar-default .navbar-toggle { + border-color: #ddd; +} +.navbar-default .navbar-toggle:hover, +.navbar-default .navbar-toggle:focus { + background-color: #ddd; +} +.navbar-default .navbar-toggle .icon-bar { + background-color: #888; +} +.navbar-default .navbar-collapse, +.navbar-default .navbar-form { + border-color: #e7e7e7; +} +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .open > a:hover, +.navbar-default .navbar-nav > .open > a:focus { + color: #555; + background-color: #e7e7e7; +} +@media (max-width: 767px) { + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #777; + } + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #333; + background-color: transparent; + } + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #555; + background-color: #e7e7e7; + } + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #ccc; + background-color: transparent; + } +} +.navbar-default .navbar-link { + color: #777; +} +.navbar-default .navbar-link:hover { + color: #333; +} +.navbar-default .btn-link { + color: #777; +} +.navbar-default .btn-link:hover, +.navbar-default .btn-link:focus { + color: #333; +} +.navbar-default .btn-link[disabled]:hover, +fieldset[disabled] .navbar-default .btn-link:hover, +.navbar-default .btn-link[disabled]:focus, +fieldset[disabled] .navbar-default .btn-link:focus { + color: #ccc; +} +.navbar-inverse { + background-color: #222; + border-color: #080808; +} +.navbar-inverse .navbar-brand { + color: #9d9d9d; +} +.navbar-inverse .navbar-brand:hover, +.navbar-inverse .navbar-brand:focus { + color: #fff; + background-color: transparent; +} +.navbar-inverse .navbar-text { + color: #9d9d9d; +} +.navbar-inverse .navbar-nav > li > a { + color: #9d9d9d; +} +.navbar-inverse .navbar-nav > li > a:hover, +.navbar-inverse .navbar-nav > li > a:focus { + color: #fff; + background-color: transparent; +} +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + color: #fff; + background-color: #080808; +} +.navbar-inverse .navbar-nav > .disabled > a, +.navbar-inverse .navbar-nav > .disabled > a:hover, +.navbar-inverse .navbar-nav > .disabled > a:focus { + color: #444; + background-color: transparent; +} +.navbar-inverse .navbar-toggle { + border-color: #333; +} +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + background-color: #333; +} +.navbar-inverse .navbar-toggle .icon-bar { + background-color: #fff; +} +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #101010; +} +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .open > a:hover, +.navbar-inverse .navbar-nav > .open > a:focus { + color: #fff; + background-color: #080808; +} +@media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu .divider { + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { + color: #9d9d9d; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #fff; + background-color: transparent; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #fff; + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #444; + background-color: transparent; + } +} +.navbar-inverse .navbar-link { + color: #9d9d9d; +} +.navbar-inverse .navbar-link:hover { + color: #fff; +} +.navbar-inverse .btn-link { + color: #9d9d9d; +} +.navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link:focus { + color: #fff; +} +.navbar-inverse .btn-link[disabled]:hover, +fieldset[disabled] .navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link[disabled]:focus, +fieldset[disabled] .navbar-inverse .btn-link:focus { + color: #444; +} +.breadcrumb { + padding: 8px 15px; + margin-bottom: 20px; + list-style: none; + background-color: #f5f5f5; + border-radius: 4px; +} +.breadcrumb > li { + display: inline-block; +} +.breadcrumb > li + li:before { + padding: 0 5px; + color: #ccc; + content: "/\00a0"; +} +.breadcrumb > .active { + color: #777; +} +.pagination { + display: inline-block; + padding-left: 0; + margin: 20px 0; + border-radius: 4px; +} +.pagination > li { + display: inline; +} +.pagination > li > a, +.pagination > li > span { + position: relative; + float: left; + padding: 6px 12px; + margin-left: -1px; + line-height: 1.42857143; + color: #337ab7; + text-decoration: none; + background-color: #fff; + border: 1px solid #ddd; +} +.pagination > li:first-child > a, +.pagination > li:first-child > span { + margin-left: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} +.pagination > li:last-child > a, +.pagination > li:last-child > span { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} +.pagination > li > a:hover, +.pagination > li > span:hover, +.pagination > li > a:focus, +.pagination > li > span:focus { + color: #23527c; + background-color: #eee; + border-color: #ddd; +} +.pagination > .active > a, +.pagination > .active > span, +.pagination > .active > a:hover, +.pagination > .active > span:hover, +.pagination > .active > a:focus, +.pagination > .active > span:focus { + z-index: 2; + color: #fff; + cursor: default; + background-color: #337ab7; + border-color: #337ab7; +} +.pagination > .disabled > span, +.pagination > .disabled > span:hover, +.pagination > .disabled > span:focus, +.pagination > .disabled > a, +.pagination > .disabled > a:hover, +.pagination > .disabled > a:focus { + color: #777; + cursor: not-allowed; + background-color: #fff; + border-color: #ddd; +} +.pagination-lg > li > a, +.pagination-lg > li > span { + padding: 10px 16px; + font-size: 18px; +} +.pagination-lg > li:first-child > a, +.pagination-lg > li:first-child > span { + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; +} +.pagination-lg > li:last-child > a, +.pagination-lg > li:last-child > span { + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; +} +.pagination-sm > li > a, +.pagination-sm > li > span { + padding: 5px 10px; + font-size: 12px; +} +.pagination-sm > li:first-child > a, +.pagination-sm > li:first-child > span { + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; +} +.pagination-sm > li:last-child > a, +.pagination-sm > li:last-child > span { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} +.pager { + padding-left: 0; + margin: 20px 0; + text-align: center; + list-style: none; +} +.pager li { + display: inline; +} +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 15px; +} +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #eee; +} +.pager .next > a, +.pager .next > span { + float: right; +} +.pager .previous > a, +.pager .previous > span { + float: left; +} +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #777; + cursor: not-allowed; + background-color: #fff; +} +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; +} +a.label:hover, +a.label:focus { + color: #fff; + text-decoration: none; + cursor: pointer; +} +.label:empty { + display: none; +} +.btn .label { + position: relative; + top: -1px; +} +.label-default { + background-color: #777; +} +.label-default[href]:hover, +.label-default[href]:focus { + background-color: #5e5e5e; +} +.label-primary { + background-color: #337ab7; +} +.label-primary[href]:hover, +.label-primary[href]:focus { + background-color: #286090; +} +.label-success { + background-color: #5cb85c; +} +.label-success[href]:hover, +.label-success[href]:focus { + background-color: #449d44; +} +.label-info { + background-color: #5bc0de; +} +.label-info[href]:hover, +.label-info[href]:focus { + background-color: #31b0d5; +} +.label-warning { + background-color: #f0ad4e; +} +.label-warning[href]:hover, +.label-warning[href]:focus { + background-color: #ec971f; +} +.label-danger { + background-color: #d9534f; +} +.label-danger[href]:hover, +.label-danger[href]:focus { + background-color: #c9302c; +} +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: 12px; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + background-color: #777; + border-radius: 10px; +} +.badge:empty { + display: none; +} +.btn .badge { + position: relative; + top: -1px; +} +.btn-xs .badge { + top: 0; + padding: 1px 5px; +} +a.badge:hover, +a.badge:focus { + color: #fff; + text-decoration: none; + cursor: pointer; +} +.list-group-item.active > .badge, +.nav-pills > .active > a > .badge { + color: #337ab7; + background-color: #fff; +} +.list-group-item > .badge { + float: right; +} +.list-group-item > .badge + .badge { + margin-right: 5px; +} +.nav-pills > li > a > .badge { + margin-left: 3px; +} +.jumbotron { + padding: 30px 15px; + margin-bottom: 30px; + color: inherit; + background-color: #eee; +} +.jumbotron h1, +.jumbotron .h1 { + color: inherit; +} +.jumbotron p { + margin-bottom: 15px; + font-size: 21px; + font-weight: 200; +} +.jumbotron > hr { + border-top-color: #d5d5d5; +} +.container .jumbotron, +.container-fluid .jumbotron { + border-radius: 6px; +} +.jumbotron .container { + max-width: 100%; +} +@media screen and (min-width: 768px) { + .jumbotron { + padding: 48px 0; + } + .container .jumbotron, + .container-fluid .jumbotron { + padding-right: 60px; + padding-left: 60px; + } + .jumbotron h1, + .jumbotron .h1 { + font-size: 63px; + } +} +.thumbnail { + display: block; + padding: 4px; + margin-bottom: 20px; + line-height: 1.42857143; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: border .2s ease-in-out; + -o-transition: border .2s ease-in-out; + transition: border .2s ease-in-out; +} +.thumbnail > img, +.thumbnail a > img { + margin-right: auto; + margin-left: auto; +} +a.thumbnail:hover, +a.thumbnail:focus, +a.thumbnail.active { + border-color: #337ab7; +} +.thumbnail .caption { + padding: 9px; + color: #333; +} +.alert { + padding: 15px; + margin-bottom: 20px; + border: 1px solid transparent; + border-radius: 4px; +} +.alert h4 { + margin-top: 0; + color: inherit; +} +.alert .alert-link { + font-weight: bold; +} +.alert > p, +.alert > ul { + margin-bottom: 0; +} +.alert > p + p { + margin-top: 5px; +} +.alert-dismissable, +.alert-dismissible { + padding-right: 35px; +} +.alert-dismissable .close, +.alert-dismissible .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; +} +.alert-success { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; +} +.alert-success hr { + border-top-color: #c9e2b3; +} +.alert-success .alert-link { + color: #2b542c; +} +.alert-info { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; +} +.alert-info hr { + border-top-color: #a6e1ec; +} +.alert-info .alert-link { + color: #245269; +} +.alert-warning { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; +} +.alert-warning hr { + border-top-color: #f7e1b5; +} +.alert-warning .alert-link { + color: #66512c; +} +.alert-danger { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} +.alert-danger hr { + border-top-color: #e4b9c0; +} +.alert-danger .alert-link { + color: #843534; +} +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-o-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); +} +.progress-bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #fff; + text-align: center; + background-color: #337ab7; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); + -webkit-transition: width .6s ease; + -o-transition: width .6s ease; + transition: width .6s ease; +} +.progress-striped .progress-bar, +.progress-bar-striped { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + background-size: 40px 40px; +} +.progress.active .progress-bar, +.progress-bar.active { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-bar-success { + background-color: #5cb85c; +} +.progress-striped .progress-bar-success { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.progress-bar-info { + background-color: #5bc0de; +} +.progress-striped .progress-bar-info { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.progress-bar-warning { + background-color: #f0ad4e; +} +.progress-striped .progress-bar-warning { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.progress-bar-danger { + background-color: #d9534f; +} +.progress-striped .progress-bar-danger { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.media { + margin-top: 15px; +} +.media:first-child { + margin-top: 0; +} +.media-right, +.media > .pull-right { + padding-left: 10px; +} +.media-left, +.media > .pull-left { + padding-right: 10px; +} +.media-left, +.media-right, +.media-body { + display: table-cell; + vertical-align: top; +} +.media-middle { + vertical-align: middle; +} +.media-bottom { + vertical-align: bottom; +} +.media-heading { + margin-top: 0; + margin-bottom: 5px; +} +.media-list { + padding-left: 0; + list-style: none; +} +.list-group { + padding-left: 0; + margin-bottom: 20px; +} +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #fff; + border: 1px solid #ddd; +} +.list-group-item:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 4px; +} +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +a.list-group-item { + color: #555; +} +a.list-group-item .list-group-item-heading { + color: #333; +} +a.list-group-item:hover, +a.list-group-item:focus { + color: #555; + text-decoration: none; + background-color: #f5f5f5; +} +.list-group-item.disabled, +.list-group-item.disabled:hover, +.list-group-item.disabled:focus { + color: #777; + cursor: not-allowed; + background-color: #eee; +} +.list-group-item.disabled .list-group-item-heading, +.list-group-item.disabled:hover .list-group-item-heading, +.list-group-item.disabled:focus .list-group-item-heading { + color: inherit; +} +.list-group-item.disabled .list-group-item-text, +.list-group-item.disabled:hover .list-group-item-text, +.list-group-item.disabled:focus .list-group-item-text { + color: #777; +} +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + z-index: 2; + color: #fff; + background-color: #337ab7; + border-color: #337ab7; +} +.list-group-item.active .list-group-item-heading, +.list-group-item.active:hover .list-group-item-heading, +.list-group-item.active:focus .list-group-item-heading, +.list-group-item.active .list-group-item-heading > small, +.list-group-item.active:hover .list-group-item-heading > small, +.list-group-item.active:focus .list-group-item-heading > small, +.list-group-item.active .list-group-item-heading > .small, +.list-group-item.active:hover .list-group-item-heading > .small, +.list-group-item.active:focus .list-group-item-heading > .small { + color: inherit; +} +.list-group-item.active .list-group-item-text, +.list-group-item.active:hover .list-group-item-text, +.list-group-item.active:focus .list-group-item-text { + color: #c7ddef; +} +.list-group-item-success { + color: #3c763d; + background-color: #dff0d8; +} +a.list-group-item-success { + color: #3c763d; +} +a.list-group-item-success .list-group-item-heading { + color: inherit; +} +a.list-group-item-success:hover, +a.list-group-item-success:focus { + color: #3c763d; + background-color: #d0e9c6; +} +a.list-group-item-success.active, +a.list-group-item-success.active:hover, +a.list-group-item-success.active:focus { + color: #fff; + background-color: #3c763d; + border-color: #3c763d; +} +.list-group-item-info { + color: #31708f; + background-color: #d9edf7; +} +a.list-group-item-info { + color: #31708f; +} +a.list-group-item-info .list-group-item-heading { + color: inherit; +} +a.list-group-item-info:hover, +a.list-group-item-info:focus { + color: #31708f; + background-color: #c4e3f3; +} +a.list-group-item-info.active, +a.list-group-item-info.active:hover, +a.list-group-item-info.active:focus { + color: #fff; + background-color: #31708f; + border-color: #31708f; +} +.list-group-item-warning { + color: #8a6d3b; + background-color: #fcf8e3; +} +a.list-group-item-warning { + color: #8a6d3b; +} +a.list-group-item-warning .list-group-item-heading { + color: inherit; +} +a.list-group-item-warning:hover, +a.list-group-item-warning:focus { + color: #8a6d3b; + background-color: #faf2cc; +} +a.list-group-item-warning.active, +a.list-group-item-warning.active:hover, +a.list-group-item-warning.active:focus { + color: #fff; + background-color: #8a6d3b; + border-color: #8a6d3b; +} +.list-group-item-danger { + color: #a94442; + background-color: #f2dede; +} +a.list-group-item-danger { + color: #a94442; +} +a.list-group-item-danger .list-group-item-heading { + color: inherit; +} +a.list-group-item-danger:hover, +a.list-group-item-danger:focus { + color: #a94442; + background-color: #ebcccc; +} +a.list-group-item-danger.active, +a.list-group-item-danger.active:hover, +a.list-group-item-danger.active:focus { + color: #fff; + background-color: #a94442; + border-color: #a94442; +} +.list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; +} +.list-group-item-text { + margin-bottom: 0; + line-height: 1.3; +} +.panel { + margin-bottom: 20px; + background-color: #fff; + border: 1px solid transparent; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05); + box-shadow: 0 1px 1px rgba(0, 0, 0, .05); +} +.panel-body { + padding: 15px; +} +.panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel-heading > .dropdown .dropdown-toggle { + color: inherit; +} +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 16px; + color: inherit; +} +.panel-title > a { + color: inherit; +} +.panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .list-group, +.panel > .panel-collapse > .list-group { + margin-bottom: 0; +} +.panel > .list-group .list-group-item, +.panel > .panel-collapse > .list-group .list-group-item { + border-width: 1px 0; + border-radius: 0; +} +.panel > .list-group:first-child .list-group-item:first-child, +.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { + border-top: 0; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .list-group:last-child .list-group-item:last-child, +.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { + border-bottom: 0; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel-heading + .list-group .list-group-item:first-child { + border-top-width: 0; +} +.list-group + .panel-footer { + border-top-width: 0; +} +.panel > .table, +.panel > .table-responsive > .table, +.panel > .panel-collapse > .table { + margin-bottom: 0; +} +.panel > .table caption, +.panel > .table-responsive > .table caption, +.panel > .panel-collapse > .table caption { + padding-right: 15px; + padding-left: 15px; +} +.panel > .table:first-child, +.panel > .table-responsive:first-child > .table:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { + border-top-left-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { + border-top-right-radius: 3px; +} +.panel > .table:last-child, +.panel > .table-responsive:last-child > .table:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { + border-bottom-right-radius: 3px; +} +.panel > .panel-body + .table, +.panel > .panel-body + .table-responsive, +.panel > .table + .panel-body, +.panel > .table-responsive + .panel-body { + border-top: 1px solid #ddd; +} +.panel > .table > tbody:first-child > tr:first-child th, +.panel > .table > tbody:first-child > tr:first-child td { + border-top: 0; +} +.panel > .table-bordered, +.panel > .table-responsive > .table-bordered { + border: 0; +} +.panel > .table-bordered > thead > tr > th:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, +.panel > .table-bordered > tbody > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, +.panel > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-bordered > thead > tr > td:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, +.panel > .table-bordered > tbody > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, +.panel > .table-bordered > tfoot > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; +} +.panel > .table-bordered > thead > tr > th:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, +.panel > .table-bordered > tbody > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, +.panel > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-bordered > thead > tr > td:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, +.panel > .table-bordered > tbody > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, +.panel > .table-bordered > tfoot > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; +} +.panel > .table-bordered > thead > tr:first-child > td, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, +.panel > .table-bordered > tbody > tr:first-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, +.panel > .table-bordered > thead > tr:first-child > th, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, +.panel > .table-bordered > tbody > tr:first-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { + border-bottom: 0; +} +.panel > .table-bordered > tbody > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, +.panel > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-bordered > tbody > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, +.panel > .table-bordered > tfoot > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { + border-bottom: 0; +} +.panel > .table-responsive { + margin-bottom: 0; + border: 0; +} +.panel-group { + margin-bottom: 20px; +} +.panel-group .panel { + margin-bottom: 0; + border-radius: 4px; +} +.panel-group .panel + .panel { + margin-top: 5px; +} +.panel-group .panel-heading { + border-bottom: 0; +} +.panel-group .panel-heading + .panel-collapse > .panel-body, +.panel-group .panel-heading + .panel-collapse > .list-group { + border-top: 1px solid #ddd; +} +.panel-group .panel-footer { + border-top: 0; +} +.panel-group .panel-footer + .panel-collapse .panel-body { + border-bottom: 1px solid #ddd; +} +.panel-default { + border-color: #ddd; +} +.panel-default > .panel-heading { + color: #333; + background-color: #f5f5f5; + border-color: #ddd; +} +.panel-default > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ddd; +} +.panel-default > .panel-heading .badge { + color: #f5f5f5; + background-color: #333; +} +.panel-default > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ddd; +} +.panel-primary { + border-color: #337ab7; +} +.panel-primary > .panel-heading { + color: #fff; + background-color: #337ab7; + border-color: #337ab7; +} +.panel-primary > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #337ab7; +} +.panel-primary > .panel-heading .badge { + color: #337ab7; + background-color: #fff; +} +.panel-primary > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #337ab7; +} +.panel-success { + border-color: #d6e9c6; +} +.panel-success > .panel-heading { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; +} +.panel-success > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #d6e9c6; +} +.panel-success > .panel-heading .badge { + color: #dff0d8; + background-color: #3c763d; +} +.panel-success > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #d6e9c6; +} +.panel-info { + border-color: #bce8f1; +} +.panel-info > .panel-heading { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; +} +.panel-info > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #bce8f1; +} +.panel-info > .panel-heading .badge { + color: #d9edf7; + background-color: #31708f; +} +.panel-info > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #bce8f1; +} +.panel-warning { + border-color: #faebcc; +} +.panel-warning > .panel-heading { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; +} +.panel-warning > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #faebcc; +} +.panel-warning > .panel-heading .badge { + color: #fcf8e3; + background-color: #8a6d3b; +} +.panel-warning > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #faebcc; +} +.panel-danger { + border-color: #ebccd1; +} +.panel-danger > .panel-heading { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} +.panel-danger > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ebccd1; +} +.panel-danger > .panel-heading .badge { + color: #f2dede; + background-color: #a94442; +} +.panel-danger > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ebccd1; +} +.embed-responsive { + position: relative; + display: block; + height: 0; + padding: 0; + overflow: hidden; +} +.embed-responsive .embed-responsive-item, +.embed-responsive iframe, +.embed-responsive embed, +.embed-responsive object, +.embed-responsive video { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + border: 0; +} +.embed-responsive.embed-responsive-16by9 { + padding-bottom: 56.25%; +} +.embed-responsive.embed-responsive-4by3 { + padding-bottom: 75%; +} +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); +} +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, .15); +} +.well-lg { + padding: 24px; + border-radius: 6px; +} +.well-sm { + padding: 9px; + border-radius: 3px; +} +.close { + float: right; + font-size: 21px; + font-weight: bold; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + filter: alpha(opacity=20); + opacity: .2; +} +.close:hover, +.close:focus { + color: #000; + text-decoration: none; + cursor: pointer; + filter: alpha(opacity=50); + opacity: .5; +} +button.close { + -webkit-appearance: none; + padding: 0; + cursor: pointer; + background: transparent; + border: 0; +} +.modal-open { + overflow: hidden; +} +.modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + display: none; + overflow: hidden; + -webkit-overflow-scrolling: touch; + outline: 0; +} +.modal.fade .modal-dialog { + -webkit-transition: -webkit-transform .3s ease-out; + -o-transition: -o-transform .3s ease-out; + transition: transform .3s ease-out; + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + -o-transform: translate(0, -25%); + transform: translate(0, -25%); +} +.modal.in .modal-dialog { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + -o-transform: translate(0, 0); + transform: translate(0, 0); +} +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; +} +.modal-dialog { + position: relative; + width: auto; + margin: 10px; +} +.modal-content { + position: relative; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 6px; + outline: 0; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5); + box-shadow: 0 3px 9px rgba(0, 0, 0, .5); +} +.modal-backdrop { + position: absolute; + top: 0; + right: 0; + left: 0; + background-color: #000; +} +.modal-backdrop.fade { + filter: alpha(opacity=0); + opacity: 0; +} +.modal-backdrop.in { + filter: alpha(opacity=50); + opacity: .5; +} +.modal-header { + min-height: 16.42857143px; + padding: 15px; + border-bottom: 1px solid #e5e5e5; +} +.modal-header .close { + margin-top: -2px; +} +.modal-title { + margin: 0; + line-height: 1.42857143; +} +.modal-body { + position: relative; + padding: 15px; +} +.modal-footer { + padding: 15px; + text-align: right; + border-top: 1px solid #e5e5e5; +} +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; +} +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; +} +@media (min-width: 768px) { + .modal-dialog { + width: 600px; + margin: 30px auto; + } + .modal-content { + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + } + .modal-sm { + width: 300px; + } +} +@media (min-width: 992px) { + .modal-lg { + width: 900px; + } +} +.tooltip { + position: absolute; + z-index: 1070; + display: block; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 12px; + font-weight: normal; + line-height: 1.4; + visibility: visible; + filter: alpha(opacity=0); + opacity: 0; +} +.tooltip.in { + filter: alpha(opacity=90); + opacity: .9; +} +.tooltip.top { + padding: 5px 0; + margin-top: -3px; +} +.tooltip.right { + padding: 0 5px; + margin-left: 3px; +} +.tooltip.bottom { + padding: 5px 0; + margin-top: 3px; +} +.tooltip.left { + padding: 0 5px; + margin-left: -3px; +} +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #fff; + text-align: center; + text-decoration: none; + background-color: #000; + border-radius: 4px; +} +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.top-left .tooltip-arrow { + right: 5px; + bottom: 0; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.top-right .tooltip-arrow { + bottom: 0; + left: 5px; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000; +} +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000; +} +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.tooltip.bottom-left .tooltip-arrow { + top: 0; + right: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.tooltip.bottom-right .tooltip-arrow { + top: 0; + left: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: none; + max-width: 276px; + padding: 1px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + font-weight: normal; + line-height: 1.42857143; + text-align: left; + white-space: normal; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2); + box-shadow: 0 5px 10px rgba(0, 0, 0, .2); +} +.popover.top { + margin-top: -10px; +} +.popover.right { + margin-left: 10px; +} +.popover.bottom { + margin-top: 10px; +} +.popover.left { + margin-left: -10px; +} +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-radius: 5px 5px 0 0; +} +.popover-content { + padding: 9px 14px; +} +.popover > .arrow, +.popover > .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.popover > .arrow { + border-width: 11px; +} +.popover > .arrow:after { + content: ""; + border-width: 10px; +} +.popover.top > .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999; + border-top-color: rgba(0, 0, 0, .25); + border-bottom-width: 0; +} +.popover.top > .arrow:after { + bottom: 1px; + margin-left: -10px; + content: " "; + border-top-color: #fff; + border-bottom-width: 0; +} +.popover.right > .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999; + border-right-color: rgba(0, 0, 0, .25); + border-left-width: 0; +} +.popover.right > .arrow:after { + bottom: -10px; + left: 1px; + content: " "; + border-right-color: #fff; + border-left-width: 0; +} +.popover.bottom > .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-top-width: 0; + border-bottom-color: #999; + border-bottom-color: rgba(0, 0, 0, .25); +} +.popover.bottom > .arrow:after { + top: 1px; + margin-left: -10px; + content: " "; + border-top-width: 0; + border-bottom-color: #fff; +} +.popover.left > .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-right-width: 0; + border-left-color: #999; + border-left-color: rgba(0, 0, 0, .25); +} +.popover.left > .arrow:after { + right: 1px; + bottom: -10px; + content: " "; + border-right-width: 0; + border-left-color: #fff; +} +.carousel { + position: relative; +} +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} +.carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: .6s ease-in-out left; + -o-transition: .6s ease-in-out left; + transition: .6s ease-in-out left; +} +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + line-height: 1; +} +@media all and (transform-3d), (-webkit-transform-3d) { + .carousel-inner > .item { + -webkit-transition: -webkit-transform .6s ease-in-out; + -o-transition: -o-transform .6s ease-in-out; + transition: transform .6s ease-in-out; + + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000; + perspective: 1000; + } + .carousel-inner > .item.next, + .carousel-inner > .item.active.right { + left: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } + .carousel-inner > .item.prev, + .carousel-inner > .item.active.left { + left: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } + .carousel-inner > .item.next.left, + .carousel-inner > .item.prev.right, + .carousel-inner > .item.active { + left: 0; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} +.carousel-inner > .active { + left: 0; +} +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} +.carousel-inner > .next { + left: 100%; +} +.carousel-inner > .prev { + left: -100%; +} +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} +.carousel-inner > .active.left { + left: -100%; +} +.carousel-inner > .active.right { + left: 100%; +} +.carousel-control { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 15%; + font-size: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, .6); + filter: alpha(opacity=50); + opacity: .5; +} +.carousel-control.left { + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001))); + background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); + background-repeat: repeat-x; +} +.carousel-control.right { + right: 0; + left: auto; + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5))); + background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); + background-repeat: repeat-x; +} +.carousel-control:hover, +.carousel-control:focus { + color: #fff; + text-decoration: none; + filter: alpha(opacity=90); + outline: 0; + opacity: .9; +} +.carousel-control .icon-prev, +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-left, +.carousel-control .glyphicon-chevron-right { + position: absolute; + top: 50%; + z-index: 5; + display: inline-block; +} +.carousel-control .icon-prev, +.carousel-control .glyphicon-chevron-left { + left: 50%; + margin-left: -10px; +} +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-right { + right: 50%; + margin-right: -10px; +} +.carousel-control .icon-prev, +.carousel-control .icon-next { + width: 20px; + height: 20px; + margin-top: -10px; + font-family: serif; +} +.carousel-control .icon-prev:before { + content: '\2039'; +} +.carousel-control .icon-next:before { + content: '\203a'; +} +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + padding-left: 0; + margin-left: -30%; + text-align: center; + list-style: none; +} +.carousel-indicators li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + cursor: pointer; + background-color: #000 \9; + background-color: rgba(0, 0, 0, 0); + border: 1px solid #fff; + border-radius: 10px; +} +.carousel-indicators .active { + width: 12px; + height: 12px; + margin: 0; + background-color: #fff; +} +.carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, .6); +} +.carousel-caption .btn { + text-shadow: none; +} +@media screen and (min-width: 768px) { + .carousel-control .glyphicon-chevron-left, + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-prev, + .carousel-control .icon-next { + width: 30px; + height: 30px; + margin-top: -15px; + font-size: 30px; + } + .carousel-control .glyphicon-chevron-left, + .carousel-control .icon-prev { + margin-left: -15px; + } + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-next { + margin-right: -15px; + } + .carousel-caption { + right: 20%; + left: 20%; + padding-bottom: 30px; + } + .carousel-indicators { + bottom: 20px; + } +} +.clearfix:before, +.clearfix:after, +.dl-horizontal dd:before, +.dl-horizontal dd:after, +.container:before, +.container:after, +.container-fluid:before, +.container-fluid:after, +.row:before, +.row:after, +.form-horizontal .form-group:before, +.form-horizontal .form-group:after, +.btn-toolbar:before, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:before, +.btn-group-vertical > .btn-group:after, +.nav:before, +.nav:after, +.navbar:before, +.navbar:after, +.navbar-header:before, +.navbar-header:after, +.navbar-collapse:before, +.navbar-collapse:after, +.pager:before, +.pager:after, +.panel-body:before, +.panel-body:after, +.modal-footer:before, +.modal-footer:after { + display: table; + content: " "; +} +.clearfix:after, +.dl-horizontal dd:after, +.container:after, +.container-fluid:after, +.row:after, +.form-horizontal .form-group:after, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:after, +.nav:after, +.navbar:after, +.navbar-header:after, +.navbar-collapse:after, +.pager:after, +.panel-body:after, +.modal-footer:after { + clear: both; +} +.center-block { + display: block; + margin-right: auto; + margin-left: auto; +} +.pull-right { + float: right !important; +} +.pull-left { + float: left !important; +} +.hide { + display: none !important; +} +.show { + display: block !important; +} +.invisible { + visibility: hidden; +} +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.hidden { + display: none !important; + visibility: hidden !important; +} +.affix { + position: fixed; +} +@-ms-viewport { + width: device-width; +} +.visible-xs, +.visible-sm, +.visible-md, +.visible-lg { + display: none !important; +} +.visible-xs-block, +.visible-xs-inline, +.visible-xs-inline-block, +.visible-sm-block, +.visible-sm-inline, +.visible-sm-inline-block, +.visible-md-block, +.visible-md-inline, +.visible-md-inline-block, +.visible-lg-block, +.visible-lg-inline, +.visible-lg-inline-block { + display: none !important; +} +@media (max-width: 767px) { + .visible-xs { + display: block !important; + } + table.visible-xs { + display: table; + } + tr.visible-xs { + display: table-row !important; + } + th.visible-xs, + td.visible-xs { + display: table-cell !important; + } +} +@media (max-width: 767px) { + .visible-xs-block { + display: block !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline { + display: inline !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline-block { + display: inline-block !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm { + display: block !important; + } + table.visible-sm { + display: table; + } + tr.visible-sm { + display: table-row !important; + } + th.visible-sm, + td.visible-sm { + display: table-cell !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-block { + display: block !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline { + display: inline !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline-block { + display: inline-block !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md { + display: block !important; + } + table.visible-md { + display: table; + } + tr.visible-md { + display: table-row !important; + } + th.visible-md, + td.visible-md { + display: table-cell !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-block { + display: block !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline { + display: inline !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline-block { + display: inline-block !important; + } +} +@media (min-width: 1200px) { + .visible-lg { + display: block !important; + } + table.visible-lg { + display: table; + } + tr.visible-lg { + display: table-row !important; + } + th.visible-lg, + td.visible-lg { + display: table-cell !important; + } +} +@media (min-width: 1200px) { + .visible-lg-block { + display: block !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline { + display: inline !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline-block { + display: inline-block !important; + } +} +@media (max-width: 767px) { + .hidden-xs { + display: none !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .hidden-sm { + display: none !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-md { + display: none !important; + } +} +@media (min-width: 1200px) { + .hidden-lg { + display: none !important; + } +} +.visible-print { + display: none !important; +} +@media print { + .visible-print { + display: block !important; + } + table.visible-print { + display: table; + } + tr.visible-print { + display: table-row !important; + } + th.visible-print, + td.visible-print { + display: table-cell !important; + } +} +.visible-print-block { + display: none !important; +} +@media print { + .visible-print-block { + display: block !important; + } +} +.visible-print-inline { + display: none !important; +} +@media print { + .visible-print-inline { + display: inline !important; + } +} +.visible-print-inline-block { + display: none !important; +} +@media print { + .visible-print-inline-block { + display: inline-block !important; + } +} +@media print { + .hidden-print { + display: none !important; + } +} +/*# sourceMappingURL=bootstrap.css.map */ diff --git a/examples/Sample App/DMS Sample App/bin/Web App/portal/bootstrap-3.3.1/css/bootstrap.css.map b/examples/Sample App/DMS Sample App/bin/Web App/portal/bootstrap-3.3.1/css/bootstrap.css.map new file mode 100755 index 0000000..a02f6ba --- /dev/null +++ b/examples/Sample App/DMS Sample App/bin/Web App/portal/bootstrap-3.3.1/css/bootstrap.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["bootstrap.css","less/normalize.less","less/print.less","less/glyphicons.less","less/scaffolding.less","less/mixins/vendor-prefixes.less","less/mixins/tab-focus.less","less/mixins/image.less","less/type.less","less/mixins/text-emphasis.less","less/mixins/background-variant.less","less/mixins/text-overflow.less","less/code.less","less/grid.less","less/mixins/grid.less","less/mixins/grid-framework.less","less/tables.less","less/mixins/table-row.less","less/forms.less","less/mixins/forms.less","less/buttons.less","less/mixins/buttons.less","less/mixins/opacity.less","less/component-animations.less","less/dropdowns.less","less/mixins/nav-divider.less","less/mixins/reset-filter.less","less/button-groups.less","less/mixins/border-radius.less","less/input-groups.less","less/navs.less","less/navbar.less","less/mixins/nav-vertical-align.less","less/utilities.less","less/breadcrumbs.less","less/pagination.less","less/mixins/pagination.less","less/pager.less","less/labels.less","less/mixins/labels.less","less/badges.less","less/jumbotron.less","less/thumbnails.less","less/alerts.less","less/mixins/alerts.less","less/progress-bars.less","less/mixins/gradients.less","less/mixins/progress-bar.less","less/media.less","less/list-group.less","less/mixins/list-group.less","less/panels.less","less/mixins/panels.less","less/responsive-embed.less","less/wells.less","less/close.less","less/modals.less","less/tooltip.less","less/popovers.less","less/carousel.less","less/mixins/clearfix.less","less/mixins/center-block.less","less/mixins/hide-text.less","less/responsive-utilities.less","less/mixins/responsive-visibility.less"],"names":[],"mappings":"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AAA;EHsR9C;AGrRmC;EAAW,kBAAA;EHwR9C;AGvRmC;EAAW,kBAAA;EH0R9C;AGzRmC;EAAW,kBAAA;EH4R9C;AG3RmC;EAAW,kBAAA;EH8R9C;AG7RmC;EAAW,kBAAA;EHgS9C;AG/RmC;EAAW,kBAAA;EHkS9C;AGjSmC;EAAW,kBAAA;EHoS9C;AGnSmC;EAAW,kBAAA;EHsS9C;AGrSmC;EAAW,kBAAA;EHwS9C;AGvSmC;EAAW,kBAAA;EH0S9C;AGzSmC;EAAW,kBAAA;EH4S9C;AG3SmC;EAAW,kBAAA;EH8S9C;AG7SmC;EAAW,kBAAA;EHgT9C;AG/SmC;EAAW,kBAAA;EHkT9C;AGjTmC;EAAW,kBAAA;EHoT9C;AGnTmC;EAAW,kBAAA;EHsT9C;AGrTmC;EAAW,kBAAA;EHwT9C;AGvTmC;EAAW,kBAAA;EH0T9C;AGzTmC;EAAW,kBAAA;EH4T9C;AG3TmC;EAAW,kBAAA;EH8T9C;AG7TmC;EAAW,kBAAA;EHgU9C;AG/TmC;EAAW,kBAAA;EHkU9C;AGjUmC;EAAW,kBAAA;EHoU9C;AGnUmC;EAAW,kBAAA;EHsU9C;AGrUmC;EAAW,kBAAA;EHwU9C;AGvUmC;EAAW,kBAAA;EH0U9C;AGzUmC;EAAW,kBAAA;EH4U9C;AG3UmC;EAAW,kBAAA;EH8U9C;AG7UmC;EAAW,kBAAA;EHgV9C;AG/UmC;EAAW,kBAAA;EHkV9C;AGjVmC;EAAW,kBAAA;EHoV9C;AGnVmC;EAAW,kBAAA;EHsV9C;AGrVmC;EAAW,kBAAA;EHwV9C;AGvVmC;EAAW,kBAAA;EH0V9C;AGzVmC;EAAW,kBAAA;EH4V9C;AG3VmC;EAAW,kBAAA;EH8V9C;AG7VmC;EAAW,kBAAA;EHgW9C;AG/VmC;EAAW,kBAAA;EHkW9C;AGjWmC;EAAW,kBAAA;EHoW9C;AGnWmC;EAAW,kBAAA;EHsW9C;AGrWmC;EAAW,kBAAA;EHwW9C;AGvWmC;EAAW,kBAAA;EH0W9C;AGzWmC;EAAW,kBAAA;EH4W9C;AG3WmC;EAAW,kBAAA;EH8W9C;AG7WmC;EAAW,kBAAA;EHgX9C;AG/WmC;EAAW,kBAAA;EHkX9C;AGjXmC;EAAW,kBAAA;EHoX9C;AGnXmC;EAAW,kBAAA;EHsX9C;AGrXmC;EAAW,kBAAA;EHwX9C;AGvXmC;EAAW,kBAAA;EH0X9C;AGzXmC;EAAW,kBAAA;EH4X9C;AG3XmC;EAAW,kBAAA;EH8X9C;AG7XmC;EAAW,kBAAA;EHgY9C;AG/XmC;EAAW,kBAAA;EHkY9C;AGjYmC;EAAW,kBAAA;EHoY9C;AGnYmC;EAAW,kBAAA;EHsY9C;AGrYmC;EAAW,kBAAA;EHwY9C;AGvYmC;EAAW,kBAAA;EH0Y9C;AGzYmC;EAAW,kBAAA;EH4Y9C;AG3YmC;EAAW,kBAAA;EH8Y9C;AG7YmC;EAAW,kBAAA;EHgZ9C;AG/YmC;EAAW,kBAAA;EHkZ9C;AGjZmC;EAAW,kBAAA;EHoZ9C;AGnZmC;EAAW,kBAAA;EHsZ9C;AGrZmC;EAAW,kBAAA;EHwZ9C;AGvZmC;EAAW,kBAAA;EH0Z9C;AGzZmC;EAAW,kBAAA;EH4Z9C;AG3ZmC;EAAW,kBAAA;EH8Z9C;AG7ZmC;EAAW,kBAAA;EHga9C;AG/ZmC;EAAW,kBAAA;EHka9C;AGjamC;EAAW,kBAAA;EHoa9C;AGnamC;EAAW,kBAAA;EHsa9C;AGramC;EAAW,kBAAA;EHwa9C;AGvamC;EAAW,kBAAA;EH0a9C;AGzamC;EAAW,kBAAA;EH4a9C;AG3amC;EAAW,kBAAA;EH8a9C;AG7amC;EAAW,kBAAA;EHgb9C;AG/amC;EAAW,kBAAA;EHkb9C;AGjbmC;EAAW,kBAAA;EHob9C;AGnbmC;EAAW,kBAAA;EHsb9C;AGrbmC;EAAW,kBAAA;EHwb9C;AGvbmC;EAAW,kBAAA;EH0b9C;AGzbmC;EAAW,kBAAA;EH4b9C;AG3bmC;EAAW,kBAAA;EH8b9C;AG7bmC;EAAW,kBAAA;EHgc9C;AG/bmC;EAAW,kBAAA;EHkc9C;AGjcmC;EAAW,kBAAA;EHoc9C;AGncmC;EAAW,kBAAA;EHsc9C;AGrcmC;EAAW,kBAAA;EHwc9C;AGvcmC;EAAW,kBAAA;EH0c9C;AGzcmC;EAAW,kBAAA;EH4c9C;AG3cmC;EAAW,kBAAA;EH8c9C;AG7cmC;EAAW,kBAAA;EHgd9C;AG/cmC;EAAW,kBAAA;EHkd9C;AGjdmC;EAAW,kBAAA;EHod9C;AGndmC;EAAW,kBAAA;EHsd9C;AGrdmC;EAAW,kBAAA;EHwd9C;AGvdmC;EAAW,kBAAA;EH0d9C;AGzdmC;EAAW,kBAAA;EH4d9C;AG3dmC;EAAW,kBAAA;EH8d9C;AG7dmC;EAAW,kBAAA;EHge9C;AG/dmC;EAAW,kBAAA;EHke9C;AGjemC;EAAW,kBAAA;EHoe9C;AGnemC;EAAW,kBAAA;EHse9C;AGremC;EAAW,kBAAA;EHwe9C;AGvemC;EAAW,kBAAA;EH0e9C;AGzemC;EAAW,kBAAA;EH4e9C;AG3emC;EAAW,kBAAA;EH8e9C;AG7emC;EAAW,kBAAA;EHgf9C;AG/emC;EAAW,kBAAA;EHkf9C;AGjfmC;EAAW,kBAAA;EHof9C;AGnfmC;EAAW,kBAAA;EHsf9C;AGrfmC;EAAW,kBAAA;EHwf9C;AGvfmC;EAAW,kBAAA;EH0f9C;AGzfmC;EAAW,kBAAA;EH4f9C;AG3fmC;EAAW,kBAAA;EH8f9C;AG7fmC;EAAW,kBAAA;EHggB9C;AG/fmC;EAAW,kBAAA;EHkgB9C;AGjgBmC;EAAW,kBAAA;EHogB9C;AGngBmC;EAAW,kBAAA;EHsgB9C;AGrgBmC;EAAW,kBAAA;EHwgB9C;AGvgBmC;EAAW,kBAAA;EH0gB9C;AGzgBmC;EAAW,kBAAA;EH4gB9C;AG3gBmC;EAAW,kBAAA;EH8gB9C;AG7gBmC;EAAW,kBAAA;EHghB9C;AG/gBmC;EAAW,kBAAA;EHkhB9C;AGjhBmC;EAAW,kBAAA;EHohB9C;AGnhBmC;EAAW,kBAAA;EHshB9C;AGrhBmC;EAAW,kBAAA;EHwhB9C;AGvhBmC;EAAW,kBAAA;EH0hB9C;AGzhBmC;EAAW,kBAAA;EH4hB9C;AG3hBmC;EAAW,kBAAA;EH8hB9C;AG7hBmC;EAAW,kBAAA;EHgiB9C;AG/hBmC;EAAW,kBAAA;EHkiB9C;AGjiBmC;EAAW,kBAAA;EHoiB9C;AGniBmC;EAAW,kBAAA;EHsiB9C;AGriBmC;EAAW,kBAAA;EHwiB9C;AGviBmC;EAAW,kBAAA;EH0iB9C;AGziBmC;EAAW,kBAAA;EH4iB9C;AG3iBmC;EAAW,kBAAA;EH8iB9C;AG7iBmC;EAAW,kBAAA;EHgjB9C;AG/iBmC;EAAW,kBA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EACE,mBAAA;Efi7CH;Ael7CC;EACE,2BAAA;Efo7CH;Aer7CC;EACE,2BAAA;Efu7CH;Aex7CC;EACE,kBAAA;Ef07CH;Ae37CC;EACE,2BAAA;Ef67CH;Ae97CC;EACE,2BAAA;Efg8CH;Aej8CC;EACE,kBAAA;Efm8CH;Aep8CC;EACE,2BAAA;Efs8CH;Aev8CC;EACE,2BAAA;Efy8CH;Ae18CC;EACE,kBAAA;Ef48CH;Ae78CC;EACE,2BAAA;Ef+8CH;Aeh9CC;EACE,0BAAA;Efk9CH;Aen9CC;EACE,iBAAA;Efq9CH;Aaz9CD;EE9BI;IACE,aAAA;If0/CH;Een/CD;IACE,aAAA;Ifq/CD;Eet/CD;IACE,qBAAA;Ifw/CD;Eez/CD;IACE,qBAAA;If2/CD;Ee5/CD;IACE,YAAA;If8/CD;Ee//CD;IACE,qBAAA;IfigDD;EelgDD;IACE,qBAAA;IfogDD;EergDD;IACE,YAAA;IfugDD;EexgDD;IACE,qBAAA;If0gDD;Ee3gDD;IACE,qBAAA;If6gDD;Ee9gDD;IACE,YAAA;IfghDD;EejhDD;IACE,qBAAA;IfmhDD;EephDD;IACE,oBAAA;IfshDD;EexgDD;IACE,aAAA;If0gDD;Ee3gDD;IACE,qBAAA;If6gDD;Ee9gDD;IACE,qBAAA;IfghDD;EejhDD;IACE,YAAA;IfmhDD;EephDD;IACE,qBAAA;IfshDD;EevhDD;IACE,qBAAA;IfyhDD;Ee1hDD;IACE,YAAA;If4hDD;Ee7hDD;IACE,qBAAA;If+hDD;EehiDD;IACE,qBAAA;IfkiDD;EeniDD;IACE,YAAA;IfqiDD;EetiDD;IACE,qBAAA;IfwiDD;EeziDD;IACE,oBAAA;If2iDD;EeviDD;IACE,aAAA;IfyiDD;EezjDD;IACE,YAAA;If2jDD;Ee5jDD;IACE,oBAAA;If8jDD;Ee/jDD;IACE,oBAAA;IfikDD;EelkDD;IACE,WAAA;IfokDD;EerkDD;IACE,oBAAA;IfukDD;EexkDD;IACE,oBAAA;If0kDD;Ee3kDD;IACE,WAAA;If6kDD;Ee9kDD;IACE,oBAAA;IfglDD;EejlDD;IACE,oBAAA;IfmlDD;EeplDD;IACE,WAAA;IfslDD;EevlDD;IACE,oBAAA;IfylDD;Ee1lDD;IACE,mBAAA;If4lDD;EexlDD;IACE,YAAA;If0lDD;Ee5kDD;IACE,mBAAA;If8kDD;Ee/kDD;IACE,2BAAA;IfilDD;EellDD;IACE,2BAAA;IfolDD;EerlDD;IACE,kBAAA;IfulDD;EexlDD;IACE,2BAAA;If0lDD;Ee3lDD;IACE,2BAAA;If6lDD;Ee9lDD;IACE,kBAAA;IfgmDD;EejmDD;IACE,2BAAA;IfmmDD;EepmDD;IACE,2BAAA;IfsmDD;EevmDD;IACE,kBAAA;IfymDD;Ee1mDD;IACE,2BAAA;If4mDD;Ee7mDD;IACE,0BAAA;If+mDD;EehnDD;IACE,iBAAA;IfknDD;EACF;Aa9mDD;EEvCI;IACE,aAAA;IfwpDH;EejpDD;IACE,aAAA;IfmpDD;EeppDD;IACE,qBAAA;IfspDD;EevpDD;IACE,qBAAA;IfypDD;Ee1pDD;IACE,YAAA;If4pDD;Ee7pDD;IACE,qBAAA;If+pDD;EehqDD;IACE,qBAAA;IfkqDD;EenqDD;IACE,YAAA;IfqqDD;EetqDD;IACE,qBAAA;IfwqDD;EezqDD;IACE,qBAAA;If2qDD;Ee5qDD;IACE,YAAA;If8qDD;Ee/qDD;IACE,qBAAA;IfirDD;EelrDD;IACE,oBAAA;IforDD;EetqDD;IACE,aAAA;IfwqDD;EezqDD;IACE,qBAAA;If2qDD;Ee5qDD;IACE,qBAAA;If8qDD;Ee/qDD;IACE,YAAA;IfirDD;EelrDD;IACE,qBAAA;IforDD;EerrDD;IACE,qBAAA;IfurDD;EexrDD;IACE,YAAA;If0rDD;Ee3rDD;IACE,qBAAA;If6rDD;Ee9rDD;IACE,qBAAA;IfgsDD;EejsDD;IACE,YAAA;IfmsDD;EepsDD;IACE,qBAAA;IfssDD;EevsDD;IACE,oBAAA;IfysDD;EersDD;IACE,aAAA;IfusDD;EevtDD;IACE,YAAA;IfytDD;Ee1tDD;IACE,oBAAA;If4tDD;Ee7tDD;IACE,oBAAA;If+tDD;EehuDD;IACE,WAAA;IfkuDD;EenuDD;IACE,oBAAA;IfquDD;EetuDD;IACE,oBAAA;IfwuDD;EezuDD;IACE,WAAA;If2uDD;Ee5uDD;IACE,oBAAA;If8uDD;Ee/uDD;IACE,oBAAA;IfivDD;EelvDD;IACE,WAAA;IfovDD;EervDD;IACE,oBAAA;IfuvDD;EexvDD;IACE,mBAAA;If0vDD;EetvDD;IACE,YAAA;IfwvDD;Ee1uDD;IACE,mBAAA;If4uDD;Ee7uDD;IACE,2BAAA;If+uDD;EehvDD;IACE,2BAAA;IfkvDD;EenvDD;IACE,kBAAA;IfqvDD;EetvDD;IACE,2BAAA;IfwvDD;EezvDD;IACE,2BAAA;If2vDD;Ee5vDD;IACE,kBAAA;If8vDD;Ee/vDD;IACE,2BAAA;IfiwDD;EelwDD;IACE,2BAAA;IfowDD;EerwDD;IACE,kBAAA;IfuwDD;EexwDD;IACE,2BAAA;If0wDD;Ee3wDD;IACE,0BAAA;If6wDD;Ee9wDD;IACE,iBAAA;IfgxDD;EACF;AarwDD;EE9CI;IACE,aAAA;IfszDH;Ee/yDD;IACE,aAAA;IfizDD;EelzDD;IACE,qBAAA;IfozDD;EerzDD;IACE,qBAAA;IfuzDD;EexzDD;IACE,YAAA;If0zDD;Ee3zDD;IACE,qBAAA;If6zDD;Ee9zDD;IACE,qBAAA;Ifg0DD;Eej0DD;IACE,YAAA;Ifm0DD;Eep0DD;IACE,qBAAA;Ifs0DD;Eev0DD;IACE,qBAAA;Ify0DD;Ee10DD;IACE,YAAA;If40DD;Ee70DD;IACE,qBAAA;If+0DD;Eeh1DD;IACE,oBAAA;Ifk1DD;Eep0DD;IACE,aAAA;Ifs0DD;Eev0DD;IACE,qBAAA;Ify0DD;Ee10DD;IACE,qBAAA;If40DD;Ee70DD;IACE,YAAA;If+0DD;Eeh1DD;IACE,qBAAA;Ifk1DD;Een1DD;IACE,qBAAA;Ifq1DD;Eet1DD;IACE,YAAA;Ifw1DD;Eez1DD;IACE,qBAAA;If21DD;Ee51DD;IACE,qBAAA;If81DD;Ee/1DD;IACE,YAAA;Ifi2DD;Eel2DD;IACE,qBAAA;Ifo2DD;Eer2DD;IACE,oBAAA;Ifu2DD;Een2DD;IACE,aAAA;Ifq2DD;Eer3DD;IACE,YAAA;Ifu3DD;Eex3DD;IACE,oBAAA;If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EACA,uBAAA;ErB+tFD;AqB7tFC;;;;;;EAME,gBAAA;EACA,2BAAA;EACI,uBAAA;ErB+tFP;AqB7tFC;;;EAGE,wBAAA;ErB+tFH;AqB1tFG;;;;;;;;;;;;;;;;;;EAME,2BAAA;EACI,uBAAA;ErBwuFT;AoBhtFD;ECnBI,gBAAA;EACA,2BAAA;ErBsuFH;AoBjtFD;ECxDE,gBAAA;EACA,2BAAA;EACA,uBAAA;ErB4wFD;AqB1wFC;;;;;;EAME,gBAAA;EACA,2BAAA;EACI,uBAAA;ErB4wFP;AqB1wFC;;;EAGE,wBAAA;ErB4wFH;AqBvwFG;;;;;;;;;;;;;;;;;;EAME,2BAAA;EACI,uBAAA;ErBqxFT;AoB1vFD;ECtBI,gBAAA;EACA,2BAAA;ErBmxFH;AoB1vFD;EC5DE,gBAAA;EACA,2BAAA;EACA,uBAAA;ErByzFD;AqBvzFC;;;;;;EAME,gBAAA;EACA,2BAAA;EACI,uBAAA;ErByzFP;AqBvzFC;;;EAGE,wBAAA;ErByzFH;AqBpzFG;;;;;;;;;;;;;;;;;;EAME,2BAAA;EACI,uBAAA;ErBk0FT;AoBnyFD;EC1BI,gBAAA;EACA,2BAAA;ErBg0FH;AoBnyFD;EChEE,gBAAA;EACA,2BAAA;EACA,uBAAA;ErBs2FD;AqBp2FC;;;;;;EAME,gBAAA;EACA,2BAAA;EACI,uBAAA;ErBs2FP;AqBp2FC;;;EAGE,wBAAA;ErBs2FH;AqBj2FG;;;;;;;;;;;;;;;;;;EAME,2BAAA;EACI,uBAAA;ErB+2FT;AoB50FD;EC9BI,gBAAA;EACA,2BAAA;ErB62FH;AoB50FD;ECpEE,gBAAA;EACA,2BAAA;EACA,uBAAA;ErBm5FD;AqBj5FC;;;;;;EAME,gBAAA;EACA,2BAAA;EACI,uBAAA;ErBm5FP;AqBj5FC;;;EAGE,wBAAA;ErBm5FH;AqB94FG;;;;;;;;;;;;;;;;;;EAME,2BAAA;EACI,uBAAA;ErB45FT;AoBr3FD;EClCI,gBAAA;EACA,2BAAA;ErB05FH;AoBr3FD;ECxEE,gBAAA;EACA,2BAAA;EACA,uBAAA;ErBg8FD;AqB97FC;;;;;;EAME,gBAAA;EACA,2BAAA;EACI,uBAAA;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","file":"bootstrap.css","sourcesContent":["/*! normalize.css v3.0.2 | MIT License | git.io/normalize */\nhtml {\n font-family: sans-serif;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n}\nbody {\n margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block;\n vertical-align: baseline;\n}\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n[hidden],\ntemplate {\n display: none;\n}\na {\n background-color: transparent;\n}\na:active,\na:hover {\n outline: 0;\n}\nabbr[title] {\n border-bottom: 1px dotted;\n}\nb,\nstrong {\n font-weight: bold;\n}\ndfn {\n font-style: italic;\n}\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\nmark {\n background: #ff0;\n color: #000;\n}\nsmall {\n font-size: 80%;\n}\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\nsup {\n top: -0.5em;\n}\nsub {\n bottom: -0.25em;\n}\nimg {\n border: 0;\n}\nsvg:not(:root) {\n overflow: hidden;\n}\nfigure {\n margin: 1em 40px;\n}\nhr {\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n height: 0;\n}\npre {\n overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit;\n font: inherit;\n margin: 0;\n}\nbutton {\n overflow: visible;\n}\nbutton,\nselect {\n text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button;\n cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\ninput {\n line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box;\n padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: textfield;\n -moz-box-sizing: content-box;\n -webkit-box-sizing: content-box;\n box-sizing: content-box;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\nlegend {\n border: 0;\n padding: 0;\n}\ntextarea {\n overflow: auto;\n}\noptgroup {\n font-weight: bold;\n}\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\ntd,\nth {\n padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n *,\n *:before,\n *:after {\n background: transparent !important;\n color: #000 !important;\n box-shadow: none !important;\n text-shadow: none !important;\n }\n a,\n a:visited {\n text-decoration: underline;\n }\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n img {\n max-width: 100% !important;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n select {\n background: #fff !important;\n }\n .navbar {\n display: none;\n }\n .btn > .caret,\n .dropup > .btn > .caret {\n border-top-color: #000 !important;\n }\n .label {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n}\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url('../fonts/glyphicons-halflings-regular.eot');\n src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');\n}\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n content: \"\\2a\";\n}\n.glyphicon-plus:before {\n content: \"\\2b\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n content: \"\\270f\";\n}\n.glyphicon-glass:before {\n content: \"\\e001\";\n}\n.glyphicon-music:before {\n content: \"\\e002\";\n}\n.glyphicon-search:before {\n content: \"\\e003\";\n}\n.glyphicon-heart:before {\n content: \"\\e005\";\n}\n.glyphicon-star:before {\n content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n content: \"\\e007\";\n}\n.glyphicon-user:before {\n content: \"\\e008\";\n}\n.glyphicon-film:before {\n content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n content: \"\\e010\";\n}\n.glyphicon-th:before {\n content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n content: \"\\e012\";\n}\n.glyphicon-ok:before {\n content: \"\\e013\";\n}\n.glyphicon-remove:before {\n content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n content: \"\\e016\";\n}\n.glyphicon-off:before {\n content: \"\\e017\";\n}\n.glyphicon-signal:before {\n content: \"\\e018\";\n}\n.glyphicon-cog:before {\n content: \"\\e019\";\n}\n.glyphicon-trash:before {\n content: \"\\e020\";\n}\n.glyphicon-home:before {\n content: \"\\e021\";\n}\n.glyphicon-file:before {\n content: \"\\e022\";\n}\n.glyphicon-time:before {\n content: \"\\e023\";\n}\n.glyphicon-road:before {\n content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n content: \"\\e025\";\n}\n.glyphicon-download:before {\n content: \"\\e026\";\n}\n.glyphicon-upload:before {\n content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n content: \"\\e032\";\n}\n.glyphicon-lock:before {\n content: \"\\e033\";\n}\n.glyphicon-flag:before {\n content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n content: \"\\e040\";\n}\n.glyphicon-tag:before {\n content: \"\\e041\";\n}\n.glyphicon-tags:before {\n content: \"\\e042\";\n}\n.glyphicon-book:before {\n content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n content: \"\\e044\";\n}\n.glyphicon-print:before {\n content: \"\\e045\";\n}\n.glyphicon-camera:before {\n content: \"\\e046\";\n}\n.glyphicon-font:before {\n content: \"\\e047\";\n}\n.glyphicon-bold:before {\n content: \"\\e048\";\n}\n.glyphicon-italic:before {\n content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n content: \"\\e055\";\n}\n.glyphicon-list:before {\n content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n content: \"\\e059\";\n}\n.glyphicon-picture:before {\n content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n content: \"\\e063\";\n}\n.glyphicon-tint:before {\n content: \"\\e064\";\n}\n.glyphicon-edit:before {\n content: \"\\e065\";\n}\n.glyphicon-share:before {\n content: \"\\e066\";\n}\n.glyphicon-check:before {\n content: \"\\e067\";\n}\n.glyphicon-move:before {\n content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n content: \"\\e070\";\n}\n.glyphicon-backward:before {\n content: \"\\e071\";\n}\n.glyphicon-play:before {\n content: \"\\e072\";\n}\n.glyphicon-pause:before {\n content: \"\\e073\";\n}\n.glyphicon-stop:before {\n content: \"\\e074\";\n}\n.glyphicon-forward:before {\n content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n content: \"\\e077\";\n}\n.glyphicon-eject:before {\n content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n content: \"\\e101\";\n}\n.glyphicon-gift:before {\n content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n content: \"\\e103\";\n}\n.glyphicon-fire:before {\n content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n content: \"\\e107\";\n}\n.glyphicon-plane:before {\n content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n content: \"\\e109\";\n}\n.glyphicon-random:before {\n content: \"\\e110\";\n}\n.glyphicon-comment:before {\n content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n content: \"\\e122\";\n}\n.glyphicon-bell:before {\n content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n content: \"\\e134\";\n}\n.glyphicon-globe:before {\n content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n content: \"\\e137\";\n}\n.glyphicon-filter:before {\n content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n content: \"\\e143\";\n}\n.glyphicon-link:before {\n content: \"\\e144\";\n}\n.glyphicon-phone:before {\n content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n content: \"\\e146\";\n}\n.glyphicon-usd:before {\n content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n content: \"\\e149\";\n}\n.glyphicon-sort:before {\n content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n content: \"\\e157\";\n}\n.glyphicon-expand:before {\n content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n content: \"\\e161\";\n}\n.glyphicon-flash:before {\n content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n content: \"\\e164\";\n}\n.glyphicon-record:before {\n content: \"\\e165\";\n}\n.glyphicon-save:before {\n content: \"\\e166\";\n}\n.glyphicon-open:before {\n content: \"\\e167\";\n}\n.glyphicon-saved:before {\n content: \"\\e168\";\n}\n.glyphicon-import:before {\n content: \"\\e169\";\n}\n.glyphicon-export:before {\n content: \"\\e170\";\n}\n.glyphicon-send:before {\n content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n content: \"\\e179\";\n}\n.glyphicon-header:before {\n content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n content: \"\\e183\";\n}\n.glyphicon-tower:before {\n content: \"\\e184\";\n}\n.glyphicon-stats:before {\n content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n content: \"\\e200\";\n}\n* {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n*:before,\n*:after {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 14px;\n line-height: 1.42857143;\n color: #333333;\n background-color: #ffffff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\na {\n color: #337ab7;\n text-decoration: none;\n}\na:hover,\na:focus {\n color: #23527c;\n text-decoration: underline;\n}\na:focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\nfigure {\n margin: 0;\n}\nimg {\n vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n display: block;\n max-width: 100%;\n height: auto;\n}\n.img-rounded {\n border-radius: 6px;\n}\n.img-thumbnail {\n padding: 4px;\n line-height: 1.42857143;\n background-color: #ffffff;\n border: 1px solid #dddddd;\n border-radius: 4px;\n -webkit-transition: all 0.2s ease-in-out;\n -o-transition: all 0.2s ease-in-out;\n transition: all 0.2s ease-in-out;\n display: inline-block;\n max-width: 100%;\n height: auto;\n}\n.img-circle {\n border-radius: 50%;\n}\nhr {\n margin-top: 20px;\n margin-bottom: 20px;\n border: 0;\n border-top: 1px solid #eeeeee;\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n font-family: inherit;\n font-weight: 500;\n line-height: 1.1;\n color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n font-weight: normal;\n line-height: 1;\n color: #777777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n margin-top: 20px;\n margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n margin-top: 10px;\n margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n font-size: 75%;\n}\nh1,\n.h1 {\n font-size: 36px;\n}\nh2,\n.h2 {\n font-size: 30px;\n}\nh3,\n.h3 {\n font-size: 24px;\n}\nh4,\n.h4 {\n font-size: 18px;\n}\nh5,\n.h5 {\n font-size: 14px;\n}\nh6,\n.h6 {\n font-size: 12px;\n}\np {\n margin: 0 0 10px;\n}\n.lead {\n margin-bottom: 20px;\n font-size: 16px;\n font-weight: 300;\n line-height: 1.4;\n}\n@media (min-width: 768px) {\n .lead {\n font-size: 21px;\n }\n}\nsmall,\n.small {\n font-size: 85%;\n}\nmark,\n.mark {\n background-color: #fcf8e3;\n padding: .2em;\n}\n.text-left {\n text-align: left;\n}\n.text-right {\n text-align: right;\n}\n.text-center {\n text-align: center;\n}\n.text-justify {\n text-align: justify;\n}\n.text-nowrap {\n white-space: nowrap;\n}\n.text-lowercase {\n text-transform: lowercase;\n}\n.text-uppercase {\n text-transform: uppercase;\n}\n.text-capitalize {\n text-transform: capitalize;\n}\n.text-muted {\n color: #777777;\n}\n.text-primary {\n color: #337ab7;\n}\na.text-primary:hover {\n color: #286090;\n}\n.text-success {\n color: #3c763d;\n}\na.text-success:hover {\n color: #2b542c;\n}\n.text-info {\n color: #31708f;\n}\na.text-info:hover {\n color: #245269;\n}\n.text-warning {\n color: #8a6d3b;\n}\na.text-warning:hover {\n color: #66512c;\n}\n.text-danger {\n color: #a94442;\n}\na.text-danger:hover {\n color: #843534;\n}\n.bg-primary {\n color: #fff;\n background-color: #337ab7;\n}\na.bg-primary:hover {\n background-color: #286090;\n}\n.bg-success {\n background-color: #dff0d8;\n}\na.bg-success:hover {\n background-color: #c1e2b3;\n}\n.bg-info {\n background-color: #d9edf7;\n}\na.bg-info:hover {\n background-color: #afd9ee;\n}\n.bg-warning {\n background-color: #fcf8e3;\n}\na.bg-warning:hover {\n background-color: #f7ecb5;\n}\n.bg-danger {\n background-color: #f2dede;\n}\na.bg-danger:hover {\n background-color: #e4b9b9;\n}\n.page-header {\n padding-bottom: 9px;\n margin: 40px 0 20px;\n border-bottom: 1px solid #eeeeee;\n}\nul,\nol {\n margin-top: 0;\n margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n margin-bottom: 0;\n}\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n.list-inline {\n padding-left: 0;\n list-style: none;\n margin-left: -5px;\n}\n.list-inline > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n}\ndl {\n margin-top: 0;\n margin-bottom: 20px;\n}\ndt,\ndd {\n line-height: 1.42857143;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0;\n}\n@media (min-width: 768px) {\n .dl-horizontal dt {\n float: left;\n width: 160px;\n clear: left;\n text-align: right;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .dl-horizontal dd {\n margin-left: 180px;\n }\n}\nabbr[title],\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted #777777;\n}\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\nblockquote {\n padding: 10px 20px;\n margin: 0 0 20px;\n font-size: 17.5px;\n border-left: 5px solid #eeeeee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n display: block;\n font-size: 80%;\n line-height: 1.42857143;\n color: #777777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n content: '\\2014 \\00A0';\n}\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid #eeeeee;\n border-left: 0;\n text-align: right;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n content: '';\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n content: '\\00A0 \\2014';\n}\naddress {\n margin-bottom: 20px;\n font-style: normal;\n line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: #c7254e;\n background-color: #f9f2f4;\n border-radius: 4px;\n}\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: #ffffff;\n background-color: #333333;\n border-radius: 3px;\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n box-shadow: none;\n}\npre {\n display: block;\n padding: 9.5px;\n margin: 0 0 10px;\n font-size: 13px;\n line-height: 1.42857143;\n word-break: break-all;\n word-wrap: break-word;\n color: #333333;\n background-color: #f5f5f5;\n border: 1px solid #cccccc;\n border-radius: 4px;\n}\npre code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n}\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n.container {\n margin-right: auto;\n margin-left: auto;\n padding-left: 15px;\n padding-right: 15px;\n}\n@media (min-width: 768px) {\n .container {\n width: 750px;\n }\n}\n@media (min-width: 992px) {\n .container {\n width: 970px;\n }\n}\n@media (min-width: 1200px) {\n .container {\n width: 1170px;\n }\n}\n.container-fluid {\n margin-right: auto;\n margin-left: auto;\n padding-left: 15px;\n padding-right: 15px;\n}\n.row {\n margin-left: -15px;\n margin-right: -15px;\n}\n.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {\n position: relative;\n min-height: 1px;\n padding-left: 15px;\n padding-right: 15px;\n}\n.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {\n float: left;\n}\n.col-xs-12 {\n width: 100%;\n}\n.col-xs-11 {\n width: 91.66666667%;\n}\n.col-xs-10 {\n width: 83.33333333%;\n}\n.col-xs-9 {\n width: 75%;\n}\n.col-xs-8 {\n width: 66.66666667%;\n}\n.col-xs-7 {\n width: 58.33333333%;\n}\n.col-xs-6 {\n width: 50%;\n}\n.col-xs-5 {\n width: 41.66666667%;\n}\n.col-xs-4 {\n width: 33.33333333%;\n}\n.col-xs-3 {\n width: 25%;\n}\n.col-xs-2 {\n width: 16.66666667%;\n}\n.col-xs-1 {\n width: 8.33333333%;\n}\n.col-xs-pull-12 {\n right: 100%;\n}\n.col-xs-pull-11 {\n right: 91.66666667%;\n}\n.col-xs-pull-10 {\n right: 83.33333333%;\n}\n.col-xs-pull-9 {\n right: 75%;\n}\n.col-xs-pull-8 {\n right: 66.66666667%;\n}\n.col-xs-pull-7 {\n right: 58.33333333%;\n}\n.col-xs-pull-6 {\n right: 50%;\n}\n.col-xs-pull-5 {\n right: 41.66666667%;\n}\n.col-xs-pull-4 {\n right: 33.33333333%;\n}\n.col-xs-pull-3 {\n right: 25%;\n}\n.col-xs-pull-2 {\n right: 16.66666667%;\n}\n.col-xs-pull-1 {\n right: 8.33333333%;\n}\n.col-xs-pull-0 {\n right: auto;\n}\n.col-xs-push-12 {\n left: 100%;\n}\n.col-xs-push-11 {\n left: 91.66666667%;\n}\n.col-xs-push-10 {\n left: 83.33333333%;\n}\n.col-xs-push-9 {\n left: 75%;\n}\n.col-xs-push-8 {\n left: 66.66666667%;\n}\n.col-xs-push-7 {\n left: 58.33333333%;\n}\n.col-xs-push-6 {\n left: 50%;\n}\n.col-xs-push-5 {\n left: 41.66666667%;\n}\n.col-xs-push-4 {\n left: 33.33333333%;\n}\n.col-xs-push-3 {\n left: 25%;\n}\n.col-xs-push-2 {\n left: 16.66666667%;\n}\n.col-xs-push-1 {\n left: 8.33333333%;\n}\n.col-xs-push-0 {\n left: auto;\n}\n.col-xs-offset-12 {\n margin-left: 100%;\n}\n.col-xs-offset-11 {\n margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n margin-left: 75%;\n}\n.col-xs-offset-8 {\n margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n margin-left: 50%;\n}\n.col-xs-offset-5 {\n margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n margin-left: 25%;\n}\n.col-xs-offset-2 {\n margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n margin-left: 0%;\n}\n@media (min-width: 768px) {\n .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {\n float: left;\n }\n .col-sm-12 {\n width: 100%;\n }\n .col-sm-11 {\n width: 91.66666667%;\n }\n .col-sm-10 {\n width: 83.33333333%;\n }\n .col-sm-9 {\n width: 75%;\n }\n .col-sm-8 {\n width: 66.66666667%;\n }\n .col-sm-7 {\n width: 58.33333333%;\n }\n .col-sm-6 {\n width: 50%;\n }\n .col-sm-5 {\n width: 41.66666667%;\n }\n .col-sm-4 {\n width: 33.33333333%;\n }\n .col-sm-3 {\n width: 25%;\n }\n .col-sm-2 {\n width: 16.66666667%;\n }\n .col-sm-1 {\n width: 8.33333333%;\n }\n .col-sm-pull-12 {\n right: 100%;\n }\n .col-sm-pull-11 {\n right: 91.66666667%;\n }\n .col-sm-pull-10 {\n right: 83.33333333%;\n }\n .col-sm-pull-9 {\n right: 75%;\n }\n .col-sm-pull-8 {\n right: 66.66666667%;\n }\n .col-sm-pull-7 {\n right: 58.33333333%;\n }\n .col-sm-pull-6 {\n right: 50%;\n }\n .col-sm-pull-5 {\n right: 41.66666667%;\n }\n .col-sm-pull-4 {\n right: 33.33333333%;\n }\n .col-sm-pull-3 {\n right: 25%;\n }\n .col-sm-pull-2 {\n right: 16.66666667%;\n }\n .col-sm-pull-1 {\n right: 8.33333333%;\n }\n .col-sm-pull-0 {\n right: auto;\n }\n .col-sm-push-12 {\n left: 100%;\n }\n .col-sm-push-11 {\n left: 91.66666667%;\n }\n .col-sm-push-10 {\n left: 83.33333333%;\n }\n .col-sm-push-9 {\n left: 75%;\n }\n .col-sm-push-8 {\n left: 66.66666667%;\n }\n .col-sm-push-7 {\n left: 58.33333333%;\n }\n .col-sm-push-6 {\n left: 50%;\n }\n .col-sm-push-5 {\n left: 41.66666667%;\n }\n .col-sm-push-4 {\n left: 33.33333333%;\n }\n .col-sm-push-3 {\n left: 25%;\n }\n .col-sm-push-2 {\n left: 16.66666667%;\n }\n .col-sm-push-1 {\n left: 8.33333333%;\n }\n .col-sm-push-0 {\n left: auto;\n }\n .col-sm-offset-12 {\n margin-left: 100%;\n }\n .col-sm-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-sm-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-sm-offset-9 {\n margin-left: 75%;\n }\n .col-sm-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-sm-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-sm-offset-6 {\n margin-left: 50%;\n }\n .col-sm-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-sm-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-sm-offset-3 {\n margin-left: 25%;\n }\n .col-sm-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-sm-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-sm-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 992px) {\n .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {\n float: left;\n }\n .col-md-12 {\n width: 100%;\n }\n .col-md-11 {\n width: 91.66666667%;\n }\n .col-md-10 {\n width: 83.33333333%;\n }\n .col-md-9 {\n width: 75%;\n }\n .col-md-8 {\n width: 66.66666667%;\n }\n .col-md-7 {\n width: 58.33333333%;\n }\n .col-md-6 {\n width: 50%;\n }\n .col-md-5 {\n width: 41.66666667%;\n }\n .col-md-4 {\n width: 33.33333333%;\n }\n .col-md-3 {\n width: 25%;\n }\n .col-md-2 {\n width: 16.66666667%;\n }\n .col-md-1 {\n width: 8.33333333%;\n }\n .col-md-pull-12 {\n right: 100%;\n }\n .col-md-pull-11 {\n right: 91.66666667%;\n }\n .col-md-pull-10 {\n right: 83.33333333%;\n }\n .col-md-pull-9 {\n right: 75%;\n }\n .col-md-pull-8 {\n right: 66.66666667%;\n }\n .col-md-pull-7 {\n right: 58.33333333%;\n }\n .col-md-pull-6 {\n right: 50%;\n }\n .col-md-pull-5 {\n right: 41.66666667%;\n }\n .col-md-pull-4 {\n right: 33.33333333%;\n }\n .col-md-pull-3 {\n right: 25%;\n }\n .col-md-pull-2 {\n right: 16.66666667%;\n }\n .col-md-pull-1 {\n right: 8.33333333%;\n }\n .col-md-pull-0 {\n right: auto;\n }\n .col-md-push-12 {\n left: 100%;\n }\n .col-md-push-11 {\n left: 91.66666667%;\n }\n .col-md-push-10 {\n left: 83.33333333%;\n }\n .col-md-push-9 {\n left: 75%;\n }\n .col-md-push-8 {\n left: 66.66666667%;\n }\n .col-md-push-7 {\n left: 58.33333333%;\n }\n .col-md-push-6 {\n left: 50%;\n }\n .col-md-push-5 {\n left: 41.66666667%;\n }\n .col-md-push-4 {\n left: 33.33333333%;\n }\n .col-md-push-3 {\n left: 25%;\n }\n .col-md-push-2 {\n left: 16.66666667%;\n }\n .col-md-push-1 {\n left: 8.33333333%;\n }\n .col-md-push-0 {\n left: auto;\n }\n .col-md-offset-12 {\n margin-left: 100%;\n }\n .col-md-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-md-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-md-offset-9 {\n margin-left: 75%;\n }\n .col-md-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-md-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-md-offset-6 {\n margin-left: 50%;\n }\n .col-md-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-md-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-md-offset-3 {\n margin-left: 25%;\n }\n .col-md-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-md-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-md-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 1200px) {\n .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {\n float: left;\n }\n .col-lg-12 {\n width: 100%;\n }\n .col-lg-11 {\n width: 91.66666667%;\n }\n .col-lg-10 {\n width: 83.33333333%;\n }\n .col-lg-9 {\n width: 75%;\n }\n .col-lg-8 {\n width: 66.66666667%;\n }\n .col-lg-7 {\n width: 58.33333333%;\n }\n .col-lg-6 {\n width: 50%;\n }\n .col-lg-5 {\n width: 41.66666667%;\n }\n .col-lg-4 {\n width: 33.33333333%;\n }\n .col-lg-3 {\n width: 25%;\n }\n .col-lg-2 {\n width: 16.66666667%;\n }\n .col-lg-1 {\n width: 8.33333333%;\n }\n .col-lg-pull-12 {\n right: 100%;\n }\n .col-lg-pull-11 {\n right: 91.66666667%;\n }\n .col-lg-pull-10 {\n right: 83.33333333%;\n }\n .col-lg-pull-9 {\n right: 75%;\n }\n .col-lg-pull-8 {\n right: 66.66666667%;\n }\n .col-lg-pull-7 {\n right: 58.33333333%;\n }\n .col-lg-pull-6 {\n right: 50%;\n }\n .col-lg-pull-5 {\n right: 41.66666667%;\n }\n .col-lg-pull-4 {\n right: 33.33333333%;\n }\n .col-lg-pull-3 {\n right: 25%;\n }\n .col-lg-pull-2 {\n right: 16.66666667%;\n }\n .col-lg-pull-1 {\n right: 8.33333333%;\n }\n .col-lg-pull-0 {\n right: auto;\n }\n .col-lg-push-12 {\n left: 100%;\n }\n .col-lg-push-11 {\n left: 91.66666667%;\n }\n .col-lg-push-10 {\n left: 83.33333333%;\n }\n .col-lg-push-9 {\n left: 75%;\n }\n .col-lg-push-8 {\n left: 66.66666667%;\n }\n .col-lg-push-7 {\n left: 58.33333333%;\n }\n .col-lg-push-6 {\n left: 50%;\n }\n .col-lg-push-5 {\n left: 41.66666667%;\n }\n .col-lg-push-4 {\n left: 33.33333333%;\n }\n .col-lg-push-3 {\n left: 25%;\n }\n .col-lg-push-2 {\n left: 16.66666667%;\n }\n .col-lg-push-1 {\n left: 8.33333333%;\n }\n .col-lg-push-0 {\n left: auto;\n }\n .col-lg-offset-12 {\n margin-left: 100%;\n }\n .col-lg-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-lg-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-lg-offset-9 {\n margin-left: 75%;\n }\n .col-lg-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-lg-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-lg-offset-6 {\n margin-left: 50%;\n }\n .col-lg-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-lg-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-lg-offset-3 {\n margin-left: 25%;\n }\n .col-lg-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-lg-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-lg-offset-0 {\n margin-left: 0%;\n }\n}\ntable {\n background-color: transparent;\n}\ncaption {\n padding-top: 8px;\n padding-bottom: 8px;\n color: #777777;\n text-align: left;\n}\nth {\n text-align: left;\n}\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n padding: 8px;\n line-height: 1.42857143;\n vertical-align: top;\n border-top: 1px solid #dddddd;\n}\n.table > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid #dddddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n border-top: 0;\n}\n.table > tbody + tbody {\n border-top: 2px solid #dddddd;\n}\n.table .table {\n background-color: #ffffff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n padding: 5px;\n}\n.table-bordered {\n border: 1px solid #dddddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n border: 1px solid #dddddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-child(odd) {\n background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n background-color: #f5f5f5;\n}\ntable col[class*=\"col-\"] {\n position: static;\n float: none;\n display: table-column;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n position: static;\n float: none;\n display: table-cell;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n background-color: #ebcccc;\n}\n.table-responsive {\n overflow-x: auto;\n min-height: 0.01%;\n}\n@media screen and (max-width: 767px) {\n .table-responsive {\n width: 100%;\n margin-bottom: 15px;\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid #dddddd;\n }\n .table-responsive > .table {\n margin-bottom: 0;\n }\n .table-responsive > .table > thead > tr > th,\n .table-responsive > .table > tbody > tr > th,\n .table-responsive > .table > tfoot > tr > th,\n .table-responsive > .table > thead > tr > td,\n .table-responsive > .table > tbody > tr > td,\n .table-responsive > .table > tfoot > tr > td {\n white-space: nowrap;\n }\n .table-responsive > .table-bordered {\n border: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:first-child,\n .table-responsive > .table-bordered > tbody > tr > th:first-child,\n .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n .table-responsive > .table-bordered > thead > tr > td:first-child,\n .table-responsive > .table-bordered > tbody > tr > td:first-child,\n .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:last-child,\n .table-responsive > .table-bordered > tbody > tr > th:last-child,\n .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n .table-responsive > .table-bordered > thead > tr > td:last-child,\n .table-responsive > .table-bordered > tbody > tr > td:last-child,\n .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n }\n .table-responsive > .table-bordered > tbody > tr:last-child > th,\n .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n .table-responsive > .table-bordered > tbody > tr:last-child > td,\n .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n border-bottom: 0;\n }\n}\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n min-width: 0;\n}\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: 20px;\n font-size: 21px;\n line-height: inherit;\n color: #333333;\n border: 0;\n border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n display: inline-block;\n max-width: 100%;\n margin-bottom: 5px;\n font-weight: bold;\n}\ninput[type=\"search\"] {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9;\n line-height: normal;\n}\ninput[type=\"file\"] {\n display: block;\n}\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\nselect[multiple],\nselect[size] {\n height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\noutput {\n display: block;\n padding-top: 7px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n}\n.form-control {\n display: block;\n width: 100%;\n height: 34px;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n background-color: #ffffff;\n background-image: none;\n border: 1px solid #cccccc;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n border-color: #66afe9;\n outline: 0;\n -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n.form-control::-moz-placeholder {\n color: #999999;\n opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n color: #999999;\n}\n.form-control::-webkit-input-placeholder {\n color: #999999;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n cursor: not-allowed;\n background-color: #eeeeee;\n opacity: 1;\n}\ntextarea.form-control {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: none;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type=\"date\"],\n input[type=\"time\"],\n input[type=\"datetime-local\"],\n input[type=\"month\"] {\n line-height: 34px;\n }\n input[type=\"date\"].input-sm,\n input[type=\"time\"].input-sm,\n input[type=\"datetime-local\"].input-sm,\n input[type=\"month\"].input-sm {\n line-height: 30px;\n }\n input[type=\"date\"].input-lg,\n input[type=\"time\"].input-lg,\n input[type=\"datetime-local\"].input-lg,\n input[type=\"month\"].input-lg {\n line-height: 46px;\n }\n}\n.form-group {\n margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.radio label,\n.checkbox label {\n min-height: 20px;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-left: -20px;\n margin-top: 4px \\9;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n vertical-align: middle;\n font-weight: normal;\n cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n cursor: not-allowed;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n cursor: not-allowed;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n cursor: not-allowed;\n}\n.form-control-static {\n padding-top: 7px;\n padding-bottom: 7px;\n margin-bottom: 0;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n padding-left: 0;\n padding-right: 0;\n}\n.input-sm,\n.form-group-sm .form-control {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-sm,\nselect.form-group-sm .form-control {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-sm,\ntextarea.form-group-sm .form-control,\nselect[multiple].input-sm,\nselect[multiple].form-group-sm .form-control {\n height: auto;\n}\n.input-lg,\n.form-group-lg .form-control {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.33;\n border-radius: 6px;\n}\nselect.input-lg,\nselect.form-group-lg .form-control {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-lg,\ntextarea.form-group-lg .form-control,\nselect[multiple].input-lg,\nselect[multiple].form-group-lg .form-control {\n height: auto;\n}\n.has-feedback {\n position: relative;\n}\n.has-feedback .form-control {\n padding-right: 42.5px;\n}\n.form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n display: block;\n width: 34px;\n height: 34px;\n line-height: 34px;\n text-align: center;\n pointer-events: none;\n}\n.input-lg + .form-control-feedback {\n width: 46px;\n height: 46px;\n line-height: 46px;\n}\n.input-sm + .form-control-feedback {\n width: 30px;\n height: 30px;\n line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n color: #3c763d;\n}\n.has-success .form-control {\n border-color: #3c763d;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-success .form-control:focus {\n border-color: #2b542c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n color: #3c763d;\n border-color: #3c763d;\n background-color: #dff0d8;\n}\n.has-success .form-control-feedback {\n color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n color: #8a6d3b;\n}\n.has-warning .form-control {\n border-color: #8a6d3b;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-warning .form-control:focus {\n border-color: #66512c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n color: #8a6d3b;\n border-color: #8a6d3b;\n background-color: #fcf8e3;\n}\n.has-warning .form-control-feedback {\n color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n color: #a94442;\n}\n.has-error .form-control {\n border-color: #a94442;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-error .form-control:focus {\n border-color: #843534;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n color: #a94442;\n border-color: #a94442;\n background-color: #f2dede;\n}\n.has-error .form-control-feedback {\n color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n top: 0;\n}\n.help-block {\n display: block;\n margin-top: 5px;\n margin-bottom: 10px;\n color: #737373;\n}\n@media (min-width: 768px) {\n .form-inline .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-static {\n display: inline-block;\n }\n .form-inline .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .form-inline .input-group .input-group-addon,\n .form-inline .input-group .input-group-btn,\n .form-inline .input-group .form-control {\n width: auto;\n }\n .form-inline .input-group > .form-control {\n width: 100%;\n }\n .form-inline .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio,\n .form-inline .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio label,\n .form-inline .checkbox label {\n padding-left: 0;\n }\n .form-inline .radio input[type=\"radio\"],\n .form-inline .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .form-inline .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n margin-top: 0;\n margin-bottom: 0;\n padding-top: 7px;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n min-height: 27px;\n}\n.form-horizontal .form-group {\n margin-left: -15px;\n margin-right: -15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .control-label {\n text-align: right;\n margin-bottom: 0;\n padding-top: 7px;\n }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n right: 15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-lg .control-label {\n padding-top: 14.3px;\n }\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-sm .control-label {\n padding-top: 6px;\n }\n}\n.btn {\n display: inline-block;\n margin-bottom: 0;\n font-weight: normal;\n text-align: center;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none;\n border: 1px solid transparent;\n white-space: nowrap;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n border-radius: 4px;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n color: #333333;\n text-decoration: none;\n}\n.btn:active,\n.btn.active {\n outline: 0;\n background-image: none;\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n cursor: not-allowed;\n pointer-events: none;\n opacity: 0.65;\n filter: alpha(opacity=65);\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-default {\n color: #333333;\n background-color: #ffffff;\n border-color: #cccccc;\n}\n.btn-default:hover,\n.btn-default:focus,\n.btn-default.focus,\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n color: #333333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n background-image: none;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n background-color: #ffffff;\n border-color: #cccccc;\n}\n.btn-default .badge {\n color: #ffffff;\n background-color: #333333;\n}\n.btn-primary {\n color: #ffffff;\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary:hover,\n.btn-primary:focus,\n.btn-primary.focus,\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n color: #ffffff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n background-image: none;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary .badge {\n color: #337ab7;\n background-color: #ffffff;\n}\n.btn-success {\n color: #ffffff;\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success:hover,\n.btn-success:focus,\n.btn-success.focus,\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n color: #ffffff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n background-image: none;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success .badge {\n color: #5cb85c;\n background-color: #ffffff;\n}\n.btn-info {\n color: #ffffff;\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info:hover,\n.btn-info:focus,\n.btn-info.focus,\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n color: #ffffff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n background-image: none;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info .badge {\n color: #5bc0de;\n background-color: #ffffff;\n}\n.btn-warning {\n color: #ffffff;\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning:hover,\n.btn-warning:focus,\n.btn-warning.focus,\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n color: #ffffff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n background-image: none;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning .badge {\n color: #f0ad4e;\n background-color: #ffffff;\n}\n.btn-danger {\n color: #ffffff;\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger:hover,\n.btn-danger:focus,\n.btn-danger.focus,\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n color: #ffffff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n background-image: none;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger .badge {\n color: #d9534f;\n background-color: #ffffff;\n}\n.btn-link {\n color: #337ab7;\n font-weight: normal;\n border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n background-color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n color: #23527c;\n text-decoration: underline;\n background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n color: #777777;\n text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.33;\n border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n padding: 1px 5px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-block {\n display: block;\n width: 100%;\n}\n.btn-block + .btn-block {\n margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n.fade {\n opacity: 0;\n -webkit-transition: opacity 0.15s linear;\n -o-transition: opacity 0.15s linear;\n transition: opacity 0.15s linear;\n}\n.fade.in {\n opacity: 1;\n}\n.collapse {\n display: none;\n visibility: hidden;\n}\n.collapse.in {\n display: block;\n visibility: visible;\n}\ntr.collapse.in {\n display: table-row;\n}\ntbody.collapse.in {\n display: table-row-group;\n}\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n -webkit-transition-property: height, visibility;\n transition-property: height, visibility;\n -webkit-transition-duration: 0.35s;\n transition-duration: 0.35s;\n -webkit-transition-timing-function: ease;\n transition-timing-function: ease;\n}\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: 4px solid;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n}\n.dropdown {\n position: relative;\n}\n.dropdown-toggle:focus {\n outline: 0;\n}\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0;\n list-style: none;\n font-size: 14px;\n text-align: left;\n background-color: #ffffff;\n border: 1px solid #cccccc;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 4px;\n -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n background-clip: padding-box;\n}\n.dropdown-menu.pull-right {\n right: 0;\n left: auto;\n}\n.dropdown-menu .divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: 1.42857143;\n color: #333333;\n white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n text-decoration: none;\n color: #262626;\n background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n color: #ffffff;\n text-decoration: none;\n outline: 0;\n background-color: #337ab7;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n color: #777777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n text-decoration: none;\n background-color: transparent;\n background-image: none;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n cursor: not-allowed;\n}\n.open > .dropdown-menu {\n display: block;\n}\n.open > a {\n outline: 0;\n}\n.dropdown-menu-right {\n left: auto;\n right: 0;\n}\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: 12px;\n line-height: 1.42857143;\n color: #777777;\n white-space: nowrap;\n}\n.dropdown-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: 990;\n}\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n border-top: 0;\n border-bottom: 4px solid;\n content: \"\";\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 1px;\n}\n@media (min-width: 768px) {\n .navbar-right .dropdown-menu {\n left: auto;\n right: 0;\n }\n .navbar-right .dropdown-menu-left {\n left: 0;\n right: auto;\n }\n}\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n margin-left: -1px;\n}\n.btn-toolbar {\n margin-left: -5px;\n}\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n.btn-group > .btn:first-child {\n margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child > .btn:last-child,\n.btn-group > .btn-group:first-child > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group > .btn-group:last-child > .btn:first-child {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px;\n}\n.btn-group.open .dropdown-toggle {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn .caret {\n margin-left: 0;\n}\n.btn-lg .caret {\n border-width: 5px 5px 0;\n border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n border-top-right-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n border-bottom-left-radius: 4px;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n float: none;\n display: table-cell;\n width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n.input-group {\n position: relative;\n display: table;\n border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0;\n}\n.input-group .form-control {\n position: relative;\n z-index: 2;\n float: left;\n width: 100%;\n margin-bottom: 0;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.33;\n border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle;\n}\n.input-group-addon {\n padding: 6px 12px;\n font-size: 14px;\n font-weight: normal;\n line-height: 1;\n color: #555555;\n text-align: center;\n background-color: #eeeeee;\n border: 1px solid #cccccc;\n border-radius: 4px;\n}\n.input-group-addon.input-sm {\n padding: 5px 10px;\n font-size: 12px;\n border-radius: 3px;\n}\n.input-group-addon.input-lg {\n padding: 10px 16px;\n font-size: 18px;\n border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n.input-group-btn {\n position: relative;\n font-size: 0;\n white-space: nowrap;\n}\n.input-group-btn > .btn {\n position: relative;\n}\n.input-group-btn > .btn + .btn {\n margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n margin-left: -1px;\n}\n.nav {\n margin-bottom: 0;\n padding-left: 0;\n list-style: none;\n}\n.nav > li {\n position: relative;\n display: block;\n}\n.nav > li > a {\n position: relative;\n display: block;\n padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.nav > li.disabled > a {\n color: #777777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n color: #777777;\n text-decoration: none;\n background-color: transparent;\n cursor: not-allowed;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n background-color: #eeeeee;\n border-color: #337ab7;\n}\n.nav .nav-divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.nav > li > a > img {\n max-width: none;\n}\n.nav-tabs {\n border-bottom: 1px solid #dddddd;\n}\n.nav-tabs > li {\n float: left;\n margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n margin-right: 2px;\n line-height: 1.42857143;\n border: 1px solid transparent;\n border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n border-color: #eeeeee #eeeeee #dddddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n color: #555555;\n background-color: #ffffff;\n border: 1px solid #dddddd;\n border-bottom-color: transparent;\n cursor: default;\n}\n.nav-tabs.nav-justified {\n width: 100%;\n border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n float: none;\n}\n.nav-tabs.nav-justified > li > a {\n text-align: center;\n margin-bottom: 5px;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-tabs.nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs.nav-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n border: 1px solid #dddddd;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li > a {\n border-bottom: 1px solid #dddddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs.nav-justified > .active > a,\n .nav-tabs.nav-justified > .active > a:hover,\n .nav-tabs.nav-justified > .active > a:focus {\n border-bottom-color: #ffffff;\n }\n}\n.nav-pills > li {\n float: left;\n}\n.nav-pills > li > a {\n border-radius: 4px;\n}\n.nav-pills > li + li {\n margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n color: #ffffff;\n background-color: #337ab7;\n}\n.nav-stacked > li {\n float: none;\n}\n.nav-stacked > li + li {\n margin-top: 2px;\n margin-left: 0;\n}\n.nav-justified {\n width: 100%;\n}\n.nav-justified > li {\n float: none;\n}\n.nav-justified > li > a {\n text-align: center;\n margin-bottom: 5px;\n}\n.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs-justified {\n border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n border: 1px solid #dddddd;\n}\n@media (min-width: 768px) {\n .nav-tabs-justified > li > a {\n border-bottom: 1px solid #dddddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs-justified > .active > a,\n .nav-tabs-justified > .active > a:hover,\n .nav-tabs-justified > .active > a:focus {\n border-bottom-color: #ffffff;\n }\n}\n.tab-content > .tab-pane {\n display: none;\n visibility: hidden;\n}\n.tab-content > .active {\n display: block;\n visibility: visible;\n}\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.navbar {\n position: relative;\n min-height: 50px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n .navbar {\n border-radius: 4px;\n }\n}\n@media (min-width: 768px) {\n .navbar-header {\n float: left;\n }\n}\n.navbar-collapse {\n overflow-x: visible;\n padding-right: 15px;\n padding-left: 15px;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n -webkit-overflow-scrolling: touch;\n}\n.navbar-collapse.in {\n overflow-y: auto;\n}\n@media (min-width: 768px) {\n .navbar-collapse {\n width: auto;\n border-top: 0;\n box-shadow: none;\n }\n .navbar-collapse.collapse {\n display: block !important;\n visibility: visible !important;\n height: auto !important;\n padding-bottom: 0;\n overflow: visible !important;\n }\n .navbar-collapse.in {\n overflow-y: visible;\n }\n .navbar-fixed-top .navbar-collapse,\n .navbar-static-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n padding-left: 0;\n padding-right: 0;\n }\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n .navbar-fixed-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n max-height: 200px;\n }\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n margin-right: -15px;\n margin-left: -15px;\n}\n@media (min-width: 768px) {\n .container > .navbar-header,\n .container-fluid > .navbar-header,\n .container > .navbar-collapse,\n .container-fluid > .navbar-collapse {\n margin-right: 0;\n margin-left: 0;\n }\n}\n.navbar-static-top {\n z-index: 1000;\n border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n .navbar-static-top {\n border-radius: 0;\n }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n@media (min-width: 768px) {\n .navbar-fixed-top,\n .navbar-fixed-bottom {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0;\n border-width: 1px 0 0;\n}\n.navbar-brand {\n float: left;\n padding: 15px 15px;\n font-size: 18px;\n line-height: 20px;\n height: 50px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n text-decoration: none;\n}\n.navbar-brand > img {\n display: block;\n}\n@media (min-width: 768px) {\n .navbar > .container .navbar-brand,\n .navbar > .container-fluid .navbar-brand {\n margin-left: -15px;\n }\n}\n.navbar-toggle {\n position: relative;\n float: right;\n margin-right: 15px;\n padding: 9px 10px;\n margin-top: 8px;\n margin-bottom: 8px;\n background-color: transparent;\n background-image: none;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.navbar-toggle:focus {\n outline: 0;\n}\n.navbar-toggle .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n margin-top: 4px;\n}\n@media (min-width: 768px) {\n .navbar-toggle {\n display: none;\n }\n}\n.navbar-nav {\n margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: 20px;\n}\n@media (max-width: 767px) {\n .navbar-nav .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n }\n .navbar-nav .open .dropdown-menu > li > a,\n .navbar-nav .open .dropdown-menu .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n .navbar-nav .open .dropdown-menu > li > a {\n line-height: 20px;\n }\n .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-nav .open .dropdown-menu > li > a:focus {\n background-image: none;\n }\n}\n@media (min-width: 768px) {\n .navbar-nav {\n float: left;\n margin: 0;\n }\n .navbar-nav > li {\n float: left;\n }\n .navbar-nav > li > a {\n padding-top: 15px;\n padding-bottom: 15px;\n }\n}\n.navbar-form {\n margin-left: -15px;\n margin-right: -15px;\n padding: 10px 15px;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n margin-top: 8px;\n margin-bottom: 8px;\n}\n@media (min-width: 768px) {\n .navbar-form .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .navbar-form .form-control-static {\n display: inline-block;\n }\n .navbar-form .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .navbar-form .input-group .input-group-addon,\n .navbar-form .input-group .input-group-btn,\n .navbar-form .input-group .form-control {\n width: auto;\n }\n .navbar-form .input-group > .form-control {\n width: 100%;\n }\n .navbar-form .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio,\n .navbar-form .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio label,\n .navbar-form .checkbox label {\n padding-left: 0;\n }\n .navbar-form .radio input[type=\"radio\"],\n .navbar-form .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .navbar-form .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n@media (max-width: 767px) {\n .navbar-form .form-group {\n margin-bottom: 5px;\n }\n .navbar-form .form-group:last-child {\n margin-bottom: 0;\n }\n}\n@media (min-width: 768px) {\n .navbar-form {\n width: auto;\n border: 0;\n margin-left: 0;\n margin-right: 0;\n padding-top: 0;\n padding-bottom: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n}\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.navbar-btn {\n margin-top: 8px;\n margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n margin-top: 14px;\n margin-bottom: 14px;\n}\n.navbar-text {\n margin-top: 15px;\n margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n .navbar-text {\n float: left;\n margin-left: 15px;\n margin-right: 15px;\n }\n}\n@media (min-width: 768px) {\n .navbar-left {\n float: left !important;\n }\n .navbar-right {\n float: right !important;\n margin-right: -15px;\n }\n .navbar-right ~ .navbar-right {\n margin-right: 0;\n }\n}\n.navbar-default {\n background-color: #f8f8f8;\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n color: #777777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n color: #5e5e5e;\n background-color: transparent;\n}\n.navbar-default .navbar-text {\n color: #777777;\n}\n.navbar-default .navbar-nav > li > a {\n color: #777777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n color: #333333;\n background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n color: #555555;\n background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n color: #cccccc;\n background-color: transparent;\n}\n.navbar-default .navbar-toggle {\n border-color: #dddddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n background-color: #dddddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n background-color: #888888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n background-color: #e7e7e7;\n color: #555555;\n}\n@media (max-width: 767px) {\n .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n color: #777777;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #333333;\n background-color: transparent;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #555555;\n background-color: #e7e7e7;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #cccccc;\n background-color: transparent;\n }\n}\n.navbar-default .navbar-link {\n color: #777777;\n}\n.navbar-default .navbar-link:hover {\n color: #333333;\n}\n.navbar-default .btn-link {\n color: #777777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n color: #333333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n color: #cccccc;\n}\n.navbar-inverse {\n background-color: #222222;\n border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n color: #ffffff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n color: #ffffff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n color: #ffffff;\n background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n color: #444444;\n background-color: transparent;\n}\n.navbar-inverse .navbar-toggle {\n border-color: #333333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n background-color: #333333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n background-color: #ffffff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n border-color: #101010;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n background-color: #080808;\n color: #ffffff;\n}\n@media (max-width: 767px) {\n .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n border-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n color: #9d9d9d;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #ffffff;\n background-color: transparent;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #ffffff;\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #444444;\n background-color: transparent;\n }\n}\n.navbar-inverse .navbar-link {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n color: #ffffff;\n}\n.navbar-inverse .btn-link {\n color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n color: #ffffff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n color: #444444;\n}\n.breadcrumb {\n padding: 8px 15px;\n margin-bottom: 20px;\n list-style: none;\n background-color: #f5f5f5;\n border-radius: 4px;\n}\n.breadcrumb > li {\n display: inline-block;\n}\n.breadcrumb > li + li:before {\n content: \"/\\00a0\";\n padding: 0 5px;\n color: #cccccc;\n}\n.breadcrumb > .active {\n color: #777777;\n}\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: 20px 0;\n border-radius: 4px;\n}\n.pagination > li {\n display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n position: relative;\n float: left;\n padding: 6px 12px;\n line-height: 1.42857143;\n text-decoration: none;\n color: #337ab7;\n background-color: #ffffff;\n border: 1px solid #dddddd;\n margin-left: -1px;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n margin-left: 0;\n border-bottom-left-radius: 4px;\n border-top-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n border-bottom-right-radius: 4px;\n border-top-right-radius: 4px;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n color: #23527c;\n background-color: #eeeeee;\n border-color: #dddddd;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n z-index: 2;\n color: #ffffff;\n background-color: #337ab7;\n border-color: #337ab7;\n cursor: default;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n color: #777777;\n background-color: #ffffff;\n border-color: #dddddd;\n cursor: not-allowed;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n padding: 10px 16px;\n font-size: 18px;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n border-bottom-left-radius: 6px;\n border-top-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n border-bottom-right-radius: 6px;\n border-top-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n padding: 5px 10px;\n font-size: 12px;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n border-bottom-left-radius: 3px;\n border-top-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n border-bottom-right-radius: 3px;\n border-top-right-radius: 3px;\n}\n.pager {\n padding-left: 0;\n margin: 20px 0;\n list-style: none;\n text-align: center;\n}\n.pager li {\n display: inline;\n}\n.pager li > a,\n.pager li > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: #ffffff;\n border: 1px solid #dddddd;\n border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.pager .next > a,\n.pager .next > span {\n float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n color: #777777;\n background-color: #ffffff;\n cursor: not-allowed;\n}\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: #ffffff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n}\na.label:hover,\na.label:focus {\n color: #ffffff;\n text-decoration: none;\n cursor: pointer;\n}\n.label:empty {\n display: none;\n}\n.btn .label {\n position: relative;\n top: -1px;\n}\n.label-default {\n background-color: #777777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n background-color: #5e5e5e;\n}\n.label-primary {\n background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n background-color: #286090;\n}\n.label-success {\n background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n background-color: #449d44;\n}\n.label-info {\n background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n background-color: #31b0d5;\n}\n.label-warning {\n background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n background-color: #ec971f;\n}\n.label-danger {\n background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n background-color: #c9302c;\n}\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: 12px;\n font-weight: bold;\n color: #ffffff;\n line-height: 1;\n vertical-align: baseline;\n white-space: nowrap;\n text-align: center;\n background-color: #777777;\n border-radius: 10px;\n}\n.badge:empty {\n display: none;\n}\n.btn .badge {\n position: relative;\n top: -1px;\n}\n.btn-xs .badge {\n top: 0;\n padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n color: #ffffff;\n text-decoration: none;\n cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n color: #337ab7;\n background-color: #ffffff;\n}\n.list-group-item > .badge {\n float: right;\n}\n.list-group-item > .badge + .badge {\n margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n margin-left: 3px;\n}\n.jumbotron {\n padding: 30px 15px;\n margin-bottom: 30px;\n color: inherit;\n background-color: #eeeeee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n color: inherit;\n}\n.jumbotron p {\n margin-bottom: 15px;\n font-size: 21px;\n font-weight: 200;\n}\n.jumbotron > hr {\n border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n border-radius: 6px;\n}\n.jumbotron .container {\n max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n .jumbotron {\n padding: 48px 0;\n }\n .container .jumbotron,\n .container-fluid .jumbotron {\n padding-left: 60px;\n padding-right: 60px;\n }\n .jumbotron h1,\n .jumbotron .h1 {\n font-size: 63px;\n }\n}\n.thumbnail {\n display: block;\n padding: 4px;\n margin-bottom: 20px;\n line-height: 1.42857143;\n background-color: #ffffff;\n border: 1px solid #dddddd;\n border-radius: 4px;\n -webkit-transition: border 0.2s ease-in-out;\n -o-transition: border 0.2s ease-in-out;\n transition: border 0.2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n margin-left: auto;\n margin-right: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n border-color: #337ab7;\n}\n.thumbnail .caption {\n padding: 9px;\n color: #333333;\n}\n.alert {\n padding: 15px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.alert h4 {\n margin-top: 0;\n color: inherit;\n}\n.alert .alert-link {\n font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n margin-bottom: 0;\n}\n.alert > p + p {\n margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n}\n.alert-success {\n background-color: #dff0d8;\n border-color: #d6e9c6;\n color: #3c763d;\n}\n.alert-success hr {\n border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n color: #2b542c;\n}\n.alert-info {\n background-color: #d9edf7;\n border-color: #bce8f1;\n color: #31708f;\n}\n.alert-info hr {\n border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n color: #245269;\n}\n.alert-warning {\n background-color: #fcf8e3;\n border-color: #faebcc;\n color: #8a6d3b;\n}\n.alert-warning hr {\n border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n color: #66512c;\n}\n.alert-danger {\n background-color: #f2dede;\n border-color: #ebccd1;\n color: #a94442;\n}\n.alert-danger hr {\n border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n@keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n.progress {\n overflow: hidden;\n height: 20px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: 12px;\n line-height: 20px;\n color: #ffffff;\n text-align: center;\n background-color: #337ab7;\n -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n -webkit-transition: width 0.6s ease;\n -o-transition: width 0.6s ease;\n transition: width 0.6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n -webkit-animation: progress-bar-stripes 2s linear infinite;\n -o-animation: progress-bar-stripes 2s linear infinite;\n animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.media {\n margin-top: 15px;\n}\n.media:first-child {\n margin-top: 0;\n}\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n.media-middle {\n vertical-align: middle;\n}\n.media-bottom {\n vertical-align: bottom;\n}\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n.list-group {\n margin-bottom: 20px;\n padding-left: 0;\n}\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n margin-bottom: -1px;\n background-color: #ffffff;\n border: 1px solid #dddddd;\n}\n.list-group-item:first-child {\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n}\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\na.list-group-item {\n color: #555555;\n}\na.list-group-item .list-group-item-heading {\n color: #333333;\n}\na.list-group-item:hover,\na.list-group-item:focus {\n text-decoration: none;\n color: #555555;\n background-color: #f5f5f5;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n background-color: #eeeeee;\n color: #777777;\n cursor: not-allowed;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n color: #777777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n z-index: 2;\n color: #ffffff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n color: #c7ddef;\n}\n.list-group-item-success {\n color: #3c763d;\n background-color: #dff0d8;\n}\na.list-group-item-success {\n color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-success:hover,\na.list-group-item-success:focus {\n color: #3c763d;\n background-color: #d0e9c6;\n}\na.list-group-item-success.active,\na.list-group-item-success.active:hover,\na.list-group-item-success.active:focus {\n color: #fff;\n background-color: #3c763d;\n border-color: #3c763d;\n}\n.list-group-item-info {\n color: #31708f;\n background-color: #d9edf7;\n}\na.list-group-item-info {\n color: #31708f;\n}\na.list-group-item-info .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-info:hover,\na.list-group-item-info:focus {\n color: #31708f;\n background-color: #c4e3f3;\n}\na.list-group-item-info.active,\na.list-group-item-info.active:hover,\na.list-group-item-info.active:focus {\n color: #fff;\n background-color: #31708f;\n border-color: #31708f;\n}\n.list-group-item-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n}\na.list-group-item-warning {\n color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-warning:hover,\na.list-group-item-warning:focus {\n color: #8a6d3b;\n background-color: #faf2cc;\n}\na.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus {\n color: #fff;\n background-color: #8a6d3b;\n border-color: #8a6d3b;\n}\n.list-group-item-danger {\n color: #a94442;\n background-color: #f2dede;\n}\na.list-group-item-danger {\n color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-danger:hover,\na.list-group-item-danger:focus {\n color: #a94442;\n background-color: #ebcccc;\n}\na.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus {\n color: #fff;\n background-color: #a94442;\n border-color: #a94442;\n}\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n.panel {\n margin-bottom: 20px;\n background-color: #ffffff;\n border: 1px solid transparent;\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.panel-body {\n padding: 15px;\n}\n.panel-heading {\n padding: 10px 15px;\n border-bottom: 1px solid transparent;\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n color: inherit;\n}\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: 16px;\n color: inherit;\n}\n.panel-title > a {\n color: inherit;\n}\n.panel-footer {\n padding: 10px 15px;\n background-color: #f5f5f5;\n border-top: 1px solid #dddddd;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n border-top: 0;\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n border-bottom: 0;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n border-top-width: 0;\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n padding-left: 15px;\n padding-right: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n border-bottom-left-radius: 3px;\n border-bottom-right-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n border-top: 1px solid #dddddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n border-bottom: 0;\n}\n.panel > .table-responsive {\n border: 0;\n margin-bottom: 0;\n}\n.panel-group {\n margin-bottom: 20px;\n}\n.panel-group .panel {\n margin-bottom: 0;\n border-radius: 4px;\n}\n.panel-group .panel + .panel {\n margin-top: 5px;\n}\n.panel-group .panel-heading {\n border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n border-top: 1px solid #dddddd;\n}\n.panel-group .panel-footer {\n border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n border-bottom: 1px solid #dddddd;\n}\n.panel-default {\n border-color: #dddddd;\n}\n.panel-default > .panel-heading {\n color: #333333;\n background-color: #f5f5f5;\n border-color: #dddddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #dddddd;\n}\n.panel-default > .panel-heading .badge {\n color: #f5f5f5;\n background-color: #333333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #dddddd;\n}\n.panel-primary {\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n color: #ffffff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n color: #337ab7;\n background-color: #ffffff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #337ab7;\n}\n.panel-success {\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n color: #dff0d8;\n background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #d6e9c6;\n}\n.panel-info {\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n color: #d9edf7;\n background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #bce8f1;\n}\n.panel-warning {\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n color: #fcf8e3;\n background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #faebcc;\n}\n.panel-danger {\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n color: #f2dede;\n background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n height: 100%;\n width: 100%;\n border: 0;\n}\n.embed-responsive.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n}\n.embed-responsive.embed-responsive-4by3 {\n padding-bottom: 75%;\n}\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border: 1px solid #e3e3e3;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.well blockquote {\n border-color: #ddd;\n border-color: rgba(0, 0, 0, 0.15);\n}\n.well-lg {\n padding: 24px;\n border-radius: 6px;\n}\n.well-sm {\n padding: 9px;\n border-radius: 3px;\n}\n.close {\n float: right;\n font-size: 21px;\n font-weight: bold;\n line-height: 1;\n color: #000000;\n text-shadow: 0 1px 0 #ffffff;\n opacity: 0.2;\n filter: alpha(opacity=20);\n}\n.close:hover,\n.close:focus {\n color: #000000;\n text-decoration: none;\n cursor: pointer;\n opacity: 0.5;\n filter: alpha(opacity=50);\n}\nbutton.close {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n}\n.modal-open {\n overflow: hidden;\n}\n.modal {\n display: none;\n overflow: hidden;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n -webkit-overflow-scrolling: touch;\n outline: 0;\n}\n.modal.fade .modal-dialog {\n -webkit-transform: translate(0, -25%);\n -ms-transform: translate(0, -25%);\n -o-transform: translate(0, -25%);\n transform: translate(0, -25%);\n -webkit-transition: -webkit-transform 0.3s ease-out;\n -moz-transition: -moz-transform 0.3s ease-out;\n -o-transition: -o-transform 0.3s ease-out;\n transition: transform 0.3s ease-out;\n}\n.modal.in .modal-dialog {\n -webkit-transform: translate(0, 0);\n -ms-transform: translate(0, 0);\n -o-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n.modal-content {\n position: relative;\n background-color: #ffffff;\n border: 1px solid #999999;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n background-clip: padding-box;\n outline: 0;\n}\n.modal-backdrop {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n background-color: #000000;\n}\n.modal-backdrop.fade {\n opacity: 0;\n filter: alpha(opacity=0);\n}\n.modal-backdrop.in {\n opacity: 0.5;\n filter: alpha(opacity=50);\n}\n.modal-header {\n padding: 15px;\n border-bottom: 1px solid #e5e5e5;\n min-height: 16.42857143px;\n}\n.modal-header .close {\n margin-top: -2px;\n}\n.modal-title {\n margin: 0;\n line-height: 1.42857143;\n}\n.modal-body {\n position: relative;\n padding: 15px;\n}\n.modal-footer {\n padding: 15px;\n text-align: right;\n border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n margin-left: 5px;\n margin-bottom: 0;\n}\n.modal-footer .btn-group .btn + .btn {\n margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n margin-left: 0;\n}\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n@media (min-width: 768px) {\n .modal-dialog {\n width: 600px;\n margin: 30px auto;\n }\n .modal-content {\n -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n }\n .modal-sm {\n width: 300px;\n }\n}\n@media (min-width: 992px) {\n .modal-lg {\n width: 900px;\n }\n}\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n visibility: visible;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 12px;\n font-weight: normal;\n line-height: 1.4;\n opacity: 0;\n filter: alpha(opacity=0);\n}\n.tooltip.in {\n opacity: 0.9;\n filter: alpha(opacity=90);\n}\n.tooltip.top {\n margin-top: -3px;\n padding: 5px 0;\n}\n.tooltip.right {\n margin-left: 3px;\n padding: 0 5px;\n}\n.tooltip.bottom {\n margin-top: 3px;\n padding: 5px 0;\n}\n.tooltip.left {\n margin-left: -3px;\n padding: 0 5px;\n}\n.tooltip-inner {\n max-width: 200px;\n padding: 3px 8px;\n color: #ffffff;\n text-align: center;\n text-decoration: none;\n background-color: #000000;\n border-radius: 4px;\n}\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.tooltip.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000000;\n}\n.tooltip.top-left .tooltip-arrow {\n bottom: 0;\n right: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000000;\n}\n.tooltip.top-right .tooltip-arrow {\n bottom: 0;\n left: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000000;\n}\n.tooltip.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -5px;\n border-width: 5px 5px 5px 0;\n border-right-color: #000000;\n}\n.tooltip.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -5px;\n border-width: 5px 0 5px 5px;\n border-left-color: #000000;\n}\n.tooltip.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n top: 0;\n right: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n top: 0;\n left: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000000;\n}\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: none;\n max-width: 276px;\n padding: 1px;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 14px;\n font-weight: normal;\n line-height: 1.42857143;\n text-align: left;\n background-color: #ffffff;\n background-clip: padding-box;\n border: 1px solid #cccccc;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n white-space: normal;\n}\n.popover.top {\n margin-top: -10px;\n}\n.popover.right {\n margin-left: 10px;\n}\n.popover.bottom {\n margin-top: 10px;\n}\n.popover.left {\n margin-left: -10px;\n}\n.popover-title {\n margin: 0;\n padding: 8px 14px;\n font-size: 14px;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-radius: 5px 5px 0 0;\n}\n.popover-content {\n padding: 9px 14px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.popover > .arrow {\n border-width: 11px;\n}\n.popover > .arrow:after {\n border-width: 10px;\n content: \"\";\n}\n.popover.top > .arrow {\n left: 50%;\n margin-left: -11px;\n border-bottom-width: 0;\n border-top-color: #999999;\n border-top-color: rgba(0, 0, 0, 0.25);\n bottom: -11px;\n}\n.popover.top > .arrow:after {\n content: \" \";\n bottom: 1px;\n margin-left: -10px;\n border-bottom-width: 0;\n border-top-color: #ffffff;\n}\n.popover.right > .arrow {\n top: 50%;\n left: -11px;\n margin-top: -11px;\n border-left-width: 0;\n border-right-color: #999999;\n border-right-color: rgba(0, 0, 0, 0.25);\n}\n.popover.right > .arrow:after {\n content: \" \";\n left: 1px;\n bottom: -10px;\n border-left-width: 0;\n border-right-color: #ffffff;\n}\n.popover.bottom > .arrow {\n left: 50%;\n margin-left: -11px;\n border-top-width: 0;\n border-bottom-color: #999999;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n top: -11px;\n}\n.popover.bottom > .arrow:after {\n content: \" \";\n top: 1px;\n margin-left: -10px;\n border-top-width: 0;\n border-bottom-color: #ffffff;\n}\n.popover.left > .arrow {\n top: 50%;\n right: -11px;\n margin-top: -11px;\n border-right-width: 0;\n border-left-color: #999999;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n.popover.left > .arrow:after {\n content: \" \";\n right: 1px;\n border-right-width: 0;\n border-left-color: #ffffff;\n bottom: -10px;\n}\n.carousel {\n position: relative;\n}\n.carousel-inner {\n position: relative;\n overflow: hidden;\n width: 100%;\n}\n.carousel-inner > .item {\n display: none;\n position: relative;\n -webkit-transition: 0.6s ease-in-out left;\n -o-transition: 0.6s ease-in-out left;\n transition: 0.6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n .carousel-inner > .item {\n transition: transform 0.6s ease-in-out;\n backface-visibility: hidden;\n perspective: 1000;\n }\n .carousel-inner > .item.next,\n .carousel-inner > .item.active.right {\n transform: translate3d(100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.prev,\n .carousel-inner > .item.active.left {\n transform: translate3d(-100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.next.left,\n .carousel-inner > .item.prev.right,\n .carousel-inner > .item.active {\n transform: translate3d(0, 0, 0);\n left: 0;\n }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n display: block;\n}\n.carousel-inner > .active {\n left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n}\n.carousel-inner > .next {\n left: 100%;\n}\n.carousel-inner > .prev {\n left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n left: 0;\n}\n.carousel-inner > .active.left {\n left: -100%;\n}\n.carousel-inner > .active.right {\n left: 100%;\n}\n.carousel-control {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 15%;\n opacity: 0.5;\n filter: alpha(opacity=50);\n font-size: 20px;\n color: #ffffff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-control.left {\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n}\n.carousel-control.right {\n left: auto;\n right: 0;\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n}\n.carousel-control:hover,\n.carousel-control:focus {\n outline: 0;\n color: #ffffff;\n text-decoration: none;\n opacity: 0.9;\n filter: alpha(opacity=90);\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n z-index: 5;\n display: inline-block;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n left: 50%;\n margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n right: 50%;\n margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n width: 20px;\n height: 20px;\n margin-top: -10px;\n font-family: serif;\n}\n.carousel-control .icon-prev:before {\n content: '\\2039';\n}\n.carousel-control .icon-next:before {\n content: '\\203a';\n}\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n margin-left: -30%;\n padding-left: 0;\n list-style: none;\n text-align: center;\n}\n.carousel-indicators li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n border: 1px solid #ffffff;\n border-radius: 10px;\n cursor: pointer;\n background-color: #000 \\9;\n background-color: rgba(0, 0, 0, 0);\n}\n.carousel-indicators .active {\n margin: 0;\n width: 12px;\n height: 12px;\n background-color: #ffffff;\n}\n.carousel-caption {\n position: absolute;\n left: 15%;\n right: 15%;\n bottom: 20px;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #ffffff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-caption .btn {\n text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-prev,\n .carousel-control .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -15px;\n font-size: 30px;\n }\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .icon-prev {\n margin-left: -15px;\n }\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-next {\n margin-right: -15px;\n }\n .carousel-caption {\n left: 20%;\n right: 20%;\n padding-bottom: 30px;\n }\n .carousel-indicators {\n bottom: 20px;\n }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-footer:before,\n.modal-footer:after {\n content: \" \";\n display: table;\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-footer:after {\n clear: both;\n}\n.center-block {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n.hidden {\n display: none !important;\n visibility: hidden !important;\n}\n.affix {\n position: fixed;\n}\n@-ms-viewport {\n width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important;\n}\n@media (max-width: 767px) {\n .visible-xs {\n display: block !important;\n }\n table.visible-xs {\n display: table;\n }\n tr.visible-xs {\n display: table-row !important;\n }\n th.visible-xs,\n td.visible-xs {\n display: table-cell !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-block {\n display: block !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline {\n display: inline !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm {\n display: block !important;\n }\n table.visible-sm {\n display: table;\n }\n tr.visible-sm {\n display: table-row !important;\n }\n th.visible-sm,\n td.visible-sm {\n display: table-cell !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-block {\n display: block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline {\n display: inline !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md {\n display: block !important;\n }\n table.visible-md {\n display: table;\n }\n tr.visible-md {\n display: table-row !important;\n }\n th.visible-md,\n td.visible-md {\n display: table-cell !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-block {\n display: block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline {\n display: inline !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg {\n display: block !important;\n }\n table.visible-lg {\n display: table;\n }\n tr.visible-lg {\n display: table-row !important;\n }\n th.visible-lg,\n td.visible-lg {\n display: table-cell !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-block {\n display: block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline {\n display: inline !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline-block {\n display: inline-block !important;\n }\n}\n@media (max-width: 767px) {\n .hidden-xs {\n display: none !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .hidden-sm {\n display: none !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .hidden-md {\n display: none !important;\n }\n}\n@media (min-width: 1200px) {\n .hidden-lg {\n display: none !important;\n }\n}\n.visible-print {\n display: none !important;\n}\n@media print {\n .visible-print {\n display: block !important;\n }\n table.visible-print {\n display: table;\n }\n tr.visible-print {\n display: table-row !important;\n }\n th.visible-print,\n td.visible-print {\n display: table-cell !important;\n }\n}\n.visible-print-block {\n display: none !important;\n}\n@media print {\n .visible-print-block {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n}\n@media print {\n .visible-print-inline {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n}\n@media print {\n .visible-print-inline-block {\n display: inline-block !important;\n }\n}\n@media print {\n .hidden-print {\n display: none !important;\n }\n}\n/*# sourceMappingURL=bootstrap.css.map */","/*! normalize.css v3.0.2 | MIT License | git.io/normalize */\n\n//\n// 1. Set default font family to sans-serif.\n// 2. Prevent iOS text size adjust after orientation change, without disabling\n// user zoom.\n//\n\nhtml {\n font-family: sans-serif; // 1\n -ms-text-size-adjust: 100%; // 2\n -webkit-text-size-adjust: 100%; // 2\n}\n\n//\n// Remove default margin.\n//\n\nbody {\n margin: 0;\n}\n\n// HTML5 display definitions\n// ==========================================================================\n\n//\n// Correct `block` display not defined for any HTML5 element in IE 8/9.\n// Correct `block` display not defined for `details` or `summary` in IE 10/11\n// and Firefox.\n// Correct `block` display not defined for `main` in IE 11.\n//\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\n\n//\n// 1. Correct `inline-block` display not defined in IE 8/9.\n// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n//\n\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block; // 1\n vertical-align: baseline; // 2\n}\n\n//\n// Prevent modern browsers from displaying `audio` without controls.\n// Remove excess height in iOS 5 devices.\n//\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\n//\n// Address `[hidden]` styling not present in IE 8/9/10.\n// Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.\n//\n\n[hidden],\ntemplate {\n display: none;\n}\n\n// Links\n// ==========================================================================\n\n//\n// Remove the gray background color from active links in IE 10.\n//\n\na {\n background-color: transparent;\n}\n\n//\n// Improve readability when focused and also mouse hovered in all browsers.\n//\n\na:active,\na:hover {\n outline: 0;\n}\n\n// Text-level semantics\n// ==========================================================================\n\n//\n// Address styling not present in IE 8/9/10/11, Safari, and Chrome.\n//\n\nabbr[title] {\n border-bottom: 1px dotted;\n}\n\n//\n// Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n//\n\nb,\nstrong {\n font-weight: bold;\n}\n\n//\n// Address styling not present in Safari and Chrome.\n//\n\ndfn {\n font-style: italic;\n}\n\n//\n// Address variable `h1` font-size and margin within `section` and `article`\n// contexts in Firefox 4+, Safari, and Chrome.\n//\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n//\n// Address styling not present in IE 8/9.\n//\n\nmark {\n background: #ff0;\n color: #000;\n}\n\n//\n// Address inconsistent and variable font size in all browsers.\n//\n\nsmall {\n font-size: 80%;\n}\n\n//\n// Prevent `sub` and `sup` affecting `line-height` in all browsers.\n//\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsup {\n top: -0.5em;\n}\n\nsub {\n bottom: -0.25em;\n}\n\n// Embedded content\n// ==========================================================================\n\n//\n// Remove border when inside `a` element in IE 8/9/10.\n//\n\nimg {\n border: 0;\n}\n\n//\n// Correct overflow not hidden in IE 9/10/11.\n//\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\n// Grouping content\n// ==========================================================================\n\n//\n// Address margin not present in IE 8/9 and Safari.\n//\n\nfigure {\n margin: 1em 40px;\n}\n\n//\n// Address differences between Firefox and other browsers.\n//\n\nhr {\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n height: 0;\n}\n\n//\n// Contain overflow in all browsers.\n//\n\npre {\n overflow: auto;\n}\n\n//\n// Address odd `em`-unit font size rendering in all browsers.\n//\n\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\n// Forms\n// ==========================================================================\n\n//\n// Known limitation: by default, Chrome and Safari on OS X allow very limited\n// styling of `select`, unless a `border` property is set.\n//\n\n//\n// 1. Correct color not being inherited.\n// Known issue: affects color of disabled elements.\n// 2. Correct font properties not being inherited.\n// 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n//\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit; // 1\n font: inherit; // 2\n margin: 0; // 3\n}\n\n//\n// Address `overflow` set to `hidden` in IE 8/9/10/11.\n//\n\nbutton {\n overflow: visible;\n}\n\n//\n// Address inconsistent `text-transform` inheritance for `button` and `select`.\n// All other form control elements do not inherit `text-transform` values.\n// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n// Correct `select` style inheritance in Firefox.\n//\n\nbutton,\nselect {\n text-transform: none;\n}\n\n//\n// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n// and `video` controls.\n// 2. Correct inability to style clickable `input` types in iOS.\n// 3. Improve usability and consistency of cursor style between image-type\n// `input` and others.\n//\n\nbutton,\nhtml input[type=\"button\"], // 1\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button; // 2\n cursor: pointer; // 3\n}\n\n//\n// Re-set default cursor for disabled elements.\n//\n\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\n\n//\n// Remove inner padding and border in Firefox 4+.\n//\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\n\n//\n// Address Firefox 4+ setting `line-height` on `input` using `!important` in\n// the UA stylesheet.\n//\n\ninput {\n line-height: normal;\n}\n\n//\n// It's recommended that you don't attempt to style these elements.\n// Firefox's implementation doesn't respect box-sizing, padding, or width.\n//\n// 1. Address box sizing set to `content-box` in IE 8/9/10.\n// 2. Remove excess padding in IE 8/9/10.\n//\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box; // 1\n padding: 0; // 2\n}\n\n//\n// Fix the cursor style for Chrome's increment/decrement buttons. For certain\n// `font-size` values of the `input`, it causes the cursor style of the\n// decrement button to change from `default` to `text`.\n//\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n//\n// 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n// 2. Address `box-sizing` set to `border-box` in Safari and Chrome\n// (include `-moz` to future-proof).\n//\n\ninput[type=\"search\"] {\n -webkit-appearance: textfield; // 1\n -moz-box-sizing: content-box;\n -webkit-box-sizing: content-box; // 2\n box-sizing: content-box;\n}\n\n//\n// Remove inner padding and search cancel button in Safari and Chrome on OS X.\n// Safari (but not Chrome) clips the cancel button when the search input has\n// padding (and `textfield` appearance).\n//\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n//\n// Define consistent border, margin, and padding.\n//\n\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\n//\n// 1. Correct `color` not being inherited in IE 8/9/10/11.\n// 2. Remove padding so people aren't caught out if they zero out fieldsets.\n//\n\nlegend {\n border: 0; // 1\n padding: 0; // 2\n}\n\n//\n// Remove default vertical scrollbar in IE 8/9/10/11.\n//\n\ntextarea {\n overflow: auto;\n}\n\n//\n// Don't inherit the `font-weight` (applied by a rule above).\n// NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n//\n\noptgroup {\n font-weight: bold;\n}\n\n// Tables\n// ==========================================================================\n\n//\n// Remove most spacing between table cells.\n//\n\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\ntd,\nth {\n padding: 0;\n}\n","/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n\n// ==========================================================================\n// Print styles.\n// Inlined to avoid the additional HTTP request: h5bp.com/r\n// ==========================================================================\n\n@media print {\n *,\n *:before,\n *:after {\n background: transparent !important;\n color: #000 !important; // Black prints faster: h5bp.com/s\n box-shadow: none !important;\n text-shadow: none !important;\n }\n\n a,\n a:visited {\n text-decoration: underline;\n }\n\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n\n // Don't show links that are fragment identifiers,\n // or use the `javascript:` pseudo protocol\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n\n thead {\n display: table-header-group; // h5bp.com/t\n }\n\n tr,\n img {\n page-break-inside: avoid;\n }\n\n img {\n max-width: 100% !important;\n }\n\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n\n h2,\n h3 {\n page-break-after: avoid;\n }\n\n // Bootstrap specific changes start\n //\n // Chrome (OSX) fix for https://github.com/twbs/bootstrap/issues/11245\n // Once fixed, we can just straight up remove this.\n select {\n background: #fff !important;\n }\n\n // Bootstrap components\n .navbar {\n display: none;\n }\n .btn,\n .dropup > .btn {\n > .caret {\n border-top-color: #000 !important;\n }\n }\n .label {\n border: 1px solid #000;\n }\n\n .table {\n border-collapse: collapse !important;\n\n td,\n th {\n background-color: #fff !important;\n }\n }\n .table-bordered {\n th,\n td {\n border: 1px solid #ddd !important;\n }\n }\n\n // Bootstrap specific changes end\n}\n","//\n// Glyphicons for Bootstrap\n//\n// Since icons are fonts, they can be placed anywhere text is placed and are\n// thus automatically sized to match the surrounding child. To use, create an\n// inline element with the appropriate classes, like so:\n//\n// Star\n\n// Import the fonts\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url('@{icon-font-path}@{icon-font-name}.eot');\n src: url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype'),\n url('@{icon-font-path}@{icon-font-name}.woff') format('woff'),\n url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype'),\n url('@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}') format('svg');\n}\n\n// Catchall baseclass\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n// Individual icons\n.glyphicon-asterisk { &:before { content: \"\\2a\"; } }\n.glyphicon-plus { &:before { content: \"\\2b\"; } }\n.glyphicon-euro,\n.glyphicon-eur { &:before { content: \"\\20ac\"; } }\n.glyphicon-minus { &:before { content: \"\\2212\"; } }\n.glyphicon-cloud { &:before { content: \"\\2601\"; } }\n.glyphicon-envelope { &:before { content: \"\\2709\"; } }\n.glyphicon-pencil { &:before { content: \"\\270f\"; } }\n.glyphicon-glass { &:before { content: \"\\e001\"; } }\n.glyphicon-music { &:before { content: \"\\e002\"; } }\n.glyphicon-search { &:before { content: \"\\e003\"; } }\n.glyphicon-heart { &:before { content: \"\\e005\"; } }\n.glyphicon-star { &:before { content: \"\\e006\"; } }\n.glyphicon-star-empty { &:before { content: \"\\e007\"; } }\n.glyphicon-user { &:before { content: \"\\e008\"; } }\n.glyphicon-film { &:before { content: \"\\e009\"; } }\n.glyphicon-th-large { &:before { content: \"\\e010\"; } }\n.glyphicon-th { &:before { content: \"\\e011\"; } }\n.glyphicon-th-list { &:before { content: \"\\e012\"; } }\n.glyphicon-ok { &:before { content: \"\\e013\"; } }\n.glyphicon-remove { &:before { content: \"\\e014\"; } }\n.glyphicon-zoom-in { &:before { content: \"\\e015\"; } }\n.glyphicon-zoom-out { &:before { content: \"\\e016\"; } }\n.glyphicon-off { &:before { content: \"\\e017\"; } }\n.glyphicon-signal { &:before { content: \"\\e018\"; } }\n.glyphicon-cog { &:before { content: \"\\e019\"; } }\n.glyphicon-trash { &:before { content: \"\\e020\"; } }\n.glyphicon-home { &:before { content: \"\\e021\"; } }\n.glyphicon-file { &:before { content: \"\\e022\"; } }\n.glyphicon-time { &:before { content: \"\\e023\"; } }\n.glyphicon-road { &:before { content: \"\\e024\"; } }\n.glyphicon-download-alt { &:before { content: \"\\e025\"; } }\n.glyphicon-download { &:before { content: \"\\e026\"; } }\n.glyphicon-upload { &:before { content: \"\\e027\"; } }\n.glyphicon-inbox { &:before { content: \"\\e028\"; } }\n.glyphicon-play-circle { &:before { content: \"\\e029\"; } }\n.glyphicon-repeat { &:before { content: \"\\e030\"; } }\n.glyphicon-refresh { &:before { content: \"\\e031\"; } }\n.glyphicon-list-alt { &:before { content: \"\\e032\"; } }\n.glyphicon-lock { &:before { content: \"\\e033\"; } }\n.glyphicon-flag { &:before { content: \"\\e034\"; } }\n.glyphicon-headphones { &:before { content: \"\\e035\"; } }\n.glyphicon-volume-off { &:before { content: \"\\e036\"; } }\n.glyphicon-volume-down { &:before { content: \"\\e037\"; } }\n.glyphicon-volume-up { &:before { content: \"\\e038\"; } }\n.glyphicon-qrcode { &:before { content: \"\\e039\"; } }\n.glyphicon-barcode { &:before { content: \"\\e040\"; } }\n.glyphicon-tag { &:before { content: \"\\e041\"; } }\n.glyphicon-tags { &:before { content: \"\\e042\"; } }\n.glyphicon-book { &:before { content: \"\\e043\"; } }\n.glyphicon-bookmark { &:before { content: \"\\e044\"; } }\n.glyphicon-print { &:before { content: \"\\e045\"; } }\n.glyphicon-camera { &:before { content: \"\\e046\"; } }\n.glyphicon-font { &:before { content: \"\\e047\"; } }\n.glyphicon-bold { &:before { content: \"\\e048\"; } }\n.glyphicon-italic { &:before { content: \"\\e049\"; } }\n.glyphicon-text-height { &:before { content: \"\\e050\"; } }\n.glyphicon-text-width { &:before { content: \"\\e051\"; } }\n.glyphicon-align-left { &:before { content: \"\\e052\"; } }\n.glyphicon-align-center { &:before { content: \"\\e053\"; } }\n.glyphicon-align-right { &:before { content: \"\\e054\"; } }\n.glyphicon-align-justify { &:before { content: \"\\e055\"; } }\n.glyphicon-list { &:before { content: \"\\e056\"; } }\n.glyphicon-indent-left { &:before { content: \"\\e057\"; } }\n.glyphicon-indent-right { &:before { content: \"\\e058\"; } }\n.glyphicon-facetime-video { &:before { content: \"\\e059\"; } }\n.glyphicon-picture { &:before { content: \"\\e060\"; } }\n.glyphicon-map-marker { &:before { content: \"\\e062\"; } }\n.glyphicon-adjust { &:before { content: \"\\e063\"; } }\n.glyphicon-tint { &:before { content: \"\\e064\"; } }\n.glyphicon-edit { &:before { content: \"\\e065\"; } }\n.glyphicon-share { &:before { content: \"\\e066\"; } }\n.glyphicon-check { &:before { content: \"\\e067\"; } }\n.glyphicon-move { &:before { content: \"\\e068\"; } }\n.glyphicon-step-backward { &:before { content: \"\\e069\"; } }\n.glyphicon-fast-backward { &:before { content: \"\\e070\"; } }\n.glyphicon-backward { &:before { content: \"\\e071\"; } }\n.glyphicon-play { &:before { content: \"\\e072\"; } }\n.glyphicon-pause { &:before { content: \"\\e073\"; } }\n.glyphicon-stop { &:before { content: \"\\e074\"; } }\n.glyphicon-forward { &:before { content: \"\\e075\"; } }\n.glyphicon-fast-forward { &:before { content: \"\\e076\"; } }\n.glyphicon-step-forward { &:before { content: \"\\e077\"; } }\n.glyphicon-eject { &:before { content: \"\\e078\"; } }\n.glyphicon-chevron-left { &:before { content: \"\\e079\"; } }\n.glyphicon-chevron-right { &:before { content: \"\\e080\"; } }\n.glyphicon-plus-sign { &:before { content: \"\\e081\"; } }\n.glyphicon-minus-sign { &:before { content: \"\\e082\"; } }\n.glyphicon-remove-sign { &:before { content: \"\\e083\"; } }\n.glyphicon-ok-sign { &:before { content: \"\\e084\"; } }\n.glyphicon-question-sign { &:before { content: \"\\e085\"; } }\n.glyphicon-info-sign { &:before { content: \"\\e086\"; } }\n.glyphicon-screenshot { &:before { content: \"\\e087\"; } }\n.glyphicon-remove-circle { &:before { content: \"\\e088\"; } }\n.glyphicon-ok-circle { &:before { content: \"\\e089\"; } }\n.glyphicon-ban-circle { &:before { content: \"\\e090\"; } }\n.glyphicon-arrow-left { &:before { content: \"\\e091\"; } }\n.glyphicon-arrow-right { &:before { content: \"\\e092\"; } }\n.glyphicon-arrow-up { &:before { content: \"\\e093\"; } }\n.glyphicon-arrow-down { &:before { content: \"\\e094\"; } }\n.glyphicon-share-alt { &:before { content: \"\\e095\"; } }\n.glyphicon-resize-full { &:before { content: \"\\e096\"; } }\n.glyphicon-resize-small { &:before { content: \"\\e097\"; } }\n.glyphicon-exclamation-sign { &:before { content: \"\\e101\"; } }\n.glyphicon-gift { &:before { content: \"\\e102\"; } }\n.glyphicon-leaf { &:before { content: \"\\e103\"; } }\n.glyphicon-fire { &:before { content: \"\\e104\"; } }\n.glyphicon-eye-open { &:before { content: \"\\e105\"; } }\n.glyphicon-eye-close { &:before { content: \"\\e106\"; } }\n.glyphicon-warning-sign { &:before { content: \"\\e107\"; } }\n.glyphicon-plane { &:before { content: \"\\e108\"; } }\n.glyphicon-calendar { &:before { content: \"\\e109\"; } }\n.glyphicon-random { &:before { content: \"\\e110\"; } }\n.glyphicon-comment { &:before { content: \"\\e111\"; } }\n.glyphicon-magnet { &:before { content: \"\\e112\"; } }\n.glyphicon-chevron-up { &:before { content: \"\\e113\"; } }\n.glyphicon-chevron-down { &:before { content: \"\\e114\"; } }\n.glyphicon-retweet { &:before { content: \"\\e115\"; } }\n.glyphicon-shopping-cart { &:before { content: \"\\e116\"; } }\n.glyphicon-folder-close { &:before { content: \"\\e117\"; } }\n.glyphicon-folder-open { &:before { content: \"\\e118\"; } }\n.glyphicon-resize-vertical { &:before { content: \"\\e119\"; } }\n.glyphicon-resize-horizontal { &:before { content: \"\\e120\"; } }\n.glyphicon-hdd { &:before { content: \"\\e121\"; } }\n.glyphicon-bullhorn { &:before { content: \"\\e122\"; } }\n.glyphicon-bell { &:before { content: \"\\e123\"; } }\n.glyphicon-certificate { &:before { content: \"\\e124\"; } }\n.glyphicon-thumbs-up { &:before { content: \"\\e125\"; } }\n.glyphicon-thumbs-down { &:before { content: \"\\e126\"; } }\n.glyphicon-hand-right { &:before { content: \"\\e127\"; } }\n.glyphicon-hand-left { &:before { content: \"\\e128\"; } }\n.glyphicon-hand-up { &:before { content: \"\\e129\"; } }\n.glyphicon-hand-down { &:before { content: \"\\e130\"; } }\n.glyphicon-circle-arrow-right { &:before { content: \"\\e131\"; } }\n.glyphicon-circle-arrow-left { &:before { content: \"\\e132\"; } }\n.glyphicon-circle-arrow-up { &:before { content: \"\\e133\"; } }\n.glyphicon-circle-arrow-down { &:before { content: \"\\e134\"; } }\n.glyphicon-globe { &:before { content: \"\\e135\"; } }\n.glyphicon-wrench { &:before { content: \"\\e136\"; } }\n.glyphicon-tasks { &:before { content: \"\\e137\"; } }\n.glyphicon-filter { &:before { content: \"\\e138\"; } }\n.glyphicon-briefcase { &:before { content: \"\\e139\"; } }\n.glyphicon-fullscreen { &:before { content: \"\\e140\"; } }\n.glyphicon-dashboard { &:before { content: \"\\e141\"; } }\n.glyphicon-paperclip { &:before { content: \"\\e142\"; } }\n.glyphicon-heart-empty { &:before { content: \"\\e143\"; } }\n.glyphicon-link { &:before { content: \"\\e144\"; } }\n.glyphicon-phone { &:before { content: \"\\e145\"; } }\n.glyphicon-pushpin { &:before { content: \"\\e146\"; } }\n.glyphicon-usd { &:before { content: \"\\e148\"; } }\n.glyphicon-gbp { &:before { content: \"\\e149\"; } }\n.glyphicon-sort { &:before { content: \"\\e150\"; } }\n.glyphicon-sort-by-alphabet { &:before { content: \"\\e151\"; } }\n.glyphicon-sort-by-alphabet-alt { &:before { content: \"\\e152\"; } }\n.glyphicon-sort-by-order { &:before { content: \"\\e153\"; } }\n.glyphicon-sort-by-order-alt { &:before { content: \"\\e154\"; } }\n.glyphicon-sort-by-attributes { &:before { content: \"\\e155\"; } }\n.glyphicon-sort-by-attributes-alt { &:before { content: \"\\e156\"; } }\n.glyphicon-unchecked { &:before { content: \"\\e157\"; } }\n.glyphicon-expand { &:before { content: \"\\e158\"; } }\n.glyphicon-collapse-down { &:before { content: \"\\e159\"; } }\n.glyphicon-collapse-up { &:before { content: \"\\e160\"; } }\n.glyphicon-log-in { &:before { content: \"\\e161\"; } }\n.glyphicon-flash { &:before { content: \"\\e162\"; } }\n.glyphicon-log-out { &:before { content: \"\\e163\"; } }\n.glyphicon-new-window { &:before { content: \"\\e164\"; } }\n.glyphicon-record { &:before { content: \"\\e165\"; } }\n.glyphicon-save { &:before { content: \"\\e166\"; } }\n.glyphicon-open { &:before { content: \"\\e167\"; } }\n.glyphicon-saved { &:before { content: \"\\e168\"; } }\n.glyphicon-import { &:before { content: \"\\e169\"; } }\n.glyphicon-export { &:before { content: \"\\e170\"; } }\n.glyphicon-send { &:before { content: \"\\e171\"; } }\n.glyphicon-floppy-disk { &:before { content: \"\\e172\"; } }\n.glyphicon-floppy-saved { &:before { content: \"\\e173\"; } }\n.glyphicon-floppy-remove { &:before { content: \"\\e174\"; } }\n.glyphicon-floppy-save { &:before { content: \"\\e175\"; } }\n.glyphicon-floppy-open { &:before { content: \"\\e176\"; } }\n.glyphicon-credit-card { &:before { content: \"\\e177\"; } }\n.glyphicon-transfer { &:before { content: \"\\e178\"; } }\n.glyphicon-cutlery { &:before { content: \"\\e179\"; } }\n.glyphicon-header { &:before { content: \"\\e180\"; } }\n.glyphicon-compressed { &:before { content: \"\\e181\"; } }\n.glyphicon-earphone { &:before { content: \"\\e182\"; } }\n.glyphicon-phone-alt { &:before { content: \"\\e183\"; } }\n.glyphicon-tower { &:before { content: \"\\e184\"; } }\n.glyphicon-stats { &:before { content: \"\\e185\"; } }\n.glyphicon-sd-video { &:before { content: \"\\e186\"; } }\n.glyphicon-hd-video { &:before { content: \"\\e187\"; } }\n.glyphicon-subtitles { &:before { content: \"\\e188\"; } }\n.glyphicon-sound-stereo { &:before { content: \"\\e189\"; } }\n.glyphicon-sound-dolby { &:before { content: \"\\e190\"; } }\n.glyphicon-sound-5-1 { &:before { content: \"\\e191\"; } }\n.glyphicon-sound-6-1 { &:before { content: \"\\e192\"; } }\n.glyphicon-sound-7-1 { &:before { content: \"\\e193\"; } }\n.glyphicon-copyright-mark { &:before { content: \"\\e194\"; } }\n.glyphicon-registration-mark { &:before { content: \"\\e195\"; } }\n.glyphicon-cloud-download { &:before { content: \"\\e197\"; } }\n.glyphicon-cloud-upload { &:before { content: \"\\e198\"; } }\n.glyphicon-tree-conifer { &:before { content: \"\\e199\"; } }\n.glyphicon-tree-deciduous { &:before { content: \"\\e200\"; } }\n","//\n// Scaffolding\n// --------------------------------------------------\n\n\n// Reset the box-sizing\n//\n// Heads up! This reset may cause conflicts with some third-party widgets.\n// For recommendations on resolving such conflicts, see\n// http://getbootstrap.com/getting-started/#third-box-sizing\n* {\n .box-sizing(border-box);\n}\n*:before,\n*:after {\n .box-sizing(border-box);\n}\n\n\n// Body reset\n\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0,0,0,0);\n}\n\nbody {\n font-family: @font-family-base;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @text-color;\n background-color: @body-bg;\n}\n\n// Reset fonts for relevant elements\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\n\n// Links\n\na {\n color: @link-color;\n text-decoration: none;\n\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n }\n\n &:focus {\n .tab-focus();\n }\n}\n\n\n// Figures\n//\n// We reset this here because previously Normalize had no `figure` margins. This\n// ensures we don't break anyone's use of the element.\n\nfigure {\n margin: 0;\n}\n\n\n// Images\n\nimg {\n vertical-align: middle;\n}\n\n// Responsive images (ensure images don't scale beyond their parents)\n.img-responsive {\n .img-responsive();\n}\n\n// Rounded corners\n.img-rounded {\n border-radius: @border-radius-large;\n}\n\n// Image thumbnails\n//\n// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.\n.img-thumbnail {\n padding: @thumbnail-padding;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(all .2s ease-in-out);\n\n // Keep them at most 100% wide\n .img-responsive(inline-block);\n}\n\n// Perfect circle\n.img-circle {\n border-radius: 50%; // set radius in percents\n}\n\n\n// Horizontal rules\n\nhr {\n margin-top: @line-height-computed;\n margin-bottom: @line-height-computed;\n border: 0;\n border-top: 1px solid @hr-border;\n}\n\n\n// Only display content to screen readers\n//\n// See: http://a11yproject.com/posts/how-to-hide-content/\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0,0,0,0);\n border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n// Useful for \"Skip to main content\" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n// Credit: HTML5 Boilerplate\n\n.sr-only-focusable {\n &:active,\n &:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n }\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They will be removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility){\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // See https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// WebKit-style focus\n\n.tab-focus() {\n // Default\n outline: thin dotted;\n // WebKit\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n.img-responsive(@display: block) {\n display: @display;\n max-width: 100%; // Part 1: Set a maximum relative to the parent\n height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size. Note that the\n// spelling of `min--moz-device-pixel-ratio` is intentional.\n.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {\n background-image: url(\"@{file-1x}\");\n\n @media\n only screen and (-webkit-min-device-pixel-ratio: 2),\n only screen and ( min--moz-device-pixel-ratio: 2),\n only screen and ( -o-min-device-pixel-ratio: 2/1),\n only screen and ( min-device-pixel-ratio: 2),\n only screen and ( min-resolution: 192dpi),\n only screen and ( min-resolution: 2dppx) {\n background-image: url(\"@{file-2x}\");\n background-size: @width-1x @height-1x;\n }\n}\n","//\n// Typography\n// --------------------------------------------------\n\n\n// Headings\n// -------------------------\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n font-family: @headings-font-family;\n font-weight: @headings-font-weight;\n line-height: @headings-line-height;\n color: @headings-color;\n\n small,\n .small {\n font-weight: normal;\n line-height: 1;\n color: @headings-small-color;\n }\n}\n\nh1, .h1,\nh2, .h2,\nh3, .h3 {\n margin-top: @line-height-computed;\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 65%;\n }\n}\nh4, .h4,\nh5, .h5,\nh6, .h6 {\n margin-top: (@line-height-computed / 2);\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 75%;\n }\n}\n\nh1, .h1 { font-size: @font-size-h1; }\nh2, .h2 { font-size: @font-size-h2; }\nh3, .h3 { font-size: @font-size-h3; }\nh4, .h4 { font-size: @font-size-h4; }\nh5, .h5 { font-size: @font-size-h5; }\nh6, .h6 { font-size: @font-size-h6; }\n\n\n// Body text\n// -------------------------\n\np {\n margin: 0 0 (@line-height-computed / 2);\n}\n\n.lead {\n margin-bottom: @line-height-computed;\n font-size: floor((@font-size-base * 1.15));\n font-weight: 300;\n line-height: 1.4;\n\n @media (min-width: @screen-sm-min) {\n font-size: (@font-size-base * 1.5);\n }\n}\n\n\n// Emphasis & misc\n// -------------------------\n\n// Ex: (12px small font / 14px base font) * 100% = about 85%\nsmall,\n.small {\n font-size: floor((100% * @font-size-small / @font-size-base));\n}\n\nmark,\n.mark {\n background-color: @state-warning-bg;\n padding: .2em;\n}\n\n// Alignment\n.text-left { text-align: left; }\n.text-right { text-align: right; }\n.text-center { text-align: center; }\n.text-justify { text-align: justify; }\n.text-nowrap { white-space: nowrap; }\n\n// Transformation\n.text-lowercase { text-transform: lowercase; }\n.text-uppercase { text-transform: uppercase; }\n.text-capitalize { text-transform: capitalize; }\n\n// Contextual colors\n.text-muted {\n color: @text-muted;\n}\n.text-primary {\n .text-emphasis-variant(@brand-primary);\n}\n.text-success {\n .text-emphasis-variant(@state-success-text);\n}\n.text-info {\n .text-emphasis-variant(@state-info-text);\n}\n.text-warning {\n .text-emphasis-variant(@state-warning-text);\n}\n.text-danger {\n .text-emphasis-variant(@state-danger-text);\n}\n\n// Contextual backgrounds\n// For now we'll leave these alongside the text classes until v4 when we can\n// safely shift things around (per SemVer rules).\n.bg-primary {\n // Given the contrast here, this is the only class to have its color inverted\n // automatically.\n color: #fff;\n .bg-variant(@brand-primary);\n}\n.bg-success {\n .bg-variant(@state-success-bg);\n}\n.bg-info {\n .bg-variant(@state-info-bg);\n}\n.bg-warning {\n .bg-variant(@state-warning-bg);\n}\n.bg-danger {\n .bg-variant(@state-danger-bg);\n}\n\n\n// Page header\n// -------------------------\n\n.page-header {\n padding-bottom: ((@line-height-computed / 2) - 1);\n margin: (@line-height-computed * 2) 0 @line-height-computed;\n border-bottom: 1px solid @page-header-border-color;\n}\n\n\n// Lists\n// -------------------------\n\n// Unordered and Ordered lists\nul,\nol {\n margin-top: 0;\n margin-bottom: (@line-height-computed / 2);\n ul,\n ol {\n margin-bottom: 0;\n }\n}\n\n// List options\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n .list-unstyled();\n margin-left: -5px;\n\n > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n }\n}\n\n// Description Lists\ndl {\n margin-top: 0; // Remove browser default\n margin-bottom: @line-height-computed;\n}\ndt,\ndd {\n line-height: @line-height-base;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0; // Undo browser default\n}\n\n// Horizontal description lists\n//\n// Defaults to being stacked without any of the below styles applied, until the\n// grid breakpoint is reached (default of ~768px).\n\n.dl-horizontal {\n dd {\n &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present\n }\n\n @media (min-width: @grid-float-breakpoint) {\n dt {\n float: left;\n width: (@dl-horizontal-offset - 20);\n clear: left;\n text-align: right;\n .text-overflow();\n }\n dd {\n margin-left: @dl-horizontal-offset;\n }\n }\n}\n\n\n// Misc\n// -------------------------\n\n// Abbreviations and acronyms\nabbr[title],\n// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted @abbr-border-color;\n}\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\n\n// Blockquotes\nblockquote {\n padding: (@line-height-computed / 2) @line-height-computed;\n margin: 0 0 @line-height-computed;\n font-size: @blockquote-font-size;\n border-left: 5px solid @blockquote-border-color;\n\n p,\n ul,\n ol {\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n // Note: Deprecated small and .small as of v3.1.0\n // Context: https://github.com/twbs/bootstrap/issues/11660\n footer,\n small,\n .small {\n display: block;\n font-size: 80%; // back to default font-size\n line-height: @line-height-base;\n color: @blockquote-small-color;\n\n &:before {\n content: '\\2014 \\00A0'; // em dash, nbsp\n }\n }\n}\n\n// Opposite alignment of blockquote\n//\n// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid @blockquote-border-color;\n border-left: 0;\n text-align: right;\n\n // Account for citation\n footer,\n small,\n .small {\n &:before { content: ''; }\n &:after {\n content: '\\00A0 \\2014'; // nbsp, em dash\n }\n }\n}\n\n// Addresses\naddress {\n margin-bottom: @line-height-computed;\n font-style: normal;\n line-height: @line-height-base;\n}\n","// Typography\n\n.text-emphasis-variant(@color) {\n color: @color;\n a&:hover {\n color: darken(@color, 10%);\n }\n}\n","// Contextual backgrounds\n\n.bg-variant(@color) {\n background-color: @color;\n a&:hover {\n background-color: darken(@color, 10%);\n }\n}\n","// Text overflow\n// Requires inline-block or block for proper styling\n\n.text-overflow() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n","//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n font-family: @font-family-monospace;\n}\n\n// Inline code\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: @code-color;\n background-color: @code-bg;\n border-radius: @border-radius-base;\n}\n\n// User input typically entered via keyboard\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: @kbd-color;\n background-color: @kbd-bg;\n border-radius: @border-radius-small;\n box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);\n\n kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n box-shadow: none;\n }\n}\n\n// Blocks of code\npre {\n display: block;\n padding: ((@line-height-computed - 1) / 2);\n margin: 0 0 (@line-height-computed / 2);\n font-size: (@font-size-base - 1); // 14px to 13px\n line-height: @line-height-base;\n word-break: break-all;\n word-wrap: break-word;\n color: @pre-color;\n background-color: @pre-bg;\n border: 1px solid @pre-border-color;\n border-radius: @border-radius-base;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n max-height: @pre-scrollable-max-height;\n overflow-y: scroll;\n}\n","//\n// Grid system\n// --------------------------------------------------\n\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n.container {\n .container-fixed();\n\n @media (min-width: @screen-sm-min) {\n width: @container-sm;\n }\n @media (min-width: @screen-md-min) {\n width: @container-md;\n }\n @media (min-width: @screen-lg-min) {\n width: @container-lg;\n }\n}\n\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but without any defined\n// width for fluid, full width layouts.\n\n.container-fluid {\n .container-fixed();\n}\n\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n.row {\n .make-row();\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n.make-grid-columns();\n\n\n// Extra small grid\n//\n// Columns, offsets, pushes, and pulls for extra small devices like\n// smartphones.\n\n.make-grid(xs);\n\n\n// Small grid\n//\n// Columns, offsets, pushes, and pulls for the small device range, from phones\n// to tablets.\n\n@media (min-width: @screen-sm-min) {\n .make-grid(sm);\n}\n\n\n// Medium grid\n//\n// Columns, offsets, pushes, and pulls for the desktop device range.\n\n@media (min-width: @screen-md-min) {\n .make-grid(md);\n}\n\n\n// Large grid\n//\n// Columns, offsets, pushes, and pulls for the large desktop device range.\n\n@media (min-width: @screen-lg-min) {\n .make-grid(lg);\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n// Centered container element\n.container-fixed(@gutter: @grid-gutter-width) {\n margin-right: auto;\n margin-left: auto;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n &:extend(.clearfix all);\n}\n\n// Creates a wrapper for a series of columns\n.make-row(@gutter: @grid-gutter-width) {\n margin-left: (@gutter / -2);\n margin-right: (@gutter / -2);\n &:extend(.clearfix all);\n}\n\n// Generate the extra small columns\n.make-xs-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n float: left;\n width: percentage((@columns / @grid-columns));\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n}\n.make-xs-column-offset(@columns) {\n margin-left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-push(@columns) {\n left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-pull(@columns) {\n right: percentage((@columns / @grid-columns));\n}\n\n// Generate the small columns\n.make-sm-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-sm-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-offset(@columns) {\n @media (min-width: @screen-sm-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-push(@columns) {\n @media (min-width: @screen-sm-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-pull(@columns) {\n @media (min-width: @screen-sm-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the medium columns\n.make-md-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-md-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-offset(@columns) {\n @media (min-width: @screen-md-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-push(@columns) {\n @media (min-width: @screen-md-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-pull(@columns) {\n @media (min-width: @screen-md-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the large columns\n.make-lg-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-lg-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-offset(@columns) {\n @media (min-width: @screen-lg-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-push(@columns) {\n @media (min-width: @screen-lg-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-pull(@columns) {\n @media (min-width: @screen-lg-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n","// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `@grid-columns`.\n\n.make-grid-columns() {\n // Common styles for all sizes of grid columns, widths 1-12\n .col(@index) { // initial\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general; \"=<\" isn't a typo\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n position: relative;\n // Prevent columns from collapsing when empty\n min-height: 1px;\n // Inner gutter via padding\n padding-left: (@grid-gutter-width / 2);\n padding-right: (@grid-gutter-width / 2);\n }\n }\n .col(1); // kickstart it\n}\n\n.float-grid-columns(@class) {\n .col(@index) { // initial\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n float: left;\n }\n }\n .col(1); // kickstart it\n}\n\n.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {\n .col-@{class}-@{index} {\n width: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) {\n .col-@{class}-push-@{index} {\n left: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) {\n .col-@{class}-push-0 {\n left: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) {\n .col-@{class}-pull-@{index} {\n right: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) {\n .col-@{class}-pull-0 {\n right: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = offset) {\n .col-@{class}-offset-@{index} {\n margin-left: percentage((@index / @grid-columns));\n }\n}\n\n// Basic looping in LESS\n.loop-grid-columns(@index, @class, @type) when (@index >= 0) {\n .calc-grid-column(@index, @class, @type);\n // next iteration\n .loop-grid-columns((@index - 1), @class, @type);\n}\n\n// Create grid for specific class\n.make-grid(@class) {\n .float-grid-columns(@class);\n .loop-grid-columns(@grid-columns, @class, width);\n .loop-grid-columns(@grid-columns, @class, pull);\n .loop-grid-columns(@grid-columns, @class, push);\n .loop-grid-columns(@grid-columns, @class, offset);\n}\n","//\n// Tables\n// --------------------------------------------------\n\n\ntable {\n background-color: @table-bg;\n}\ncaption {\n padding-top: @table-cell-padding;\n padding-bottom: @table-cell-padding;\n color: @text-muted;\n text-align: left;\n}\nth {\n text-align: left;\n}\n\n\n// Baseline styles\n\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: @line-height-computed;\n // Cells\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-cell-padding;\n line-height: @line-height-base;\n vertical-align: top;\n border-top: 1px solid @table-border-color;\n }\n }\n }\n // Bottom align for column headings\n > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid @table-border-color;\n }\n // Remove top border from thead by default\n > caption + thead,\n > colgroup + thead,\n > thead:first-child {\n > tr:first-child {\n > th,\n > td {\n border-top: 0;\n }\n }\n }\n // Account for multiple tbody instances\n > tbody + tbody {\n border-top: 2px solid @table-border-color;\n }\n\n // Nesting\n .table {\n background-color: @body-bg;\n }\n}\n\n\n// Condensed table w/ half padding\n\n.table-condensed {\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-condensed-cell-padding;\n }\n }\n }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n border: 1px solid @table-border-color;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n border: 1px solid @table-border-color;\n }\n }\n }\n > thead > tr {\n > th,\n > td {\n border-bottom-width: 2px;\n }\n }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n > tbody > tr:nth-child(odd) {\n background-color: @table-bg-accent;\n }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n > tbody > tr:hover {\n background-color: @table-bg-hover;\n }\n}\n\n\n// Table cell sizing\n//\n// Reset default table behavior\n\ntable col[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9/10 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-column;\n}\ntable {\n td,\n th {\n &[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9/10 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-cell;\n }\n }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n// Generate the contextual variants\n.table-row-variant(active; @table-bg-active);\n.table-row-variant(success; @state-success-bg);\n.table-row-variant(info; @state-info-bg);\n.table-row-variant(warning; @state-warning-bg);\n.table-row-variant(danger; @state-danger-bg);\n\n\n// Responsive tables\n//\n// Wrap your tables in `.table-responsive` and we'll make them mobile friendly\n// by enabling horizontal scrolling. Only applies <768px. Everything above that\n// will display normally.\n\n.table-responsive {\n overflow-x: auto;\n min-height: 0.01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)\n\n @media screen and (max-width: @screen-xs-max) {\n width: 100%;\n margin-bottom: (@line-height-computed * 0.75);\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid @table-border-color;\n\n // Tighten up spacing\n > .table {\n margin-bottom: 0;\n\n // Ensure the content doesn't wrap\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n white-space: nowrap;\n }\n }\n }\n }\n\n // Special overrides for the bordered tables\n > .table-bordered {\n border: 0;\n\n // Nuke the appropriate borders so that the parent can handle them\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n }\n }\n\n // Only nuke the last row's bottom-border in `tbody` and `tfoot` since\n // chances are there will be only one `tr` in a `thead` and that would\n // remove the border altogether.\n > tbody,\n > tfoot {\n > tr:last-child {\n > th,\n > td {\n border-bottom: 0;\n }\n }\n }\n\n }\n }\n}\n","// Tables\n\n.table-row-variant(@state; @background) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table > thead > tr,\n .table > tbody > tr,\n .table > tfoot > tr {\n > td.@{state},\n > th.@{state},\n &.@{state} > td,\n &.@{state} > th {\n background-color: @background;\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover > tbody > tr {\n > td.@{state}:hover,\n > th.@{state}:hover,\n &.@{state}:hover > td,\n &:hover > .@{state},\n &.@{state}:hover > th {\n background-color: darken(@background, 5%);\n }\n }\n}\n","//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline non-control form elements.\n\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n // Chrome and Firefox set a `min-width: min-content;` on fieldsets,\n // so we reset that to ensure it behaves more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359.\n min-width: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: @line-height-computed;\n font-size: (@font-size-base * 1.5);\n line-height: inherit;\n color: @legend-color;\n border: 0;\n border-bottom: 1px solid @legend-border-color;\n}\n\nlabel {\n display: inline-block;\n max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)\n margin-bottom: 5px;\n font-weight: bold;\n}\n\n\n// Normalize form controls\n//\n// While most of our form styles require extra classes, some basic normalization\n// is required to ensure optimum display with or without those classes to better\n// address browser inconsistencies.\n\n// Override content-box in Normalize (* isn't specific enough)\ninput[type=\"search\"] {\n .box-sizing(border-box);\n}\n\n// Position radios and checkboxes better\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9; // IE8-9\n line-height: normal;\n}\n\n// Set the height of file controls to match text inputs\ninput[type=\"file\"] {\n display: block;\n}\n\n// Make range inputs behave like textual form controls\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\n\n// Make multiple select elements height not fixed\nselect[multiple],\nselect[size] {\n height: auto;\n}\n\n// Focus for file, radio, and checkbox\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n .tab-focus();\n}\n\n// Adjust output element\noutput {\n display: block;\n padding-top: (@padding-base-vertical + 1);\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n}\n\n\n// Common form controls\n//\n// Shared size and type resets for form controls. Apply `.form-control` to any\n// of the following form controls:\n//\n// select\n// textarea\n// input[type=\"text\"]\n// input[type=\"password\"]\n// input[type=\"datetime\"]\n// input[type=\"datetime-local\"]\n// input[type=\"date\"]\n// input[type=\"month\"]\n// input[type=\"time\"]\n// input[type=\"week\"]\n// input[type=\"number\"]\n// input[type=\"email\"]\n// input[type=\"url\"]\n// input[type=\"search\"]\n// input[type=\"tel\"]\n// input[type=\"color\"]\n\n.form-control {\n display: block;\n width: 100%;\n height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n background-color: @input-bg;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid @input-border;\n border-radius: @input-border-radius;\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));\n .transition(~\"border-color ease-in-out .15s, box-shadow ease-in-out .15s\");\n\n // Customize the `:focus` state to imitate native WebKit styles.\n .form-control-focus();\n\n // Placeholder\n .placeholder();\n\n // Disabled and read-only inputs\n //\n // HTML5 says that controls under a fieldset > legend:first-child won't be\n // disabled if the fieldset is disabled. Due to implementation difficulty, we\n // don't honor that edge case; we style them as disabled anyway.\n &[disabled],\n &[readonly],\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n background-color: @input-bg-disabled;\n opacity: 1; // iOS fix for unreadable disabled content\n }\n\n // Reset height for `textarea`s\n textarea& {\n height: auto;\n }\n}\n\n\n// Search inputs in iOS\n//\n// This overrides the extra rounded corners on search inputs in iOS so that our\n// `.form-control` class can properly style them. Note that this cannot simply\n// be added to `.form-control` as it's not specific enough. For details, see\n// https://github.com/twbs/bootstrap/issues/11586.\n\ninput[type=\"search\"] {\n -webkit-appearance: none;\n}\n\n\n// Special styles for iOS temporal inputs\n//\n// In Mobile Safari, setting `display: block` on temporal inputs causes the\n// text within the input to become vertically misaligned. As a workaround, we\n// set a pixel line-height that matches the given height of the input, but only\n// for Safari.\n\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type=\"date\"],\n input[type=\"time\"],\n input[type=\"datetime-local\"],\n input[type=\"month\"] {\n line-height: @input-height-base;\n }\n input[type=\"date\"].input-sm,\n input[type=\"time\"].input-sm,\n input[type=\"datetime-local\"].input-sm,\n input[type=\"month\"].input-sm {\n line-height: @input-height-small;\n }\n input[type=\"date\"].input-lg,\n input[type=\"time\"].input-lg,\n input[type=\"datetime-local\"].input-lg,\n input[type=\"month\"].input-lg {\n line-height: @input-height-large;\n }\n}\n\n\n// Form groups\n//\n// Designed to help with the organization and spacing of vertical forms. For\n// horizontal forms, use the predefined grid classes.\n\n.form-group {\n margin-bottom: 15px;\n}\n\n\n// Checkboxes and radios\n//\n// Indent the labels to position radios/checkboxes as hanging controls.\n\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n\n label {\n min-height: @line-height-computed; // Ensure the input doesn't jump when there is no text\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n cursor: pointer;\n }\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-left: -20px;\n margin-top: 4px \\9;\n}\n\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing\n}\n\n// Radios and checkboxes on same line\n.radio-inline,\n.checkbox-inline {\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n vertical-align: middle;\n font-weight: normal;\n cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px; // space out consecutive inline controls\n}\n\n// Apply same disabled cursor tweak as for inputs\n// Some special care is needed because