From b93d73be977609da2f50656689914e9183202ccc Mon Sep 17 00:00:00 2001 From: Jakub Szymaszek Date: Fri, 9 Nov 2018 13:52:30 -0800 Subject: [PATCH] Adding demo for Always Encrypted with secure enclaves Adding the demo for Always Encrypted with secure enclaves in SQL Server 2019. --- samples/features/security/README.md | 2 + .../README.md | 151 + .../img/dot-net-framework.png | Bin 0 -> 10363 bytes .../img/encrypted-results.png | Bin 0 -> 24961 bytes .../img/import-bacpac.png | Bin 0 -> 35556 bytes .../img/list-of-patients.png | Bin 0 -> 27708 bytes .../img/new-cmk-dialog.png | Bin 0 -> 28199 bytes .../img/new-cmk.png | Bin 0 -> 16056 bytes .../img/parameterization.png | Bin 0 -> 36933 bytes .../img/ssms-ae-disabled.png | Bin 0 -> 15912 bytes .../img/ssms-ae-enabled.png | Bin 0 -> 20839 bytes .../img/xe-session-watch-live-data.png | Bin 0 -> 19881 bytes .../img/xevent-after-encryption.png | Bin 0 -> 55111 bytes .../img/xevent-before-encryption.png | Bin 0 -> 42496 bytes .../img/xevent-session-columns.png | Bin 0 -> 13350 bytes .../setup/Clinic.bacpac | Bin 0 -> 36253 bytes .../src/ContosoClinic.sln | 25 + .../ContosoClinic/App_Start/BundleConfig.cs | 31 + .../ContosoClinic/App_Start/FilterConfig.cs | 13 + .../ContosoClinic/App_Start/IdentityConfig.cs | 109 + .../ContosoClinic/App_Start/RouteConfig.cs | 23 + .../ContosoClinic/App_Start/Startup.Auth.cs | 68 + .../src/ContosoClinic/Content/Site.css | 24 + .../ContosoClinic/Content/bootstrap-theme.css | 384 + .../Content/bootstrap-theme.min.css | 1 + .../src/ContosoClinic/Content/bootstrap.css | 6805 ++++++++++++ .../ContosoClinic/Content/bootstrap.min.css | 9 + .../src/ContosoClinic/ContosoClinic.csproj | 333 + .../Controllers/AccountController.cs | 485 + .../Controllers/HomeController.cs | 30 + .../Controllers/ManageController.cs | 387 + .../Controllers/PatientsController.cs | 141 + .../Controllers/VisitsController.cs | 132 + .../src/ContosoClinic/Global.asax | 1 + .../src/ContosoClinic/Global.asax.cs | 21 + .../201602170540262_Initial.Designer.cs | 29 + .../Migrations/201602170540262_Initial.cs | 117 + .../Migrations/201602170540262_Initial.resx | 126 + .../201602170605457_Visits.Designer.cs | 29 + .../Migrations/201602170605457_Visits.cs | 34 + .../Migrations/201602170605457_Visits.resx | 126 + .../201602170720063_Nullability.Designer.cs | 29 + .../Migrations/201602170720063_Nullability.cs | 32 + .../201602170720063_Nullability.resx | 126 + .../201602170857179_Assignments.Designer.cs | 29 + .../Migrations/201602170857179_Assignments.cs | 34 + .../201602170857179_Assignments.resx | 126 + .../ContosoClinic/Migrations/Configuration.cs | 351 + .../ContosoClinic/Models/AccountViewModels.cs | 112 + .../src/ContosoClinic/Models/ClinicModels.cs | 79 + .../ContosoClinic/Models/IdentityModels.cs | 40 + .../ContosoClinic/Models/ManageViewModels.cs | 86 + .../Models/SessionContextInterceptor.cs | 137 + .../ContosoClinic/Properties/AssemblyInfo.cs | 35 + .../src/ContosoClinic/Scripts/_references.js | 7 + .../src/ContosoClinic/Scripts/bootstrap.js | 1999 ++++ .../ContosoClinic/Scripts/bootstrap.min.js | 6 + .../Scripts/jquery-1.10.2.intellisense.js | 2671 +++++ .../ContosoClinic/Scripts/jquery-1.10.2.js | 9789 +++++++++++++++++ .../Scripts/jquery-1.10.2.min.js | 6 + .../Scripts/jquery-1.10.2.min.map | 1 + .../Scripts/jquery.validate-vsdoc.js | 1288 +++ .../ContosoClinic/Scripts/jquery.validate.js | 1231 +++ .../Scripts/jquery.validate.min.js | 2 + .../Scripts/jquery.validate.unobtrusive.js | 429 + .../jquery.validate.unobtrusive.min.js | 19 + .../ContosoClinic/Scripts/modernizr-2.6.2.js | 1393 +++ .../src/ContosoClinic/Scripts/respond.js | 326 + .../src/ContosoClinic/Scripts/respond.min.js | 6 + .../src/ContosoClinic/Startup.cs | 14 + .../Views/Account/ConfirmEmail.cshtml | 10 + .../Account/ExternalLoginConfirmation.cshtml | 36 + .../Views/Account/ExternalLoginFailure.cshtml | 8 + .../Views/Account/ForgotPassword.cshtml | 29 + .../Account/ForgotPasswordConfirmation.cshtml | 13 + .../ContosoClinic/Views/Account/Login.cshtml | 63 + .../Views/Account/Register.cshtml | 41 + .../Views/Account/ResetPassword.cshtml | 42 + .../Account/ResetPasswordConfirmation.cshtml | 12 + .../Views/Account/SendCode.cshtml | 24 + .../Views/Account/VerifyCode.cshtml | 38 + .../Account/_ExternalLoginsListPartial.cshtml | 28 + .../src/ContosoClinic/Views/Home/About.cshtml | 7 + .../ContosoClinic/Views/Home/Contact.cshtml | 17 + .../src/ContosoClinic/Views/Home/Index.cshtml | 7 + .../Views/Manage/AddPhoneNumber.cshtml | 29 + .../Views/Manage/ChangePassword.cshtml | 40 + .../ContosoClinic/Views/Manage/Index.cshtml | 84 + .../Views/Manage/ManageLogins.cshtml | 70 + .../Views/Manage/SetPassword.cshtml | 39 + .../Views/Manage/VerifyPhoneNumber.cshtml | 31 + .../Views/Patients/Create.cshtml | 104 + .../Views/Patients/Delete.cshtml | 96 + .../Views/Patients/Details.cshtml | 90 + .../ContosoClinic/Views/Patients/Edit.cshtml | 106 + .../ContosoClinic/Views/Patients/Index.cshtml | 90 + .../ContosoClinic/Views/Shared/Error.cshtml | 9 + .../ContosoClinic/Views/Shared/Lockout.cshtml | 10 + .../ContosoClinic/Views/Shared/_Layout.cshtml | 46 + .../Views/Shared/_LoginPartial.cshtml | 22 + .../ContosoClinic/Views/Visits/Create.cshtml | 72 + .../ContosoClinic/Views/Visits/Delete.cshtml | 64 + .../ContosoClinic/Views/Visits/Details.cshtml | 58 + .../ContosoClinic/Views/Visits/Edit.cshtml | 74 + .../ContosoClinic/Views/Visits/Index.cshtml | 57 + .../src/ContosoClinic/Views/Web.config | 43 + .../src/ContosoClinic/Views/_ViewStart.cshtml | 3 + .../src/ContosoClinic/Web.Debug.config | 30 + .../src/ContosoClinic/Web.Release.config | 31 + .../src/ContosoClinic/Web.config | 107 + .../src/ContosoClinic/favicon.ico | Bin 0 -> 32038 bytes .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 14079 bytes .../fonts/glyphicons-halflings-regular.svg | 228 + .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 29512 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 16448 bytes .../src/ContosoClinic/packages.config | 34 + .../tsql-scripts/CreateXESession.sql | 10 + .../tsql-scripts/DecryptColumns.sql | 20 + .../tsql-scripts/DropKeys.sql | 10 + .../tsql-scripts/EncryptColumns.sql | 23 + .../tsql-scripts/ListAllPatients.sql | 7 + .../tsql-scripts/QueryColumns.sql | 12 + .../tsql-scripts/RotateKeys.sql | 23 + 123 files changed, 32186 insertions(+) create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/README.md create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/img/dot-net-framework.png create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/img/encrypted-results.png create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/img/import-bacpac.png create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/img/list-of-patients.png create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/img/new-cmk-dialog.png create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/img/new-cmk.png create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/img/parameterization.png create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/img/ssms-ae-disabled.png create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/img/ssms-ae-enabled.png create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/img/xe-session-watch-live-data.png create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/img/xevent-after-encryption.png create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/img/xevent-before-encryption.png create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/img/xevent-session-columns.png create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/setup/Clinic.bacpac create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic.sln create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/App_Start/BundleConfig.cs create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/App_Start/FilterConfig.cs create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/App_Start/IdentityConfig.cs create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/App_Start/RouteConfig.cs create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/App_Start/Startup.Auth.cs create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Content/Site.css create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Content/bootstrap-theme.css create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Content/bootstrap-theme.min.css create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Content/bootstrap.css create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Content/bootstrap.min.css create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/ContosoClinic.csproj create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Controllers/AccountController.cs create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Controllers/HomeController.cs create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Controllers/ManageController.cs create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Controllers/PatientsController.cs create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Controllers/VisitsController.cs create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Global.asax create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Global.asax.cs create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170540262_Initial.Designer.cs create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170540262_Initial.cs create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170540262_Initial.resx create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170605457_Visits.Designer.cs create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170605457_Visits.cs create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170605457_Visits.resx create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170720063_Nullability.Designer.cs create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170720063_Nullability.cs create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170720063_Nullability.resx create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170857179_Assignments.Designer.cs create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170857179_Assignments.cs create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170857179_Assignments.resx create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/Configuration.cs create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Models/AccountViewModels.cs create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Models/ClinicModels.cs create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Models/IdentityModels.cs create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Models/ManageViewModels.cs create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Models/SessionContextInterceptor.cs create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Properties/AssemblyInfo.cs create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Scripts/_references.js create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Scripts/bootstrap.js create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Scripts/bootstrap.min.js create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Scripts/jquery-1.10.2.intellisense.js create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Scripts/jquery-1.10.2.js create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Scripts/jquery-1.10.2.min.js create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Scripts/jquery-1.10.2.min.map create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Scripts/jquery.validate-vsdoc.js create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Scripts/jquery.validate.js create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Scripts/jquery.validate.min.js create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Scripts/jquery.validate.unobtrusive.js create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Scripts/jquery.validate.unobtrusive.min.js create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Scripts/modernizr-2.6.2.js create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Scripts/respond.js create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Scripts/respond.min.js create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Startup.cs create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Views/Account/ConfirmEmail.cshtml create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Views/Account/ExternalLoginConfirmation.cshtml create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Views/Account/ExternalLoginFailure.cshtml create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Views/Account/ForgotPassword.cshtml create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Views/Account/ForgotPasswordConfirmation.cshtml create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Views/Account/Login.cshtml create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Views/Account/Register.cshtml create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Views/Account/ResetPassword.cshtml create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Views/Account/ResetPasswordConfirmation.cshtml create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Views/Account/SendCode.cshtml create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Views/Account/VerifyCode.cshtml create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Views/Account/_ExternalLoginsListPartial.cshtml create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Views/Home/About.cshtml create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Views/Home/Contact.cshtml create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Views/Home/Index.cshtml create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Views/Manage/AddPhoneNumber.cshtml create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Views/Manage/ChangePassword.cshtml create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Views/Manage/Index.cshtml create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Views/Manage/ManageLogins.cshtml create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Views/Manage/SetPassword.cshtml create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Views/Manage/VerifyPhoneNumber.cshtml create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Views/Patients/Create.cshtml create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Views/Patients/Delete.cshtml create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Views/Patients/Details.cshtml create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Views/Patients/Edit.cshtml create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Views/Patients/Index.cshtml create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Views/Shared/Error.cshtml create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Views/Shared/Lockout.cshtml create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Views/Shared/_Layout.cshtml create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Views/Shared/_LoginPartial.cshtml create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Views/Visits/Create.cshtml create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Views/Visits/Delete.cshtml create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Views/Visits/Details.cshtml create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Views/Visits/Edit.cshtml create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Views/Visits/Index.cshtml create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Views/Web.config create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Views/_ViewStart.cshtml create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Web.Debug.config create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Web.Release.config create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Web.config create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/favicon.ico create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/fonts/glyphicons-halflings-regular.eot create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/fonts/glyphicons-halflings-regular.svg create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/fonts/glyphicons-halflings-regular.ttf create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/fonts/glyphicons-halflings-regular.woff create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/packages.config create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/tsql-scripts/CreateXESession.sql create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/tsql-scripts/DecryptColumns.sql create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/tsql-scripts/DropKeys.sql create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/tsql-scripts/EncryptColumns.sql create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/tsql-scripts/ListAllPatients.sql create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/tsql-scripts/QueryColumns.sql create mode 100644 samples/features/security/always-encrypted-with-secure-enclaves/tsql-scripts/RotateKeys.sql diff --git a/samples/features/security/README.md b/samples/features/security/README.md index 3ba9974a..af2cf115 100644 --- a/samples/features/security/README.md +++ b/samples/features/security/README.md @@ -2,6 +2,8 @@ +[Always Encrypted with secure enclaves Demos](always-encrypted-with-secure-enclaves) + [Azure Active Directory Authentication Demos](azure-active-directory-auth) [Azure SQL Security Demo](https://github.com/Microsoft/azure-sql-security-sample) diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/README.md b/samples/features/security/always-encrypted-with-secure-enclaves/README.md new file mode 100644 index 00000000..826a8fcc --- /dev/null +++ b/samples/features/security/always-encrypted-with-secure-enclaves/README.md @@ -0,0 +1,151 @@ +# Always Encrypted with secure enclaves + +This sample/demo showcases the benefits of [Always Encrypted with secure enclaves](https://aka.ms/AlwaysEncryptedwithSecureEnclaves). + +## About this sample +- **Applies to:** SQL Server 2019 CTP 2.1 +- **Programming Language:** .NET C#, T-SQL +- **Authors:** Jakub Szymaszek [jaszymas-MSFT] + +This project has adopted the [Microsoft Open Source Code of Conduct](http://microsoft.github.io/codeofconduct). For more information see the [Code of Conduct FAQ](http://microsoft.github.io/codeofconduct/faq.md) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. + +## Contents +1. [Prerequisites](#prerequisites) +2. [Setup](#setup) +3. [Demo Part 1 - Tour the Clinic database and the demo application](#demo-part-1---tour-the-clinic-database-and-the-demo-application) +4. [Demo Part 2 - Encrypt columns in place](#demo-part-2---encrypt-columns-in-place) +5. [Demo Part 3 - Run rich queries from SSMS](#Demo-Part-3---run-rich-queries-from-SSMS) +6. [Demo Part 4 - Re-encrypt and decrypt columns in-place](#demo-part-4---re-encrypt-and-decrypt-columns-in-place) +7. [Resetting your demo environment](#resetting-your-demo-environment) + + + +## Prerequisites +You need two machines (they can be virtual machines): +- The SQL Server computer: + + Windows Server 2019 Datacenter or Windows 10 Enterprise version 1809 + + SQL Server 2019 CTP 2.1 or later + + [SQL Server Management Studio 18.0 or later](https://msdn.microsoft.com/en-us/library/mt238290.aspx) + + Visual Studio 2015 (or newer) + + If this machine is a virtual machine, it must be a generation 2 VM. +- The HGS computer to host Windows Host Guardian Service for enclave attestation: + + Windows Server 2019 Datacenter or Standard + +## Setup +1. Configure host attestation for the SQL Server computer, following Steps 1-2 in [Tutorial: Getting started with Always Encrypted with secure enclaves using SSMS](https://aka.ms/AlwaysEncryptedEnclavesTutorial). +1. Enable Always Encrypted with secure enclaves in your SQL Server instances by following instructions in Step 2 in [Tutorial: Getting started with Always Encrypted with secure enclaves using SSMS](https://aka.ms/AlwaysEncryptedEnclavesTutorial). +1. Set up the Clinic demo database. + + Clone/Download the repository. + + Open SSMS and connect to your SQL Server 2019 instance. + + In SSMS, right-click on **Databases** in Object Explorer and select **Import Data-tier Application...**. + + Locate the **Clinic** bacpac file the **/setup** folder. + ![Import Data-tier Application Wizard](img/import-bacpac.png) + + Complete the steps of the wizard to import the **Clinic** database. +1. Set up the database connection string in the demo application. + + Start Visual Studio and open the **ContosoClinic** solution file- located in **/src**. + + Using Solution Explorer, locate and open the **web.config** file under the **ContosoClinic** project. + + Look for the line that looks like this: + ```csharp + + + ``` + + Make sure the value of the **Data Source** key word in the database connection string is correct (identifies your instance). + + Make sure the **Initial Catalog** value is set to **Clinic** + + Replace **YourHGSComputer** with a DNS name or an IP address of your HGS computer. + + Save the file. + +1. Build the demo application in Visual Studio. + + Right click on your project in Solution Explorer and select **Properties**. + + Make sure the .NET Framework 4.7.2 or higher is configured as the target .NET Framework for your project (change it, if necessary). + ![Contoso Clinic Application Properties .Net Framework Version Setting](img/dot-net-framework.png) + + Build the solution. + +## Demo Part 1 - tour the Clinic database and the demo application +1. Connect to your database using SSMS without Always Encrypted enabled in the database connection. + - Open SSMS. + - In the **Connect to Server** dialog, enter your server name and authentication parameters. For more information on using SSMS to connect to a Database, [click here](https://azure.microsoft.com/en-us/documentation/articles/sql-database-connect-query-ssms/). + - Click the **Options >>** button and select the **Always Encrypted** tab. Make sure **Enable Always Encrypted** is not selected. + ![SSMS](img/ssms-ae-disabled.png) + - Click **Connect**. +1. In SSMS, open and execute **tsql-scripts/ListAllPatients.sql**. The results of this query include sensitive information about patients: social security numbers, names, dates of birth, etc. +1. In SSMS, configure an extended event session, you will use to monitor Transact-SQL queries the demo application sends to the database. + - Open and execute **tsql-scripts/CreateXESession.sql**. This creates an extended event session, + - In Object Explorer, locate the newly created **ClinicDemo** extended event session - under your server, go to **Management/Extended Events/Sessions**. + - Righ-click the **ClinicDemo** session and select **Watch Live Data**. This will open the **ClinicDemo Live Data** window. + ![Contoso Clinic Application](img/xe-session-watch-live-data.png) +1. Run the demo application + + In Visual Studio, start the app (**F5**). This will open the Contoso Clinic application in the default browser. + + Select the **Patients** tab in the application. + + Enter a part of a patient's name and the maximum patient age. You should see the patients that meet your search criteria. + ![Contoso Clinic Application](img/list-of-patients.png) +1. In SSMS, inspect the queries the demo application sends to the database. + + Select the **ClinicDemo Live Data** window, which should contain a table with some events your demo application triggered. + + If the table does not contain the **statement** column, right click on the header of the table and select **Choose Columns...**. Move **statement** to **Selected columns** and click **OK**. +![XEventSessionColumns](img/xevent-session-columns.png) + + Back in the **ClinicDemo Live Data** window, double click on the statement column in the last row of the table to see the last query the application sent to the database. Inspect the query statement. Note the **WHERE** clause of the query contains the **LIKE** predicate on some string columns and a comparison (**>=**) on the **BirthDate** column. + ![XEventSessionColumns](img/xevent-before-encryption.png) + + Click **OK** to close the statement window. + +## Demo Part 2 - Encrypt columns in place +1. Connect to your database using SSMS with Always Encrypted enabled in the database connection. + - Open a new instance of SSMS. (Keep the instance from the previous part of the demo open.) + - In the **Connect to Server** dialog, enter your server name and authentication parameters. + - Click the **Options >>** button and select the **Always Encrypted** tab. Make sure **Enable Always Encrypted** is selected. Enter the URL of your enclave attestation service, you have configured when setting up your demo environment. + ![SSMSAEEnabled](img/ssms-ae-enabled.png) + - Click **Connect**. +1. Provision a column master key in SSMS. + + In Object Explorer, expand your database and navigate to **Security/ Always Encrypted Keys/Column Master Keys**. + + Right-click on the **Column Master Keys** folder and select **New Column Master Key…**. + ![NewCMK](img/new-cmk.png) + + Enter a column master key name: **CMK1**. + + Select **Windows Certificate Store - Current User**. + + Make sure **Allow enclave computations** is selected. + ![NewCMK](img/new-cmk-dialog.png) + + Click **Generate Certificate** to create a new certificate to be used as a column master key. + + Click **OK**. +1. Provision a column encryption key. + + In Object Explorer, expand your database and navigate to **Security/ Always Encrypted Keys/Column Encryption Keys**. + + Right-click on the **Column Encryption Keys** folder and select **New Column Encryption Key…**. + + Enter a column encryption key name: **CEK1**. + + Select **CMK1** as the column master key to protect your new column encryption key. + + Click **OK**. +1. Encrypt a few columns in-place using Transact-SQL. + + In SSMS, open and review **tsql-scripts/EncryptColumns.sql**. Note the **ALTER TABLE ALTER COLUMN** statements that encrypt three columns: **SSN**, **LastName**, and **BirthDate**. The statements also change the sort order of both string columns to **BIN2**, which is required to support rich queries on those columns. + + Execute the script. +1. Check if the columns are encrypted. + + Switch to the other instance of SSMS (from the previous part of the demo) that uses a database connection with Always Encrypted disabled. + + Rerun the query from **tsql-scripts/ListAllPatients.sql**. Note that the data the **SSN**, **LastName**, **BirthDate** columns are now encrypted. + ![NewCMK](img/encrypted-results.png) +1. Test the Contoso Clinic web application. + + In your web browser, refresh the **Patients** page in the Contoso Clinic application. Notice the application shows plaintext data. This is because Always Encrypted has been already configured in the database connection for the application in the **web.config** file. + + Enter a part of a patient's name and the maximum patient age. You should see the patients that meet your search criteria. + + In SSMS, click on the **ClinicDemo Live Data** windows/tab, capturing extending events. + + Double click on the statement column in the last row of the table to see the last query the application sent to the database. Note the query statement has not changed, but SQL Server now receives encrypted query parameters. + ![XEventSessionColumnsAfterEncryption](img/xevent-after-encryption.png) + + Click **OK** to close the statement window. + +## Demo Part 3 - run rich queries from SSMS +1. Enable Parameterization for Always Encrypted the SSMS instance that uses a database connection with Always Encrypted enabled. + + In the main menu, select **Tools** and then select **Options** + + In the left pane of the **Options** window, navigate to **Query Execution/SQL Server/Advanced**. Scroll down in the right pane and make sure **Enabled Parameterization for Always Encrypted** is enabled. + ![NewCMK](img/parameterization.png) + + Click **OK**. +1. Open, review (change, if you want) and execute the query in **tsql-scripts/QueryColumns.sql**. The query should return the rows in the **Patients** table meeting the specified search criteria. + +## Demo Part 4 - Re-encrypt and decrypt columns in-place +1. Re-encrypt your columns to rotate/change the column encryption key. + + In the SSMS instance that uses a database connection with Always Encrypted enabled, use Object Explorer to expand your database and navigate to **Security/ Always Encrypted Keys/Column Encryption Keys**. + + Right-click on the **Column Encryption Keys** folder and select **New Column Encryption Key…**. + + Enter a column encryption key name: **CEK2**. + + Select **CMK1** as the column master key to protect your new column encryption key. + + Click **OK** to provision a new column encryption key. + + Open and review **tsql-scripts/RotateKeys.sql**. Note that the only difference between this script and **tsql-scripts/EncryptColumns.sql** is the column encryption key specified for the three columns (this script uses **CEK2**). When you execute the script, the columns are re-encrypted using the new column encryption key. + + Refresh the demo app in the browser. The app should continue to work. +1. Decrypt your columns (convert them back to plaintext). + + Open, review and execute **tsql-scripts/DecryptColumns.sql**. This script decrypts the encrypted columns. It also re-sets the original collation of the columns. + +## Resetting your demo environment +1. Open and execute **tsql-scripts/DecryptColumns.sql**. +1. Open and execute **tsql-scripts/DropKeys.sql**. +1. Close both SSMS windows. \ No newline at end of file diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/img/dot-net-framework.png b/samples/features/security/always-encrypted-with-secure-enclaves/img/dot-net-framework.png new file mode 100644 index 0000000000000000000000000000000000000000..e6515725549c324f4c325df099d7735b8fea2207 GIT binary patch literal 10363 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 literal 0 HcmV?d00001 diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/img/encrypted-results.png b/samples/features/security/always-encrypted-with-secure-enclaves/img/encrypted-results.png new file mode 100644 index 0000000000000000000000000000000000000000..5d8e948529eaf5053329493916f784bb364d08c4 GIT binary patch literal 24961 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 KKCO9d6Y?J;VTtDe literal 0 HcmV?d00001 diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/img/import-bacpac.png b/samples/features/security/always-encrypted-with-secure-enclaves/img/import-bacpac.png new file mode 100644 index 0000000000000000000000000000000000000000..66faf90aeeac30d697b8e9a3f1bfe54b6b66c0b4 GIT binary patch literal 35556 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 literal 0 HcmV?d00001 diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/img/list-of-patients.png b/samples/features/security/always-encrypted-with-secure-enclaves/img/list-of-patients.png new file mode 100644 index 0000000000000000000000000000000000000000..1d7df9b036f20ffae29e699e85a169c8f31a1bb9 GIT binary patch literal 27708 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 W?XXce7M%D+rmJP3S$5qa@;?A!4|~}F literal 0 HcmV?d00001 diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/img/new-cmk-dialog.png b/samples/features/security/always-encrypted-with-secure-enclaves/img/new-cmk-dialog.png new file mode 100644 index 0000000000000000000000000000000000000000..81d4ee8b2d8d082f98aeeacc85e212991e5c942c GIT binary patch literal 28199 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 literal 0 HcmV?d00001 diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/img/parameterization.png b/samples/features/security/always-encrypted-with-secure-enclaves/img/parameterization.png new file mode 100644 index 0000000000000000000000000000000000000000..0f3d4881f4a2e1646492dcd2e0bbc0853eef19ef GIT binary patch literal 36933 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 z�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 literal 0 HcmV?d00001 diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/img/ssms-ae-enabled.png b/samples/features/security/always-encrypted-with-secure-enclaves/img/ssms-ae-enabled.png new file mode 100644 index 0000000000000000000000000000000000000000..542714b05faa9526503736f859be639421dfefc8 GIT binary patch literal 20839 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 literal 0 HcmV?d00001 diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/img/xe-session-watch-live-data.png b/samples/features/security/always-encrypted-with-secure-enclaves/img/xe-session-watch-live-data.png new file mode 100644 index 0000000000000000000000000000000000000000..bd2d8d3428828f8893d550076d0dc969bef0f7c9 GIT binary patch literal 19881 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 Ef>7IPwg3PC literal 0 HcmV?d00001 diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/img/xevent-after-encryption.png b/samples/features/security/always-encrypted-with-secure-enclaves/img/xevent-after-encryption.png new file mode 100644 index 0000000000000000000000000000000000000000..2612188e2d202d62af46335b6eb05624f89c5208 GIT binary patch literal 55111 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%0D3($)&dD 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 KKbLh*2~7Yd!z&>G literal 0 HcmV?d00001 diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/img/xevent-before-encryption.png b/samples/features/security/always-encrypted-with-secure-enclaves/img/xevent-before-encryption.png new file mode 100644 index 0000000000000000000000000000000000000000..629ba611f42073fcf3ea0a48b352212618b26bac GIT binary patch literal 42496 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 literal 0 HcmV?d00001 diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/img/xevent-session-columns.png b/samples/features/security/always-encrypted-with-secure-enclaves/img/xevent-session-columns.png new file mode 100644 index 0000000000000000000000000000000000000000..e9127c387453002292c6af8349cd8574dab78c12 GIT binary patch literal 13350 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 literal 0 HcmV?d00001 diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/setup/Clinic.bacpac b/samples/features/security/always-encrypted-with-secure-enclaves/setup/Clinic.bacpac new file mode 100644 index 0000000000000000000000000000000000000000..7e13a20119178a1eedc2b4527b1f9888bd5f3767 GIT binary patch literal 36253 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 literal 0 HcmV?d00001 diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic.sln b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic.sln new file mode 100644 index 00000000..bb927e91 --- /dev/null +++ b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.28010.2036 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ContosoClinic", "ContosoClinic\ContosoClinic.csproj", "{CD00D85A-BCAC-4784-AAEE-F8A04F671168}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {CD00D85A-BCAC-4784-AAEE-F8A04F671168}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CD00D85A-BCAC-4784-AAEE-F8A04F671168}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CD00D85A-BCAC-4784-AAEE-F8A04F671168}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CD00D85A-BCAC-4784-AAEE-F8A04F671168}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {1426E8BB-D281-42C3-8732-F25D28B3F7B0} + EndGlobalSection +EndGlobal diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/App_Start/BundleConfig.cs b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/App_Start/BundleConfig.cs new file mode 100644 index 00000000..40ef8394 --- /dev/null +++ b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/App_Start/BundleConfig.cs @@ -0,0 +1,31 @@ +using System.Web; +using System.Web.Optimization; + +namespace ContosoClinic +{ + public class BundleConfig + { + // For more information on bundling, visit http://go.microsoft.com/fwlink/?LinkId=301862 + public static void RegisterBundles(BundleCollection bundles) + { + bundles.Add(new ScriptBundle("~/bundles/jquery").Include( + "~/Scripts/jquery-{version}.js")); + + bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include( + "~/Scripts/jquery.validate*")); + + // Use the development version of Modernizr to develop with and learn from. Then, when you're + // ready for production, use the build tool at http://modernizr.com to pick only the tests you need. + bundles.Add(new ScriptBundle("~/bundles/modernizr").Include( + "~/Scripts/modernizr-*")); + + bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include( + "~/Scripts/bootstrap.js", + "~/Scripts/respond.js")); + + bundles.Add(new StyleBundle("~/Content/css").Include( + "~/Content/bootstrap.css", + "~/Content/site.css")); + } + } +} diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/App_Start/FilterConfig.cs b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/App_Start/FilterConfig.cs new file mode 100644 index 00000000..76faff71 --- /dev/null +++ b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/App_Start/FilterConfig.cs @@ -0,0 +1,13 @@ +using System.Web; +using System.Web.Mvc; + +namespace ContosoClinic +{ + public class FilterConfig + { + public static void RegisterGlobalFilters(GlobalFilterCollection filters) + { + filters.Add(new HandleErrorAttribute()); + } + } +} diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/App_Start/IdentityConfig.cs b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/App_Start/IdentityConfig.cs new file mode 100644 index 00000000..bf0b2dea --- /dev/null +++ b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/App_Start/IdentityConfig.cs @@ -0,0 +1,109 @@ +using System; +using System.Collections.Generic; +using System.Data.Entity; +using System.Linq; +using System.Security.Claims; +using System.Threading.Tasks; +using System.Web; +using Microsoft.AspNet.Identity; +using Microsoft.AspNet.Identity.EntityFramework; +using Microsoft.AspNet.Identity.Owin; +using Microsoft.Owin; +using Microsoft.Owin.Security; +using ContosoClinic.Models; + +namespace ContosoClinic +{ + public class EmailService : IIdentityMessageService + { + public Task SendAsync(IdentityMessage message) + { + // Plug in your email service here to send an email. + return Task.FromResult(0); + } + } + + public class SmsService : IIdentityMessageService + { + public Task SendAsync(IdentityMessage message) + { + // Plug in your SMS service here to send a text message. + return Task.FromResult(0); + } + } + + // Configure the application user manager used in this application. UserManager is defined in ASP.NET Identity and is used by the application. + public class ApplicationUserManager : UserManager + { + public ApplicationUserManager(IUserStore store) + : base(store) + { + } + + public static ApplicationUserManager Create(IdentityFactoryOptions options, IOwinContext context) + { + var manager = new ApplicationUserManager(new UserStore(context.Get())); + // Configure validation logic for usernames + manager.UserValidator = new UserValidator(manager) + { + AllowOnlyAlphanumericUserNames = false, + RequireUniqueEmail = true + }; + + // Configure validation logic for passwords + manager.PasswordValidator = new PasswordValidator + { + RequiredLength = 6, + RequireNonLetterOrDigit = true, + RequireDigit = true, + RequireLowercase = true, + RequireUppercase = true, + }; + + // Configure user lockout defaults + manager.UserLockoutEnabledByDefault = true; + manager.DefaultAccountLockoutTimeSpan = TimeSpan.FromMinutes(5); + manager.MaxFailedAccessAttemptsBeforeLockout = 5; + + // Register two factor authentication providers. This application uses Phone and Emails as a step of receiving a code for verifying the user + // You can write your own provider and plug it in here. + manager.RegisterTwoFactorProvider("Phone Code", new PhoneNumberTokenProvider + { + MessageFormat = "Your security code is {0}" + }); + manager.RegisterTwoFactorProvider("Email Code", new EmailTokenProvider + { + Subject = "Security Code", + BodyFormat = "Your security code is {0}" + }); + manager.EmailService = new EmailService(); + manager.SmsService = new SmsService(); + var dataProtectionProvider = options.DataProtectionProvider; + if (dataProtectionProvider != null) + { + manager.UserTokenProvider = + new DataProtectorTokenProvider(dataProtectionProvider.Create("ASP.NET Identity")); + } + return manager; + } + } + + // Configure the application sign-in manager which is used in this application. + public class ApplicationSignInManager : SignInManager + { + public ApplicationSignInManager(ApplicationUserManager userManager, IAuthenticationManager authenticationManager) + : base(userManager, authenticationManager) + { + } + + public override Task CreateUserIdentityAsync(ApplicationUser user) + { + return user.GenerateUserIdentityAsync((ApplicationUserManager)UserManager); + } + + public static ApplicationSignInManager Create(IdentityFactoryOptions options, IOwinContext context) + { + return new ApplicationSignInManager(context.GetUserManager(), context.Authentication); + } + } +} diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/App_Start/RouteConfig.cs b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/App_Start/RouteConfig.cs new file mode 100644 index 00000000..8f253bf4 --- /dev/null +++ b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/App_Start/RouteConfig.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.Mvc; +using System.Web.Routing; + +namespace ContosoClinic +{ + public class RouteConfig + { + public static void RegisterRoutes(RouteCollection routes) + { + routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); + + routes.MapRoute( + name: "Default", + url: "{controller}/{action}/{id}", + defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } + ); + } + } +} diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/App_Start/Startup.Auth.cs b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/App_Start/Startup.Auth.cs new file mode 100644 index 00000000..70c2512a --- /dev/null +++ b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/App_Start/Startup.Auth.cs @@ -0,0 +1,68 @@ +using System; +using Microsoft.AspNet.Identity; +using Microsoft.AspNet.Identity.Owin; +using Microsoft.Owin; +using Microsoft.Owin.Security.Cookies; +using Microsoft.Owin.Security.Google; +using Owin; +using ContosoClinic.Models; + +namespace ContosoClinic +{ + public partial class Startup + { + // For more information on configuring authentication, please visit http://go.microsoft.com/fwlink/?LinkId=301864 + public void ConfigureAuth(IAppBuilder app) + { + // Configure the db context, user manager and signin manager to use a single instance per request + app.CreatePerOwinContext(ApplicationDbContext.Create); + app.CreatePerOwinContext(ApplicationUserManager.Create); + app.CreatePerOwinContext(ApplicationSignInManager.Create); + + // Enable the application to use a cookie to store information for the signed in user + // and to use a cookie to temporarily store information about a user logging in with a third party login provider + // Configure the sign in cookie + app.UseCookieAuthentication(new CookieAuthenticationOptions + { + AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, + LoginPath = new PathString("/Account/Login"), + Provider = new CookieAuthenticationProvider + { + // Enables the application to validate the security stamp when the user logs in. + // This is a security feature which is used when you change a password or add an external login to your account. + OnValidateIdentity = SecurityStampValidator.OnValidateIdentity( + validateInterval: TimeSpan.FromMinutes(30), + regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)) + } + }); + app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie); + + // Enables the application to temporarily store user information when they are verifying the second factor in the two-factor authentication process. + app.UseTwoFactorSignInCookie(DefaultAuthenticationTypes.TwoFactorCookie, TimeSpan.FromMinutes(5)); + + // Enables the application to remember the second login verification factor such as phone or email. + // Once you check this option, your second step of verification during the login process will be remembered on the device where you logged in from. + // This is similar to the RememberMe option when you log in. + app.UseTwoFactorRememberBrowserCookie(DefaultAuthenticationTypes.TwoFactorRememberBrowserCookie); + + // Uncomment the following lines to enable logging in with third party login providers + //app.UseMicrosoftAccountAuthentication( + // clientId: "", + // clientSecret: ""); + + //app.UseTwitterAuthentication( + // consumerKey: "", + // consumerSecret: ""); + + //app.UseFacebookAuthentication( + // appId: "", + // appSecret: ""); + + //app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions() + //{ + // ClientId = "", + // ClientSecret = "" + //}); + } + } +} \ No newline at end of file diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Content/Site.css b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Content/Site.css new file mode 100644 index 00000000..6ea5d8f6 --- /dev/null +++ b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Content/Site.css @@ -0,0 +1,24 @@ +body { + padding-top: 50px; + padding-bottom: 20px; +} + +/* Set padding to keep content from hitting the edges */ +.body-content { + padding-left: 15px; + padding-right: 15px; +} + +/* Override the default bootstrap behavior where horizontal description lists + will truncate terms that are too long to fit in the left column +*/ +.dl-horizontal dt { + white-space: normal; +} + +/* Set width on the form input elements since they're 100% wide by default */ +input, +select, +textarea { + max-width: 280px; +} diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Content/bootstrap-theme.css b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Content/bootstrap-theme.css new file mode 100644 index 00000000..ad117356 --- /dev/null +++ b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Content/bootstrap-theme.css @@ -0,0 +1,384 @@ +.btn-default, +.btn-primary, +.btn-success, +.btn-info, +.btn-warning, +.btn-danger { + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 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, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} + +.btn:active, +.btn.active { + background-image: none; +} + +.btn-default { + text-shadow: 0 1px 0 #fff; + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(top, #ffffff, 0%, #e6e6e6, 100%); + background-image: -moz-linear-gradient(top, #ffffff 0%, #e6e6e6 100%); + background-image: linear-gradient(to bottom, #ffffff 0%, #e6e6e6 100%); + background-repeat: repeat-x; + border-color: #e0e0e0; + border-color: #ccc; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0); +} + +.btn-default:active, +.btn-default.active { + background-color: #e6e6e6; + border-color: #e0e0e0; +} + +.btn-primary { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#428bca), to(#3071a9)); + background-image: -webkit-linear-gradient(top, #428bca, 0%, #3071a9, 100%); + background-image: -moz-linear-gradient(top, #428bca 0%, #3071a9 100%); + background-image: linear-gradient(to bottom, #428bca 0%, #3071a9 100%); + background-repeat: repeat-x; + border-color: #2d6ca2; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0); +} + +.btn-primary:active, +.btn-primary.active { + background-color: #3071a9; + border-color: #2d6ca2; +} + +.btn-success { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#5cb85c), to(#449d44)); + background-image: -webkit-linear-gradient(top, #5cb85c, 0%, #449d44, 100%); + background-image: -moz-linear-gradient(top, #5cb85c 0%, #449d44 100%); + background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%); + background-repeat: repeat-x; + border-color: #419641; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0); +} + +.btn-success:active, +.btn-success.active { + background-color: #449d44; + border-color: #419641; +} + +.btn-warning { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#f0ad4e), to(#ec971f)); + background-image: -webkit-linear-gradient(top, #f0ad4e, 0%, #ec971f, 100%); + background-image: -moz-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); + background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%); + background-repeat: repeat-x; + border-color: #eb9316; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0); +} + +.btn-warning:active, +.btn-warning.active { + background-color: #ec971f; + border-color: #eb9316; +} + +.btn-danger { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#d9534f), to(#c9302c)); + background-image: -webkit-linear-gradient(top, #d9534f, 0%, #c9302c, 100%); + background-image: -moz-linear-gradient(top, #d9534f 0%, #c9302c 100%); + background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%); + background-repeat: repeat-x; + border-color: #c12e2a; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0); +} + +.btn-danger:active, +.btn-danger.active { + background-color: #c9302c; + border-color: #c12e2a; +} + +.btn-info { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#5bc0de), to(#31b0d5)); + background-image: -webkit-linear-gradient(top, #5bc0de, 0%, #31b0d5, 100%); + background-image: -moz-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); + background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%); + background-repeat: repeat-x; + border-color: #2aabd2; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0); +} + +.btn-info:active, +.btn-info.active { + background-color: #31b0d5; + border-color: #2aabd2; +} + +.thumbnail, +.img-thumbnail { + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075); +} + +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus, +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + background-color: #357ebd; + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#428bca), to(#357ebd)); + background-image: -webkit-linear-gradient(top, #428bca, 0%, #357ebd, 100%); + background-image: -moz-linear-gradient(top, #428bca 0%, #357ebd 100%); + background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0); +} + +.navbar { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#ffffff), to(#f8f8f8)); + background-image: -webkit-linear-gradient(top, #ffffff, 0%, #f8f8f8, 100%); + background-image: -moz-linear-gradient(top, #ffffff 0%, #f8f8f8 100%); + background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%); + background-repeat: repeat-x; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075); +} + +.navbar .navbar-nav > .active > a { + background-color: #f8f8f8; +} + +.navbar-brand, +.navbar-nav > li > a { + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25); +} + +.navbar-inverse { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#3c3c3c), to(#222222)); + background-image: -webkit-linear-gradient(top, #3c3c3c, 0%, #222222, 100%); + background-image: -moz-linear-gradient(top, #3c3c3c 0%, #222222 100%); + background-image: linear-gradient(to bottom, #3c3c3c 0%, #222222 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0); +} + +.navbar-inverse .navbar-nav > .active > a { + background-color: #222222; +} + +.navbar-inverse .navbar-brand, +.navbar-inverse .navbar-nav > li > a { + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.navbar-static-top, +.navbar-fixed-top, +.navbar-fixed-bottom { + border-radius: 0; +} + +.alert { + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.alert-success { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#dff0d8), to(#c8e5bc)); + background-image: -webkit-linear-gradient(top, #dff0d8, 0%, #c8e5bc, 100%); + background-image: -moz-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); + background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%); + background-repeat: repeat-x; + border-color: #b2dba1; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0); +} + +.alert-info { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#d9edf7), to(#b9def0)); + background-image: -webkit-linear-gradient(top, #d9edf7, 0%, #b9def0, 100%); + background-image: -moz-linear-gradient(top, #d9edf7 0%, #b9def0 100%); + background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%); + background-repeat: repeat-x; + border-color: #9acfea; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0); +} + +.alert-warning { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#fcf8e3), to(#f8efc0)); + background-image: -webkit-linear-gradient(top, #fcf8e3, 0%, #f8efc0, 100%); + background-image: -moz-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); + background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%); + background-repeat: repeat-x; + border-color: #f5e79e; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0); +} + +.alert-danger { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#f2dede), to(#e7c3c3)); + background-image: -webkit-linear-gradient(top, #f2dede, 0%, #e7c3c3, 100%); + background-image: -moz-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); + background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%); + background-repeat: repeat-x; + border-color: #dca7a7; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0); +} + +.progress { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#ebebeb), to(#f5f5f5)); + background-image: -webkit-linear-gradient(top, #ebebeb, 0%, #f5f5f5, 100%); + background-image: -moz-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); + background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0); +} + +.progress-bar { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#428bca), to(#3071a9)); + background-image: -webkit-linear-gradient(top, #428bca, 0%, #3071a9, 100%); + background-image: -moz-linear-gradient(top, #428bca 0%, #3071a9 100%); + background-image: linear-gradient(to bottom, #428bca 0%, #3071a9 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0); +} + +.progress-bar-success { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#5cb85c), to(#449d44)); + background-image: -webkit-linear-gradient(top, #5cb85c, 0%, #449d44, 100%); + background-image: -moz-linear-gradient(top, #5cb85c 0%, #449d44 100%); + background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0); +} + +.progress-bar-info { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#5bc0de), to(#31b0d5)); + background-image: -webkit-linear-gradient(top, #5bc0de, 0%, #31b0d5, 100%); + background-image: -moz-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); + background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0); +} + +.progress-bar-warning { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#f0ad4e), to(#ec971f)); + background-image: -webkit-linear-gradient(top, #f0ad4e, 0%, #ec971f, 100%); + background-image: -moz-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); + background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0); +} + +.progress-bar-danger { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#d9534f), to(#c9302c)); + background-image: -webkit-linear-gradient(top, #d9534f, 0%, #c9302c, 100%); + background-image: -moz-linear-gradient(top, #d9534f 0%, #c9302c 100%); + background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0); +} + +.list-group { + border-radius: 4px; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075); +} + +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + text-shadow: 0 -1px 0 #3071a9; + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#428bca), to(#3278b3)); + background-image: -webkit-linear-gradient(top, #428bca, 0%, #3278b3, 100%); + background-image: -moz-linear-gradient(top, #428bca 0%, #3278b3 100%); + background-image: linear-gradient(to bottom, #428bca 0%, #3278b3 100%); + background-repeat: repeat-x; + border-color: #3278b3; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0); +} + +.panel { + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.panel-default > .panel-heading { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#f5f5f5), to(#e8e8e8)); + background-image: -webkit-linear-gradient(top, #f5f5f5, 0%, #e8e8e8, 100%); + background-image: -moz-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); + background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); +} + +.panel-primary > .panel-heading { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#428bca), to(#357ebd)); + background-image: -webkit-linear-gradient(top, #428bca, 0%, #357ebd, 100%); + background-image: -moz-linear-gradient(top, #428bca 0%, #357ebd 100%); + background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0); +} + +.panel-success > .panel-heading { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#dff0d8), to(#d0e9c6)); + background-image: -webkit-linear-gradient(top, #dff0d8, 0%, #d0e9c6, 100%); + background-image: -moz-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); + background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0); +} + +.panel-info > .panel-heading { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#d9edf7), to(#c4e3f3)); + background-image: -webkit-linear-gradient(top, #d9edf7, 0%, #c4e3f3, 100%); + background-image: -moz-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); + background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0); +} + +.panel-warning > .panel-heading { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#fcf8e3), to(#faf2cc)); + background-image: -webkit-linear-gradient(top, #fcf8e3, 0%, #faf2cc, 100%); + background-image: -moz-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); + background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0); +} + +.panel-danger > .panel-heading { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#f2dede), to(#ebcccc)); + background-image: -webkit-linear-gradient(top, #f2dede, 0%, #ebcccc, 100%); + background-image: -moz-linear-gradient(top, #f2dede 0%, #ebcccc 100%); + background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0); +} + +.well { + background-image: -webkit-gradient(linear, left 0%, left 100%, from(#e8e8e8), to(#f5f5f5)); + background-image: -webkit-linear-gradient(top, #e8e8e8, 0%, #f5f5f5, 100%); + background-image: -moz-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); + background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%); + background-repeat: repeat-x; + border-color: #dcdcdc; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0); + -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1); +} \ No newline at end of file diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Content/bootstrap-theme.min.css b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Content/bootstrap-theme.min.css new file mode 100644 index 00000000..cad36b4e --- /dev/null +++ b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Content/bootstrap-theme.min.css @@ -0,0 +1 @@ +.btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger{text-shadow:0 -1px 0 rgba(0,0,0,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,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,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn:active,.btn.active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left 0,left 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,0%,#e6e6e6,100%);background-image:-moz-linear-gradient(top,#fff 0,#e6e6e6 100%);background-image:linear-gradient(to bottom,#fff 0,#e6e6e6 100%);background-repeat:repeat-x;border-color:#e0e0e0;border-color:#ccc;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0)}.btn-default:active,.btn-default.active{background-color:#e6e6e6;border-color:#e0e0e0}.btn-primary{background-image:-webkit-gradient(linear,left 0,left 100%,from(#428bca),to(#3071a9));background-image:-webkit-linear-gradient(top,#428bca,0%,#3071a9,100%);background-image:-moz-linear-gradient(top,#428bca 0,#3071a9 100%);background-image:linear-gradient(to bottom,#428bca 0,#3071a9 100%);background-repeat:repeat-x;border-color:#2d6ca2;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff3071a9',GradientType=0)}.btn-primary:active,.btn-primary.active{background-color:#3071a9;border-color:#2d6ca2}.btn-success{background-image:-webkit-gradient(linear,left 0,left 100%,from(#5cb85c),to(#449d44));background-image:-webkit-linear-gradient(top,#5cb85c,0%,#449d44,100%);background-image:-moz-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);background-repeat:repeat-x;border-color:#419641;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c',endColorstr='#ff449d44',GradientType=0)}.btn-success:active,.btn-success.active{background-color:#449d44;border-color:#419641}.btn-warning{background-image:-webkit-gradient(linear,left 0,left 100%,from(#f0ad4e),to(#ec971f));background-image:-webkit-linear-gradient(top,#f0ad4e,0%,#ec971f,100%);background-image:-moz-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);background-repeat:repeat-x;border-color:#eb9316;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e',endColorstr='#ffec971f',GradientType=0)}.btn-warning:active,.btn-warning.active{background-color:#ec971f;border-color:#eb9316}.btn-danger{background-image:-webkit-gradient(linear,left 0,left 100%,from(#d9534f),to(#c9302c));background-image:-webkit-linear-gradient(top,#d9534f,0%,#c9302c,100%);background-image:-moz-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);background-repeat:repeat-x;border-color:#c12e2a;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f',endColorstr='#ffc9302c',GradientType=0)}.btn-danger:active,.btn-danger.active{background-color:#c9302c;border-color:#c12e2a}.btn-info{background-image:-webkit-gradient(linear,left 0,left 100%,from(#5bc0de),to(#31b0d5));background-image:-webkit-linear-gradient(top,#5bc0de,0%,#31b0d5,100%);background-image:-moz-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);background-repeat:repeat-x;border-color:#2aabd2;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff31b0d5',GradientType=0)}.btn-info:active,.btn-info.active{background-color:#31b0d5;border-color:#2aabd2}.thumbnail,.img-thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus,.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{background-color:#357ebd;background-image:-webkit-gradient(linear,left 0,left 100%,from(#428bca),to(#357ebd));background-image:-webkit-linear-gradient(top,#428bca,0%,#357ebd,100%);background-image:-moz-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff357ebd',GradientType=0)}.navbar{background-image:-webkit-gradient(linear,left 0,left 100%,from(#fff),to(#f8f8f8));background-image:-webkit-linear-gradient(top,#fff,0%,#f8f8f8,100%);background-image:-moz-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);background-repeat:repeat-x;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#fff8f8f8',GradientType=0);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075)}.navbar .navbar-nav>.active>a{background-color:#f8f8f8}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,0.25)}.navbar-inverse{background-image:-webkit-gradient(linear,left 0,left 100%,from(#3c3c3c),to(#222));background-image:-webkit-linear-gradient(top,#3c3c3c,0%,#222,100%);background-image:-moz-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c',endColorstr='#ff222222',GradientType=0)}.navbar-inverse .navbar-nav>.active>a{background-color:#222}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-static-top,.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}.alert{text-shadow:0 1px 0 rgba(255,255,255,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05)}.alert-success{background-image:-webkit-gradient(linear,left 0,left 100%,from(#dff0d8),to(#c8e5bc));background-image:-webkit-linear-gradient(top,#dff0d8,0%,#c8e5bc,100%);background-image:-moz-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);background-repeat:repeat-x;border-color:#b2dba1;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8',endColorstr='#ffc8e5bc',GradientType=0)}.alert-info{background-image:-webkit-gradient(linear,left 0,left 100%,from(#d9edf7),to(#b9def0));background-image:-webkit-linear-gradient(top,#d9edf7,0%,#b9def0,100%);background-image:-moz-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);background-repeat:repeat-x;border-color:#9acfea;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7',endColorstr='#ffb9def0',GradientType=0)}.alert-warning{background-image:-webkit-gradient(linear,left 0,left 100%,from(#fcf8e3),to(#f8efc0));background-image:-webkit-linear-gradient(top,#fcf8e3,0%,#f8efc0,100%);background-image:-moz-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);background-repeat:repeat-x;border-color:#f5e79e;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3',endColorstr='#fff8efc0',GradientType=0)}.alert-danger{background-image:-webkit-gradient(linear,left 0,left 100%,from(#f2dede),to(#e7c3c3));background-image:-webkit-linear-gradient(top,#f2dede,0%,#e7c3c3,100%);background-image:-moz-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);background-repeat:repeat-x;border-color:#dca7a7;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede',endColorstr='#ffe7c3c3',GradientType=0)}.progress{background-image:-webkit-gradient(linear,left 0,left 100%,from(#ebebeb),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#ebebeb,0%,#f5f5f5,100%);background-image:-moz-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb',endColorstr='#fff5f5f5',GradientType=0)}.progress-bar{background-image:-webkit-gradient(linear,left 0,left 100%,from(#428bca),to(#3071a9));background-image:-webkit-linear-gradient(top,#428bca,0%,#3071a9,100%);background-image:-moz-linear-gradient(top,#428bca 0,#3071a9 100%);background-image:linear-gradient(to bottom,#428bca 0,#3071a9 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff3071a9',GradientType=0)}.progress-bar-success{background-image:-webkit-gradient(linear,left 0,left 100%,from(#5cb85c),to(#449d44));background-image:-webkit-linear-gradient(top,#5cb85c,0%,#449d44,100%);background-image:-moz-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c',endColorstr='#ff449d44',GradientType=0)}.progress-bar-info{background-image:-webkit-gradient(linear,left 0,left 100%,from(#5bc0de),to(#31b0d5));background-image:-webkit-linear-gradient(top,#5bc0de,0%,#31b0d5,100%);background-image:-moz-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff31b0d5',GradientType=0)}.progress-bar-warning{background-image:-webkit-gradient(linear,left 0,left 100%,from(#f0ad4e),to(#ec971f));background-image:-webkit-linear-gradient(top,#f0ad4e,0%,#ec971f,100%);background-image:-moz-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e',endColorstr='#ffec971f',GradientType=0)}.progress-bar-danger{background-image:-webkit-gradient(linear,left 0,left 100%,from(#d9534f),to(#c9302c));background-image:-webkit-linear-gradient(top,#d9534f,0%,#c9302c,100%);background-image:-moz-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f',endColorstr='#ffc9302c',GradientType=0)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{text-shadow:0 -1px 0 #3071a9;background-image:-webkit-gradient(linear,left 0,left 100%,from(#428bca),to(#3278b3));background-image:-webkit-linear-gradient(top,#428bca,0%,#3278b3,100%);background-image:-moz-linear-gradient(top,#428bca 0,#3278b3 100%);background-image:linear-gradient(to bottom,#428bca 0,#3278b3 100%);background-repeat:repeat-x;border-color:#3278b3;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff3278b3',GradientType=0)}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.panel-default>.panel-heading{background-image:-webkit-gradient(linear,left 0,left 100%,from(#f5f5f5),to(#e8e8e8));background-image:-webkit-linear-gradient(top,#f5f5f5,0%,#e8e8e8,100%);background-image:-moz-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#ffe8e8e8',GradientType=0)}.panel-primary>.panel-heading{background-image:-webkit-gradient(linear,left 0,left 100%,from(#428bca),to(#357ebd));background-image:-webkit-linear-gradient(top,#428bca,0%,#357ebd,100%);background-image:-moz-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff357ebd',GradientType=0)}.panel-success>.panel-heading{background-image:-webkit-gradient(linear,left 0,left 100%,from(#dff0d8),to(#d0e9c6));background-image:-webkit-linear-gradient(top,#dff0d8,0%,#d0e9c6,100%);background-image:-moz-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8',endColorstr='#ffd0e9c6',GradientType=0)}.panel-info>.panel-heading{background-image:-webkit-gradient(linear,left 0,left 100%,from(#d9edf7),to(#c4e3f3));background-image:-webkit-linear-gradient(top,#d9edf7,0%,#c4e3f3,100%);background-image:-moz-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7',endColorstr='#ffc4e3f3',GradientType=0)}.panel-warning>.panel-heading{background-image:-webkit-gradient(linear,left 0,left 100%,from(#fcf8e3),to(#faf2cc));background-image:-webkit-linear-gradient(top,#fcf8e3,0%,#faf2cc,100%);background-image:-moz-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3',endColorstr='#fffaf2cc',GradientType=0)}.panel-danger>.panel-heading{background-image:-webkit-gradient(linear,left 0,left 100%,from(#f2dede),to(#ebcccc));background-image:-webkit-linear-gradient(top,#f2dede,0%,#ebcccc,100%);background-image:-moz-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede',endColorstr='#ffebcccc',GradientType=0)}.well{background-image:-webkit-gradient(linear,left 0,left 100%,from(#e8e8e8),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#e8e8e8,0%,#f5f5f5,100%);background-image:-moz-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);background-repeat:repeat-x;border-color:#dcdcdc;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8',endColorstr='#fff5f5f5',GradientType=0);-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1)} \ No newline at end of file diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Content/bootstrap.css b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Content/bootstrap.css new file mode 100644 index 00000000..bbda4eed --- /dev/null +++ b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Content/bootstrap.css @@ -0,0 +1,6805 @@ +/*! + * Bootstrap v3.0.0 + * + * Copyright 2013 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world by @mdo and @fat. + */ + +/*! normalize.css v2.1.0 | MIT License | git.io/normalize */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +nav, +section, +summary { + display: block; +} + +audio, +canvas, +video { + display: inline-block; +} + +audio:not([controls]) { + display: none; + height: 0; +} + +[hidden] { + display: none; +} + +html { + font-family: sans-serif; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +body { + margin: 0; +} + +a:focus { + outline: thin dotted; +} + +a:active, +a:hover { + outline: 0; +} + +h1 { + margin: 0.67em 0; + font-size: 2em; +} + +abbr[title] { + border-bottom: 1px dotted; +} + +b, +strong { + font-weight: bold; +} + +dfn { + font-style: italic; +} + +hr { + height: 0; + -moz-box-sizing: content-box; + box-sizing: content-box; +} + +mark { + color: #000; + background: #ff0; +} + +code, +kbd, +pre, +samp { + font-family: monospace, serif; + font-size: 1em; +} + +pre { + white-space: pre-wrap; +} + +q { + quotes: "\201C" "\201D" "\2018" "\2019"; +} + +small { + font-size: 80%; +} + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +img { + border: 0; +} + +svg:not(:root) { + overflow: hidden; +} + +figure { + margin: 0; +} + +fieldset { + padding: 0.35em 0.625em 0.75em; + margin: 0 2px; + border: 1px solid #c0c0c0; +} + +legend { + padding: 0; + border: 0; +} + +button, +input, +select, +textarea { + margin: 0; + font-family: inherit; + font-size: 100%; +} + +button, +input { + line-height: normal; +} + +button, +select { + text-transform: none; +} + +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; + -webkit-appearance: button; +} + +button[disabled], +html input[disabled] { + cursor: default; +} + +input[type="checkbox"], +input[type="radio"] { + padding: 0; + box-sizing: border-box; +} + +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; +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} + +textarea { + overflow: auto; + vertical-align: top; +} + +table { + border-collapse: collapse; + border-spacing: 0; +} + +@media print { + * { + color: #000 !important; + text-shadow: none !important; + background: transparent !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + .ir a:after, + a[href^="javascript:"]:after, + a[href^="#"]: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; + } + @page { + margin: 2cm .5cm; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + .navbar { + display: none; + } + .table td, + .table th { + background-color: #fff !important; + } + .btn > .caret, + .dropup > .btn > .caret { + border-top-color: #000 !important; + } + .label { + border: 1px solid #000; + } + .table { + border-collapse: collapse !important; + } + .table-bordered th, + .table-bordered td { + border: 1px solid #ddd !important; + } +} + +*, +*:before, +*:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +html { + font-size: 62.5%; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +body { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.428571429; + color: #333333; + background-color: #ffffff; +} + +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +button, +input, +select[multiple], +textarea { + background-image: none; +} + +a { + color: #428bca; + text-decoration: none; +} + +a:hover, +a:focus { + color: #2a6496; + text-decoration: underline; +} + +a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +img { + vertical-align: middle; +} + +.img-responsive { + display: block; + height: auto; + max-width: 100%; +} + +.img-rounded { + border-radius: 6px; +} + +.img-thumbnail { + display: inline-block; + height: auto; + max-width: 100%; + padding: 4px; + line-height: 1.428571429; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 4px; + -webkit-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} + +.img-circle { + border-radius: 50%; +} + +hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eeeeee; +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0 0 0 0); + border: 0; +} + +p { + margin: 0 0 10px; +} + +.lead { + margin-bottom: 20px; + font-size: 16.099999999999998px; + font-weight: 200; + line-height: 1.4; +} + +@media (min-width: 768px) { + .lead { + font-size: 21px; + } +} + +small { + font-size: 85%; +} + +cite { + font-style: normal; +} + +.text-muted { + color: #999999; +} + +.text-primary { + color: #428bca; +} + +.text-warning { + color: #c09853; +} + +.text-danger { + color: #b94a48; +} + +.text-success { + color: #468847; +} + +.text-info { + color: #3a87ad; +} + +.text-left { + text-align: left; +} + +.text-right { + text-align: right; +} + +.text-center { + text-align: center; +} + +h1, +h2, +h3, +h4, +h5, +h6, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight: 500; + line-height: 1.1; +} + +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: #999999; +} + +h1, +h2, +h3 { + margin-top: 20px; + margin-bottom: 10px; +} + +h4, +h5, +h6 { + margin-top: 10px; + margin-bottom: 10px; +} + +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; +} + +h1 small, +.h1 small { + font-size: 24px; +} + +h2 small, +.h2 small { + font-size: 18px; +} + +h3 small, +.h3 small, +h4 small, +.h4 small { + font-size: 14px; +} + +.page-header { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #eeeeee; +} + +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; + list-style: none; +} + +.list-inline > li { + display: inline-block; + padding-right: 5px; + padding-left: 5px; +} + +dl { + margin-bottom: 20px; +} + +dt, +dd { + line-height: 1.428571429; +} + +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; + } + .dl-horizontal dd:before, + .dl-horizontal dd:after { + display: table; + content: " "; + } + .dl-horizontal dd:after { + clear: both; + } + .dl-horizontal dd:before, + .dl-horizontal dd:after { + display: table; + content: " "; + } + .dl-horizontal dd:after { + clear: both; + } +} + +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #999999; +} + +abbr.initialism { + font-size: 90%; + text-transform: uppercase; +} + +blockquote { + padding: 10px 20px; + margin: 0 0 20px; + border-left: 5px solid #eeeeee; +} + +blockquote p { + font-size: 17.5px; + font-weight: 300; + line-height: 1.25; +} + +blockquote p:last-child { + margin-bottom: 0; +} + +blockquote small { + display: block; + line-height: 1.428571429; + color: #999999; +} + +blockquote small:before { + content: '\2014 \00A0'; +} + +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #eeeeee; + border-left: 0; +} + +blockquote.pull-right p, +blockquote.pull-right small { + text-align: right; +} + +blockquote.pull-right small:before { + content: ''; +} + +blockquote.pull-right small:after { + content: '\00A0 \2014'; +} + +q:before, +q:after, +blockquote:before, +blockquote:after { + content: ""; +} + +address { + display: block; + margin-bottom: 20px; + font-style: normal; + line-height: 1.428571429; +} + +code, +pre { + font-family: Monaco, Menlo, Consolas, "Courier New", monospace; +} + +code { + padding: 2px 4px; + font-size: 90%; + color: #c7254e; + white-space: nowrap; + background-color: #f9f2f4; + border-radius: 4px; +} + +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.428571429; + color: #333333; + word-break: break-all; + word-wrap: break-word; + background-color: #f5f5f5; + border: 1px solid #cccccc; + border-radius: 4px; +} + +pre.prettyprint { + margin-bottom: 20px; +} + +pre code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border: 0; +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} + +.container { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} + +.container:before, +.container:after { + display: table; + content: " "; +} + +.container:after { + clear: both; +} + +.container:before, +.container:after { + display: table; + content: " "; +} + +.container:after { + clear: both; +} + +.row { + margin-right: -15px; + margin-left: -15px; +} + +.row:before, +.row:after { + display: table; + content: " "; +} + +.row:after { + clear: both; +} + +.row:before, +.row:after { + display: table; + content: " "; +} + +.row:after { + clear: both; +} + +.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, +.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, +.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, +.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 { + 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 { + float: left; +} + +.col-xs-1 { + width: 8.333333333333332%; +} + +.col-xs-2 { + width: 16.666666666666664%; +} + +.col-xs-3 { + width: 25%; +} + +.col-xs-4 { + width: 33.33333333333333%; +} + +.col-xs-5 { + width: 41.66666666666667%; +} + +.col-xs-6 { + width: 50%; +} + +.col-xs-7 { + width: 58.333333333333336%; +} + +.col-xs-8 { + width: 66.66666666666666%; +} + +.col-xs-9 { + width: 75%; +} + +.col-xs-10 { + width: 83.33333333333334%; +} + +.col-xs-11 { + width: 91.66666666666666%; +} + +.col-xs-12 { + width: 100%; +} + +@media (min-width: 768px) { + .container { + max-width: 750px; + } + .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 { + float: left; + } + .col-sm-1 { + width: 8.333333333333332%; + } + .col-sm-2 { + width: 16.666666666666664%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-4 { + width: 33.33333333333333%; + } + .col-sm-5 { + width: 41.66666666666667%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-7 { + width: 58.333333333333336%; + } + .col-sm-8 { + width: 66.66666666666666%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-10 { + width: 83.33333333333334%; + } + .col-sm-11 { + width: 91.66666666666666%; + } + .col-sm-12 { + width: 100%; + } + .col-sm-push-1 { + left: 8.333333333333332%; + } + .col-sm-push-2 { + left: 16.666666666666664%; + } + .col-sm-push-3 { + left: 25%; + } + .col-sm-push-4 { + left: 33.33333333333333%; + } + .col-sm-push-5 { + left: 41.66666666666667%; + } + .col-sm-push-6 { + left: 50%; + } + .col-sm-push-7 { + left: 58.333333333333336%; + } + .col-sm-push-8 { + left: 66.66666666666666%; + } + .col-sm-push-9 { + left: 75%; + } + .col-sm-push-10 { + left: 83.33333333333334%; + } + .col-sm-push-11 { + left: 91.66666666666666%; + } + .col-sm-pull-1 { + right: 8.333333333333332%; + } + .col-sm-pull-2 { + right: 16.666666666666664%; + } + .col-sm-pull-3 { + right: 25%; + } + .col-sm-pull-4 { + right: 33.33333333333333%; + } + .col-sm-pull-5 { + right: 41.66666666666667%; + } + .col-sm-pull-6 { + right: 50%; + } + .col-sm-pull-7 { + right: 58.333333333333336%; + } + .col-sm-pull-8 { + right: 66.66666666666666%; + } + .col-sm-pull-9 { + right: 75%; + } + .col-sm-pull-10 { + right: 83.33333333333334%; + } + .col-sm-pull-11 { + right: 91.66666666666666%; + } + .col-sm-offset-1 { + margin-left: 8.333333333333332%; + } + .col-sm-offset-2 { + margin-left: 16.666666666666664%; + } + .col-sm-offset-3 { + margin-left: 25%; + } + .col-sm-offset-4 { + margin-left: 33.33333333333333%; + } + .col-sm-offset-5 { + margin-left: 41.66666666666667%; + } + .col-sm-offset-6 { + margin-left: 50%; + } + .col-sm-offset-7 { + margin-left: 58.333333333333336%; + } + .col-sm-offset-8 { + margin-left: 66.66666666666666%; + } + .col-sm-offset-9 { + margin-left: 75%; + } + .col-sm-offset-10 { + margin-left: 83.33333333333334%; + } + .col-sm-offset-11 { + margin-left: 91.66666666666666%; + } +} + +@media (min-width: 992px) { + .container { + max-width: 970px; + } + .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 { + float: left; + } + .col-md-1 { + width: 8.333333333333332%; + } + .col-md-2 { + width: 16.666666666666664%; + } + .col-md-3 { + width: 25%; + } + .col-md-4 { + width: 33.33333333333333%; + } + .col-md-5 { + width: 41.66666666666667%; + } + .col-md-6 { + width: 50%; + } + .col-md-7 { + width: 58.333333333333336%; + } + .col-md-8 { + width: 66.66666666666666%; + } + .col-md-9 { + width: 75%; + } + .col-md-10 { + width: 83.33333333333334%; + } + .col-md-11 { + width: 91.66666666666666%; + } + .col-md-12 { + width: 100%; + } + .col-md-push-0 { + left: auto; + } + .col-md-push-1 { + left: 8.333333333333332%; + } + .col-md-push-2 { + left: 16.666666666666664%; + } + .col-md-push-3 { + left: 25%; + } + .col-md-push-4 { + left: 33.33333333333333%; + } + .col-md-push-5 { + left: 41.66666666666667%; + } + .col-md-push-6 { + left: 50%; + } + .col-md-push-7 { + left: 58.333333333333336%; + } + .col-md-push-8 { + left: 66.66666666666666%; + } + .col-md-push-9 { + left: 75%; + } + .col-md-push-10 { + left: 83.33333333333334%; + } + .col-md-push-11 { + left: 91.66666666666666%; + } + .col-md-pull-0 { + right: auto; + } + .col-md-pull-1 { + right: 8.333333333333332%; + } + .col-md-pull-2 { + right: 16.666666666666664%; + } + .col-md-pull-3 { + right: 25%; + } + .col-md-pull-4 { + right: 33.33333333333333%; + } + .col-md-pull-5 { + right: 41.66666666666667%; + } + .col-md-pull-6 { + right: 50%; + } + .col-md-pull-7 { + right: 58.333333333333336%; + } + .col-md-pull-8 { + right: 66.66666666666666%; + } + .col-md-pull-9 { + right: 75%; + } + .col-md-pull-10 { + right: 83.33333333333334%; + } + .col-md-pull-11 { + right: 91.66666666666666%; + } + .col-md-offset-0 { + margin-left: 0; + } + .col-md-offset-1 { + margin-left: 8.333333333333332%; + } + .col-md-offset-2 { + margin-left: 16.666666666666664%; + } + .col-md-offset-3 { + margin-left: 25%; + } + .col-md-offset-4 { + margin-left: 33.33333333333333%; + } + .col-md-offset-5 { + margin-left: 41.66666666666667%; + } + .col-md-offset-6 { + margin-left: 50%; + } + .col-md-offset-7 { + margin-left: 58.333333333333336%; + } + .col-md-offset-8 { + margin-left: 66.66666666666666%; + } + .col-md-offset-9 { + margin-left: 75%; + } + .col-md-offset-10 { + margin-left: 83.33333333333334%; + } + .col-md-offset-11 { + margin-left: 91.66666666666666%; + } +} + +@media (min-width: 1200px) { + .container { + max-width: 1170px; + } + .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 { + float: left; + } + .col-lg-1 { + width: 8.333333333333332%; + } + .col-lg-2 { + width: 16.666666666666664%; + } + .col-lg-3 { + width: 25%; + } + .col-lg-4 { + width: 33.33333333333333%; + } + .col-lg-5 { + width: 41.66666666666667%; + } + .col-lg-6 { + width: 50%; + } + .col-lg-7 { + width: 58.333333333333336%; + } + .col-lg-8 { + width: 66.66666666666666%; + } + .col-lg-9 { + width: 75%; + } + .col-lg-10 { + width: 83.33333333333334%; + } + .col-lg-11 { + width: 91.66666666666666%; + } + .col-lg-12 { + width: 100%; + } + .col-lg-push-0 { + left: auto; + } + .col-lg-push-1 { + left: 8.333333333333332%; + } + .col-lg-push-2 { + left: 16.666666666666664%; + } + .col-lg-push-3 { + left: 25%; + } + .col-lg-push-4 { + left: 33.33333333333333%; + } + .col-lg-push-5 { + left: 41.66666666666667%; + } + .col-lg-push-6 { + left: 50%; + } + .col-lg-push-7 { + left: 58.333333333333336%; + } + .col-lg-push-8 { + left: 66.66666666666666%; + } + .col-lg-push-9 { + left: 75%; + } + .col-lg-push-10 { + left: 83.33333333333334%; + } + .col-lg-push-11 { + left: 91.66666666666666%; + } + .col-lg-pull-0 { + right: auto; + } + .col-lg-pull-1 { + right: 8.333333333333332%; + } + .col-lg-pull-2 { + right: 16.666666666666664%; + } + .col-lg-pull-3 { + right: 25%; + } + .col-lg-pull-4 { + right: 33.33333333333333%; + } + .col-lg-pull-5 { + right: 41.66666666666667%; + } + .col-lg-pull-6 { + right: 50%; + } + .col-lg-pull-7 { + right: 58.333333333333336%; + } + .col-lg-pull-8 { + right: 66.66666666666666%; + } + .col-lg-pull-9 { + right: 75%; + } + .col-lg-pull-10 { + right: 83.33333333333334%; + } + .col-lg-pull-11 { + right: 91.66666666666666%; + } + .col-lg-offset-0 { + margin-left: 0; + } + .col-lg-offset-1 { + margin-left: 8.333333333333332%; + } + .col-lg-offset-2 { + margin-left: 16.666666666666664%; + } + .col-lg-offset-3 { + margin-left: 25%; + } + .col-lg-offset-4 { + margin-left: 33.33333333333333%; + } + .col-lg-offset-5 { + margin-left: 41.66666666666667%; + } + .col-lg-offset-6 { + margin-left: 50%; + } + .col-lg-offset-7 { + margin-left: 58.333333333333336%; + } + .col-lg-offset-8 { + margin-left: 66.66666666666666%; + } + .col-lg-offset-9 { + margin-left: 75%; + } + .col-lg-offset-10 { + margin-left: 83.33333333333334%; + } + .col-lg-offset-11 { + margin-left: 91.66666666666666%; + } +} + +table { + max-width: 100%; + background-color: transparent; +} + +th { + text-align: left; +} + +.table { + 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.428571429; + vertical-align: top; + border-top: 1px solid #dddddd; +} + +.table thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #dddddd; +} + +.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 #dddddd; +} + +.table .table { + background-color: #ffffff; +} + +.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 #dddddd; +} + +.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 #dddddd; +} + +.table-bordered > thead > tr > th, +.table-bordered > thead > tr > td { + border-bottom-width: 2px; +} + +.table-striped > tbody > tr:nth-child(odd) > td, +.table-striped > tbody > tr:nth-child(odd) > th { + background-color: #f9f9f9; +} + +.table-hover > tbody > tr:hover > td, +.table-hover > tbody > tr:hover > th { + background-color: #f5f5f5; +} + +table col[class*="col-"] { + display: table-column; + float: none; +} + +table td[class*="col-"], +table th[class*="col-"] { + 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 > 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; + border-color: #d6e9c6; +} + +.table-hover > tbody > tr > td.success:hover, +.table-hover > tbody > tr > th.success:hover, +.table-hover > tbody > tr.success:hover > td { + background-color: #d0e9c6; + border-color: #c9e2b3; +} + +.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; + border-color: #eed3d7; +} + +.table-hover > tbody > tr > td.danger:hover, +.table-hover > tbody > tr > th.danger:hover, +.table-hover > tbody > tr.danger:hover > td { + background-color: #ebcccc; + border-color: #e6c1c7; +} + +.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; + border-color: #fbeed5; +} + +.table-hover > tbody > tr > td.warning:hover, +.table-hover > tbody > tr > th.warning:hover, +.table-hover > tbody > tr.warning:hover > td { + background-color: #faf2cc; + border-color: #f8e5be; +} + +@media (max-width: 768px) { + .table-responsive { + width: 100%; + margin-bottom: 15px; + overflow-x: scroll; + overflow-y: hidden; + border: 1px solid #dddddd; + } + .table-responsive > .table { + margin-bottom: 0; + background-color: #fff; + } + .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 > thead > tr:last-child > th, + .table-responsive > .table-bordered > tbody > tr:last-child > th, + .table-responsive > .table-bordered > tfoot > tr:last-child > th, + .table-responsive > .table-bordered > thead > tr:last-child > td, + .table-responsive > .table-bordered > tbody > tr:last-child > td, + .table-responsive > .table-bordered > tfoot > tr:last-child > td { + border-bottom: 0; + } +} + +fieldset { + padding: 0; + margin: 0; + border: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: inherit; + color: #333333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} + +label { + display: inline-block; + 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; + /* IE8-9 */ + + line-height: normal; +} + +input[type="file"] { + display: block; +} + +select[multiple], +select[size] { + height: auto; +} + +select optgroup { + font-family: inherit; + font-size: inherit; + font-style: inherit; +} + +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +input[type="number"]::-webkit-outer-spin-button, +input[type="number"]::-webkit-inner-spin-button { + height: auto; +} + +.form-control:-moz-placeholder { + color: #999999; +} + +.form-control::-moz-placeholder { + color: #999999; +} + +.form-control:-ms-input-placeholder { + color: #999999; +} + +.form-control::-webkit-input-placeholder { + color: #999999; +} + +.form-control { + display: block; + width: 100%; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.428571429; + color: #555555; + vertical-align: middle; + background-color: #ffffff; + border: 1px solid #cccccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; + transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; +} + +.form-control:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); +} + +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + cursor: not-allowed; + background-color: #eeeeee; +} + +textarea.form-control { + height: auto; +} + +.form-group { + margin-bottom: 15px; +} + +.radio, +.checkbox { + display: block; + min-height: 20px; + padding-left: 20px; + margin-top: 10px; + margin-bottom: 10px; + vertical-align: middle; +} + +.radio label, +.checkbox label { + display: inline; + 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"] { + float: left; + 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], +.radio[disabled], +.radio-inline[disabled], +.checkbox[disabled], +.checkbox-inline[disabled], +fieldset[disabled] input[type="radio"], +fieldset[disabled] input[type="checkbox"], +fieldset[disabled] .radio, +fieldset[disabled] .radio-inline, +fieldset[disabled] .checkbox, +fieldset[disabled] .checkbox-inline { + cursor: not-allowed; +} + +.input-sm { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} + +select.input-sm { + height: 30px; + line-height: 30px; +} + +textarea.input-sm { + height: auto; +} + +.input-lg { + height: 45px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} + +select.input-lg { + height: 45px; + line-height: 45px; +} + +textarea.input-lg { + height: auto; +} + +.has-warning .help-block, +.has-warning .control-label { + color: #c09853; +} + +.has-warning .form-control { + border-color: #c09853; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.has-warning .form-control:focus { + border-color: #a47e3c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; +} + +.has-warning .input-group-addon { + color: #c09853; + background-color: #fcf8e3; + border-color: #c09853; +} + +.has-error .help-block, +.has-error .control-label { + color: #b94a48; +} + +.has-error .form-control { + border-color: #b94a48; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.has-error .form-control:focus { + border-color: #953b39; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; +} + +.has-error .input-group-addon { + color: #b94a48; + background-color: #f2dede; + border-color: #b94a48; +} + +.has-success .help-block, +.has-success .control-label { + color: #468847; +} + +.has-success .form-control { + border-color: #468847; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.has-success .form-control:focus { + border-color: #356635; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; +} + +.has-success .input-group-addon { + color: #468847; + background-color: #dff0d8; + border-color: #468847; +} + +.form-control-static { + padding-top: 7px; + margin-bottom: 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; + } + .form-inline .radio, + .form-inline .checkbox { + display: inline-block; + padding-left: 0; + margin-top: 0; + margin-bottom: 0; + } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + float: none; + margin-left: 0; + } +} + +.form-horizontal .control-label, +.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 .form-group { + margin-right: -15px; + margin-left: -15px; +} + +.form-horizontal .form-group:before, +.form-horizontal .form-group:after { + display: table; + content: " "; +} + +.form-horizontal .form-group:after { + clear: both; +} + +.form-horizontal .form-group:before, +.form-horizontal .form-group:after { + display: table; + content: " "; +} + +.form-horizontal .form-group:after { + clear: both; +} + +@media (min-width: 768px) { + .form-horizontal .control-label { + text-align: right; + } +} + +.btn { + display: inline-block; + padding: 6px 12px; + margin-bottom: 0; + font-size: 14px; + font-weight: normal; + line-height: 1.428571429; + text-align: center; + white-space: nowrap; + vertical-align: middle; + cursor: pointer; + border: 1px solid transparent; + border-radius: 4px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + -o-user-select: none; + user-select: none; +} + +.btn:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.btn:hover, +.btn:focus { + color: #333333; + text-decoration: none; +} + +.btn:active, +.btn.active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} + +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + pointer-events: none; + cursor: not-allowed; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; +} + +.btn-default { + color: #333333; + background-color: #ffffff; + border-color: #cccccc; +} + +.btn-default:hover, +.btn-default:focus, +.btn-default:active, +.btn-default.active, +.open .dropdown-toggle.btn-default { + color: #333333; + background-color: #ebebeb; + 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: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: #ffffff; + border-color: #cccccc; +} + +.btn-primary { + color: #ffffff; + background-color: #428bca; + border-color: #357ebd; +} + +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + color: #ffffff; + background-color: #3276b1; + border-color: #285e8e; +} + +.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: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: #428bca; + border-color: #357ebd; +} + +.btn-warning { + color: #ffffff; + background-color: #f0ad4e; + border-color: #eea236; +} + +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { + color: #ffffff; + background-color: #ed9c28; + 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: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-danger { + color: #ffffff; + background-color: #d9534f; + border-color: #d43f3a; +} + +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + color: #ffffff; + background-color: #d2322d; + 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: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-success { + color: #ffffff; + background-color: #5cb85c; + border-color: #4cae4c; +} + +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { + color: #ffffff; + background-color: #47a447; + 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: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-info { + color: #ffffff; + background-color: #5bc0de; + border-color: #46b8da; +} + +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { + color: #ffffff; + background-color: #39b3d7; + 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: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-link { + font-weight: normal; + color: #428bca; + cursor: pointer; + border-radius: 0; +} + +.btn-link, +.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: #2a6496; + 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: #999999; + text-decoration: none; +} + +.btn-lg { + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} + +.btn-sm, +.btn-xs { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} + +.btn-xs { + padding: 1px 5px; +} + +.btn-block { + display: block; + width: 100%; + padding-right: 0; + padding-left: 0; +} + +.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 0.15s linear; + transition: opacity 0.15s linear; +} + +.fade.in { + opacity: 1; +} + +.collapse { + display: none; +} + +.collapse.in { + display: block; +} + +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height 0.35s ease; + transition: height 0.35s ease; +} + +@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'; + -webkit-font-smoothing: antialiased; + font-style: normal; + font-weight: normal; + line-height: 1; +} + +.glyphicon-asterisk:before { + content: "\2a"; +} + +.glyphicon-plus:before { + content: "\2b"; +} + +.glyphicon-euro:before { + content: "\20ac"; +} + +.glyphicon-minus:before { + content: "\2212"; +} + +.glyphicon-cloud:before { + content: "\2601"; +} + +.glyphicon-envelope:before { + content: "\2709"; +} + +.glyphicon-pencil:before { + content: "\270f"; +} + +.glyphicon-glass:before { + content: "\e001"; +} + +.glyphicon-music:before { + content: "\e002"; +} + +.glyphicon-search:before { + content: "\e003"; +} + +.glyphicon-heart:before { + content: "\e005"; +} + +.glyphicon-star:before { + content: "\e006"; +} + +.glyphicon-star-empty:before { + content: "\e007"; +} + +.glyphicon-user:before { + content: "\e008"; +} + +.glyphicon-film:before { + content: "\e009"; +} + +.glyphicon-th-large:before { + content: "\e010"; +} + +.glyphicon-th:before { + content: "\e011"; +} + +.glyphicon-th-list:before { + content: "\e012"; +} + +.glyphicon-ok:before { + content: "\e013"; +} + +.glyphicon-remove:before { + content: "\e014"; +} + +.glyphicon-zoom-in:before { + content: "\e015"; +} + +.glyphicon-zoom-out:before { + content: "\e016"; +} + +.glyphicon-off:before { + content: "\e017"; +} + +.glyphicon-signal:before { + content: "\e018"; +} + +.glyphicon-cog:before { + content: "\e019"; +} + +.glyphicon-trash:before { + content: "\e020"; +} + +.glyphicon-home:before { + content: "\e021"; +} + +.glyphicon-file:before { + content: "\e022"; +} + +.glyphicon-time:before { + content: "\e023"; +} + +.glyphicon-road:before { + content: "\e024"; +} + +.glyphicon-download-alt:before { + content: "\e025"; +} + +.glyphicon-download:before { + content: "\e026"; +} + +.glyphicon-upload:before { + content: "\e027"; +} + +.glyphicon-inbox:before { + content: "\e028"; +} + +.glyphicon-play-circle:before { + content: "\e029"; +} + +.glyphicon-repeat:before { + content: "\e030"; +} + +.glyphicon-refresh:before { + content: "\e031"; +} + +.glyphicon-list-alt:before { + content: "\e032"; +} + +.glyphicon-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-print:before { + content: "\e045"; +} + +.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-eye-open:before { + content: "\e105"; +} + +.glyphicon-eye-close:before { + content: "\e106"; +} + +.glyphicon-warning-sign:before { + content: "\e107"; +} + +.glyphicon-plane:before { + content: "\e108"; +} + +.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-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-tasks:before { + content: "\e137"; +} + +.glyphicon-filter:before { + content: "\e138"; +} + +.glyphicon-fullscreen:before { + content: "\e140"; +} + +.glyphicon-dashboard:before { + content: "\e141"; +} + +.glyphicon-heart-empty:before { + content: "\e143"; +} + +.glyphicon-link:before { + content: "\e144"; +} + +.glyphicon-phone:before { + content: "\e145"; +} + +.glyphicon-usd:before { + content: "\e148"; +} + +.glyphicon-gbp:before { + content: "\e149"; +} + +.glyphicon-sort:before { + content: "\e150"; +} + +.glyphicon-sort-by-alphabet:before { + content: "\e151"; +} + +.glyphicon-sort-by-alphabet-alt:before { + content: "\e152"; +} + +.glyphicon-sort-by-order:before { + content: "\e153"; +} + +.glyphicon-sort-by-order-alt:before { + content: "\e154"; +} + +.glyphicon-sort-by-attributes:before { + content: "\e155"; +} + +.glyphicon-sort-by-attributes-alt:before { + content: "\e156"; +} + +.glyphicon-unchecked:before { + content: "\e157"; +} + +.glyphicon-expand:before { + content: "\e158"; +} + +.glyphicon-collapse-down:before { + content: "\e159"; +} + +.glyphicon-collapse-up:before { + content: "\e160"; +} + +.glyphicon-log-in:before { + content: "\e161"; +} + +.glyphicon-flash:before { + content: "\e162"; +} + +.glyphicon-log-out:before { + content: "\e163"; +} + +.glyphicon-new-window:before { + content: "\e164"; +} + +.glyphicon-record:before { + content: "\e165"; +} + +.glyphicon-save:before { + content: "\e166"; +} + +.glyphicon-open:before { + content: "\e167"; +} + +.glyphicon-saved:before { + content: "\e168"; +} + +.glyphicon-import:before { + content: "\e169"; +} + +.glyphicon-export:before { + content: "\e170"; +} + +.glyphicon-send:before { + content: "\e171"; +} + +.glyphicon-floppy-disk:before { + content: "\e172"; +} + +.glyphicon-floppy-saved:before { + content: "\e173"; +} + +.glyphicon-floppy-remove:before { + content: "\e174"; +} + +.glyphicon-floppy-save:before { + content: "\e175"; +} + +.glyphicon-floppy-open:before { + content: "\e176"; +} + +.glyphicon-credit-card:before { + content: "\e177"; +} + +.glyphicon-transfer:before { + content: "\e178"; +} + +.glyphicon-cutlery:before { + content: "\e179"; +} + +.glyphicon-header:before { + content: "\e180"; +} + +.glyphicon-compressed:before { + content: "\e181"; +} + +.glyphicon-earphone:before { + content: "\e182"; +} + +.glyphicon-phone-alt:before { + content: "\e183"; +} + +.glyphicon-tower:before { + content: "\e184"; +} + +.glyphicon-stats:before { + content: "\e185"; +} + +.glyphicon-sd-video:before { + content: "\e186"; +} + +.glyphicon-hd-video:before { + content: "\e187"; +} + +.glyphicon-subtitles:before { + content: "\e188"; +} + +.glyphicon-sound-stereo:before { + content: "\e189"; +} + +.glyphicon-sound-dolby:before { + content: "\e190"; +} + +.glyphicon-sound-5-1:before { + content: "\e191"; +} + +.glyphicon-sound-6-1:before { + content: "\e192"; +} + +.glyphicon-sound-7-1:before { + content: "\e193"; +} + +.glyphicon-copyright-mark:before { + content: "\e194"; +} + +.glyphicon-registration-mark:before { + content: "\e195"; +} + +.glyphicon-cloud-download:before { + content: "\e197"; +} + +.glyphicon-cloud-upload:before { + content: "\e198"; +} + +.glyphicon-tree-conifer:before { + content: "\e199"; +} + +.glyphicon-tree-deciduous:before { + content: "\e200"; +} + +.glyphicon-briefcase:before { + content: "\1f4bc"; +} + +.glyphicon-calendar:before { + content: "\1f4c5"; +} + +.glyphicon-pushpin:before { + content: "\1f4cc"; +} + +.glyphicon-paperclip:before { + content: "\1f4ce"; +} + +.glyphicon-camera:before { + content: "\1f4f7"; +} + +.glyphicon-lock:before { + content: "\1f512"; +} + +.glyphicon-bell:before { + content: "\1f514"; +} + +.glyphicon-bookmark:before { + content: "\1f516"; +} + +.glyphicon-fire:before { + content: "\1f525"; +} + +.glyphicon-wrench:before { + content: "\1f527"; +} + +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 4px solid #000000; + border-right: 4px solid transparent; + border-bottom: 0 dotted; + border-left: 4px solid transparent; + content: ""; +} + +.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; + list-style: none; + background-color: #ffffff; + border: 1px solid #cccccc; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + background-clip: padding-box; +} + +.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.428571429; + color: #333333; + white-space: nowrap; +} + +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + color: #ffffff; + text-decoration: none; + background-color: #428bca; +} + +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #ffffff; + text-decoration: none; + background-color: #428bca; + outline: 0; +} + +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #999999; +} + +.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-header { + display: block; + padding: 3px 20px; + font-size: 12px; + line-height: 1.428571429; + color: #999999; +} + +.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 { + border-top: 0 dotted; + border-bottom: 4px solid #000000; + content: ""; +} + +.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; + } +} + +.btn-default .caret { + border-top-color: #333333; +} + +.btn-primary .caret, +.btn-success .caret, +.btn-warning .caret, +.btn-danger .caret, +.btn-info .caret { + border-top-color: #fff; +} + +.dropup .btn-default .caret { + border-bottom-color: #333333; +} + +.dropup .btn-primary .caret, +.dropup .btn-success .caret, +.dropup .btn-warning .caret, +.dropup .btn-danger .caret, +.dropup .btn-info .caret { + border-bottom-color: #fff; +} + +.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:focus, +.btn-group-vertical > .btn:focus { + outline: none; +} + +.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:before, +.btn-toolbar:after { + display: table; + content: " "; +} + +.btn-toolbar:after { + clear: both; +} + +.btn-toolbar:before, +.btn-toolbar:after { + display: table; + content: " "; +} + +.btn-toolbar:after { + clear: both; +} + +.btn-toolbar .btn-group { + float: left; +} + +.btn-toolbar > .btn + .btn, +.btn-toolbar > .btn-group + .btn, +.btn-toolbar > .btn + .btn-group, +.btn-toolbar > .btn-group + .btn-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-bottom-left-radius: 0; + border-top-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-bottom-left-radius: 0; + border-top-left-radius: 0; +} + +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + +.btn-group-xs > .btn { + padding: 5px 10px; + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} + +.btn-group-sm > .btn { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} + +.btn-group-lg > .btn { + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} + +.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, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} + +.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 { + display: block; + float: none; + width: 100%; + max-width: 100%; +} + +.btn-group-vertical > .btn-group:before, +.btn-group-vertical > .btn-group:after { + display: table; + content: " "; +} + +.btn-group-vertical > .btn-group:after { + clear: both; +} + +.btn-group-vertical > .btn-group:before, +.btn-group-vertical > .btn-group:after { + display: table; + content: " "; +} + +.btn-group-vertical > .btn-group:after { + clear: both; +} + +.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-right-radius: 0; + border-bottom-left-radius: 4px; + border-top-left-radius: 0; +} + +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} + +.btn-group-vertical > .btn-group:first-child > .btn:last-child, +.btn-group-vertical > .btn-group:first-child > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.btn-group-vertical > .btn-group:last-child > .btn:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; +} + +.btn-group-justified { + display: table; + width: 100%; + border-collapse: separate; + table-layout: fixed; +} + +.btn-group-justified .btn { + display: table-cell; + float: none; + width: 1%; +} + +[data-toggle="buttons"] > .btn > input[type="radio"], +[data-toggle="buttons"] > .btn > input[type="checkbox"] { + display: none; +} + +.input-group { + position: relative; + display: table; + border-collapse: separate; +} + +.input-group.col { + float: none; + padding-right: 0; + padding-left: 0; +} + +.input-group .form-control { + width: 100%; + margin-bottom: 0; +} + +.input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { + height: 45px; + 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: 45px; + line-height: 45px; +} + +textarea.input-group-lg > .form-control, +textarea.input-group-lg > .input-group-addon, +textarea.input-group-lg > .input-group-btn > .btn { + height: auto; +} + +.input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} + +select.input-group-sm > .form-control, +select.input-group-sm > .input-group-addon, +select.input-group-sm > .input-group-btn > .btn { + height: 30px; + line-height: 30px; +} + +textarea.input-group-sm > .form-control, +textarea.input-group-sm > .input-group-addon, +textarea.input-group-sm > .input-group-btn > .btn { + height: auto; +} + +.input-group-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; + text-align: center; + background-color: #eeeeee; + border: 1px solid #cccccc; + 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 > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.input-group-addon:first-child { + border-right: 0; +} + +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child) { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} + +.input-group-addon:last-child { + border-left: 0; +} + +.input-group-btn { + position: relative; + white-space: nowrap; +} + +.input-group-btn > .btn { + position: relative; +} + +.input-group-btn > .btn + .btn { + margin-left: -4px; +} + +.input-group-btn > .btn:hover, +.input-group-btn > .btn:active { + z-index: 2; +} + +.nav { + padding-left: 0; + margin-bottom: 0; + list-style: none; +} + +.nav:before, +.nav:after { + display: table; + content: " "; +} + +.nav:after { + clear: both; +} + +.nav:before, +.nav:after { + display: table; + content: " "; +} + +.nav:after { + clear: both; +} + +.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: #eeeeee; +} + +.nav > li.disabled > a { + color: #999999; +} + +.nav > li.disabled > a:hover, +.nav > li.disabled > a:focus { + color: #999999; + text-decoration: none; + cursor: not-allowed; + background-color: transparent; +} + +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + background-color: #eeeeee; + border-color: #428bca; +} + +.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 #dddddd; +} + +.nav-tabs > li { + float: left; + margin-bottom: -1px; +} + +.nav-tabs > li > a { + margin-right: 2px; + line-height: 1.428571429; + border: 1px solid transparent; + border-radius: 4px 4px 0 0; +} + +.nav-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #dddddd; +} + +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus { + color: #555555; + cursor: default; + background-color: #ffffff; + border: 1px solid #dddddd; + 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 { + text-align: center; +} + +@media (min-width: 768px) { + .nav-tabs.nav-justified > li { + display: table-cell; + width: 1%; + } +} + +.nav-tabs.nav-justified > li > a { + margin-right: 0; + border-bottom: 1px solid #dddddd; +} + +.nav-tabs.nav-justified > .active > a { + border-bottom-color: #ffffff; +} + +.nav-pills > li { + float: left; +} + +.nav-pills > li > a { + border-radius: 5px; +} + +.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: #ffffff; + background-color: #428bca; +} + +.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 { + text-align: center; +} + +@media (min-width: 768px) { + .nav-justified > li { + display: table-cell; + width: 1%; + } +} + +.nav-tabs-justified { + border-bottom: 0; +} + +.nav-tabs-justified > li > a { + margin-right: 0; + border-bottom: 1px solid #dddddd; +} + +.nav-tabs-justified > .active > a { + border-bottom-color: #ffffff; +} + +.tabbable:before, +.tabbable:after { + display: table; + content: " "; +} + +.tabbable:after { + clear: both; +} + +.tabbable:before, +.tabbable:after { + display: table; + content: " "; +} + +.tabbable:after { + clear: both; +} + +.tab-content > .tab-pane, +.pill-content > .pill-pane { + display: none; +} + +.tab-content > .active, +.pill-content > .active { + display: block; +} + +.nav .caret { + border-top-color: #428bca; + border-bottom-color: #428bca; +} + +.nav a:hover .caret { + border-top-color: #2a6496; + border-bottom-color: #2a6496; +} + +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-right-radius: 0; + border-top-left-radius: 0; +} + +.navbar { + position: relative; + z-index: 1000; + min-height: 50px; + margin-bottom: 20px; + border: 1px solid transparent; +} + +.navbar:before, +.navbar:after { + display: table; + content: " "; +} + +.navbar:after { + clear: both; +} + +.navbar:before, +.navbar:after { + display: table; + content: " "; +} + +.navbar:after { + clear: both; +} + +@media (min-width: 768px) { + .navbar { + border-radius: 4px; + } +} + +.navbar-header:before, +.navbar-header:after { + display: table; + content: " "; +} + +.navbar-header:after { + clear: both; +} + +.navbar-header:before, +.navbar-header:after { + display: table; + content: " "; +} + +.navbar-header:after { + clear: both; +} + +@media (min-width: 768px) { + .navbar-header { + float: left; + } +} + +.navbar-collapse { + max-height: 340px; + padding-right: 15px; + padding-left: 15px; + overflow-x: visible; + border-top: 1px solid transparent; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); + -webkit-overflow-scrolling: touch; +} + +.navbar-collapse:before, +.navbar-collapse:after { + display: table; + content: " "; +} + +.navbar-collapse:after { + clear: both; +} + +.navbar-collapse:before, +.navbar-collapse:after { + display: table; + content: " "; +} + +.navbar-collapse:after { + clear: both; +} + +.navbar-collapse.in { + overflow-y: auto; +} + +@media (min-width: 768px) { + .navbar-collapse { + width: auto; + border-top: 0; + box-shadow: none; + } + .navbar-collapse.collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important; + } + .navbar-collapse.in { + overflow-y: visible; + } + .navbar-collapse .navbar-nav.navbar-left:first-child { + margin-left: -15px; + } + .navbar-collapse .navbar-nav.navbar-right:last-child { + margin-right: -15px; + } + .navbar-collapse .navbar-text:last-child { + margin-right: 0; + } +} + +.container > .navbar-header, +.container > .navbar-collapse { + margin-right: -15px; + margin-left: -15px; +} + +@media (min-width: 768px) { + .container > .navbar-header, + .container > .navbar-collapse { + margin-right: 0; + margin-left: 0; + } +} + +.navbar-static-top { + 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; + border-width: 0 0 1px; +} + +@media (min-width: 768px) { + .navbar-fixed-top, + .navbar-fixed-bottom { + border-radius: 0; + } +} + +.navbar-fixed-top { + top: 0; + z-index: 1030; +} + +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; +} + +.navbar-brand { + float: left; + padding: 15px 15px; + font-size: 18px; + line-height: 20px; +} + +.navbar-brand:hover, +.navbar-brand:focus { + text-decoration: none; +} + +@media (min-width: 768px) { + .navbar > .container .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; + border: 1px solid transparent; + border-radius: 4px; +} + +.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; + 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; + } +} + +@media (min-width: 768px) { + .navbar-left { + float: left !important; + } + .navbar-right { + float: right !important; + } +} + +.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, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.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; + } + .navbar-form .radio, + .navbar-form .checkbox { + display: inline-block; + padding-left: 0; + margin-top: 0; + margin-bottom: 0; + } + .navbar-form .radio input[type="radio"], + .navbar-form .checkbox input[type="checkbox"] { + float: none; + margin-left: 0; + } +} + +@media (max-width: 767px) { + .navbar-form .form-group { + margin-bottom: 5px; + } +} + +@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-right-radius: 0; + border-top-left-radius: 0; +} + +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.navbar-nav.pull-right > li > .dropdown-menu, +.navbar-nav > li > .dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.navbar-btn { + margin-top: 8px; + margin-bottom: 8px; +} + +.navbar-text { + float: left; + margin-top: 15px; + margin-bottom: 15px; +} + +@media (min-width: 768px) { + .navbar-text { + margin-right: 15px; + margin-left: 15px; + } +} + +.navbar-default { + background-color: #f8f8f8; + border-color: #e7e7e7; +} + +.navbar-default .navbar-brand { + color: #777777; +} + +.navbar-default .navbar-brand:hover, +.navbar-default .navbar-brand:focus { + color: #5e5e5e; + background-color: transparent; +} + +.navbar-default .navbar-text { + color: #777777; +} + +.navbar-default .navbar-nav > li > a { + color: #777777; +} + +.navbar-default .navbar-nav > li > a:hover, +.navbar-default .navbar-nav > li > a:focus { + color: #333333; + background-color: transparent; +} + +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:hover, +.navbar-default .navbar-nav > .active > a:focus { + color: #555555; + background-color: #e7e7e7; +} + +.navbar-default .navbar-nav > .disabled > a, +.navbar-default .navbar-nav > .disabled > a:hover, +.navbar-default .navbar-nav > .disabled > a:focus { + color: #cccccc; + background-color: transparent; +} + +.navbar-default .navbar-toggle { + border-color: #dddddd; +} + +.navbar-default .navbar-toggle:hover, +.navbar-default .navbar-toggle:focus { + background-color: #dddddd; +} + +.navbar-default .navbar-toggle .icon-bar { + background-color: #cccccc; +} + +.navbar-default .navbar-collapse, +.navbar-default .navbar-form { + border-color: #e6e6e6; +} + +.navbar-default .navbar-nav > .dropdown > a:hover .caret, +.navbar-default .navbar-nav > .dropdown > a:focus .caret { + border-top-color: #333333; + border-bottom-color: #333333; +} + +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .open > a:hover, +.navbar-default .navbar-nav > .open > a:focus { + color: #555555; + background-color: #e7e7e7; +} + +.navbar-default .navbar-nav > .open > a .caret, +.navbar-default .navbar-nav > .open > a:hover .caret, +.navbar-default .navbar-nav > .open > a:focus .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.navbar-default .navbar-nav > .dropdown > a .caret { + border-top-color: #777777; + border-bottom-color: #777777; +} + +@media (max-width: 767px) { + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #777777; + } + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #333333; + 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: #555555; + 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: #cccccc; + background-color: transparent; + } +} + +.navbar-default .navbar-link { + color: #777777; +} + +.navbar-default .navbar-link:hover { + color: #333333; +} + +.navbar-inverse { + background-color: #222222; + border-color: #080808; +} + +.navbar-inverse .navbar-brand { + color: #999999; +} + +.navbar-inverse .navbar-brand:hover, +.navbar-inverse .navbar-brand:focus { + color: #ffffff; + background-color: transparent; +} + +.navbar-inverse .navbar-text { + color: #999999; +} + +.navbar-inverse .navbar-nav > li > a { + color: #999999; +} + +.navbar-inverse .navbar-nav > li > a:hover, +.navbar-inverse .navbar-nav > li > a:focus { + color: #ffffff; + background-color: transparent; +} + +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + color: #ffffff; + background-color: #080808; +} + +.navbar-inverse .navbar-nav > .disabled > a, +.navbar-inverse .navbar-nav > .disabled > a:hover, +.navbar-inverse .navbar-nav > .disabled > a:focus { + color: #444444; + background-color: transparent; +} + +.navbar-inverse .navbar-toggle { + border-color: #333333; +} + +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + background-color: #333333; +} + +.navbar-inverse .navbar-toggle .icon-bar { + background-color: #ffffff; +} + +.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: #ffffff; + background-color: #080808; +} + +.navbar-inverse .navbar-nav > .dropdown > a:hover .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .navbar-nav > .dropdown > a .caret { + border-top-color: #999999; + border-bottom-color: #999999; +} + +.navbar-inverse .navbar-nav > .open > a .caret, +.navbar-inverse .navbar-nav > .open > a:hover .caret, +.navbar-inverse .navbar-nav > .open > a:focus .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +@media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { + color: #999999; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #ffffff; + 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: #ffffff; + 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: #444444; + background-color: transparent; + } +} + +.navbar-inverse .navbar-link { + color: #999999; +} + +.navbar-inverse .navbar-link:hover { + color: #ffffff; +} + +.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: #cccccc; + content: "/\00a0"; +} + +.breadcrumb > .active { + color: #999999; +} + +.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.428571429; + text-decoration: none; + background-color: #ffffff; + border: 1px solid #dddddd; +} + +.pagination > li:first-child > a, +.pagination > li:first-child > span { + margin-left: 0; + border-bottom-left-radius: 4px; + border-top-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 { + background-color: #eeeeee; +} + +.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: #ffffff; + cursor: default; + background-color: #428bca; + border-color: #428bca; +} + +.pagination > .disabled > span, +.pagination > .disabled > a, +.pagination > .disabled > a:hover, +.pagination > .disabled > a:focus { + color: #999999; + cursor: not-allowed; + background-color: #ffffff; + border-color: #dddddd; +} + +.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-bottom-left-radius: 6px; + border-top-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-bottom-left-radius: 3px; + border-top-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:before, +.pager:after { + display: table; + content: " "; +} + +.pager:after { + clear: both; +} + +.pager:before, +.pager:after { + display: table; + content: " "; +} + +.pager:after { + clear: both; +} + +.pager li { + display: inline; +} + +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 15px; +} + +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #eeeeee; +} + +.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: #999999; + cursor: not-allowed; + background-color: #ffffff; +} + +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: #ffffff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; +} + +.label[href]:hover, +.label[href]:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} + +.label:empty { + display: none; +} + +.label-default { + background-color: #999999; +} + +.label-default[href]:hover, +.label-default[href]:focus { + background-color: #808080; +} + +.label-primary { + background-color: #428bca; +} + +.label-primary[href]:hover, +.label-primary[href]:focus { + background-color: #3071a9; +} + +.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: #ffffff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + background-color: #999999; + border-radius: 10px; +} + +.badge:empty { + display: none; +} + +a.badge:hover, +a.badge:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} + +.btn .badge { + position: relative; + top: -1px; +} + +a.list-group-item.active > .badge, +.nav-pills > .active > a > .badge { + color: #428bca; + background-color: #ffffff; +} + +.nav-pills > li > a > .badge { + margin-left: 3px; +} + +.jumbotron { + padding: 30px; + margin-bottom: 30px; + font-size: 21px; + font-weight: 200; + line-height: 2.1428571435; + color: inherit; + background-color: #eeeeee; +} + +.jumbotron h1 { + line-height: 1; + color: inherit; +} + +.jumbotron p { + line-height: 1.4; +} + +.container .jumbotron { + border-radius: 6px; +} + +@media screen and (min-width: 768px) { + .jumbotron { + padding-top: 48px; + padding-bottom: 48px; + } + .container .jumbotron { + padding-right: 60px; + padding-left: 60px; + } + .jumbotron h1 { + font-size: 63px; + } +} + +.thumbnail { + display: inline-block; + display: block; + height: auto; + max-width: 100%; + padding: 4px; + line-height: 1.428571429; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 4px; + -webkit-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} + +.thumbnail > img { + display: block; + height: auto; + max-width: 100%; +} + +a.thumbnail:hover, +a.thumbnail:focus { + border-color: #428bca; +} + +.thumbnail > img { + margin-right: auto; + margin-left: auto; +} + +.thumbnail .caption { + padding: 9px; + color: #333333; +} + +.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 { + padding-right: 35px; +} + +.alert-dismissable .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; +} + +.alert-success { + color: #468847; + background-color: #dff0d8; + border-color: #d6e9c6; +} + +.alert-success hr { + border-top-color: #c9e2b3; +} + +.alert-success .alert-link { + color: #356635; +} + +.alert-info { + color: #3a87ad; + background-color: #d9edf7; + border-color: #bce8f1; +} + +.alert-info hr { + border-top-color: #a6e1ec; +} + +.alert-info .alert-link { + color: #2d6987; +} + +.alert-warning { + color: #c09853; + background-color: #fcf8e3; + border-color: #fbeed5; +} + +.alert-warning hr { + border-top-color: #f8e5be; +} + +.alert-warning .alert-link { + color: #a47e3c; +} + +.alert-danger { + color: #b94a48; + background-color: #f2dede; + border-color: #eed3d7; +} + +.alert-danger hr { + border-top-color: #e6c1c7; +} + +.alert-danger .alert-link { + color: #953b39; +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 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, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.progress-bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + color: #ffffff; + text-align: center; + background-color: #428bca; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-transition: width 0.6s ease; + transition: width 0.6s ease; +} + +.progress-striped .progress-bar { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + 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); + background-image: -moz-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); + 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); + background-size: 40px 40px; +} + +.progress.active .progress-bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-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-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + 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); + background-image: -moz-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); + 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); +} + +.progress-bar-info { + background-color: #5bc0de; +} + +.progress-striped .progress-bar-info { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + 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); + background-image: -moz-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); + 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); +} + +.progress-bar-warning { + background-color: #f0ad4e; +} + +.progress-striped .progress-bar-warning { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + 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); + background-image: -moz-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); + 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); +} + +.progress-bar-danger { + background-color: #d9534f; +} + +.progress-striped .progress-bar-danger { + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + 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); + background-image: -moz-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); + 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); +} + +.media, +.media-body { + overflow: hidden; + zoom: 1; +} + +.media, +.media .media { + margin-top: 15px; +} + +.media:first-child { + margin-top: 0; +} + +.media-object { + display: block; +} + +.media-heading { + margin: 0 0 5px; +} + +.media > .pull-left { + margin-right: 10px; +} + +.media > .pull-right { + margin-left: 10px; +} + +.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: #ffffff; + border: 1px solid #dddddd; +} + +.list-group-item:first-child { + border-top-right-radius: 4px; + border-top-left-radius: 4px; +} + +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} + +.list-group-item > .badge { + float: right; +} + +.list-group-item > .badge + .badge { + margin-right: 5px; +} + +a.list-group-item { + color: #555555; +} + +a.list-group-item .list-group-item-heading { + color: #333333; +} + +a.list-group-item:hover, +a.list-group-item:focus { + text-decoration: none; + background-color: #f5f5f5; +} + +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + z-index: 2; + color: #ffffff; + background-color: #428bca; + border-color: #428bca; +} + +.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 { + 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: #e1edf7; +} + +.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: #ffffff; + border: 1px solid transparent; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); +} + +.panel-body { + padding: 15px; +} + +.panel-body:before, +.panel-body:after { + display: table; + content: " "; +} + +.panel-body:after { + clear: both; +} + +.panel-body:before, +.panel-body:after { + display: table; + content: " "; +} + +.panel-body:after { + clear: both; +} + +.panel > .list-group { + margin-bottom: 0; +} + +.panel > .list-group .list-group-item { + border-width: 1px 0; +} + +.panel > .list-group .list-group-item:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; +} + +.panel > .list-group .list-group-item:last-child { + border-bottom: 0; +} + +.panel-heading + .list-group .list-group-item:first-child { + border-top-width: 0; +} + +.panel > .table { + margin-bottom: 0; +} + +.panel > .panel-body + .table { + border-top: 1px solid #dddddd; +} + +.panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} + +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 16px; +} + +.panel-title > a { + color: inherit; +} + +.panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #dddddd; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} + +.panel-group .panel { + margin-bottom: 0; + overflow: hidden; + 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 { + border-top: 1px solid #dddddd; +} + +.panel-group .panel-footer { + border-top: 0; +} + +.panel-group .panel-footer + .panel-collapse .panel-body { + border-bottom: 1px solid #dddddd; +} + +.panel-default { + border-color: #dddddd; +} + +.panel-default > .panel-heading { + color: #333333; + background-color: #f5f5f5; + border-color: #dddddd; +} + +.panel-default > .panel-heading + .panel-collapse .panel-body { + border-top-color: #dddddd; +} + +.panel-default > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #dddddd; +} + +.panel-primary { + border-color: #428bca; +} + +.panel-primary > .panel-heading { + color: #ffffff; + background-color: #428bca; + border-color: #428bca; +} + +.panel-primary > .panel-heading + .panel-collapse .panel-body { + border-top-color: #428bca; +} + +.panel-primary > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #428bca; +} + +.panel-success { + border-color: #d6e9c6; +} + +.panel-success > .panel-heading { + color: #468847; + background-color: #dff0d8; + border-color: #d6e9c6; +} + +.panel-success > .panel-heading + .panel-collapse .panel-body { + border-top-color: #d6e9c6; +} + +.panel-success > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #d6e9c6; +} + +.panel-warning { + border-color: #fbeed5; +} + +.panel-warning > .panel-heading { + color: #c09853; + background-color: #fcf8e3; + border-color: #fbeed5; +} + +.panel-warning > .panel-heading + .panel-collapse .panel-body { + border-top-color: #fbeed5; +} + +.panel-warning > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #fbeed5; +} + +.panel-danger { + border-color: #eed3d7; +} + +.panel-danger > .panel-heading { + color: #b94a48; + background-color: #f2dede; + border-color: #eed3d7; +} + +.panel-danger > .panel-heading + .panel-collapse .panel-body { + border-top-color: #eed3d7; +} + +.panel-danger > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #eed3d7; +} + +.panel-info { + border-color: #bce8f1; +} + +.panel-info > .panel-heading { + color: #3a87ad; + background-color: #d9edf7; + border-color: #bce8f1; +} + +.panel-info > .panel-heading + .panel-collapse .panel-body { + border-top-color: #bce8f1; +} + +.panel-info > .panel-footer + .panel-collapse .panel-body { + border-bottom-color: #bce8f1; +} + +.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, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} + +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 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: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} + +.close:hover, +.close:focus { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.5; + filter: alpha(opacity=50); +} + +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} + +.modal-open { + overflow: hidden; +} + +body.modal-open, +.modal-open .navbar-fixed-top, +.modal-open .navbar-fixed-bottom { + margin-right: 15px; +} + +.modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + display: none; + overflow: auto; + overflow-y: scroll; +} + +.modal.fade .modal-dialog { + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + transform: translate(0, -25%); + -webkit-transition: -webkit-transform 0.3s ease-out; + -moz-transition: -moz-transform 0.3s ease-out; + -o-transition: -o-transform 0.3s ease-out; + transition: transform 0.3s ease-out; +} + +.modal.in .modal-dialog { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + transform: translate(0, 0); +} + +.modal-dialog { + z-index: 1050; + width: auto; + padding: 10px; + margin-right: auto; + margin-left: auto; +} + +.modal-content { + position: relative; + background-color: #ffffff; + border: 1px solid #999999; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + outline: none; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + background-clip: padding-box; +} + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1030; + background-color: #000000; +} + +.modal-backdrop.fade { + opacity: 0; + filter: alpha(opacity=0); +} + +.modal-backdrop.in { + opacity: 0.5; + filter: alpha(opacity=50); +} + +.modal-header { + min-height: 16.428571429px; + padding: 15px; + border-bottom: 1px solid #e5e5e5; +} + +.modal-header .close { + margin-top: -2px; +} + +.modal-title { + margin: 0; + line-height: 1.428571429; +} + +.modal-body { + position: relative; + padding: 20px; +} + +.modal-footer { + padding: 19px 20px 20px; + margin-top: 15px; + text-align: right; + border-top: 1px solid #e5e5e5; +} + +.modal-footer:before, +.modal-footer:after { + display: table; + content: " "; +} + +.modal-footer:after { + clear: both; +} + +.modal-footer:before, +.modal-footer:after { + display: table; + content: " "; +} + +.modal-footer:after { + clear: both; +} + +.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; +} + +@media screen and (min-width: 768px) { + .modal-dialog { + right: auto; + left: 50%; + width: 600px; + padding-top: 30px; + padding-bottom: 30px; + } + .modal-content { + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); + } +} + +.tooltip { + position: absolute; + z-index: 1030; + display: block; + font-size: 12px; + line-height: 1.4; + opacity: 0; + filter: alpha(opacity=0); + visibility: visible; +} + +.tooltip.in { + opacity: 0.9; + filter: alpha(opacity=90); +} + +.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: #ffffff; + text-align: center; + text-decoration: none; + background-color: #000000; + 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-top-color: #000000; + border-width: 5px 5px 0; +} + +.tooltip.top-left .tooltip-arrow { + bottom: 0; + left: 5px; + border-top-color: #000000; + border-width: 5px 5px 0; +} + +.tooltip.top-right .tooltip-arrow { + right: 5px; + bottom: 0; + border-top-color: #000000; + border-width: 5px 5px 0; +} + +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-right-color: #000000; + border-width: 5px 5px 5px 0; +} + +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-left-color: #000000; + border-width: 5px 0 5px 5px; +} + +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-bottom-color: #000000; + border-width: 0 5px 5px; +} + +.tooltip.bottom-left .tooltip-arrow { + top: 0; + left: 5px; + border-bottom-color: #000000; + border-width: 0 5px 5px; +} + +.tooltip.bottom-right .tooltip-arrow { + top: 0; + right: 5px; + border-bottom-color: #000000; + border-width: 0 5px 5px; +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + max-width: 276px; + padding: 1px; + text-align: left; + white-space: normal; + background-color: #ffffff; + border: 1px solid #cccccc; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + background-clip: padding-box; +} + +.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; + font-weight: normal; + line-height: 18px; + 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 { + border-width: 10px; + content: ""; +} + +.popover.top .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999999; + border-top-color: rgba(0, 0, 0, 0.25); + border-bottom-width: 0; +} + +.popover.top .arrow:after { + bottom: 1px; + margin-left: -10px; + border-top-color: #ffffff; + border-bottom-width: 0; + content: " "; +} + +.popover.right .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999999; + border-right-color: rgba(0, 0, 0, 0.25); + border-left-width: 0; +} + +.popover.right .arrow:after { + bottom: -10px; + left: 1px; + border-right-color: #ffffff; + border-left-width: 0; + content: " "; +} + +.popover.bottom .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-bottom-color: #999999; + border-bottom-color: rgba(0, 0, 0, 0.25); + border-top-width: 0; +} + +.popover.bottom .arrow:after { + top: 1px; + margin-left: -10px; + border-bottom-color: #ffffff; + border-top-width: 0; + content: " "; +} + +.popover.left .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-left-color: #999999; + border-left-color: rgba(0, 0, 0, 0.25); + border-right-width: 0; +} + +.popover.left .arrow:after { + right: 1px; + bottom: -10px; + border-left-color: #ffffff; + border-right-width: 0; + content: " "; +} + +.carousel { + position: relative; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} + +.carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} + +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + height: auto; + max-width: 100%; + line-height: 1; +} + +.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: #ffffff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); + opacity: 0.5; + filter: alpha(opacity=50); +} + +.carousel-control.left { + background-image: -webkit-gradient(linear, 0 top, 100% top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0.0001))); + background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.5) 0), color-stop(rgba(0, 0, 0, 0.0001) 100%)); + background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.5) 0, rgba(0, 0, 0, 0.0001) 100%); + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0, rgba(0, 0, 0, 0.0001) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); +} + +.carousel-control.right { + right: 0; + left: auto; + background-image: -webkit-gradient(linear, 0 top, 100% top, from(rgba(0, 0, 0, 0.0001)), to(rgba(0, 0, 0, 0.5))); + background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.0001) 0), color-stop(rgba(0, 0, 0, 0.5) 100%)); + background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0, rgba(0, 0, 0, 0.5) 100%); + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0, rgba(0, 0, 0, 0.5) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); +} + +.carousel-control:hover, +.carousel-control:focus { + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} + +.carousel-control .icon-prev, +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-left, +.carousel-control .glyphicon-chevron-right { + position: absolute; + top: 50%; + left: 50%; + z-index: 5; + display: inline-block; +} + +.carousel-control .icon-prev, +.carousel-control .icon-next { + width: 20px; + height: 20px; + margin-top: -10px; + margin-left: -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; + border: 1px solid #ffffff; + border-radius: 10px; +} + +.carousel-indicators .active { + width: 12px; + height: 12px; + margin: 0; + background-color: #ffffff; +} + +.carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #ffffff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); +} + +.carousel-caption .btn { + text-shadow: none; +} + +@media screen and (min-width: 768px) { + .carousel-control .icon-prev, + .carousel-control .icon-next { + width: 30px; + height: 30px; + margin-top: -15px; + margin-left: -15px; + font-size: 30px; + } + .carousel-caption { + right: 20%; + left: 20%; + padding-bottom: 30px; + } + .carousel-indicators { + bottom: 20px; + } +} + +.clearfix:before, +.clearfix:after { + display: table; + content: " "; +} + +.clearfix:after { + clear: both; +} + +.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; +} + +.affix { + position: fixed; +} + +@-ms-viewport { + width: device-width; +} + +@media screen and (max-width: 400px) { + @-ms-viewport { + width: 320px; + } +} + +.hidden { + display: none !important; + visibility: hidden !important; +} + +.visible-xs { + display: none !important; +} + +tr.visible-xs { + display: none !important; +} + +th.visible-xs, +td.visible-xs { + display: none !important; +} + +@media (max-width: 767px) { + .visible-xs { + display: block !important; + } + tr.visible-xs { + display: table-row !important; + } + th.visible-xs, + td.visible-xs { + display: table-cell !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .visible-xs.visible-sm { + display: block !important; + } + tr.visible-xs.visible-sm { + display: table-row !important; + } + th.visible-xs.visible-sm, + td.visible-xs.visible-sm { + display: table-cell !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .visible-xs.visible-md { + display: block !important; + } + tr.visible-xs.visible-md { + display: table-row !important; + } + th.visible-xs.visible-md, + td.visible-xs.visible-md { + display: table-cell !important; + } +} + +@media (min-width: 1200px) { + .visible-xs.visible-lg { + display: block !important; + } + tr.visible-xs.visible-lg { + display: table-row !important; + } + th.visible-xs.visible-lg, + td.visible-xs.visible-lg { + display: table-cell !important; + } +} + +.visible-sm { + display: none !important; +} + +tr.visible-sm { + display: none !important; +} + +th.visible-sm, +td.visible-sm { + display: none !important; +} + +@media (max-width: 767px) { + .visible-sm.visible-xs { + display: block !important; + } + tr.visible-sm.visible-xs { + display: table-row !important; + } + th.visible-sm.visible-xs, + td.visible-sm.visible-xs { + display: table-cell !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm { + display: block !important; + } + tr.visible-sm { + display: table-row !important; + } + th.visible-sm, + td.visible-sm { + display: table-cell !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .visible-sm.visible-md { + display: block !important; + } + tr.visible-sm.visible-md { + display: table-row !important; + } + th.visible-sm.visible-md, + td.visible-sm.visible-md { + display: table-cell !important; + } +} + +@media (min-width: 1200px) { + .visible-sm.visible-lg { + display: block !important; + } + tr.visible-sm.visible-lg { + display: table-row !important; + } + th.visible-sm.visible-lg, + td.visible-sm.visible-lg { + display: table-cell !important; + } +} + +.visible-md { + display: none !important; +} + +tr.visible-md { + display: none !important; +} + +th.visible-md, +td.visible-md { + display: none !important; +} + +@media (max-width: 767px) { + .visible-md.visible-xs { + display: block !important; + } + tr.visible-md.visible-xs { + display: table-row !important; + } + th.visible-md.visible-xs, + td.visible-md.visible-xs { + display: table-cell !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .visible-md.visible-sm { + display: block !important; + } + tr.visible-md.visible-sm { + display: table-row !important; + } + th.visible-md.visible-sm, + td.visible-md.visible-sm { + display: table-cell !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md { + display: block !important; + } + tr.visible-md { + display: table-row !important; + } + th.visible-md, + td.visible-md { + display: table-cell !important; + } +} + +@media (min-width: 1200px) { + .visible-md.visible-lg { + display: block !important; + } + tr.visible-md.visible-lg { + display: table-row !important; + } + th.visible-md.visible-lg, + td.visible-md.visible-lg { + display: table-cell !important; + } +} + +.visible-lg { + display: none !important; +} + +tr.visible-lg { + display: none !important; +} + +th.visible-lg, +td.visible-lg { + display: none !important; +} + +@media (max-width: 767px) { + .visible-lg.visible-xs { + display: block !important; + } + tr.visible-lg.visible-xs { + display: table-row !important; + } + th.visible-lg.visible-xs, + td.visible-lg.visible-xs { + display: table-cell !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .visible-lg.visible-sm { + display: block !important; + } + tr.visible-lg.visible-sm { + display: table-row !important; + } + th.visible-lg.visible-sm, + td.visible-lg.visible-sm { + display: table-cell !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .visible-lg.visible-md { + display: block !important; + } + tr.visible-lg.visible-md { + display: table-row !important; + } + th.visible-lg.visible-md, + td.visible-lg.visible-md { + display: table-cell !important; + } +} + +@media (min-width: 1200px) { + .visible-lg { + display: block !important; + } + tr.visible-lg { + display: table-row !important; + } + th.visible-lg, + td.visible-lg { + display: table-cell !important; + } +} + +.hidden-xs { + display: block !important; +} + +tr.hidden-xs { + display: table-row !important; +} + +th.hidden-xs, +td.hidden-xs { + display: table-cell !important; +} + +@media (max-width: 767px) { + .hidden-xs { + display: none !important; + } + tr.hidden-xs { + display: none !important; + } + th.hidden-xs, + td.hidden-xs { + display: none !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .hidden-xs.hidden-sm { + display: none !important; + } + tr.hidden-xs.hidden-sm { + display: none !important; + } + th.hidden-xs.hidden-sm, + td.hidden-xs.hidden-sm { + display: none !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-xs.hidden-md { + display: none !important; + } + tr.hidden-xs.hidden-md { + display: none !important; + } + th.hidden-xs.hidden-md, + td.hidden-xs.hidden-md { + display: none !important; + } +} + +@media (min-width: 1200px) { + .hidden-xs.hidden-lg { + display: none !important; + } + tr.hidden-xs.hidden-lg { + display: none !important; + } + th.hidden-xs.hidden-lg, + td.hidden-xs.hidden-lg { + display: none !important; + } +} + +.hidden-sm { + display: block !important; +} + +tr.hidden-sm { + display: table-row !important; +} + +th.hidden-sm, +td.hidden-sm { + display: table-cell !important; +} + +@media (max-width: 767px) { + .hidden-sm.hidden-xs { + display: none !important; + } + tr.hidden-sm.hidden-xs { + display: none !important; + } + th.hidden-sm.hidden-xs, + td.hidden-sm.hidden-xs { + display: none !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .hidden-sm { + display: none !important; + } + tr.hidden-sm { + display: none !important; + } + th.hidden-sm, + td.hidden-sm { + display: none !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-sm.hidden-md { + display: none !important; + } + tr.hidden-sm.hidden-md { + display: none !important; + } + th.hidden-sm.hidden-md, + td.hidden-sm.hidden-md { + display: none !important; + } +} + +@media (min-width: 1200px) { + .hidden-sm.hidden-lg { + display: none !important; + } + tr.hidden-sm.hidden-lg { + display: none !important; + } + th.hidden-sm.hidden-lg, + td.hidden-sm.hidden-lg { + display: none !important; + } +} + +.hidden-md { + display: block !important; +} + +tr.hidden-md { + display: table-row !important; +} + +th.hidden-md, +td.hidden-md { + display: table-cell !important; +} + +@media (max-width: 767px) { + .hidden-md.hidden-xs { + display: none !important; + } + tr.hidden-md.hidden-xs { + display: none !important; + } + th.hidden-md.hidden-xs, + td.hidden-md.hidden-xs { + display: none !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .hidden-md.hidden-sm { + display: none !important; + } + tr.hidden-md.hidden-sm { + display: none !important; + } + th.hidden-md.hidden-sm, + td.hidden-md.hidden-sm { + display: none !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-md { + display: none !important; + } + tr.hidden-md { + display: none !important; + } + th.hidden-md, + td.hidden-md { + display: none !important; + } +} + +@media (min-width: 1200px) { + .hidden-md.hidden-lg { + display: none !important; + } + tr.hidden-md.hidden-lg { + display: none !important; + } + th.hidden-md.hidden-lg, + td.hidden-md.hidden-lg { + display: none !important; + } +} + +.hidden-lg { + display: block !important; +} + +tr.hidden-lg { + display: table-row !important; +} + +th.hidden-lg, +td.hidden-lg { + display: table-cell !important; +} + +@media (max-width: 767px) { + .hidden-lg.hidden-xs { + display: none !important; + } + tr.hidden-lg.hidden-xs { + display: none !important; + } + th.hidden-lg.hidden-xs, + td.hidden-lg.hidden-xs { + display: none !important; + } +} + +@media (min-width: 768px) and (max-width: 991px) { + .hidden-lg.hidden-sm { + display: none !important; + } + tr.hidden-lg.hidden-sm { + display: none !important; + } + th.hidden-lg.hidden-sm, + td.hidden-lg.hidden-sm { + display: none !important; + } +} + +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-lg.hidden-md { + display: none !important; + } + tr.hidden-lg.hidden-md { + display: none !important; + } + th.hidden-lg.hidden-md, + td.hidden-lg.hidden-md { + display: none !important; + } +} + +@media (min-width: 1200px) { + .hidden-lg { + display: none !important; + } + tr.hidden-lg { + display: none !important; + } + th.hidden-lg, + td.hidden-lg { + display: none !important; + } +} + +.visible-print { + display: none !important; +} + +tr.visible-print { + display: none !important; +} + +th.visible-print, +td.visible-print { + display: none !important; +} + +@media print { + .visible-print { + display: block !important; + } + tr.visible-print { + display: table-row !important; + } + th.visible-print, + td.visible-print { + display: table-cell !important; + } + .hidden-print { + display: none !important; + } + tr.hidden-print { + display: none !important; + } + th.hidden-print, + td.hidden-print { + display: none !important; + } +} \ No newline at end of file diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Content/bootstrap.min.css b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Content/bootstrap.min.css new file mode 100644 index 00000000..a553c4f5 --- /dev/null +++ b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Content/bootstrap.min.css @@ -0,0 +1,9 @@ +/*! + * Bootstrap v3.0.0 + * + * Copyright 2013 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world by @mdo and @fat. + *//*! normalize.css v2.1.0 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{margin:.67em 0;font-size:2em}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}mark{color:#000;background:#ff0}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid #c0c0c0}legend{padding:0;border:0}button,input,select,textarea{margin:0;font-family:inherit;font-size:100%}button,input{line-height:normal}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{padding:0;box-sizing:border-box}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}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]: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}@page{margin:2cm .5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}*,*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}button,input,select[multiple],textarea{background-image:none}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}img{vertical-align:middle}.img-responsive{display:block;height:auto;max-width:100%}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;height:auto;max-width:100%;padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-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}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16.099999999999998px;font-weight:200;line-height:1.4}@media(min-width:768px){.lead{font-size:21px}}small{font-size:85%}cite{font-style:normal}.text-muted{color:#999}.text-primary{color:#428bca}.text-warning{color:#c09853}.text-danger{color:#b94a48}.text-success{color:#468847}.text-info{color:#3a87ad}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1}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:#999}h1,h2,h3{margin-top:20px;margin-bottom:10px}h4,h5,h6{margin-top:10px;margin-bottom:10px}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}h1 small,.h1 small{font-size:24px}h2 small,.h2 small{font-size:18px}h3 small,.h3 small,h4 small,.h4 small{font-size:14px}.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;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-bottom:20px}dt,dd{line-height:1.428571429}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}.dl-horizontal dd:before,.dl-horizontal dd:after{display:table;content:" "}.dl-horizontal dd:after{clear:both}.dl-horizontal dd:before,.dl-horizontal dd:after{display:table;content:" "}.dl-horizontal dd:after{clear:both}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}blockquote p:last-child{margin-bottom:0}blockquote small{display:block;line-height:1.428571429;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}q:before,q:after,blockquote:before,blockquote:after{content:""}address{display:block;margin-bottom:20px;font-style:normal;line-height:1.428571429}code,pre{font-family:Monaco,Menlo,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;white-space:nowrap;background-color:#f9f2f4;border-radius:4px}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre.prettyprint{margin-bottom:20px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.container:before,.container:after{display:table;content:" "}.container:after{clear:both}.container:before,.container:after{display:table;content:" "}.container:after{clear:both}.row{margin-right:-15px;margin-left:-15px}.row:before,.row:after{display:table;content:" "}.row:after{clear:both}.row:before,.row:after{display:table;content:" "}.row:after{clear:both}.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,.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,.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,.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{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{float:left}.col-xs-1{width:8.333333333333332%}.col-xs-2{width:16.666666666666664%}.col-xs-3{width:25%}.col-xs-4{width:33.33333333333333%}.col-xs-5{width:41.66666666666667%}.col-xs-6{width:50%}.col-xs-7{width:58.333333333333336%}.col-xs-8{width:66.66666666666666%}.col-xs-9{width:75%}.col-xs-10{width:83.33333333333334%}.col-xs-11{width:91.66666666666666%}.col-xs-12{width:100%}@media(min-width:768px){.container{max-width:750px}.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{float:left}.col-sm-1{width:8.333333333333332%}.col-sm-2{width:16.666666666666664%}.col-sm-3{width:25%}.col-sm-4{width:33.33333333333333%}.col-sm-5{width:41.66666666666667%}.col-sm-6{width:50%}.col-sm-7{width:58.333333333333336%}.col-sm-8{width:66.66666666666666%}.col-sm-9{width:75%}.col-sm-10{width:83.33333333333334%}.col-sm-11{width:91.66666666666666%}.col-sm-12{width:100%}.col-sm-push-1{left:8.333333333333332%}.col-sm-push-2{left:16.666666666666664%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333333333333%}.col-sm-push-5{left:41.66666666666667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.333333333333336%}.col-sm-push-8{left:66.66666666666666%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333333333334%}.col-sm-push-11{left:91.66666666666666%}.col-sm-pull-1{right:8.333333333333332%}.col-sm-pull-2{right:16.666666666666664%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333333333333%}.col-sm-pull-5{right:41.66666666666667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.333333333333336%}.col-sm-pull-8{right:66.66666666666666%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333333333334%}.col-sm-pull-11{right:91.66666666666666%}.col-sm-offset-1{margin-left:8.333333333333332%}.col-sm-offset-2{margin-left:16.666666666666664%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333333333333%}.col-sm-offset-5{margin-left:41.66666666666667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.333333333333336%}.col-sm-offset-8{margin-left:66.66666666666666%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333333333334%}.col-sm-offset-11{margin-left:91.66666666666666%}}@media(min-width:992px){.container{max-width:970px}.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{float:left}.col-md-1{width:8.333333333333332%}.col-md-2{width:16.666666666666664%}.col-md-3{width:25%}.col-md-4{width:33.33333333333333%}.col-md-5{width:41.66666666666667%}.col-md-6{width:50%}.col-md-7{width:58.333333333333336%}.col-md-8{width:66.66666666666666%}.col-md-9{width:75%}.col-md-10{width:83.33333333333334%}.col-md-11{width:91.66666666666666%}.col-md-12{width:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.333333333333332%}.col-md-push-2{left:16.666666666666664%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333333333333%}.col-md-push-5{left:41.66666666666667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.333333333333336%}.col-md-push-8{left:66.66666666666666%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333333333334%}.col-md-push-11{left:91.66666666666666%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.333333333333332%}.col-md-pull-2{right:16.666666666666664%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.33333333333333%}.col-md-pull-5{right:41.66666666666667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.333333333333336%}.col-md-pull-8{right:66.66666666666666%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333333333334%}.col-md-pull-11{right:91.66666666666666%}.col-md-offset-0{margin-left:0}.col-md-offset-1{margin-left:8.333333333333332%}.col-md-offset-2{margin-left:16.666666666666664%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333333333333%}.col-md-offset-5{margin-left:41.66666666666667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.333333333333336%}.col-md-offset-8{margin-left:66.66666666666666%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333333333334%}.col-md-offset-11{margin-left:91.66666666666666%}}@media(min-width:1200px){.container{max-width:1170px}.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{float:left}.col-lg-1{width:8.333333333333332%}.col-lg-2{width:16.666666666666664%}.col-lg-3{width:25%}.col-lg-4{width:33.33333333333333%}.col-lg-5{width:41.66666666666667%}.col-lg-6{width:50%}.col-lg-7{width:58.333333333333336%}.col-lg-8{width:66.66666666666666%}.col-lg-9{width:75%}.col-lg-10{width:83.33333333333334%}.col-lg-11{width:91.66666666666666%}.col-lg-12{width:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.333333333333332%}.col-lg-push-2{left:16.666666666666664%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333333333333%}.col-lg-push-5{left:41.66666666666667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.333333333333336%}.col-lg-push-8{left:66.66666666666666%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333333333334%}.col-lg-push-11{left:91.66666666666666%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.333333333333332%}.col-lg-pull-2{right:16.666666666666664%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333333333333%}.col-lg-pull-5{right:41.66666666666667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.333333333333336%}.col-lg-pull-8{right:66.66666666666666%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333333333334%}.col-lg-pull-11{right:91.66666666666666%}.col-lg-offset-0{margin-left:0}.col-lg-offset-1{margin-left:8.333333333333332%}.col-lg-offset-2{margin-left:16.666666666666664%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333333333333%}.col-lg-offset-5{margin-left:41.66666666666667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.333333333333336%}.col-lg-offset-8{margin-left:66.66666666666666%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333333333334%}.col-lg-offset-11{margin-left:91.66666666666666%}}table{max-width:100%;background-color:transparent}th{text-align:left}.table{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.428571429;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)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*="col-"]{display:table-column;float:none}table td[class*="col-"],table th[class*="col-"]{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>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;border-color:#d6e9c6}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td{background-color:#d0e9c6;border-color:#c9e2b3}.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;border-color:#eed3d7}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td{background-color:#ebcccc;border-color:#e6c1c7}.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;border-color:#fbeed5}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td{background-color:#faf2cc;border-color:#f8e5be}@media(max-width:768px){.table-responsive{width:100%;margin-bottom:15px;overflow-x:scroll;overflow-y:hidden;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0;background-color:#fff}.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>thead>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>thead>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{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;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}select[multiple],select[size]{height:auto}select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}input[type="number"]::-webkit-outer-spin-button,input[type="number"]::-webkit-inner-spin-button{height:auto}.form-control:-moz-placeholder{color:#999}.form-control::-moz-placeholder{color:#999}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle;background-color:#fff;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-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,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}textarea.form-control{height:auto}.form-group{margin-bottom:15px}.radio,.checkbox{display:block;min-height:20px;padding-left:20px;margin-top:10px;margin-bottom:10px;vertical-align:middle}.radio label,.checkbox label{display:inline;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"]{float:left;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],.radio[disabled],.radio-inline[disabled],.checkbox[disabled],.checkbox-inline[disabled],fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"],fieldset[disabled] .radio,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm{height:auto}.input-lg{height:45px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:45px;line-height:45px}textarea.input-lg{height:auto}.has-warning .help-block,.has-warning .control-label{color:#c09853}.has-warning .form-control{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e}.has-warning .input-group-addon{color:#c09853;background-color:#fcf8e3;border-color:#c09853}.has-error .help-block,.has-error .control-label{color:#b94a48}.has-error .form-control{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}.has-error .input-group-addon{color:#b94a48;background-color:#f2dede;border-color:#b94a48}.has-success .help-block,.has-success .control-label{color:#468847}.has-success .form-control{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b}.has-success .input-group-addon{color:#468847;background-color:#dff0d8;border-color:#468847}.form-control-static{padding-top:7px;margin-bottom: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}.form-inline .radio,.form-inline .checkbox{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:none;margin-left:0}}.form-horizontal .control-label,.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 .form-group{margin-right:-15px;margin-left:-15px}.form-horizontal .form-group:before,.form-horizontal .form-group:after{display:table;content:" "}.form-horizontal .form-group:after{clear:both}.form-horizontal .form-group:before,.form-horizontal .form-group:after{display:table;content:" "}.form-horizontal .form-group:after{clear:both}@media(min-width:768px){.form-horizontal .control-label{text-align:right}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:normal;line-height:1.428571429;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;border:1px solid transparent;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.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,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{color:#333;background-color:#ebebeb;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: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-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.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: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:#428bca;border-color:#357ebd}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;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: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-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;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: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-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;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: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-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;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: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-link{font-weight:normal;color:#428bca;cursor:pointer;border-radius:0}.btn-link,.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:#2a6496;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:#999;text-decoration:none}.btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-xs{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs{padding:1px 5px}.btn-block{display:block;width:100%;padding-right:0;padding-left:0}.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;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@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';-webkit-font-smoothing:antialiased;font-style:normal;font-weight:normal;line-height:1}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-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-print:before{content:"\e045"}.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-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.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-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-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-briefcase:before{content:"\1f4bc"}.glyphicon-calendar:before{content:"\1f4c5"}.glyphicon-pushpin:before{content:"\1f4cc"}.glyphicon-paperclip:before{content:"\1f4ce"}.glyphicon-camera:before{content:"\1f4f7"}.glyphicon-lock:before{content:"\1f512"}.glyphicon-bell:before{content:"\1f514"}.glyphicon-bookmark:before{content:"\1f516"}.glyphicon-fire:before{content:"\1f525"}.glyphicon-wrench:before{content:"\1f527"}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid #000;border-right:4px solid transparent;border-bottom:0 dotted;border-left:4px solid transparent;content:""}.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;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.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.428571429;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#fff;text-decoration:none;background-color:#428bca}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#428bca;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.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-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.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{border-top:0 dotted;border-bottom:4px solid #000;content:""}.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}}.btn-default .caret{border-top-color:#333}.btn-primary .caret,.btn-success .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret{border-top-color:#fff}.dropup .btn-default .caret{border-bottom-color:#333}.dropup .btn-primary .caret,.dropup .btn-success .caret,.dropup .btn-warning .caret,.dropup .btn-danger .caret,.dropup .btn-info .caret{border-bottom-color:#fff}.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:focus,.btn-group-vertical>.btn:focus{outline:0}.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:before,.btn-toolbar:after{display:table;content:" "}.btn-toolbar:after{clear:both}.btn-toolbar:before,.btn-toolbar:after{display:table;content:" "}.btn-toolbar:after{clear:both}.btn-toolbar .btn-group{float:left}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group,.btn-toolbar>.btn-group+.btn-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-bottom-left-radius:0;border-top-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-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group-xs>.btn{padding:5px 10px;padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.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,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.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{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{display:table;content:" "}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{display:table;content:" "}.btn-group-vertical>.btn-group:after{clear:both}.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-right-radius:0;border-bottom-left-radius:4px;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child>.btn:last-child,.btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.btn-group-justified .btn{display:table-cell;float:none;width:1%}[data-toggle="buttons"]>.btn>input[type="radio"],[data-toggle="buttons"]>.btn>input[type="checkbox"]{display:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group.col{float:none;padding-right:0;padding-left:0}.input-group .form-control{width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:45px;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:45px;line-height:45px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group-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;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>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-4px}.input-group-btn>.btn:hover,.input-group-btn>.btn:active{z-index:2}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav:before,.nav:after{display:table;content:" "}.nav:after{clear:both}.nav:before,.nav:after{display:table;content:" "}.nav:after{clear:both}.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:#999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999;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:#428bca}.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.428571429;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{text-align:center}@media(min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}}.nav-tabs.nav-justified>li>a{margin-right:0;border-bottom:1px solid #ddd}.nav-tabs.nav-justified>.active>a{border-bottom-color:#fff}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:5px}.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:#428bca}.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{text-align:center}@media(min-width:768px){.nav-justified>li{display:table-cell;width:1%}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-bottom:1px solid #ddd}.nav-tabs-justified>.active>a{border-bottom-color:#fff}.tabbable:before,.tabbable:after{display:table;content:" "}.tabbable:after{clear:both}.tabbable:before,.tabbable:after{display:table;content:" "}.tabbable:after{clear:both}.tab-content>.tab-pane,.pill-content>.pill-pane{display:none}.tab-content>.active,.pill-content>.active{display:block}.nav .caret{border-top-color:#428bca;border-bottom-color:#428bca}.nav a:hover .caret{border-top-color:#2a6496;border-bottom-color:#2a6496}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;z-index:1000;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar:before,.navbar:after{display:table;content:" "}.navbar:after{clear:both}.navbar:before,.navbar:after{display:table;content:" "}.navbar:after{clear:both}@media(min-width:768px){.navbar{border-radius:4px}}.navbar-header:before,.navbar-header:after{display:table;content:" "}.navbar-header:after{clear:both}.navbar-header:before,.navbar-header:after{display:table;content:" "}.navbar-header:after{clear:both}@media(min-width:768px){.navbar-header{float:left}}.navbar-collapse{max-height:340px;padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse:before,.navbar-collapse:after{display:table;content:" "}.navbar-collapse:after{clear:both}.navbar-collapse:before,.navbar-collapse:after{display:table;content:" "}.navbar-collapse:after{clear:both}.navbar-collapse.in{overflow-y:auto}@media(min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-collapse .navbar-nav.navbar-left:first-child{margin-left:-15px}.navbar-collapse .navbar-nav.navbar-right:last-child{margin-right:-15px}.navbar-collapse .navbar-text:last-child{margin-right:0}}.container>.navbar-header,.container>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media(min-width:768px){.container>.navbar-header,.container>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{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;border-width:0 0 1px}@media(min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;z-index:1030}.navbar-fixed-bottom{bottom:0;margin-bottom:0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media(min-width:768px){.navbar>.container .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;border:1px solid transparent;border-radius:4px}.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;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}}@media(min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.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,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.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}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{float:none;margin-left:0}}@media(max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@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-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-nav.pull-right>li>.dropdown-menu,.navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-text{float:left;margin-top:15px;margin-bottom:15px}@media(min-width:768px){.navbar-text{margin-right:15px;margin-left:15px}}.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:#ccc}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e6e6e6}.navbar-default .navbar-nav>.dropdown>a:hover .caret,.navbar-default .navbar-nav>.dropdown>a:focus .caret{border-top-color:#333;border-bottom-color:#333}.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}.navbar-default .navbar-nav>.open>a .caret,.navbar-default .navbar-nav>.open>a:hover .caret,.navbar-default .navbar-nav>.open>a:focus .caret{border-top-color:#555;border-bottom-color:#555}.navbar-default .navbar-nav>.dropdown>a .caret{border-top-color:#777;border-bottom-color:#777}@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-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#999}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .navbar-nav>li>a{color:#999}.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}.navbar-inverse .navbar-nav>.dropdown>a:hover .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .navbar-nav>.dropdown>a .caret{border-top-color:#999;border-bottom-color:#999}.navbar-inverse .navbar-nav>.open>a .caret,.navbar-inverse .navbar-nav>.open>a:hover .caret,.navbar-inverse .navbar-nav>.open>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff}@media(max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.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:#999}.navbar-inverse .navbar-link:hover{color:#fff}.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:#999}.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.428571429;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-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{background-color:#eee}.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:#428bca;border-color:#428bca}.pagination>.disabled>span,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999;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-bottom-left-radius:6px;border-top-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-bottom-left-radius:3px;border-top-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:before,.pager:after{display:table;content:" "}.pager:after{clear:both}.pager:before,.pager:after{display:table;content:" "}.pager:after{clear:both}.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:#999;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}.label[href]:hover,.label[href]:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.label-default{background-color:#999}.label-default[href]:hover,.label-default[href]:focus{background-color:#808080}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.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:#999;border-radius:10px}.badge:empty{display:none}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.btn .badge{position:relative;top:-1px}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eee}.jumbotron h1{line-height:1;color:inherit}.jumbotron p{line-height:1.4}.container .jumbotron{border-radius:6px}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1{font-size:63px}}.thumbnail{display:inline-block;display:block;height:auto;max-width:100%;padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img{display:block;height:auto;max-width:100%}a.thumbnail:hover,a.thumbnail:focus{border-color:#428bca}.thumbnail>img{margin-right:auto;margin-left:auto}.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{padding-right:35px}.alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#356635}.alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#2d6987}.alert-warning{color:#c09853;background-color:#fcf8e3;border-color:#fbeed5}.alert-warning hr{border-top-color:#f8e5be}.alert-warning .alert-link{color:#a47e3c}.alert-danger{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.alert-danger hr{border-top-color:#e6c1c7}.alert-danger .alert-link{color:#953b39}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 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,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));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);background-image:-moz-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);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);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-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-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));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);background-image:-moz-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);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)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));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);background-image:-moz-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);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)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));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);background-image:-moz-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);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)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));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);background-image:-moz-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);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)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.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-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}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{text-decoration:none;background-color:#f5f5f5}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.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{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:#e1edf7}.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,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-body:before,.panel-body:after{display:table;content:" "}.panel-body:after{clear:both}.panel-body:before,.panel-body:after{display:table;content:" "}.panel-body:after{clear:both}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0}.panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel>.list-group .list-group-item:last-child{border-bottom:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.table{margin-bottom:0}.panel>.panel-body+.table{border-top:1px solid #ddd}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-title{margin-top:0;margin-bottom:0;font-size:16px}.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-group .panel{margin-bottom:0;overflow:hidden;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{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-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.panel-warning{border-color:#fbeed5}.panel-warning>.panel-heading{color:#c09853;background-color:#fcf8e3;border-color:#fbeed5}.panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#fbeed5}.panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#fbeed5}.panel-danger{border-color:#eed3d7}.panel-danger>.panel-heading{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#eed3d7}.panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#eed3d7}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.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,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,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;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}body.modal-open,.modal-open .navbar-fixed-top,.modal-open .navbar-fixed-bottom{margin-right:15px}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;display:none;overflow:auto;overflow-y:scroll}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.modal-dialog{z-index:1050;width:auto;padding:10px;margin-right:auto;margin-left:auto}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1030;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{min-height:16.428571429px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.428571429}.modal-body{position:relative;padding:20px}.modal-footer{padding:19px 20px 20px;margin-top:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer:before,.modal-footer:after{display:table;content:" "}.modal-footer:after{clear:both}.modal-footer:before,.modal-footer:after{display:table;content:" "}.modal-footer:after{clear:both}.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}@media screen and (min-width:768px){.modal-dialog{right:auto;left:50%;width:600px;padding-top:30px;padding-bottom:30px}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}}.tooltip{position:absolute;z-index:1030;display:block;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.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-top-color:#000;border-width:5px 5px 0}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-top-color:#000;border-width:5px 5px 0}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#000;border-width:5px 5px 5px 0}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#000;border-width:5px 0 5px 5px}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#000;border-width:0 5px 5px}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-bottom-color:#000;border-width:0 5px 5px}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-bottom-color:#000;border-width:0 5px 5px}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);background-clip:padding-box}.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;font-weight:normal;line-height:18px;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{border-width:10px;content:""}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0;content:" "}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,0.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0;content:" "}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);border-top-width:0}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0;content:" "}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,0.25);border-right-width:0}.popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0;content:" "}.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;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;height:auto;max-width:100%;line-height:1}.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,0.6);opacity:.5;filter:alpha(opacity=50)}.carousel-control.left{background-image:-webkit-gradient(linear,0 top,100% top,from(rgba(0,0,0,0.5)),to(rgba(0,0,0,0.0001)));background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,0.5) 0),color-stop(rgba(0,0,0,0.0001) 100%));background-image:-moz-linear-gradient(left,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000',endColorstr='#00000000',GradientType=1)}.carousel-control.right{right:0;left:auto;background-image:-webkit-gradient(linear,0 top,100% top,from(rgba(0,0,0,0.0001)),to(rgba(0,0,0,0.5)));background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,0.0001) 0),color-stop(rgba(0,0,0,0.5) 100%));background-image:-moz-linear-gradient(left,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%);background-image:linear-gradient(to right,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000',endColorstr='#80000000',GradientType=1)}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;left:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;margin-left:-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;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,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after{display:table;content:" "}.clearfix:after{clear:both}.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}.affix{position:fixed}@-ms-viewport{width:device-width}@media screen and (max-width:400px){@-ms-viewport{width:320px}}.hidden{display:none!important;visibility:hidden!important}.visible-xs{display:none!important}tr.visible-xs{display:none!important}th.visible-xs,td.visible-xs{display:none!important}@media(max-width:767px){.visible-xs{display:block!important}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-xs.visible-sm{display:block!important}tr.visible-xs.visible-sm{display:table-row!important}th.visible-xs.visible-sm,td.visible-xs.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-xs.visible-md{display:block!important}tr.visible-xs.visible-md{display:table-row!important}th.visible-xs.visible-md,td.visible-xs.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-xs.visible-lg{display:block!important}tr.visible-xs.visible-lg{display:table-row!important}th.visible-xs.visible-lg,td.visible-xs.visible-lg{display:table-cell!important}}.visible-sm{display:none!important}tr.visible-sm{display:none!important}th.visible-sm,td.visible-sm{display:none!important}@media(max-width:767px){.visible-sm.visible-xs{display:block!important}tr.visible-sm.visible-xs{display:table-row!important}th.visible-sm.visible-xs,td.visible-sm.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-sm{display:block!important}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-sm.visible-md{display:block!important}tr.visible-sm.visible-md{display:table-row!important}th.visible-sm.visible-md,td.visible-sm.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-sm.visible-lg{display:block!important}tr.visible-sm.visible-lg{display:table-row!important}th.visible-sm.visible-lg,td.visible-sm.visible-lg{display:table-cell!important}}.visible-md{display:none!important}tr.visible-md{display:none!important}th.visible-md,td.visible-md{display:none!important}@media(max-width:767px){.visible-md.visible-xs{display:block!important}tr.visible-md.visible-xs{display:table-row!important}th.visible-md.visible-xs,td.visible-md.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-md.visible-sm{display:block!important}tr.visible-md.visible-sm{display:table-row!important}th.visible-md.visible-sm,td.visible-md.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-md{display:block!important}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-md.visible-lg{display:block!important}tr.visible-md.visible-lg{display:table-row!important}th.visible-md.visible-lg,td.visible-md.visible-lg{display:table-cell!important}}.visible-lg{display:none!important}tr.visible-lg{display:none!important}th.visible-lg,td.visible-lg{display:none!important}@media(max-width:767px){.visible-lg.visible-xs{display:block!important}tr.visible-lg.visible-xs{display:table-row!important}th.visible-lg.visible-xs,td.visible-lg.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-lg.visible-sm{display:block!important}tr.visible-lg.visible-sm{display:table-row!important}th.visible-lg.visible-sm,td.visible-lg.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-lg.visible-md{display:block!important}tr.visible-lg.visible-md{display:table-row!important}th.visible-lg.visible-md,td.visible-lg.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-lg{display:block!important}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}.hidden-xs{display:block!important}tr.hidden-xs{display:table-row!important}th.hidden-xs,td.hidden-xs{display:table-cell!important}@media(max-width:767px){.hidden-xs{display:none!important}tr.hidden-xs{display:none!important}th.hidden-xs,td.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-xs.hidden-sm{display:none!important}tr.hidden-xs.hidden-sm{display:none!important}th.hidden-xs.hidden-sm,td.hidden-xs.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-xs.hidden-md{display:none!important}tr.hidden-xs.hidden-md{display:none!important}th.hidden-xs.hidden-md,td.hidden-xs.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-xs.hidden-lg{display:none!important}tr.hidden-xs.hidden-lg{display:none!important}th.hidden-xs.hidden-lg,td.hidden-xs.hidden-lg{display:none!important}}.hidden-sm{display:block!important}tr.hidden-sm{display:table-row!important}th.hidden-sm,td.hidden-sm{display:table-cell!important}@media(max-width:767px){.hidden-sm.hidden-xs{display:none!important}tr.hidden-sm.hidden-xs{display:none!important}th.hidden-sm.hidden-xs,td.hidden-sm.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}tr.hidden-sm{display:none!important}th.hidden-sm,td.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-sm.hidden-md{display:none!important}tr.hidden-sm.hidden-md{display:none!important}th.hidden-sm.hidden-md,td.hidden-sm.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-sm.hidden-lg{display:none!important}tr.hidden-sm.hidden-lg{display:none!important}th.hidden-sm.hidden-lg,td.hidden-sm.hidden-lg{display:none!important}}.hidden-md{display:block!important}tr.hidden-md{display:table-row!important}th.hidden-md,td.hidden-md{display:table-cell!important}@media(max-width:767px){.hidden-md.hidden-xs{display:none!important}tr.hidden-md.hidden-xs{display:none!important}th.hidden-md.hidden-xs,td.hidden-md.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-md.hidden-sm{display:none!important}tr.hidden-md.hidden-sm{display:none!important}th.hidden-md.hidden-sm,td.hidden-md.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}tr.hidden-md{display:none!important}th.hidden-md,td.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-md.hidden-lg{display:none!important}tr.hidden-md.hidden-lg{display:none!important}th.hidden-md.hidden-lg,td.hidden-md.hidden-lg{display:none!important}}.hidden-lg{display:block!important}tr.hidden-lg{display:table-row!important}th.hidden-lg,td.hidden-lg{display:table-cell!important}@media(max-width:767px){.hidden-lg.hidden-xs{display:none!important}tr.hidden-lg.hidden-xs{display:none!important}th.hidden-lg.hidden-xs,td.hidden-lg.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-lg.hidden-sm{display:none!important}tr.hidden-lg.hidden-sm{display:none!important}th.hidden-lg.hidden-sm,td.hidden-lg.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-lg.hidden-md{display:none!important}tr.hidden-lg.hidden-md{display:none!important}th.hidden-lg.hidden-md,td.hidden-lg.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-lg{display:none!important}tr.hidden-lg{display:none!important}th.hidden-lg,td.hidden-lg{display:none!important}}.visible-print{display:none!important}tr.visible-print{display:none!important}th.visible-print,td.visible-print{display:none!important}@media print{.visible-print{display:block!important}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}.hidden-print{display:none!important}tr.hidden-print{display:none!important}th.hidden-print,td.hidden-print{display:none!important}} \ No newline at end of file diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/ContosoClinic.csproj b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/ContosoClinic.csproj new file mode 100644 index 00000000..cd2de968 --- /dev/null +++ b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/ContosoClinic.csproj @@ -0,0 +1,333 @@ + + + + + + + Debug + AnyCPU + + + 2.0 + {CD00D85A-BCAC-4784-AAEE-F8A04F671168} + {349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc} + Library + Properties + ContosoClinic + ContosoClinic + v4.7.2 + false + true + + + + + + + + + + ..\packages\WebGrease.1.5.2\lib + + + true + full + false + bin\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\ + TRACE + prompt + 4 + + + + ..\packages\Antlr.3.4.1.9004\lib\Antlr3.Runtime.dll + + + ..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.dll + + + ..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.SqlServer.dll + + + ..\packages\Microsoft.AspNet.Identity.Core.2.2.1\lib\net45\Microsoft.AspNet.Identity.Core.dll + + + ..\packages\Microsoft.AspNet.Identity.EntityFramework.2.2.1\lib\net45\Microsoft.AspNet.Identity.EntityFramework.dll + + + ..\packages\Microsoft.AspNet.Identity.Owin.2.2.1\lib\net45\Microsoft.AspNet.Identity.Owin.dll + + + ..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\lib\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll + + + + ..\packages\Microsoft.Owin.3.0.1\lib\net45\Microsoft.Owin.dll + + + ..\packages\Microsoft.Owin.Host.SystemWeb.3.0.1\lib\net45\Microsoft.Owin.Host.SystemWeb.dll + + + ..\packages\Microsoft.Owin.Security.3.0.1\lib\net45\Microsoft.Owin.Security.dll + + + ..\packages\Microsoft.Owin.Security.Cookies.3.0.1\lib\net45\Microsoft.Owin.Security.Cookies.dll + + + ..\packages\Microsoft.Owin.Security.Facebook.3.0.1\lib\net45\Microsoft.Owin.Security.Facebook.dll + + + ..\packages\Microsoft.Owin.Security.Google.3.0.1\lib\net45\Microsoft.Owin.Security.Google.dll + + + ..\packages\Microsoft.Owin.Security.MicrosoftAccount.3.0.1\lib\net45\Microsoft.Owin.Security.MicrosoftAccount.dll + + + ..\packages\Microsoft.Owin.Security.OAuth.3.0.1\lib\net45\Microsoft.Owin.Security.OAuth.dll + + + ..\packages\Microsoft.Owin.Security.Twitter.3.0.1\lib\net45\Microsoft.Owin.Security.Twitter.dll + + + ..\packages\Microsoft.SqlServer.Management.AlwaysEncrypted.EnclaveProviders.1.0.0-beta\lib\net472\Microsoft.SqlServer.Management.AlwaysEncrypted.EnclaveProviders.dll + + + ..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll + + + ..\packages\Newtonsoft.Json.6.0.4\lib\net45\Newtonsoft.Json.dll + + + ..\packages\Owin.1.0\lib\net40\Owin.dll + + + + + + + + + + + + + + ..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.Helpers.dll + + + ..\packages\Microsoft.AspNet.Mvc.5.2.3\lib\net45\System.Web.Mvc.dll + + + ..\packages\Microsoft.AspNet.Web.Optimization.1.1.3\lib\net40\System.Web.Optimization.dll + + + ..\packages\Microsoft.AspNet.Razor.3.2.3\lib\net45\System.Web.Razor.dll + + + + ..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.WebPages.dll + + + ..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.WebPages.Deployment.dll + + + ..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.WebPages.Razor.dll + + + + + + + + + + + + ..\packages\WebGrease.1.5.2\lib\WebGrease.dll + + + + + + + + + + + + + + + Global.asax + + + + 201602170540262_Initial.cs + + + + 201602170605457_Visits.cs + + + + 201602170720063_Nullability.cs + + + + 201602170857179_Assignments.cs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Designer + + + Web.config + + + Web.config + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 201602170540262_Initial.cs + + + 201602170605457_Visits.cs + + + 201602170720063_Nullability.cs + + + 201602170857179_Assignments.cs + + + + 10.0 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + + + + + + + + + + + + True + True + 1192 + / + http://localhost:1192/ + False + False + + + False + + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + + + \ No newline at end of file diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Controllers/AccountController.cs b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Controllers/AccountController.cs new file mode 100644 index 00000000..34e8b0b8 --- /dev/null +++ b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Controllers/AccountController.cs @@ -0,0 +1,485 @@ +using System; +using System.Globalization; +using System.Linq; +using System.Security.Claims; +using System.Threading.Tasks; +using System.Web; +using System.Web.Mvc; +using Microsoft.AspNet.Identity; +using Microsoft.AspNet.Identity.Owin; +using Microsoft.Owin.Security; +using ContosoClinic.Models; + +namespace ContosoClinic.Controllers +{ + [Authorize] + public class AccountController : Controller + { + private ApplicationSignInManager _signInManager; + private ApplicationUserManager _userManager; + + public AccountController() + { + } + + public AccountController(ApplicationUserManager userManager, ApplicationSignInManager signInManager ) + { + UserManager = userManager; + SignInManager = signInManager; + } + + public ApplicationSignInManager SignInManager + { + get + { + return _signInManager ?? HttpContext.GetOwinContext().Get(); + } + private set + { + _signInManager = value; + } + } + + public ApplicationUserManager UserManager + { + get + { + return _userManager ?? HttpContext.GetOwinContext().GetUserManager(); + } + private set + { + _userManager = value; + } + } + + // + // GET: /Account/Login + [AllowAnonymous] + public ActionResult Login(string returnUrl) + { + ViewBag.ReturnUrl = returnUrl; + return View(); + } + + // + // POST: /Account/Login + [HttpPost] + [AllowAnonymous] + [ValidateAntiForgeryToken] + public async Task Login(LoginViewModel model, string returnUrl) + { + if (!ModelState.IsValid) + { + return View(model); + } + + // This doesn't count login failures towards account lockout + // To enable password failures to trigger account lockout, change to shouldLockout: true + var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false); + switch (result) + { + case SignInStatus.Success: + return RedirectToLocal(returnUrl); + case SignInStatus.LockedOut: + return View("Lockout"); + case SignInStatus.RequiresVerification: + return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe }); + case SignInStatus.Failure: + default: + ModelState.AddModelError("", "Invalid login attempt."); + return View(model); + } + } + + // + // GET: /Account/VerifyCode + [AllowAnonymous] + public async Task VerifyCode(string provider, string returnUrl, bool rememberMe) + { + // Require that the user has already logged in via username/password or external login + if (!await SignInManager.HasBeenVerifiedAsync()) + { + return View("Error"); + } + return View(new VerifyCodeViewModel { Provider = provider, ReturnUrl = returnUrl, RememberMe = rememberMe }); + } + + // + // POST: /Account/VerifyCode + [HttpPost] + [AllowAnonymous] + [ValidateAntiForgeryToken] + public async Task VerifyCode(VerifyCodeViewModel model) + { + if (!ModelState.IsValid) + { + return View(model); + } + + // The following code protects for brute force attacks against the two factor codes. + // If a user enters incorrect codes for a specified amount of time then the user account + // will be locked out for a specified amount of time. + // You can configure the account lockout settings in IdentityConfig + var result = await SignInManager.TwoFactorSignInAsync(model.Provider, model.Code, isPersistent: model.RememberMe, rememberBrowser: model.RememberBrowser); + switch (result) + { + case SignInStatus.Success: + return RedirectToLocal(model.ReturnUrl); + case SignInStatus.LockedOut: + return View("Lockout"); + case SignInStatus.Failure: + default: + ModelState.AddModelError("", "Invalid code."); + return View(model); + } + } + + // + // GET: /Account/Register + [AllowAnonymous] + public ActionResult Register() + { + return View(); + } + + // + // POST: /Account/Register + [HttpPost] + [AllowAnonymous] + [ValidateAntiForgeryToken] + public async Task Register(RegisterViewModel model) + { + if (ModelState.IsValid) + { + var user = new ApplicationUser { UserName = model.Email, Email = model.Email }; + var result = await UserManager.CreateAsync(user, model.Password); + if (result.Succeeded) + { + await SignInManager.SignInAsync(user, isPersistent:false, rememberBrowser:false); + + // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771 + // Send an email with this link + // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id); + // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme); + // await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking here"); + + return RedirectToAction("Index", "Home"); + } + AddErrors(result); + } + + // If we got this far, something failed, redisplay form + return View(model); + } + + // + // GET: /Account/ConfirmEmail + [AllowAnonymous] + public async Task ConfirmEmail(string userId, string code) + { + if (userId == null || code == null) + { + return View("Error"); + } + var result = await UserManager.ConfirmEmailAsync(userId, code); + return View(result.Succeeded ? "ConfirmEmail" : "Error"); + } + + // + // GET: /Account/ForgotPassword + [AllowAnonymous] + public ActionResult ForgotPassword() + { + return View(); + } + + // + // POST: /Account/ForgotPassword + [HttpPost] + [AllowAnonymous] + [ValidateAntiForgeryToken] + public async Task ForgotPassword(ForgotPasswordViewModel model) + { + if (ModelState.IsValid) + { + var user = await UserManager.FindByNameAsync(model.Email); + if (user == null || !(await UserManager.IsEmailConfirmedAsync(user.Id))) + { + // Don't reveal that the user does not exist or is not confirmed + return View("ForgotPasswordConfirmation"); + } + + // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771 + // Send an email with this link + // string code = await UserManager.GeneratePasswordResetTokenAsync(user.Id); + // var callbackUrl = Url.Action("ResetPassword", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme); + // await UserManager.SendEmailAsync(user.Id, "Reset Password", "Please reset your password by clicking here"); + // return RedirectToAction("ForgotPasswordConfirmation", "Account"); + } + + // If we got this far, something failed, redisplay form + return View(model); + } + + // + // GET: /Account/ForgotPasswordConfirmation + [AllowAnonymous] + public ActionResult ForgotPasswordConfirmation() + { + return View(); + } + + // + // GET: /Account/ResetPassword + [AllowAnonymous] + public ActionResult ResetPassword(string code) + { + return code == null ? View("Error") : View(); + } + + // + // POST: /Account/ResetPassword + [HttpPost] + [AllowAnonymous] + [ValidateAntiForgeryToken] + public async Task ResetPassword(ResetPasswordViewModel model) + { + if (!ModelState.IsValid) + { + return View(model); + } + var user = await UserManager.FindByNameAsync(model.Email); + if (user == null) + { + // Don't reveal that the user does not exist + return RedirectToAction("ResetPasswordConfirmation", "Account"); + } + var result = await UserManager.ResetPasswordAsync(user.Id, model.Code, model.Password); + if (result.Succeeded) + { + return RedirectToAction("ResetPasswordConfirmation", "Account"); + } + AddErrors(result); + return View(); + } + + // + // GET: /Account/ResetPasswordConfirmation + [AllowAnonymous] + public ActionResult ResetPasswordConfirmation() + { + return View(); + } + + // + // POST: /Account/ExternalLogin + [HttpPost] + [AllowAnonymous] + [ValidateAntiForgeryToken] + public ActionResult ExternalLogin(string provider, string returnUrl) + { + // Request a redirect to the external login provider + return new ChallengeResult(provider, Url.Action("ExternalLoginCallback", "Account", new { ReturnUrl = returnUrl })); + } + + // + // GET: /Account/SendCode + [AllowAnonymous] + public async Task SendCode(string returnUrl, bool rememberMe) + { + var userId = await SignInManager.GetVerifiedUserIdAsync(); + if (userId == null) + { + return View("Error"); + } + var userFactors = await UserManager.GetValidTwoFactorProvidersAsync(userId); + var factorOptions = userFactors.Select(purpose => new SelectListItem { Text = purpose, Value = purpose }).ToList(); + return View(new SendCodeViewModel { Providers = factorOptions, ReturnUrl = returnUrl, RememberMe = rememberMe }); + } + + // + // POST: /Account/SendCode + [HttpPost] + [AllowAnonymous] + [ValidateAntiForgeryToken] + public async Task SendCode(SendCodeViewModel model) + { + if (!ModelState.IsValid) + { + return View(); + } + + // Generate the token and send it + if (!await SignInManager.SendTwoFactorCodeAsync(model.SelectedProvider)) + { + return View("Error"); + } + return RedirectToAction("VerifyCode", new { Provider = model.SelectedProvider, ReturnUrl = model.ReturnUrl, RememberMe = model.RememberMe }); + } + + // + // GET: /Account/ExternalLoginCallback + [AllowAnonymous] + public async Task ExternalLoginCallback(string returnUrl) + { + var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync(); + if (loginInfo == null) + { + return RedirectToAction("Login"); + } + + // Sign in the user with this external login provider if the user already has a login + var result = await SignInManager.ExternalSignInAsync(loginInfo, isPersistent: false); + switch (result) + { + case SignInStatus.Success: + return RedirectToLocal(returnUrl); + case SignInStatus.LockedOut: + return View("Lockout"); + case SignInStatus.RequiresVerification: + return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = false }); + case SignInStatus.Failure: + default: + // If the user does not have an account, then prompt the user to create an account + ViewBag.ReturnUrl = returnUrl; + ViewBag.LoginProvider = loginInfo.Login.LoginProvider; + return View("ExternalLoginConfirmation", new ExternalLoginConfirmationViewModel { Email = loginInfo.Email }); + } + } + + // + // POST: /Account/ExternalLoginConfirmation + [HttpPost] + [AllowAnonymous] + [ValidateAntiForgeryToken] + public async Task ExternalLoginConfirmation(ExternalLoginConfirmationViewModel model, string returnUrl) + { + if (User.Identity.IsAuthenticated) + { + return RedirectToAction("Index", "Manage"); + } + + if (ModelState.IsValid) + { + // Get the information about the user from the external login provider + var info = await AuthenticationManager.GetExternalLoginInfoAsync(); + if (info == null) + { + return View("ExternalLoginFailure"); + } + var user = new ApplicationUser { UserName = model.Email, Email = model.Email }; + var result = await UserManager.CreateAsync(user); + if (result.Succeeded) + { + result = await UserManager.AddLoginAsync(user.Id, info.Login); + if (result.Succeeded) + { + await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false); + return RedirectToLocal(returnUrl); + } + } + AddErrors(result); + } + + ViewBag.ReturnUrl = returnUrl; + return View(model); + } + + // + // POST: /Account/LogOff + [HttpPost] + [ValidateAntiForgeryToken] + public ActionResult LogOff() + { + AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie); + return RedirectToAction("Index", "Home"); + } + + // + // GET: /Account/ExternalLoginFailure + [AllowAnonymous] + public ActionResult ExternalLoginFailure() + { + return View(); + } + + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (_userManager != null) + { + _userManager.Dispose(); + _userManager = null; + } + + if (_signInManager != null) + { + _signInManager.Dispose(); + _signInManager = null; + } + } + + base.Dispose(disposing); + } + + #region Helpers + // Used for XSRF protection when adding external logins + private const string XsrfKey = "XsrfId"; + + private IAuthenticationManager AuthenticationManager + { + get + { + return HttpContext.GetOwinContext().Authentication; + } + } + + private void AddErrors(IdentityResult result) + { + foreach (var error in result.Errors) + { + ModelState.AddModelError("", error); + } + } + + private ActionResult RedirectToLocal(string returnUrl) + { + if (Url.IsLocalUrl(returnUrl)) + { + return Redirect(returnUrl); + } + return RedirectToAction("Index", "Home"); + } + + internal class ChallengeResult : HttpUnauthorizedResult + { + public ChallengeResult(string provider, string redirectUri) + : this(provider, redirectUri, null) + { + } + + public ChallengeResult(string provider, string redirectUri, string userId) + { + LoginProvider = provider; + RedirectUri = redirectUri; + UserId = userId; + } + + public string LoginProvider { get; set; } + public string RedirectUri { get; set; } + public string UserId { get; set; } + + public override void ExecuteResult(ControllerContext context) + { + var properties = new AuthenticationProperties { RedirectUri = RedirectUri }; + if (UserId != null) + { + properties.Dictionary[XsrfKey] = UserId; + } + context.HttpContext.GetOwinContext().Authentication.Challenge(properties, LoginProvider); + } + } + #endregion + } +} \ No newline at end of file diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Controllers/HomeController.cs b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Controllers/HomeController.cs new file mode 100644 index 00000000..45f862b7 --- /dev/null +++ b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Controllers/HomeController.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.Mvc; + +namespace ContosoClinic.Controllers +{ + public class HomeController : Controller + { + public ActionResult Index() + { + return View(); + } + + public ActionResult About() + { + ViewBag.Message = "Your application description page."; + + return View(); + } + + public ActionResult Contact() + { + ViewBag.Message = "Your contact page."; + + return View(); + } + } +} \ No newline at end of file diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Controllers/ManageController.cs b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Controllers/ManageController.cs new file mode 100644 index 00000000..7a21a1c4 --- /dev/null +++ b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Controllers/ManageController.cs @@ -0,0 +1,387 @@ +using System; +using System.Linq; +using System.Threading.Tasks; +using System.Web; +using System.Web.Mvc; +using Microsoft.AspNet.Identity; +using Microsoft.AspNet.Identity.Owin; +using Microsoft.Owin.Security; +using ContosoClinic.Models; + +namespace ContosoClinic.Controllers +{ + [Authorize] + public class ManageController : Controller + { + private ApplicationSignInManager _signInManager; + private ApplicationUserManager _userManager; + + public ManageController() + { + } + + public ManageController(ApplicationUserManager userManager, ApplicationSignInManager signInManager) + { + UserManager = userManager; + SignInManager = signInManager; + } + + public ApplicationSignInManager SignInManager + { + get + { + return _signInManager ?? HttpContext.GetOwinContext().Get(); + } + private set + { + _signInManager = value; + } + } + + public ApplicationUserManager UserManager + { + get + { + return _userManager ?? HttpContext.GetOwinContext().GetUserManager(); + } + private set + { + _userManager = value; + } + } + + // + // GET: /Manage/Index + public async Task Index(ManageMessageId? message) + { + ViewBag.StatusMessage = + message == ManageMessageId.ChangePasswordSuccess ? "Your password has been changed." + : message == ManageMessageId.SetPasswordSuccess ? "Your password has been set." + : message == ManageMessageId.SetTwoFactorSuccess ? "Your two-factor authentication provider has been set." + : message == ManageMessageId.Error ? "An error has occurred." + : message == ManageMessageId.AddPhoneSuccess ? "Your phone number was added." + : message == ManageMessageId.RemovePhoneSuccess ? "Your phone number was removed." + : ""; + + var userId = User.Identity.GetUserId(); + var model = new IndexViewModel + { + HasPassword = HasPassword(), + PhoneNumber = await UserManager.GetPhoneNumberAsync(userId), + TwoFactor = await UserManager.GetTwoFactorEnabledAsync(userId), + Logins = await UserManager.GetLoginsAsync(userId), + BrowserRemembered = await AuthenticationManager.TwoFactorBrowserRememberedAsync(userId) + }; + return View(model); + } + + // + // POST: /Manage/RemoveLogin + [HttpPost] + [ValidateAntiForgeryToken] + public async Task RemoveLogin(string loginProvider, string providerKey) + { + ManageMessageId? message; + var result = await UserManager.RemoveLoginAsync(User.Identity.GetUserId(), new UserLoginInfo(loginProvider, providerKey)); + if (result.Succeeded) + { + var user = await UserManager.FindByIdAsync(User.Identity.GetUserId()); + if (user != null) + { + await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false); + } + message = ManageMessageId.RemoveLoginSuccess; + } + else + { + message = ManageMessageId.Error; + } + return RedirectToAction("ManageLogins", new { Message = message }); + } + + // + // GET: /Manage/AddPhoneNumber + public ActionResult AddPhoneNumber() + { + return View(); + } + + // + // POST: /Manage/AddPhoneNumber + [HttpPost] + [ValidateAntiForgeryToken] + public async Task AddPhoneNumber(AddPhoneNumberViewModel model) + { + if (!ModelState.IsValid) + { + return View(model); + } + // Generate the token and send it + var code = await UserManager.GenerateChangePhoneNumberTokenAsync(User.Identity.GetUserId(), model.Number); + if (UserManager.SmsService != null) + { + var message = new IdentityMessage + { + Destination = model.Number, + Body = "Your security code is: " + code + }; + await UserManager.SmsService.SendAsync(message); + } + return RedirectToAction("VerifyPhoneNumber", new { PhoneNumber = model.Number }); + } + + // + // POST: /Manage/EnableTwoFactorAuthentication + [HttpPost] + [ValidateAntiForgeryToken] + public async Task EnableTwoFactorAuthentication() + { + await UserManager.SetTwoFactorEnabledAsync(User.Identity.GetUserId(), true); + var user = await UserManager.FindByIdAsync(User.Identity.GetUserId()); + if (user != null) + { + await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false); + } + return RedirectToAction("Index", "Manage"); + } + + // + // POST: /Manage/DisableTwoFactorAuthentication + [HttpPost] + [ValidateAntiForgeryToken] + public async Task DisableTwoFactorAuthentication() + { + await UserManager.SetTwoFactorEnabledAsync(User.Identity.GetUserId(), false); + var user = await UserManager.FindByIdAsync(User.Identity.GetUserId()); + if (user != null) + { + await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false); + } + return RedirectToAction("Index", "Manage"); + } + + // + // GET: /Manage/VerifyPhoneNumber + public async Task VerifyPhoneNumber(string phoneNumber) + { + var code = await UserManager.GenerateChangePhoneNumberTokenAsync(User.Identity.GetUserId(), phoneNumber); + // Send an SMS through the SMS provider to verify the phone number + return phoneNumber == null ? View("Error") : View(new VerifyPhoneNumberViewModel { PhoneNumber = phoneNumber }); + } + + // + // POST: /Manage/VerifyPhoneNumber + [HttpPost] + [ValidateAntiForgeryToken] + public async Task VerifyPhoneNumber(VerifyPhoneNumberViewModel model) + { + if (!ModelState.IsValid) + { + return View(model); + } + var result = await UserManager.ChangePhoneNumberAsync(User.Identity.GetUserId(), model.PhoneNumber, model.Code); + if (result.Succeeded) + { + var user = await UserManager.FindByIdAsync(User.Identity.GetUserId()); + if (user != null) + { + await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false); + } + return RedirectToAction("Index", new { Message = ManageMessageId.AddPhoneSuccess }); + } + // If we got this far, something failed, redisplay form + ModelState.AddModelError("", "Failed to verify phone"); + return View(model); + } + + // + // GET: /Manage/RemovePhoneNumber + public async Task RemovePhoneNumber() + { + var result = await UserManager.SetPhoneNumberAsync(User.Identity.GetUserId(), null); + if (!result.Succeeded) + { + return RedirectToAction("Index", new { Message = ManageMessageId.Error }); + } + var user = await UserManager.FindByIdAsync(User.Identity.GetUserId()); + if (user != null) + { + await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false); + } + return RedirectToAction("Index", new { Message = ManageMessageId.RemovePhoneSuccess }); + } + + // + // GET: /Manage/ChangePassword + public ActionResult ChangePassword() + { + return View(); + } + + // + // POST: /Manage/ChangePassword + [HttpPost] + [ValidateAntiForgeryToken] + public async Task ChangePassword(ChangePasswordViewModel model) + { + if (!ModelState.IsValid) + { + return View(model); + } + var result = await UserManager.ChangePasswordAsync(User.Identity.GetUserId(), model.OldPassword, model.NewPassword); + if (result.Succeeded) + { + var user = await UserManager.FindByIdAsync(User.Identity.GetUserId()); + if (user != null) + { + await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false); + } + return RedirectToAction("Index", new { Message = ManageMessageId.ChangePasswordSuccess }); + } + AddErrors(result); + return View(model); + } + + // + // GET: /Manage/SetPassword + public ActionResult SetPassword() + { + return View(); + } + + // + // POST: /Manage/SetPassword + [HttpPost] + [ValidateAntiForgeryToken] + public async Task SetPassword(SetPasswordViewModel model) + { + if (ModelState.IsValid) + { + var result = await UserManager.AddPasswordAsync(User.Identity.GetUserId(), model.NewPassword); + if (result.Succeeded) + { + var user = await UserManager.FindByIdAsync(User.Identity.GetUserId()); + if (user != null) + { + await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false); + } + return RedirectToAction("Index", new { Message = ManageMessageId.SetPasswordSuccess }); + } + AddErrors(result); + } + + // If we got this far, something failed, redisplay form + return View(model); + } + + // + // GET: /Manage/ManageLogins + public async Task ManageLogins(ManageMessageId? message) + { + ViewBag.StatusMessage = + message == ManageMessageId.RemoveLoginSuccess ? "The external login was removed." + : message == ManageMessageId.Error ? "An error has occurred." + : ""; + var user = await UserManager.FindByIdAsync(User.Identity.GetUserId()); + if (user == null) + { + return View("Error"); + } + var userLogins = await UserManager.GetLoginsAsync(User.Identity.GetUserId()); + var otherLogins = AuthenticationManager.GetExternalAuthenticationTypes().Where(auth => userLogins.All(ul => auth.AuthenticationType != ul.LoginProvider)).ToList(); + ViewBag.ShowRemoveButton = user.PasswordHash != null || userLogins.Count > 1; + return View(new ManageLoginsViewModel + { + CurrentLogins = userLogins, + OtherLogins = otherLogins + }); + } + + // + // POST: /Manage/LinkLogin + [HttpPost] + [ValidateAntiForgeryToken] + public ActionResult LinkLogin(string provider) + { + // Request a redirect to the external login provider to link a login for the current user + return new AccountController.ChallengeResult(provider, Url.Action("LinkLoginCallback", "Manage"), User.Identity.GetUserId()); + } + + // + // GET: /Manage/LinkLoginCallback + public async Task LinkLoginCallback() + { + var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync(XsrfKey, User.Identity.GetUserId()); + if (loginInfo == null) + { + return RedirectToAction("ManageLogins", new { Message = ManageMessageId.Error }); + } + var result = await UserManager.AddLoginAsync(User.Identity.GetUserId(), loginInfo.Login); + return result.Succeeded ? RedirectToAction("ManageLogins") : RedirectToAction("ManageLogins", new { Message = ManageMessageId.Error }); + } + + protected override void Dispose(bool disposing) + { + if (disposing && _userManager != null) + { + _userManager.Dispose(); + _userManager = null; + } + + base.Dispose(disposing); + } + +#region Helpers + // Used for XSRF protection when adding external logins + private const string XsrfKey = "XsrfId"; + + private IAuthenticationManager AuthenticationManager + { + get + { + return HttpContext.GetOwinContext().Authentication; + } + } + + private void AddErrors(IdentityResult result) + { + foreach (var error in result.Errors) + { + ModelState.AddModelError("", error); + } + } + + private bool HasPassword() + { + var user = UserManager.FindById(User.Identity.GetUserId()); + if (user != null) + { + return user.PasswordHash != null; + } + return false; + } + + private bool HasPhoneNumber() + { + var user = UserManager.FindById(User.Identity.GetUserId()); + if (user != null) + { + return user.PhoneNumber != null; + } + return false; + } + + public enum ManageMessageId + { + AddPhoneSuccess, + ChangePasswordSuccess, + SetTwoFactorSuccess, + SetPasswordSuccess, + RemoveLoginSuccess, + RemovePhoneSuccess, + Error + } + +#endregion + } +} \ No newline at end of file diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Controllers/PatientsController.cs b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Controllers/PatientsController.cs new file mode 100644 index 00000000..18695f3f --- /dev/null +++ b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Controllers/PatientsController.cs @@ -0,0 +1,141 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.Entity; +using System.Linq; +using System.Net; +using System.Web; +using System.Web.Mvc; +using ContosoClinic.Models; + +namespace ContosoClinic.Controllers +{ + public class PatientsController : Controller + { + private ApplicationDbContext db = new ApplicationDbContext(); + + // GET: Patients + public ActionResult Index(string searchString, int? maxAgeString) + { + var patients = from p in db.Patients + select p; + if (!String.IsNullOrEmpty(searchString)) + { + patients = patients.Where(s => s.FirstName.Contains(searchString) + || s.LastName.Contains(searchString) + || s.SSN.Contains(searchString)); + } + if (maxAgeString != null) + { + int maxAge = maxAgeString.Value; + DateTime minBirthDate = DateTime.Now.AddYears(-1 * maxAge); + patients = patients.Where(s => s.BirthDate >= minBirthDate); + } + return View(patients.ToList()); + } + + // GET: Patients/Details/5 + public ActionResult Details(int? id) + { + if (id == null) + { + return new HttpStatusCodeResult(HttpStatusCode.BadRequest); + } + Patient patient = db.Patients.Find(id); + if (patient == null) + { + return HttpNotFound(); + } + return View(patient); + } + + // GET: Patients/Create + public ActionResult Create() + { + return View(); + } + + // POST: Patients/Create + // To protect from overposting attacks, please enable the specific properties you want to bind to, for + // more details see http://go.microsoft.com/fwlink/?LinkId=317598. + [HttpPost] + [ValidateAntiForgeryToken] + public ActionResult Create([Bind(Include = "PatientID,SSN,FirstName,LastName,MiddleName,StreetAddress,City,ZipCode,State,BirthDate")] Patient patient) + { + if (ModelState.IsValid) + { + db.Patients.Add(patient); + db.SaveChanges(); + return RedirectToAction("Index"); + } + + return View(patient); + } + + // GET: Patients/Edit/5 + public ActionResult Edit(int? id) + { + if (id == null) + { + return new HttpStatusCodeResult(HttpStatusCode.BadRequest); + } + Patient patient = db.Patients.Find(id); + if (patient == null) + { + return HttpNotFound(); + } + return View(patient); + } + + // POST: Patients/Edit/5 + // To protect from overposting attacks, please enable the specific properties you want to bind to, for + // more details see http://go.microsoft.com/fwlink/?LinkId=317598. + [HttpPost] + [ValidateAntiForgeryToken] + public ActionResult Edit([Bind(Include = "PatientID,SSN,FirstName,LastName,MiddleName,StreetAddress,City,ZipCode,State,BirthDate")] Patient patient) + { + if (ModelState.IsValid) + { + db.Entry(patient).State = EntityState.Modified; + db.SaveChanges(); + return RedirectToAction("Index"); + } + return View(patient); + } + + // GET: Patients/Delete/5 + public ActionResult Delete(int? id) + { + if (id == null) + { + return new HttpStatusCodeResult(HttpStatusCode.BadRequest); + } + Patient patient = db.Patients.Find(id); + if (patient == null) + { + return HttpNotFound(); + } + return View(patient); + } + + // POST: Patients/Delete/5 + [HttpPost, ActionName("Delete")] + [ValidateAntiForgeryToken] + public ActionResult DeleteConfirmed(int id) + { + Patient patient = db.Patients.Find(id); + db.Patients.Remove(patient); + db.SaveChanges(); + return RedirectToAction("Index"); + } + + protected override void Dispose(bool disposing) + { + if (disposing) + { + db.Dispose(); + } + base.Dispose(disposing); + } + } +} diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Controllers/VisitsController.cs b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Controllers/VisitsController.cs new file mode 100644 index 00000000..e9b04627 --- /dev/null +++ b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Controllers/VisitsController.cs @@ -0,0 +1,132 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.Entity; +using System.Linq; +using System.Net; +using System.Web; +using System.Web.Mvc; +using ContosoClinic.Models; + +namespace ContosoClinic.Controllers +{ + public class VisitsController : Controller + { + private ApplicationDbContext db = new ApplicationDbContext(); + + // GET: Visits + public ActionResult Index() + { + var visits = db.Visits.Include(v => v.Patient); + return View(visits.ToList()); + } + + // GET: Visits/Details/5 + public ActionResult Details(int? id) + { + if (id == null) + { + return new HttpStatusCodeResult(HttpStatusCode.BadRequest); + } + Visit visit = db.Visits.Find(id); + if (visit == null) + { + return HttpNotFound(); + } + return View(visit); + } + + // GET: Visits/Create + public ActionResult Create() + { + ViewBag.PatientID = new SelectList(db.Patients, "PatientID", "SSN"); + return View(); + } + + // POST: Visits/Create + // To protect from overposting attacks, please enable the specific properties you want to bind to, for + // more details see http://go.microsoft.com/fwlink/?LinkId=317598. + [HttpPost] + [ValidateAntiForgeryToken] + public ActionResult Create([Bind(Include = "VisitID,PatientID,Date,Reason,Treatment,FollowUpDate")] Visit visit) + { + if (ModelState.IsValid) + { + db.Visits.Add(visit); + db.SaveChanges(); + return RedirectToAction("Index"); + } + + ViewBag.PatientID = new SelectList(db.Patients, "PatientID", "SSN", visit.PatientID); + return View(visit); + } + + // GET: Visits/Edit/5 + public ActionResult Edit(int? id) + { + if (id == null) + { + return new HttpStatusCodeResult(HttpStatusCode.BadRequest); + } + Visit visit = db.Visits.Find(id); + if (visit == null) + { + return HttpNotFound(); + } + ViewBag.PatientID = new SelectList(db.Patients, "PatientID", "SSN", visit.PatientID); + return View(visit); + } + + // POST: Visits/Edit/5 + // To protect from overposting attacks, please enable the specific properties you want to bind to, for + // more details see http://go.microsoft.com/fwlink/?LinkId=317598. + [HttpPost] + [ValidateAntiForgeryToken] + public ActionResult Edit([Bind(Include = "VisitID,PatientID,Date,Reason,Treatment,FollowUpDate")] Visit visit) + { + if (ModelState.IsValid) + { + db.Entry(visit).State = EntityState.Modified; + db.SaveChanges(); + return RedirectToAction("Index"); + } + ViewBag.PatientID = new SelectList(db.Patients, "PatientID", "SSN", visit.PatientID); + return View(visit); + } + + // GET: Visits/Delete/5 + public ActionResult Delete(int? id) + { + if (id == null) + { + return new HttpStatusCodeResult(HttpStatusCode.BadRequest); + } + Visit visit = db.Visits.Find(id); + if (visit == null) + { + return HttpNotFound(); + } + return View(visit); + } + + // POST: Visits/Delete/5 + [HttpPost, ActionName("Delete")] + [ValidateAntiForgeryToken] + public ActionResult DeleteConfirmed(int id) + { + Visit visit = db.Visits.Find(id); + db.Visits.Remove(visit); + db.SaveChanges(); + return RedirectToAction("Index"); + } + + protected override void Dispose(bool disposing) + { + if (disposing) + { + db.Dispose(); + } + base.Dispose(disposing); + } + } +} diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Global.asax b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Global.asax new file mode 100644 index 00000000..dc558921 --- /dev/null +++ b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Global.asax @@ -0,0 +1 @@ +<%@ Application Codebehind="Global.asax.cs" Inherits="ContosoClinic.MvcApplication" Language="C#" %> diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Global.asax.cs b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Global.asax.cs new file mode 100644 index 00000000..5fb12f15 --- /dev/null +++ b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Global.asax.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.Mvc; +using System.Web.Optimization; +using System.Web.Routing; + +namespace ContosoClinic +{ + public class MvcApplication : System.Web.HttpApplication + { + protected void Application_Start() + { + AreaRegistration.RegisterAllAreas(); + FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); + RouteConfig.RegisterRoutes(RouteTable.Routes); + BundleConfig.RegisterBundles(BundleTable.Bundles); + } + } +} diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170540262_Initial.Designer.cs b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170540262_Initial.Designer.cs new file mode 100644 index 00000000..489a2ba3 --- /dev/null +++ b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170540262_Initial.Designer.cs @@ -0,0 +1,29 @@ +// +namespace ContosoClinic.Migrations +{ + using System.CodeDom.Compiler; + using System.Data.Entity.Migrations; + using System.Data.Entity.Migrations.Infrastructure; + using System.Resources; + + [GeneratedCode("EntityFramework.Migrations", "6.1.3-40302")] + public sealed partial class Initial : IMigrationMetadata + { + private readonly ResourceManager Resources = new ResourceManager(typeof(Initial)); + + string IMigrationMetadata.Id + { + get { return "201602170540262_Initial"; } + } + + string IMigrationMetadata.Source + { + get { return null; } + } + + string IMigrationMetadata.Target + { + get { return Resources.GetString("Target"); } + } + } +} diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170540262_Initial.cs b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170540262_Initial.cs new file mode 100644 index 00000000..cafbf8c9 --- /dev/null +++ b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170540262_Initial.cs @@ -0,0 +1,117 @@ +namespace ContosoClinic.Migrations +{ + using System; + using System.Data.Entity.Migrations; + + public partial class Initial : DbMigration + { + public override void Up() + { + CreateTable( + "dbo.Patients", + c => new + { + PatientID = c.Int(nullable: false, identity: true), + SSN = c.String(maxLength: 11, fixedLength: true, unicode: false), + FirstName = c.String(maxLength: 50), + LastName = c.String(maxLength: 50), + MiddleName = c.String(maxLength: 50), + StreetAddress = c.String(maxLength: 50), + City = c.String(maxLength: 50), + ZipCode = c.String(maxLength: 5, fixedLength: true, unicode: false), + State = c.String(maxLength: 2, fixedLength: true, unicode: false), + BirthDate = c.DateTime(nullable: false, storeType: "date"), + }) + .PrimaryKey(t => t.PatientID); + + CreateTable( + "dbo.AspNetRoles", + c => new + { + Id = c.String(nullable: false, maxLength: 128), + Name = c.String(nullable: false, maxLength: 256), + }) + .PrimaryKey(t => t.Id) + .Index(t => t.Name, unique: true, name: "RoleNameIndex"); + + CreateTable( + "dbo.AspNetUserRoles", + c => new + { + UserId = c.String(nullable: false, maxLength: 128), + RoleId = c.String(nullable: false, maxLength: 128), + }) + .PrimaryKey(t => new { t.UserId, t.RoleId }) + .ForeignKey("dbo.AspNetRoles", t => t.RoleId, cascadeDelete: true) + .ForeignKey("dbo.AspNetUsers", t => t.UserId, cascadeDelete: true) + .Index(t => t.UserId) + .Index(t => t.RoleId); + + CreateTable( + "dbo.AspNetUsers", + c => new + { + Id = c.String(nullable: false, maxLength: 128), + Email = c.String(maxLength: 256), + EmailConfirmed = c.Boolean(nullable: false), + PasswordHash = c.String(), + SecurityStamp = c.String(), + PhoneNumber = c.String(), + PhoneNumberConfirmed = c.Boolean(nullable: false), + TwoFactorEnabled = c.Boolean(nullable: false), + LockoutEndDateUtc = c.DateTime(), + LockoutEnabled = c.Boolean(nullable: false), + AccessFailedCount = c.Int(nullable: false), + UserName = c.String(nullable: false, maxLength: 256), + }) + .PrimaryKey(t => t.Id) + .Index(t => t.UserName, unique: true, name: "UserNameIndex"); + + CreateTable( + "dbo.AspNetUserClaims", + c => new + { + Id = c.Int(nullable: false, identity: true), + UserId = c.String(nullable: false, maxLength: 128), + ClaimType = c.String(), + ClaimValue = c.String(), + }) + .PrimaryKey(t => t.Id) + .ForeignKey("dbo.AspNetUsers", t => t.UserId, cascadeDelete: true) + .Index(t => t.UserId); + + CreateTable( + "dbo.AspNetUserLogins", + c => new + { + LoginProvider = c.String(nullable: false, maxLength: 128), + ProviderKey = c.String(nullable: false, maxLength: 128), + UserId = c.String(nullable: false, maxLength: 128), + }) + .PrimaryKey(t => new { t.LoginProvider, t.ProviderKey, t.UserId }) + .ForeignKey("dbo.AspNetUsers", t => t.UserId, cascadeDelete: true) + .Index(t => t.UserId); + + } + + public override void Down() + { + DropForeignKey("dbo.AspNetUserRoles", "UserId", "dbo.AspNetUsers"); + DropForeignKey("dbo.AspNetUserLogins", "UserId", "dbo.AspNetUsers"); + DropForeignKey("dbo.AspNetUserClaims", "UserId", "dbo.AspNetUsers"); + DropForeignKey("dbo.AspNetUserRoles", "RoleId", "dbo.AspNetRoles"); + DropIndex("dbo.AspNetUserLogins", new[] { "UserId" }); + DropIndex("dbo.AspNetUserClaims", new[] { "UserId" }); + DropIndex("dbo.AspNetUsers", "UserNameIndex"); + DropIndex("dbo.AspNetUserRoles", new[] { "RoleId" }); + DropIndex("dbo.AspNetUserRoles", new[] { "UserId" }); + DropIndex("dbo.AspNetRoles", "RoleNameIndex"); + DropTable("dbo.AspNetUserLogins"); + DropTable("dbo.AspNetUserClaims"); + DropTable("dbo.AspNetUsers"); + DropTable("dbo.AspNetUserRoles"); + DropTable("dbo.AspNetRoles"); + DropTable("dbo.Patients"); + } + } +} diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170540262_Initial.resx b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170540262_Initial.resx new file mode 100644 index 00000000..0b2b98c6 --- /dev/null +++ b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170540262_Initial.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 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 + + + dbo + + \ No newline at end of file diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170605457_Visits.Designer.cs b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170605457_Visits.Designer.cs new file mode 100644 index 00000000..8ff06909 --- /dev/null +++ b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170605457_Visits.Designer.cs @@ -0,0 +1,29 @@ +// +namespace ContosoClinic.Migrations +{ + using System.CodeDom.Compiler; + using System.Data.Entity.Migrations; + using System.Data.Entity.Migrations.Infrastructure; + using System.Resources; + + [GeneratedCode("EntityFramework.Migrations", "6.1.3-40302")] + public sealed partial class Visits : IMigrationMetadata + { + private readonly ResourceManager Resources = new ResourceManager(typeof(Visits)); + + string IMigrationMetadata.Id + { + get { return "201602170605457_Visits"; } + } + + string IMigrationMetadata.Source + { + get { return null; } + } + + string IMigrationMetadata.Target + { + get { return Resources.GetString("Target"); } + } + } +} diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170605457_Visits.cs b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170605457_Visits.cs new file mode 100644 index 00000000..a69241c7 --- /dev/null +++ b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170605457_Visits.cs @@ -0,0 +1,34 @@ +namespace ContosoClinic.Migrations +{ + using System; + using System.Data.Entity.Migrations; + + public partial class Visits : DbMigration + { + public override void Up() + { + CreateTable( + "dbo.Visits", + c => new + { + VisitID = c.Int(nullable: false, identity: true), + PatientID = c.Int(nullable: false), + Date = c.DateTime(nullable: false, storeType: "date"), + Reason = c.String(maxLength: 4000), + Treatment = c.String(maxLength: 4000), + FollowUpDate = c.DateTime(storeType: "date"), + }) + .PrimaryKey(t => t.VisitID) + .ForeignKey("dbo.Patients", t => t.PatientID, cascadeDelete: true) + .Index(t => t.PatientID); + + } + + public override void Down() + { + DropForeignKey("dbo.Visits", "PatientID", "dbo.Patients"); + DropIndex("dbo.Visits", new[] { "PatientID" }); + DropTable("dbo.Visits"); + } + } +} diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170605457_Visits.resx b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170605457_Visits.resx new file mode 100644 index 00000000..17be947c --- /dev/null +++ b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170605457_Visits.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 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 + + + dbo + + \ No newline at end of file diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170720063_Nullability.Designer.cs b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170720063_Nullability.Designer.cs new file mode 100644 index 00000000..862f1f57 --- /dev/null +++ b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170720063_Nullability.Designer.cs @@ -0,0 +1,29 @@ +// +namespace ContosoClinic.Migrations +{ + using System.CodeDom.Compiler; + using System.Data.Entity.Migrations; + using System.Data.Entity.Migrations.Infrastructure; + using System.Resources; + + [GeneratedCode("EntityFramework.Migrations", "6.1.3-40302")] + public sealed partial class Nullability : IMigrationMetadata + { + private readonly ResourceManager Resources = new ResourceManager(typeof(Nullability)); + + string IMigrationMetadata.Id + { + get { return "201602170720063_Nullability"; } + } + + string IMigrationMetadata.Source + { + get { return null; } + } + + string IMigrationMetadata.Target + { + get { return Resources.GetString("Target"); } + } + } +} diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170720063_Nullability.cs b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170720063_Nullability.cs new file mode 100644 index 00000000..2d37a209 --- /dev/null +++ b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170720063_Nullability.cs @@ -0,0 +1,32 @@ +namespace ContosoClinic.Migrations +{ + using System; + using System.Data.Entity.Migrations; + + public partial class Nullability : DbMigration + { + public override void Up() + { + AlterColumn("dbo.Patients", "SSN", c => c.String(nullable: false, maxLength: 11, fixedLength: true, unicode: false)); + AlterColumn("dbo.Patients", "LastName", c => c.String(nullable: false, maxLength: 50)); + AlterColumn("dbo.Patients", "StreetAddress", c => c.String(nullable: false, maxLength: 50)); + AlterColumn("dbo.Patients", "City", c => c.String(nullable: false, maxLength: 50)); + AlterColumn("dbo.Patients", "ZipCode", c => c.String(nullable: false, maxLength: 5, fixedLength: true, unicode: false)); + AlterColumn("dbo.Patients", "State", c => c.String(nullable: false, maxLength: 2, fixedLength: true, unicode: false)); + AlterColumn("dbo.Visits", "Reason", c => c.String(nullable: false, maxLength: 4000)); + AlterColumn("dbo.Visits", "Treatment", c => c.String(nullable: false, maxLength: 4000)); + } + + public override void Down() + { + AlterColumn("dbo.Visits", "Treatment", c => c.String(maxLength: 4000)); + AlterColumn("dbo.Visits", "Reason", c => c.String(maxLength: 4000)); + AlterColumn("dbo.Patients", "State", c => c.String(maxLength: 2, fixedLength: true, unicode: false)); + AlterColumn("dbo.Patients", "ZipCode", c => c.String(maxLength: 5, fixedLength: true, unicode: false)); + AlterColumn("dbo.Patients", "City", c => c.String(maxLength: 50)); + AlterColumn("dbo.Patients", "StreetAddress", c => c.String(maxLength: 50)); + AlterColumn("dbo.Patients", "LastName", c => c.String(maxLength: 50)); + AlterColumn("dbo.Patients", "SSN", c => c.String(maxLength: 11, fixedLength: true, unicode: false)); + } + } +} diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170720063_Nullability.resx b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170720063_Nullability.resx new file mode 100644 index 00000000..f8f4ec0e --- /dev/null +++ b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170720063_Nullability.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 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 + + + dbo + + \ No newline at end of file diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170857179_Assignments.Designer.cs b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170857179_Assignments.Designer.cs new file mode 100644 index 00000000..d34fbf68 --- /dev/null +++ b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170857179_Assignments.Designer.cs @@ -0,0 +1,29 @@ +// +namespace ContosoClinic.Migrations +{ + using System.CodeDom.Compiler; + using System.Data.Entity.Migrations; + using System.Data.Entity.Migrations.Infrastructure; + using System.Resources; + + [GeneratedCode("EntityFramework.Migrations", "6.1.3-40302")] + public sealed partial class Assignments : IMigrationMetadata + { + private readonly ResourceManager Resources = new ResourceManager(typeof(Assignments)); + + string IMigrationMetadata.Id + { + get { return "201602170857179_Assignments"; } + } + + string IMigrationMetadata.Source + { + get { return null; } + } + + string IMigrationMetadata.Target + { + get { return Resources.GetString("Target"); } + } + } +} diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170857179_Assignments.cs b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170857179_Assignments.cs new file mode 100644 index 00000000..8b566fd9 --- /dev/null +++ b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170857179_Assignments.cs @@ -0,0 +1,34 @@ +namespace ContosoClinic.Migrations +{ + using System; + using System.Data.Entity.Migrations; + + public partial class Assignments : DbMigration + { + public override void Up() + { + CreateTable( + "dbo.ApplicationUserPatients", + c => new + { + ApplicationUser_Id = c.String(nullable: false, maxLength: 128), + Patient_PatientID = c.Int(nullable: false), + }) + .PrimaryKey(t => new { t.ApplicationUser_Id, t.Patient_PatientID }) + .ForeignKey("dbo.AspNetUsers", t => t.ApplicationUser_Id, cascadeDelete: true) + .ForeignKey("dbo.Patients", t => t.Patient_PatientID, cascadeDelete: true) + .Index(t => t.ApplicationUser_Id) + .Index(t => t.Patient_PatientID); + + } + + public override void Down() + { + DropForeignKey("dbo.ApplicationUserPatients", "Patient_PatientID", "dbo.Patients"); + DropForeignKey("dbo.ApplicationUserPatients", "ApplicationUser_Id", "dbo.AspNetUsers"); + DropIndex("dbo.ApplicationUserPatients", new[] { "Patient_PatientID" }); + DropIndex("dbo.ApplicationUserPatients", new[] { "ApplicationUser_Id" }); + DropTable("dbo.ApplicationUserPatients"); + } + } +} diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170857179_Assignments.resx b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170857179_Assignments.resx new file mode 100644 index 00000000..35dffa85 --- /dev/null +++ b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/201602170857179_Assignments.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 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 + + + dbo + + \ No newline at end of file diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/Configuration.cs b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/Configuration.cs new file mode 100644 index 00000000..0be01477 --- /dev/null +++ b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Migrations/Configuration.cs @@ -0,0 +1,351 @@ +namespace ContosoClinic.Migrations +{ + using System; + using System.Data.Entity; + using System.Data.Entity.Migrations; + using System.Linq; + using ContosoClinic.Models; + using Microsoft.AspNet.Identity; + using Microsoft.AspNet.Identity.EntityFramework; + using System.Collections.Generic; + + internal sealed class Configuration : DbMigrationsConfiguration + { + public Configuration() + { + AutomaticMigrationsEnabled = false; + } + + protected override void Seed(ContosoClinic.Models.ApplicationDbContext context) + {/* + // Create test userts + var manager = new UserManager( + new UserStore( + new ApplicationDbContext())); + + var password = "Password!1"; + var user1 = new ApplicationUser() + { + UserName = string.Format("rachel@contoso.com"), + //Patients = (from p in context.Patients where p.LastName.StartsWith("A") select p).ToList() + }; + + manager.Create(user1, string.Format(password)); + var user2 = new ApplicationUser() + { + UserName = string.Format("alice@contoso.com"), + //Patients = (from p in context.Patients where p.LastName.StartsWith("B") select p).ToList() + }; + manager.Create(user2, string.Format(password)); + context.SaveChanges();*/ + // Create patients + context.Patients.AddOrUpdate(p => p.SSN, + new Patient { SSN = "795-73-9838", FirstName = "Catherine", LastName = "Abel", MiddleName = "R.", StreetAddress = "57251 Serene Blvd", City = "Van Nuys", ZipCode = "91411", State = "CA", BirthDate = new System.DateTime(1996, 9, 10) }, + new Patient { SSN = "990-00-6818", FirstName = "Kim", LastName = "Abercrombie", MiddleName = "", StreetAddress = "Tanger Factory", City = "Branch", ZipCode = "55056", State = "MN", BirthDate = new System.DateTime(1967, 6, 5) }, + new Patient { SSN = "009-37-3952", FirstName = "Frances", LastName = "Adams", MiddleName = "B.", StreetAddress = "6900 Sisk Road", City = "Modesto", ZipCode = "95354", State = "CA", BirthDate = new System.DateTime(2005, 12, 26) }, + new Patient { SSN = "708-44-3627", FirstName = "Jay", LastName = "Adams", MiddleName = "", StreetAddress = "Blue Ridge Mall", City = "Kansas City", ZipCode = "64106", State = "MS", BirthDate = new System.DateTime(2011, 12, 28) }, + new Patient { SSN = "447-62-6279", FirstName = "Robert", LastName = "Ahlering", MiddleName = "E.", StreetAddress = "6500 East Grant Road", City = "Tucson", ZipCode = "85701", State = "AZ", BirthDate = new System.DateTime(1953, 12, 1) }, + new Patient { SSN = "872-78-4732", FirstName = "Stanley", LastName = "Alan", MiddleName = "A.", StreetAddress = "567 Sw Mcloughlin Blvd", City = "Milwaukie", ZipCode = "97222", State = "OR", BirthDate = new System.DateTime(1967, 9, 15) }, + new Patient { SSN = "898-79-8701", FirstName = "Paul", LastName = "Alcorn", MiddleName = "L.", StreetAddress = "White Mountain Mall", City = "Rock Springs", ZipCode = "82901", State = "WY", BirthDate = new System.DateTime(2010, 3, 23) }, + new Patient { SSN = "561-88-3757", FirstName = "Mary", LastName = "Alexander", MiddleName = "", StreetAddress = "2345 West Spencer Road", City = "Lynnwood", ZipCode = "98036", State = "WA", BirthDate = new System.DateTime(1985, 2, 20) }, + new Patient { SSN = "904-55-0991", FirstName = "Michelle", LastName = "Alexander", MiddleName = "", StreetAddress = "22589 West Craig Road", City = "North Las Vegas", ZipCode = "89030", State = "NV", BirthDate = new System.DateTime(2009, 3, 2) }, + new Patient { SSN = "293-95-6617", FirstName = "Marvin", LastName = "Allen", MiddleName = "N.", StreetAddress = "First Colony Mall", City = "Sugar Land", ZipCode = "77478", State = "TX", BirthDate = new System.DateTime(1962, 12, 26) }, + new Patient { SSN = "260-99-4784", FirstName = "Oscar", LastName = "Alpuerto", MiddleName = "L.", StreetAddress = "Rocky Mountain Pines Outlet", City = "Loveland", ZipCode = "80537", State = "CO", BirthDate = new System.DateTime(2000, 9, 19) }, + new Patient { SSN = "605-29-1370", FirstName = "Ramona", LastName = "Antrim", MiddleName = "J.", StreetAddress = "998 Forest Road", City = "Saginaw", ZipCode = "48601", State = "MI", BirthDate = new System.DateTime(1991, 11, 12) }, + new Patient { SSN = "731-35-9387", FirstName = "Thomas", LastName = "Armstrong", MiddleName = "B.", StreetAddress = "Fox Hills", City = "Culver City", ZipCode = "90232", State = "CA", BirthDate = new System.DateTime(1964, 11, 6) }, + new Patient { SSN = "854-76-1401", FirstName = "John", LastName = "Arthur", MiddleName = "", StreetAddress = "2345 North Freeway", City = "Houston", ZipCode = "77003", State = "TX", BirthDate = new System.DateTime(1987, 10, 12) }, + new Patient { SSN = "775-20-2697", FirstName = "Chris", LastName = "Ashton", MiddleName = "", StreetAddress = "70 N.W. Plaza", City = "Saint Ann", ZipCode = "63074", State = "MS", BirthDate = new System.DateTime(1991, 7, 22) }, + new Patient { SSN = "117-79-5230", FirstName = "Teresa", LastName = "Atkinson", MiddleName = "", StreetAddress = "The Citadel Commerce Plaza", City = "City Of Commerce", ZipCode = "90040", State = "CA", BirthDate = new System.DateTime(1969, 6, 16) }, + new Patient { SSN = "607-41-3750", FirstName = "Stephen", LastName = "Ayers", MiddleName = "M.", StreetAddress = "2533 Eureka Rd.", City = "Southgate", ZipCode = "48195", State = "MI", BirthDate = new System.DateTime(1977, 2, 5) }, + new Patient { SSN = "412-66-3694", FirstName = "James", LastName = "Bailey", MiddleName = "B.", StreetAddress = "Southgate Mall", City = "Missoula", ZipCode = "59801", State = "MT", BirthDate = new System.DateTime(1951, 9, 22) }, + new Patient { SSN = "775-63-2547", FirstName = "Douglas", LastName = "Baldwin", MiddleName = "A.", StreetAddress = "Horizon Outlet Center", City = "Holland", ZipCode = "49423", State = "MI", BirthDate = new System.DateTime(1956, 10, 21) }, + new Patient { SSN = "779-52-1722", FirstName = "Wayne", LastName = "Banack", MiddleName = "N.", StreetAddress = "48255 I-10 E. @ Eastpoint Blvd.", City = "Baytown", ZipCode = "77520", State = "TX", BirthDate = new System.DateTime(1997, 4, 4) }, + new Patient { SSN = "647-03-0271", FirstName = "Robert", LastName = "Barker", MiddleName = "L.", StreetAddress = "6789 Warren Road", City = "Westland", ZipCode = "48185", State = "MI", BirthDate = new System.DateTime(1991, 4, 26) }, + new Patient { SSN = "353-98-6954", FirstName = "John", LastName = "Beaver", MiddleName = "A.", StreetAddress = "1318 Lasalle Street", City = "Bothell", ZipCode = "98011", State = "WA", BirthDate = new System.DateTime(2010, 9, 3) }, + new Patient { SSN = "817-89-8819", FirstName = "John", LastName = "Beaver", MiddleName = "A.", StreetAddress = "99300 223rd Southeast", City = "Bothell", ZipCode = "98011", State = "WA", BirthDate = new System.DateTime(1999, 9, 10) }, + new Patient { SSN = "611-82-6762", FirstName = "Edna", LastName = "Benson", MiddleName = "J.", StreetAddress = "Po Box 8035996", City = "Dallas", ZipCode = "75201", State = "TX", BirthDate = new System.DateTime(1963, 3, 19) }, + new Patient { SSN = "665-55-5653", FirstName = "Payton", LastName = "Benson", MiddleName = "P.", StreetAddress = "997000 Telegraph Rd.", City = "Southfield", ZipCode = "48034", State = "MI", BirthDate = new System.DateTime(1952, 9, 16) }, + new Patient { SSN = "947-37-8651", FirstName = "Robert", LastName = "Bernacchi", MiddleName = "M.", StreetAddress = "25915 140th Ave Ne", City = "Bellevue", ZipCode = "98004", State = "WA", BirthDate = new System.DateTime(2000, 4, 9) }, + new Patient { SSN = "071-31-7824", FirstName = "Robert", LastName = "Bernacchi", MiddleName = "M.", StreetAddress = "2681 Eagle Peak", City = "Bellevue", ZipCode = "98004", State = "WA", BirthDate = new System.DateTime(1993, 3, 13) }, + new Patient { SSN = "610-55-3726", FirstName = "Matthias", LastName = "Berndt", MiddleName = "", StreetAddress = "Escondido", City = "Escondido", ZipCode = "92025", State = "CA", BirthDate = new System.DateTime(1974, 5, 15) }, + new Patient { SSN = "590-27-0856", FirstName = "Jimmy", LastName = "Bischoff", MiddleName = "", StreetAddress = "3065 Santa Margarita Parkway", City = "Trabuco Canyon", ZipCode = "92679", State = "CA", BirthDate = new System.DateTime(2015, 10, 26) }, + new Patient { SSN = "008-73-9012", FirstName = "Mae", LastName = "Black", MiddleName = "M.", StreetAddress = "Redford Plaza", City = "Redford", ZipCode = "48239", State = "MI", BirthDate = new System.DateTime(1997, 1, 3) }, + new Patient { SSN = "137-23-1723", FirstName = "Donald", LastName = "Blanton", MiddleName = "L.", StreetAddress = "Corporate Office", City = "El Segundo", ZipCode = "90245", State = "CA", BirthDate = new System.DateTime(2015, 5, 25) }, + new Patient { SSN = "969-53-6095", FirstName = "Michael", LastName = "Blythe", MiddleName = "Greg", StreetAddress = "9903 Highway 6 South", City = "Houston", ZipCode = "77003", State = "TX", BirthDate = new System.DateTime(1989, 3, 4) }, + new Patient { SSN = "222-42-8458", FirstName = "Gabriel", LastName = "Bockenkamp", MiddleName = "L.", StreetAddress = "67 Rainer Ave S", City = "Renton", ZipCode = "98055", State = "WA", BirthDate = new System.DateTime(1976, 6, 20) }, + new Patient { SSN = "163-08-2988", FirstName = "Luis", LastName = "Bonifaz", MiddleName = "", StreetAddress = "72502 Eastern Ave.", City = "Bell Gardens", ZipCode = "90201", State = "CA", BirthDate = new System.DateTime(2012, 5, 14) }, + new Patient { SSN = "898-11-0280", FirstName = "Cory", LastName = "Booth", MiddleName = "K.", StreetAddress = "Eastern Beltway Center", City = "Las Vegas", ZipCode = "89106", State = "NV", BirthDate = new System.DateTime(1974, 2, 5) }, + new Patient { SSN = "432-52-2738", FirstName = "Randall", LastName = "Boseman", MiddleName = "", StreetAddress = "2500 North Stemmons Freeway", City = "Dallas", ZipCode = "75201", State = "TX", BirthDate = new System.DateTime(1999, 5, 9) }, + new Patient { SSN = "018-29-9539", FirstName = "Cornelius", LastName = "Brandon", MiddleName = "L.", StreetAddress = "789 West Alameda", City = "Westminster", ZipCode = "80030", State = "CO", BirthDate = new System.DateTime(1976, 2, 6) }, + new Patient { SSN = "472-36-9060", FirstName = "Richard", LastName = "Bready", MiddleName = "", StreetAddress = "4251 First Avenue", City = "Seattle", ZipCode = "98104", State = "WA", BirthDate = new System.DateTime(1987, 11, 2) }, + new Patient { SSN = "566-87-9214", FirstName = "Ted", LastName = "Bremer", MiddleName = "", StreetAddress = "Bldg. 9n/99298", City = "Redmond", ZipCode = "98052", State = "WA", BirthDate = new System.DateTime(1996, 9, 12) }, + new Patient { SSN = "771-34-9714", FirstName = "Alan", LastName = "Brewer", MiddleName = "", StreetAddress = "4255 East Lies Road", City = "Carol Stream", ZipCode = "60188", State = "IL", BirthDate = new System.DateTime(1997, 7, 24) }, + new Patient { SSN = "413-73-7072", FirstName = "Walter", LastName = "Brian", MiddleName = "J.", StreetAddress = "25136 Jefferson Blvd.", City = "Culver City", ZipCode = "90232", State = "CA", BirthDate = new System.DateTime(1970, 7, 18) }, + new Patient { SSN = "497-65-6363", FirstName = "Christopher", LastName = "Bright", MiddleName = "M.", StreetAddress = "Washington Square", City = "Portland", ZipCode = "97205", State = "OR", BirthDate = new System.DateTime(1988, 12, 26) }, + new Patient { SSN = "450-26-2195", FirstName = "Willie", LastName = "Brooks", MiddleName = "P.", StreetAddress = "Holiday Village Mall", City = "Great Falls", ZipCode = "59401", State = "MT", BirthDate = new System.DateTime(2014, 4, 28) }, + new Patient { SSN = "052-78-7929", FirstName = "Jo", LastName = "Brown", MiddleName = "", StreetAddress = "250000 Eight Mile Road", City = "Detroit", ZipCode = "48226", State = "MI", BirthDate = new System.DateTime(1972, 8, 12) }, + new Patient { SSN = "087-92-6356", FirstName = "Robert", LastName = "Brown", MiddleName = "", StreetAddress = "250880 Baur Blvd", City = "Saint Louis", ZipCode = "63103", State = "MS", BirthDate = new System.DateTime(1980, 4, 8) }, + new Patient { SSN = "048-71-8953", FirstName = "Steven", LastName = "Brown", MiddleName = "B.", StreetAddress = "5500 Grossmont Center Drive", City = "La Mesa", ZipCode = "91941", State = "CA", BirthDate = new System.DateTime(1965, 12, 1) }, + new Patient { SSN = "488-68-6075", FirstName = "Mary", LastName = "Browning", MiddleName = "K.", StreetAddress = "Noah Lane", City = "Chicago", ZipCode = "60610", State = "IL", BirthDate = new System.DateTime(1998, 7, 11) }, + new Patient { SSN = "819-63-3780", FirstName = "Michael", LastName = "Brundage", MiddleName = "", StreetAddress = "22555 Paseo De Las Americas", City = "San Diego", ZipCode = "92102", State = "CA", BirthDate = new System.DateTime(1990, 6, 28) }, + new Patient { SSN = "599-61-7739", FirstName = "Shirley", LastName = "Bruner", MiddleName = "R.", StreetAddress = "4781 Highway 95", City = "Sandpoint", ZipCode = "83864", State = "ID", BirthDate = new System.DateTime(1975, 7, 2) }, + new Patient { SSN = "772-36-0661", FirstName = "June", LastName = "Brunner", MiddleName = "B.", StreetAddress = "678 Eastman Ave.", City = "Midland", ZipCode = "48640", State = "MI", BirthDate = new System.DateTime(1993, 7, 1) }, + new Patient { SSN = "990-78-3760", FirstName = "Megan", LastName = "Burke", MiddleName = "E.", StreetAddress = "Arcadia Crossing", City = "Phoenix", ZipCode = "85004", State = "AZ", BirthDate = new System.DateTime(2008, 6, 19) }, + new Patient { SSN = "103-38-5903", FirstName = "Karren", LastName = "Burkhardt", MiddleName = "K.", StreetAddress = "2502 Evergreen Ste E", City = "Everett", ZipCode = "98201", State = "WA", BirthDate = new System.DateTime(2001, 2, 27) }, + new Patient { SSN = "146-43-8832", FirstName = "Linda", LastName = "Burnett", MiddleName = "E.", StreetAddress = "2505 Gateway Drive", City = "North Sioux City", ZipCode = "57049", State = "SD", BirthDate = new System.DateTime(1965, 12, 11) }, + new Patient { SSN = "448-72-5948", FirstName = "Jared", LastName = "Bustamante", MiddleName = "L.", StreetAddress = "3307 Evergreen Blvd", City = "Washougal", ZipCode = "98671", State = "WA", BirthDate = new System.DateTime(1960, 9, 19) }, + new Patient { SSN = "254-13-4819", FirstName = "Barbara", LastName = "Calone", MiddleName = "J.", StreetAddress = "25306 Harvey Rd.", City = "College Station", ZipCode = "77840", State = "TX", BirthDate = new System.DateTime(1990, 8, 23) }, + new Patient { SSN = "666-45-9926", FirstName = "Lindsey", LastName = "Camacho", MiddleName = "R.", StreetAddress = "S Sound Ctr Suite 25300", City = "Lacey", ZipCode = "98503", State = "WA", BirthDate = new System.DateTime(1995, 1, 19) }, + new Patient { SSN = "260-46-2402", FirstName = "Frank", LastName = "Campbell", MiddleName = "", StreetAddress = "251340 E. South St.", City = "Cerritos", ZipCode = "90703", State = "CA", BirthDate = new System.DateTime(2006, 2, 18) }, + new Patient { SSN = "189-92-4702", FirstName = "Henry", LastName = "Campen", MiddleName = "L.", StreetAddress = "2507 Pacific Ave S", City = "Tacoma", ZipCode = "98403", State = "WA", BirthDate = new System.DateTime(1965, 8, 24) }, + new Patient { SSN = "718-12-8401", FirstName = "Chris", LastName = "Cannon", MiddleName = "", StreetAddress = "Lakewood Mall", City = "Lakewood", ZipCode = "90712", State = "CA", BirthDate = new System.DateTime(2006, 6, 9) }, + new Patient { SSN = "918-66-9747", FirstName = "Jane", LastName = "Carmichael", MiddleName = "N.", StreetAddress = "5967 W Las Positas Blvd", City = "Pleasanton", ZipCode = "94566", State = "CA", BirthDate = new System.DateTime(1977, 4, 26) }, + new Patient { SSN = "806-97-1958", FirstName = "Jovita", LastName = "Carmody", MiddleName = "A.", StreetAddress = "253950 N.E. 178th Place", City = "Woodinville", ZipCode = "98072", State = "WA", BirthDate = new System.DateTime(2012, 9, 22) }, + new Patient { SSN = "482-61-8230", FirstName = "Rob", LastName = "Caron", MiddleName = "", StreetAddress = "Ward Parkway Center", City = "Kansas City", ZipCode = "64106", State = "MS", BirthDate = new System.DateTime(1990, 5, 21) }, + new Patient { SSN = "897-39-6229", FirstName = "Andy", LastName = "Carothers", MiddleName = "", StreetAddress = "566 S. Main", City = "Cedar City", ZipCode = "84720", State = "UT", BirthDate = new System.DateTime(1969, 4, 7) }, + new Patient { SSN = "656-79-6279", FirstName = "Donna", LastName = "Carreras", MiddleName = "F.", StreetAddress = "12345 Sterling Avenue", City = "Irving", ZipCode = "75061", State = "TX", BirthDate = new System.DateTime(2008, 9, 16) }, + new Patient { SSN = "745-99-0161", FirstName = "Rosmarie", LastName = "Carroll", MiddleName = "J.", StreetAddress = "39933 Mission Oaks Blvd", City = "Camarillo", ZipCode = "93010", State = "CA", BirthDate = new System.DateTime(1994, 4, 6) }, + new Patient { SSN = "216-16-4120", FirstName = "Raul", LastName = "Casts", MiddleName = "E.", StreetAddress = "99040 California Avenue", City = "Sand City", ZipCode = "93955", State = "CA", BirthDate = new System.DateTime(1989, 7, 13) }, + new Patient { SSN = "102-56-5530", FirstName = "Matthew", LastName = "Cavallari", MiddleName = "J.", StreetAddress = "North 93270 Newport Highway", City = "Spokane", ZipCode = "99202", State = "WA", BirthDate = new System.DateTime(1952, 7, 26) }, + new Patient { SSN = "787-23-4125", FirstName = "Andrew", LastName = "Cencini", MiddleName = "", StreetAddress = "558 S 6th St", City = "Klamath Falls", ZipCode = "97601", State = "OR", BirthDate = new System.DateTime(1991, 1, 12) }, + new Patient { SSN = "424-55-1778", FirstName = "Stacey", LastName = "Cereghino", MiddleName = "M.", StreetAddress = "220 Mercy Drive", City = "Garland", ZipCode = "75040", State = "TX", BirthDate = new System.DateTime(1967, 6, 3) }, + new Patient { SSN = "572-19-0999", FirstName = "Forrest", LastName = "Chandler", MiddleName = "J.", StreetAddress = "The Quad @ WestView", City = "Whittier", ZipCode = "90605", State = "CA", BirthDate = new System.DateTime(2002, 11, 6) }, + new Patient { SSN = "745-81-6513", FirstName = "Lee", LastName = "Chapla", MiddleName = "J.", StreetAddress = "99433 S. Greenbay Rd.", City = "Racine", ZipCode = "53182", State = "WI", BirthDate = new System.DateTime(1991, 6, 12) }, + new Patient { SSN = "947-66-5585", FirstName = "Yao-Qiang", LastName = "Cheng", MiddleName = "", StreetAddress = "25 N State St", City = "Chicago", ZipCode = "60610", State = "IL", BirthDate = new System.DateTime(1954, 5, 1) }, + new Patient { SSN = "531-83-4784", FirstName = "Nicky", LastName = "Chesnut", MiddleName = "E.", StreetAddress = "9920 North Telegraph Rd.", City = "Pontiac", ZipCode = "48342", State = "MI", BirthDate = new System.DateTime(1966, 4, 22) }, + new Patient { SSN = "109-99-0299", FirstName = "Ruth", LastName = "Choin", MiddleName = "A.", StreetAddress = "7760 N. Pan Am Expwy", City = "San Antonio", ZipCode = "78204", State = "TX", BirthDate = new System.DateTime(1963, 7, 1) }, + new Patient { SSN = "483-85-6853", FirstName = "Anthony", LastName = "Chor", MiddleName = "", StreetAddress = "Riverside", City = "Sherman Oaks", ZipCode = "91403", State = "CA", BirthDate = new System.DateTime(2014, 7, 27) }, + new Patient { SSN = "567-39-1024", FirstName = "Pei", LastName = "Chow", MiddleName = "", StreetAddress = "4660 Rodeo Road", City = "Santa Fe", ZipCode = "87501", State = "NM", BirthDate = new System.DateTime(1979, 9, 11) }, + new Patient { SSN = "382-49-7387", FirstName = "Jill", LastName = "Christie", MiddleName = "J.", StreetAddress = "54254 Pacific Ave.", City = "Stockton", ZipCode = "95202", State = "CA", BirthDate = new System.DateTime(2001, 11, 20) }, + new Patient { SSN = "336-03-8102", FirstName = "Alice", LastName = "Clark", MiddleName = "", StreetAddress = "42500 W 76th St", City = "Chicago", ZipCode = "60610", State = "IL", BirthDate = new System.DateTime(1965, 12, 6) }, + new Patient { SSN = "994-22-9926", FirstName = "Connie", LastName = "Coffman", MiddleName = "L.", StreetAddress = "25269 Wood Dale Rd.", City = "Wood Dale", ZipCode = "60191", State = "IL", BirthDate = new System.DateTime(1993, 10, 2) }, + new Patient { SSN = "129-28-7723", FirstName = "John", LastName = "Colon", MiddleName = "L.", StreetAddress = "77 Beale Street", City = "San Francisco", ZipCode = "94109", State = "CA", BirthDate = new System.DateTime(1999, 6, 6) }, + new Patient { SSN = "347-44-2949", FirstName = "Scott", LastName = "Colvin", MiddleName = "A.", StreetAddress = "25550 Executive Dr", City = "Elgin", ZipCode = "60120", State = "IL", BirthDate = new System.DateTime(1976, 4, 23) }, + new Patient { SSN = "706-66-0382", FirstName = "Scott", LastName = "Cooper", MiddleName = "", StreetAddress = "Pavillion @ Redlands", City = "Redlands", ZipCode = "92373", State = "CA", BirthDate = new System.DateTime(1952, 12, 20) }, + new Patient { SSN = "500-63-2220", FirstName = "Eva", LastName = "Corets", MiddleName = "", StreetAddress = "2540 Dell Range Blvd", City = "Cheyenne", ZipCode = "82001", State = "WY", BirthDate = new System.DateTime(1991, 5, 16) }, + new Patient { SSN = "942-15-7859", FirstName = "Marlin", LastName = "Coriell", MiddleName = "M.", StreetAddress = "99800 Tittabawasee Rd.", City = "Saginaw", ZipCode = "48601", State = "MI", BirthDate = new System.DateTime(1983, 3, 16) }, + new Patient { SSN = "143-78-9971", FirstName = "Jack", LastName = "Creasey", MiddleName = "", StreetAddress = "Factory Merchants", City = "Barstow", ZipCode = "92311", State = "CA", BirthDate = new System.DateTime(2004, 5, 16) }, + new Patient { SSN = "372-18-7905", FirstName = "Grant", LastName = "Culbertson", MiddleName = "", StreetAddress = "399700 John R. Rd.", City = "Madison Heights", ZipCode = "48071", State = "MI", BirthDate = new System.DateTime(1984, 1, 28) }, + new Patient { SSN = "153-33-1155", FirstName = "Scott", LastName = "Culp", MiddleName = "", StreetAddress = "750 Lakeway Dr", City = "Bellingham", ZipCode = "98225", State = "WA", BirthDate = new System.DateTime(1987, 7, 8) }, + new Patient { SSN = "666-38-8849", FirstName = "Conor", LastName = "Cunningham", MiddleName = "", StreetAddress = "Sports Store At Park City", City = "Park City", ZipCode = "84098", State = "UT", BirthDate = new System.DateTime(1990, 8, 12) }, + new Patient { SSN = "790-69-5423", FirstName = "Megan", LastName = "Davis", MiddleName = "N.", StreetAddress = "48995 Evergreen Wy.", City = "Everett", ZipCode = "98201", State = "WA", BirthDate = new System.DateTime(1983, 10, 14) }, + new Patient { SSN = "105-16-8373", FirstName = "Alvaro", LastName = "De Matos Miranda Filho", MiddleName = "", StreetAddress = "Mountain Square", City = "Upland", ZipCode = "91786", State = "CA", BirthDate = new System.DateTime(1962, 4, 25) }, + new Patient { SSN = "989-18-3523", FirstName = "Aidan", LastName = "Delaney", MiddleName = "", StreetAddress = "Corporate Office", City = "Garland", ZipCode = "75040", State = "TX", BirthDate = new System.DateTime(1953, 3, 10) }, + new Patient { SSN = "771-07-7325", FirstName = "Stefan", LastName = "Delmarco", MiddleName = "", StreetAddress = "Incom Sports Center", City = "Ontario", ZipCode = "91764", State = "CA", BirthDate = new System.DateTime(1963, 3, 1) }, + new Patient { SSN = "545-83-9747", FirstName = "Prashanth", LastName = "Desai", MiddleName = "", StreetAddress = "Sapp Road West", City = "Round Rock", ZipCode = "78664", State = "TX", BirthDate = new System.DateTime(1974, 2, 12) }, + new Patient { SSN = "994-72-1605", FirstName = "Bev", LastName = "Desalvo", MiddleName = "L.", StreetAddress = "7009 Sw Hall Blvd.", City = "Tigard", ZipCode = "97223", State = "OR", BirthDate = new System.DateTime(1987, 6, 21) }, + new Patient { SSN = "558-23-5595", FirstName = "Brenda", LastName = "Diaz", MiddleName = "", StreetAddress = "2560 E. Newlands Dr", City = "Fernley", ZipCode = "89408", State = "NV", BirthDate = new System.DateTime(1983, 4, 2) }, + new Patient { SSN = "752-63-1338", FirstName = "Blaine", LastName = "Dockter", MiddleName = "", StreetAddress = "99000 S. Avalon Blvd. Suite 750", City = "Carson", ZipCode = "90746", State = "CA", BirthDate = new System.DateTime(1953, 11, 5) }, + new Patient { SSN = "825-10-8923", FirstName = "Cindy", LastName = "Dodd", MiddleName = "M.", StreetAddress = "994 Sw Cherry Park Rd", City = "Troutdale", ZipCode = "97060", State = "OR", BirthDate = new System.DateTime(2011, 9, 10) }, + new Patient { SSN = "368-69-8964", FirstName = "Patricia", LastName = "Doyle", MiddleName = "", StreetAddress = "225 South 314th Street", City = "Federal Way", ZipCode = "98003", State = "WA", BirthDate = new System.DateTime(1994, 3, 8) }, + new Patient { SSN = "597-44-1424", FirstName = "Gerald", LastName = "Drury", MiddleName = "M.", StreetAddress = "4635 S. Harrison Blvd.", City = "Ogden", ZipCode = "84401", State = "UT", BirthDate = new System.DateTime(1962, 5, 22) }, + new Patient { SSN = "957-28-1545", FirstName = "Bart", LastName = "Duncan", MiddleName = "", StreetAddress = "99295 S.e. Tualatin Valley_hwy.", City = "Hillsboro", ZipCode = "97123", State = "OR", BirthDate = new System.DateTime(1982, 10, 22) }, + new Patient { SSN = "187-17-8616", FirstName = "Maciej", LastName = "Dusza", MiddleName = "", StreetAddress = "2564 S. Redwood Rd.", City = "Riverton", ZipCode = "84065", State = "UT", BirthDate = new System.DateTime(1964, 3, 13) }, + new Patient { SSN = "194-76-9481", FirstName = "Carol", LastName = "Elliott", MiddleName = "B.", StreetAddress = "25220 Airline Road", City = "Corpus Christi", ZipCode = "78404", State = "TX", BirthDate = new System.DateTime(1963, 5, 28) }, + new Patient { SSN = "679-79-8165", FirstName = "Shannon", LastName = "Elliott", MiddleName = "P.", StreetAddress = "Factory Stores/tucson", City = "Tucson", ZipCode = "85701", State = "AZ", BirthDate = new System.DateTime(1989, 6, 27) }, + new Patient { SSN = "367-73-8845", FirstName = "John", LastName = "Emory", MiddleName = "", StreetAddress = "Medford", City = "Medford", ZipCode = "97504", State = "OR", BirthDate = new System.DateTime(1998, 10, 3) }, + new Patient { SSN = "814-03-3691", FirstName = "Gail", LastName = "Erickson", MiddleName = "", StreetAddress = "44025 W. Empire", City = "Denby", ZipCode = "57716", State = "SD", BirthDate = new System.DateTime(1963, 12, 13) }, + new Patient { SSN = "214-28-9968", FirstName = "Mark", LastName = "Erickson", MiddleName = "B", StreetAddress = "Factory Stores Of America", City = "Mesa", ZipCode = "85201", State = "AZ", BirthDate = new System.DateTime(1975, 3, 1) }, + new Patient { SSN = "913-55-6645", FirstName = "Ann", LastName = "Evans", MiddleName = "R.", StreetAddress = "Ring Plaza", City = "Norridge", ZipCode = "60706", State = "IL", BirthDate = new System.DateTime(1963, 3, 28) }, + new Patient { SSN = "763-33-5650", FirstName = "John", LastName = "Evans", MiddleName = "", StreetAddress = "7709 West Virginia Avenue", City = "Phoenix", ZipCode = "85004", State = "AZ", BirthDate = new System.DateTime(2009, 12, 1) }, + new Patient { SSN = "658-41-8532", FirstName = "Twanna", LastName = "Evans", MiddleName = "R.", StreetAddress = "Lewis County Mall", City = "Chehalis", ZipCode = "98532", State = "WA", BirthDate = new System.DateTime(1968, 11, 4) }, + new Patient { SSN = "943-41-6011", FirstName = "Carolyn", LastName = "Farino", MiddleName = "", StreetAddress = "3250 South Meridian", City = "Puyallup", ZipCode = "98371", State = "WA", BirthDate = new System.DateTime(1950, 2, 12) }, + new Patient { SSN = "691-30-8623", FirstName = "Geri", LastName = "Farrell", MiddleName = "P.", StreetAddress = "49925 Crestview Drive N.E.", City = "Rio Rancho", ZipCode = "87124", State = "NM", BirthDate = new System.DateTime(1962, 8, 11) }, + new Patient { SSN = "361-08-3217", FirstName = "François", LastName = "Ferrier", MiddleName = "", StreetAddress = "Eastridge Mall", City = "Casper", ZipCode = "82601", State = "WY", BirthDate = new System.DateTime(1957, 6, 14) }, + new Patient { SSN = "827-51-1487", FirstName = "Kathie", LastName = "Flood", MiddleName = "", StreetAddress = "705 SE Mall Parkway", City = "Everett", ZipCode = "98201", State = "WA", BirthDate = new System.DateTime(1978, 2, 8) }, + new Patient { SSN = "483-93-0057", FirstName = "John", LastName = "Ford", MiddleName = "", StreetAddress = "23025 S.W. Military Rd.", City = "San Antonio", ZipCode = "78204", State = "TX", BirthDate = new System.DateTime(1987, 9, 16) }, + new Patient { SSN = "738-37-1607", FirstName = "Garth", LastName = "Fort", MiddleName = "", StreetAddress = "3250 Baldwin Park Blvd", City = "Baldwin Park", ZipCode = "91706", State = "CA", BirthDate = new System.DateTime(1964, 11, 25) }, + new Patient { SSN = "822-59-9384", FirstName = "Dorothy", LastName = "Fox", MiddleName = "J.", StreetAddress = "Lakeline Mall", City = "Cedar Park", ZipCode = "78613", State = "TX", BirthDate = new System.DateTime(1966, 9, 9) }, + new Patient { SSN = "309-79-2521", FirstName = "Mihail", LastName = "Frintu", MiddleName = "", StreetAddress = "Bayshore Mall", City = "Eureka", ZipCode = "95501", State = "CA", BirthDate = new System.DateTime(2013, 6, 17) }, + new Patient { SSN = "814-32-0421", FirstName = "Paul", LastName = "Fulton", MiddleName = "J.", StreetAddress = "Horizon Outlet Center", City = "Monroe", ZipCode = "98272", State = "MI", BirthDate = new System.DateTime(1984, 6, 11) }, + new Patient { SSN = "076-35-8143", FirstName = "Michael", LastName = "Galos", MiddleName = "", StreetAddress = "West Park Plaza", City = "Irvine", ZipCode = "92614", State = "CA", BirthDate = new System.DateTime(2009, 12, 14) }, + new Patient { SSN = "620-03-4764", FirstName = "Jon", LastName = "Ganio", MiddleName = "", StreetAddress = "3900 S. 997th St.", City = "Milwaukee", ZipCode = "53202", State = "WI", BirthDate = new System.DateTime(1975, 3, 12) }, + new Patient { SSN = "769-76-3600", FirstName = "Dominic", LastName = "Gash", MiddleName = "P.", StreetAddress = "5420 West 22500 South", City = "Salt Lake City", ZipCode = "84101", State = "UT", BirthDate = new System.DateTime(1969, 3, 27) }, + new Patient { SSN = "160-92-3129", FirstName = "Janet", LastName = "Gates", MiddleName = "M.", StreetAddress = "165 North Main", City = "Austin", ZipCode = "78701", State = "TX", BirthDate = new System.DateTime(1980, 9, 2) }, + new Patient { SSN = "318-00-6667", FirstName = "Janet", LastName = "Gates", MiddleName = "M.", StreetAddress = "800 Interchange Blvd.", City = "Austin", ZipCode = "78701", State = "TX", BirthDate = new System.DateTime(1970, 2, 22) }, + new Patient { SSN = "982-77-3975", FirstName = "Orlando", LastName = "Gee", MiddleName = "N.", StreetAddress = "2251 Elliot Avenue", City = "Seattle", ZipCode = "98104", State = "WA", BirthDate = new System.DateTime(2008, 11, 11) }, + new Patient { SSN = "328-68-1544", FirstName = "Darren", LastName = "Gehring", MiddleName = "", StreetAddress = "509 Nafta Boulevard", City = "Laredo", ZipCode = "78040", State = "TX", BirthDate = new System.DateTime(1966, 12, 26) }, + new Patient { SSN = "053-51-9173", FirstName = "Jim", LastName = "Geist", MiddleName = "", StreetAddress = "35525-9th Street Sw", City = "Puyallup", ZipCode = "98371", State = "WA", BirthDate = new System.DateTime(2009, 1, 21) }, + new Patient { SSN = "840-05-6646", FirstName = "Guy", LastName = "Gilbert", MiddleName = "", StreetAddress = "Vista Marketplace", City = "Alhambra", ZipCode = "91801", State = "CA", BirthDate = new System.DateTime(1982, 11, 20) }, + new Patient { SSN = "446-11-2924", FirstName = "Janet", LastName = "Gilliat", MiddleName = "J.", StreetAddress = "9995 West Central Entrance", City = "Duluth", ZipCode = "55802", State = "MN", BirthDate = new System.DateTime(1984, 4, 14) }, + new Patient { SSN = "273-16-2522", FirstName = "Mary", LastName = "Gimmi", MiddleName = "M.", StreetAddress = "5525 South Hover Road", City = "Longmont", ZipCode = "80501", State = "CO", BirthDate = new System.DateTime(1966, 4, 15) }, + new Patient { SSN = "003-23-9305", FirstName = "Jeanie", LastName = "Glenn", MiddleName = "R.", StreetAddress = "9909 W. Ventura Boulevard", City = "Camarillo", ZipCode = "93010", State = "CA", BirthDate = new System.DateTime(1963, 4, 13) }, + new Patient { SSN = "878-44-1968", FirstName = "Scott", LastName = "Gode", MiddleName = "", StreetAddress = "2583 Se 272nd St", City = "Kent", ZipCode = "98031", State = "WA", BirthDate = new System.DateTime(1950, 11, 20) }, + new Patient { SSN = "910-05-4138", FirstName = "Mete", LastName = "Goktepe", MiddleName = "", StreetAddress = "Hanford Mall", City = "Hanford", ZipCode = "93230", State = "CA", BirthDate = new System.DateTime(1951, 11, 5) }, + new Patient { SSN = "912-33-3174", FirstName = "Abigail", LastName = "Gonzalez", MiddleName = "J.", StreetAddress = "99450 Highway 59 North", City = "Humble", ZipCode = "77338", State = "TX", BirthDate = new System.DateTime(2007, 3, 10) }, + new Patient { SSN = "058-26-3234", FirstName = "Michael", LastName = "Graff", MiddleName = "", StreetAddress = "9700 Sisk Road", City = "Modesto", ZipCode = "95354", State = "CA", BirthDate = new System.DateTime(2002, 10, 24) }, + new Patient { SSN = "687-28-3396", FirstName = "Douglas", LastName = "Groncki", MiddleName = "", StreetAddress = "70259 West Sunnyview Ave", City = "Visalia", ZipCode = "93291", State = "CA", BirthDate = new System.DateTime(1974, 5, 7) }, + new Patient { SSN = "496-75-4904", FirstName = "Brian", LastName = "Groth", MiddleName = "", StreetAddress = "Gateway", City = "Portland", ZipCode = "97205", State = "OR", BirthDate = new System.DateTime(2008, 6, 5) }, + new Patient { SSN = "071-00-8057", FirstName = "Erin", LastName = "Hagens", MiddleName = "M.", StreetAddress = "25001 Montague Expressway", City = "Milpitas", ZipCode = "95035", State = "CA", BirthDate = new System.DateTime(1969, 4, 12) }, + new Patient { SSN = "288-05-9705", FirstName = "Betty", LastName = "Haines", MiddleName = "M.", StreetAddress = "640 South 994th St. W.", City = "Billings", ZipCode = "59101", State = "MT", BirthDate = new System.DateTime(1998, 10, 4) }, + new Patient { SSN = "002-47-6040", FirstName = "Jean", LastName = "Handley", MiddleName = "P.", StreetAddress = "259826 Russell Rd. South", City = "Kent", ZipCode = "98031", State = "WA", BirthDate = new System.DateTime(1993, 8, 4) }, + new Patient { SSN = "936-84-1664", FirstName = "Kerim", LastName = "Hanif", MiddleName = "", StreetAddress = "60025 Bollinger Canyon Road", City = "San Ramon", ZipCode = "94583", State = "CA", BirthDate = new System.DateTime(1959, 12, 20) }, + new Patient { SSN = "216-03-0835", FirstName = "John", LastName = "Hanson", MiddleName = "", StreetAddress = "825 W 500 S", City = "Bountiful", ZipCode = "84010", State = "UT", BirthDate = new System.DateTime(1989, 9, 23) }, + new Patient { SSN = "525-81-0810", FirstName = "Lucy", LastName = "Harrington", MiddleName = "", StreetAddress = "482505 Warm Springs Blvd.", City = "Fremont", ZipCode = "94536", State = "CA", BirthDate = new System.DateTime(2004, 3, 25) }, + new Patient { SSN = "331-25-9319", FirstName = "Keith", LastName = "Harris", MiddleName = "", StreetAddress = "3207 S Grady Way", City = "Renton", ZipCode = "98055", State = "WA", BirthDate = new System.DateTime(2003, 12, 25) }, + new Patient { SSN = "770-01-5105", FirstName = "Keith", LastName = "Harris", MiddleName = "", StreetAddress = "7943 Walnut Ave", City = "Renton", ZipCode = "98055", State = "WA", BirthDate = new System.DateTime(1968, 7, 3) }, + new Patient { SSN = "208-84-9956", FirstName = "Roger", LastName = "Harui", MiddleName = "", StreetAddress = "9927 N. Main St.", City = "Tooele", ZipCode = "84074", State = "UT", BirthDate = new System.DateTime(2015, 5, 11) }, + new Patient { SSN = "633-34-5095", FirstName = "Ann", LastName = "Hass", MiddleName = "T.", StreetAddress = "Medford Outlet Center", City = "Medford", ZipCode = "55049", State = "MN", BirthDate = new System.DateTime(2005, 7, 28) }, + new Patient { SSN = "022-89-0200", FirstName = "Valerie", LastName = "Hendricks", MiddleName = "M.", StreetAddress = "Kansas City Factory Outlet", City = "Odessa", ZipCode = "64076", State = "MS", BirthDate = new System.DateTime(1976, 10, 23) }, + new Patient { SSN = "912-85-8027", FirstName = "Cheryl", LastName = "Herring", MiddleName = "M.", StreetAddress = "Corp Ofc Accts Payable", City = "El Segundo", ZipCode = "90245", State = "CA", BirthDate = new System.DateTime(1980, 10, 9) }, + new Patient { SSN = "307-29-4403", FirstName = "Ronald", LastName = "Heymsfield", MiddleName = "K.", StreetAddress = "250775 SW Hillsdale Hwy", City = "Beaverton", ZipCode = "97005", State = "OR", BirthDate = new System.DateTime(1983, 7, 22) }, + new Patient { SSN = "083-68-5072", FirstName = "Mike", LastName = "Hines", MiddleName = "", StreetAddress = "25250 N 90th St", City = "Scottsdale", ZipCode = "85257", State = "AZ", BirthDate = new System.DateTime(1969, 12, 3) }, + new Patient { SSN = "239-20-6174", FirstName = "Matthew", LastName = "Hink", MiddleName = "", StreetAddress = "No. 60 Bellis Fair Parkway", City = "Bellingham", ZipCode = "98225", State = "WA", BirthDate = new System.DateTime(1997, 2, 15) }, + new Patient { SSN = "162-43-8489", FirstName = "Bob", LastName = "Hodges", MiddleName = "", StreetAddress = "Ohms Road", City = "Houston", ZipCode = "77003", State = "TX", BirthDate = new System.DateTime(2010, 8, 13) }, + new Patient { SSN = "717-37-3032", FirstName = "David", LastName = "Hodgson", MiddleName = "", StreetAddress = "99700 Bell Road", City = "Auburn", ZipCode = "95603", State = "CA", BirthDate = new System.DateTime(1983, 4, 13) }, + new Patient { SSN = "280-15-5623", FirstName = "Helge", LastName = "Hoeing", MiddleName = "", StreetAddress = "Cedar Creek Stores", City = "Mosinee", ZipCode = "54455", State = "WI", BirthDate = new System.DateTime(1988, 2, 7) }, + new Patient { SSN = "353-00-9496", FirstName = "Juanita", LastName = "Holman", MiddleName = "J.", StreetAddress = "Lake Elisnor Place", City = "Lake Elsinore", ZipCode = "92530", State = "CA", BirthDate = new System.DateTime(1989, 5, 13) }, + new Patient { SSN = "162-65-6542", FirstName = "Peter", LastName = "Houston", MiddleName = "", StreetAddress = "1200 First Ave.", City = "Joliet", ZipCode = "60433", State = "IL", BirthDate = new System.DateTime(1972, 6, 10) }, + new Patient { SSN = "427-43-7296", FirstName = "George", LastName = "Huckaby", MiddleName = "M.", StreetAddress = "3390 South 23rd St.", City = "Tacoma", ZipCode = "98403", State = "WA", BirthDate = new System.DateTime(2003, 5, 13) }, + new Patient { SSN = "603-61-0319", FirstName = "Joshua", LastName = "Huff", MiddleName = "J.", StreetAddress = "Management Mall", City = "San Antonio", ZipCode = "78204", State = "TX", BirthDate = new System.DateTime(1991, 11, 7) }, + new Patient { SSN = "877-01-3415", FirstName = "Phyllis", LastName = "Huntsman", MiddleName = "R.", StreetAddress = "99 Front Street", City = "Minneapolis", ZipCode = "55402", State = "MN", BirthDate = new System.DateTime(1981, 8, 27) }, + new Patient { SSN = "391-25-8382", FirstName = "Phyllis", LastName = "Huntsman", MiddleName = "R.", StreetAddress = "City Center", City = "Minneapolis", ZipCode = "55402", State = "MN", BirthDate = new System.DateTime(1959, 6, 28) }, + new Patient { SSN = "626-56-2930", FirstName = "Lawrence", LastName = "Hurkett", MiddleName = "E.", StreetAddress = "6753 Howard Hughes Parkway", City = "Las Vegas", ZipCode = "89106", State = "NV", BirthDate = new System.DateTime(1993, 10, 13) }, + new Patient { SSN = "731-19-3470", FirstName = "Lucio", LastName = "Iallo", MiddleName = "", StreetAddress = "Simi @ The Plaza", City = "Simi Valley", ZipCode = "93065", State = "CA", BirthDate = new System.DateTime(1959, 10, 14) }, + new Patient { SSN = "171-33-3481", FirstName = "Richard", LastName = "Irwin", MiddleName = "L.", StreetAddress = "99828 Routh Street, Suite 825", City = "Dallas", ZipCode = "75201", State = "TX", BirthDate = new System.DateTime(1963, 8, 5) }, + new Patient { SSN = "828-77-1376", FirstName = "Erik", LastName = "Ismert", MiddleName = "", StreetAddress = "4927 S Meridian Ave Ste D", City = "Puyallup", ZipCode = "98371", State = "WA", BirthDate = new System.DateTime(1968, 4, 5) }, + new Patient { SSN = "611-48-4137", FirstName = "Eric", LastName = "Jacobsen", MiddleName = "A.", StreetAddress = "Topanga Plaza", City = "Canoga Park", ZipCode = "91303", State = "CA", BirthDate = new System.DateTime(1957, 7, 11) }, + new Patient { SSN = "477-14-7161", FirstName = "Jodan", LastName = "Jacobson", MiddleName = "M.", StreetAddress = "6030 Robinson Road", City = "Jefferson City", ZipCode = "65101", State = "MS", BirthDate = new System.DateTime(1996, 2, 5) }, + new Patient { SSN = "738-83-2602", FirstName = "Sean", LastName = "Jacobson", MiddleName = "P.", StreetAddress = "2551 East Warner Road", City = "Gilbert", ZipCode = "85233", State = "AZ", BirthDate = new System.DateTime(1950, 11, 26) }, + new Patient { SSN = "589-30-3617", FirstName = "Joyce", LastName = "Jarvis", MiddleName = "", StreetAddress = "955 E. County Line Rd.", City = "Englewood", ZipCode = "80110", State = "CO", BirthDate = new System.DateTime(2011, 5, 20) }, + new Patient { SSN = "538-28-5108", FirstName = "Barry", LastName = "Johnson", MiddleName = "", StreetAddress = "2000 300th Street", City = "Denver", ZipCode = "80203", State = "CO", BirthDate = new System.DateTime(1991, 2, 15) }, + new Patient { SSN = "661-09-8547", FirstName = "Barry", LastName = "Johnson", MiddleName = "", StreetAddress = "2530 South Colorado Blvd.", City = "Denver", ZipCode = "80203", State = "CO", BirthDate = new System.DateTime(2004, 2, 5) }, + new Patient { SSN = "025-55-7602", FirstName = "Brian", LastName = "Johnson", MiddleName = "", StreetAddress = "625 W Jackson Blvd. Unit 2502", City = "Chicago", ZipCode = "60610", State = "IL", BirthDate = new System.DateTime(1989, 6, 10) }, + new Patient { SSN = "422-34-6020", FirstName = "David", LastName = "Johnson", MiddleName = "", StreetAddress = "7990 Ocean Beach Hwy.", City = "Longview", ZipCode = "98632", State = "WA", BirthDate = new System.DateTime(1965, 2, 27) }, + new Patient { SSN = "500-92-8728", FirstName = "Tom", LastName = "Johnston", MiddleName = "H", StreetAddress = "Belz Factory Outlet", City = "Las Vegas", ZipCode = "89106", State = "NV", BirthDate = new System.DateTime(1961, 10, 19) }, + new Patient { SSN = "170-89-3691", FirstName = "Jean", LastName = "Jordan", MiddleName = "", StreetAddress = "440 West Huntington Dr.", City = "Monrovia", ZipCode = "91016", State = "CA", BirthDate = new System.DateTime(1969, 10, 16) }, + new Patient { SSN = "108-25-0733", FirstName = "Peggy", LastName = "Justice", MiddleName = "J.", StreetAddress = "15 East Main", City = "Port Orchard", ZipCode = "98366", State = "WA", BirthDate = new System.DateTime(1981, 11, 1) }, + new Patient { SSN = "392-44-2253", FirstName = "Sandeep", LastName = "Kaliyath", MiddleName = "", StreetAddress = "630 N. Capitol Ave.", City = "San Jose", ZipCode = "95112", State = "CA", BirthDate = new System.DateTime(1998, 11, 3) }, + new Patient { SSN = "666-10-8497", FirstName = "Sandeep", LastName = "Katyal", MiddleName = "", StreetAddress = "765 Delridge Way Sw", City = "Seattle", ZipCode = "98104", State = "WA", BirthDate = new System.DateTime(1955, 1, 8) }, + new Patient { SSN = "738-29-5963", FirstName = "John", LastName = "Kelly", MiddleName = "", StreetAddress = "Pacific West Outlet", City = "Gilroy", ZipCode = "95020", State = "CA", BirthDate = new System.DateTime(1969, 6, 25) }, + new Patient { SSN = "253-47-6467", FirstName = "Robert", LastName = "Kelly", MiddleName = "", StreetAddress = "6425 Nw Loop 410", City = "San Antonio", ZipCode = "78204", State = "TX", BirthDate = new System.DateTime(1979, 9, 17) }, + new Patient { SSN = "059-47-6363", FirstName = "Kevin", LastName = "Kennedy", MiddleName = "", StreetAddress = "2550 Ne Sandy Blvd", City = "Portland", ZipCode = "97205", State = "OR", BirthDate = new System.DateTime(2005, 12, 16) }, + new Patient { SSN = "382-51-9530", FirstName = "Mitch", LastName = "Kennedy", MiddleName = "", StreetAddress = "C/O Starpak, Inc.", City = "Greeley", ZipCode = "80631", State = "CO", BirthDate = new System.DateTime(1980, 2, 28) }, + new Patient { SSN = "480-79-4419", FirstName = "Imtiaz", LastName = "Khan", MiddleName = "", StreetAddress = "25095 W. Florissant", City = "Ferguson", ZipCode = "63135", State = "MS", BirthDate = new System.DateTime(1971, 9, 2) }, + new Patient { SSN = "097-39-6667", FirstName = "Karan", LastName = "Khanna", MiddleName = "", StreetAddress = "755 W Washington Ave Ste D", City = "Sequim", ZipCode = "98382", State = "WA", BirthDate = new System.DateTime(1993, 8, 3) }, + new Patient { SSN = "625-86-1609", FirstName = "Anton", LastName = "Kirilov", MiddleName = "", StreetAddress = "2575 Rocky Mountain Ave.", City = "Loveland", ZipCode = "80537", State = "CO", BirthDate = new System.DateTime(1951, 5, 12) }, + new Patient { SSN = "109-78-5455", FirstName = "Christian", LastName = "Kleinerman", MiddleName = "", StreetAddress = "25150 El Camino Real", City = "San Bruno", ZipCode = "94066", State = "CA", BirthDate = new System.DateTime(1969, 1, 10) }, + new Patient { SSN = "914-28-0431", FirstName = "Andrew", LastName = "Kobylinski", MiddleName = "P.", StreetAddress = "2526a Tri-Lake Blvd Ne", City = "Kirkland", ZipCode = "98033", State = "WA", BirthDate = new System.DateTime(1999, 5, 23) }, + new Patient { SSN = "428-15-1588", FirstName = "Eugene", LastName = "Kogan", MiddleName = "", StreetAddress = "6756 Mowry", City = "Newark", ZipCode = "94560", State = "CA", BirthDate = new System.DateTime(1960, 7, 22) }, + new Patient { SSN = "612-70-0567", FirstName = "Scott", LastName = "Konersmann", MiddleName = "", StreetAddress = "52500 Liberty Way", City = "Fort Worth", ZipCode = "76102", State = "TX", BirthDate = new System.DateTime(1969, 7, 15) }, + new Patient { SSN = "025-76-2628", FirstName = "Joy", LastName = "Koski", MiddleName = "R.", StreetAddress = "258101 Nw Evergreen Parkway", City = "Beaverton", ZipCode = "97005", State = "OR", BirthDate = new System.DateTime(1957, 6, 15) }, + new Patient { SSN = "920-75-2262", FirstName = "Diane", LastName = "Krane", MiddleName = "F.", StreetAddress = "46460 West Oaks Drive", City = "Novi", ZipCode = "48375", State = "MI", BirthDate = new System.DateTime(1974, 9, 5) }, + new Patient { SSN = "748-12-0172", FirstName = "Kay", LastName = "Krane", MiddleName = "E.", StreetAddress = "9228 Via Del Sol", City = "Phoenix", ZipCode = "85004", State = "AZ", BirthDate = new System.DateTime(1992, 12, 27) }, + new Patient { SSN = "230-78-1884", FirstName = "Kay", LastName = "Krane", MiddleName = "E.", StreetAddress = "Prime Outlets", City = "Phoenix", ZipCode = "85004", State = "AZ", BirthDate = new System.DateTime(2010, 9, 14) }, + new Patient { SSN = "121-03-7961", FirstName = "Margaret", LastName = "Krupka", MiddleName = "T.", StreetAddress = "Great Northwestern", City = "North Bend", ZipCode = "98045", State = "WA", BirthDate = new System.DateTime(1971, 3, 9) }, + new Patient { SSN = "993-16-0574", FirstName = "Peter", LastName = "Kurniawan", MiddleName = "", StreetAddress = "63 W Monroe", City = "Chicago", ZipCode = "60610", State = "IL", BirthDate = new System.DateTime(2015, 11, 22) }, + new Patient { SSN = "560-17-8321", FirstName = "Jeffrey", LastName = "Kurtz", MiddleName = "", StreetAddress = "Receiving", City = "Fullerton", ZipCode = "92831", State = "CA", BirthDate = new System.DateTime(1990, 1, 15) }, + new Patient { SSN = "176-23-2126", FirstName = "Eric", LastName = "Lang", MiddleName = "", StreetAddress = "25300 Biddle Road", City = "Medford", ZipCode = "97504", State = "OR", BirthDate = new System.DateTime(1988, 2, 17) }, + new Patient { SSN = "678-53-5154", FirstName = "Elsa", LastName = "Leavitt", MiddleName = "", StreetAddress = "2575 West 2700 South", City = "Salt Lake City", ZipCode = "84101", State = "UT", BirthDate = new System.DateTime(1956, 9, 15) }, + new Patient { SSN = "950-17-4726", FirstName = "Marjorie", LastName = "Lee", MiddleName = "M.", StreetAddress = "2509 W. Frankford", City = "Carrollton", ZipCode = "75006", State = "TX", BirthDate = new System.DateTime(1990, 11, 24) }, + new Patient { SSN = "649-28-8360", FirstName = "Roger", LastName = "Lengel", MiddleName = "", StreetAddress = "490 Ne 4th St", City = "Renton", ZipCode = "98055", State = "WA", BirthDate = new System.DateTime(1998, 2, 22) }, + new Patient { SSN = "507-95-7549", FirstName = "A.", LastName = "Leonetti", MiddleName = "Francesca", StreetAddress = "5700 Legacy Dr", City = "Plano", ZipCode = "75074", State = "TX", BirthDate = new System.DateTime(1979, 4, 27) }, + new Patient { SSN = "442-99-4943", FirstName = "Bonnie", LastName = "Lepro", MiddleName = "B.", StreetAddress = "25600 E St Andrews Pl", City = "Santa Ana", ZipCode = "92701", State = "CA", BirthDate = new System.DateTime(1984, 11, 19) }, + new Patient { SSN = "674-71-8512", FirstName = "Elsie", LastName = "Lewin", MiddleName = "L.", StreetAddress = "P.O. Box 6256916", City = "Dallas", ZipCode = "75201", State = "TX", BirthDate = new System.DateTime(1980, 4, 20) }, + new Patient { SSN = "418-20-4458", FirstName = "George", LastName = "Li", MiddleName = "Z.", StreetAddress = "910 Main Street.", City = "Sparks", ZipCode = "89431", State = "NV", BirthDate = new System.DateTime(2001, 6, 7) }, + new Patient { SSN = "986-20-3872", FirstName = "Joseph", LastName = "Lique", MiddleName = "M.", StreetAddress = "257700 Ne 76th Street", City = "Redmond", ZipCode = "98052", State = "WA", BirthDate = new System.DateTime(1985, 8, 14) }, + new Patient { SSN = "716-41-6291", FirstName = "Paulo", LastName = "Lisboa", MiddleName = "H.", StreetAddress = "9178 Jumping St.", City = "Dallas", ZipCode = "75201", State = "TX", BirthDate = new System.DateTime(1951, 11, 23) }, + new Patient { SSN = "475-64-2482", FirstName = "Paulo", LastName = "Lisboa", MiddleName = "H.", StreetAddress = "Po Box 8259024", City = "Dallas", ZipCode = "75201", State = "TX", BirthDate = new System.DateTime(1971, 6, 7) }, + new Patient { SSN = "471-03-3608", FirstName = "David", LastName = "Liu", MiddleName = "J.", StreetAddress = "855 East Main Avenue", City = "Zeeland", ZipCode = "49464", State = "MI", BirthDate = new System.DateTime(1979, 1, 27) }, + new Patient { SSN = "440-49-4765", FirstName = "Jinghao", LastName = "Liu", MiddleName = "", StreetAddress = "90025 Sterling St", City = "Irving", ZipCode = "75061", State = "TX", BirthDate = new System.DateTime(1996, 4, 27) }, + new Patient { SSN = "321-33-7277", FirstName = "Kevin", LastName = "Liu", MiddleName = "", StreetAddress = "9992 Whipple Rd", City = "Union City", ZipCode = "94587", State = "CA", BirthDate = new System.DateTime(1982, 6, 26) }, + new Patient { SSN = "113-69-0506", FirstName = "Sharon", LastName = "Looney", MiddleName = "J.", StreetAddress = "74400 France Avenue South", City = "Edina", ZipCode = "55436", State = "MN", BirthDate = new System.DateTime(1979, 4, 11) }, + new Patient { SSN = "311-21-1551", FirstName = "Judy", LastName = "Lundahl", MiddleName = "R.", StreetAddress = "25149 Howard Dr", City = "West Chicago", ZipCode = "60185", State = "IL", BirthDate = new System.DateTime(1970, 5, 8) }, + new Patient { SSN = "710-73-5330", FirstName = "Denise", LastName = "Maccietto", MiddleName = "R.", StreetAddress = "Port Huron", City = "Port Huron", ZipCode = "48060", State = "MI", BirthDate = new System.DateTime(1977, 8, 8) }, + new Patient { SSN = "321-14-1319", FirstName = "Scott", LastName = "MacDonald", MiddleName = "", StreetAddress = "St. Louis Marketplace", City = "Saint Louis", ZipCode = "63103", State = "MS", BirthDate = new System.DateTime(1984, 11, 12) }, + new Patient { SSN = "340-75-5874", FirstName = "Kathy", LastName = "Marcovecchio", MiddleName = "R.", StreetAddress = "9905 Three Rivers Drive", City = "Kelso", ZipCode = "98626", State = "WA", BirthDate = new System.DateTime(1994, 4, 3) }, + new Patient { SSN = "043-85-0648", FirstName = "Melissa", LastName = "Marple", MiddleName = "R.", StreetAddress = "603 Gellert Blvd", City = "Daly City", ZipCode = "94015", State = "CA", BirthDate = new System.DateTime(1956, 9, 26) }, + new Patient { SSN = "253-33-7509", FirstName = "Frank", LastName = "Mart¡nez", MiddleName = "", StreetAddress = "870 N. 54th Ave.", City = "Chandler", ZipCode = "85225", State = "AZ", BirthDate = new System.DateTime(2003, 9, 2) }, + new Patient { SSN = "335-68-4629", FirstName = "Chris", LastName = "Maxwell", MiddleName = "", StreetAddress = "3025 E Waterway Blvd", City = "Shelton", ZipCode = "98584", State = "WA", BirthDate = new System.DateTime(2013, 3, 16) }, + new Patient { SSN = "535-30-6577", FirstName = "Sandra", LastName = "Maynard", MiddleName = "B.", StreetAddress = "9952 E. Lohman Ave.", City = "Las Cruces", ZipCode = "88001", State = "NM", BirthDate = new System.DateTime(1971, 6, 20) }, + new Patient { SSN = "613-34-9127", FirstName = "Walter", LastName = "Mays", MiddleName = "J.", StreetAddress = "Po Box 252525", City = "Santa Ana", ZipCode = "92701", State = "CA", BirthDate = new System.DateTime(1974, 2, 5) }, + new Patient { SSN = "754-70-9484", FirstName = "Lola", LastName = "McCarthy", MiddleName = "M.", StreetAddress = "1050 Oak Street", City = "Seattle", ZipCode = "98104", State = "WA", BirthDate = new System.DateTime(1986, 7, 9) }, + new Patient { SSN = "758-46-9282", FirstName = "Jane", LastName = "McCarty", MiddleName = "A.", StreetAddress = "409 Santa Monica Blvd.", City = "Santa Monica", ZipCode = "90401", State = "CA", BirthDate = new System.DateTime(2007, 1, 15) }, + new Patient { SSN = "287-44-2853", FirstName = "Yvonne", LastName = "McKay", MiddleName = "", StreetAddress = "Horizon Outlet", City = "Woodbury", ZipCode = "55125", State = "MN", BirthDate = new System.DateTime(2004, 6, 25) }, + new Patient { SSN = "173-12-0893", FirstName = "Nkenge", LastName = "McLin", MiddleName = "", StreetAddress = "Frontier Mall", City = "Cheyenne", ZipCode = "82001", State = "WY", BirthDate = new System.DateTime(2002, 12, 16) }, + new Patient { SSN = "028-18-1290", FirstName = "R. Morgan", LastName = "Mendoza", MiddleName = "L.", StreetAddress = "Johnson Creek", City = "Johnson Creek", ZipCode = "53038", State = "WI", BirthDate = new System.DateTime(2005, 3, 25) }, + new Patient { SSN = "035-47-1686", FirstName = "Helen", LastName = "Meyer", MiddleName = "M.", StreetAddress = "7505 Laguna Boulevard", City = "Elk Grove", ZipCode = "95624", State = "CA", BirthDate = new System.DateTime(1986, 1, 15) }, + new Patient { SSN = "926-47-4349", FirstName = "Dylan", LastName = "Miller", MiddleName = "", StreetAddress = "Parkway Plaza", City = "El Cajon", ZipCode = "92020", State = "CA", BirthDate = new System.DateTime(1965, 5, 7) }, + new Patient { SSN = "947-84-3762", FirstName = "Frank", LastName = "Miller", MiddleName = "", StreetAddress = "123 W. Lake Ave.", City = "Peoria", ZipCode = "61606", State = "IL", BirthDate = new System.DateTime(1972, 12, 23) }, + new Patient { SSN = "598-00-4792", FirstName = "Virginia", LastName = "Miller", MiddleName = "L.", StreetAddress = "25111 228th St Sw", City = "Bothell", ZipCode = "98011", State = "WA", BirthDate = new System.DateTime(1997, 9, 8) }, + new Patient { SSN = "069-59-6908", FirstName = "Virginia", LastName = "Miller", MiddleName = "L.", StreetAddress = "8713 Yosemite Ct.", City = "Bothell", ZipCode = "98011", State = "WA", BirthDate = new System.DateTime(2015, 6, 17) }, + new Patient { SSN = "864-49-8796", FirstName = "Neva", LastName = "Mitchell", MiddleName = "M.", StreetAddress = "2528 Meridian E", City = "Puyallup", ZipCode = "98371", State = "WA", BirthDate = new System.DateTime(2010, 8, 16) }, + new Patient { SSN = "484-78-0561", FirstName = "Joseph", LastName = "Mitzner", MiddleName = "P.", StreetAddress = "123 Camelia Avenue", City = "Oxnard", ZipCode = "93030", State = "CA", BirthDate = new System.DateTime(1991, 4, 16) }, + new Patient { SSN = "684-27-6433", FirstName = "Margaret", LastName = "Smith", MiddleName = "J.", StreetAddress = "Lewiston Mall", City = "Lewiston", ZipCode = "83501", State = "ID", BirthDate = new System.DateTime(1966, 8, 2) }, + new Patient { SSN = "521-85-5433", FirstName = "Laura", LastName = "Steele", MiddleName = "C.", StreetAddress = "253731 West Bell Road", City = "Surprise", ZipCode = "85374", State = "AZ", BirthDate = new System.DateTime(1954, 9, 24) }, + new Patient { SSN = "239-08-6212", FirstName = "Alan", LastName = "Steiner", MiddleName = "", StreetAddress = "2255 254th Avenue Se", City = "Albany", ZipCode = "97321", State = "OR", BirthDate = new System.DateTime(1969, 1, 9) }, + new Patient { SSN = "655-64-2836", FirstName = "Alice", LastName = "Steiner", MiddleName = "M.", StreetAddress = "Lone Star Factory", City = "La Marque", ZipCode = "77568", State = "TX", BirthDate = new System.DateTime(1950, 1, 15) }, + new Patient { SSN = "850-56-7206", FirstName = "Derik", LastName = "Stenerson", MiddleName = "", StreetAddress = "Factory Merchants", City = "Branson", ZipCode = "65616", State = "MS", BirthDate = new System.DateTime(1984, 4, 5) }, + new Patient { SSN = "077-42-9130", FirstName = "Vassar", LastName = "Stern", MiddleName = "J.", StreetAddress = "25130 South State Street", City = "Sandy", ZipCode = "84070", State = "UT", BirthDate = new System.DateTime(2005, 6, 6) }, + new Patient { SSN = "094-90-4314", FirstName = "Wathalee", LastName = "Steuber", MiddleName = "R.", StreetAddress = "700 Se Sunnyside Road", City = "Clackamas", ZipCode = "97015", State = "OR", BirthDate = new System.DateTime(2001, 9, 24) }, + new Patient { SSN = "409-83-6433", FirstName = "Liza Marie", LastName = "Stevens", MiddleName = "N.", StreetAddress = "7750 E Marching Rd", City = "Scottsdale", ZipCode = "85257", State = "AZ", BirthDate = new System.DateTime(1999, 12, 24) }, + new Patient { SSN = "351-34-7304", FirstName = "Robert", LastName = "Stotka", MiddleName = "B.", StreetAddress = "Sports Stores @ Tuscola", City = "Tuscola", ZipCode = "61953", State = "IL", BirthDate = new System.DateTime(1974, 4, 19) }, + new Patient { SSN = "866-96-8557", FirstName = "Kayla", LastName = "Stotler", MiddleName = "M.", StreetAddress = "9980 S Alma School Road", City = "Chandler", ZipCode = "85225", State = "AZ", BirthDate = new System.DateTime(1987, 5, 6) }, + new Patient { SSN = "716-37-0786", FirstName = "Ruth", LastName = "Suffin", MiddleName = "J.", StreetAddress = "Lancaster Mall", City = "Salem", ZipCode = "97301", State = "OR", BirthDate = new System.DateTime(2001, 10, 14) }, + new Patient { SSN = "689-86-1583", FirstName = "Elizabeth", LastName = "Sullivan", MiddleName = "J.", StreetAddress = "Town East Center", City = "Mesquite", ZipCode = "75149", State = "TX", BirthDate = new System.DateTime(2002, 6, 18) }, + new Patient { SSN = "622-25-6018", FirstName = "Michael", LastName = "Sullivan", MiddleName = "", StreetAddress = "5867 Sunrise Boulevard", City = "Citrus Heights", ZipCode = "95610", State = "CA", BirthDate = new System.DateTime(1983, 8, 27) }, + new Patient { SSN = "137-21-0253", FirstName = "Brad", LastName = "Sutton", MiddleName = "", StreetAddress = "Three Rivers Mall", City = "Kelso", ZipCode = "98626", State = "WA", BirthDate = new System.DateTime(2011, 12, 15) }, + new Patient { SSN = "237-99-8262", FirstName = "Abraham", LastName = "Swearengin", MiddleName = "L.", StreetAddress = "9920 Bridgepointe Parkway", City = "San Mateo", ZipCode = "94404", State = "CA", BirthDate = new System.DateTime(1978, 4, 26) }, + new Patient { SSN = "518-41-6271", FirstName = "Julie", LastName = "Taft-Rider", MiddleName = "", StreetAddress = "6996 South Lindbergh", City = "Saint Louis", ZipCode = "63103", State = "MS", BirthDate = new System.DateTime(1992, 12, 9) }, + new Patient { SSN = "554-31-5202", FirstName = "Clarence", LastName = "Tatman", MiddleName = "R.", StreetAddress = "San Diego Factory", City = "San Ysidro", ZipCode = "92173", State = "CA", BirthDate = new System.DateTime(1975, 10, 7) }, + new Patient { SSN = "591-44-7136", FirstName = "Chad", LastName = "Tedford", MiddleName = "J.", StreetAddress = "9500b E. Central Texas Expressway", City = "Killeen", ZipCode = "76541", State = "TX", BirthDate = new System.DateTime(1994, 4, 24) }, + new Patient { SSN = "069-09-3831", FirstName = "Vanessa", LastName = "Tench", MiddleName = "J.", StreetAddress = "2500 N Serene Blvd", City = "El Segundo", ZipCode = "90245", State = "CA", BirthDate = new System.DateTime(1951, 11, 9) }, + new Patient { SSN = "523-93-8801", FirstName = "Judy", LastName = "Thames", MiddleName = "J.", StreetAddress = "25102 Springwater", City = "Wenatchee", ZipCode = "98801", State = "WA", BirthDate = new System.DateTime(1989, 3, 14) }, + new Patient { SSN = "266-03-4963", FirstName = "Daniel", LastName = "Thompson", MiddleName = "P.", StreetAddress = "755 Nw Grandstand", City = "Issaquah", ZipCode = "98027", State = "WA", BirthDate = new System.DateTime(2010, 8, 7) }, + new Patient { SSN = "496-54-0726", FirstName = "Donald", LastName = "Thompson", MiddleName = "M.", StreetAddress = "25472 Marlay Ave", City = "Fontana", ZipCode = "92335", State = "CA", BirthDate = new System.DateTime(1974, 7, 22) }, + new Patient { SSN = "984-43-6756", FirstName = "Kendra", LastName = "Thompson", MiddleName = "N.", StreetAddress = "22571 South 2500 East", City = "Idaho Falls", ZipCode = "83402", State = "ID", BirthDate = new System.DateTime(2011, 10, 8) }, + new Patient { SSN = "047-31-4129", FirstName = "Diane", LastName = "Tibbott", MiddleName = "", StreetAddress = "8525 South Parker Road", City = "Parker", ZipCode = "80138", State = "CO", BirthDate = new System.DateTime(1991, 8, 15) }, + new Patient { SSN = "217-20-9777", FirstName = "Delia", LastName = "Toone", MiddleName = "B.", StreetAddress = "755 Columbia Ctr Blvd", City = "Kennewick", ZipCode = "99337", State = "WA", BirthDate = new System.DateTime(1983, 3, 6) }, + new Patient { SSN = "420-28-0429", FirstName = "Michael John", LastName = "Troyer", MiddleName = "R.", StreetAddress = "Oxnard Outlet", City = "Oxnard", ZipCode = "93030", State = "CA", BirthDate = new System.DateTime(1992, 1, 23) }, + new Patient { SSN = "236-75-2355", FirstName = "Christie", LastName = "Trujillo", MiddleName = "J.", StreetAddress = "One Dancing, Rr No. 25", City = "Round Rock", ZipCode = "78664", State = "TX", BirthDate = new System.DateTime(1986, 11, 24) }, + new Patient { SSN = "984-20-5166", FirstName = "Sairaj", LastName = "Uddin", MiddleName = "", StreetAddress = "Natomas Marketplace", City = "Sacramento", ZipCode = "95814", State = "CA", BirthDate = new System.DateTime(1975, 11, 18) }, + new Patient { SSN = "353-75-0098", FirstName = "Sunil", LastName = "Uppal", MiddleName = "", StreetAddress = "25500 Old Spanish Trail", City = "Houston", ZipCode = "77003", State = "TX", BirthDate = new System.DateTime(1985, 6, 24) }, + new Patient { SSN = "934-96-8406", FirstName = "Jessie", LastName = "Valerio", MiddleName = "E.", StreetAddress = "Mall Of Orange", City = "Orange", ZipCode = "92867", State = "CA", BirthDate = new System.DateTime(2015, 4, 9) }, + new Patient { SSN = "773-23-3159", FirstName = "Gregory", LastName = "Vanderbout", MiddleName = "T.", StreetAddress = "950 Gateway Street", City = "Springfield", ZipCode = "97477", State = "OR", BirthDate = new System.DateTime(2013, 7, 9) }, + new Patient { SSN = "951-08-3331", FirstName = "Michael", LastName = "Vanderhyde", MiddleName = "", StreetAddress = "Lincoln Square", City = "Arlington", ZipCode = "76010", State = "TX", BirthDate = new System.DateTime(1993, 2, 22) }, + new Patient { SSN = "856-23-4990", FirstName = "Margaret", LastName = "Vanderkamp", MiddleName = "J.", StreetAddress = "62500 Neil Road", City = "Reno", ZipCode = "89502", State = "NV", BirthDate = new System.DateTime(1976, 9, 13) }, + new Patient { SSN = "359-67-5826", FirstName = "Gary", LastName = "Vargas", MiddleName = "T", StreetAddress = "Stevens Creek Shopping Center", City = "San Jose", ZipCode = "95112", State = "CA", BirthDate = new System.DateTime(1991, 3, 12) }, + new Patient { SSN = "743-66-8203", FirstName = "Nieves", LastName = "Vargas", MiddleName = "J.", StreetAddress = "Kensington Valley Shops", City = "Howell", ZipCode = "48843", State = "MI", BirthDate = new System.DateTime(1988, 11, 2) }, + new Patient { SSN = "368-97-5673", FirstName = "Ranjit", LastName = "Varkey Chudukatil", MiddleName = "Rudra", StreetAddress = "455 256th St.", City = "Moline", ZipCode = "61265", State = "IL", BirthDate = new System.DateTime(1992, 5, 9) }, + new Patient { SSN = "890-04-1424", FirstName = "Patricia", LastName = "Vasquez", MiddleName = "M.", StreetAddress = "409 S. Main Ste. 25", City = "Ellensburg", ZipCode = "98926", State = "WA", BirthDate = new System.DateTime(2013, 9, 7) }, + new Patient { SSN = "267-37-1036", FirstName = "Wanda", LastName = "Vernon", MiddleName = "F.", StreetAddress = "Ontario Mills", City = "Ontario", ZipCode = "91764", State = "CA", BirthDate = new System.DateTime(2004, 9, 28) }, + new Patient { SSN = "101-14-5907", FirstName = "Robert", LastName = "Vessa", MiddleName = "R.", StreetAddress = "72540 Blanco Rd.", City = "San Antonio", ZipCode = "78204", State = "TX", BirthDate = new System.DateTime(1955, 2, 27) }, + new Patient { SSN = "148-51-2717", FirstName = "Caroline", LastName = "Vicknair", MiddleName = "A.", StreetAddress = "660 Lindbergh", City = "Saint Louis", ZipCode = "63103", State = "MS", BirthDate = new System.DateTime(2007, 9, 10) } + ); + + // Create visits + context.Visits.AddOrUpdate( + new Visit { PatientID = 1, Date = new System.DateTime(2016, 1, 10), Reason = "Headache", Treatment = "A nap" }, + new Visit { PatientID = 1, Date = new System.DateTime(2016, 1, 10), Reason = "Worse headache", Treatment = "A longer nap" } + ); + + + // Create test userts + var manager = new UserManager( + new UserStore( + new ApplicationDbContext())); + + var password = "Password!1"; + var user1 = new ApplicationUser() + { + UserName = string.Format("rachel@contoso.com"), + Patients = new List() + }; + + manager.Create(user1, string.Format(password)); + var user2 = new ApplicationUser() + { + UserName = string.Format("alice@contoso.com"), + //Patients = (from p in context.Patients where p.LastName.StartsWith("B") select p).ToList() + }; + manager.Create(user2, string.Format(password)); + context.SaveChanges(); + user1.Patients = (from p in context.Patients where p.LastName.StartsWith("B") select p).ToList(); + /*var patient = context.Patients.Find(1); + patient.ApplicationUsers.Add(user1);*/ + + context.SaveChanges(); + + } + } +} diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Models/AccountViewModels.cs b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Models/AccountViewModels.cs new file mode 100644 index 00000000..019a5123 --- /dev/null +++ b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Models/AccountViewModels.cs @@ -0,0 +1,112 @@ +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; + +namespace ContosoClinic.Models +{ + public class ExternalLoginConfirmationViewModel + { + [Required] + [Display(Name = "Email")] + public string Email { get; set; } + } + + public class ExternalLoginListViewModel + { + public string ReturnUrl { get; set; } + } + + public class SendCodeViewModel + { + public string SelectedProvider { get; set; } + public ICollection Providers { get; set; } + public string ReturnUrl { get; set; } + public bool RememberMe { get; set; } + } + + public class VerifyCodeViewModel + { + [Required] + public string Provider { get; set; } + + [Required] + [Display(Name = "Code")] + public string Code { get; set; } + public string ReturnUrl { get; set; } + + [Display(Name = "Remember this browser?")] + public bool RememberBrowser { get; set; } + + public bool RememberMe { get; set; } + } + + public class ForgotViewModel + { + [Required] + [Display(Name = "Email")] + public string Email { get; set; } + } + + public class LoginViewModel + { + [Required] + [Display(Name = "Email")] + [EmailAddress] + public string Email { get; set; } + + [Required] + [DataType(DataType.Password)] + [Display(Name = "Password")] + public string Password { get; set; } + + [Display(Name = "Remember me?")] + public bool RememberMe { get; set; } + } + + public class RegisterViewModel + { + [Required] + [EmailAddress] + [Display(Name = "Email")] + public string Email { get; set; } + + [Required] + [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] + [DataType(DataType.Password)] + [Display(Name = "Password")] + public string Password { get; set; } + + [DataType(DataType.Password)] + [Display(Name = "Confirm password")] + [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")] + public string ConfirmPassword { get; set; } + } + + public class ResetPasswordViewModel + { + [Required] + [EmailAddress] + [Display(Name = "Email")] + public string Email { get; set; } + + [Required] + [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] + [DataType(DataType.Password)] + [Display(Name = "Password")] + public string Password { get; set; } + + [DataType(DataType.Password)] + [Display(Name = "Confirm password")] + [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")] + public string ConfirmPassword { get; set; } + + public string Code { get; set; } + } + + public class ForgotPasswordViewModel + { + [Required] + [EmailAddress] + [Display(Name = "Email")] + public string Email { get; set; } + } +} diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Models/ClinicModels.cs b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Models/ClinicModels.cs new file mode 100644 index 00000000..a693ff03 --- /dev/null +++ b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Models/ClinicModels.cs @@ -0,0 +1,79 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.ComponentModel.DataAnnotations.Schema; +using System.ComponentModel.DataAnnotations; + +namespace ContosoClinic.Models +{ + public class Patient + { + public Patient() { } + public int PatientID { get; set; } + + [StringLength(11)] + [Column(TypeName = "char")] + [Required] + public string SSN { get; set; } + + [StringLength(50)] + public string FirstName { get; set; } + + [StringLength(50)] + [Required] + public string LastName { get; set; } + + [StringLength(50)] + public string MiddleName { get; set; } + + [StringLength(50)] + [Required] + public string StreetAddress { get; set; } + + [StringLength(50)] + [Required] + public string City { get; set; } + + [StringLength(5)] + [Column(TypeName = "char")] + [Required] + public string ZipCode { get; set; } + + [StringLength(2)] + [Column(TypeName = "char")] + [Required] + public string State { get; set; } + + [Column(TypeName = "date")] + [Required] + public System.DateTime BirthDate { get; set; } + + public virtual ICollection Visits { get; set; } + public virtual ICollection ApplicationUsers { get; set; } + } + + public class Visit + { + public int VisitID { get; set; } + + [Required] + public int PatientID { get; set; } + + [Column(TypeName = "date")] + [Required] + public System.DateTime Date { get; set; } + + [StringLength(4000)] + [Required] + public string Reason { get; set; } + + [StringLength(4000)] + [Required] + public string Treatment { get; set; } + [Column(TypeName = "date")] + public Nullable FollowUpDate { get; set; } + + public virtual Patient Patient { get; set; } + } +} \ No newline at end of file diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Models/IdentityModels.cs b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Models/IdentityModels.cs new file mode 100644 index 00000000..44821be5 --- /dev/null +++ b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Models/IdentityModels.cs @@ -0,0 +1,40 @@ +using System.Data.Entity; +using System.Security.Claims; +using System.Threading.Tasks; +using Microsoft.AspNet.Identity; +using Microsoft.AspNet.Identity.EntityFramework; +using System.Collections.Generic; + +namespace ContosoClinic.Models +{ + // You can add profile data for the user by adding more properties to your ApplicationUser class, please visit http://go.microsoft.com/fwlink/?LinkID=317594 to learn more. + public class ApplicationUser : IdentityUser + { + public async Task GenerateUserIdentityAsync(UserManager manager) + { + // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType + var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie); + // Add custom user claims here + return userIdentity; + } + public virtual ICollection Patients { get; set; } + + } + + public class ApplicationDbContext : IdentityDbContext + { + public ApplicationDbContext() + : base("DefaultConnection", throwIfV1Schema: false) + { + } + + public static ApplicationDbContext Create() + { + return new ApplicationDbContext(); + } + + public System.Data.Entity.DbSet Patients { get; set; } + + public System.Data.Entity.DbSet Visits { get; set; } + } +} \ No newline at end of file diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Models/ManageViewModels.cs b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Models/ManageViewModels.cs new file mode 100644 index 00000000..1da545c6 --- /dev/null +++ b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Models/ManageViewModels.cs @@ -0,0 +1,86 @@ +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using Microsoft.AspNet.Identity; +using Microsoft.Owin.Security; + +namespace ContosoClinic.Models +{ + public class IndexViewModel + { + public bool HasPassword { get; set; } + public IList Logins { get; set; } + public string PhoneNumber { get; set; } + public bool TwoFactor { get; set; } + public bool BrowserRemembered { get; set; } + } + + public class ManageLoginsViewModel + { + public IList CurrentLogins { get; set; } + public IList OtherLogins { get; set; } + } + + public class FactorViewModel + { + public string Purpose { get; set; } + } + + public class SetPasswordViewModel + { + [Required] + [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] + [DataType(DataType.Password)] + [Display(Name = "New password")] + public string NewPassword { get; set; } + + [DataType(DataType.Password)] + [Display(Name = "Confirm new password")] + [Compare("NewPassword", ErrorMessage = "The new password and confirmation password do not match.")] + public string ConfirmPassword { get; set; } + } + + public class ChangePasswordViewModel + { + [Required] + [DataType(DataType.Password)] + [Display(Name = "Current password")] + public string OldPassword { get; set; } + + [Required] + [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] + [DataType(DataType.Password)] + [Display(Name = "New password")] + public string NewPassword { get; set; } + + [DataType(DataType.Password)] + [Display(Name = "Confirm new password")] + [Compare("NewPassword", ErrorMessage = "The new password and confirmation password do not match.")] + public string ConfirmPassword { get; set; } + } + + public class AddPhoneNumberViewModel + { + [Required] + [Phone] + [Display(Name = "Phone Number")] + public string Number { get; set; } + } + + public class VerifyPhoneNumberViewModel + { + [Required] + [Display(Name = "Code")] + public string Code { get; set; } + + [Required] + [Phone] + [Display(Name = "Phone Number")] + public string PhoneNumber { get; set; } + } + + public class ConfigureTwoFactorViewModel + { + public string SelectedProvider { get; set; } + public ICollection Providers { get; set; } + } +} \ No newline at end of file diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Models/SessionContextInterceptor.cs b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Models/SessionContextInterceptor.cs new file mode 100644 index 00000000..297d1425 --- /dev/null +++ b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Models/SessionContextInterceptor.cs @@ -0,0 +1,137 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Data.Common; +using System.Data.Entity; +using System.Data.Entity.Infrastructure.Interception; +using Microsoft.AspNet.Identity; + +namespace ContactManager.Models +{ + public class SessionContextInterceptor : IDbConnectionInterceptor + { + public void Opened(DbConnection connection, DbConnectionInterceptionContext interceptionContext) + { + // Set SESSION_CONTEXT to current UserId whenever EF opens a connection + try + { + var userId = System.Web.HttpContext.Current.User.Identity.GetUserId(); + if (userId != null) + { + DbCommand cmd = connection.CreateCommand(); + cmd.CommandText = "EXEC sp_set_session_context @key=N'UserId', @value=@UserId"; + DbParameter param = cmd.CreateParameter(); + param.ParameterName = "@UserId"; + param.Value = userId; + cmd.Parameters.Add(param); + cmd.ExecuteNonQuery(); + } + } + catch (System.NullReferenceException) + { + // If no user is logged in, leave SESSION_CONTEXT null (all rows will be filtered) + } + } + + public void Opening(DbConnection connection, DbConnectionInterceptionContext interceptionContext) + { + } + + public void BeganTransaction(DbConnection connection, BeginTransactionInterceptionContext interceptionContext) + { + } + + public void BeginningTransaction(DbConnection connection, BeginTransactionInterceptionContext interceptionContext) + { + } + + public void Closed(DbConnection connection, DbConnectionInterceptionContext interceptionContext) + { + } + + public void Closing(DbConnection connection, DbConnectionInterceptionContext interceptionContext) + { + } + + public void ConnectionStringGetting(DbConnection connection, DbConnectionInterceptionContext interceptionContext) + { + } + + public void ConnectionStringGot(DbConnection connection, DbConnectionInterceptionContext interceptionContext) + { + } + + public void ConnectionStringSet(DbConnection connection, DbConnectionPropertyInterceptionContext interceptionContext) + { + } + + public void ConnectionStringSetting(DbConnection connection, DbConnectionPropertyInterceptionContext interceptionContext) + { + } + + public void ConnectionTimeoutGetting(DbConnection connection, DbConnectionInterceptionContext interceptionContext) + { + } + + public void ConnectionTimeoutGot(DbConnection connection, DbConnectionInterceptionContext interceptionContext) + { + } + + public void DataSourceGetting(DbConnection connection, DbConnectionInterceptionContext interceptionContext) + { + } + + public void DataSourceGot(DbConnection connection, DbConnectionInterceptionContext interceptionContext) + { + } + + public void DatabaseGetting(DbConnection connection, DbConnectionInterceptionContext interceptionContext) + { + } + + public void DatabaseGot(DbConnection connection, DbConnectionInterceptionContext interceptionContext) + { + } + + public void Disposed(DbConnection connection, DbConnectionInterceptionContext interceptionContext) + { + } + + public void Disposing(DbConnection connection, DbConnectionInterceptionContext interceptionContext) + { + } + + public void EnlistedTransaction(DbConnection connection, EnlistTransactionInterceptionContext interceptionContext) + { + } + + public void EnlistingTransaction(DbConnection connection, EnlistTransactionInterceptionContext interceptionContext) + { + } + + public void ServerVersionGetting(DbConnection connection, DbConnectionInterceptionContext interceptionContext) + { + } + + public void ServerVersionGot(DbConnection connection, DbConnectionInterceptionContext interceptionContext) + { + } + + public void StateGetting(DbConnection connection, DbConnectionInterceptionContext interceptionContext) + { + } + + public void StateGot(DbConnection connection, DbConnectionInterceptionContext interceptionContext) + { + } + } + + public class SessionContextConfiguration : DbConfiguration + { + public SessionContextConfiguration() + { + AddInterceptor(new SessionContextInterceptor()); + } + } +} \ No newline at end of file diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Properties/AssemblyInfo.cs b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..e0b3445d --- /dev/null +++ b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Properties/AssemblyInfo.cs @@ -0,0 +1,35 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("ContosoClinic")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("ContosoClinic")] +[assembly: AssemblyCopyright("Copyright © 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("95662cf0-2d48-4a49-8433-34919b38cab7")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Revision and Build Numbers +// by using the '*' as shown below: +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Scripts/_references.js b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Scripts/_references.js new file mode 100644 index 00000000..f8511e74 --- /dev/null +++ b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Scripts/_references.js @@ -0,0 +1,7 @@ +/// +/// +/// +/// +/// +/// +/// diff --git a/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Scripts/bootstrap.js b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Scripts/bootstrap.js new file mode 100644 index 00000000..2c642571 --- /dev/null +++ b/samples/features/security/always-encrypted-with-secure-enclaves/src/ContosoClinic/Scripts/bootstrap.js @@ -0,0 +1,1999 @@ +/** +* bootstrap.js v3.0.0 by @fat and @mdo +* Copyright 2013 Twitter Inc. +* http://www.apache.org/licenses/LICENSE-2.0 +*/ +if (!jQuery) { throw new Error("Bootstrap requires jQuery") } + +/* ======================================================================== + * Bootstrap: transition.js v3.0.0 + * http://twbs.github.com/bootstrap/javascript.html#transitions + * ======================================================================== + * Copyright 2013 Twitter, Inc. + * + * 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. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) + // ============================================================ + + function transitionEnd() { + var el = document.createElement('bootstrap') + + var transEndEventNames = { + 'WebkitTransition' : 'webkitTransitionEnd' + , 'MozTransition' : 'transitionend' + , 'OTransition' : 'oTransitionEnd otransitionend' + , 'transition' : 'transitionend' + } + + for (var name in transEndEventNames) { + if (el.style[name] !== undefined) { + return { end: transEndEventNames[name] } + } + } + } + + // http://blog.alexmaccaw.com/css-transitions + $.fn.emulateTransitionEnd = function (duration) { + var called = false, $el = this + $(this).one($.support.transition.end, function () { called = true }) + var callback = function () { if (!called) $($el).trigger($.support.transition.end) } + setTimeout(callback, duration) + return this + } + + $(function () { + $.support.transition = transitionEnd() + }) + +}(window.jQuery); + +/* ======================================================================== + * Bootstrap: alert.js v3.0.0 + * http://twbs.github.com/bootstrap/javascript.html#alerts + * ======================================================================== + * Copyright 2013 Twitter, Inc. + * + * 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. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // ALERT CLASS DEFINITION + // ====================== + + var dismiss = '[data-dismiss="alert"]' + var Alert = function (el) { + $(el).on('click', dismiss, this.close) + } + + Alert.prototype.close = function (e) { + var $this = $(this) + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = $(selector) + + if (e) e.preventDefault() + + if (!$parent.length) { + $parent = $this.hasClass('alert') ? $this : $this.parent() + } + + $parent.trigger(e = $.Event('close.bs.alert')) + + if (e.isDefaultPrevented()) return + + $parent.removeClass('in') + + function removeElement() { + $parent.trigger('closed.bs.alert').remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent + .one($.support.transition.end, removeElement) + .emulateTransitionEnd(150) : + removeElement() + } + + + // ALERT PLUGIN DEFINITION + // ======================= + + var old = $.fn.alert + + $.fn.alert = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.alert') + + if (!data) $this.data('bs.alert', (data = new Alert(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + $.fn.alert.Constructor = Alert + + + // ALERT NO CONFLICT + // ================= + + $.fn.alert.noConflict = function () { + $.fn.alert = old + return this + } + + + // ALERT DATA-API + // ============== + + $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) + +}(window.jQuery); + +/* ======================================================================== + * Bootstrap: button.js v3.0.0 + * http://twbs.github.com/bootstrap/javascript.html#buttons + * ======================================================================== + * Copyright 2013 Twitter, Inc. + * + * 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. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // BUTTON PUBLIC CLASS DEFINITION + // ============================== + + var Button = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Button.DEFAULTS, options) + } + + Button.DEFAULTS = { + loadingText: 'loading...' + } + + Button.prototype.setState = function (state) { + var d = 'disabled' + var $el = this.$element + var val = $el.is('input') ? 'val' : 'html' + var data = $el.data() + + state = state + 'Text' + + if (!data.resetText) $el.data('resetText', $el[val]()) + + $el[val](data[state] || this.options[state]) + + // push to event loop to allow forms to submit + setTimeout(function () { + state == 'loadingText' ? + $el.addClass(d).attr(d, d) : + $el.removeClass(d).removeAttr(d); + }, 0) + } + + Button.prototype.toggle = function () { + var $parent = this.$element.closest('[data-toggle="buttons"]') + + if ($parent.length) { + var $input = this.$element.find('input') + .prop('checked', !this.$element.hasClass('active')) + .trigger('change') + if ($input.prop('type') === 'radio') $parent.find('.active').removeClass('active') + } + + this.$element.toggleClass('active') + } + + + // BUTTON PLUGIN DEFINITION + // ======================== + + var old = $.fn.button + + $.fn.button = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.button') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.button', (data = new Button(this, options))) + + if (option == 'toggle') data.toggle() + else if (option) data.setState(option) + }) + } + + $.fn.button.Constructor = Button + + + // BUTTON NO CONFLICT + // ================== + + $.fn.button.noConflict = function () { + $.fn.button = old + return this + } + + + // BUTTON DATA-API + // =============== + + $(document).on('click.bs.button.data-api', '[data-toggle^=button]', function (e) { + var $btn = $(e.target) + if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') + $btn.button('toggle') + e.preventDefault() + }) + +}(window.jQuery); + +/* ======================================================================== + * Bootstrap: carousel.js v3.0.0 + * http://twbs.github.com/bootstrap/javascript.html#carousel + * ======================================================================== + * Copyright 2012 Twitter, Inc. + * + * 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. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // CAROUSEL CLASS DEFINITION + // ========================= + + var Carousel = function (element, options) { + this.$element = $(element) + this.$indicators = this.$element.find('.carousel-indicators') + this.options = options + this.paused = + this.sliding = + this.interval = + this.$active = + this.$items = null + + this.options.pause == 'hover' && this.$element + .on('mouseenter', $.proxy(this.pause, this)) + .on('mouseleave', $.proxy(this.cycle, this)) + } + + Carousel.DEFAULTS = { + interval: 5000 + , pause: 'hover' + , wrap: true + } + + Carousel.prototype.cycle = function (e) { + e || (this.paused = false) + + this.interval && clearInterval(this.interval) + + this.options.interval + && !this.paused + && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) + + return this + } + + Carousel.prototype.getActiveIndex = function () { + this.$active = this.$element.find('.item.active') + this.$items = this.$active.parent().children() + + return this.$items.index(this.$active) + } + + Carousel.prototype.to = function (pos) { + var that = this + var activeIndex = this.getActiveIndex() + + if (pos > (this.$items.length - 1) || pos < 0) return + + if (this.sliding) return this.$element.one('slid', function () { that.to(pos) }) + if (activeIndex == pos) return this.pause().cycle() + + return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos])) + } + + Carousel.prototype.pause = function (e) { + e || (this.paused = true) + + if (this.$element.find('.next, .prev').length && $.support.transition.end) { + this.$element.trigger($.support.transition.end) + this.cycle(true) + } + + this.interval = clearInterval(this.interval) + + return this + } + + Carousel.prototype.next = function () { + if (this.sliding) return + return this.slide('next') + } + + Carousel.prototype.prev = function () { + if (this.sliding) return + return this.slide('prev') + } + + Carousel.prototype.slide = function (type, next) { + var $active = this.$element.find('.item.active') + var $next = next || $active[type]() + var isCycling = this.interval + var direction = type == 'next' ? 'left' : 'right' + var fallback = type == 'next' ? 'first' : 'last' + var that = this + + if (!$next.length) { + if (!this.options.wrap) return + $next = this.$element.find('.item')[fallback]() + } + + this.sliding = true + + isCycling && this.pause() + + var e = $.Event('slide.bs.carousel', { relatedTarget: $next[0], direction: direction }) + + if ($next.hasClass('active')) return + + if (this.$indicators.length) { + this.$indicators.find('.active').removeClass('active') + this.$element.one('slid', function () { + var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()]) + $nextIndicator && $nextIndicator.addClass('active') + }) + } + + if ($.support.transition && this.$element.hasClass('slide')) { + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + $active + .one($.support.transition.end, function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { that.$element.trigger('slid') }, 0) + }) + .emulateTransitionEnd(600) + } else { + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger('slid') + } + + isCycling && this.cycle() + + return this + } + + + // CAROUSEL PLUGIN DEFINITION + // ========================== + + var old = $.fn.carousel + + $.fn.carousel = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.carousel') + var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) + var action = typeof option == 'string' ? option : options.slide + + if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (action) data[action]() + else if (options.interval) data.pause().cycle() + }) + } + + $.fn.carousel.Constructor = Carousel + + + // CAROUSEL NO CONFLICT + // ==================== + + $.fn.carousel.noConflict = function () { + $.fn.carousel = old + return this + } + + + // CAROUSEL DATA-API + // ================= + + $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) { + var $this = $(this), href + var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 + var options = $.extend({}, $target.data(), $this.data()) + var slideIndex = $this.attr('data-slide-to') + if (slideIndex) options.interval = false + + $target.carousel(options) + + if (slideIndex = $this.attr('data-slide-to')) { + $target.data('bs.carousel').to(slideIndex) + } + + e.preventDefault() + }) + + $(window).on('load', function () { + $('[data-ride="carousel"]').each(function () { + var $carousel = $(this) + $carousel.carousel($carousel.data()) + }) + }) + +}(window.jQuery); + +/* ======================================================================== + * Bootstrap: collapse.js v3.0.0 + * http://twbs.github.com/bootstrap/javascript.html#collapse + * ======================================================================== + * Copyright 2012 Twitter, Inc. + * + * 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. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // COLLAPSE PUBLIC CLASS DEFINITION + // ================================ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Collapse.DEFAULTS, options) + this.transitioning = null + + if (this.options.parent) this.$parent = $(this.options.parent) + if (this.options.toggle) this.toggle() + } + + Collapse.DEFAULTS = { + toggle: true + } + + Collapse.prototype.dimension = function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + Collapse.prototype.show = function () { + if (this.transitioning || this.$element.hasClass('in')) return + + var startEvent = $.Event('show.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var actives = this.$parent && this.$parent.find('> .panel > .in') + + if (actives && actives.length) { + var hasData = actives.data('bs.collapse') + if (hasData && hasData.transitioning) return + actives.collapse('hide') + hasData || actives.data('bs.collapse', null) + } + + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + .addClass('collapsing') + [dimension](0) + + this.transitioning = 1 + + var complete = function () { + this.$element + .removeClass('collapsing') + .addClass('in') + [dimension]('auto') + this.transitioning = 0 + this.$element.trigger('shown.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + var scrollSize = $.camelCase(['scroll', dimension].join('-')) + + this.$element + .one($.support.transition.end, $.proxy(complete, this)) + .emulateTransitionEnd(350) + [dimension](this.$element[0][scrollSize]) + } + + Collapse.prototype.hide = function () { + if (this.transitioning || !this.$element.hasClass('in')) return + + var startEvent = $.Event('hide.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var dimension = this.dimension() + + this.$element + [dimension](this.$element[dimension]()) + [0].offsetHeight + + this.$element + .addClass('collapsing') + .removeClass('collapse') + .removeClass('in') + + this.transitioning = 1 + + var complete = function () { + this.transitioning = 0 + this.$element + .trigger('hidden.bs.collapse') + .removeClass('collapsing') + .addClass('collapse') + } + + if (!$.support.transition) return complete.call(this) + + this.$element + [dimension](0) + .one($.support.transition.end, $.proxy(complete, this)) + .emulateTransitionEnd(350) + } + + Collapse.prototype.toggle = function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + + // COLLAPSE PLUGIN DEFINITION + // ========================== + + var old = $.fn.collapse + + $.fn.collapse = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.collapse') + var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.collapse.Constructor = Collapse + + + // COLLAPSE NO CONFLICT + // ==================== + + $.fn.collapse.noConflict = function () { + $.fn.collapse = old + return this + } + + + // COLLAPSE DATA-API + // ================= + + $(document).on('click.bs.collapse.data-api', '[data-toggle=collapse]', function (e) { + var $this = $(this), href + var target = $this.attr('data-target') + || e.preventDefault() + || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 + var $target = $(target) + var data = $target.data('bs.collapse') + var option = data ? 'toggle' : $this.data() + var parent = $this.attr('data-parent') + var $parent = parent && $(parent) + + if (!data || !data.transitioning) { + if ($parent) $parent.find('[data-toggle=collapse][data-parent="' + parent + '"]').not($this).addClass('collapsed') + $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed') + } + + $target.collapse(option) + }) + +}(window.jQuery); + +/* ======================================================================== + * Bootstrap: dropdown.js v3.0.0 + * http://twbs.github.com/bootstrap/javascript.html#dropdowns + * ======================================================================== + * Copyright 2012 Twitter, Inc. + * + * 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. + * ======================================================================== */ + + ++function ($) { "use strict"; + + // DROPDOWN CLASS DEFINITION + // ========================= + + var backdrop = '.dropdown-backdrop' + var toggle = '[data-toggle=dropdown]' + var Dropdown = function (element) { + var $el = $(element).on('click.bs.dropdown', this.toggle) + } + + Dropdown.prototype.toggle = function (e) { + var $this = $(this) + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + clearMenus() + + if (!isActive) { + if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { + // if mobile we we use a backdrop because click events don't delegate + $('