From dafa1e62b0c8d9a2cafc5a145974f19f04730e99 Mon Sep 17 00:00:00 2001 From: Hisham Bin Ateya Date: Fri, 22 Nov 2024 00:16:04 +0300 Subject: [PATCH 1/3] Add Localization & PO Localization samples for .NET 8 --- .../Controllers/AboutController.cs | 21 + .../Controllers/AccountController.cs | 468 + .../Controllers/BookController.cs | 66 + .../Controllers/HomeController.cs | 74 + .../Controllers/InfoController.cs | 70 + .../Controllers/ManageController.cs | 348 + .../Controllers/TestController.cs | 51 + .../8.x/Localization/Localization.csproj | 14 + .../Models/ApplicationDbContext.cs | 21 + .../Localization/Models/ApplicationUser.cs | 10 + .../sample/8.x/Localization/Program.cs | 84 + .../Controllers.AboutController.fr.resx | 123 + .../Controllers.BookController.fr.resx | 129 + .../Controllers.TestController.fr.resx | 129 + .../Controllers/HomeController.fr.resx | 129 + .../Controllers/InfoController.fr.resx | 129 + .../LocSample.SharedResource.fr.resx | 123 + .../Resources.SharedResource.fr.resx | 123 + .../Resources/SharedResource.fr.resx | 135 + .../Localization/Resources/StartUp.fr.resx | 129 + ...wModels.Account.RegisterViewModel2.fr.resx | 144 + .../Account/RegisterViewModel.fr.resx | 144 + .../Resources/Views.Home.About.fr.resx | 126 + .../Resources/Views.Info.About.fr.resx | 126 + .../Views.Shared._Layout.fr.Designer.cs | 98 + .../Resources/Views.Shared._Layout.fr.resx | 132 + .../Views.Shared._LoginPartial.fr.resx | 138 + ...iews.Shared._SelectLanguagePartial.fr.resx | 126 + .../Resources/Views.book.About.fr.resx | 126 + .../Resources/Views.book.Hello.fr.Designer.cs | 80 + .../Resources/Views.book.Hello.fr.resx | 126 + .../Resources/Views.test.About.fr.resx | 126 + .../Resources/Views/Account/Login.fr.resx | 141 + .../Resources/Views/Account/Register.fr.resx | 126 + .../Views/Book/Contact.fr.Designer.cs | 80 + .../Resources/Views/Book/Contact.fr.resx | 126 + .../Resources/Views/Book/Index.Designer.cs | 352 + .../Resources/Views/Book/Index.resx | 222 + .../Resources/Views/Home/About2.fr.resx | 126 + .../Views/Home/Contact.fr.Designer.cs | 80 + .../Resources/Views/Home/Contact.fr.resx | 126 + .../Resources/Views/Home/Index.fr.resx | 222 + .../Views/Info/Contact.fr.Designer.cs | 80 + .../Resources/Views/Info/Contact.fr.resx | 126 + .../Resources/Views/Info/Index.fr.resx | 222 + .../Views/Test/Contact.fr.Designer.cs | 80 + .../Resources/Views/Test/Contact.fr.resx | 126 + .../Resources/Views/Test/Index.fr.resx | 222 + .../8.x/Localization/Services/IEmailSender.cs | 12 + .../8.x/Localization/Services/ISmsSender.cs | 12 + .../Localization/Services/MessageServices.cs | 25 + .../sample/8.x/Localization/SharedResource.cs | 7 + .../ExternalLoginConfirmationViewModel.cs | 15 + .../Account/ForgotPasswordViewModel.cs | 15 + .../ViewModels/Account/LoginViewModel.cs | 22 + .../ViewModels/Account/RegisterViewModel.cs | 24 + .../Account/ResetPasswordViewModel.cs | 27 + .../ViewModels/Account/SendCodeViewModel.cs | 16 + .../ViewModels/Account/VerifyCodeViewModel.cs | 25 + .../Manage/AddPhoneNumberViewModel.cs | 16 + .../Manage/ChangePasswordViewModel.cs | 27 + .../Manage/ConfigureTwoFactorViewModel.cs | 12 + .../ViewModels/Manage/FactorViewModel.cs | 12 + .../ViewModels/Manage/IndexViewModel.cs | 21 + .../Manage/ManageLoginsViewModel.cs | 16 + .../ViewModels/Manage/RemoveLoginViewModel.cs | 14 + .../ViewModels/Manage/SetPasswordViewModel.cs | 22 + .../Manage/VerifyPhoneNumberViewModel.cs | 19 + .../Views/Account/ConfirmEmail.cshtml | 10 + .../Account/ExternalLoginConfirmation.cshtml | 35 + .../Views/Account/ExternalLoginFailure.cshtml | 8 + .../Views/Account/ForgotPassword.cshtml | 31 + .../Account/ForgotPasswordConfirmation.cshtml | 8 + .../Localization/Views/Account/Lockout.cshtml | 8 + .../Localization/Views/Account/Login.cshtml | 89 + .../Views/Account/Register.cshtml | 44 + .../Views/Account/ResetPassword.cshtml | 43 + .../Account/ResetPasswordConfirmation.cshtml | 8 + .../Views/Account/SendCode.cshtml | 21 + .../Views/Account/VerifyCode.cshtml | 38 + .../8.x/Localization/Views/Book/About.cshtml | 218 + .../Localization/Views/Book/Contact.cshtml | 21 + .../8.x/Localization/Views/Book/Hello.cshtml | 12 + .../8.x/Localization/Views/Book/Index.cshtml | 120 + .../8.x/Localization/Views/Home/About.cshtml | 11 + .../8.x/Localization/Views/Home/About2.cshtml | 11 + .../Localization/Views/Home/Contact.cshtml | 21 + .../8.x/Localization/Views/Home/Index.cshtml | 57 + .../8.x/Localization/Views/Info/About.cshtml | 12 + .../Localization/Views/Info/Contact.cshtml | 21 + .../8.x/Localization/Views/Info/Hello.cshtml | 11 + .../8.x/Localization/Views/Info/Index.cshtml | 120 + .../Views/Manage/AddPhoneNumber.cshtml | 27 + .../Views/Manage/ChangePassword.cshtml | 42 + .../Localization/Views/Manage/Index.cshtml | 77 + .../Views/Manage/ManageLogins.cshtml | 53 + .../Views/Manage/SetPassword.cshtml | 38 + .../Views/Manage/VerifyPhoneNumber.cshtml | 30 + .../Localization/Views/Shared/Error.cshtml | 6 + .../Localization/Views/Shared/_Layout.cshtml | 67 + .../Views/Shared/_LoginPartial.cshtml | 31 + .../Shared/_SelectLanguagePartial.cshtml | 27 + .../Shared/_ValidationScriptsPartial.cshtml | 8 + .../8.x/Localization/Views/Test/About.cshtml | 12 + .../Localization/Views/Test/Contact.cshtml | 21 + .../8.x/Localization/Views/Test/Hello.cshtml | 11 + .../8.x/Localization/Views/Test/Index.cshtml | 120 + .../Localization/Views/_ViewImports.cshtml | 6 + .../8.x/Localization/Views/_ViewStart.cshtml | 3 + .../sample/8.x/Localization/appsettings.json | 15 + .../wwwroot/css/bootstrap-3.3.7.css | 6757 ++++++++++ .../8.x/Localization/wwwroot/favicon.ico | Bin 0 -> 17174 bytes .../wwwroot/js/bootstrap-3.3.7.js | 2377 ++++ .../Localization/wwwroot/js/jquery-2.2.0.js | 9831 ++++++++++++++ .../wwwroot/js/jquery.validate-1.16.0.js | 1574 +++ .../js/jquery.validate.unobtrusive-3.2.6.js | 416 + .../8.x/POLocalization/POLocalization.csproj | 12 + .../8.x/POLocalization/Pages/Index.cshtml | 13 + .../8.x/POLocalization/Pages/Privacy.cshtml | 8 + .../Pages/Shared/_Layout.cshtml | 50 + .../Shared/_ValidationScriptsPartial.cshtml | 2 + .../POLocalization/Pages/_ViewImports.cshtml | 2 + .../POLocalization/Pages/_ViewStart.cshtml | 3 + .../sample/8.x/POLocalization/Program.cs | 39 + .../appsettings.Development.json | 10 + .../8.x/POLocalization/appsettings.json | 8 + .../sample/8.x/POLocalization/cs.po | 8 + .../sample/8.x/POLocalization/fr.po | 2 + .../8.x/POLocalization/wwwroot/css/site.css | 74 + .../8.x/POLocalization/wwwroot/favicon.ico | Bin 0 -> 32038 bytes .../8.x/POLocalization/wwwroot/js/site.js | 1 + .../wwwroot/lib/bootstrap/LICENSE | 22 + .../lib/bootstrap/dist/css/alarm-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/alarm.svg | 4 + .../lib/bootstrap/dist/css/align-bottom.svg | 4 + .../lib/bootstrap/dist/css/align-center.svg | 3 + .../lib/bootstrap/dist/css/align-end.svg | 4 + .../lib/bootstrap/dist/css/align-middle.svg | 3 + .../lib/bootstrap/dist/css/align-start.svg | 4 + .../lib/bootstrap/dist/css/align-top.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/alt.svg | 3 + .../lib/bootstrap/dist/css/app-indicator.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/app.svg | 3 + .../lib/bootstrap/dist/css/archive-fill.svg | 3 + .../lib/bootstrap/dist/css/archive.svg | 3 + .../bootstrap/dist/css/arrow-90deg-down.svg | 3 + .../bootstrap/dist/css/arrow-90deg-left.svg | 3 + .../bootstrap/dist/css/arrow-90deg-right.svg | 3 + .../lib/bootstrap/dist/css/arrow-90deg-up.svg | 3 + .../lib/bootstrap/dist/css/arrow-bar-down.svg | 3 + .../lib/bootstrap/dist/css/arrow-bar-left.svg | 3 + .../bootstrap/dist/css/arrow-bar-right.svg | 3 + .../lib/bootstrap/dist/css/arrow-bar-up.svg | 3 + .../bootstrap/dist/css/arrow-clockwise.svg | 4 + .../dist/css/arrow-counterclockwise.svg | 4 + .../dist/css/arrow-down-circle-fill.svg | 3 + .../bootstrap/dist/css/arrow-down-circle.svg | 3 + .../dist/css/arrow-down-left-circle-fill.svg | 3 + .../dist/css/arrow-down-left-circle.svg | 3 + .../dist/css/arrow-down-left-square-fill.svg | 3 + .../dist/css/arrow-down-left-square.svg | 3 + .../bootstrap/dist/css/arrow-down-left.svg | 3 + .../dist/css/arrow-down-right-circle-fill.svg | 3 + .../dist/css/arrow-down-right-circle.svg | 3 + .../dist/css/arrow-down-right-square-fill.svg | 3 + .../dist/css/arrow-down-right-square.svg | 3 + .../bootstrap/dist/css/arrow-down-right.svg | 3 + .../bootstrap/dist/css/arrow-down-short.svg | 3 + .../dist/css/arrow-down-square-fill.svg | 3 + .../bootstrap/dist/css/arrow-down-square.svg | 3 + .../lib/bootstrap/dist/css/arrow-down-up.svg | 3 + .../lib/bootstrap/dist/css/arrow-down.svg | 3 + .../dist/css/arrow-left-circle-fill.svg | 3 + .../bootstrap/dist/css/arrow-left-circle.svg | 3 + .../bootstrap/dist/css/arrow-left-right.svg | 3 + .../bootstrap/dist/css/arrow-left-short.svg | 3 + .../dist/css/arrow-left-square-fill.svg | 3 + .../bootstrap/dist/css/arrow-left-square.svg | 3 + .../lib/bootstrap/dist/css/arrow-left.svg | 3 + .../lib/bootstrap/dist/css/arrow-repeat.svg | 4 + .../bootstrap/dist/css/arrow-return-left.svg | 3 + .../bootstrap/dist/css/arrow-return-right.svg | 3 + .../dist/css/arrow-right-circle-fill.svg | 3 + .../bootstrap/dist/css/arrow-right-circle.svg | 3 + .../bootstrap/dist/css/arrow-right-short.svg | 3 + .../dist/css/arrow-right-square-fill.svg | 3 + .../bootstrap/dist/css/arrow-right-square.svg | 3 + .../lib/bootstrap/dist/css/arrow-right.svg | 3 + .../dist/css/arrow-up-circle-fill.svg | 3 + .../bootstrap/dist/css/arrow-up-circle.svg | 3 + .../dist/css/arrow-up-left-circle-fill.svg | 3 + .../dist/css/arrow-up-left-circle.svg | 3 + .../dist/css/arrow-up-left-square-fill.svg | 3 + .../dist/css/arrow-up-left-square.svg | 3 + .../lib/bootstrap/dist/css/arrow-up-left.svg | 3 + .../dist/css/arrow-up-right-circle-fill.svg | 3 + .../dist/css/arrow-up-right-circle.svg | 3 + .../dist/css/arrow-up-right-square-fill.svg | 3 + .../dist/css/arrow-up-right-square.svg | 3 + .../lib/bootstrap/dist/css/arrow-up-right.svg | 3 + .../lib/bootstrap/dist/css/arrow-up-short.svg | 3 + .../dist/css/arrow-up-square-fill.svg | 3 + .../bootstrap/dist/css/arrow-up-square.svg | 3 + .../lib/bootstrap/dist/css/arrow-up.svg | 3 + .../dist/css/arrows-angle-contract.svg | 3 + .../dist/css/arrows-angle-expand.svg | 3 + .../bootstrap/dist/css/arrows-collapse.svg | 3 + .../lib/bootstrap/dist/css/arrows-expand.svg | 3 + .../bootstrap/dist/css/arrows-fullscreen.svg | 3 + .../lib/bootstrap/dist/css/arrows-move.svg | 3 + .../bootstrap/dist/css/aspect-ratio-fill.svg | 3 + .../lib/bootstrap/dist/css/aspect-ratio.svg | 4 + .../lib/bootstrap/dist/css/asterisk.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/at.svg | 3 + .../lib/bootstrap/dist/css/award-fill.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/award.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/back.svg | 3 + .../lib/bootstrap/dist/css/backspace-fill.svg | 3 + .../dist/css/backspace-reverse-fill.svg | 3 + .../bootstrap/dist/css/backspace-reverse.svg | 4 + .../lib/bootstrap/dist/css/backspace.svg | 4 + .../lib/bootstrap/dist/css/badge-3d-fill.svg | 4 + .../lib/bootstrap/dist/css/badge-3d.svg | 4 + .../lib/bootstrap/dist/css/badge-4k-fill.svg | 4 + .../lib/bootstrap/dist/css/badge-4k.svg | 4 + .../lib/bootstrap/dist/css/badge-8k-fill.svg | 4 + .../lib/bootstrap/dist/css/badge-8k.svg | 4 + .../lib/bootstrap/dist/css/badge-ad-fill.svg | 4 + .../lib/bootstrap/dist/css/badge-ad.svg | 4 + .../lib/bootstrap/dist/css/badge-ar-fill.svg | 4 + .../lib/bootstrap/dist/css/badge-ar.svg | 4 + .../lib/bootstrap/dist/css/badge-cc-fill.svg | 3 + .../lib/bootstrap/dist/css/badge-cc.svg | 4 + .../lib/bootstrap/dist/css/badge-hd-fill.svg | 4 + .../lib/bootstrap/dist/css/badge-hd.svg | 4 + .../lib/bootstrap/dist/css/badge-tm-fill.svg | 3 + .../lib/bootstrap/dist/css/badge-tm.svg | 4 + .../lib/bootstrap/dist/css/badge-vo-fill.svg | 4 + .../lib/bootstrap/dist/css/badge-vo.svg | 4 + .../lib/bootstrap/dist/css/badge-vr-fill.svg | 4 + .../lib/bootstrap/dist/css/badge-vr.svg | 4 + .../lib/bootstrap/dist/css/badge-wc-fill.svg | 3 + .../lib/bootstrap/dist/css/badge-wc.svg | 4 + .../lib/bootstrap/dist/css/bag-check-fill.svg | 3 + .../lib/bootstrap/dist/css/bag-check.svg | 4 + .../lib/bootstrap/dist/css/bag-dash-fill.svg | 3 + .../lib/bootstrap/dist/css/bag-dash.svg | 4 + .../lib/bootstrap/dist/css/bag-fill.svg | 3 + .../lib/bootstrap/dist/css/bag-plus-fill.svg | 3 + .../lib/bootstrap/dist/css/bag-plus.svg | 4 + .../lib/bootstrap/dist/css/bag-x-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/bag-x.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/bag.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/bank.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/bank2.svg | 3 + .../lib/bootstrap/dist/css/bar-chart-fill.svg | 3 + .../dist/css/bar-chart-line-fill.svg | 3 + .../lib/bootstrap/dist/css/bar-chart-line.svg | 3 + .../bootstrap/dist/css/bar-chart-steps.svg | 3 + .../lib/bootstrap/dist/css/bar-chart.svg | 3 + .../lib/bootstrap/dist/css/basket-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/basket.svg | 3 + .../lib/bootstrap/dist/css/basket2-fill.svg | 3 + .../lib/bootstrap/dist/css/basket2.svg | 4 + .../lib/bootstrap/dist/css/basket3-fill.svg | 3 + .../lib/bootstrap/dist/css/basket3.svg | 3 + .../bootstrap/dist/css/battery-charging.svg | 6 + .../lib/bootstrap/dist/css/battery-full.svg | 4 + .../lib/bootstrap/dist/css/battery-half.svg | 4 + .../lib/bootstrap/dist/css/battery.svg | 3 + .../lib/bootstrap/dist/css/bell-fill.svg | 3 + .../bootstrap/dist/css/bell-slash-fill.svg | 3 + .../lib/bootstrap/dist/css/bell-slash.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/bell.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/bezier.svg | 4 + .../lib/bootstrap/dist/css/bezier2.svg | 3 + .../lib/bootstrap/dist/css/bicycle.svg | 3 + .../bootstrap/dist/css/binoculars-fill.svg | 3 + .../lib/bootstrap/dist/css/binoculars.svg | 3 + .../bootstrap/dist/css/blockquote-left.svg | 3 + .../bootstrap/dist/css/blockquote-right.svg | 3 + .../lib/bootstrap/dist/css/book-fill.svg | 3 + .../lib/bootstrap/dist/css/book-half.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/book.svg | 3 + .../dist/css/bookmark-check-fill.svg | 3 + .../lib/bootstrap/dist/css/bookmark-check.svg | 4 + .../bootstrap/dist/css/bookmark-dash-fill.svg | 3 + .../lib/bootstrap/dist/css/bookmark-dash.svg | 4 + .../lib/bootstrap/dist/css/bookmark-fill.svg | 3 + .../dist/css/bookmark-heart-fill.svg | 3 + .../lib/bootstrap/dist/css/bookmark-heart.svg | 4 + .../bootstrap/dist/css/bookmark-plus-fill.svg | 3 + .../lib/bootstrap/dist/css/bookmark-plus.svg | 4 + .../bootstrap/dist/css/bookmark-star-fill.svg | 3 + .../lib/bootstrap/dist/css/bookmark-star.svg | 4 + .../bootstrap/dist/css/bookmark-x-fill.svg | 3 + .../lib/bootstrap/dist/css/bookmark-x.svg | 4 + .../lib/bootstrap/dist/css/bookmark.svg | 3 + .../lib/bootstrap/dist/css/bookmarks-fill.svg | 4 + .../lib/bootstrap/dist/css/bookmarks.svg | 4 + .../lib/bootstrap/dist/css/bookshelf.svg | 3 + .../lib/bootstrap/dist/css/bootstrap-fill.svg | 4 + .../lib/bootstrap/dist/css/bootstrap-grid.css | 3719 ++++++ .../bootstrap/dist/css/bootstrap-icons.css | 1390 ++ .../bootstrap/dist/css/bootstrap-icons.json | 1372 ++ .../bootstrap/dist/css/bootstrap-icons.svg | 1 + .../bootstrap/dist/css/bootstrap-reboot.css | 331 + .../bootstrap/dist/css/bootstrap-reboot.svg | 4 + .../lib/bootstrap/dist/css/bootstrap.css | 10038 ++++++++++++++ .../lib/bootstrap/dist/css/bootstrap.svg | 4 + .../lib/bootstrap/dist/css/border-all.svg | 3 + .../lib/bootstrap/dist/css/border-bottom.svg | 3 + .../lib/bootstrap/dist/css/border-center.svg | 3 + .../lib/bootstrap/dist/css/border-inner.svg | 5 + .../lib/bootstrap/dist/css/border-left.svg | 3 + .../lib/bootstrap/dist/css/border-middle.svg | 3 + .../lib/bootstrap/dist/css/border-outer.svg | 4 + .../lib/bootstrap/dist/css/border-right.svg | 3 + .../lib/bootstrap/dist/css/border-style.svg | 3 + .../lib/bootstrap/dist/css/border-top.svg | 3 + .../lib/bootstrap/dist/css/border-width.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/border.svg | 3 + .../dist/css/bounding-box-circles.svg | 3 + .../lib/bootstrap/dist/css/bounding-box.svg | 3 + .../dist/css/box-arrow-down-left.svg | 4 + .../dist/css/box-arrow-down-right.svg | 4 + .../lib/bootstrap/dist/css/box-arrow-down.svg | 4 + .../dist/css/box-arrow-in-down-left.svg | 4 + .../dist/css/box-arrow-in-down-right.svg | 4 + .../bootstrap/dist/css/box-arrow-in-down.svg | 4 + .../bootstrap/dist/css/box-arrow-in-left.svg | 4 + .../bootstrap/dist/css/box-arrow-in-right.svg | 4 + .../dist/css/box-arrow-in-up-left.svg | 4 + .../dist/css/box-arrow-in-up-right.svg | 4 + .../bootstrap/dist/css/box-arrow-in-up.svg | 4 + .../lib/bootstrap/dist/css/box-arrow-left.svg | 4 + .../bootstrap/dist/css/box-arrow-right.svg | 4 + .../bootstrap/dist/css/box-arrow-up-left.svg | 4 + .../bootstrap/dist/css/box-arrow-up-right.svg | 4 + .../lib/bootstrap/dist/css/box-arrow-up.svg | 4 + .../lib/bootstrap/dist/css/box-seam.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/box.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/braces.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/bricks.svg | 3 + .../lib/bootstrap/dist/css/briefcase-fill.svg | 4 + .../lib/bootstrap/dist/css/briefcase.svg | 3 + .../dist/css/brightness-alt-high-fill.svg | 3 + .../dist/css/brightness-alt-high.svg | 3 + .../dist/css/brightness-alt-low-fill.svg | 3 + .../bootstrap/dist/css/brightness-alt-low.svg | 3 + .../dist/css/brightness-high-fill.svg | 3 + .../bootstrap/dist/css/brightness-high.svg | 3 + .../dist/css/brightness-low-fill.svg | 3 + .../lib/bootstrap/dist/css/brightness-low.svg | 3 + .../lib/bootstrap/dist/css/broadcast-pin.svg | 3 + .../lib/bootstrap/dist/css/broadcast.svg | 3 + .../lib/bootstrap/dist/css/brush-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/brush.svg | 3 + .../lib/bootstrap/dist/css/bucket-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/bucket.svg | 3 + .../lib/bootstrap/dist/css/bug-fill.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/bug.svg | 3 + .../lib/bootstrap/dist/css/building.svg | 4 + .../lib/bootstrap/dist/css/bullseye.svg | 6 + .../bootstrap/dist/css/calculator-fill.svg | 3 + .../lib/bootstrap/dist/css/calculator.svg | 4 + .../dist/css/calendar-check-fill.svg | 3 + .../lib/bootstrap/dist/css/calendar-check.svg | 4 + .../bootstrap/dist/css/calendar-date-fill.svg | 4 + .../lib/bootstrap/dist/css/calendar-date.svg | 4 + .../bootstrap/dist/css/calendar-day-fill.svg | 3 + .../lib/bootstrap/dist/css/calendar-day.svg | 4 + .../dist/css/calendar-event-fill.svg | 3 + .../lib/bootstrap/dist/css/calendar-event.svg | 4 + .../lib/bootstrap/dist/css/calendar-fill.svg | 3 + .../dist/css/calendar-minus-fill.svg | 3 + .../lib/bootstrap/dist/css/calendar-minus.svg | 4 + .../dist/css/calendar-month-fill.svg | 4 + .../lib/bootstrap/dist/css/calendar-month.svg | 4 + .../bootstrap/dist/css/calendar-plus-fill.svg | 3 + .../lib/bootstrap/dist/css/calendar-plus.svg | 4 + .../dist/css/calendar-range-fill.svg | 3 + .../lib/bootstrap/dist/css/calendar-range.svg | 4 + .../bootstrap/dist/css/calendar-week-fill.svg | 3 + .../lib/bootstrap/dist/css/calendar-week.svg | 4 + .../bootstrap/dist/css/calendar-x-fill.svg | 3 + .../lib/bootstrap/dist/css/calendar-x.svg | 4 + .../lib/bootstrap/dist/css/calendar.svg | 3 + .../dist/css/calendar2-check-fill.svg | 3 + .../bootstrap/dist/css/calendar2-check.svg | 5 + .../dist/css/calendar2-date-fill.svg | 4 + .../lib/bootstrap/dist/css/calendar2-date.svg | 5 + .../bootstrap/dist/css/calendar2-day-fill.svg | 3 + .../lib/bootstrap/dist/css/calendar2-day.svg | 5 + .../dist/css/calendar2-event-fill.svg | 3 + .../bootstrap/dist/css/calendar2-event.svg | 5 + .../lib/bootstrap/dist/css/calendar2-fill.svg | 3 + .../dist/css/calendar2-minus-fill.svg | 3 + .../bootstrap/dist/css/calendar2-minus.svg | 5 + .../dist/css/calendar2-month-fill.svg | 4 + .../bootstrap/dist/css/calendar2-month.svg | 5 + .../dist/css/calendar2-plus-fill.svg | 3 + .../lib/bootstrap/dist/css/calendar2-plus.svg | 4 + .../dist/css/calendar2-range-fill.svg | 3 + .../bootstrap/dist/css/calendar2-range.svg | 4 + .../dist/css/calendar2-week-fill.svg | 3 + .../lib/bootstrap/dist/css/calendar2-week.svg | 4 + .../bootstrap/dist/css/calendar2-x-fill.svg | 3 + .../lib/bootstrap/dist/css/calendar2-x.svg | 5 + .../lib/bootstrap/dist/css/calendar2.svg | 4 + .../dist/css/calendar3-event-fill.svg | 3 + .../bootstrap/dist/css/calendar3-event.svg | 4 + .../lib/bootstrap/dist/css/calendar3-fill.svg | 3 + .../dist/css/calendar3-range-fill.svg | 3 + .../bootstrap/dist/css/calendar3-range.svg | 4 + .../dist/css/calendar3-week-fill.svg | 3 + .../lib/bootstrap/dist/css/calendar3-week.svg | 4 + .../lib/bootstrap/dist/css/calendar3.svg | 4 + .../bootstrap/dist/css/calendar4-event.svg | 4 + .../bootstrap/dist/css/calendar4-range.svg | 4 + .../lib/bootstrap/dist/css/calendar4-week.svg | 4 + .../lib/bootstrap/dist/css/calendar4.svg | 3 + .../lib/bootstrap/dist/css/camera-fill.svg | 4 + .../bootstrap/dist/css/camera-reels-fill.svg | 5 + .../lib/bootstrap/dist/css/camera-reels.svg | 5 + .../bootstrap/dist/css/camera-video-fill.svg | 3 + .../dist/css/camera-video-off-fill.svg | 3 + .../bootstrap/dist/css/camera-video-off.svg | 3 + .../lib/bootstrap/dist/css/camera-video.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/camera.svg | 4 + .../lib/bootstrap/dist/css/camera2.svg | 4 + .../lib/bootstrap/dist/css/capslock-fill.svg | 3 + .../lib/bootstrap/dist/css/capslock.svg | 3 + .../lib/bootstrap/dist/css/card-checklist.svg | 4 + .../lib/bootstrap/dist/css/card-heading.svg | 4 + .../lib/bootstrap/dist/css/card-image.svg | 4 + .../lib/bootstrap/dist/css/card-list.svg | 4 + .../lib/bootstrap/dist/css/card-text.svg | 4 + .../bootstrap/dist/css/caret-down-fill.svg | 3 + .../dist/css/caret-down-square-fill.svg | 3 + .../bootstrap/dist/css/caret-down-square.svg | 4 + .../lib/bootstrap/dist/css/caret-down.svg | 3 + .../bootstrap/dist/css/caret-left-fill.svg | 3 + .../dist/css/caret-left-square-fill.svg | 3 + .../bootstrap/dist/css/caret-left-square.svg | 4 + .../lib/bootstrap/dist/css/caret-left.svg | 3 + .../bootstrap/dist/css/caret-right-fill.svg | 3 + .../dist/css/caret-right-square-fill.svg | 3 + .../bootstrap/dist/css/caret-right-square.svg | 4 + .../lib/bootstrap/dist/css/caret-right.svg | 3 + .../lib/bootstrap/dist/css/caret-up-fill.svg | 3 + .../dist/css/caret-up-square-fill.svg | 3 + .../bootstrap/dist/css/caret-up-square.svg | 4 + .../lib/bootstrap/dist/css/caret-up.svg | 3 + .../bootstrap/dist/css/cart-check-fill.svg | 3 + .../lib/bootstrap/dist/css/cart-check.svg | 4 + .../lib/bootstrap/dist/css/cart-dash-fill.svg | 3 + .../lib/bootstrap/dist/css/cart-dash.svg | 4 + .../lib/bootstrap/dist/css/cart-fill.svg | 3 + .../lib/bootstrap/dist/css/cart-plus-fill.svg | 3 + .../lib/bootstrap/dist/css/cart-plus.svg | 4 + .../lib/bootstrap/dist/css/cart-x-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/cart-x.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/cart.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/cart2.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/cart3.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/cart4.svg | 3 + .../lib/bootstrap/dist/css/cash-coin.svg | 6 + .../lib/bootstrap/dist/css/cash-stack.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/cash.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/cast.svg | 4 + .../lib/bootstrap/dist/css/chat-dots-fill.svg | 3 + .../lib/bootstrap/dist/css/chat-dots.svg | 4 + .../lib/bootstrap/dist/css/chat-fill.svg | 3 + .../dist/css/chat-left-dots-fill.svg | 3 + .../lib/bootstrap/dist/css/chat-left-dots.svg | 4 + .../lib/bootstrap/dist/css/chat-left-fill.svg | 3 + .../dist/css/chat-left-quote-fill.svg | 3 + .../bootstrap/dist/css/chat-left-quote.svg | 4 + .../dist/css/chat-left-text-fill.svg | 3 + .../lib/bootstrap/dist/css/chat-left-text.svg | 4 + .../lib/bootstrap/dist/css/chat-left.svg | 3 + .../bootstrap/dist/css/chat-quote-fill.svg | 3 + .../lib/bootstrap/dist/css/chat-quote.svg | 4 + .../dist/css/chat-right-dots-fill.svg | 3 + .../bootstrap/dist/css/chat-right-dots.svg | 4 + .../bootstrap/dist/css/chat-right-fill.svg | 3 + .../dist/css/chat-right-quote-fill.svg | 3 + .../bootstrap/dist/css/chat-right-quote.svg | 4 + .../dist/css/chat-right-text-fill.svg | 3 + .../bootstrap/dist/css/chat-right-text.svg | 4 + .../lib/bootstrap/dist/css/chat-right.svg | 3 + .../dist/css/chat-square-dots-fill.svg | 3 + .../bootstrap/dist/css/chat-square-dots.svg | 4 + .../bootstrap/dist/css/chat-square-fill.svg | 3 + .../dist/css/chat-square-quote-fill.svg | 3 + .../bootstrap/dist/css/chat-square-quote.svg | 4 + .../dist/css/chat-square-text-fill.svg | 3 + .../bootstrap/dist/css/chat-square-text.svg | 4 + .../lib/bootstrap/dist/css/chat-square.svg | 3 + .../lib/bootstrap/dist/css/chat-text-fill.svg | 3 + .../lib/bootstrap/dist/css/chat-text.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/chat.svg | 3 + .../lib/bootstrap/dist/css/check-all.svg | 3 + .../bootstrap/dist/css/check-circle-fill.svg | 3 + .../lib/bootstrap/dist/css/check-circle.svg | 4 + .../lib/bootstrap/dist/css/check-lg.svg | 3 + .../bootstrap/dist/css/check-square-fill.svg | 3 + .../lib/bootstrap/dist/css/check-square.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/check.svg | 3 + .../lib/bootstrap/dist/css/check2-all.svg | 4 + .../lib/bootstrap/dist/css/check2-circle.svg | 4 + .../lib/bootstrap/dist/css/check2-square.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/check2.svg | 3 + .../dist/css/chevron-bar-contract.svg | 3 + .../bootstrap/dist/css/chevron-bar-down.svg | 3 + .../bootstrap/dist/css/chevron-bar-expand.svg | 3 + .../bootstrap/dist/css/chevron-bar-left.svg | 3 + .../bootstrap/dist/css/chevron-bar-right.svg | 3 + .../lib/bootstrap/dist/css/chevron-bar-up.svg | 3 + .../dist/css/chevron-compact-down.svg | 3 + .../dist/css/chevron-compact-left.svg | 3 + .../dist/css/chevron-compact-right.svg | 3 + .../bootstrap/dist/css/chevron-compact-up.svg | 3 + .../bootstrap/dist/css/chevron-contract.svg | 3 + .../dist/css/chevron-double-down.svg | 4 + .../dist/css/chevron-double-left.svg | 4 + .../dist/css/chevron-double-right.svg | 4 + .../bootstrap/dist/css/chevron-double-up.svg | 4 + .../lib/bootstrap/dist/css/chevron-down.svg | 3 + .../lib/bootstrap/dist/css/chevron-expand.svg | 3 + .../lib/bootstrap/dist/css/chevron-left.svg | 3 + .../lib/bootstrap/dist/css/chevron-right.svg | 3 + .../lib/bootstrap/dist/css/chevron-up.svg | 3 + .../lib/bootstrap/dist/css/circle-fill.svg | 3 + .../lib/bootstrap/dist/css/circle-half.svg | 3 + .../lib/bootstrap/dist/css/circle-square.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/circle.svg | 3 + .../bootstrap/dist/css/clipboard-check.svg | 5 + .../lib/bootstrap/dist/css/clipboard-data.svg | 5 + .../bootstrap/dist/css/clipboard-minus.svg | 5 + .../lib/bootstrap/dist/css/clipboard-plus.svg | 5 + .../lib/bootstrap/dist/css/clipboard-x.svg | 5 + .../lib/bootstrap/dist/css/clipboard.svg | 4 + .../lib/bootstrap/dist/css/clock-fill.svg | 3 + .../lib/bootstrap/dist/css/clock-history.svg | 5 + .../wwwroot/lib/bootstrap/dist/css/clock.svg | 4 + .../dist/css/cloud-arrow-down-fill.svg | 3 + .../bootstrap/dist/css/cloud-arrow-down.svg | 4 + .../dist/css/cloud-arrow-up-fill.svg | 3 + .../lib/bootstrap/dist/css/cloud-arrow-up.svg | 4 + .../bootstrap/dist/css/cloud-check-fill.svg | 3 + .../lib/bootstrap/dist/css/cloud-check.svg | 4 + .../dist/css/cloud-download-fill.svg | 3 + .../lib/bootstrap/dist/css/cloud-download.svg | 4 + .../bootstrap/dist/css/cloud-drizzle-fill.svg | 3 + .../lib/bootstrap/dist/css/cloud-drizzle.svg | 3 + .../lib/bootstrap/dist/css/cloud-fill.svg | 3 + .../lib/bootstrap/dist/css/cloud-fog-fill.svg | 3 + .../lib/bootstrap/dist/css/cloud-fog.svg | 3 + .../bootstrap/dist/css/cloud-fog2-fill.svg | 3 + .../lib/bootstrap/dist/css/cloud-fog2.svg | 3 + .../bootstrap/dist/css/cloud-hail-fill.svg | 3 + .../lib/bootstrap/dist/css/cloud-hail.svg | 3 + .../lib/bootstrap/dist/css/cloud-haze-1.svg | 3 + .../bootstrap/dist/css/cloud-haze-fill.svg | 3 + .../lib/bootstrap/dist/css/cloud-haze.svg | 3 + .../bootstrap/dist/css/cloud-haze2-fill.svg | 3 + .../dist/css/cloud-lightning-fill.svg | 3 + .../dist/css/cloud-lightning-rain-fill.svg | 3 + .../dist/css/cloud-lightning-rain.svg | 3 + .../bootstrap/dist/css/cloud-lightning.svg | 3 + .../bootstrap/dist/css/cloud-minus-fill.svg | 3 + .../lib/bootstrap/dist/css/cloud-minus.svg | 3 + .../bootstrap/dist/css/cloud-moon-fill.svg | 4 + .../lib/bootstrap/dist/css/cloud-moon.svg | 4 + .../bootstrap/dist/css/cloud-plus-fill.svg | 3 + .../lib/bootstrap/dist/css/cloud-plus.svg | 4 + .../bootstrap/dist/css/cloud-rain-fill.svg | 3 + .../dist/css/cloud-rain-heavy-fill.svg | 3 + .../bootstrap/dist/css/cloud-rain-heavy.svg | 3 + .../lib/bootstrap/dist/css/cloud-rain.svg | 3 + .../bootstrap/dist/css/cloud-slash-fill.svg | 3 + .../lib/bootstrap/dist/css/cloud-slash.svg | 4 + .../bootstrap/dist/css/cloud-sleet-fill.svg | 3 + .../lib/bootstrap/dist/css/cloud-sleet.svg | 3 + .../bootstrap/dist/css/cloud-snow-fill.svg | 3 + .../lib/bootstrap/dist/css/cloud-snow.svg | 3 + .../lib/bootstrap/dist/css/cloud-sun-fill.svg | 4 + .../lib/bootstrap/dist/css/cloud-sun.svg | 4 + .../bootstrap/dist/css/cloud-upload-fill.svg | 3 + .../lib/bootstrap/dist/css/cloud-upload.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/cloud.svg | 3 + .../lib/bootstrap/dist/css/clouds-fill.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/clouds.svg | 4 + .../lib/bootstrap/dist/css/cloudy-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/cloudy.svg | 3 + .../lib/bootstrap/dist/css/code-slash.svg | 3 + .../lib/bootstrap/dist/css/code-square.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/code.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/coin.svg | 5 + .../bootstrap/dist/css/collection-fill.svg | 3 + .../dist/css/collection-play-fill.svg | 3 + .../bootstrap/dist/css/collection-play.svg | 4 + .../lib/bootstrap/dist/css/collection.svg | 3 + .../lib/bootstrap/dist/css/columns-gap.svg | 3 + .../lib/bootstrap/dist/css/columns.svg | 3 + .../lib/bootstrap/dist/css/command.svg | 3 + .../lib/bootstrap/dist/css/compass-fill.svg | 3 + .../lib/bootstrap/dist/css/compass.svg | 4 + .../lib/bootstrap/dist/css/cone-striped.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/cone.svg | 3 + .../lib/bootstrap/dist/css/controller.svg | 4 + .../lib/bootstrap/dist/css/cpu-fill.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/cpu.svg | 3 + .../dist/css/credit-card-2-back-fill.svg | 3 + .../bootstrap/dist/css/credit-card-2-back.svg | 4 + .../dist/css/credit-card-2-front-fill.svg | 3 + .../dist/css/credit-card-2-front.svg | 4 + .../bootstrap/dist/css/credit-card-fill.svg | 3 + .../lib/bootstrap/dist/css/credit-card.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/crop.svg | 3 + .../lib/bootstrap/dist/css/cup-fill.svg | 3 + .../lib/bootstrap/dist/css/cup-straw.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/cup.svg | 3 + .../bootstrap/dist/css/currency-bitcoin.svg | 3 + .../bootstrap/dist/css/currency-dollar.svg | 3 + .../lib/bootstrap/dist/css/currency-euro.svg | 3 + .../bootstrap/dist/css/currency-exchange.svg | 3 + .../lib/bootstrap/dist/css/currency-pound.svg | 3 + .../lib/bootstrap/dist/css/currency-yen.svg | 3 + .../lib/bootstrap/dist/css/cursor-fill.svg | 3 + .../lib/bootstrap/dist/css/cursor-text.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/cursor.svg | 3 + .../bootstrap/dist/css/dash-circle-dotted.svg | 3 + .../bootstrap/dist/css/dash-circle-fill.svg | 3 + .../lib/bootstrap/dist/css/dash-circle.svg | 4 + .../lib/bootstrap/dist/css/dash-lg.svg | 3 + .../bootstrap/dist/css/dash-square-dotted.svg | 3 + .../bootstrap/dist/css/dash-square-fill.svg | 3 + .../lib/bootstrap/dist/css/dash-square.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/dash.svg | 3 + .../lib/bootstrap/dist/css/diagram-2-fill.svg | 3 + .../lib/bootstrap/dist/css/diagram-2.svg | 3 + .../lib/bootstrap/dist/css/diagram-3-fill.svg | 3 + .../lib/bootstrap/dist/css/diagram-3.svg | 3 + .../lib/bootstrap/dist/css/diamond-fill.svg | 3 + .../lib/bootstrap/dist/css/diamond-half.svg | 3 + .../lib/bootstrap/dist/css/diamond.svg | 3 + .../lib/bootstrap/dist/css/dice-1-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/dice-1.svg | 4 + .../lib/bootstrap/dist/css/dice-2-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/dice-2.svg | 4 + .../lib/bootstrap/dist/css/dice-3-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/dice-3.svg | 4 + .../lib/bootstrap/dist/css/dice-4-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/dice-4.svg | 4 + .../lib/bootstrap/dist/css/dice-5-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/dice-5.svg | 4 + .../lib/bootstrap/dist/css/dice-6-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/dice-6.svg | 4 + .../lib/bootstrap/dist/css/disc-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/disc.svg | 4 + .../lib/bootstrap/dist/css/discord.svg | 4 + .../lib/bootstrap/dist/css/display-fill.svg | 3 + .../lib/bootstrap/dist/css/display.svg | 3 + .../dist/css/distribute-horizontal.svg | 4 + .../dist/css/distribute-vertical.svg | 4 + .../bootstrap/dist/css/door-closed-fill.svg | 3 + .../lib/bootstrap/dist/css/door-closed.svg | 4 + .../lib/bootstrap/dist/css/door-open-fill.svg | 3 + .../lib/bootstrap/dist/css/door-open.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/dot.svg | 3 + .../lib/bootstrap/dist/css/download.svg | 4 + .../lib/bootstrap/dist/css/droplet-fill.svg | 3 + .../lib/bootstrap/dist/css/droplet-half.svg | 4 + .../lib/bootstrap/dist/css/droplet.svg | 4 + .../lib/bootstrap/dist/css/earbuds.svg | 3 + .../lib/bootstrap/dist/css/easel-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/easel.svg | 3 + .../lib/bootstrap/dist/css/egg-fill.svg | 3 + .../lib/bootstrap/dist/css/egg-fried.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/egg.svg | 3 + .../lib/bootstrap/dist/css/eject-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/eject.svg | 3 + .../bootstrap/dist/css/emoji-angry-fill.svg | 3 + .../lib/bootstrap/dist/css/emoji-angry.svg | 4 + .../bootstrap/dist/css/emoji-dizzy-fill.svg | 3 + .../lib/bootstrap/dist/css/emoji-dizzy.svg | 4 + .../dist/css/emoji-expressionless-fill.svg | 3 + .../dist/css/emoji-expressionless.svg | 4 + .../bootstrap/dist/css/emoji-frown-fill.svg | 3 + .../lib/bootstrap/dist/css/emoji-frown.svg | 4 + .../dist/css/emoji-heart-eyes-fill.svg | 3 + .../bootstrap/dist/css/emoji-heart-eyes.svg | 4 + .../dist/css/emoji-laughing-fill.svg | 3 + .../lib/bootstrap/dist/css/emoji-laughing.svg | 4 + .../bootstrap/dist/css/emoji-neutral-fill.svg | 3 + .../lib/bootstrap/dist/css/emoji-neutral.svg | 4 + .../bootstrap/dist/css/emoji-smile-fill.svg | 3 + .../dist/css/emoji-smile-upside-down-fill.svg | 3 + .../dist/css/emoji-smile-upside-down.svg | 4 + .../lib/bootstrap/dist/css/emoji-smile.svg | 4 + .../dist/css/emoji-sunglasses-fill.svg | 3 + .../bootstrap/dist/css/emoji-sunglasses.svg | 4 + .../bootstrap/dist/css/emoji-wink-fill.svg | 3 + .../lib/bootstrap/dist/css/emoji-wink.svg | 4 + .../lib/bootstrap/dist/css/envelope-fill.svg | 3 + .../bootstrap/dist/css/envelope-open-fill.svg | 3 + .../lib/bootstrap/dist/css/envelope-open.svg | 3 + .../lib/bootstrap/dist/css/envelope.svg | 3 + .../lib/bootstrap/dist/css/eraser-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/eraser.svg | 3 + .../dist/css/exclamation-circle-fill.svg | 3 + .../bootstrap/dist/css/exclamation-circle.svg | 4 + .../dist/css/exclamation-diamond-fill.svg | 3 + .../dist/css/exclamation-diamond.svg | 4 + .../lib/bootstrap/dist/css/exclamation-lg.svg | 3 + .../dist/css/exclamation-octagon-fill.svg | 3 + .../dist/css/exclamation-octagon.svg | 4 + .../dist/css/exclamation-square-fill.svg | 3 + .../bootstrap/dist/css/exclamation-square.svg | 4 + .../dist/css/exclamation-triangle-fill.svg | 3 + .../dist/css/exclamation-triangle.svg | 4 + .../lib/bootstrap/dist/css/exclamation.svg | 3 + .../lib/bootstrap/dist/css/exclude.svg | 3 + .../lib/bootstrap/dist/css/eye-fill.svg | 4 + .../lib/bootstrap/dist/css/eye-slash-fill.svg | 4 + .../lib/bootstrap/dist/css/eye-slash.svg | 5 + .../wwwroot/lib/bootstrap/dist/css/eye.svg | 4 + .../lib/bootstrap/dist/css/eyedropper.svg | 3 + .../lib/bootstrap/dist/css/eyeglasses.svg | 3 + .../lib/bootstrap/dist/css/facebook.svg | 3 + .../dist/css/file-arrow-down-fill.svg | 3 + .../bootstrap/dist/css/file-arrow-down.svg | 4 + .../bootstrap/dist/css/file-arrow-up-fill.svg | 3 + .../lib/bootstrap/dist/css/file-arrow-up.svg | 4 + .../dist/css/file-bar-graph-fill.svg | 3 + .../lib/bootstrap/dist/css/file-bar-graph.svg | 4 + .../bootstrap/dist/css/file-binary-fill.svg | 4 + .../lib/bootstrap/dist/css/file-binary.svg | 4 + .../bootstrap/dist/css/file-break-fill.svg | 3 + .../lib/bootstrap/dist/css/file-break.svg | 3 + .../bootstrap/dist/css/file-check-fill.svg | 3 + .../lib/bootstrap/dist/css/file-check.svg | 4 + .../lib/bootstrap/dist/css/file-code-fill.svg | 3 + .../lib/bootstrap/dist/css/file-code.svg | 4 + .../lib/bootstrap/dist/css/file-diff-fill.svg | 3 + .../lib/bootstrap/dist/css/file-diff.svg | 4 + .../dist/css/file-earmark-arrow-down-fill.svg | 3 + .../dist/css/file-earmark-arrow-down.svg | 4 + .../dist/css/file-earmark-arrow-up-fill.svg | 3 + .../dist/css/file-earmark-arrow-up.svg | 4 + .../dist/css/file-earmark-bar-graph-fill.svg | 3 + .../dist/css/file-earmark-bar-graph.svg | 4 + .../dist/css/file-earmark-binary-fill.svg | 4 + .../dist/css/file-earmark-binary.svg | 4 + .../dist/css/file-earmark-break-fill.svg | 3 + .../bootstrap/dist/css/file-earmark-break.svg | 3 + .../dist/css/file-earmark-check-fill.svg | 3 + .../bootstrap/dist/css/file-earmark-check.svg | 4 + .../dist/css/file-earmark-code-fill.svg | 3 + .../bootstrap/dist/css/file-earmark-code.svg | 4 + .../dist/css/file-earmark-diff-fill.svg | 3 + .../bootstrap/dist/css/file-earmark-diff.svg | 4 + .../dist/css/file-earmark-easel-fill.svg | 4 + .../bootstrap/dist/css/file-earmark-easel.svg | 4 + .../dist/css/file-earmark-excel-fill.svg | 3 + .../bootstrap/dist/css/file-earmark-excel.svg | 4 + .../bootstrap/dist/css/file-earmark-fill.svg | 3 + .../dist/css/file-earmark-font-fill.svg | 3 + .../bootstrap/dist/css/file-earmark-font.svg | 4 + .../dist/css/file-earmark-image-fill.svg | 4 + .../bootstrap/dist/css/file-earmark-image.svg | 4 + .../dist/css/file-earmark-lock-fill.svg | 4 + .../bootstrap/dist/css/file-earmark-lock.svg | 4 + .../dist/css/file-earmark-lock2-fill.svg | 4 + .../bootstrap/dist/css/file-earmark-lock2.svg | 4 + .../dist/css/file-earmark-medical-fill.svg | 3 + .../dist/css/file-earmark-medical.svg | 4 + .../dist/css/file-earmark-minus-fill.svg | 3 + .../bootstrap/dist/css/file-earmark-minus.svg | 4 + .../dist/css/file-earmark-music-fill.svg | 3 + .../bootstrap/dist/css/file-earmark-music.svg | 4 + .../dist/css/file-earmark-pdf-fill.svg | 4 + .../bootstrap/dist/css/file-earmark-pdf.svg | 4 + .../dist/css/file-earmark-person-fill.svg | 3 + .../dist/css/file-earmark-person.svg | 4 + .../dist/css/file-earmark-play-fill.svg | 3 + .../bootstrap/dist/css/file-earmark-play.svg | 4 + .../dist/css/file-earmark-plus-fill.svg | 3 + .../bootstrap/dist/css/file-earmark-plus.svg | 4 + .../dist/css/file-earmark-post-fill.svg | 3 + .../bootstrap/dist/css/file-earmark-post.svg | 4 + .../dist/css/file-earmark-ppt-fill.svg | 4 + .../bootstrap/dist/css/file-earmark-ppt.svg | 4 + .../dist/css/file-earmark-richtext-fill.svg | 3 + .../dist/css/file-earmark-richtext.svg | 4 + .../dist/css/file-earmark-ruled-fill.svg | 3 + .../bootstrap/dist/css/file-earmark-ruled.svg | 3 + .../dist/css/file-earmark-slides-fill.svg | 4 + .../dist/css/file-earmark-slides.svg | 4 + .../css/file-earmark-spreadsheet-fill.svg | 4 + .../dist/css/file-earmark-spreadsheet.svg | 3 + .../dist/css/file-earmark-text-fill.svg | 3 + .../bootstrap/dist/css/file-earmark-text.svg | 4 + .../dist/css/file-earmark-word-fill.svg | 3 + .../bootstrap/dist/css/file-earmark-word.svg | 4 + .../dist/css/file-earmark-x-fill.svg | 3 + .../lib/bootstrap/dist/css/file-earmark-x.svg | 4 + .../dist/css/file-earmark-zip-fill.svg | 4 + .../bootstrap/dist/css/file-earmark-zip.svg | 4 + .../lib/bootstrap/dist/css/file-earmark.svg | 3 + .../bootstrap/dist/css/file-easel-fill.svg | 4 + .../lib/bootstrap/dist/css/file-easel.svg | 4 + .../bootstrap/dist/css/file-excel-fill.svg | 3 + .../lib/bootstrap/dist/css/file-excel.svg | 4 + .../lib/bootstrap/dist/css/file-fill.svg | 3 + .../lib/bootstrap/dist/css/file-font-fill.svg | 3 + .../lib/bootstrap/dist/css/file-font.svg | 4 + .../bootstrap/dist/css/file-image-fill.svg | 4 + .../lib/bootstrap/dist/css/file-image.svg | 4 + .../lib/bootstrap/dist/css/file-lock-fill.svg | 4 + .../lib/bootstrap/dist/css/file-lock.svg | 4 + .../bootstrap/dist/css/file-lock2-fill.svg | 4 + .../lib/bootstrap/dist/css/file-lock2.svg | 4 + .../bootstrap/dist/css/file-medical-fill.svg | 3 + .../lib/bootstrap/dist/css/file-medical.svg | 4 + .../bootstrap/dist/css/file-minus-fill.svg | 3 + .../lib/bootstrap/dist/css/file-minus.svg | 4 + .../bootstrap/dist/css/file-music-fill.svg | 3 + .../lib/bootstrap/dist/css/file-music.svg | 4 + .../lib/bootstrap/dist/css/file-pdf-fill.svg | 4 + .../lib/bootstrap/dist/css/file-pdf.svg | 4 + .../bootstrap/dist/css/file-person-fill.svg | 3 + .../lib/bootstrap/dist/css/file-person.svg | 4 + .../lib/bootstrap/dist/css/file-play-fill.svg | 3 + .../lib/bootstrap/dist/css/file-play.svg | 4 + .../lib/bootstrap/dist/css/file-plus-fill.svg | 3 + .../lib/bootstrap/dist/css/file-plus.svg | 4 + .../lib/bootstrap/dist/css/file-post-fill.svg | 3 + .../lib/bootstrap/dist/css/file-post.svg | 4 + .../lib/bootstrap/dist/css/file-ppt-fill.svg | 4 + .../lib/bootstrap/dist/css/file-ppt.svg | 4 + .../bootstrap/dist/css/file-richtext-fill.svg | 3 + .../lib/bootstrap/dist/css/file-richtext.svg | 4 + .../bootstrap/dist/css/file-ruled-fill.svg | 3 + .../lib/bootstrap/dist/css/file-ruled.svg | 3 + .../bootstrap/dist/css/file-slides-fill.svg | 4 + .../lib/bootstrap/dist/css/file-slides.svg | 4 + .../dist/css/file-spreadsheet-fill.svg | 3 + .../bootstrap/dist/css/file-spreadsheet.svg | 3 + .../lib/bootstrap/dist/css/file-text-fill.svg | 3 + .../lib/bootstrap/dist/css/file-text.svg | 4 + .../lib/bootstrap/dist/css/file-word-fill.svg | 3 + .../lib/bootstrap/dist/css/file-word.svg | 4 + .../lib/bootstrap/dist/css/file-x-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/file-x.svg | 4 + .../lib/bootstrap/dist/css/file-zip-fill.svg | 4 + .../lib/bootstrap/dist/css/file-zip.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/file.svg | 3 + .../lib/bootstrap/dist/css/files-alt.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/files.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/film.svg | 3 + .../bootstrap/dist/css/filter-circle-fill.svg | 3 + .../lib/bootstrap/dist/css/filter-circle.svg | 4 + .../lib/bootstrap/dist/css/filter-left.svg | 3 + .../lib/bootstrap/dist/css/filter-right.svg | 3 + .../bootstrap/dist/css/filter-square-fill.svg | 3 + .../lib/bootstrap/dist/css/filter-square.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/filter.svg | 3 + .../lib/bootstrap/dist/css/flag-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/flag.svg | 3 + .../lib/bootstrap/dist/css/flower1.svg | 3 + .../lib/bootstrap/dist/css/flower2.svg | 3 + .../lib/bootstrap/dist/css/flower3.svg | 3 + .../lib/bootstrap/dist/css/folder-check.svg | 4 + .../lib/bootstrap/dist/css/folder-fill.svg | 3 + .../lib/bootstrap/dist/css/folder-minus.svg | 4 + .../lib/bootstrap/dist/css/folder-plus.svg | 4 + .../dist/css/folder-symlink-fill.svg | 3 + .../lib/bootstrap/dist/css/folder-symlink.svg | 4 + .../lib/bootstrap/dist/css/folder-x.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/folder.svg | 3 + .../lib/bootstrap/dist/css/folder2-open.svg | 3 + .../lib/bootstrap/dist/css/folder2.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/fonts.svg | 3 + .../dist/css/fonts/bootstrap-icons.woff | Bin 0 -> 120468 bytes .../dist/css/fonts/bootstrap-icons.woff2 | Bin 0 -> 90528 bytes .../lib/bootstrap/dist/css/forward-fill.svg | 3 + .../lib/bootstrap/dist/css/forward.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/front.svg | 3 + .../bootstrap/dist/css/fullscreen-exit.svg | 3 + .../lib/bootstrap/dist/css/fullscreen.svg | 3 + .../lib/bootstrap/dist/css/funnel-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/funnel.svg | 3 + .../lib/bootstrap/dist/css/gear-fill.svg | 3 + .../dist/css/gear-wide-connected.svg | 3 + .../lib/bootstrap/dist/css/gear-wide.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/gear.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/gem.svg | 3 + .../bootstrap/dist/css/gender-ambiguous.svg | 3 + .../lib/bootstrap/dist/css/gender-female.svg | 3 + .../lib/bootstrap/dist/css/gender-male.svg | 3 + .../lib/bootstrap/dist/css/gender-trans.svg | 3 + .../lib/bootstrap/dist/css/geo-alt-fill.svg | 3 + .../lib/bootstrap/dist/css/geo-alt.svg | 4 + .../lib/bootstrap/dist/css/geo-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/geo.svg | 3 + .../lib/bootstrap/dist/css/gift-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/gift.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/github.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/globe.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/globe2.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/google.svg | 3 + .../lib/bootstrap/dist/css/graph-down.svg | 3 + .../lib/bootstrap/dist/css/graph-up.svg | 3 + .../lib/bootstrap/dist/css/grid-1x2-fill.svg | 3 + .../lib/bootstrap/dist/css/grid-1x2.svg | 3 + .../bootstrap/dist/css/grid-3x2-gap-fill.svg | 3 + .../lib/bootstrap/dist/css/grid-3x2-gap.svg | 3 + .../lib/bootstrap/dist/css/grid-3x2.svg | 3 + .../bootstrap/dist/css/grid-3x3-gap-fill.svg | 3 + .../lib/bootstrap/dist/css/grid-3x3-gap.svg | 3 + .../lib/bootstrap/dist/css/grid-3x3.svg | 3 + .../lib/bootstrap/dist/css/grid-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/grid.svg | 3 + .../bootstrap/dist/css/grip-horizontal.svg | 3 + .../lib/bootstrap/dist/css/grip-vertical.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/hammer.svg | 3 + .../bootstrap/dist/css/hand-index-fill.svg | 3 + .../dist/css/hand-index-thumb-fill.svg | 3 + .../bootstrap/dist/css/hand-index-thumb.svg | 3 + .../lib/bootstrap/dist/css/hand-index.svg | 3 + .../dist/css/hand-thumbs-down-fill.svg | 3 + .../bootstrap/dist/css/hand-thumbs-down.svg | 3 + .../dist/css/hand-thumbs-up-fill.svg | 3 + .../lib/bootstrap/dist/css/hand-thumbs-up.svg | 3 + .../lib/bootstrap/dist/css/handbag-fill.svg | 3 + .../lib/bootstrap/dist/css/handbag.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/hash.svg | 3 + .../lib/bootstrap/dist/css/hdd-fill.svg | 3 + .../bootstrap/dist/css/hdd-network-fill.svg | 3 + .../lib/bootstrap/dist/css/hdd-network.svg | 4 + .../lib/bootstrap/dist/css/hdd-rack-fill.svg | 3 + .../lib/bootstrap/dist/css/hdd-rack.svg | 4 + .../lib/bootstrap/dist/css/hdd-stack-fill.svg | 3 + .../lib/bootstrap/dist/css/hdd-stack.svg | 5 + .../wwwroot/lib/bootstrap/dist/css/hdd.svg | 4 + .../lib/bootstrap/dist/css/headphones.svg | 3 + .../lib/bootstrap/dist/css/headset-vr.svg | 4 + .../lib/bootstrap/dist/css/headset.svg | 3 + .../lib/bootstrap/dist/css/heart-fill.svg | 3 + .../lib/bootstrap/dist/css/heart-half.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/heart.svg | 3 + .../lib/bootstrap/dist/css/heptagon-fill.svg | 3 + .../lib/bootstrap/dist/css/heptagon-half.svg | 3 + .../lib/bootstrap/dist/css/heptagon.svg | 3 + .../lib/bootstrap/dist/css/hexagon-fill.svg | 3 + .../lib/bootstrap/dist/css/hexagon-half.svg | 3 + .../lib/bootstrap/dist/css/hexagon.svg | 3 + .../bootstrap/dist/css/hourglass-bottom.svg | 3 + .../bootstrap/dist/css/hourglass-split.svg | 3 + .../lib/bootstrap/dist/css/hourglass-top.svg | 3 + .../lib/bootstrap/dist/css/hourglass.svg | 3 + .../bootstrap/dist/css/house-door-fill.svg | 3 + .../lib/bootstrap/dist/css/house-door.svg | 3 + .../lib/bootstrap/dist/css/house-fill.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/house.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/hr.svg | 3 + .../lib/bootstrap/dist/css/hurricane.svg | 3 + .../lib/bootstrap/dist/css/image-alt.svg | 3 + .../lib/bootstrap/dist/css/image-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/image.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/images.svg | 4 + .../lib/bootstrap/dist/css/inbox-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/inbox.svg | 3 + .../lib/bootstrap/dist/css/inboxes-fill.svg | 3 + .../lib/bootstrap/dist/css/inboxes.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/index.html | 5527 ++++++++ .../bootstrap/dist/css/info-circle-fill.svg | 3 + .../lib/bootstrap/dist/css/info-circle.svg | 4 + .../lib/bootstrap/dist/css/info-lg.svg | 3 + .../bootstrap/dist/css/info-square-fill.svg | 3 + .../lib/bootstrap/dist/css/info-square.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/info.svg | 3 + .../bootstrap/dist/css/input-cursor-text.svg | 4 + .../lib/bootstrap/dist/css/input-cursor.svg | 4 + .../lib/bootstrap/dist/css/instagram.svg | 3 + .../lib/bootstrap/dist/css/intersect.svg | 3 + .../lib/bootstrap/dist/css/journal-album.svg | 5 + .../bootstrap/dist/css/journal-arrow-down.svg | 5 + .../bootstrap/dist/css/journal-arrow-up.svg | 5 + .../dist/css/journal-bookmark-fill.svg | 5 + .../bootstrap/dist/css/journal-bookmark.svg | 5 + .../lib/bootstrap/dist/css/journal-check.svg | 5 + .../lib/bootstrap/dist/css/journal-code.svg | 5 + .../bootstrap/dist/css/journal-medical.svg | 5 + .../lib/bootstrap/dist/css/journal-minus.svg | 5 + .../lib/bootstrap/dist/css/journal-plus.svg | 5 + .../bootstrap/dist/css/journal-richtext.svg | 5 + .../lib/bootstrap/dist/css/journal-text.svg | 5 + .../lib/bootstrap/dist/css/journal-x.svg | 5 + .../lib/bootstrap/dist/css/journal.svg | 4 + .../lib/bootstrap/dist/css/journals.svg | 4 + .../lib/bootstrap/dist/css/joystick.svg | 4 + .../lib/bootstrap/dist/css/justify-left.svg | 3 + .../lib/bootstrap/dist/css/justify-right.svg | 3 + .../lib/bootstrap/dist/css/justify.svg | 3 + .../lib/bootstrap/dist/css/kanban-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/kanban.svg | 4 + .../lib/bootstrap/dist/css/key-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/key.svg | 4 + .../lib/bootstrap/dist/css/keyboard-fill.svg | 3 + .../lib/bootstrap/dist/css/keyboard.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/ladder.svg | 3 + .../lib/bootstrap/dist/css/lamp-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/lamp.svg | 3 + .../lib/bootstrap/dist/css/laptop-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/laptop.svg | 3 + .../lib/bootstrap/dist/css/layer-backward.svg | 4 + .../lib/bootstrap/dist/css/layer-forward.svg | 4 + .../lib/bootstrap/dist/css/layers-fill.svg | 4 + .../lib/bootstrap/dist/css/layers-half.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/layers.svg | 3 + .../dist/css/layout-sidebar-inset-reverse.svg | 4 + .../dist/css/layout-sidebar-inset.svg | 4 + .../dist/css/layout-sidebar-reverse.svg | 3 + .../lib/bootstrap/dist/css/layout-sidebar.svg | 3 + .../lib/bootstrap/dist/css/layout-split.svg | 3 + .../dist/css/layout-text-sidebar-reverse.svg | 4 + .../dist/css/layout-text-sidebar.svg | 4 + .../dist/css/layout-text-window-reverse.svg | 4 + .../bootstrap/dist/css/layout-text-window.svg | 4 + .../dist/css/layout-three-columns.svg | 3 + .../lib/bootstrap/dist/css/layout-wtf.svg | 3 + .../lib/bootstrap/dist/css/life-preserver.svg | 3 + .../lib/bootstrap/dist/css/lightbulb-fill.svg | 3 + .../bootstrap/dist/css/lightbulb-off-fill.svg | 3 + .../lib/bootstrap/dist/css/lightbulb-off.svg | 3 + .../lib/bootstrap/dist/css/lightbulb.svg | 3 + .../dist/css/lightning-charge-fill.svg | 3 + .../bootstrap/dist/css/lightning-charge.svg | 3 + .../lib/bootstrap/dist/css/lightning-fill.svg | 3 + .../lib/bootstrap/dist/css/lightning.svg | 3 + .../lib/bootstrap/dist/css/link-45deg.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/link.svg | 4 + .../lib/bootstrap/dist/css/linkedin.svg | 3 + .../lib/bootstrap/dist/css/list-check.svg | 3 + .../lib/bootstrap/dist/css/list-nested.svg | 3 + .../lib/bootstrap/dist/css/list-ol.svg | 4 + .../lib/bootstrap/dist/css/list-stars.svg | 4 + .../lib/bootstrap/dist/css/list-task.svg | 5 + .../lib/bootstrap/dist/css/list-ul.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/list.svg | 3 + .../lib/bootstrap/dist/css/lock-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/lock.svg | 3 + .../lib/bootstrap/dist/css/mailbox.svg | 4 + .../lib/bootstrap/dist/css/mailbox2.svg | 4 + .../lib/bootstrap/dist/css/map-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/map.svg | 3 + .../lib/bootstrap/dist/css/markdown-fill.svg | 3 + .../lib/bootstrap/dist/css/markdown.svg | 6 + .../wwwroot/lib/bootstrap/dist/css/mask.svg | 3 + .../lib/bootstrap/dist/css/mastodon.svg | 3 + .../lib/bootstrap/dist/css/megaphone-fill.svg | 3 + .../lib/bootstrap/dist/css/megaphone.svg | 3 + .../lib/bootstrap/dist/css/menu-app-fill.svg | 3 + .../lib/bootstrap/dist/css/menu-app.svg | 3 + .../bootstrap/dist/css/menu-button-fill.svg | 3 + .../dist/css/menu-button-wide-fill.svg | 3 + .../bootstrap/dist/css/menu-button-wide.svg | 4 + .../lib/bootstrap/dist/css/menu-button.svg | 4 + .../lib/bootstrap/dist/css/menu-down.svg | 3 + .../lib/bootstrap/dist/css/menu-up.svg | 3 + .../lib/bootstrap/dist/css/messenger.svg | 3 + .../lib/bootstrap/dist/css/mic-fill.svg | 4 + .../lib/bootstrap/dist/css/mic-mute-fill.svg | 4 + .../lib/bootstrap/dist/css/mic-mute.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/mic.svg | 4 + .../bootstrap/dist/css/minecart-loaded.svg | 4 + .../lib/bootstrap/dist/css/minecart.svg | 3 + .../lib/bootstrap/dist/css/moisture.svg | 3 + .../lib/bootstrap/dist/css/moon-fill.svg | 3 + .../bootstrap/dist/css/moon-stars-fill.svg | 4 + .../lib/bootstrap/dist/css/moon-stars.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/moon.svg | 3 + .../lib/bootstrap/dist/css/mouse-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/mouse.svg | 3 + .../lib/bootstrap/dist/css/mouse2-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/mouse2.svg | 3 + .../lib/bootstrap/dist/css/mouse3-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/mouse3.svg | 3 + .../bootstrap/dist/css/music-note-beamed.svg | 5 + .../bootstrap/dist/css/music-note-list.svg | 6 + .../lib/bootstrap/dist/css/music-note.svg | 5 + .../bootstrap/dist/css/music-player-fill.svg | 4 + .../lib/bootstrap/dist/css/music-player.svg | 5 + .../lib/bootstrap/dist/css/newspaper.svg | 4 + .../bootstrap/dist/css/node-minus-fill.svg | 3 + .../lib/bootstrap/dist/css/node-minus.svg | 3 + .../lib/bootstrap/dist/css/node-plus-fill.svg | 3 + .../lib/bootstrap/dist/css/node-plus.svg | 3 + .../lib/bootstrap/dist/css/nut-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/nut.svg | 4 + .../lib/bootstrap/dist/css/octagon-fill.svg | 3 + .../lib/bootstrap/dist/css/octagon-half.svg | 3 + .../lib/bootstrap/dist/css/octagon.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/option.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/outlet.svg | 4 + .../lib/bootstrap/dist/css/paint-bucket.svg | 3 + .../lib/bootstrap/dist/css/palette-fill.svg | 3 + .../lib/bootstrap/dist/css/palette.svg | 4 + .../lib/bootstrap/dist/css/palette2.svg | 4 + .../lib/bootstrap/dist/css/paperclip.svg | 3 + .../lib/bootstrap/dist/css/paragraph.svg | 3 + .../bootstrap/dist/css/patch-check-fill.svg | 3 + .../lib/bootstrap/dist/css/patch-check.svg | 4 + .../dist/css/patch-exclamation-fill.svg | 3 + .../bootstrap/dist/css/patch-exclamation.svg | 4 + .../bootstrap/dist/css/patch-minus-fill.svg | 3 + .../lib/bootstrap/dist/css/patch-minus.svg | 4 + .../bootstrap/dist/css/patch-plus-fill.svg | 3 + .../lib/bootstrap/dist/css/patch-plus.svg | 4 + .../dist/css/patch-question-fill.svg | 3 + .../lib/bootstrap/dist/css/patch-question.svg | 5 + .../lib/bootstrap/dist/css/pause-btn-fill.svg | 3 + .../lib/bootstrap/dist/css/pause-btn.svg | 4 + .../bootstrap/dist/css/pause-circle-fill.svg | 3 + .../lib/bootstrap/dist/css/pause-circle.svg | 4 + .../lib/bootstrap/dist/css/pause-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/pause.svg | 3 + .../lib/bootstrap/dist/css/peace-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/peace.svg | 3 + .../lib/bootstrap/dist/css/pen-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/pen.svg | 3 + .../lib/bootstrap/dist/css/pencil-fill.svg | 3 + .../lib/bootstrap/dist/css/pencil-square.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/pencil.svg | 3 + .../lib/bootstrap/dist/css/pentagon-fill.svg | 3 + .../lib/bootstrap/dist/css/pentagon-half.svg | 3 + .../lib/bootstrap/dist/css/pentagon.svg | 3 + .../lib/bootstrap/dist/css/people-fill.svg | 5 + .../wwwroot/lib/bootstrap/dist/css/people.svg | 3 + .../lib/bootstrap/dist/css/percent.svg | 3 + .../bootstrap/dist/css/person-badge-fill.svg | 3 + .../lib/bootstrap/dist/css/person-badge.svg | 4 + .../dist/css/person-bounding-box.svg | 4 + .../bootstrap/dist/css/person-check-fill.svg | 4 + .../lib/bootstrap/dist/css/person-check.svg | 4 + .../lib/bootstrap/dist/css/person-circle.svg | 4 + .../bootstrap/dist/css/person-dash-fill.svg | 4 + .../lib/bootstrap/dist/css/person-dash.svg | 4 + .../lib/bootstrap/dist/css/person-fill.svg | 3 + .../bootstrap/dist/css/person-lines-fill.svg | 3 + .../bootstrap/dist/css/person-plus-fill.svg | 4 + .../lib/bootstrap/dist/css/person-plus.svg | 4 + .../lib/bootstrap/dist/css/person-square.svg | 4 + .../lib/bootstrap/dist/css/person-x-fill.svg | 3 + .../lib/bootstrap/dist/css/person-x.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/person.svg | 3 + .../lib/bootstrap/dist/css/phone-fill.svg | 3 + .../dist/css/phone-landscape-fill.svg | 3 + .../bootstrap/dist/css/phone-landscape.svg | 4 + .../bootstrap/dist/css/phone-vibrate-fill.svg | 3 + .../lib/bootstrap/dist/css/phone-vibrate.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/phone.svg | 4 + .../lib/bootstrap/dist/css/pie-chart-fill.svg | 3 + .../lib/bootstrap/dist/css/pie-chart.svg | 3 + .../bootstrap/dist/css/piggy-bank-fill.svg | 3 + .../lib/bootstrap/dist/css/piggy-bank.svg | 4 + .../lib/bootstrap/dist/css/pin-angle-fill.svg | 3 + .../lib/bootstrap/dist/css/pin-angle.svg | 3 + .../lib/bootstrap/dist/css/pin-fill.svg | 3 + .../lib/bootstrap/dist/css/pin-map-fill.svg | 4 + .../lib/bootstrap/dist/css/pin-map.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/pin.svg | 3 + .../lib/bootstrap/dist/css/pip-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/pip.svg | 4 + .../lib/bootstrap/dist/css/play-btn-fill.svg | 3 + .../lib/bootstrap/dist/css/play-btn.svg | 4 + .../bootstrap/dist/css/play-circle-fill.svg | 3 + .../lib/bootstrap/dist/css/play-circle.svg | 4 + .../lib/bootstrap/dist/css/play-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/play.svg | 3 + .../lib/bootstrap/dist/css/plug-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/plug.svg | 3 + .../bootstrap/dist/css/plus-circle-dotted.svg | 3 + .../bootstrap/dist/css/plus-circle-fill.svg | 3 + .../lib/bootstrap/dist/css/plus-circle.svg | 4 + .../lib/bootstrap/dist/css/plus-lg.svg | 3 + .../bootstrap/dist/css/plus-square-dotted.svg | 3 + .../bootstrap/dist/css/plus-square-fill.svg | 3 + .../lib/bootstrap/dist/css/plus-square.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/plus.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/power.svg | 4 + .../lib/bootstrap/dist/css/printer-fill.svg | 4 + .../lib/bootstrap/dist/css/printer.svg | 4 + .../lib/bootstrap/dist/css/puzzle-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/puzzle.svg | 3 + .../dist/css/question-circle-fill.svg | 3 + .../bootstrap/dist/css/question-circle.svg | 4 + .../dist/css/question-diamond-fill.svg | 3 + .../bootstrap/dist/css/question-diamond.svg | 4 + .../lib/bootstrap/dist/css/question-lg.svg | 3 + .../dist/css/question-octagon-fill.svg | 3 + .../bootstrap/dist/css/question-octagon.svg | 4 + .../dist/css/question-square-fill.svg | 3 + .../bootstrap/dist/css/question-square.svg | 4 + .../lib/bootstrap/dist/css/question.svg | 3 + .../lib/bootstrap/dist/css/rainbow.svg | 3 + .../lib/bootstrap/dist/css/receipt-cutoff.svg | 4 + .../lib/bootstrap/dist/css/receipt.svg | 4 + .../lib/bootstrap/dist/css/reception-0.svg | 3 + .../lib/bootstrap/dist/css/reception-1.svg | 3 + .../lib/bootstrap/dist/css/reception-2.svg | 3 + .../lib/bootstrap/dist/css/reception-3.svg | 3 + .../lib/bootstrap/dist/css/reception-4.svg | 3 + .../bootstrap/dist/css/record-btn-fill.svg | 3 + .../lib/bootstrap/dist/css/record-btn.svg | 4 + .../bootstrap/dist/css/record-circle-fill.svg | 3 + .../lib/bootstrap/dist/css/record-circle.svg | 4 + .../lib/bootstrap/dist/css/record-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/record.svg | 3 + .../lib/bootstrap/dist/css/record2-fill.svg | 4 + .../lib/bootstrap/dist/css/record2.svg | 4 + .../lib/bootstrap/dist/css/recycle.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/reddit.svg | 4 + .../lib/bootstrap/dist/css/reply-all-fill.svg | 4 + .../lib/bootstrap/dist/css/reply-all.svg | 4 + .../lib/bootstrap/dist/css/reply-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/reply.svg | 3 + .../lib/bootstrap/dist/css/rss-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/rss.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/rulers.svg | 3 + .../lib/bootstrap/dist/css/safe-fill.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/safe.svg | 4 + .../lib/bootstrap/dist/css/safe2-fill.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/safe2.svg | 4 + .../lib/bootstrap/dist/css/save-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/save.svg | 3 + .../lib/bootstrap/dist/css/save2-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/save2.svg | 3 + .../lib/bootstrap/dist/css/scissors.svg | 3 + .../lib/bootstrap/dist/css/screwdriver.svg | 3 + .../lib/bootstrap/dist/css/sd-card-fill.svg | 3 + .../lib/bootstrap/dist/css/sd-card.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/search.svg | 3 + .../lib/bootstrap/dist/css/segmented-nav.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/server.svg | 5 + .../lib/bootstrap/dist/css/share-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/share.svg | 3 + .../lib/bootstrap/dist/css/shield-check.svg | 4 + .../bootstrap/dist/css/shield-exclamation.svg | 4 + .../bootstrap/dist/css/shield-fill-check.svg | 3 + .../dist/css/shield-fill-exclamation.svg | 3 + .../bootstrap/dist/css/shield-fill-minus.svg | 3 + .../bootstrap/dist/css/shield-fill-plus.svg | 3 + .../lib/bootstrap/dist/css/shield-fill-x.svg | 3 + .../lib/bootstrap/dist/css/shield-fill.svg | 3 + .../bootstrap/dist/css/shield-lock-fill.svg | 3 + .../lib/bootstrap/dist/css/shield-lock.svg | 4 + .../lib/bootstrap/dist/css/shield-minus.svg | 4 + .../lib/bootstrap/dist/css/shield-plus.svg | 4 + .../lib/bootstrap/dist/css/shield-shaded.svg | 3 + .../bootstrap/dist/css/shield-slash-fill.svg | 3 + .../lib/bootstrap/dist/css/shield-slash.svg | 3 + .../lib/bootstrap/dist/css/shield-x.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/shield.svg | 3 + .../lib/bootstrap/dist/css/shift-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/shift.svg | 3 + .../lib/bootstrap/dist/css/shop-window.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/shop.svg | 3 + .../lib/bootstrap/dist/css/shuffle.svg | 4 + .../bootstrap/dist/css/signpost-2-fill.svg | 3 + .../lib/bootstrap/dist/css/signpost-2.svg | 3 + .../lib/bootstrap/dist/css/signpost-fill.svg | 3 + .../dist/css/signpost-split-fill.svg | 3 + .../lib/bootstrap/dist/css/signpost-split.svg | 3 + .../lib/bootstrap/dist/css/signpost.svg | 3 + .../lib/bootstrap/dist/css/sim-fill.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/sim.svg | 4 + .../dist/css/skip-backward-btn-fill.svg | 3 + .../bootstrap/dist/css/skip-backward-btn.svg | 4 + .../dist/css/skip-backward-circle-fill.svg | 3 + .../dist/css/skip-backward-circle.svg | 4 + .../bootstrap/dist/css/skip-backward-fill.svg | 3 + .../lib/bootstrap/dist/css/skip-backward.svg | 3 + .../bootstrap/dist/css/skip-end-btn-fill.svg | 3 + .../lib/bootstrap/dist/css/skip-end-btn.svg | 4 + .../dist/css/skip-end-circle-fill.svg | 3 + .../bootstrap/dist/css/skip-end-circle.svg | 4 + .../lib/bootstrap/dist/css/skip-end-fill.svg | 3 + .../lib/bootstrap/dist/css/skip-end.svg | 3 + .../dist/css/skip-forward-btn-fill.svg | 3 + .../bootstrap/dist/css/skip-forward-btn.svg | 4 + .../dist/css/skip-forward-circle-fill.svg | 3 + .../dist/css/skip-forward-circle.svg | 4 + .../bootstrap/dist/css/skip-forward-fill.svg | 3 + .../lib/bootstrap/dist/css/skip-forward.svg | 3 + .../dist/css/skip-start-btn-fill.svg | 3 + .../lib/bootstrap/dist/css/skip-start-btn.svg | 4 + .../dist/css/skip-start-circle-fill.svg | 3 + .../bootstrap/dist/css/skip-start-circle.svg | 4 + .../bootstrap/dist/css/skip-start-fill.svg | 3 + .../lib/bootstrap/dist/css/skip-start.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/skype.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/slack.svg | 3 + .../bootstrap/dist/css/slash-circle-fill.svg | 3 + .../lib/bootstrap/dist/css/slash-circle.svg | 4 + .../lib/bootstrap/dist/css/slash-lg.svg | 3 + .../bootstrap/dist/css/slash-square-fill.svg | 3 + .../lib/bootstrap/dist/css/slash-square.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/slash.svg | 3 + .../lib/bootstrap/dist/css/sliders.svg | 3 + .../lib/bootstrap/dist/css/smartwatch.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/snow.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/snow2.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/snow3.svg | 4 + .../dist/css/sort-alpha-down-alt.svg | 5 + .../bootstrap/dist/css/sort-alpha-down.svg | 4 + .../bootstrap/dist/css/sort-alpha-up-alt.svg | 5 + .../lib/bootstrap/dist/css/sort-alpha-up.svg | 4 + .../lib/bootstrap/dist/css/sort-down-alt.svg | 3 + .../lib/bootstrap/dist/css/sort-down.svg | 3 + .../dist/css/sort-numeric-down-alt.svg | 4 + .../bootstrap/dist/css/sort-numeric-down.svg | 5 + .../dist/css/sort-numeric-up-alt.svg | 4 + .../bootstrap/dist/css/sort-numeric-up.svg | 5 + .../lib/bootstrap/dist/css/sort-up-alt.svg | 3 + .../lib/bootstrap/dist/css/sort-up.svg | 3 + .../lib/bootstrap/dist/css/soundwave.svg | 3 + .../lib/bootstrap/dist/css/speaker-fill.svg | 4 + .../lib/bootstrap/dist/css/speaker.svg | 4 + .../lib/bootstrap/dist/css/speedometer.svg | 4 + .../lib/bootstrap/dist/css/speedometer2.svg | 4 + .../lib/bootstrap/dist/css/spellcheck.svg | 4 + .../lib/bootstrap/dist/css/square-fill.svg | 3 + .../lib/bootstrap/dist/css/square-half.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/square.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/stack.svg | 4 + .../lib/bootstrap/dist/css/star-fill.svg | 3 + .../lib/bootstrap/dist/css/star-half.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/star.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/stars.svg | 3 + .../lib/bootstrap/dist/css/stickies-fill.svg | 4 + .../lib/bootstrap/dist/css/stickies.svg | 4 + .../lib/bootstrap/dist/css/sticky-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/sticky.svg | 3 + .../lib/bootstrap/dist/css/stop-btn-fill.svg | 3 + .../lib/bootstrap/dist/css/stop-btn.svg | 4 + .../bootstrap/dist/css/stop-circle-fill.svg | 3 + .../lib/bootstrap/dist/css/stop-circle.svg | 4 + .../lib/bootstrap/dist/css/stop-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/stop.svg | 3 + .../bootstrap/dist/css/stoplights-fill.svg | 3 + .../lib/bootstrap/dist/css/stoplights.svg | 4 + .../lib/bootstrap/dist/css/stopwatch-fill.svg | 3 + .../lib/bootstrap/dist/css/stopwatch.svg | 4 + .../lib/bootstrap/dist/css/subtract.svg | 3 + .../lib/bootstrap/dist/css/suit-club-fill.svg | 3 + .../lib/bootstrap/dist/css/suit-club.svg | 3 + .../bootstrap/dist/css/suit-diamond-fill.svg | 3 + .../lib/bootstrap/dist/css/suit-diamond.svg | 3 + .../bootstrap/dist/css/suit-heart-fill.svg | 3 + .../lib/bootstrap/dist/css/suit-heart.svg | 3 + .../bootstrap/dist/css/suit-spade-fill.svg | 3 + .../lib/bootstrap/dist/css/suit-spade.svg | 3 + .../lib/bootstrap/dist/css/sun-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/sun.svg | 3 + .../lib/bootstrap/dist/css/sunglasses.svg | 3 + .../lib/bootstrap/dist/css/sunrise-fill.svg | 3 + .../lib/bootstrap/dist/css/sunrise.svg | 3 + .../lib/bootstrap/dist/css/sunset-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/sunset.svg | 3 + .../dist/css/symmetry-horizontal.svg | 3 + .../bootstrap/dist/css/symmetry-vertical.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/table.svg | 3 + .../lib/bootstrap/dist/css/tablet-fill.svg | 3 + .../dist/css/tablet-landscape-fill.svg | 3 + .../bootstrap/dist/css/tablet-landscape.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/tablet.svg | 4 + .../lib/bootstrap/dist/css/tag-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/tag.svg | 4 + .../lib/bootstrap/dist/css/tags-fill.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/tags.svg | 4 + .../lib/bootstrap/dist/css/telegram.svg | 3 + .../lib/bootstrap/dist/css/telephone-fill.svg | 3 + .../dist/css/telephone-forward-fill.svg | 3 + .../bootstrap/dist/css/telephone-forward.svg | 3 + .../dist/css/telephone-inbound-fill.svg | 3 + .../bootstrap/dist/css/telephone-inbound.svg | 3 + .../dist/css/telephone-minus-fill.svg | 3 + .../bootstrap/dist/css/telephone-minus.svg | 4 + .../dist/css/telephone-outbound-fill.svg | 3 + .../bootstrap/dist/css/telephone-outbound.svg | 3 + .../dist/css/telephone-plus-fill.svg | 3 + .../lib/bootstrap/dist/css/telephone-plus.svg | 4 + .../bootstrap/dist/css/telephone-x-fill.svg | 3 + .../lib/bootstrap/dist/css/telephone-x.svg | 4 + .../lib/bootstrap/dist/css/telephone.svg | 3 + .../lib/bootstrap/dist/css/terminal-fill.svg | 3 + .../lib/bootstrap/dist/css/terminal.svg | 4 + .../lib/bootstrap/dist/css/text-center.svg | 3 + .../bootstrap/dist/css/text-indent-left.svg | 3 + .../bootstrap/dist/css/text-indent-right.svg | 3 + .../lib/bootstrap/dist/css/text-left.svg | 3 + .../lib/bootstrap/dist/css/text-paragraph.svg | 3 + .../lib/bootstrap/dist/css/text-right.svg | 3 + .../bootstrap/dist/css/textarea-resize.svg | 3 + .../lib/bootstrap/dist/css/textarea-t.svg | 4 + .../lib/bootstrap/dist/css/textarea.svg | 3 + .../bootstrap/dist/css/thermometer-half.svg | 4 + .../bootstrap/dist/css/thermometer-high.svg | 4 + .../bootstrap/dist/css/thermometer-low.svg | 4 + .../bootstrap/dist/css/thermometer-snow.svg | 4 + .../bootstrap/dist/css/thermometer-sun.svg | 4 + .../lib/bootstrap/dist/css/thermometer.svg | 4 + .../dist/css/three-dots-vertical.svg | 3 + .../lib/bootstrap/dist/css/three-dots.svg | 3 + .../lib/bootstrap/dist/css/toggle-off.svg | 3 + .../lib/bootstrap/dist/css/toggle-on.svg | 3 + .../lib/bootstrap/dist/css/toggle2-off.svg | 4 + .../lib/bootstrap/dist/css/toggle2-on.svg | 4 + .../lib/bootstrap/dist/css/toggles.svg | 3 + .../lib/bootstrap/dist/css/toggles2.svg | 5 + .../wwwroot/lib/bootstrap/dist/css/tools.svg | 3 + .../lib/bootstrap/dist/css/tornado.svg | 3 + .../lib/bootstrap/dist/css/translate.svg | 4 + .../lib/bootstrap/dist/css/trash-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/trash.svg | 4 + .../lib/bootstrap/dist/css/trash2-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/trash2.svg | 3 + .../lib/bootstrap/dist/css/tree-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/tree.svg | 3 + .../lib/bootstrap/dist/css/triangle-fill.svg | 3 + .../lib/bootstrap/dist/css/triangle-half.svg | 3 + .../lib/bootstrap/dist/css/triangle.svg | 3 + .../lib/bootstrap/dist/css/trophy-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/trophy.svg | 3 + .../lib/bootstrap/dist/css/tropical-storm.svg | 4 + .../lib/bootstrap/dist/css/truck-flatbed.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/truck.svg | 3 + .../lib/bootstrap/dist/css/tsunami.svg | 3 + .../lib/bootstrap/dist/css/tv-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/tv.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/twitch.svg | 4 + .../lib/bootstrap/dist/css/twitter.svg | 3 + .../lib/bootstrap/dist/css/type-bold.svg | 3 + .../lib/bootstrap/dist/css/type-h1.svg | 3 + .../lib/bootstrap/dist/css/type-h2.svg | 3 + .../lib/bootstrap/dist/css/type-h3.svg | 3 + .../lib/bootstrap/dist/css/type-italic.svg | 3 + .../bootstrap/dist/css/type-strikethrough.svg | 3 + .../lib/bootstrap/dist/css/type-underline.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/type.svg | 3 + .../lib/bootstrap/dist/css/ui-checks-grid.svg | 3 + .../lib/bootstrap/dist/css/ui-checks.svg | 3 + .../lib/bootstrap/dist/css/ui-radios-grid.svg | 3 + .../lib/bootstrap/dist/css/ui-radios.svg | 3 + .../lib/bootstrap/dist/css/umbrella-fill.svg | 3 + .../lib/bootstrap/dist/css/umbrella.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/union.svg | 3 + .../lib/bootstrap/dist/css/unlock-fill.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/unlock.svg | 3 + .../lib/bootstrap/dist/css/upc-scan.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/upc.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/upload.svg | 4 + .../lib/bootstrap/dist/css/vector-pen.svg | 4 + .../lib/bootstrap/dist/css/view-list.svg | 3 + .../lib/bootstrap/dist/css/view-stacked.svg | 3 + .../lib/bootstrap/dist/css/vinyl-fill.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/vinyl.svg | 5 + .../lib/bootstrap/dist/css/voicemail.svg | 3 + .../bootstrap/dist/css/volume-down-fill.svg | 3 + .../lib/bootstrap/dist/css/volume-down.svg | 3 + .../bootstrap/dist/css/volume-mute-fill.svg | 3 + .../lib/bootstrap/dist/css/volume-mute.svg | 3 + .../bootstrap/dist/css/volume-off-fill.svg | 3 + .../lib/bootstrap/dist/css/volume-off.svg | 3 + .../lib/bootstrap/dist/css/volume-up-fill.svg | 5 + .../lib/bootstrap/dist/css/volume-up.svg | 5 + .../wwwroot/lib/bootstrap/dist/css/vr.svg | 3 + .../lib/bootstrap/dist/css/wallet-fill.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/wallet.svg | 3 + .../lib/bootstrap/dist/css/wallet2.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/watch.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/water.svg | 3 + .../lib/bootstrap/dist/css/whatsapp.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/wifi-1.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/wifi-2.svg | 3 + .../lib/bootstrap/dist/css/wifi-off.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/wifi.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/wind.svg | 3 + .../lib/bootstrap/dist/css/window-dock.svg | 4 + .../lib/bootstrap/dist/css/window-sidebar.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/window.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/wrench.svg | 3 + .../lib/bootstrap/dist/css/x-circle-fill.svg | 3 + .../lib/bootstrap/dist/css/x-circle.svg | 4 + .../lib/bootstrap/dist/css/x-diamond-fill.svg | 3 + .../lib/bootstrap/dist/css/x-diamond.svg | 3 + .../wwwroot/lib/bootstrap/dist/css/x-lg.svg | 3 + .../lib/bootstrap/dist/css/x-octagon-fill.svg | 3 + .../lib/bootstrap/dist/css/x-octagon.svg | 4 + .../lib/bootstrap/dist/css/x-square-fill.svg | 3 + .../lib/bootstrap/dist/css/x-square.svg | 4 + .../wwwroot/lib/bootstrap/dist/css/x.svg | 3 + .../lib/bootstrap/dist/css/youtube.svg | 3 + .../lib/bootstrap/dist/css/zoom-in.svg | 5 + .../lib/bootstrap/dist/css/zoom-out.svg | 5 + .../lib/bootstrap/dist/js/bootstrap.bundle.js | 7013 ++++++++++ .../lib/bootstrap/dist/js/bootstrap.js | 4435 +++++++ .../wwwroot/lib/jquery/LICENSE.txt | 36 + .../wwwroot/lib/jquery/dist/jquery.js | 10872 ++++++++++++++++ 1515 files changed, 78875 insertions(+) create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Controllers/AboutController.cs create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Controllers/AccountController.cs create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Controllers/BookController.cs create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Controllers/HomeController.cs create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Controllers/InfoController.cs create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Controllers/ManageController.cs create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Controllers/TestController.cs create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Localization.csproj create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Models/ApplicationDbContext.cs create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Models/ApplicationUser.cs create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Program.cs create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Controllers.AboutController.fr.resx create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Controllers.BookController.fr.resx create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Controllers.TestController.fr.resx create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Controllers/HomeController.fr.resx create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Controllers/InfoController.fr.resx create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/LocSample.SharedResource.fr.resx create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Resources.SharedResource.fr.resx create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/SharedResource.fr.resx create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/StartUp.fr.resx create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/ViewModels.Account.RegisterViewModel2.fr.resx create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/ViewModels/Account/RegisterViewModel.fr.resx create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views.Home.About.fr.resx create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views.Info.About.fr.resx create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views.Shared._Layout.fr.Designer.cs create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views.Shared._Layout.fr.resx create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views.Shared._LoginPartial.fr.resx create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views.Shared._SelectLanguagePartial.fr.resx create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views.book.About.fr.resx create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views.book.Hello.fr.Designer.cs create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views.book.Hello.fr.resx create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views.test.About.fr.resx create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Account/Login.fr.resx create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Account/Register.fr.resx create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Book/Contact.fr.Designer.cs create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Book/Contact.fr.resx create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Book/Index.Designer.cs create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Book/Index.resx create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Home/About2.fr.resx create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Home/Contact.fr.Designer.cs create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Home/Contact.fr.resx create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Home/Index.fr.resx create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Info/Contact.fr.Designer.cs create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Info/Contact.fr.resx create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Info/Index.fr.resx create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Test/Contact.fr.Designer.cs create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Test/Contact.fr.resx create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Test/Index.fr.resx create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Services/IEmailSender.cs create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Services/ISmsSender.cs create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Services/MessageServices.cs create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/SharedResource.cs create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Account/ExternalLoginConfirmationViewModel.cs create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Account/ForgotPasswordViewModel.cs create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Account/LoginViewModel.cs create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Account/RegisterViewModel.cs create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Account/ResetPasswordViewModel.cs create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Account/SendCodeViewModel.cs create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Account/VerifyCodeViewModel.cs create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Manage/AddPhoneNumberViewModel.cs create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Manage/ChangePasswordViewModel.cs create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Manage/ConfigureTwoFactorViewModel.cs create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Manage/FactorViewModel.cs create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Manage/IndexViewModel.cs create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Manage/ManageLoginsViewModel.cs create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Manage/RemoveLoginViewModel.cs create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Manage/SetPasswordViewModel.cs create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Manage/VerifyPhoneNumberViewModel.cs create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/ConfirmEmail.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/ExternalLoginConfirmation.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/ExternalLoginFailure.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/ForgotPassword.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/ForgotPasswordConfirmation.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/Lockout.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/Login.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/Register.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/ResetPassword.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/ResetPasswordConfirmation.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/SendCode.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/VerifyCode.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Book/About.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Book/Contact.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Book/Hello.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Book/Index.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Home/About.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Home/About2.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Home/Contact.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Home/Index.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Info/About.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Info/Contact.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Info/Hello.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Info/Index.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Manage/AddPhoneNumber.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Manage/ChangePassword.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Manage/Index.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Manage/ManageLogins.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Manage/SetPassword.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Manage/VerifyPhoneNumber.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Shared/Error.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Shared/_Layout.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Shared/_LoginPartial.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Shared/_SelectLanguagePartial.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Shared/_ValidationScriptsPartial.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Test/About.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Test/Contact.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Test/Hello.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Test/Index.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/_ViewImports.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/_ViewStart.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/appsettings.json create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/wwwroot/css/bootstrap-3.3.7.css create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/wwwroot/favicon.ico create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/wwwroot/js/bootstrap-3.3.7.js create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/wwwroot/js/jquery-2.2.0.js create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/wwwroot/js/jquery.validate-1.16.0.js create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/Localization/wwwroot/js/jquery.validate.unobtrusive-3.2.6.js create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/POLocalization.csproj create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/Pages/Index.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/Pages/Privacy.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/Pages/Shared/_Layout.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/Pages/Shared/_ValidationScriptsPartial.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/Pages/_ViewImports.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/Pages/_ViewStart.cshtml create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/Program.cs create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/appsettings.Development.json create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/appsettings.json create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/cs.po create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/fr.po create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/css/site.css create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/favicon.ico create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/js/site.js create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/LICENSE create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/alarm-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/alarm.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/align-bottom.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/align-center.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/align-end.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/align-middle.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/align-start.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/align-top.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/alt.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/app-indicator.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/app.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/archive-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/archive.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-90deg-down.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-90deg-left.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-90deg-right.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-90deg-up.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-bar-down.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-bar-left.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-bar-right.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-bar-up.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-clockwise.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-counterclockwise.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-down-circle-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-down-circle.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-down-left-circle-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-down-left-circle.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-down-left-square-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-down-left-square.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-down-left.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-down-right-circle-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-down-right-circle.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-down-right-square-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-down-right-square.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-down-right.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-down-short.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-down-square-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-down-square.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-down-up.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-down.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-left-circle-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-left-circle.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-left-right.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-left-short.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-left-square-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-left-square.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-left.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-repeat.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-return-left.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-return-right.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-right-circle-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-right-circle.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-right-short.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-right-square-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-right-square.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-right.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-up-circle-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-up-circle.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-up-left-circle-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-up-left-circle.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-up-left-square-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-up-left-square.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-up-left.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-up-right-circle-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-up-right-circle.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-up-right-square-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-up-right-square.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-up-right.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-up-short.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-up-square-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-up-square.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrow-up.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrows-angle-contract.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrows-angle-expand.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrows-collapse.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrows-expand.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrows-fullscreen.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/arrows-move.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/aspect-ratio-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/aspect-ratio.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/asterisk.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/at.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/award-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/award.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/back.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/backspace-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/backspace-reverse-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/backspace-reverse.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/backspace.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/badge-3d-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/badge-3d.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/badge-4k-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/badge-4k.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/badge-8k-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/badge-8k.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/badge-ad-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/badge-ad.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/badge-ar-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/badge-ar.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/badge-cc-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/badge-cc.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/badge-hd-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/badge-hd.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/badge-tm-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/badge-tm.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/badge-vo-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/badge-vo.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/badge-vr-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/badge-vr.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/badge-wc-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/badge-wc.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bag-check-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bag-check.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bag-dash-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bag-dash.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bag-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bag-plus-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bag-plus.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bag-x-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bag-x.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bag.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bank.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bank2.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bar-chart-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bar-chart-line-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bar-chart-line.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bar-chart-steps.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bar-chart.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/basket-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/basket.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/basket2-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/basket2.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/basket3-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/basket3.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/battery-charging.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/battery-full.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/battery-half.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/battery.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bell-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bell-slash-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bell-slash.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bell.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bezier.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bezier2.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bicycle.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/binoculars-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/binoculars.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/blockquote-left.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/blockquote-right.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/book-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/book-half.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/book.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bookmark-check-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bookmark-check.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bookmark-dash-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bookmark-dash.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bookmark-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bookmark-heart-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bookmark-heart.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bookmark-plus-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bookmark-plus.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bookmark-star-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bookmark-star.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bookmark-x-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bookmark-x.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bookmark.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bookmarks-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bookmarks.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bookshelf.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bootstrap-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bootstrap-icons.css create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bootstrap-icons.json create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bootstrap-icons.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bootstrap.css create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bootstrap.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/border-all.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/border-bottom.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/border-center.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/border-inner.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/border-left.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/border-middle.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/border-outer.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/border-right.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/border-style.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/border-top.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/border-width.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/border.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bounding-box-circles.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bounding-box.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/box-arrow-down-left.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/box-arrow-down-right.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/box-arrow-down.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/box-arrow-in-down-left.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/box-arrow-in-down-right.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/box-arrow-in-down.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/box-arrow-in-left.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/box-arrow-in-right.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/box-arrow-in-up-left.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/box-arrow-in-up-right.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/box-arrow-in-up.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/box-arrow-left.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/box-arrow-right.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/box-arrow-up-left.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/box-arrow-up-right.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/box-arrow-up.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/box-seam.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/box.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/braces.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bricks.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/briefcase-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/briefcase.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/brightness-alt-high-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/brightness-alt-high.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/brightness-alt-low-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/brightness-alt-low.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/brightness-high-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/brightness-high.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/brightness-low-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/brightness-low.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/broadcast-pin.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/broadcast.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/brush-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/brush.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bucket-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bucket.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bug-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bug.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/building.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/bullseye.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calculator-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calculator.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar-check-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar-check.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar-date-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar-date.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar-day-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar-day.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar-event-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar-event.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar-minus-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar-minus.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar-month-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar-month.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar-plus-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar-plus.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar-range-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar-range.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar-week-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar-week.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar-x-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar-x.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar2-check-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar2-check.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar2-date-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar2-date.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar2-day-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar2-day.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar2-event-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar2-event.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar2-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar2-minus-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar2-minus.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar2-month-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar2-month.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar2-plus-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar2-plus.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar2-range-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar2-range.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar2-week-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar2-week.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar2-x-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar2-x.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar2.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar3-event-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar3-event.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar3-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar3-range-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar3-range.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar3-week-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar3-week.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar3.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar4-event.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar4-range.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar4-week.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/calendar4.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/camera-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/camera-reels-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/camera-reels.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/camera-video-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/camera-video-off-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/camera-video-off.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/camera-video.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/camera.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/camera2.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/capslock-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/capslock.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/card-checklist.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/card-heading.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/card-image.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/card-list.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/card-text.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/caret-down-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/caret-down-square-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/caret-down-square.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/caret-down.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/caret-left-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/caret-left-square-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/caret-left-square.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/caret-left.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/caret-right-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/caret-right-square-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/caret-right-square.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/caret-right.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/caret-up-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/caret-up-square-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/caret-up-square.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/caret-up.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cart-check-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cart-check.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cart-dash-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cart-dash.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cart-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cart-plus-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cart-plus.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cart-x-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cart-x.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cart.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cart2.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cart3.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cart4.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cash-coin.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cash-stack.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cash.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cast.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chat-dots-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chat-dots.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chat-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chat-left-dots-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chat-left-dots.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chat-left-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chat-left-quote-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chat-left-quote.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chat-left-text-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chat-left-text.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chat-left.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chat-quote-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chat-quote.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chat-right-dots-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chat-right-dots.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chat-right-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chat-right-quote-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chat-right-quote.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chat-right-text-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chat-right-text.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chat-right.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chat-square-dots-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chat-square-dots.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chat-square-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chat-square-quote-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chat-square-quote.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chat-square-text-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chat-square-text.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chat-square.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chat-text-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chat-text.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chat.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/check-all.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/check-circle-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/check-circle.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/check-lg.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/check-square-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/check-square.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/check.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/check2-all.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/check2-circle.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/check2-square.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/check2.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chevron-bar-contract.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chevron-bar-down.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chevron-bar-expand.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chevron-bar-left.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chevron-bar-right.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chevron-bar-up.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chevron-compact-down.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chevron-compact-left.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chevron-compact-right.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chevron-compact-up.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chevron-contract.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chevron-double-down.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chevron-double-left.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chevron-double-right.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chevron-double-up.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chevron-down.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chevron-expand.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chevron-left.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chevron-right.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/chevron-up.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/circle-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/circle-half.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/circle-square.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/circle.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/clipboard-check.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/clipboard-data.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/clipboard-minus.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/clipboard-plus.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/clipboard-x.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/clipboard.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/clock-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/clock-history.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/clock.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-arrow-down-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-arrow-down.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-arrow-up-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-arrow-up.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-check-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-check.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-download-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-download.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-drizzle-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-drizzle.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-fog-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-fog.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-fog2-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-fog2.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-hail-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-hail.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-haze-1.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-haze-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-haze.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-haze2-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-lightning-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-lightning-rain-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-lightning-rain.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-lightning.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-minus-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-minus.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-moon-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-moon.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-plus-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-plus.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-rain-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-rain-heavy-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-rain-heavy.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-rain.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-slash-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-slash.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-sleet-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-sleet.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-snow-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-snow.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-sun-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-sun.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-upload-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud-upload.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloud.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/clouds-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/clouds.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloudy-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cloudy.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/code-slash.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/code-square.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/code.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/coin.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/collection-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/collection-play-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/collection-play.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/collection.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/columns-gap.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/columns.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/command.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/compass-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/compass.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cone-striped.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cone.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/controller.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cpu-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cpu.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/credit-card-2-back-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/credit-card-2-back.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/credit-card-2-front-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/credit-card-2-front.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/credit-card-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/credit-card.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/crop.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cup-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cup-straw.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cup.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/currency-bitcoin.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/currency-dollar.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/currency-euro.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/currency-exchange.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/currency-pound.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/currency-yen.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cursor-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cursor-text.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/cursor.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/dash-circle-dotted.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/dash-circle-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/dash-circle.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/dash-lg.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/dash-square-dotted.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/dash-square-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/dash-square.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/dash.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/diagram-2-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/diagram-2.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/diagram-3-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/diagram-3.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/diamond-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/diamond-half.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/diamond.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/dice-1-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/dice-1.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/dice-2-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/dice-2.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/dice-3-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/dice-3.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/dice-4-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/dice-4.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/dice-5-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/dice-5.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/dice-6-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/dice-6.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/disc-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/disc.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/discord.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/display-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/display.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/distribute-horizontal.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/distribute-vertical.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/door-closed-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/door-closed.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/door-open-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/door-open.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/dot.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/download.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/droplet-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/droplet-half.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/droplet.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/earbuds.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/easel-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/easel.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/egg-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/egg-fried.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/egg.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/eject-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/eject.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/emoji-angry-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/emoji-angry.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/emoji-dizzy-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/emoji-dizzy.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/emoji-expressionless-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/emoji-expressionless.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/emoji-frown-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/emoji-frown.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/emoji-heart-eyes-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/emoji-heart-eyes.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/emoji-laughing-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/emoji-laughing.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/emoji-neutral-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/emoji-neutral.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/emoji-smile-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/emoji-smile-upside-down-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/emoji-smile-upside-down.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/emoji-smile.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/emoji-sunglasses-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/emoji-sunglasses.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/emoji-wink-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/emoji-wink.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/envelope-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/envelope-open-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/envelope-open.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/envelope.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/eraser-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/eraser.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/exclamation-circle-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/exclamation-circle.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/exclamation-diamond-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/exclamation-diamond.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/exclamation-lg.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/exclamation-octagon-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/exclamation-octagon.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/exclamation-square-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/exclamation-square.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/exclamation-triangle-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/exclamation-triangle.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/exclamation.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/exclude.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/eye-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/eye-slash-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/eye-slash.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/eye.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/eyedropper.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/eyeglasses.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/facebook.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-arrow-down-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-arrow-down.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-arrow-up-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-arrow-up.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-bar-graph-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-bar-graph.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-binary-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-binary.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-break-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-break.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-check-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-check.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-code-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-code.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-diff-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-diff.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-arrow-down-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-arrow-down.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-arrow-up-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-arrow-up.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-bar-graph-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-bar-graph.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-binary-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-binary.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-break-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-break.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-check-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-check.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-code-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-code.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-diff-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-diff.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-easel-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-easel.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-excel-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-excel.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-font-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-font.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-image-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-image.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-lock-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-lock.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-lock2-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-lock2.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-medical-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-medical.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-minus-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-minus.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-music-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-music.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-pdf-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-pdf.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-person-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-person.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-play-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-play.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-plus-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-plus.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-post-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-post.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-ppt-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-ppt.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-richtext-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-richtext.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-ruled-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-ruled.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-slides-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-slides.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-spreadsheet-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-spreadsheet.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-text-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-text.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-word-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-word.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-x-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-x.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-zip-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark-zip.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-earmark.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-easel-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-easel.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-excel-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-excel.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-font-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-font.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-image-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-image.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-lock-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-lock.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-lock2-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-lock2.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-medical-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-medical.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-minus-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-minus.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-music-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-music.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-pdf-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-pdf.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-person-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-person.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-play-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-play.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-plus-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-plus.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-post-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-post.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-ppt-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-ppt.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-richtext-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-richtext.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-ruled-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-ruled.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-slides-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-slides.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-spreadsheet-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-spreadsheet.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-text-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-text.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-word-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-word.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-x-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-x.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-zip-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file-zip.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/file.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/files-alt.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/files.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/film.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/filter-circle-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/filter-circle.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/filter-left.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/filter-right.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/filter-square-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/filter-square.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/filter.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/flag-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/flag.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/flower1.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/flower2.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/flower3.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/folder-check.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/folder-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/folder-minus.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/folder-plus.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/folder-symlink-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/folder-symlink.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/folder-x.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/folder.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/folder2-open.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/folder2.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/fonts.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/fonts/bootstrap-icons.woff create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/fonts/bootstrap-icons.woff2 create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/forward-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/forward.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/front.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/fullscreen-exit.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/fullscreen.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/funnel-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/funnel.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/gear-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/gear-wide-connected.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/gear-wide.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/gear.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/gem.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/gender-ambiguous.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/gender-female.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/gender-male.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/gender-trans.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/geo-alt-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/geo-alt.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/geo-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/geo.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/gift-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/gift.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/github.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/globe.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/globe2.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/google.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/graph-down.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/graph-up.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/grid-1x2-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/grid-1x2.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/grid-3x2-gap-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/grid-3x2-gap.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/grid-3x2.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/grid-3x3-gap-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/grid-3x3-gap.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/grid-3x3.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/grid-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/grid.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/grip-horizontal.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/grip-vertical.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/hammer.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/hand-index-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/hand-index-thumb-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/hand-index-thumb.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/hand-index.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/hand-thumbs-down-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/hand-thumbs-down.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/hand-thumbs-up-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/hand-thumbs-up.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/handbag-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/handbag.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/hash.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/hdd-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/hdd-network-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/hdd-network.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/hdd-rack-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/hdd-rack.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/hdd-stack-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/hdd-stack.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/hdd.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/headphones.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/headset-vr.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/headset.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/heart-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/heart-half.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/heart.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/heptagon-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/heptagon-half.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/heptagon.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/hexagon-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/hexagon-half.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/hexagon.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/hourglass-bottom.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/hourglass-split.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/hourglass-top.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/hourglass.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/house-door-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/house-door.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/house-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/house.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/hr.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/hurricane.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/image-alt.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/image-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/image.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/images.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/inbox-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/inbox.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/inboxes-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/inboxes.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/index.html create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/info-circle-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/info-circle.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/info-lg.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/info-square-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/info-square.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/info.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/input-cursor-text.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/input-cursor.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/instagram.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/intersect.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/journal-album.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/journal-arrow-down.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/journal-arrow-up.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/journal-bookmark-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/journal-bookmark.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/journal-check.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/journal-code.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/journal-medical.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/journal-minus.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/journal-plus.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/journal-richtext.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/journal-text.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/journal-x.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/journal.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/journals.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/joystick.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/justify-left.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/justify-right.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/justify.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/kanban-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/kanban.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/key-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/key.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/keyboard-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/keyboard.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/ladder.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/lamp-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/lamp.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/laptop-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/laptop.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/layer-backward.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/layer-forward.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/layers-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/layers-half.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/layers.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/layout-sidebar-inset-reverse.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/layout-sidebar-inset.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/layout-sidebar-reverse.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/layout-sidebar.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/layout-split.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/layout-text-sidebar-reverse.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/layout-text-sidebar.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/layout-text-window-reverse.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/layout-text-window.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/layout-three-columns.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/layout-wtf.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/life-preserver.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/lightbulb-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/lightbulb-off-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/lightbulb-off.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/lightbulb.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/lightning-charge-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/lightning-charge.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/lightning-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/lightning.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/link-45deg.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/link.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/linkedin.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/list-check.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/list-nested.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/list-ol.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/list-stars.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/list-task.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/list-ul.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/list.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/lock-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/lock.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/mailbox.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/mailbox2.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/map-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/map.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/markdown-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/markdown.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/mask.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/mastodon.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/megaphone-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/megaphone.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/menu-app-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/menu-app.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/menu-button-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/menu-button-wide-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/menu-button-wide.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/menu-button.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/menu-down.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/menu-up.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/messenger.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/mic-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/mic-mute-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/mic-mute.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/mic.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/minecart-loaded.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/minecart.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/moisture.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/moon-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/moon-stars-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/moon-stars.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/moon.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/mouse-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/mouse.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/mouse2-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/mouse2.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/mouse3-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/mouse3.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/music-note-beamed.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/music-note-list.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/music-note.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/music-player-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/music-player.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/newspaper.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/node-minus-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/node-minus.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/node-plus-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/node-plus.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/nut-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/nut.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/octagon-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/octagon-half.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/octagon.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/option.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/outlet.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/paint-bucket.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/palette-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/palette.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/palette2.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/paperclip.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/paragraph.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/patch-check-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/patch-check.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/patch-exclamation-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/patch-exclamation.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/patch-minus-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/patch-minus.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/patch-plus-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/patch-plus.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/patch-question-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/patch-question.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/pause-btn-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/pause-btn.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/pause-circle-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/pause-circle.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/pause-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/pause.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/peace-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/peace.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/pen-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/pen.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/pencil-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/pencil-square.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/pencil.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/pentagon-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/pentagon-half.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/pentagon.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/people-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/people.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/percent.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/person-badge-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/person-badge.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/person-bounding-box.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/person-check-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/person-check.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/person-circle.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/person-dash-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/person-dash.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/person-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/person-lines-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/person-plus-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/person-plus.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/person-square.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/person-x-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/person-x.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/person.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/phone-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/phone-landscape-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/phone-landscape.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/phone-vibrate-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/phone-vibrate.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/phone.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/pie-chart-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/pie-chart.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/piggy-bank-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/piggy-bank.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/pin-angle-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/pin-angle.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/pin-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/pin-map-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/pin-map.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/pin.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/pip-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/pip.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/play-btn-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/play-btn.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/play-circle-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/play-circle.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/play-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/play.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/plug-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/plug.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/plus-circle-dotted.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/plus-circle-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/plus-circle.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/plus-lg.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/plus-square-dotted.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/plus-square-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/plus-square.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/plus.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/power.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/printer-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/printer.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/puzzle-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/puzzle.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/question-circle-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/question-circle.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/question-diamond-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/question-diamond.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/question-lg.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/question-octagon-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/question-octagon.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/question-square-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/question-square.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/question.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/rainbow.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/receipt-cutoff.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/receipt.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/reception-0.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/reception-1.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/reception-2.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/reception-3.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/reception-4.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/record-btn-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/record-btn.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/record-circle-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/record-circle.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/record-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/record.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/record2-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/record2.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/recycle.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/reddit.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/reply-all-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/reply-all.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/reply-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/reply.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/rss-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/rss.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/rulers.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/safe-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/safe.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/safe2-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/safe2.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/save-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/save.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/save2-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/save2.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/scissors.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/screwdriver.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/sd-card-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/sd-card.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/search.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/segmented-nav.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/server.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/share-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/share.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/shield-check.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/shield-exclamation.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/shield-fill-check.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/shield-fill-exclamation.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/shield-fill-minus.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/shield-fill-plus.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/shield-fill-x.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/shield-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/shield-lock-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/shield-lock.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/shield-minus.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/shield-plus.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/shield-shaded.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/shield-slash-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/shield-slash.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/shield-x.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/shield.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/shift-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/shift.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/shop-window.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/shop.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/shuffle.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/signpost-2-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/signpost-2.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/signpost-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/signpost-split-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/signpost-split.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/signpost.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/sim-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/sim.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/skip-backward-btn-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/skip-backward-btn.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/skip-backward-circle-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/skip-backward-circle.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/skip-backward-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/skip-backward.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/skip-end-btn-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/skip-end-btn.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/skip-end-circle-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/skip-end-circle.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/skip-end-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/skip-end.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/skip-forward-btn-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/skip-forward-btn.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/skip-forward-circle-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/skip-forward-circle.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/skip-forward-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/skip-forward.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/skip-start-btn-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/skip-start-btn.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/skip-start-circle-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/skip-start-circle.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/skip-start-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/skip-start.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/skype.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/slack.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/slash-circle-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/slash-circle.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/slash-lg.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/slash-square-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/slash-square.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/slash.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/sliders.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/smartwatch.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/snow.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/snow2.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/snow3.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/sort-alpha-down-alt.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/sort-alpha-down.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/sort-alpha-up-alt.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/sort-alpha-up.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/sort-down-alt.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/sort-down.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/sort-numeric-down-alt.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/sort-numeric-down.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/sort-numeric-up-alt.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/sort-numeric-up.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/sort-up-alt.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/sort-up.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/soundwave.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/speaker-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/speaker.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/speedometer.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/speedometer2.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/spellcheck.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/square-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/square-half.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/square.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/stack.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/star-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/star-half.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/star.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/stars.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/stickies-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/stickies.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/sticky-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/sticky.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/stop-btn-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/stop-btn.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/stop-circle-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/stop-circle.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/stop-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/stop.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/stoplights-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/stoplights.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/stopwatch-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/stopwatch.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/subtract.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/suit-club-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/suit-club.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/suit-diamond-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/suit-diamond.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/suit-heart-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/suit-heart.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/suit-spade-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/suit-spade.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/sun-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/sun.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/sunglasses.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/sunrise-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/sunrise.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/sunset-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/sunset.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/symmetry-horizontal.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/symmetry-vertical.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/table.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/tablet-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/tablet-landscape-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/tablet-landscape.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/tablet.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/tag-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/tag.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/tags-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/tags.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/telegram.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/telephone-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/telephone-forward-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/telephone-forward.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/telephone-inbound-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/telephone-inbound.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/telephone-minus-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/telephone-minus.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/telephone-outbound-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/telephone-outbound.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/telephone-plus-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/telephone-plus.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/telephone-x-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/telephone-x.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/telephone.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/terminal-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/terminal.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/text-center.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/text-indent-left.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/text-indent-right.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/text-left.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/text-paragraph.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/text-right.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/textarea-resize.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/textarea-t.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/textarea.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/thermometer-half.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/thermometer-high.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/thermometer-low.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/thermometer-snow.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/thermometer-sun.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/thermometer.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/three-dots-vertical.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/three-dots.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/toggle-off.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/toggle-on.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/toggle2-off.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/toggle2-on.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/toggles.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/toggles2.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/tools.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/tornado.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/translate.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/trash-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/trash.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/trash2-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/trash2.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/tree-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/tree.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/triangle-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/triangle-half.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/triangle.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/trophy-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/trophy.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/tropical-storm.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/truck-flatbed.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/truck.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/tsunami.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/tv-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/tv.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/twitch.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/twitter.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/type-bold.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/type-h1.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/type-h2.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/type-h3.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/type-italic.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/type-strikethrough.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/type-underline.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/type.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/ui-checks-grid.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/ui-checks.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/ui-radios-grid.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/ui-radios.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/umbrella-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/umbrella.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/union.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/unlock-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/unlock.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/upc-scan.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/upc.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/upload.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/vector-pen.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/view-list.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/view-stacked.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/vinyl-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/vinyl.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/voicemail.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/volume-down-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/volume-down.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/volume-mute-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/volume-mute.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/volume-off-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/volume-off.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/volume-up-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/volume-up.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/vr.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/wallet-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/wallet.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/wallet2.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/watch.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/water.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/whatsapp.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/wifi-1.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/wifi-2.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/wifi-off.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/wifi.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/wind.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/window-dock.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/window-sidebar.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/window.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/wrench.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/x-circle-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/x-circle.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/x-diamond-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/x-diamond.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/x-lg.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/x-octagon-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/x-octagon.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/x-square-fill.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/x-square.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/x.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/youtube.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/zoom-in.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/css/zoom-out.svg create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/bootstrap/dist/js/bootstrap.js create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/jquery/LICENSE.txt create mode 100644 aspnetcore/fundamentals/localization/sample/8.x/POLocalization/wwwroot/lib/jquery/dist/jquery.js diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Controllers/AboutController.cs b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Controllers/AboutController.cs new file mode 100644 index 000000000000..ba0f91e85aea --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Controllers/AboutController.cs @@ -0,0 +1,21 @@ +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Localization; + +namespace Localization.Controllers; + +[Route("api/[controller]")] +public class AboutController : Controller +{ + private readonly IStringLocalizer _localizer; + + public AboutController(IStringLocalizer localizer) + { + _localizer = localizer; + } + + [HttpGet] + public string Get() + { + return _localizer["About Title"]; + } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Controllers/AccountController.cs b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Controllers/AccountController.cs new file mode 100644 index 000000000000..bf3185ea2932 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Controllers/AccountController.cs @@ -0,0 +1,468 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Security.Claims; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Identity; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.Rendering; +using Microsoft.Extensions.Logging; +using Localization.Models; +using Localization.Services; +using Localization.ViewModels.Account; + +namespace Localization.Controllers +{ + [Authorize] + public class AccountController : Controller + { + private readonly UserManager _userManager; + private readonly SignInManager _signInManager; + private readonly IEmailSender _emailSender; + private readonly ISmsSender _smsSender; + private readonly ILogger _logger; + + public AccountController( + UserManager userManager, + SignInManager signInManager, + IEmailSender emailSender, + ISmsSender smsSender, + ILoggerFactory loggerFactory) + { + _userManager = userManager; + _signInManager = signInManager; + _emailSender = emailSender; + _smsSender = smsSender; + _logger = loggerFactory.CreateLogger(); + } + + // + // GET: /Account/Login + [HttpGet] + [AllowAnonymous] + public IActionResult Login(string returnUrl = null) + { + ViewData["ReturnUrl"] = returnUrl; + return View(); + } + + // + // POST: /Account/Login + [HttpPost] + [AllowAnonymous] + [ValidateAntiForgeryToken] + public async Task Login(LoginViewModel model, string returnUrl = null) + { + ViewData["ReturnUrl"] = returnUrl; + if (ModelState.IsValid) + { + // This doesn't count login failures towards account lockout + // To enable password failures to trigger account lockout, set lockoutOnFailure: true + var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure: false); + if (result.Succeeded) + { + _logger.LogInformation(1, "User logged in."); + return RedirectToLocal(returnUrl); + } + if (result.RequiresTwoFactor) + { + return RedirectToAction(nameof(SendCode), new { ReturnUrl = returnUrl, RememberMe = model.RememberMe }); + } + if (result.IsLockedOut) + { + _logger.LogWarning(2, "User account locked out."); + return View("Lockout"); + } + else + { + ModelState.AddModelError(string.Empty, "Invalid login attempt."); + return View(model); + } + } + + // If we got this far, something failed, redisplay form + return View(model); + } + + // + // GET: /Account/Register + [HttpGet] + [AllowAnonymous] + public IActionResult Register(string returnUrl = null) + { + ViewData["ReturnUrl"] = returnUrl; + return View(); + } + + // + // POST: /Account/Register + [HttpPost] + [AllowAnonymous] + [ValidateAntiForgeryToken] + public async Task Register(RegisterViewModel model, string returnUrl = null) + { + ViewData["ReturnUrl"] = returnUrl; + if (ModelState.IsValid) + { + var user = new ApplicationUser { UserName = model.Email, Email = model.Email }; + var result = await _userManager.CreateAsync(user, model.Password); + if (result.Succeeded) + { + // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=532713 + // Send an email with this link + //var code = await _userManager.GenerateEmailConfirmationTokenAsync(user); + //var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: HttpContext.Request.Scheme); + //await _emailSender.SendEmailAsync(model.Email, "Confirm your account", + // $"Please confirm your account by clicking this link: link"); + await _signInManager.SignInAsync(user, isPersistent: false); + _logger.LogInformation(3, "User created a new account with password."); + return RedirectToLocal(returnUrl); + } + AddErrors(result); + } + + // If we got this far, something failed, redisplay form + return View(model); + } + + // + // POST: /Account/LogOff + [HttpPost] + [ValidateAntiForgeryToken] + public async Task LogOff() + { + await _signInManager.SignOutAsync(); + _logger.LogInformation(4, "User logged out."); + return RedirectToAction(nameof(HomeController.Index), "Home"); + } + + // + // POST: /Account/ExternalLogin + [HttpPost] + [AllowAnonymous] + [ValidateAntiForgeryToken] + public IActionResult ExternalLogin(string provider, string returnUrl = null) + { + // Request a redirect to the external login provider. + var redirectUrl = Url.Action("ExternalLoginCallback", "Account", new { ReturnUrl = returnUrl }); + var properties = _signInManager.ConfigureExternalAuthenticationProperties(provider, redirectUrl); + return Challenge(properties, provider); + } + + // + // GET: /Account/ExternalLoginCallback + [HttpGet] + [AllowAnonymous] + public async Task ExternalLoginCallback(string returnUrl = null, string remoteError = null) + { + if (remoteError != null) + { + ModelState.AddModelError(string.Empty, $"Error from external provider: {remoteError}"); + return View(nameof(Login)); + } + var info = await _signInManager.GetExternalLoginInfoAsync(); + if (info == null) + { + return RedirectToAction(nameof(Login)); + } + + // Sign in the user with this external login provider if the user already has a login. + var result = await _signInManager.ExternalLoginSignInAsync(info.LoginProvider, info.ProviderKey, isPersistent: false); + if (result.Succeeded) + { + _logger.LogInformation(5, "User logged in with {Name} provider.", info.LoginProvider); + return RedirectToLocal(returnUrl); + } + if (result.RequiresTwoFactor) + { + return RedirectToAction(nameof(SendCode), new { ReturnUrl = returnUrl }); + } + if (result.IsLockedOut) + { + return View("Lockout"); + } + else + { + // If the user does not have an account, then ask the user to create an account. + ViewData["ReturnUrl"] = returnUrl; + ViewData["LoginProvider"] = info.LoginProvider; + var email = info.Principal.FindFirstValue(ClaimTypes.Email); + return View("ExternalLoginConfirmation", new ExternalLoginConfirmationViewModel { Email = email }); + } + } + + // + // POST: /Account/ExternalLoginConfirmation + [HttpPost] + [AllowAnonymous] + [ValidateAntiForgeryToken] + public async Task ExternalLoginConfirmation(ExternalLoginConfirmationViewModel model, string returnUrl = null) + { + if (ModelState.IsValid) + { + // Get the information about the user from the external login provider + var info = await _signInManager.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, info); + if (result.Succeeded) + { + await _signInManager.SignInAsync(user, isPersistent: false); + _logger.LogInformation(6, "User created an account using {Name} provider.", info.LoginProvider); + return RedirectToLocal(returnUrl); + } + } + AddErrors(result); + } + + ViewData["ReturnUrl"] = returnUrl; + return View(model); + } + + // GET: /Account/ConfirmEmail + [HttpGet] + [AllowAnonymous] + public async Task ConfirmEmail(string userId, string code) + { + if (userId == null || code == null) + { + return View("Error"); + } + var user = await _userManager.FindByIdAsync(userId); + if (user == null) + { + return View("Error"); + } + var result = await _userManager.ConfirmEmailAsync(user, code); + return View(result.Succeeded ? "ConfirmEmail" : "Error"); + } + + // + // GET: /Account/ForgotPassword + [HttpGet] + [AllowAnonymous] + public IActionResult 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))) + { + // 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=532713 + // Send an email with this link + //var code = await _userManager.GeneratePasswordResetTokenAsync(user); + //var callbackUrl = Url.Action("ResetPassword", "Account", new { userId = user.Id, code = code }, protocol: HttpContext.Request.Scheme); + //await _emailSender.SendEmailAsync(model.Email, "Reset Password", + // $"Please reset your password by clicking here: link"); + //return View("ForgotPasswordConfirmation"); + } + + // If we got this far, something failed, redisplay form + return View(model); + } + + // + // GET: /Account/ForgotPasswordConfirmation + [HttpGet] + [AllowAnonymous] + public IActionResult ForgotPasswordConfirmation() + { + return View(); + } + + // + // GET: /Account/ResetPassword + [HttpGet] + [AllowAnonymous] + public IActionResult ResetPassword(string code = null) + { + 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(nameof(AccountController.ResetPasswordConfirmation), "Account"); + } + var result = await _userManager.ResetPasswordAsync(user, model.Code, model.Password); + if (result.Succeeded) + { + return RedirectToAction(nameof(AccountController.ResetPasswordConfirmation), "Account"); + } + AddErrors(result); + return View(); + } + + // + // GET: /Account/ResetPasswordConfirmation + [HttpGet] + [AllowAnonymous] + public IActionResult ResetPasswordConfirmation() + { + return View(); + } + + // + // GET: /Account/SendCode + [HttpGet] + [AllowAnonymous] + public async Task SendCode(string returnUrl = null, bool rememberMe = false) + { + var user = await _signInManager.GetTwoFactorAuthenticationUserAsync(); + if (user == null) + { + return View("Error"); + } + var userFactors = await _userManager.GetValidTwoFactorProvidersAsync(user); + 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(); + } + + var user = await _signInManager.GetTwoFactorAuthenticationUserAsync(); + if (user == null) + { + return View("Error"); + } + + // Generate the token and send it + var code = await _userManager.GenerateTwoFactorTokenAsync(user, model.SelectedProvider); + if (string.IsNullOrWhiteSpace(code)) + { + return View("Error"); + } + + var message = "Your security code is: " + code; + if (model.SelectedProvider == "Email") + { + await _emailSender.SendEmailAsync(await _userManager.GetEmailAsync(user), "Security Code", message); + } + else if (model.SelectedProvider == "Phone") + { + await _smsSender.SendSmsAsync(await _userManager.GetPhoneNumberAsync(user), message); + } + + return RedirectToAction(nameof(VerifyCode), new { Provider = model.SelectedProvider, ReturnUrl = model.ReturnUrl, RememberMe = model.RememberMe }); + } + + // + // GET: /Account/VerifyCode + [HttpGet] + [AllowAnonymous] + public async Task VerifyCode(string provider, bool rememberMe, string returnUrl = null) + { + // Require that the user has already logged in via username/password or external login + var user = await _signInManager.GetTwoFactorAuthenticationUserAsync(); + if (user == null) + { + 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. + var result = await _signInManager.TwoFactorSignInAsync(model.Provider, model.Code, model.RememberMe, model.RememberBrowser); + if (result.Succeeded) + { + return RedirectToLocal(model.ReturnUrl); + } + if (result.IsLockedOut) + { + _logger.LogWarning(7, "User account locked out."); + return View("Lockout"); + } + else + { + ModelState.AddModelError(string.Empty, "Invalid code."); + return View(model); + } + } + + #region Helpers + + private void AddErrors(IdentityResult result) + { + foreach (var error in result.Errors) + { + ModelState.AddModelError(string.Empty, error.Description); + } + } + + private Task GetCurrentUserAsync() + { + return _userManager.GetUserAsync(HttpContext.User); + } + + private IActionResult RedirectToLocal(string returnUrl) + { + if (Url.IsLocalUrl(returnUrl)) + { + return Redirect(returnUrl); + } + else + { + return RedirectToAction(nameof(HomeController.Index), "Home"); + } + } + + #endregion + } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Controllers/BookController.cs b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Controllers/BookController.cs new file mode 100644 index 000000000000..11577232863e --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Controllers/BookController.cs @@ -0,0 +1,66 @@ +using System; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Localization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.Localization; + +namespace Localization.Controllers; + +public class BookController : Controller +{ + private readonly IHtmlLocalizer _localizer; + + public BookController(IHtmlLocalizer localizer) + { + _localizer = localizer; + } + + public IActionResult Hello(string name) + { + ViewData["Message"] = _localizer["Hello {0}", name]; + + return View(); + } + + public IActionResult Index() + { + return View(); + } + + // Pass the requestCultureFeature and requestCulture objects to the view + // so we can get Culture/UICulture information. + + public IActionResult About() + { + IRequestCultureFeature requestCultureFeature = HttpContext.Features.Get(); + RequestCulture requestCulture = requestCultureFeature.RequestCulture; + ViewData["requestCultureFeature"] = requestCultureFeature; + ViewData["requestCulture"] = requestCulture; + ViewData["Message"] = _localizer["Your application description page."]; + + return View(); + } + + public IActionResult Contact() + { + ViewData["Message"] = _localizer["Your contact page."]; + return View(); + } + + [HttpPost] + public IActionResult SetLanguage(string culture, string returnUrl) + { + Response.Cookies.Append( + CookieRequestCultureProvider.DefaultCookieName, + CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture)), + new CookieOptions { Expires = DateTimeOffset.UtcNow.AddYears(1) } + ); + + return LocalRedirect(returnUrl); + } + + public IActionResult Error() + { + return View(); + } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Controllers/HomeController.cs b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Controllers/HomeController.cs new file mode 100644 index 000000000000..10c063618fb5 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Controllers/HomeController.cs @@ -0,0 +1,74 @@ +using System; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Localization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Localization; + +namespace Localization.Controllers +{ + public class HomeController : Controller + { + private readonly IStringLocalizer _localizer; + + public HomeController(IStringLocalizer localizer) + { + _localizer = localizer; + } + + public IActionResult Index() + { + return View(); + } + + public IActionResult About() + { + ViewData["Message"] = _localizer["Your application description page."]; + + return View(); + } + + public IActionResult About2() + { + ViewData["Message"] = _localizer["Your application description page."]; + + return View(); + } + + public IActionResult SetCulture(string id="en") + { + string culture = id; + Response.Cookies.Append( + CookieRequestCultureProvider.DefaultCookieName, + CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture)), + new CookieOptions { Expires = DateTimeOffset.UtcNow.AddYears(1) } + ); + + ViewData["Message"] = "Culture set to " + culture; + + return View("About"); + } + + public IActionResult Contact() + { + ViewData["Message"] = _localizer["Your contact page."]; + return View(); + } + + [HttpPost] + public IActionResult SetLanguage(string culture, string returnUrl) + { + Response.Cookies.Append( + CookieRequestCultureProvider.DefaultCookieName, + CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture)), + new CookieOptions { Expires = DateTimeOffset.UtcNow.AddYears(1) } + ); + + return LocalRedirect(returnUrl); + } + + public IActionResult Error() + { + return View(); + } + } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Controllers/InfoController.cs b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Controllers/InfoController.cs new file mode 100644 index 000000000000..275c1f75f238 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Controllers/InfoController.cs @@ -0,0 +1,70 @@ +using System; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Localization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Localization; + +namespace Localization.Controllers; + +// +public class InfoController : Controller +{ + private readonly IStringLocalizer _localizer; + private readonly IStringLocalizer _sharedLocalizer; + + public InfoController(IStringLocalizer localizer, + IStringLocalizer sharedLocalizer) + { + _localizer = localizer; + _sharedLocalizer = sharedLocalizer; + } + + public string TestLoc() + { + string msg = "Shared resx: " + _sharedLocalizer["Hello!"] + + " Info resx " + _localizer["Hello!"]; + return msg; + } + // + + public IActionResult Index() + { + return View(); + } + + public IActionResult About() + { + ViewData["Message"] = _sharedLocalizer["Your application description page."]; + + return View(); + } + + public IActionResult Contact() + { + ViewData["Message"] = _sharedLocalizer["Your contact page."]; + return View(); + } + + [HttpPost] + public IActionResult SetLanguage(string culture, string returnUrl) + { + Response.Cookies.Append( + CookieRequestCultureProvider.DefaultCookieName, + CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture)), + new CookieOptions { Expires = DateTimeOffset.UtcNow.AddYears(1) } + ); + + return LocalRedirect(returnUrl); + } + + public IActionResult Error() + { + return View(); + } +} + + +public class SharedResource +{ +} + diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Controllers/ManageController.cs b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Controllers/ManageController.cs new file mode 100644 index 000000000000..fcb8fdf295c6 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Controllers/ManageController.cs @@ -0,0 +1,348 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Security.Claims; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Identity; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; +using Localization.Models; +using Localization.Services; +using Localization.ViewModels.Manage; + +namespace Localization.Controllers +{ + [Authorize] + public class ManageController : Controller + { + private readonly UserManager _userManager; + private readonly SignInManager _signInManager; + private readonly IEmailSender _emailSender; + private readonly ISmsSender _smsSender; + private readonly ILogger _logger; + + public ManageController( + UserManager userManager, + SignInManager signInManager, + IEmailSender emailSender, + ISmsSender smsSender, + ILoggerFactory loggerFactory) + { + _userManager = userManager; + _signInManager = signInManager; + _emailSender = emailSender; + _smsSender = smsSender; + _logger = loggerFactory.CreateLogger(); + } + + // + // GET: /Manage/Index + [HttpGet] + public async Task Index(ManageMessageId? message = null) + { + ViewData["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 user = await GetCurrentUserAsync(); + var model = new IndexViewModel + { + HasPassword = await _userManager.HasPasswordAsync(user), + PhoneNumber = await _userManager.GetPhoneNumberAsync(user), + TwoFactor = await _userManager.GetTwoFactorEnabledAsync(user), + Logins = await _userManager.GetLoginsAsync(user), + BrowserRemembered = await _signInManager.IsTwoFactorClientRememberedAsync(user) + }; + return View(model); + } + + // + // POST: /Manage/RemoveLogin + [HttpPost] + [ValidateAntiForgeryToken] + public async Task RemoveLogin(RemoveLoginViewModel account) + { + ManageMessageId? message = ManageMessageId.Error; + var user = await GetCurrentUserAsync(); + if (user != null) + { + var result = await _userManager.RemoveLoginAsync(user, account.LoginProvider, account.ProviderKey); + if (result.Succeeded) + { + await _signInManager.SignInAsync(user, isPersistent: false); + message = ManageMessageId.RemoveLoginSuccess; + } + } + return RedirectToAction(nameof(ManageLogins), new { Message = message }); + } + + // + // GET: /Manage/AddPhoneNumber + public IActionResult 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 user = await GetCurrentUserAsync(); + var code = await _userManager.GenerateChangePhoneNumberTokenAsync(user, model.PhoneNumber); + await _smsSender.SendSmsAsync(model.PhoneNumber, "Your security code is: " + code); + return RedirectToAction(nameof(VerifyPhoneNumber), new { PhoneNumber = model.PhoneNumber }); + } + + // + // POST: /Manage/EnableTwoFactorAuthentication + [HttpPost] + [ValidateAntiForgeryToken] + public async Task EnableTwoFactorAuthentication() + { + var user = await GetCurrentUserAsync(); + if (user != null) + { + await _userManager.SetTwoFactorEnabledAsync(user, true); + await _signInManager.SignInAsync(user, isPersistent: false); + _logger.LogInformation(1, "User enabled two-factor authentication."); + } + return RedirectToAction(nameof(Index), "Manage"); + } + + // + // POST: /Manage/DisableTwoFactorAuthentication + [HttpPost] + [ValidateAntiForgeryToken] + public async Task DisableTwoFactorAuthentication() + { + var user = await GetCurrentUserAsync(); + if (user != null) + { + await _userManager.SetTwoFactorEnabledAsync(user, false); + await _signInManager.SignInAsync(user, isPersistent: false); + _logger.LogInformation(2, "User disabled two-factor authentication."); + } + return RedirectToAction(nameof(Index), "Manage"); + } + + // + // GET: /Manage/VerifyPhoneNumber + [HttpGet] + public async Task VerifyPhoneNumber(string phoneNumber) + { + var code = await _userManager.GenerateChangePhoneNumberTokenAsync(await GetCurrentUserAsync(), phoneNumber); + // Send an SMS 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 user = await GetCurrentUserAsync(); + if (user != null) + { + var result = await _userManager.ChangePhoneNumberAsync(user, model.PhoneNumber, model.Code); + if (result.Succeeded) + { + await _signInManager.SignInAsync(user, isPersistent: false); + return RedirectToAction(nameof(Index), new { Message = ManageMessageId.AddPhoneSuccess }); + } + } + // If we got this far, something failed, redisplay the form + ModelState.AddModelError(string.Empty, "Failed to verify phone number"); + return View(model); + } + + // + // GET: /Manage/RemovePhoneNumber + [HttpGet] + public async Task RemovePhoneNumber() + { + var user = await GetCurrentUserAsync(); + if (user != null) + { + var result = await _userManager.SetPhoneNumberAsync(user, null); + if (result.Succeeded) + { + await _signInManager.SignInAsync(user, isPersistent: false); + return RedirectToAction(nameof(Index), new { Message = ManageMessageId.RemovePhoneSuccess }); + } + } + return RedirectToAction(nameof(Index), new { Message = ManageMessageId.Error }); + } + + // + // GET: /Manage/ChangePassword + [HttpGet] + public IActionResult ChangePassword() + { + return View(); + } + + // + // POST: /Manage/ChangePassword + [HttpPost] + [ValidateAntiForgeryToken] + public async Task ChangePassword(ChangePasswordViewModel model) + { + if (!ModelState.IsValid) + { + return View(model); + } + var user = await GetCurrentUserAsync(); + if (user != null) + { + var result = await _userManager.ChangePasswordAsync(user, model.OldPassword, model.NewPassword); + if (result.Succeeded) + { + await _signInManager.SignInAsync(user, isPersistent: false); + _logger.LogInformation(3, "User changed their password successfully."); + return RedirectToAction(nameof(Index), new { Message = ManageMessageId.ChangePasswordSuccess }); + } + AddErrors(result); + return View(model); + } + return RedirectToAction(nameof(Index), new { Message = ManageMessageId.Error }); + } + + // + // GET: /Manage/SetPassword + [HttpGet] + public IActionResult SetPassword() + { + return View(); + } + + // + // POST: /Manage/SetPassword + [HttpPost] + [ValidateAntiForgeryToken] + public async Task SetPassword(SetPasswordViewModel model) + { + if (!ModelState.IsValid) + { + return View(model); + } + + var user = await GetCurrentUserAsync(); + if (user != null) + { + var result = await _userManager.AddPasswordAsync(user, model.NewPassword); + if (result.Succeeded) + { + await _signInManager.SignInAsync(user, isPersistent: false); + return RedirectToAction(nameof(Index), new { Message = ManageMessageId.SetPasswordSuccess }); + } + AddErrors(result); + return View(model); + } + return RedirectToAction(nameof(Index), new { Message = ManageMessageId.Error }); + } + + //GET: /Manage/ManageLogins + [HttpGet] + public async Task ManageLogins(ManageMessageId? message = null) + { + ViewData["StatusMessage"] = + message == ManageMessageId.RemoveLoginSuccess ? "The external login was removed." + : message == ManageMessageId.AddLoginSuccess ? "The external login was added." + : message == ManageMessageId.Error ? "An error has occurred." + : ""; + var user = await GetCurrentUserAsync(); + if (user == null) + { + return View("Error"); + } + var userLogins = await _userManager.GetLoginsAsync(user); + var schemes = await _signInManager.GetExternalAuthenticationSchemesAsync(); + var otherLogins = schemes.Where(auth => userLogins.All(ul => auth.Name != ul.LoginProvider)).ToList(); + ViewData["ShowRemoveButton"] = user.PasswordHash != null || userLogins.Count > 1; + return View(new ManageLoginsViewModel + { + CurrentLogins = userLogins, + OtherLogins = otherLogins + }); + } + + // + // POST: /Manage/LinkLogin + [HttpPost] + [ValidateAntiForgeryToken] + public IActionResult LinkLogin(string provider) + { + // Request a redirect to the external login provider to link a login for the current user + var redirectUrl = Url.Action("LinkLoginCallback", "Manage"); + var properties = _signInManager.ConfigureExternalAuthenticationProperties(provider, redirectUrl, _userManager.GetUserId(User)); + return new ChallengeResult(provider, properties); + } + + // + // GET: /Manage/LinkLoginCallback + [HttpGet] + public async Task LinkLoginCallback() + { + var user = await GetCurrentUserAsync(); + if (user == null) + { + return View("Error"); + } + var info = await _signInManager.GetExternalLoginInfoAsync(_userManager.GetUserId(User)); + if (info == null) + { + return RedirectToAction(nameof(ManageLogins), new { Message = ManageMessageId.Error }); + } + var result = await _userManager.AddLoginAsync(user, info); + var message = result.Succeeded ? ManageMessageId.AddLoginSuccess : ManageMessageId.Error; + return RedirectToAction(nameof(ManageLogins), new { Message = message }); + } + +// + + private void AddErrors(IdentityResult result) + { + foreach (var error in result.Errors) + { + ModelState.AddModelError(string.Empty, error.Description); + } + } + + public enum ManageMessageId + { + AddPhoneSuccess, + AddLoginSuccess, + ChangePasswordSuccess, + SetTwoFactorSuccess, + SetPasswordSuccess, + RemoveLoginSuccess, + RemovePhoneSuccess, + Error + } + + private async Task GetCurrentUserAsync() + { + return await _userManager.FindByIdAsync(_userManager.GetUserId(User)); + } + +// + } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Controllers/TestController.cs b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Controllers/TestController.cs new file mode 100644 index 000000000000..6d12ed8825c8 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Controllers/TestController.cs @@ -0,0 +1,51 @@ +using System.Reflection; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Localization; + +namespace Localization.Controllers; + +// +public class TestController : Controller +{ + private readonly IStringLocalizer _localizer; + private readonly IStringLocalizer _localizer2; + + public TestController(IStringLocalizerFactory factory) + { + var type = typeof(SharedResource); + var assemblyName = new AssemblyName(type.GetTypeInfo().Assembly.FullName); + _localizer = factory.Create(type); + _localizer2 = factory.Create("SharedResource", assemblyName.Name); + } + + public IActionResult About() + { + ViewData["Message"] = _localizer["Your application description page."] + + " loc 2: " + _localizer2["Your application description page."]; + + return View(); + } + // + public IActionResult Contact() + { + ViewData["Message"] = _localizer["Your contact page."] + + " shared 2: " + _localizer2["Your contact page."]; + return View(); + } + + public IActionResult Hello(string name) + { + ViewData["Message"] = _localizer["Hello {0}", name]; + + return View(); + } + public IActionResult Index() + { + return View(); + } + + public IActionResult Error() + { + return View(); + } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Localization.csproj b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Localization.csproj new file mode 100644 index 000000000000..c59a544261ff --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Localization.csproj @@ -0,0 +1,14 @@ + + + + net8.0 + + + + + + + + + + diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Models/ApplicationDbContext.cs b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Models/ApplicationDbContext.cs new file mode 100644 index 000000000000..83e9093d6f40 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Models/ApplicationDbContext.cs @@ -0,0 +1,21 @@ +using Microsoft.AspNetCore.Identity.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; + +namespace Localization.Models +{ + public class ApplicationDbContext : IdentityDbContext + { + public ApplicationDbContext(DbContextOptions options) + : base(options) + { + } + + protected override void OnModelCreating(ModelBuilder builder) + { + base.OnModelCreating(builder); + // Customize the ASP.NET Core Identity model and override the defaults if needed. + // For example, you can rename the ASP.NET Core Identity table names and more. + // Add your customizations after calling base.OnModelCreating(builder); + } + } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Models/ApplicationUser.cs b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Models/ApplicationUser.cs new file mode 100644 index 000000000000..10ff89cec308 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Models/ApplicationUser.cs @@ -0,0 +1,10 @@ +using Microsoft.AspNetCore.Identity; +using Microsoft.AspNetCore.Identity.EntityFrameworkCore; + +namespace Localization.Models +{ + // Add profile data for application users by adding properties to the ApplicationUser class + public class ApplicationUser : IdentityUser + { + } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Program.cs b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Program.cs new file mode 100644 index 000000000000..26f97119b026 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Program.cs @@ -0,0 +1,84 @@ +using Localization.Models; +using Localization.Services; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Identity; +using Microsoft.AspNetCore.Mvc.Razor; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Options; + +var builder = WebApplication.CreateBuilder(args); + +builder.Services.AddDbContext(options => +{ + options.UseSqlServer(builder.Configuration["Data:DefaultConnection:ConnectionString"]); +}); + +builder.Services.AddDatabaseDeveloperPageExceptionFilter(); + +builder.Services.AddIdentity() + .AddEntityFrameworkStores() + .AddDefaultTokenProviders(); + +// +builder.Services.AddLocalization(options => options.ResourcesPath = "Resources"); + +builder.Services.AddMvc() + .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix) + .AddDataAnnotationsLocalization(); +// + +builder.Services.AddTransient(); +builder.Services.AddTransient(); + +// +builder.Services.Configure(options => +{ + var supportedCultures = new[] { "en-US", "fr" }; + options.SetDefaultCulture(supportedCultures[0]) + .AddSupportedCultures(supportedCultures) + .AddSupportedUICultures(supportedCultures); +}); +// + +var app = builder.Build(); + +if (app.Environment.IsDevelopment()) +{ + app.UseDeveloperExceptionPage(); +} +else +{ + app.UseExceptionHandler("/Error"); + + // For more information on applying migrations at runtime, see: + // https://docs.microsoft.com/ef/core/managing-schemas/migrations/applying#apply-migrations-at-runtime + try + { + using var serviceScope = app.Services.GetRequiredService().CreateScope(); + serviceScope.ServiceProvider.GetService().Database.Migrate(); + } + catch + { + } +} + +app.UseHttpsRedirection(); +app.UseStaticFiles(); +app.UseRouting(); + +// +var localizationOptions = app.Services.GetService>(); +app.UseRequestLocalization(localizationOptions.Value); +// + +app.UseAuthentication(); +app.UseAuthorization(); + +app.UseEndpoints(endpoints => +{ + endpoints.MapControllerRoute(name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); +}); + +app.Run(); diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Controllers.AboutController.fr.resx b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Controllers.AboutController.fr.resx new file mode 100644 index 000000000000..c704f3bd3bef --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Controllers.AboutController.fr.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + localized about title + + diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Controllers.BookController.fr.resx b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Controllers.BookController.fr.resx new file mode 100644 index 000000000000..260dd3ebe90c --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Controllers.BookController.fr.resx @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + <b>Ola</b><i> {0}</i> + + + Votre page de description de l'application . <b>app descript pg</b><i> \Resources\Controllers.BookController.fr.resx</i> + + + Votre page de contact . contact page \Resources\Controllers.BookController.fr.resx + + diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Controllers.TestController.fr.resx b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Controllers.TestController.fr.resx new file mode 100644 index 000000000000..7c0a7d903524 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Controllers.TestController.fr.resx @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + <b>Ola</b><i> {0}</i> + + + Votre page de description de l'application . <b>app descript pg</b><i> \Resources\Controllers.TestController.fr.resx</i> + + + Votre page de contact . contact page \Resources\Controllers.TestController.fr.resx + + diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Controllers/HomeController.fr.resx b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Controllers/HomeController.fr.resx new file mode 100644 index 000000000000..062c173f7260 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Controllers/HomeController.fr.resx @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + Ola from controllers\homecontroller.fr + + + Votre page de description de l'application . descript \Resources\Controllers\HomeController.fr.resx + + + Votre page de contact . contact page \Resources\Controllers\HomeController.fr.resx + + diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Controllers/InfoController.fr.resx b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Controllers/InfoController.fr.resx new file mode 100644 index 000000000000..c0b729addfc1 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Controllers/InfoController.fr.resx @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + Ola from controllers\zEBRAcontroller.fr + + + Votre page de description de l'application . descript \Resources\ controllers\zEBRAcontroller.fr + + + Votre page de contact . contact page \Resources\ controllers\zEBRAcontroller.fr + + diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/LocSample.SharedResource.fr.resx b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/LocSample.SharedResource.fr.resx new file mode 100644 index 000000000000..886669be14a6 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/LocSample.SharedResource.fr.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + Ola from Resources\LocSample.SharedResource.fr.resx + + diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Resources.SharedResource.fr.resx b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Resources.SharedResource.fr.resx new file mode 100644 index 000000000000..339da1d786a8 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Resources.SharedResource.fr.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + Ola from Resources\Resources.SharedResource.fr.resx + + diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/SharedResource.fr.resx b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/SharedResource.fr.resx new file mode 100644 index 000000000000..0b7627b40516 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/SharedResource.fr.resx @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + <b>Ola</b><i> {0}</i> + + + Ola from Resources\SharedResource.fr.resx + + + Loc version of "Shared Test 1" + + + Votre page de description de l'application . app descript pg - Resources\SharedResource.fr.resx + + + Votre page de contact . contact page Resources\SharedResource.fr.resx + + diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/StartUp.fr.resx b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/StartUp.fr.resx new file mode 100644 index 000000000000..d17b7c139b42 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/StartUp.fr.resx @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + Votre page de description de l'application . descript \Resources\StartUp.fr.resx + + + Votre page de description de l'application . descript \Resources\StartUp.fr.resx + + + Votre page de contact . contact page \Resources\StartUp.fr.resx + + diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/ViewModels.Account.RegisterViewModel2.fr.resx b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/ViewModels.Account.RegisterViewModel2.fr.resx new file mode 100644 index 000000000000..4fdde518a6fd --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/ViewModels.Account.RegisterViewModel2.fr.resx @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + Confirmez le mot de passe . confirm + + + Email (fr) . + + + Mot de passe PW . + + + Le champ email est pas une adresse email valide. dot vers of email not valid + + + Le champ Email est requis. (dot version required) + + + Le mot de passe et la confirmation de passe ne correspondent pas. dot version no match + + + Le champ Mot de passe est nécessaire. dot vers pw require + + + Le {0} doit être d'au moins {2} caractères. The {0} must be at least {2} characters long. PW must be dot version + + diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/ViewModels/Account/RegisterViewModel.fr.resx b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/ViewModels/Account/RegisterViewModel.fr.resx new file mode 100644 index 000000000000..3c6b9db68295 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/ViewModels/Account/RegisterViewModel.fr.resx @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + Confirmez le mot de passe + + + Email (fr) + + + Mot de passe + + + Le champ email est pas une adresse email valide. + + + Le champ Email est requis. (required) + + + Le mot de passe et la confirmation de passe ne correspondent pas. + + + Le champ Mot de passe est nécessaire. + + + Le {0} doit être d'au moins {2} caractères. The {0} must be at least {2} characters long. + + diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views.Home.About.fr.resx b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views.Home.About.fr.resx new file mode 100644 index 000000000000..9063e718fe20 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views.Home.About.fr.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 + + + Sur - about Resources\Views.Home.About.fr.resx + + + Utilisez cette zone pour fournir des informations supplémentaires . - use this area Resources\Views.Home.About.fr.resx + + diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views.Info.About.fr.resx b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views.Info.About.fr.resx new file mode 100644 index 000000000000..9063e718fe20 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views.Info.About.fr.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 + + + Sur - about Resources\Views.Home.About.fr.resx + + + Utilisez cette zone pour fournir des informations supplémentaires . - use this area Resources\Views.Home.About.fr.resx + + diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views.Shared._Layout.fr.Designer.cs b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views.Shared._Layout.fr.Designer.cs new file mode 100644 index 000000000000..e346b25ba9bd --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views.Shared._Layout.fr.Designer.cs @@ -0,0 +1,98 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Localization.Resources { + using System; + using System.Reflection; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Views_Shared__Layout { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + internal Views_Shared__Layout() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Localization.Resources.Views.Shared._Layout", typeof(Views_Shared__Layout).GetTypeInfo().Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized string similar to Sur - about Resources\Views.Shared._Layout.fr.resx. + /// + internal static string About { + get { + return ResourceManager.GetString("About", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Contact. + /// + internal static string Contact { + get { + return ResourceManager.GetString("Contact", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Accueil hm. + /// + internal static string Home { + get { + return ResourceManager.GetString("Home", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Basculer la navigation-tog nav. + /// + internal static string Toggle_navigation { + get { + return ResourceManager.GetString("Toggle navigation", resourceCulture); + } + } + } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views.Shared._Layout.fr.resx b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views.Shared._Layout.fr.resx new file mode 100644 index 000000000000..3f7590846439 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views.Shared._Layout.fr.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + Sur - about Resources\Views.Shared._Layout.fr.resx + + + Contact + + + Accueil hm + + + Basculer la navigation-tog nav + + diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views.Shared._LoginPartial.fr.resx b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views.Shared._LoginPartial.fr.resx new file mode 100644 index 000000000000..58658cf3340b --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views.Shared._LoginPartial.fr.resx @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + <i>Bonjour </i> <b>{0}!</b> + + + Bonjour {0} ! + + + S'identifier (login partial) + + + Déconnecter + + + Faire en sorte + + + Enregistrez + + diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views.Shared._SelectLanguagePartial.fr.resx b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views.Shared._SelectLanguagePartial.fr.resx new file mode 100644 index 000000000000..0e42b4f055e4 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views.Shared._SelectLanguagePartial.fr.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 + + + Langue: + + + Demande fournisseur de la culture: + + diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views.book.About.fr.resx b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views.book.About.fr.resx new file mode 100644 index 000000000000..edd986a61ab3 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views.book.About.fr.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 + + + Sur - about Resources\Views.book.About.fr.resx + + + Utilisez cette zone pour fournir des informations supplémentaires . - use this area Resources\Views.book.About.fr.resx + + diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views.book.Hello.fr.Designer.cs b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views.book.Hello.fr.Designer.cs new file mode 100644 index 000000000000..094f021a9fdc --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views.book.Hello.fr.Designer.cs @@ -0,0 +1,80 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Localization.Resources { + using System; + using System.Reflection; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Views_Home_About { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + internal Views_Home_About() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Localization.Resources.Views.Home.About", typeof(Views_Home_About).GetTypeInfo().Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized string similar to Sur - about Resources\Views.Home.About.fr.resx. + /// + internal static string About { + get { + return ResourceManager.GetString("About", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Utilisez cette zone pour fournir des informations supplémentaires . - use this area Resources\Views.Home.About.fr.resx. + /// + internal static string Use_this_area_to_provide_additional_information_ { + get { + return ResourceManager.GetString("Use this area to provide additional information.", resourceCulture); + } + } + } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views.book.Hello.fr.resx b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views.book.Hello.fr.resx new file mode 100644 index 000000000000..654f77aeb8d6 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views.book.Hello.fr.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 + + + Sur - about Resources\Views.Home.About.fr.resx + + + Utilisez cette zone fr s . - use this area Resources\Views.book.About.fr.resx + + diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views.test.About.fr.resx b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views.test.About.fr.resx new file mode 100644 index 000000000000..fc435fbac065 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views.test.About.fr.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 + + + Sur - about Resources\Views.test.About.fr.resx + + + Utilisez cette zone pour fournir des informations supplémentaires . - use this area Resources\Views.test.About.fr.resx + + diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Account/Login.fr.resx b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Account/Login.fr.resx new file mode 100644 index 000000000000..d67b5da10c9e --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Account/Login.fr.resx @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + Mot de passe oublié?(4get pw -Resources\Views\Account\Login.fr.resx + + + S'identifier(login) Resources\Views\Account\Login.fr.resx + + + Connectez-vous en utilisant votre compte {0} + + + Inscrivez-vous en tant que nouvel utilisateur? + + + Il n'y pas de services externes d'authentification configurés. Voir <a href="https://go.microsoft.com/fwlink/?LinkID=532715">cet article</a> pour plus de détails sur la mise en place de cette application ASP.NET pour soutenir connecter via des services externes. + + + Utiliser un compte local pour vous connecter. + + + Utiliser un autre service pour vous connecter. + + diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Account/Register.fr.resx b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Account/Register.fr.resx new file mode 100644 index 000000000000..2b192a9c5fea --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Account/Register.fr.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 + + + Créer un nouveau compte.-create + + + Inscription-reg-Resources\Views\Account\Register.fr.resx + + diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Book/Contact.fr.Designer.cs b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Book/Contact.fr.Designer.cs new file mode 100644 index 000000000000..f134dbb22107 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Book/Contact.fr.Designer.cs @@ -0,0 +1,80 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Localization.Resources.Views.Book { + using System; + using System.Reflection; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Contact { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + internal Contact() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Localization.Resources.Views.Book.Contact", typeof(Contact).GetTypeInfo().Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized string similar to fr version of Marketting from Resources\Views\Book\Contact.resx. + /// + internal static string Marketing { + get { + return ResourceManager.GetString("Marketing", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to fr support from Resources\Views\Book\Contact.resx. + /// + internal static string Support { + get { + return ResourceManager.GetString("Support", resourceCulture); + } + } + } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Book/Contact.fr.resx b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Book/Contact.fr.resx new file mode 100644 index 000000000000..55afcf648284 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Book/Contact.fr.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 + + + fr version of Marketting from Resources\Views\Book\Contact.resx + + + fr support from Resources\Views\Book\Contact.resx + + diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Book/Index.Designer.cs b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Book/Index.Designer.cs new file mode 100644 index 000000000000..265c81c01093 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Book/Index.Designer.cs @@ -0,0 +1,352 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Localization.Resources.Views.Book { + using System; + using System.Reflection; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + public class Index { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + internal Index() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + public static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Localization.Resources.Views.Book.Index", typeof(Index).GetTypeInfo().Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + public static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized string similar to <h1> Book version Ajouter un contrôleur et Vue (Add a Controller and View) Resources\Views\Home\Index.fr.resx </h1>. + /// + public static string Add_a_Controller_and_View { + get { + return ResourceManager.GetString("Add a Controller and View", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ajoutez un appsetting dans la configuration et y accéder à l'application .. + /// + public static string Add_an_appsetting_in_config_and_access_it_in_app_ { + get { + return ResourceManager.GetString("Add an appsetting in config and access it in app.", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ajouter des packages de clients à l'aide Bower.. + /// + public static string Add_client_packages_using_Bower_ { + get { + return ResourceManager.GetString("Add client packages using Bower.", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ajouter paquets en utilisant NuGet.. + /// + public static string Add_packages_using_NuGet_ { + get { + return ResourceManager.GetString("Add packages using NuGet.", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Utilisations d'application. + /// + public static string Application_uses { + get { + return ResourceManager.GetString("Application uses", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Apportez dans les bibliothèques de NuGet , Bower , et NPM , et automatiser les tâches à l'aide Grunt ou Gulp .. + /// + public static string Bring_in_libraries_from_NuGet__Bower__and_npm__and_automate_tasks_using_Grunt_or_Gulp_ { + get { + return ResourceManager.GetString("Bring in libraries from NuGet, Bower, and npm, and automate tasks using Grunt or " + + "Gulp.", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Le développement côté client. + /// + public static string Client_side_development { + get { + return ResourceManager.GetString("Client side development", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Aperçu conceptuel de ce qui est ASP.NET 5. + /// + public static string Conceptual_overview_of_what_is_ASP_NET_5 { + get { + return ResourceManager.GetString("Conceptual overview of what is ASP.NET 5", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Développer sur différentes plateformes. + /// + public static string Develop_on_different_platforms { + get { + return ResourceManager.GetString("Develop on different platforms", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Notions de base ASP.NET 5 tels que le démarrage et middleware.. + /// + public static string Fundamentals_of_ASP_NET_5_such_as_Startup_and_middleware_ { + get { + return ResourceManager.GetString("Fundamentals of ASP.NET 5 such as Startup and middleware.", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Page D'accueil. + /// + public static string Home_Page { + get { + return ResourceManager.GetString("Home Page", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Comment. + /// + public static string How_to { + get { + return ResourceManager.GetString("How to", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Découvrez comment la plate-forme Azure cloud de Microsoft vous permet de construire, déployer et applications Web à grande échelle .. + /// + public static string Learn_how_Microsoft_s_Azure_cloud_platform_allows_you_to_build__deploy__and_scale_web_apps_ { + get { + return ResourceManager.GetString("Learn how Microsoft\'s Azure cloud platform allows you to build, deploy, and scale" + + " web apps.", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Apprenez à créer des applications ASP.NET qui peuvent fonctionner n'importe où .. + /// + public static string Learn_how_to_build_ASP_NET_apps_that_can_run_anywhere_ { + get { + return ResourceManager.GetString("Learn how to build ASP.NET apps that can run anywhere.", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Apprendre Encore Plus. + /// + public static string Learn_More { + get { + return ResourceManager.GetString("Learn More", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Gérer Secrets de l'utilisateur à l'aide de Secret Manager.. + /// + public static string Manage_User_Secrets_using_Secret_Manager_ { + get { + return ResourceManager.GetString("Manage User Secrets using Secret Manager.", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Prochain. + /// + public static string Next { + get { + return ResourceManager.GetString("Next", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Vue D'ensemble. + /// + public static string Overview { + get { + return ResourceManager.GetString("Overview", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Gestion des Paquetages. + /// + public static string Package_Management { + get { + return ResourceManager.GetString("Package Management", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Précédent. + /// + public static string Previous { + get { + return ResourceManager.GetString("Previous", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Publier sur Microsoft Azure Web Apps. + /// + public static string Publish_to_Microsoft_Azure_Web_Apps { + get { + return ResourceManager.GetString("Publish to Microsoft Azure Web Apps", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Lire la suite sur le site de documentation. + /// + public static string Read_more_on_the_documentation_site { + get { + return ResourceManager.GetString("Read more on the documentation site", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Déployer & Exécuter. + /// + public static string Run___Deploy { + get { + return ResourceManager.GetString("Run & Deploy", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Exécuter des commandes dans votre bash. + /// + public static string Run_commands_in_your_project_json { + get { + return ResourceManager.GetString("Run commands in your bash", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Exécutez votre application. + /// + public static string Run_your_app { + get { + return ResourceManager.GetString("Run your app", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Exécutez votre application sur .NET de base. + /// + public static string Run_your_app_on__NET_Core { + get { + return ResourceManager.GetString("Run your app on .NET Core", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Pages échantillon en utilisant ASP.NET MVC 6. + /// + public static string Sample_pages_using_ASP_NET_MVC_6 { + get { + return ResourceManager.GetString("Sample pages using ASP.NET MVC 6", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Sécurité. + /// + public static string Security { + get { + return ResourceManager.GetString("Security", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Cibler le développement, la mise en scène ou de l'environnement de production.. + /// + public static string Target_development__staging_or_production_environment_ { + get { + return ResourceManager.GetString("Target development, staging or production environment.", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Il ya de puissantes nouvelles fonctionnalités de Visual Studio pour la création d'applications web modernes .. + /// + public static string There_are_powerful_new_features_in_Visual_Studio_for_building_modern_web_apps_ { + get { + return ResourceManager.GetString("There are powerful new features in Visual Studio for building modern web apps.", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Utilisez la journalisation pour enregistrer un message.. + /// + public static string Use_logging_to_log_a_message_ { + get { + return ResourceManager.GetString("Use logging to log a message.", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Utilisation des données. + /// + public static string Working_with_Data { + get { + return ResourceManager.GetString("Working with Data", resourceCulture); + } + } + } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Book/Index.resx b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Book/Index.resx new file mode 100644 index 000000000000..2bf7bd48d490 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Book/Index.resx @@ -0,0 +1,222 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + <a href="https://go.microsoft.com/fwlink/?LinkId=518007">Gulp</a> et <a href="https://go.microsoft.com/fwlink/?LinkId=518004">Bower</a> pour la gestion des bibliothèques côté client + + + <h1> Book version Ajouter un contrôleur et Vue (Add a Controller and View) Resources\Views\Home\Index.fr.resx </h1> + + + Utilisations d'application + + + Apportez dans les bibliothèques de NuGet , Bower , et NPM , et automatiser les tâches à l'aide Grunt ou Gulp . + + + Page D'accueil + + + Comment + + + Découvrez comment la plate-forme Azure cloud de Microsoft vous permet de construire, déployer et applications Web à grande échelle . + + + Apprenez à créer des applications ASP.NET qui peuvent fonctionner n'importe où . + + + Apprendre Encore Plus + + + Prochain + + + Gestion des Paquetages + + + Précédent + + + Pages échantillon en utilisant ASP.NET MVC 6 + + + Thématisation aide <a href="https://go.microsoft.com/fwlink/?LinkID=398939">Bootstrap</a> + + + Il ya de puissantes nouvelles fonctionnalités de Visual Studio pour la création d'applications web modernes . + + + Ajoutez un appsetting dans la configuration et y accéder à l'application . + + + Ajouter des packages de clients à l'aide Bower. + + + Ajouter paquets en utilisant NuGet. + + + Le développement côté client + + + Aperçu conceptuel de ce qui est ASP.NET 5 + + + Développer sur différentes plateformes + + + Notions de base ASP.NET 5 tels que le démarrage et middleware. + + + Gérer Secrets de l'utilisateur à l'aide de Secret Manager. + + + Vue D'ensemble + + + Publier sur Microsoft Azure Web Apps + + + Lire la suite sur le site de documentation + + + Déployer & Exécuter + + + Exécuter des commandes dans votre bash + + + Exécutez votre application + + + Exécutez votre application sur .NET de base + + + Sécurité + + + Cibler le développement, la mise en scène ou de l'environnement de production. + + + Utilisez la journalisation pour enregistrer un message. + + + Utilisation des données + + diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Home/About2.fr.resx b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Home/About2.fr.resx new file mode 100644 index 000000000000..20c204902daf --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Home/About2.fr.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 + + + Sur - about2 Resources\Views\Home\About.fr.resx + + + Utilisez cette zone pour fournir des informations supplémentaires . - use this area <b> folder version </b><i> Resources\Views\Home\About.fr.resx </i> + + diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Home/Contact.fr.Designer.cs b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Home/Contact.fr.Designer.cs new file mode 100644 index 000000000000..8d7dd6efff4e --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Home/Contact.fr.Designer.cs @@ -0,0 +1,80 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Localization.Resources.Views.Home { + using System; + using System.Reflection; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Contact { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + internal Contact() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Localization.Resources.Views.Home.Contact", typeof(Contact).GetTypeInfo().Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized string similar to fr version of Marketting. + /// + internal static string Marketing { + get { + return ResourceManager.GetString("Marketing", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to fr support from Resources\Views\Home\Contact.resx. + /// + internal static string Support { + get { + return ResourceManager.GetString("Support", resourceCulture); + } + } + } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Home/Contact.fr.resx b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Home/Contact.fr.resx new file mode 100644 index 000000000000..628032fe0a23 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Home/Contact.fr.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 + + + fr version of Marketting + + + fr support from Resources\Views\Home\Contact.resx + + diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Home/Index.fr.resx b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Home/Index.fr.resx new file mode 100644 index 000000000000..61ff610db34c --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Home/Index.fr.resx @@ -0,0 +1,222 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + <a href="https://go.microsoft.com/fwlink/?LinkId=518007">Gulp</a> et <a href="https://go.microsoft.com/fwlink/?LinkId=518004">Bower</a> pour la gestion des bibliothèques côté client + + + <h1>Home Version Ajouter un contrôleur et Vue (Add a Controller and View) Resources\Views\Book\Index.fr.resx </h1> + + + Utilisations d'application + + + Apportez dans les bibliothèques de NuGet , Bower , et NPM , et automatiser les tâches à l'aide Grunt ou Gulp . + + + Page D'accueil + + + Comment + + + Découvrez comment la plate-forme Azure cloud de Microsoft vous permet de construire, déployer et applications Web à grande échelle . + + + Apprenez à créer des applications ASP.NET qui peuvent fonctionner n'importe où . + + + Apprendre Encore Plus + + + Prochain + + + Gestion des Paquetages + + + Précédent + + + Pages échantillon en utilisant ASP.NET MVC 6 + + + Thématisation aide <a href="https://go.microsoft.com/fwlink/?LinkID=398939">Bootstrap</a> + + + Il ya de puissantes nouvelles fonctionnalités de Visual Studio pour la création d'applications web modernes . + + + Ajoutez un appsetting dans la configuration et y accéder à l'application . + + + Ajouter des packages de clients à l'aide Bower. + + + Ajouter paquets en utilisant NuGet. + + + Le développement côté client + + + Aperçu conceptuel de ce qui est ASP.NET 5 + + + Développer sur différentes plateformes + + + Notions de base ASP.NET 5 tels que le démarrage et middleware. + + + Gérer Secrets de l'utilisateur à l'aide de Secret Manager. + + + Vue D'ensemble + + + Publier sur Microsoft Azure Web Apps + + + Lire la suite sur le site de documentation + + + Déployer & Exécuter + + + Exécuter des commandes dans votre bash + + + Exécutez votre application + + + Exécutez votre application sur .NET de base + + + Sécurité + + + Cibler le développement, la mise en scène ou de l'environnement de production. + + + Utilisez la journalisation pour enregistrer un message. + + + Utilisation des données + + diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Info/Contact.fr.Designer.cs b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Info/Contact.fr.Designer.cs new file mode 100644 index 000000000000..3b6985c031df --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Info/Contact.fr.Designer.cs @@ -0,0 +1,80 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Localization.Resources.Views.Zebra { + using System; + using System.Reflection; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Contact { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + internal Contact() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Localization.Resources.Views.Zebra.Contact", typeof(Contact).GetTypeInfo().Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized string similar to fr version of Marketting from Resources\Views\Zebra\Contact.resx. + /// + internal static string Marketing { + get { + return ResourceManager.GetString("Marketing", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to fr support from Resources\Views\Zebra\Contact.resx. + /// + internal static string Support { + get { + return ResourceManager.GetString("Support", resourceCulture); + } + } + } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Info/Contact.fr.resx b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Info/Contact.fr.resx new file mode 100644 index 000000000000..ffe91d289ddd --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Info/Contact.fr.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 + + + fr version of Marketting from Resources\Views\Zebra\Contact.resx + + + fr support from Resources\Views\Zebra\Contact.resx + + diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Info/Index.fr.resx b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Info/Index.fr.resx new file mode 100644 index 000000000000..2bf7bd48d490 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Info/Index.fr.resx @@ -0,0 +1,222 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + <a href="https://go.microsoft.com/fwlink/?LinkId=518007">Gulp</a> et <a href="https://go.microsoft.com/fwlink/?LinkId=518004">Bower</a> pour la gestion des bibliothèques côté client + + + <h1> Book version Ajouter un contrôleur et Vue (Add a Controller and View) Resources\Views\Home\Index.fr.resx </h1> + + + Utilisations d'application + + + Apportez dans les bibliothèques de NuGet , Bower , et NPM , et automatiser les tâches à l'aide Grunt ou Gulp . + + + Page D'accueil + + + Comment + + + Découvrez comment la plate-forme Azure cloud de Microsoft vous permet de construire, déployer et applications Web à grande échelle . + + + Apprenez à créer des applications ASP.NET qui peuvent fonctionner n'importe où . + + + Apprendre Encore Plus + + + Prochain + + + Gestion des Paquetages + + + Précédent + + + Pages échantillon en utilisant ASP.NET MVC 6 + + + Thématisation aide <a href="https://go.microsoft.com/fwlink/?LinkID=398939">Bootstrap</a> + + + Il ya de puissantes nouvelles fonctionnalités de Visual Studio pour la création d'applications web modernes . + + + Ajoutez un appsetting dans la configuration et y accéder à l'application . + + + Ajouter des packages de clients à l'aide Bower. + + + Ajouter paquets en utilisant NuGet. + + + Le développement côté client + + + Aperçu conceptuel de ce qui est ASP.NET 5 + + + Développer sur différentes plateformes + + + Notions de base ASP.NET 5 tels que le démarrage et middleware. + + + Gérer Secrets de l'utilisateur à l'aide de Secret Manager. + + + Vue D'ensemble + + + Publier sur Microsoft Azure Web Apps + + + Lire la suite sur le site de documentation + + + Déployer & Exécuter + + + Exécuter des commandes dans votre bash + + + Exécutez votre application + + + Exécutez votre application sur .NET de base + + + Sécurité + + + Cibler le développement, la mise en scène ou de l'environnement de production. + + + Utilisez la journalisation pour enregistrer un message. + + + Utilisation des données + + diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Test/Contact.fr.Designer.cs b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Test/Contact.fr.Designer.cs new file mode 100644 index 000000000000..7c4e29459ab4 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Test/Contact.fr.Designer.cs @@ -0,0 +1,80 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Localization.Resources.Views.Test { + using System; + using System.Reflection; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Contact { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + internal Contact() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Localization.Resources.Views.Test.Contact", typeof(Contact).GetTypeInfo().Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized string similar to fr version of Marketting from Resources\Views\Test\Contact.resx. + /// + internal static string Marketing { + get { + return ResourceManager.GetString("Marketing", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to fr support from Resources\Views\Test\Contact.resx. + /// + internal static string Support { + get { + return ResourceManager.GetString("Support", resourceCulture); + } + } + } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Test/Contact.fr.resx b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Test/Contact.fr.resx new file mode 100644 index 000000000000..c08754e9a3aa --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Test/Contact.fr.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 + + + fr version of Marketting from Resources\Views\Test\Contact.resx + + + fr support from Resources\Views\Test\Contact.resx + + diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Test/Index.fr.resx b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Test/Index.fr.resx new file mode 100644 index 000000000000..2bf7bd48d490 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Resources/Views/Test/Index.fr.resx @@ -0,0 +1,222 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + <a href="https://go.microsoft.com/fwlink/?LinkId=518007">Gulp</a> et <a href="https://go.microsoft.com/fwlink/?LinkId=518004">Bower</a> pour la gestion des bibliothèques côté client + + + <h1> Book version Ajouter un contrôleur et Vue (Add a Controller and View) Resources\Views\Home\Index.fr.resx </h1> + + + Utilisations d'application + + + Apportez dans les bibliothèques de NuGet , Bower , et NPM , et automatiser les tâches à l'aide Grunt ou Gulp . + + + Page D'accueil + + + Comment + + + Découvrez comment la plate-forme Azure cloud de Microsoft vous permet de construire, déployer et applications Web à grande échelle . + + + Apprenez à créer des applications ASP.NET qui peuvent fonctionner n'importe où . + + + Apprendre Encore Plus + + + Prochain + + + Gestion des Paquetages + + + Précédent + + + Pages échantillon en utilisant ASP.NET MVC 6 + + + Thématisation aide <a href="https://go.microsoft.com/fwlink/?LinkID=398939">Bootstrap</a> + + + Il ya de puissantes nouvelles fonctionnalités de Visual Studio pour la création d'applications web modernes . + + + Ajoutez un appsetting dans la configuration et y accéder à l'application . + + + Ajouter des packages de clients à l'aide Bower. + + + Ajouter paquets en utilisant NuGet. + + + Le développement côté client + + + Aperçu conceptuel de ce qui est ASP.NET 5 + + + Développer sur différentes plateformes + + + Notions de base ASP.NET 5 tels que le démarrage et middleware. + + + Gérer Secrets de l'utilisateur à l'aide de Secret Manager. + + + Vue D'ensemble + + + Publier sur Microsoft Azure Web Apps + + + Lire la suite sur le site de documentation + + + Déployer & Exécuter + + + Exécuter des commandes dans votre bash + + + Exécutez votre application + + + Exécutez votre application sur .NET de base + + + Sécurité + + + Cibler le développement, la mise en scène ou de l'environnement de production. + + + Utilisez la journalisation pour enregistrer un message. + + + Utilisation des données + + diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Services/IEmailSender.cs b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Services/IEmailSender.cs new file mode 100644 index 000000000000..a974de30bfae --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Services/IEmailSender.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace Localization.Services +{ + public interface IEmailSender + { + Task SendEmailAsync(string email, string subject, string message); + } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Services/ISmsSender.cs b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Services/ISmsSender.cs new file mode 100644 index 000000000000..b0866e4f4aad --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Services/ISmsSender.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace Localization.Services +{ + public interface ISmsSender + { + Task SendSmsAsync(string number, string message); + } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Services/MessageServices.cs b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Services/MessageServices.cs new file mode 100644 index 000000000000..fa0093c2539a --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Services/MessageServices.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace Localization.Services +{ + // This class is used by the application to send Email and SMS + // when you turn on two-factor authentication in ASP.NET Core Identity. + // For more details see this link http://go.microsoft.com/fwlink/?LinkID=532713 + public class AuthMessageSender : IEmailSender, ISmsSender + { + public Task SendEmailAsync(string email, string subject, string message) + { + // Plug in your email service here to send an email. + return Task.FromResult(0); + } + + public Task SendSmsAsync(string number, string message) + { + // Plug in your SMS service here to send a text message. + return Task.FromResult(0); + } + } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/SharedResource.cs b/aspnetcore/fundamentals/localization/sample/8.x/Localization/SharedResource.cs new file mode 100644 index 000000000000..46f13cef2109 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/SharedResource.cs @@ -0,0 +1,7 @@ +// Dummy class to group shared resources + +namespace Localization; + +public class SharedResource +{ +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Account/ExternalLoginConfirmationViewModel.cs b/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Account/ExternalLoginConfirmationViewModel.cs new file mode 100644 index 000000000000..1451266f7171 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Account/ExternalLoginConfirmationViewModel.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Threading.Tasks; + +namespace Localization.ViewModels.Account +{ + public class ExternalLoginConfirmationViewModel + { + [Required] + [EmailAddress] + public string Email { get; set; } + } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Account/ForgotPasswordViewModel.cs b/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Account/ForgotPasswordViewModel.cs new file mode 100644 index 000000000000..35aeb6aa8f02 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Account/ForgotPasswordViewModel.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Threading.Tasks; + +namespace Localization.ViewModels.Account +{ + public class ForgotPasswordViewModel + { + [Required] + [EmailAddress] + public string Email { get; set; } + } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Account/LoginViewModel.cs b/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Account/LoginViewModel.cs new file mode 100644 index 000000000000..48610aed9b63 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Account/LoginViewModel.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Threading.Tasks; + +namespace Localization.ViewModels.Account +{ + public class LoginViewModel + { + [Required] + [EmailAddress] + public string Email { get; set; } + + [Required] + [DataType(DataType.Password)] + public string Password { get; set; } + + [Display(Name = "Remember me?")] + public bool RememberMe { get; set; } + } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Account/RegisterViewModel.cs b/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Account/RegisterViewModel.cs new file mode 100644 index 000000000000..b55b8cd4c63e --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Account/RegisterViewModel.cs @@ -0,0 +1,24 @@ +using System.ComponentModel.DataAnnotations; + +namespace Localization.ViewModels.Account; + +public class RegisterViewModel +{ + [Required(ErrorMessage = "The Email field is required.")] + [EmailAddress(ErrorMessage = "The Email field is not a valid email address.")] + [Display(Name = "Email")] + public string Email { get; set; } + + [Required(ErrorMessage = "The Password field is required.")] + [StringLength(8, 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; } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Account/ResetPasswordViewModel.cs b/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Account/ResetPasswordViewModel.cs new file mode 100644 index 000000000000..de7518eeaff2 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Account/ResetPasswordViewModel.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Threading.Tasks; + +namespace Localization.ViewModels.Account +{ + public class ResetPasswordViewModel + { + [Required] + [EmailAddress] + public string Email { get; set; } + + [Required] + [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] + [DataType(DataType.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; } + } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Account/SendCodeViewModel.cs b/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Account/SendCodeViewModel.cs new file mode 100644 index 000000000000..28d6e2ec90e9 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Account/SendCodeViewModel.cs @@ -0,0 +1,16 @@ +using System.Collections.Generic; +using Microsoft.AspNetCore.Mvc.Rendering; + +namespace Localization.ViewModels.Account +{ + public class SendCodeViewModel + { + public string SelectedProvider { get; set; } + + public ICollection Providers { get; set; } + + public string ReturnUrl { get; set; } + + public bool RememberMe { get; set; } + } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Account/VerifyCodeViewModel.cs b/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Account/VerifyCodeViewModel.cs new file mode 100644 index 000000000000..16a69b31a813 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Account/VerifyCodeViewModel.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Threading.Tasks; + +namespace Localization.ViewModels.Account +{ + public class VerifyCodeViewModel + { + [Required] + public string Provider { get; set; } + + [Required] + public string Code { get; set; } + + public string ReturnUrl { get; set; } + + [Display(Name = "Remember this browser?")] + public bool RememberBrowser { get; set; } + + [Display(Name = "Remember me?")] + public bool RememberMe { get; set; } + } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Manage/AddPhoneNumberViewModel.cs b/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Manage/AddPhoneNumberViewModel.cs new file mode 100644 index 000000000000..de4617da6dad --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Manage/AddPhoneNumberViewModel.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Threading.Tasks; + +namespace Localization.ViewModels.Manage +{ + public class AddPhoneNumberViewModel + { + [Required] + [Phone] + [Display(Name = "Phone number")] + public string PhoneNumber { get; set; } + } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Manage/ChangePasswordViewModel.cs b/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Manage/ChangePasswordViewModel.cs new file mode 100644 index 000000000000..e2aae89f2076 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Manage/ChangePasswordViewModel.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Threading.Tasks; + +namespace Localization.ViewModels.Manage +{ + 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; } + } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Manage/ConfigureTwoFactorViewModel.cs b/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Manage/ConfigureTwoFactorViewModel.cs new file mode 100644 index 000000000000..c6fef6272610 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Manage/ConfigureTwoFactorViewModel.cs @@ -0,0 +1,12 @@ +using System.Collections.Generic; +using Microsoft.AspNetCore.Mvc.Rendering; + +namespace Localization.ViewModels.Manage +{ + public class ConfigureTwoFactorViewModel + { + public string SelectedProvider { get; set; } + + public ICollection Providers { get; set; } + } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Manage/FactorViewModel.cs b/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Manage/FactorViewModel.cs new file mode 100644 index 000000000000..64dd33c5b8a0 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Manage/FactorViewModel.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace Localization.ViewModels.Manage +{ + public class FactorViewModel + { + public string Purpose { get; set; } + } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Manage/IndexViewModel.cs b/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Manage/IndexViewModel.cs new file mode 100644 index 000000000000..4d42c058802b --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Manage/IndexViewModel.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Identity; + +namespace Localization.ViewModels.Manage +{ + 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; } + } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Manage/ManageLoginsViewModel.cs b/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Manage/ManageLoginsViewModel.cs new file mode 100644 index 000000000000..206c0c5b33cc --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Manage/ManageLoginsViewModel.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Authentication; +using Microsoft.AspNetCore.Identity; + +namespace Localization.ViewModels.Manage +{ + public class ManageLoginsViewModel + { + public IList CurrentLogins { get; set; } + + public IList OtherLogins { get; set; } + } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Manage/RemoveLoginViewModel.cs b/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Manage/RemoveLoginViewModel.cs new file mode 100644 index 000000000000..858b2ddbc192 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Manage/RemoveLoginViewModel.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Threading.Tasks; + +namespace Localization.ViewModels.Manage +{ + public class RemoveLoginViewModel + { + public string LoginProvider { get; set; } + public string ProviderKey { get; set; } + } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Manage/SetPasswordViewModel.cs b/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Manage/SetPasswordViewModel.cs new file mode 100644 index 000000000000..6a25c33b528f --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Manage/SetPasswordViewModel.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Threading.Tasks; + +namespace Localization.ViewModels.Manage +{ + 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; } + } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Manage/VerifyPhoneNumberViewModel.cs b/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Manage/VerifyPhoneNumberViewModel.cs new file mode 100644 index 000000000000..4fd40744e0f0 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/ViewModels/Manage/VerifyPhoneNumberViewModel.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Threading.Tasks; + +namespace Localization.ViewModels.Manage +{ + public class VerifyPhoneNumberViewModel + { + [Required] + public string Code { get; set; } + + [Required] + [Phone] + [Display(Name = "Phone number")] + public string PhoneNumber { get; set; } + } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/ConfirmEmail.cshtml b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/ConfirmEmail.cshtml new file mode 100644 index 000000000000..3244fef5f1e1 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/ConfirmEmail.cshtml @@ -0,0 +1,10 @@ +@{ + ViewData["Title"] = "Confirm Email"; +} + +

@ViewData["Title"].

+
+

+ Thank you for confirming your email. Please Click here to Log in. +

+
diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/ExternalLoginConfirmation.cshtml b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/ExternalLoginConfirmation.cshtml new file mode 100644 index 000000000000..fff1a8771cd4 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/ExternalLoginConfirmation.cshtml @@ -0,0 +1,35 @@ +@model ExternalLoginConfirmationViewModel +@{ + ViewData["Title"] = "Register"; +} + +

@ViewData["Title"].

+

Associate your @ViewData["LoginProvider"] account.

+ +
+

Association Form

+
+
+ +

+ You've successfully authenticated with @ViewData["LoginProvider"]. + Please enter a user name for this site below and click the Register button to finish + logging in. +

+
+ +
+ + +
+
+
+
+ +
+
+
+ +@section Scripts { + @{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/ExternalLoginFailure.cshtml b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/ExternalLoginFailure.cshtml new file mode 100644 index 000000000000..d89339e012cf --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/ExternalLoginFailure.cshtml @@ -0,0 +1,8 @@ +@{ + ViewData["Title"] = "Login Failure"; +} + +
+

@ViewData["Title"].

+

Unsuccessful login with service.

+
diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/ForgotPassword.cshtml b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/ForgotPassword.cshtml new file mode 100644 index 000000000000..8dc17c6b9db3 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/ForgotPassword.cshtml @@ -0,0 +1,31 @@ +@model ForgotPasswordViewModel +@{ + ViewData["Title"] = "Forgot your password?"; +} + +

@ViewData["Title"].

+

+ For more information on how to enable reset password please see this article. +

+ +@*
+

Enter your email.

+
+
+
+ +
+ + +
+
+
+
+ +
+
+
*@ + +@section Scripts { + @{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/ForgotPasswordConfirmation.cshtml b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/ForgotPasswordConfirmation.cshtml new file mode 100644 index 000000000000..ab9bf44c8deb --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/ForgotPasswordConfirmation.cshtml @@ -0,0 +1,8 @@ +@{ + ViewData["Title"] = "Forgot Password Confirmation"; +} + +

@ViewData["Title"].

+

+ Please check your email to reset your password. +

diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/Lockout.cshtml b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/Lockout.cshtml new file mode 100644 index 000000000000..2cc946d5c475 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/Lockout.cshtml @@ -0,0 +1,8 @@ +@{ + ViewData["Title"] = "Locked out"; +} + +
+

Locked out.

+

This account has been locked out, please try again later.

+
diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/Login.cshtml b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/Login.cshtml new file mode 100644 index 000000000000..faa27bb43abb --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/Login.cshtml @@ -0,0 +1,89 @@ +@using Microsoft.AspNetCore.Mvc.Localization +@model LoginViewModel +@inject SignInManager SignInManager +@inject IViewLocalizer Localizer + +@{ + ViewData["Title"] = Localizer["Log in"]; +} + +

@ViewData["Title"].

+
+
+
+
+

@Localizer["Use a local account to log in."]

+
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+
+
+ + +
+
+
+
+
+ +
+
+

+ @Localizer["Register as a new user?"] +

+

+ @Localizer["Forgot your password?"] +

+
+
+
+
+
+

@Localizer["Use another service to log in."]

+
+ @{ + var loginProviders = (await SignInManager.GetExternalAuthenticationSchemesAsync()).ToList(); + if (loginProviders.Count == 0) + { +
+

+ @Localizer["There are no external authentication services configured. See this article " + + "for details on setting up this ASP.NET application to support logging in via external services."] +

+
+ } + else + { +
+
+

+ @foreach (var provider in loginProviders) + { + + } +

+
+
+ } + } +
+
+
+ +@section Scripts { + @{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/Register.cshtml b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/Register.cshtml new file mode 100644 index 000000000000..73c03f335bf4 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/Register.cshtml @@ -0,0 +1,44 @@ +@using Microsoft.AspNetCore.Mvc.Localization +@model RegisterViewModel +@inject IViewLocalizer Localizer +@{ + ViewData["Title"] = Localizer["Register"]; +} + +

@ViewData["Title"].

+ +
+

@Localizer["Create a new account."]

+
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+
+ +
+
+
+ +@section Scripts { + @{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/ResetPassword.cshtml b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/ResetPassword.cshtml new file mode 100644 index 000000000000..2db36b07e8b5 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/ResetPassword.cshtml @@ -0,0 +1,43 @@ +@model ResetPasswordViewModel +@{ + ViewData["Title"] = "Reset password"; +} + +

@ViewData["Title"].

+ +
+

Reset your password.

+
+
+ +
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+
+ +
+
+
+ +@section Scripts { + @{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/ResetPasswordConfirmation.cshtml b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/ResetPasswordConfirmation.cshtml new file mode 100644 index 000000000000..bef2e4570d6a --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/ResetPasswordConfirmation.cshtml @@ -0,0 +1,8 @@ +@{ + ViewData["Title"] = "Reset password confirmation"; +} + +

@ViewData["Title"].

+

+ Your password has been reset. Please Click here to log in. +

diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/SendCode.cshtml b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/SendCode.cshtml new file mode 100644 index 000000000000..04794ee93a4c --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/SendCode.cshtml @@ -0,0 +1,21 @@ +@model SendCodeViewModel +@{ + ViewData["Title"] = "Send Verification Code"; +} + +

@ViewData["Title"].

+ +
+ +
+
+ Select Two-Factor Authentication Provider: + + +
+
+
+ +@section Scripts { + @{await Html.RenderPartialAsync("_ValidationScriptsPartial"); } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/VerifyCode.cshtml b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/VerifyCode.cshtml new file mode 100644 index 000000000000..65ceb2b51057 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Account/VerifyCode.cshtml @@ -0,0 +1,38 @@ +@model VerifyCodeViewModel +@{ + ViewData["Title"] = "Verify"; +} + +

@ViewData["Title"].

+ +
+
+ + +

@ViewData["Status"]

+
+
+ +
+ + +
+
+
+
+
+ + +
+
+
+
+
+ +
+
+
+ +@section Scripts { + @{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Book/About.cshtml b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Book/About.cshtml new file mode 100644 index 000000000000..205bc40c1b12 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Book/About.cshtml @@ -0,0 +1,218 @@ +@using Microsoft.AspNetCore.Mvc.Localization +@using System.Globalization +@using Microsoft.AspNetCore.Localization; + +@inject IViewLocalizer Localizer +@inject IHtmlLocalizer SharedLocalizer + +@{ + ViewData["Title"] = Localizer["About"]; + var requestCultureFeature = (IRequestCultureFeature)ViewData["requestCultureFeature"]; + var requestCulture = (RequestCulture)ViewData["requestCulture"]; + +} +

@ViewData["Title"].

+@ViewData["Message"] +

@Localizer["Use this area to provide additional information."]

+

SL @SharedLocalizer["Hello!"]

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Winning provider + + @requestCultureFeature.Provider.GetType().Name; +
+ Request Culture + + @requestCulture.Culture.DisplayName (@requestCulture.Culture) +
+ Request UICulture + + @requestCulture.UICulture.DisplayName (@requestCulture.UICulture) +
+ Thread culture + + @CultureInfo.CurrentCulture.DisplayName (@CultureInfo.CurrentCulture) +
+ Thread UI culture + + @CultureInfo.CurrentUICulture.DisplayName (@CultureInfo.CurrentUICulture) +
+ Current date (invariant full) + + @DateTime.Now.ToString("F", System.Globalization.CultureInfo.InvariantCulture); +
+ Current date (invariant) + + @DateTime.Now.ToString(System.Globalization.CultureInfo.InvariantCulture); +
+ Current date (request full) + + @DateTime.Now.ToString("F"); +
+ Current date (request) + + @DateTime.Now.ToString(); +
+ Current time (invariant) + + @DateTime.Now.ToString("T", System.Globalization.CultureInfo.InvariantCulture); +
+ Current time (request) + + @DateTime.Now.ToString("T"); +
+ Big number 4 (invariant) + + @{ + + string msg = (Math.Pow(2, 42) + 0.42).ToString("N", CultureInfo.InvariantCulture); + } + @msg + +
+ Big number (request) + + @{ + msg = (Math.Pow(2, 42) + 0.42).ToString("N"); + } + @msg +
+ Negative big number (invariant) + + @{ + + msg = (-Math.Pow(2, 42) + 0.42).ToString("N", CultureInfo.InvariantCulture); + } + @msg +
+ Negative big number (request) + + @{ + + msg = (-Math.Pow(2, 42) + 0.42).ToString("N"); + } + @msg +
+ Money (invariant) + + @{ + + msg = (2199.50).ToString("C", CultureInfo.InvariantCulture); + } + @msg +
+ Money(request) + + @{ + msg = (2199.50).ToString("C"); + } + @msg +
+ Negative Money(invariant) + + @{ + + msg = (-2199.50).ToString("C", CultureInfo.InvariantCulture); + } + @msg +
+ Negative Money(request) + + @{ + msg = (-2199.50).ToString("C"); + } + @msg +
diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Book/Contact.cshtml b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Book/Contact.cshtml new file mode 100644 index 000000000000..c5a1b1e7131e --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Book/Contact.cshtml @@ -0,0 +1,21 @@ +@using Microsoft.AspNetCore.Mvc.Localization + +@inject IViewLocalizer Localizer + +@{ + ViewData["Title"] = Localizer["Contact"]; +} +

@ViewData["Title"].

+

@ViewData["Message"]

+ +
+ One Microsoft Way
+ Redmond, WA 98052-6399
+ @Localizer["P"]: + 425.555.0100 +
+ +
+ @Localizer["Support"]: Support@example.com
+ @Localizer["Marketing"]: Marketing@example.com +
diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Book/Hello.cshtml b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Book/Hello.cshtml new file mode 100644 index 000000000000..f5b3dad11623 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Book/Hello.cshtml @@ -0,0 +1,12 @@ +@using Microsoft.AspNetCore.Mvc.Localization + +@inject IViewLocalizer Localizer + +@{ + ViewData["Title"] = Localizer["About"]; +} +

@ViewData["Title"].

+

Msg: @ViewData["Message"]

+

Msg: @ViewData["Message"]

+ +

@Localizer["Use this area to provide additional information."]

diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Book/Index.cshtml b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Book/Index.cshtml new file mode 100644 index 000000000000..df0d0790b9c4 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Book/Index.cshtml @@ -0,0 +1,120 @@ +@using Microsoft.AspNetCore.Mvc.Localization + +@* The IViewLocalizer can be injected into the view. It does two things of interest: + 1. It can HTML encode *parameters* passed to resource strings (not the resource strings themselves, as they may contain + HTML) automatically, and return the result as an IHtmlContent so Razor won't HTML encode it again; + 2. It looks for localization resources for this view based on the view path, e.g. if the view's path is + "MyApplication/Views/Home/Index.cshtml", then the corresponding resource base path will be "MyApplication.Views.Home.Index" *@ + +@inject IViewLocalizer Localizer + +@{ + ViewData["Title"] = Localizer["Home Page"]; +} + + + + diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Home/About.cshtml b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Home/About.cshtml new file mode 100644 index 000000000000..018245df35cc --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Home/About.cshtml @@ -0,0 +1,11 @@ +@using Microsoft.AspNetCore.Mvc.Localization + +@inject IViewLocalizer Localizer + +@{ + ViewData["Title"] = Localizer["About"]; +} +

@ViewData["Title"].

+

@ViewData["Message"]

+ +

@Localizer["Use this area to provide additional information."]

diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Home/About2.cshtml b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Home/About2.cshtml new file mode 100644 index 000000000000..018245df35cc --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Home/About2.cshtml @@ -0,0 +1,11 @@ +@using Microsoft.AspNetCore.Mvc.Localization + +@inject IViewLocalizer Localizer + +@{ + ViewData["Title"] = Localizer["About"]; +} +

@ViewData["Title"].

+

@ViewData["Message"]

+ +

@Localizer["Use this area to provide additional information."]

diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Home/Contact.cshtml b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Home/Contact.cshtml new file mode 100644 index 000000000000..c5a1b1e7131e --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Home/Contact.cshtml @@ -0,0 +1,21 @@ +@using Microsoft.AspNetCore.Mvc.Localization + +@inject IViewLocalizer Localizer + +@{ + ViewData["Title"] = Localizer["Contact"]; +} +

@ViewData["Title"].

+

@ViewData["Message"]

+ +
+ One Microsoft Way
+ Redmond, WA 98052-6399
+ @Localizer["P"]: + 425.555.0100 +
+ +
+ @Localizer["Support"]: Support@example.com
+ @Localizer["Marketing"]: Marketing@example.com +
diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Home/Index.cshtml b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Home/Index.cshtml new file mode 100644 index 000000000000..b2c790da70cb --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Home/Index.cshtml @@ -0,0 +1,57 @@ +@using Microsoft.AspNetCore.Mvc.Localization + +@* The IViewLocalizer can be injected into the view. It does two things of interest: + 1. It can HTML encode *parameters* passed to resource strings (not the resource strings themselves, as they may contain + HTML) automatically, and return the result as an IHtmlContent so Razor won't HTML encode it again; + 2. It looks for localization resources for this view based on the view path, e.g. if the view's path is + "MyApplication/Views/Home/Index.cshtml", then the corresponding resource base path will be "MyApplication.Views.Home.Index" *@ + +@inject IViewLocalizer Localizer + +@{ + ViewData["Title"] = Localizer["Home Page"]; +} + + diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Info/About.cshtml b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Info/About.cshtml new file mode 100644 index 000000000000..ce36e763440d --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Info/About.cshtml @@ -0,0 +1,12 @@ +@using Microsoft.AspNetCore.Mvc.Localization + +@inject IViewLocalizer Localizer + +@{ + ViewData["Title"] = Localizer["About"]; +} +

@ViewData["Title"].

+ +@ViewData["Message"] + +

@Localizer["Use this area to provide additional information."]

diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Info/Contact.cshtml b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Info/Contact.cshtml new file mode 100644 index 000000000000..c5a1b1e7131e --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Info/Contact.cshtml @@ -0,0 +1,21 @@ +@using Microsoft.AspNetCore.Mvc.Localization + +@inject IViewLocalizer Localizer + +@{ + ViewData["Title"] = Localizer["Contact"]; +} +

@ViewData["Title"].

+

@ViewData["Message"]

+ +
+ One Microsoft Way
+ Redmond, WA 98052-6399
+ @Localizer["P"]: + 425.555.0100 +
+ +
+ @Localizer["Support"]: Support@example.com
+ @Localizer["Marketing"]: Marketing@example.com +
diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Info/Hello.cshtml b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Info/Hello.cshtml new file mode 100644 index 000000000000..018245df35cc --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Info/Hello.cshtml @@ -0,0 +1,11 @@ +@using Microsoft.AspNetCore.Mvc.Localization + +@inject IViewLocalizer Localizer + +@{ + ViewData["Title"] = Localizer["About"]; +} +

@ViewData["Title"].

+

@ViewData["Message"]

+ +

@Localizer["Use this area to provide additional information."]

diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Info/Index.cshtml b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Info/Index.cshtml new file mode 100644 index 000000000000..df0d0790b9c4 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Info/Index.cshtml @@ -0,0 +1,120 @@ +@using Microsoft.AspNetCore.Mvc.Localization + +@* The IViewLocalizer can be injected into the view. It does two things of interest: + 1. It can HTML encode *parameters* passed to resource strings (not the resource strings themselves, as they may contain + HTML) automatically, and return the result as an IHtmlContent so Razor won't HTML encode it again; + 2. It looks for localization resources for this view based on the view path, e.g. if the view's path is + "MyApplication/Views/Home/Index.cshtml", then the corresponding resource base path will be "MyApplication.Views.Home.Index" *@ + +@inject IViewLocalizer Localizer + +@{ + ViewData["Title"] = Localizer["Home Page"]; +} + + + + diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Manage/AddPhoneNumber.cshtml b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Manage/AddPhoneNumber.cshtml new file mode 100644 index 000000000000..3f30957e168f --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Manage/AddPhoneNumber.cshtml @@ -0,0 +1,27 @@ +@model AddPhoneNumberViewModel +@{ + ViewData["Title"] = "Add Phone Number"; +} + +

@ViewData["Title"].

+
+

Add a phone number.

+
+
+
+ +
+ + +
+
+
+
+ +
+
+
+ +@section Scripts { + @{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Manage/ChangePassword.cshtml b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Manage/ChangePassword.cshtml new file mode 100644 index 000000000000..e8cbacd86d11 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Manage/ChangePassword.cshtml @@ -0,0 +1,42 @@ +@model ChangePasswordViewModel +@{ + ViewData["Title"] = "Change Password"; +} + +

@ViewData["Title"].

+ +
+

Change Password Form

+
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+
+ +
+
+
+ +@section Scripts { + @{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Manage/Index.cshtml b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Manage/Index.cshtml new file mode 100644 index 000000000000..f6b4a8322ef8 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Manage/Index.cshtml @@ -0,0 +1,77 @@ +@model IndexViewModel +@{ + ViewData["Title"] = "Manage your account"; +} + +

@ViewData["Title"].

+

@ViewData["StatusMessage"]

+
+

Change your account settings

+
+
+
Password:
+
+ [ + @if (Model.HasPassword) + { + Change + } + else + { + Create + } + ] +
+
External Logins:
+
+ @Model.Logins.Count [Manage] +
+ +
Phone Number:
+
+

+ Phone Numbers can used as a second factor of verification in two-factor authentication. + See this article + for details on setting up this ASP.NET application to support two-factor authentication using SMS. +

+ @*@(Model.PhoneNumber ?? "None") [ + @if (Model.PhoneNumber != null) + { + Change + @:  |  + Remove + } + else + { + Add + } + ]*@ +
+ +
Two-Factor Authentication:
+
+

+ There are no two-factor authentication providers configured. See this article + for setting up this application to support two-factor authentication. +

+ @*@if (Model.TwoFactor) + { +
+ + Enabled + + +
+ } + else + { +
+ + Disabled + + +
+ }*@ +
+
+
diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Manage/ManageLogins.cshtml b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Manage/ManageLogins.cshtml new file mode 100644 index 000000000000..a3ea3229a86d --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Manage/ManageLogins.cshtml @@ -0,0 +1,53 @@ +@model ManageLoginsViewModel +@{ + ViewData["Title"] = "Manage your external logins"; +} + +

@ViewData["Title"].

+ +

@ViewData["StatusMessage"]

+@if (Model.CurrentLogins.Count > 0) +{ +

Registered Logins

+ + + @foreach (var account in Model.CurrentLogins) + { + + + + + } + +
@account.LoginProvider + @if ((bool)ViewData["ShowRemoveButton"]) + { +
+
+ + + +
+
+ } + else + { + @:   + } +
+} +@if (Model.OtherLogins.Count > 0) +{ +

Add another service to log in.

+
+
+
+

+ @foreach (var provider in Model.OtherLogins) + { + + } +

+
+
+} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Manage/SetPassword.cshtml b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Manage/SetPassword.cshtml new file mode 100644 index 000000000000..8697bf884d84 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Manage/SetPassword.cshtml @@ -0,0 +1,38 @@ +@model SetPasswordViewModel +@{ + ViewData["Title"] = "Set Password"; +} + +

+ You do not have a local username/password for this site. Add a local + account so you can log in without an external login. +

+ +
+

Set your password

+
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+
+ +
+
+
+ +@section Scripts { + @{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Manage/VerifyPhoneNumber.cshtml b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Manage/VerifyPhoneNumber.cshtml new file mode 100644 index 000000000000..3d9a06d1c6d1 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Manage/VerifyPhoneNumber.cshtml @@ -0,0 +1,30 @@ +@model VerifyPhoneNumberViewModel +@{ + ViewData["Title"] = "Verify Phone Number"; +} + +

@ViewData["Title"].

+ +
+ +

Add a phone number.

+
@ViewData["Status"]
+
+
+
+ +
+ + +
+
+
+
+ +
+
+
+ +@section Scripts { + @{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Shared/Error.cshtml b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Shared/Error.cshtml new file mode 100644 index 000000000000..4852442680b6 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Shared/Error.cshtml @@ -0,0 +1,6 @@ +@{ + ViewData["Title"] = "Error"; +} + +

Error.

+

An error occurred while processing your request.

diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Shared/_Layout.cshtml b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Shared/_Layout.cshtml new file mode 100644 index 000000000000..d0280c39baf1 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Shared/_Layout.cshtml @@ -0,0 +1,67 @@ +@using System.Globalization +@using Microsoft.AspNetCore.Http.Features +@using Microsoft.AspNetCore.Localization +@using Microsoft.AspNetCore.Mvc.Localization + +@inject IViewLocalizer Localizer + + + + + + + @ViewData["Title"] - Localization + + + + + + + + + +
+ @RenderBody() +
+
+
+
+

© @System.DateTime.Now.Year - Localization

+
+
+ @await Html.PartialAsync("_SelectLanguagePartial") +
+
+
+
+ + + + + + + + + @RenderSection("scripts", required: false) + + diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Shared/_LoginPartial.cshtml b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Shared/_LoginPartial.cshtml new file mode 100644 index 000000000000..c284667fe5ab --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Shared/_LoginPartial.cshtml @@ -0,0 +1,31 @@ +@using System.Security.Claims +@using Microsoft.AspNetCore.Localization +@using Microsoft.AspNetCore.Mvc.Localization + +@inject IViewLocalizer Localizer +@inject SignInManager SignInManager +@inject UserManager UserManager + +@if (SignInManager.IsSignedIn(User)) +{ + +} +else +{ + +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Shared/_SelectLanguagePartial.cshtml b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Shared/_SelectLanguagePartial.cshtml new file mode 100644 index 000000000000..e5358f03a5b8 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Shared/_SelectLanguagePartial.cshtml @@ -0,0 +1,27 @@ +@using Microsoft.AspNetCore.Builder +@using Microsoft.AspNetCore.Http.Features +@using Microsoft.AspNetCore.Localization +@using Microsoft.AspNetCore.Mvc.Localization +@using Microsoft.Extensions.Options + +@inject IViewLocalizer Localizer +@inject IOptions LocOptions + +@{ + var requestCulture = Context.Features.Get(); + var cultureItems = LocOptions.Value.SupportedUICultures + .Select(c => new SelectListItem { Value = c.Name, Text = c.DisplayName }) + .ToList(); + var returnUrl = string.IsNullOrEmpty(Context.Request.Path) ? "~/" : $"~{Context.Request.Path.Value}"; +} + +
+
+ +
+
diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Shared/_ValidationScriptsPartial.cshtml b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Shared/_ValidationScriptsPartial.cshtml new file mode 100644 index 000000000000..970fc49c1a12 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Shared/_ValidationScriptsPartial.cshtml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Test/About.cshtml b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Test/About.cshtml new file mode 100644 index 000000000000..28936a0f943c --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Test/About.cshtml @@ -0,0 +1,12 @@ +@using Microsoft.AspNetCore.Mvc.Localization +@using Localization.Services + +@inject IViewLocalizer Localizer +@inject IHtmlLocalizer SharedLocalizer + +@{ + ViewData["Title"] = Localizer["About"]; +} +

@ViewData["Title"].

+ +

@SharedLocalizer["Hello!"]

diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Test/Contact.cshtml b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Test/Contact.cshtml new file mode 100644 index 000000000000..c5a1b1e7131e --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Test/Contact.cshtml @@ -0,0 +1,21 @@ +@using Microsoft.AspNetCore.Mvc.Localization + +@inject IViewLocalizer Localizer + +@{ + ViewData["Title"] = Localizer["Contact"]; +} +

@ViewData["Title"].

+

@ViewData["Message"]

+ +
+ One Microsoft Way
+ Redmond, WA 98052-6399
+ @Localizer["P"]: + 425.555.0100 +
+ +
+ @Localizer["Support"]: Support@example.com
+ @Localizer["Marketing"]: Marketing@example.com +
diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Test/Hello.cshtml b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Test/Hello.cshtml new file mode 100644 index 000000000000..018245df35cc --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Test/Hello.cshtml @@ -0,0 +1,11 @@ +@using Microsoft.AspNetCore.Mvc.Localization + +@inject IViewLocalizer Localizer + +@{ + ViewData["Title"] = Localizer["About"]; +} +

@ViewData["Title"].

+

@ViewData["Message"]

+ +

@Localizer["Use this area to provide additional information."]

diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Test/Index.cshtml b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Test/Index.cshtml new file mode 100644 index 000000000000..df0d0790b9c4 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/Test/Index.cshtml @@ -0,0 +1,120 @@ +@using Microsoft.AspNetCore.Mvc.Localization + +@* The IViewLocalizer can be injected into the view. It does two things of interest: + 1. It can HTML encode *parameters* passed to resource strings (not the resource strings themselves, as they may contain + HTML) automatically, and return the result as an IHtmlContent so Razor won't HTML encode it again; + 2. It looks for localization resources for this view based on the view path, e.g. if the view's path is + "MyApplication/Views/Home/Index.cshtml", then the corresponding resource base path will be "MyApplication.Views.Home.Index" *@ + +@inject IViewLocalizer Localizer + +@{ + ViewData["Title"] = Localizer["Home Page"]; +} + + + + diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/_ViewImports.cshtml b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/_ViewImports.cshtml new file mode 100644 index 000000000000..f3b06a140e5a --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/_ViewImports.cshtml @@ -0,0 +1,6 @@ +@using Localization +@using Localization.Models +@using Localization.ViewModels.Account +@using Localization.ViewModels.Manage +@using Microsoft.AspNetCore.Identity +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/_ViewStart.cshtml b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/_ViewStart.cshtml new file mode 100644 index 000000000000..a5f10045db97 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/Views/_ViewStart.cshtml @@ -0,0 +1,3 @@ +@{ + Layout = "_Layout"; +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/appsettings.json b/aspnetcore/fundamentals/localization/sample/8.x/Localization/appsettings.json new file mode 100644 index 000000000000..d72f2fa9a330 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/appsettings.json @@ -0,0 +1,15 @@ +{ + "Data": { + "DefaultConnection": { + "ConnectionString": "Server=(localdb)\\mssqllocaldb;Database=aspnet6-Localization-4772c50f-56f3-4058-bd61-75f1352aeca7;Trusted_Connection=True;MultipleActiveResultSets=true" + } + }, + "Logging": { + "IncludeScopes": false, + "LogLevel": { + "Default": "Debug", + "System": "Information", + "Microsoft": "Information" + } + } +} diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/wwwroot/css/bootstrap-3.3.7.css b/aspnetcore/fundamentals/localization/sample/8.x/Localization/wwwroot/css/bootstrap-3.3.7.css new file mode 100644 index 000000000000..6a4708e438b8 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/wwwroot/css/bootstrap-3.3.7.css @@ -0,0 +1,6757 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ +html { + font-family: sans-serif; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; + } + body { + margin: 0; + } + article, + aside, + details, + figcaption, + figure, + footer, + header, + hgroup, + main, + menu, + nav, + section, + summary { + display: block; + } + audio, + canvas, + progress, + video { + display: inline-block; + vertical-align: baseline; + } + audio:not([controls]) { + display: none; + height: 0; + } + [hidden], + template { + display: none; + } + a { + background-color: transparent; + } + a:active, + a:hover { + outline: 0; + } + abbr[title] { + border-bottom: 1px dotted; + } + b, + strong { + font-weight: bold; + } + dfn { + font-style: italic; + } + h1 { + margin: .67em 0; + font-size: 2em; + } + mark { + color: #000; + background: #ff0; + } + small { + font-size: 80%; + } + sub, + sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; + } + sup { + top: -.5em; + } + sub { + bottom: -.25em; + } + img { + border: 0; + } + svg:not(:root) { + overflow: hidden; + } + figure { + margin: 1em 40px; + } + hr { + height: 0; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + } + pre { + overflow: auto; + } + code, + kbd, + pre, + samp { + font-family: monospace, monospace; + font-size: 1em; + } + button, + input, + optgroup, + select, + textarea { + margin: 0; + font: inherit; + color: inherit; + } + button { + overflow: visible; + } + button, + select { + text-transform: none; + } + button, + html input[type="button"], + input[type="reset"], + input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; + } + button[disabled], + html input[disabled] { + cursor: default; + } + button::-moz-focus-inner, + input::-moz-focus-inner { + padding: 0; + border: 0; + } + input { + line-height: normal; + } + input[type="checkbox"], + input[type="radio"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0; + } + input[type="number"]::-webkit-inner-spin-button, + input[type="number"]::-webkit-outer-spin-button { + height: auto; + } + input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; + } + input[type="search"]::-webkit-search-cancel-button, + input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; + } + fieldset { + padding: .35em .625em .75em; + margin: 0 2px; + border: 1px solid #c0c0c0; + } + legend { + padding: 0; + border: 0; + } + textarea { + overflow: auto; + } + optgroup { + font-weight: bold; + } + table { + border-spacing: 0; + border-collapse: collapse; + } + td, + th { + padding: 0; + } + /*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ + @media print { + *, + *:before, + *:after { + color: #000 !important; + text-shadow: none !important; + background: transparent !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + a[href^="#"]:after, + a[href^="javascript:"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + .navbar { + display: none; + } + .btn > .caret, + .dropup > .btn > .caret { + border-top-color: #000 !important; + } + .label { + border: 1px solid #000; + } + .table { + border-collapse: collapse !important; + } + .table td, + .table th { + background-color: #fff !important; + } + .table-bordered th, + .table-bordered td { + border: 1px solid #ddd !important; + } + } + @font-face { + font-family: 'Glyphicons Halflings'; + + src: url('../fonts/glyphicons-halflings-regular.eot'); + src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); + } + .glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: normal; + line-height: 1; + + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + .glyphicon-asterisk:before { + content: "\002a"; + } + .glyphicon-plus:before { + content: "\002b"; + } + .glyphicon-euro:before, + .glyphicon-eur:before { + content: "\20ac"; + } + .glyphicon-minus:before { + content: "\2212"; + } + .glyphicon-cloud:before { + content: "\2601"; + } + .glyphicon-envelope:before { + content: "\2709"; + } + .glyphicon-pencil:before { + content: "\270f"; + } + .glyphicon-glass:before { + content: "\e001"; + } + .glyphicon-music:before { + content: "\e002"; + } + .glyphicon-search:before { + content: "\e003"; + } + .glyphicon-heart:before { + content: "\e005"; + } + .glyphicon-star:before { + content: "\e006"; + } + .glyphicon-star-empty:before { + content: "\e007"; + } + .glyphicon-user:before { + content: "\e008"; + } + .glyphicon-film:before { + content: "\e009"; + } + .glyphicon-th-large:before { + content: "\e010"; + } + .glyphicon-th:before { + content: "\e011"; + } + .glyphicon-th-list:before { + content: "\e012"; + } + .glyphicon-ok:before { + content: "\e013"; + } + .glyphicon-remove:before { + content: "\e014"; + } + .glyphicon-zoom-in:before { + content: "\e015"; + } + .glyphicon-zoom-out:before { + content: "\e016"; + } + .glyphicon-off:before { + content: "\e017"; + } + .glyphicon-signal:before { + content: "\e018"; + } + .glyphicon-cog:before { + content: "\e019"; + } + .glyphicon-trash:before { + content: "\e020"; + } + .glyphicon-home:before { + content: "\e021"; + } + .glyphicon-file:before { + content: "\e022"; + } + .glyphicon-time:before { + content: "\e023"; + } + .glyphicon-road:before { + content: "\e024"; + } + .glyphicon-download-alt:before { + content: "\e025"; + } + .glyphicon-download:before { + content: "\e026"; + } + .glyphicon-upload:before { + content: "\e027"; + } + .glyphicon-inbox:before { + content: "\e028"; + } + .glyphicon-play-circle:before { + content: "\e029"; + } + .glyphicon-repeat:before { + content: "\e030"; + } + .glyphicon-refresh:before { + content: "\e031"; + } + .glyphicon-list-alt:before { + content: "\e032"; + } + .glyphicon-lock:before { + content: "\e033"; + } + .glyphicon-flag:before { + content: "\e034"; + } + .glyphicon-headphones:before { + content: "\e035"; + } + .glyphicon-volume-off:before { + content: "\e036"; + } + .glyphicon-volume-down:before { + content: "\e037"; + } + .glyphicon-volume-up:before { + content: "\e038"; + } + .glyphicon-qrcode:before { + content: "\e039"; + } + .glyphicon-barcode:before { + content: "\e040"; + } + .glyphicon-tag:before { + content: "\e041"; + } + .glyphicon-tags:before { + content: "\e042"; + } + .glyphicon-book:before { + content: "\e043"; + } + .glyphicon-bookmark:before { + content: "\e044"; + } + .glyphicon-print:before { + content: "\e045"; + } + .glyphicon-camera:before { + content: "\e046"; + } + .glyphicon-font:before { + content: "\e047"; + } + .glyphicon-bold:before { + content: "\e048"; + } + .glyphicon-italic:before { + content: "\e049"; + } + .glyphicon-text-height:before { + content: "\e050"; + } + .glyphicon-text-width:before { + content: "\e051"; + } + .glyphicon-align-left:before { + content: "\e052"; + } + .glyphicon-align-center:before { + content: "\e053"; + } + .glyphicon-align-right:before { + content: "\e054"; + } + .glyphicon-align-justify:before { + content: "\e055"; + } + .glyphicon-list:before { + content: "\e056"; + } + .glyphicon-indent-left:before { + content: "\e057"; + } + .glyphicon-indent-right:before { + content: "\e058"; + } + .glyphicon-facetime-video:before { + content: "\e059"; + } + .glyphicon-picture:before { + content: "\e060"; + } + .glyphicon-map-marker:before { + content: "\e062"; + } + .glyphicon-adjust:before { + content: "\e063"; + } + .glyphicon-tint:before { + content: "\e064"; + } + .glyphicon-edit:before { + content: "\e065"; + } + .glyphicon-share:before { + content: "\e066"; + } + .glyphicon-check:before { + content: "\e067"; + } + .glyphicon-move:before { + content: "\e068"; + } + .glyphicon-step-backward:before { + content: "\e069"; + } + .glyphicon-fast-backward:before { + content: "\e070"; + } + .glyphicon-backward:before { + content: "\e071"; + } + .glyphicon-play:before { + content: "\e072"; + } + .glyphicon-pause:before { + content: "\e073"; + } + .glyphicon-stop:before { + content: "\e074"; + } + .glyphicon-forward:before { + content: "\e075"; + } + .glyphicon-fast-forward:before { + content: "\e076"; + } + .glyphicon-step-forward:before { + content: "\e077"; + } + .glyphicon-eject:before { + content: "\e078"; + } + .glyphicon-chevron-left:before { + content: "\e079"; + } + .glyphicon-chevron-right:before { + content: "\e080"; + } + .glyphicon-plus-sign:before { + content: "\e081"; + } + .glyphicon-minus-sign:before { + content: "\e082"; + } + .glyphicon-remove-sign:before { + content: "\e083"; + } + .glyphicon-ok-sign:before { + content: "\e084"; + } + .glyphicon-question-sign:before { + content: "\e085"; + } + .glyphicon-info-sign:before { + content: "\e086"; + } + .glyphicon-screenshot:before { + content: "\e087"; + } + .glyphicon-remove-circle:before { + content: "\e088"; + } + .glyphicon-ok-circle:before { + content: "\e089"; + } + .glyphicon-ban-circle:before { + content: "\e090"; + } + .glyphicon-arrow-left:before { + content: "\e091"; + } + .glyphicon-arrow-right:before { + content: "\e092"; + } + .glyphicon-arrow-up:before { + content: "\e093"; + } + .glyphicon-arrow-down:before { + content: "\e094"; + } + .glyphicon-share-alt:before { + content: "\e095"; + } + .glyphicon-resize-full:before { + content: "\e096"; + } + .glyphicon-resize-small:before { + content: "\e097"; + } + .glyphicon-exclamation-sign:before { + content: "\e101"; + } + .glyphicon-gift:before { + content: "\e102"; + } + .glyphicon-leaf:before { + content: "\e103"; + } + .glyphicon-fire:before { + content: "\e104"; + } + .glyphicon-eye-open:before { + content: "\e105"; + } + .glyphicon-eye-close:before { + content: "\e106"; + } + .glyphicon-warning-sign:before { + content: "\e107"; + } + .glyphicon-plane:before { + content: "\e108"; + } + .glyphicon-calendar:before { + content: "\e109"; + } + .glyphicon-random:before { + content: "\e110"; + } + .glyphicon-comment:before { + content: "\e111"; + } + .glyphicon-magnet:before { + content: "\e112"; + } + .glyphicon-chevron-up:before { + content: "\e113"; + } + .glyphicon-chevron-down:before { + content: "\e114"; + } + .glyphicon-retweet:before { + content: "\e115"; + } + .glyphicon-shopping-cart:before { + content: "\e116"; + } + .glyphicon-folder-close:before { + content: "\e117"; + } + .glyphicon-folder-open:before { + content: "\e118"; + } + .glyphicon-resize-vertical:before { + content: "\e119"; + } + .glyphicon-resize-horizontal:before { + content: "\e120"; + } + .glyphicon-hdd:before { + content: "\e121"; + } + .glyphicon-bullhorn:before { + content: "\e122"; + } + .glyphicon-bell:before { + content: "\e123"; + } + .glyphicon-certificate:before { + content: "\e124"; + } + .glyphicon-thumbs-up:before { + content: "\e125"; + } + .glyphicon-thumbs-down:before { + content: "\e126"; + } + .glyphicon-hand-right:before { + content: "\e127"; + } + .glyphicon-hand-left:before { + content: "\e128"; + } + .glyphicon-hand-up:before { + content: "\e129"; + } + .glyphicon-hand-down:before { + content: "\e130"; + } + .glyphicon-circle-arrow-right:before { + content: "\e131"; + } + .glyphicon-circle-arrow-left:before { + content: "\e132"; + } + .glyphicon-circle-arrow-up:before { + content: "\e133"; + } + .glyphicon-circle-arrow-down:before { + content: "\e134"; + } + .glyphicon-globe:before { + content: "\e135"; + } + .glyphicon-wrench:before { + content: "\e136"; + } + .glyphicon-tasks:before { + content: "\e137"; + } + .glyphicon-filter:before { + content: "\e138"; + } + .glyphicon-briefcase:before { + content: "\e139"; + } + .glyphicon-fullscreen:before { + content: "\e140"; + } + .glyphicon-dashboard:before { + content: "\e141"; + } + .glyphicon-paperclip:before { + content: "\e142"; + } + .glyphicon-heart-empty:before { + content: "\e143"; + } + .glyphicon-link:before { + content: "\e144"; + } + .glyphicon-phone:before { + content: "\e145"; + } + .glyphicon-pushpin:before { + content: "\e146"; + } + .glyphicon-usd:before { + content: "\e148"; + } + .glyphicon-gbp:before { + content: "\e149"; + } + .glyphicon-sort:before { + content: "\e150"; + } + .glyphicon-sort-by-alphabet:before { + content: "\e151"; + } + .glyphicon-sort-by-alphabet-alt:before { + content: "\e152"; + } + .glyphicon-sort-by-order:before { + content: "\e153"; + } + .glyphicon-sort-by-order-alt:before { + content: "\e154"; + } + .glyphicon-sort-by-attributes:before { + content: "\e155"; + } + .glyphicon-sort-by-attributes-alt:before { + content: "\e156"; + } + .glyphicon-unchecked:before { + content: "\e157"; + } + .glyphicon-expand:before { + content: "\e158"; + } + .glyphicon-collapse-down:before { + content: "\e159"; + } + .glyphicon-collapse-up:before { + content: "\e160"; + } + .glyphicon-log-in:before { + content: "\e161"; + } + .glyphicon-flash:before { + content: "\e162"; + } + .glyphicon-log-out:before { + content: "\e163"; + } + .glyphicon-new-window:before { + content: "\e164"; + } + .glyphicon-record:before { + content: "\e165"; + } + .glyphicon-save:before { + content: "\e166"; + } + .glyphicon-open:before { + content: "\e167"; + } + .glyphicon-saved:before { + content: "\e168"; + } + .glyphicon-import:before { + content: "\e169"; + } + .glyphicon-export:before { + content: "\e170"; + } + .glyphicon-send:before { + content: "\e171"; + } + .glyphicon-floppy-disk:before { + content: "\e172"; + } + .glyphicon-floppy-saved:before { + content: "\e173"; + } + .glyphicon-floppy-remove:before { + content: "\e174"; + } + .glyphicon-floppy-save:before { + content: "\e175"; + } + .glyphicon-floppy-open:before { + content: "\e176"; + } + .glyphicon-credit-card:before { + content: "\e177"; + } + .glyphicon-transfer:before { + content: "\e178"; + } + .glyphicon-cutlery:before { + content: "\e179"; + } + .glyphicon-header:before { + content: "\e180"; + } + .glyphicon-compressed:before { + content: "\e181"; + } + .glyphicon-earphone:before { + content: "\e182"; + } + .glyphicon-phone-alt:before { + content: "\e183"; + } + .glyphicon-tower:before { + content: "\e184"; + } + .glyphicon-stats:before { + content: "\e185"; + } + .glyphicon-sd-video:before { + content: "\e186"; + } + .glyphicon-hd-video:before { + content: "\e187"; + } + .glyphicon-subtitles:before { + content: "\e188"; + } + .glyphicon-sound-stereo:before { + content: "\e189"; + } + .glyphicon-sound-dolby:before { + content: "\e190"; + } + .glyphicon-sound-5-1:before { + content: "\e191"; + } + .glyphicon-sound-6-1:before { + content: "\e192"; + } + .glyphicon-sound-7-1:before { + content: "\e193"; + } + .glyphicon-copyright-mark:before { + content: "\e194"; + } + .glyphicon-registration-mark:before { + content: "\e195"; + } + .glyphicon-cloud-download:before { + content: "\e197"; + } + .glyphicon-cloud-upload:before { + content: "\e198"; + } + .glyphicon-tree-conifer:before { + content: "\e199"; + } + .glyphicon-tree-deciduous:before { + content: "\e200"; + } + .glyphicon-cd:before { + content: "\e201"; + } + .glyphicon-save-file:before { + content: "\e202"; + } + .glyphicon-open-file:before { + content: "\e203"; + } + .glyphicon-level-up:before { + content: "\e204"; + } + .glyphicon-copy:before { + content: "\e205"; + } + .glyphicon-paste:before { + content: "\e206"; + } + .glyphicon-alert:before { + content: "\e209"; + } + .glyphicon-equalizer:before { + content: "\e210"; + } + .glyphicon-king:before { + content: "\e211"; + } + .glyphicon-queen:before { + content: "\e212"; + } + .glyphicon-pawn:before { + content: "\e213"; + } + .glyphicon-bishop:before { + content: "\e214"; + } + .glyphicon-knight:before { + content: "\e215"; + } + .glyphicon-baby-formula:before { + content: "\e216"; + } + .glyphicon-tent:before { + content: "\26fa"; + } + .glyphicon-blackboard:before { + content: "\e218"; + } + .glyphicon-bed:before { + content: "\e219"; + } + .glyphicon-apple:before { + content: "\f8ff"; + } + .glyphicon-erase:before { + content: "\e221"; + } + .glyphicon-hourglass:before { + content: "\231b"; + } + .glyphicon-lamp:before { + content: "\e223"; + } + .glyphicon-duplicate:before { + content: "\e224"; + } + .glyphicon-piggy-bank:before { + content: "\e225"; + } + .glyphicon-scissors:before { + content: "\e226"; + } + .glyphicon-bitcoin:before { + content: "\e227"; + } + .glyphicon-btc:before { + content: "\e227"; + } + .glyphicon-xbt:before { + content: "\e227"; + } + .glyphicon-yen:before { + content: "\00a5"; + } + .glyphicon-jpy:before { + content: "\00a5"; + } + .glyphicon-ruble:before { + content: "\20bd"; + } + .glyphicon-rub:before { + content: "\20bd"; + } + .glyphicon-scale:before { + content: "\e230"; + } + .glyphicon-ice-lolly:before { + content: "\e231"; + } + .glyphicon-ice-lolly-tasted:before { + content: "\e232"; + } + .glyphicon-education:before { + content: "\e233"; + } + .glyphicon-option-horizontal:before { + content: "\e234"; + } + .glyphicon-option-vertical:before { + content: "\e235"; + } + .glyphicon-menu-hamburger:before { + content: "\e236"; + } + .glyphicon-modal-window:before { + content: "\e237"; + } + .glyphicon-oil:before { + content: "\e238"; + } + .glyphicon-grain:before { + content: "\e239"; + } + .glyphicon-sunglasses:before { + content: "\e240"; + } + .glyphicon-text-size:before { + content: "\e241"; + } + .glyphicon-text-color:before { + content: "\e242"; + } + .glyphicon-text-background:before { + content: "\e243"; + } + .glyphicon-object-align-top:before { + content: "\e244"; + } + .glyphicon-object-align-bottom:before { + content: "\e245"; + } + .glyphicon-object-align-horizontal:before { + content: "\e246"; + } + .glyphicon-object-align-left:before { + content: "\e247"; + } + .glyphicon-object-align-vertical:before { + content: "\e248"; + } + .glyphicon-object-align-right:before { + content: "\e249"; + } + .glyphicon-triangle-right:before { + content: "\e250"; + } + .glyphicon-triangle-left:before { + content: "\e251"; + } + .glyphicon-triangle-bottom:before { + content: "\e252"; + } + .glyphicon-triangle-top:before { + content: "\e253"; + } + .glyphicon-console:before { + content: "\e254"; + } + .glyphicon-superscript:before { + content: "\e255"; + } + .glyphicon-subscript:before { + content: "\e256"; + } + .glyphicon-menu-left:before { + content: "\e257"; + } + .glyphicon-menu-right:before { + content: "\e258"; + } + .glyphicon-menu-down:before { + content: "\e259"; + } + .glyphicon-menu-up:before { + content: "\e260"; + } + * { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + *:before, + *:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + html { + font-size: 10px; + + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + } + body { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.42857143; + color: #333; + background-color: #fff; + } + input, + button, + select, + textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; + } + a { + color: #337ab7; + text-decoration: none; + } + a:hover, + a:focus { + color: #23527c; + text-decoration: underline; + } + a:focus { + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; + } + figure { + margin: 0; + } + img { + vertical-align: middle; + } + .img-responsive, + .thumbnail > img, + .thumbnail a > img, + .carousel-inner > .item > img, + .carousel-inner > .item > a > img { + display: block; + max-width: 100%; + height: auto; + } + .img-rounded { + border-radius: 6px; + } + .img-thumbnail { + display: inline-block; + max-width: 100%; + height: auto; + padding: 4px; + line-height: 1.42857143; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: all .2s ease-in-out; + -o-transition: all .2s ease-in-out; + transition: all .2s ease-in-out; + } + .img-circle { + border-radius: 50%; + } + hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eee; + } + .sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + } + .sr-only-focusable:active, + .sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; + } + [role="button"] { + cursor: pointer; + } + h1, + h2, + h3, + h4, + h5, + h6, + .h1, + .h2, + .h3, + .h4, + .h5, + .h6 { + font-family: inherit; + font-weight: 500; + line-height: 1.1; + color: inherit; + } + h1 small, + h2 small, + h3 small, + h4 small, + h5 small, + h6 small, + .h1 small, + .h2 small, + .h3 small, + .h4 small, + .h5 small, + .h6 small, + h1 .small, + h2 .small, + h3 .small, + h4 .small, + h5 .small, + h6 .small, + .h1 .small, + .h2 .small, + .h3 .small, + .h4 .small, + .h5 .small, + .h6 .small { + font-weight: normal; + line-height: 1; + color: #777; + } + h1, + .h1, + h2, + .h2, + h3, + .h3 { + margin-top: 20px; + margin-bottom: 10px; + } + h1 small, + .h1 small, + h2 small, + .h2 small, + h3 small, + .h3 small, + h1 .small, + .h1 .small, + h2 .small, + .h2 .small, + h3 .small, + .h3 .small { + font-size: 65%; + } + h4, + .h4, + h5, + .h5, + h6, + .h6 { + margin-top: 10px; + margin-bottom: 10px; + } + h4 small, + .h4 small, + h5 small, + .h5 small, + h6 small, + .h6 small, + h4 .small, + .h4 .small, + h5 .small, + .h5 .small, + h6 .small, + .h6 .small { + font-size: 75%; + } + h1, + .h1 { + font-size: 36px; + } + h2, + .h2 { + font-size: 30px; + } + h3, + .h3 { + font-size: 24px; + } + h4, + .h4 { + font-size: 18px; + } + h5, + .h5 { + font-size: 14px; + } + h6, + .h6 { + font-size: 12px; + } + p { + margin: 0 0 10px; + } + .lead { + margin-bottom: 20px; + font-size: 16px; + font-weight: 300; + line-height: 1.4; + } + @media (min-width: 768px) { + .lead { + font-size: 21px; + } + } + small, + .small { + font-size: 85%; + } + mark, + .mark { + padding: .2em; + background-color: #fcf8e3; + } + .text-left { + text-align: left; + } + .text-right { + text-align: right; + } + .text-center { + text-align: center; + } + .text-justify { + text-align: justify; + } + .text-nowrap { + white-space: nowrap; + } + .text-lowercase { + text-transform: lowercase; + } + .text-uppercase { + text-transform: uppercase; + } + .text-capitalize { + text-transform: capitalize; + } + .text-muted { + color: #777; + } + .text-primary { + color: #337ab7; + } + a.text-primary:hover, + a.text-primary:focus { + color: #286090; + } + .text-success { + color: #3c763d; + } + a.text-success:hover, + a.text-success:focus { + color: #2b542c; + } + .text-info { + color: #31708f; + } + a.text-info:hover, + a.text-info:focus { + color: #245269; + } + .text-warning { + color: #8a6d3b; + } + a.text-warning:hover, + a.text-warning:focus { + color: #66512c; + } + .text-danger { + color: #a94442; + } + a.text-danger:hover, + a.text-danger:focus { + color: #843534; + } + .bg-primary { + color: #fff; + background-color: #337ab7; + } + a.bg-primary:hover, + a.bg-primary:focus { + background-color: #286090; + } + .bg-success { + background-color: #dff0d8; + } + a.bg-success:hover, + a.bg-success:focus { + background-color: #c1e2b3; + } + .bg-info { + background-color: #d9edf7; + } + a.bg-info:hover, + a.bg-info:focus { + background-color: #afd9ee; + } + .bg-warning { + background-color: #fcf8e3; + } + a.bg-warning:hover, + a.bg-warning:focus { + background-color: #f7ecb5; + } + .bg-danger { + background-color: #f2dede; + } + a.bg-danger:hover, + a.bg-danger:focus { + background-color: #e4b9b9; + } + .page-header { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #eee; + } + ul, + ol { + margin-top: 0; + margin-bottom: 10px; + } + ul ul, + ol ul, + ul ol, + ol ol { + margin-bottom: 0; + } + .list-unstyled { + padding-left: 0; + list-style: none; + } + .list-inline { + padding-left: 0; + margin-left: -5px; + list-style: none; + } + .list-inline > li { + display: inline-block; + padding-right: 5px; + padding-left: 5px; + } + dl { + margin-top: 0; + margin-bottom: 20px; + } + dt, + dd { + line-height: 1.42857143; + } + dt { + font-weight: bold; + } + dd { + margin-left: 0; + } + @media (min-width: 768px) { + .dl-horizontal dt { + float: left; + width: 160px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; + } + .dl-horizontal dd { + margin-left: 180px; + } + } + abbr[title], + abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #777; + } + .initialism { + font-size: 90%; + text-transform: uppercase; + } + blockquote { + padding: 10px 20px; + margin: 0 0 20px; + font-size: 17.5px; + border-left: 5px solid #eee; + } + blockquote p:last-child, + blockquote ul:last-child, + blockquote ol:last-child { + margin-bottom: 0; + } + blockquote footer, + blockquote small, + blockquote .small { + display: block; + font-size: 80%; + line-height: 1.42857143; + color: #777; + } + blockquote footer:before, + blockquote small:before, + blockquote .small:before { + content: '\2014 \00A0'; + } + .blockquote-reverse, + blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + text-align: right; + border-right: 5px solid #eee; + border-left: 0; + } + .blockquote-reverse footer:before, + blockquote.pull-right footer:before, + .blockquote-reverse small:before, + blockquote.pull-right small:before, + .blockquote-reverse .small:before, + blockquote.pull-right .small:before { + content: ''; + } + .blockquote-reverse footer:after, + blockquote.pull-right footer:after, + .blockquote-reverse small:after, + blockquote.pull-right small:after, + .blockquote-reverse .small:after, + blockquote.pull-right .small:after { + content: '\00A0 \2014'; + } + address { + margin-bottom: 20px; + font-style: normal; + line-height: 1.42857143; + } + code, + kbd, + pre, + samp { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + } + code { + padding: 2px 4px; + font-size: 90%; + color: #c7254e; + background-color: #f9f2f4; + border-radius: 4px; + } + kbd { + padding: 2px 4px; + font-size: 90%; + color: #fff; + background-color: #333; + border-radius: 3px; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); + } + kbd kbd { + padding: 0; + font-size: 100%; + font-weight: bold; + -webkit-box-shadow: none; + box-shadow: none; + } + pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.42857143; + color: #333; + word-break: break-all; + word-wrap: break-word; + background-color: #f5f5f5; + border: 1px solid #ccc; + border-radius: 4px; + } + pre code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0; + } + .pre-scrollable { + max-height: 340px; + overflow-y: scroll; + } + .container { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; + } + @media (min-width: 768px) { + .container { + width: 750px; + } + } + @media (min-width: 992px) { + .container { + width: 970px; + } + } + @media (min-width: 1200px) { + .container { + width: 1170px; + } + } + .container-fluid { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; + } + .row { + margin-right: -15px; + margin-left: -15px; + } + .col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { + position: relative; + min-height: 1px; + padding-right: 15px; + padding-left: 15px; + } + .col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { + float: left; + } + .col-xs-12 { + width: 100%; + } + .col-xs-11 { + width: 91.66666667%; + } + .col-xs-10 { + width: 83.33333333%; + } + .col-xs-9 { + width: 75%; + } + .col-xs-8 { + width: 66.66666667%; + } + .col-xs-7 { + width: 58.33333333%; + } + .col-xs-6 { + width: 50%; + } + .col-xs-5 { + width: 41.66666667%; + } + .col-xs-4 { + width: 33.33333333%; + } + .col-xs-3 { + width: 25%; + } + .col-xs-2 { + width: 16.66666667%; + } + .col-xs-1 { + width: 8.33333333%; + } + .col-xs-pull-12 { + right: 100%; + } + .col-xs-pull-11 { + right: 91.66666667%; + } + .col-xs-pull-10 { + right: 83.33333333%; + } + .col-xs-pull-9 { + right: 75%; + } + .col-xs-pull-8 { + right: 66.66666667%; + } + .col-xs-pull-7 { + right: 58.33333333%; + } + .col-xs-pull-6 { + right: 50%; + } + .col-xs-pull-5 { + right: 41.66666667%; + } + .col-xs-pull-4 { + right: 33.33333333%; + } + .col-xs-pull-3 { + right: 25%; + } + .col-xs-pull-2 { + right: 16.66666667%; + } + .col-xs-pull-1 { + right: 8.33333333%; + } + .col-xs-pull-0 { + right: auto; + } + .col-xs-push-12 { + left: 100%; + } + .col-xs-push-11 { + left: 91.66666667%; + } + .col-xs-push-10 { + left: 83.33333333%; + } + .col-xs-push-9 { + left: 75%; + } + .col-xs-push-8 { + left: 66.66666667%; + } + .col-xs-push-7 { + left: 58.33333333%; + } + .col-xs-push-6 { + left: 50%; + } + .col-xs-push-5 { + left: 41.66666667%; + } + .col-xs-push-4 { + left: 33.33333333%; + } + .col-xs-push-3 { + left: 25%; + } + .col-xs-push-2 { + left: 16.66666667%; + } + .col-xs-push-1 { + left: 8.33333333%; + } + .col-xs-push-0 { + left: auto; + } + .col-xs-offset-12 { + margin-left: 100%; + } + .col-xs-offset-11 { + margin-left: 91.66666667%; + } + .col-xs-offset-10 { + margin-left: 83.33333333%; + } + .col-xs-offset-9 { + margin-left: 75%; + } + .col-xs-offset-8 { + margin-left: 66.66666667%; + } + .col-xs-offset-7 { + margin-left: 58.33333333%; + } + .col-xs-offset-6 { + margin-left: 50%; + } + .col-xs-offset-5 { + margin-left: 41.66666667%; + } + .col-xs-offset-4 { + margin-left: 33.33333333%; + } + .col-xs-offset-3 { + margin-left: 25%; + } + .col-xs-offset-2 { + margin-left: 16.66666667%; + } + .col-xs-offset-1 { + margin-left: 8.33333333%; + } + .col-xs-offset-0 { + margin-left: 0; + } + @media (min-width: 768px) { + .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { + float: left; + } + .col-sm-12 { + width: 100%; + } + .col-sm-11 { + width: 91.66666667%; + } + .col-sm-10 { + width: 83.33333333%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-8 { + width: 66.66666667%; + } + .col-sm-7 { + width: 58.33333333%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-5 { + width: 41.66666667%; + } + .col-sm-4 { + width: 33.33333333%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-2 { + width: 16.66666667%; + } + .col-sm-1 { + width: 8.33333333%; + } + .col-sm-pull-12 { + right: 100%; + } + .col-sm-pull-11 { + right: 91.66666667%; + } + .col-sm-pull-10 { + right: 83.33333333%; + } + .col-sm-pull-9 { + right: 75%; + } + .col-sm-pull-8 { + right: 66.66666667%; + } + .col-sm-pull-7 { + right: 58.33333333%; + } + .col-sm-pull-6 { + right: 50%; + } + .col-sm-pull-5 { + right: 41.66666667%; + } + .col-sm-pull-4 { + right: 33.33333333%; + } + .col-sm-pull-3 { + right: 25%; + } + .col-sm-pull-2 { + right: 16.66666667%; + } + .col-sm-pull-1 { + right: 8.33333333%; + } + .col-sm-pull-0 { + right: auto; + } + .col-sm-push-12 { + left: 100%; + } + .col-sm-push-11 { + left: 91.66666667%; + } + .col-sm-push-10 { + left: 83.33333333%; + } + .col-sm-push-9 { + left: 75%; + } + .col-sm-push-8 { + left: 66.66666667%; + } + .col-sm-push-7 { + left: 58.33333333%; + } + .col-sm-push-6 { + left: 50%; + } + .col-sm-push-5 { + left: 41.66666667%; + } + .col-sm-push-4 { + left: 33.33333333%; + } + .col-sm-push-3 { + left: 25%; + } + .col-sm-push-2 { + left: 16.66666667%; + } + .col-sm-push-1 { + left: 8.33333333%; + } + .col-sm-push-0 { + left: auto; + } + .col-sm-offset-12 { + margin-left: 100%; + } + .col-sm-offset-11 { + margin-left: 91.66666667%; + } + .col-sm-offset-10 { + margin-left: 83.33333333%; + } + .col-sm-offset-9 { + margin-left: 75%; + } + .col-sm-offset-8 { + margin-left: 66.66666667%; + } + .col-sm-offset-7 { + margin-left: 58.33333333%; + } + .col-sm-offset-6 { + margin-left: 50%; + } + .col-sm-offset-5 { + margin-left: 41.66666667%; + } + .col-sm-offset-4 { + margin-left: 33.33333333%; + } + .col-sm-offset-3 { + margin-left: 25%; + } + .col-sm-offset-2 { + margin-left: 16.66666667%; + } + .col-sm-offset-1 { + margin-left: 8.33333333%; + } + .col-sm-offset-0 { + margin-left: 0; + } + } + @media (min-width: 992px) { + .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { + float: left; + } + .col-md-12 { + width: 100%; + } + .col-md-11 { + width: 91.66666667%; + } + .col-md-10 { + width: 83.33333333%; + } + .col-md-9 { + width: 75%; + } + .col-md-8 { + width: 66.66666667%; + } + .col-md-7 { + width: 58.33333333%; + } + .col-md-6 { + width: 50%; + } + .col-md-5 { + width: 41.66666667%; + } + .col-md-4 { + width: 33.33333333%; + } + .col-md-3 { + width: 25%; + } + .col-md-2 { + width: 16.66666667%; + } + .col-md-1 { + width: 8.33333333%; + } + .col-md-pull-12 { + right: 100%; + } + .col-md-pull-11 { + right: 91.66666667%; + } + .col-md-pull-10 { + right: 83.33333333%; + } + .col-md-pull-9 { + right: 75%; + } + .col-md-pull-8 { + right: 66.66666667%; + } + .col-md-pull-7 { + right: 58.33333333%; + } + .col-md-pull-6 { + right: 50%; + } + .col-md-pull-5 { + right: 41.66666667%; + } + .col-md-pull-4 { + right: 33.33333333%; + } + .col-md-pull-3 { + right: 25%; + } + .col-md-pull-2 { + right: 16.66666667%; + } + .col-md-pull-1 { + right: 8.33333333%; + } + .col-md-pull-0 { + right: auto; + } + .col-md-push-12 { + left: 100%; + } + .col-md-push-11 { + left: 91.66666667%; + } + .col-md-push-10 { + left: 83.33333333%; + } + .col-md-push-9 { + left: 75%; + } + .col-md-push-8 { + left: 66.66666667%; + } + .col-md-push-7 { + left: 58.33333333%; + } + .col-md-push-6 { + left: 50%; + } + .col-md-push-5 { + left: 41.66666667%; + } + .col-md-push-4 { + left: 33.33333333%; + } + .col-md-push-3 { + left: 25%; + } + .col-md-push-2 { + left: 16.66666667%; + } + .col-md-push-1 { + left: 8.33333333%; + } + .col-md-push-0 { + left: auto; + } + .col-md-offset-12 { + margin-left: 100%; + } + .col-md-offset-11 { + margin-left: 91.66666667%; + } + .col-md-offset-10 { + margin-left: 83.33333333%; + } + .col-md-offset-9 { + margin-left: 75%; + } + .col-md-offset-8 { + margin-left: 66.66666667%; + } + .col-md-offset-7 { + margin-left: 58.33333333%; + } + .col-md-offset-6 { + margin-left: 50%; + } + .col-md-offset-5 { + margin-left: 41.66666667%; + } + .col-md-offset-4 { + margin-left: 33.33333333%; + } + .col-md-offset-3 { + margin-left: 25%; + } + .col-md-offset-2 { + margin-left: 16.66666667%; + } + .col-md-offset-1 { + margin-left: 8.33333333%; + } + .col-md-offset-0 { + margin-left: 0; + } + } + @media (min-width: 1200px) { + .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { + float: left; + } + .col-lg-12 { + width: 100%; + } + .col-lg-11 { + width: 91.66666667%; + } + .col-lg-10 { + width: 83.33333333%; + } + .col-lg-9 { + width: 75%; + } + .col-lg-8 { + width: 66.66666667%; + } + .col-lg-7 { + width: 58.33333333%; + } + .col-lg-6 { + width: 50%; + } + .col-lg-5 { + width: 41.66666667%; + } + .col-lg-4 { + width: 33.33333333%; + } + .col-lg-3 { + width: 25%; + } + .col-lg-2 { + width: 16.66666667%; + } + .col-lg-1 { + width: 8.33333333%; + } + .col-lg-pull-12 { + right: 100%; + } + .col-lg-pull-11 { + right: 91.66666667%; + } + .col-lg-pull-10 { + right: 83.33333333%; + } + .col-lg-pull-9 { + right: 75%; + } + .col-lg-pull-8 { + right: 66.66666667%; + } + .col-lg-pull-7 { + right: 58.33333333%; + } + .col-lg-pull-6 { + right: 50%; + } + .col-lg-pull-5 { + right: 41.66666667%; + } + .col-lg-pull-4 { + right: 33.33333333%; + } + .col-lg-pull-3 { + right: 25%; + } + .col-lg-pull-2 { + right: 16.66666667%; + } + .col-lg-pull-1 { + right: 8.33333333%; + } + .col-lg-pull-0 { + right: auto; + } + .col-lg-push-12 { + left: 100%; + } + .col-lg-push-11 { + left: 91.66666667%; + } + .col-lg-push-10 { + left: 83.33333333%; + } + .col-lg-push-9 { + left: 75%; + } + .col-lg-push-8 { + left: 66.66666667%; + } + .col-lg-push-7 { + left: 58.33333333%; + } + .col-lg-push-6 { + left: 50%; + } + .col-lg-push-5 { + left: 41.66666667%; + } + .col-lg-push-4 { + left: 33.33333333%; + } + .col-lg-push-3 { + left: 25%; + } + .col-lg-push-2 { + left: 16.66666667%; + } + .col-lg-push-1 { + left: 8.33333333%; + } + .col-lg-push-0 { + left: auto; + } + .col-lg-offset-12 { + margin-left: 100%; + } + .col-lg-offset-11 { + margin-left: 91.66666667%; + } + .col-lg-offset-10 { + margin-left: 83.33333333%; + } + .col-lg-offset-9 { + margin-left: 75%; + } + .col-lg-offset-8 { + margin-left: 66.66666667%; + } + .col-lg-offset-7 { + margin-left: 58.33333333%; + } + .col-lg-offset-6 { + margin-left: 50%; + } + .col-lg-offset-5 { + margin-left: 41.66666667%; + } + .col-lg-offset-4 { + margin-left: 33.33333333%; + } + .col-lg-offset-3 { + margin-left: 25%; + } + .col-lg-offset-2 { + margin-left: 16.66666667%; + } + .col-lg-offset-1 { + margin-left: 8.33333333%; + } + .col-lg-offset-0 { + margin-left: 0; + } + } + table { + background-color: transparent; + } + caption { + padding-top: 8px; + padding-bottom: 8px; + color: #777; + text-align: left; + } + th { + text-align: left; + } + .table { + width: 100%; + max-width: 100%; + margin-bottom: 20px; + } + .table > thead > tr > th, + .table > tbody > tr > th, + .table > tfoot > tr > th, + .table > thead > tr > td, + .table > tbody > tr > td, + .table > tfoot > tr > td { + padding: 8px; + line-height: 1.42857143; + vertical-align: top; + border-top: 1px solid #ddd; + } + .table > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #ddd; + } + .table > caption + thead > tr:first-child > th, + .table > colgroup + thead > tr:first-child > th, + .table > thead:first-child > tr:first-child > th, + .table > caption + thead > tr:first-child > td, + .table > colgroup + thead > tr:first-child > td, + .table > thead:first-child > tr:first-child > td { + border-top: 0; + } + .table > tbody + tbody { + border-top: 2px solid #ddd; + } + .table .table { + background-color: #fff; + } + .table-condensed > thead > tr > th, + .table-condensed > tbody > tr > th, + .table-condensed > tfoot > tr > th, + .table-condensed > thead > tr > td, + .table-condensed > tbody > tr > td, + .table-condensed > tfoot > tr > td { + padding: 5px; + } + .table-bordered { + border: 1px solid #ddd; + } + .table-bordered > thead > tr > th, + .table-bordered > tbody > tr > th, + .table-bordered > tfoot > tr > th, + .table-bordered > thead > tr > td, + .table-bordered > tbody > tr > td, + .table-bordered > tfoot > tr > td { + border: 1px solid #ddd; + } + .table-bordered > thead > tr > th, + .table-bordered > thead > tr > td { + border-bottom-width: 2px; + } + .table-striped > tbody > tr:nth-of-type(odd) { + background-color: #f9f9f9; + } + .table-hover > tbody > tr:hover { + background-color: #f5f5f5; + } + table col[class*="col-"] { + position: static; + display: table-column; + float: none; + } + table td[class*="col-"], + table th[class*="col-"] { + position: static; + display: table-cell; + float: none; + } + .table > thead > tr > td.active, + .table > tbody > tr > td.active, + .table > tfoot > tr > td.active, + .table > thead > tr > th.active, + .table > tbody > tr > th.active, + .table > tfoot > tr > th.active, + .table > thead > tr.active > td, + .table > tbody > tr.active > td, + .table > tfoot > tr.active > td, + .table > thead > tr.active > th, + .table > tbody > tr.active > th, + .table > tfoot > tr.active > th { + background-color: #f5f5f5; + } + .table-hover > tbody > tr > td.active:hover, + .table-hover > tbody > tr > th.active:hover, + .table-hover > tbody > tr.active:hover > td, + .table-hover > tbody > tr:hover > .active, + .table-hover > tbody > tr.active:hover > th { + background-color: #e8e8e8; + } + .table > thead > tr > td.success, + .table > tbody > tr > td.success, + .table > tfoot > tr > td.success, + .table > thead > tr > th.success, + .table > tbody > tr > th.success, + .table > tfoot > tr > th.success, + .table > thead > tr.success > td, + .table > tbody > tr.success > td, + .table > tfoot > tr.success > td, + .table > thead > tr.success > th, + .table > tbody > tr.success > th, + .table > tfoot > tr.success > th { + background-color: #dff0d8; + } + .table-hover > tbody > tr > td.success:hover, + .table-hover > tbody > tr > th.success:hover, + .table-hover > tbody > tr.success:hover > td, + .table-hover > tbody > tr:hover > .success, + .table-hover > tbody > tr.success:hover > th { + background-color: #d0e9c6; + } + .table > thead > tr > td.info, + .table > tbody > tr > td.info, + .table > tfoot > tr > td.info, + .table > thead > tr > th.info, + .table > tbody > tr > th.info, + .table > tfoot > tr > th.info, + .table > thead > tr.info > td, + .table > tbody > tr.info > td, + .table > tfoot > tr.info > td, + .table > thead > tr.info > th, + .table > tbody > tr.info > th, + .table > tfoot > tr.info > th { + background-color: #d9edf7; + } + .table-hover > tbody > tr > td.info:hover, + .table-hover > tbody > tr > th.info:hover, + .table-hover > tbody > tr.info:hover > td, + .table-hover > tbody > tr:hover > .info, + .table-hover > tbody > tr.info:hover > th { + background-color: #c4e3f3; + } + .table > thead > tr > td.warning, + .table > tbody > tr > td.warning, + .table > tfoot > tr > td.warning, + .table > thead > tr > th.warning, + .table > tbody > tr > th.warning, + .table > tfoot > tr > th.warning, + .table > thead > tr.warning > td, + .table > tbody > tr.warning > td, + .table > tfoot > tr.warning > td, + .table > thead > tr.warning > th, + .table > tbody > tr.warning > th, + .table > tfoot > tr.warning > th { + background-color: #fcf8e3; + } + .table-hover > tbody > tr > td.warning:hover, + .table-hover > tbody > tr > th.warning:hover, + .table-hover > tbody > tr.warning:hover > td, + .table-hover > tbody > tr:hover > .warning, + .table-hover > tbody > tr.warning:hover > th { + background-color: #faf2cc; + } + .table > thead > tr > td.danger, + .table > tbody > tr > td.danger, + .table > tfoot > tr > td.danger, + .table > thead > tr > th.danger, + .table > tbody > tr > th.danger, + .table > tfoot > tr > th.danger, + .table > thead > tr.danger > td, + .table > tbody > tr.danger > td, + .table > tfoot > tr.danger > td, + .table > thead > tr.danger > th, + .table > tbody > tr.danger > th, + .table > tfoot > tr.danger > th { + background-color: #f2dede; + } + .table-hover > tbody > tr > td.danger:hover, + .table-hover > tbody > tr > th.danger:hover, + .table-hover > tbody > tr.danger:hover > td, + .table-hover > tbody > tr:hover > .danger, + .table-hover > tbody > tr.danger:hover > th { + background-color: #ebcccc; + } + .table-responsive { + min-height: .01%; + overflow-x: auto; + } + @media screen and (max-width: 767px) { + .table-responsive { + width: 100%; + margin-bottom: 15px; + overflow-y: hidden; + -ms-overflow-style: -ms-autohiding-scrollbar; + border: 1px solid #ddd; + } + .table-responsive > .table { + margin-bottom: 0; + } + .table-responsive > .table > thead > tr > th, + .table-responsive > .table > tbody > tr > th, + .table-responsive > .table > tfoot > tr > th, + .table-responsive > .table > thead > tr > td, + .table-responsive > .table > tbody > tr > td, + .table-responsive > .table > tfoot > tr > td { + white-space: nowrap; + } + .table-responsive > .table-bordered { + border: 0; + } + .table-responsive > .table-bordered > thead > tr > th:first-child, + .table-responsive > .table-bordered > tbody > tr > th:first-child, + .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .table-responsive > .table-bordered > thead > tr > td:first-child, + .table-responsive > .table-bordered > tbody > tr > td:first-child, + .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; + } + .table-responsive > .table-bordered > thead > tr > th:last-child, + .table-responsive > .table-bordered > tbody > tr > th:last-child, + .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .table-responsive > .table-bordered > thead > tr > td:last-child, + .table-responsive > .table-bordered > tbody > tr > td:last-child, + .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; + } + .table-responsive > .table-bordered > tbody > tr:last-child > th, + .table-responsive > .table-bordered > tfoot > tr:last-child > th, + .table-responsive > .table-bordered > tbody > tr:last-child > td, + .table-responsive > .table-bordered > tfoot > tr:last-child > td { + border-bottom: 0; + } + } + fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; + } + legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: inherit; + color: #333; + border: 0; + border-bottom: 1px solid #e5e5e5; + } + label { + display: inline-block; + max-width: 100%; + margin-bottom: 5px; + font-weight: bold; + } + input[type="search"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + input[type="radio"], + input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + line-height: normal; + } + input[type="file"] { + display: block; + } + input[type="range"] { + display: block; + width: 100%; + } + select[multiple], + select[size] { + height: auto; + } + input[type="file"]:focus, + input[type="radio"]:focus, + input[type="checkbox"]:focus { + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; + } + output { + display: block; + padding-top: 7px; + font-size: 14px; + line-height: 1.42857143; + color: #555; + } + .form-control { + display: block; + width: 100%; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + } + .form-control:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); + } + .form-control::-moz-placeholder { + color: #999; + opacity: 1; + } + .form-control:-ms-input-placeholder { + color: #999; + } + .form-control::-webkit-input-placeholder { + color: #999; + } + .form-control::-ms-expand { + background-color: transparent; + border: 0; + } + .form-control[disabled], + .form-control[readonly], + fieldset[disabled] .form-control { + background-color: #eee; + opacity: 1; + } + .form-control[disabled], + fieldset[disabled] .form-control { + cursor: not-allowed; + } + textarea.form-control { + height: auto; + } + input[type="search"] { + -webkit-appearance: none; + } + @media screen and (-webkit-min-device-pixel-ratio: 0) { + input[type="date"].form-control, + input[type="time"].form-control, + input[type="datetime-local"].form-control, + input[type="month"].form-control { + line-height: 34px; + } + input[type="date"].input-sm, + input[type="time"].input-sm, + input[type="datetime-local"].input-sm, + input[type="month"].input-sm, + .input-group-sm input[type="date"], + .input-group-sm input[type="time"], + .input-group-sm input[type="datetime-local"], + .input-group-sm input[type="month"] { + line-height: 30px; + } + input[type="date"].input-lg, + input[type="time"].input-lg, + input[type="datetime-local"].input-lg, + input[type="month"].input-lg, + .input-group-lg input[type="date"], + .input-group-lg input[type="time"], + .input-group-lg input[type="datetime-local"], + .input-group-lg input[type="month"] { + line-height: 46px; + } + } + .form-group { + margin-bottom: 15px; + } + .radio, + .checkbox { + position: relative; + display: block; + margin-top: 10px; + margin-bottom: 10px; + } + .radio label, + .checkbox label { + min-height: 20px; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; + } + .radio input[type="radio"], + .radio-inline input[type="radio"], + .checkbox input[type="checkbox"], + .checkbox-inline input[type="checkbox"] { + position: absolute; + margin-top: 4px \9; + margin-left: -20px; + } + .radio + .radio, + .checkbox + .checkbox { + margin-top: -5px; + } + .radio-inline, + .checkbox-inline { + position: relative; + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + vertical-align: middle; + cursor: pointer; + } + .radio-inline + .radio-inline, + .checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; + } + input[type="radio"][disabled], + input[type="checkbox"][disabled], + input[type="radio"].disabled, + input[type="checkbox"].disabled, + fieldset[disabled] input[type="radio"], + fieldset[disabled] input[type="checkbox"] { + cursor: not-allowed; + } + .radio-inline.disabled, + .checkbox-inline.disabled, + fieldset[disabled] .radio-inline, + fieldset[disabled] .checkbox-inline { + cursor: not-allowed; + } + .radio.disabled label, + .checkbox.disabled label, + fieldset[disabled] .radio label, + fieldset[disabled] .checkbox label { + cursor: not-allowed; + } + .form-control-static { + min-height: 34px; + padding-top: 7px; + padding-bottom: 7px; + margin-bottom: 0; + } + .form-control-static.input-lg, + .form-control-static.input-sm { + padding-right: 0; + padding-left: 0; + } + .input-sm { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; + } + select.input-sm { + height: 30px; + line-height: 30px; + } + textarea.input-sm, + select[multiple].input-sm { + height: auto; + } + .form-group-sm .form-control { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; + } + .form-group-sm select.form-control { + height: 30px; + line-height: 30px; + } + .form-group-sm textarea.form-control, + .form-group-sm select[multiple].form-control { + height: auto; + } + .form-group-sm .form-control-static { + height: 30px; + min-height: 32px; + padding: 6px 10px; + font-size: 12px; + line-height: 1.5; + } + .input-lg { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; + } + select.input-lg { + height: 46px; + line-height: 46px; + } + textarea.input-lg, + select[multiple].input-lg { + height: auto; + } + .form-group-lg .form-control { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; + } + .form-group-lg select.form-control { + height: 46px; + line-height: 46px; + } + .form-group-lg textarea.form-control, + .form-group-lg select[multiple].form-control { + height: auto; + } + .form-group-lg .form-control-static { + height: 46px; + min-height: 38px; + padding: 11px 16px; + font-size: 18px; + line-height: 1.3333333; + } + .has-feedback { + position: relative; + } + .has-feedback .form-control { + padding-right: 42.5px; + } + .form-control-feedback { + position: absolute; + top: 0; + right: 0; + z-index: 2; + display: block; + width: 34px; + height: 34px; + line-height: 34px; + text-align: center; + pointer-events: none; + } + .input-lg + .form-control-feedback, + .input-group-lg + .form-control-feedback, + .form-group-lg .form-control + .form-control-feedback { + width: 46px; + height: 46px; + line-height: 46px; + } + .input-sm + .form-control-feedback, + .input-group-sm + .form-control-feedback, + .form-group-sm .form-control + .form-control-feedback { + width: 30px; + height: 30px; + line-height: 30px; + } + .has-success .help-block, + .has-success .control-label, + .has-success .radio, + .has-success .checkbox, + .has-success .radio-inline, + .has-success .checkbox-inline, + .has-success.radio label, + .has-success.checkbox label, + .has-success.radio-inline label, + .has-success.checkbox-inline label { + color: #3c763d; + } + .has-success .form-control { + border-color: #3c763d; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + } + .has-success .form-control:focus { + border-color: #2b542c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; + } + .has-success .input-group-addon { + color: #3c763d; + background-color: #dff0d8; + border-color: #3c763d; + } + .has-success .form-control-feedback { + color: #3c763d; + } + .has-warning .help-block, + .has-warning .control-label, + .has-warning .radio, + .has-warning .checkbox, + .has-warning .radio-inline, + .has-warning .checkbox-inline, + .has-warning.radio label, + .has-warning.checkbox label, + .has-warning.radio-inline label, + .has-warning.checkbox-inline label { + color: #8a6d3b; + } + .has-warning .form-control { + border-color: #8a6d3b; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + } + .has-warning .form-control:focus { + border-color: #66512c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; + } + .has-warning .input-group-addon { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #8a6d3b; + } + .has-warning .form-control-feedback { + color: #8a6d3b; + } + .has-error .help-block, + .has-error .control-label, + .has-error .radio, + .has-error .checkbox, + .has-error .radio-inline, + .has-error .checkbox-inline, + .has-error.radio label, + .has-error.checkbox label, + .has-error.radio-inline label, + .has-error.checkbox-inline label { + color: #a94442; + } + .has-error .form-control { + border-color: #a94442; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + } + .has-error .form-control:focus { + border-color: #843534; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; + } + .has-error .input-group-addon { + color: #a94442; + background-color: #f2dede; + border-color: #a94442; + } + .has-error .form-control-feedback { + color: #a94442; + } + .has-feedback label ~ .form-control-feedback { + top: 25px; + } + .has-feedback label.sr-only ~ .form-control-feedback { + top: 0; + } + .help-block { + display: block; + margin-top: 5px; + margin-bottom: 10px; + color: #737373; + } + @media (min-width: 768px) { + .form-inline .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .form-inline .form-control-static { + display: inline-block; + } + .form-inline .input-group { + display: inline-table; + vertical-align: middle; + } + .form-inline .input-group .input-group-addon, + .form-inline .input-group .input-group-btn, + .form-inline .input-group .form-control { + width: auto; + } + .form-inline .input-group > .form-control { + width: 100%; + } + .form-inline .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio, + .form-inline .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio label, + .form-inline .checkbox label { + padding-left: 0; + } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .form-inline .has-feedback .form-control-feedback { + top: 0; + } + } + .form-horizontal .radio, + .form-horizontal .checkbox, + .form-horizontal .radio-inline, + .form-horizontal .checkbox-inline { + padding-top: 7px; + margin-top: 0; + margin-bottom: 0; + } + .form-horizontal .radio, + .form-horizontal .checkbox { + min-height: 27px; + } + .form-horizontal .form-group { + margin-right: -15px; + margin-left: -15px; + } + @media (min-width: 768px) { + .form-horizontal .control-label { + padding-top: 7px; + margin-bottom: 0; + text-align: right; + } + } + .form-horizontal .has-feedback .form-control-feedback { + right: 15px; + } + @media (min-width: 768px) { + .form-horizontal .form-group-lg .control-label { + padding-top: 11px; + font-size: 18px; + } + } + @media (min-width: 768px) { + .form-horizontal .form-group-sm .control-label { + padding-top: 6px; + font-size: 12px; + } + } + .btn { + display: inline-block; + padding: 6px 12px; + margin-bottom: 0; + font-size: 14px; + font-weight: normal; + line-height: 1.42857143; + text-align: center; + white-space: nowrap; + vertical-align: middle; + -ms-touch-action: manipulation; + touch-action: manipulation; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; + } + .btn:focus, + .btn:active:focus, + .btn.active:focus, + .btn.focus, + .btn:active.focus, + .btn.active.focus { + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; + } + .btn:hover, + .btn:focus, + .btn.focus { + color: #333; + text-decoration: none; + } + .btn:active, + .btn.active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + } + .btn.disabled, + .btn[disabled], + fieldset[disabled] .btn { + cursor: not-allowed; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; + opacity: .65; + } + a.btn.disabled, + fieldset[disabled] a.btn { + pointer-events: none; + } + .btn-default { + color: #333; + background-color: #fff; + border-color: #ccc; + } + .btn-default:focus, + .btn-default.focus { + color: #333; + background-color: #e6e6e6; + border-color: #8c8c8c; + } + .btn-default:hover { + color: #333; + background-color: #e6e6e6; + border-color: #adadad; + } + .btn-default:active, + .btn-default.active, + .open > .dropdown-toggle.btn-default { + color: #333; + background-color: #e6e6e6; + border-color: #adadad; + } + .btn-default:active:hover, + .btn-default.active:hover, + .open > .dropdown-toggle.btn-default:hover, + .btn-default:active:focus, + .btn-default.active:focus, + .open > .dropdown-toggle.btn-default:focus, + .btn-default:active.focus, + .btn-default.active.focus, + .open > .dropdown-toggle.btn-default.focus { + color: #333; + background-color: #d4d4d4; + border-color: #8c8c8c; + } + .btn-default:active, + .btn-default.active, + .open > .dropdown-toggle.btn-default { + background-image: none; + } + .btn-default.disabled:hover, + .btn-default[disabled]:hover, + fieldset[disabled] .btn-default:hover, + .btn-default.disabled:focus, + .btn-default[disabled]:focus, + fieldset[disabled] .btn-default:focus, + .btn-default.disabled.focus, + .btn-default[disabled].focus, + fieldset[disabled] .btn-default.focus { + background-color: #fff; + border-color: #ccc; + } + .btn-default .badge { + color: #fff; + background-color: #333; + } + .btn-primary { + color: #fff; + background-color: #337ab7; + border-color: #2e6da4; + } + .btn-primary:focus, + .btn-primary.focus { + color: #fff; + background-color: #286090; + border-color: #122b40; + } + .btn-primary:hover { + color: #fff; + background-color: #286090; + border-color: #204d74; + } + .btn-primary:active, + .btn-primary.active, + .open > .dropdown-toggle.btn-primary { + color: #fff; + background-color: #286090; + border-color: #204d74; + } + .btn-primary:active:hover, + .btn-primary.active:hover, + .open > .dropdown-toggle.btn-primary:hover, + .btn-primary:active:focus, + .btn-primary.active:focus, + .open > .dropdown-toggle.btn-primary:focus, + .btn-primary:active.focus, + .btn-primary.active.focus, + .open > .dropdown-toggle.btn-primary.focus { + color: #fff; + background-color: #204d74; + border-color: #122b40; + } + .btn-primary:active, + .btn-primary.active, + .open > .dropdown-toggle.btn-primary { + background-image: none; + } + .btn-primary.disabled:hover, + .btn-primary[disabled]:hover, + fieldset[disabled] .btn-primary:hover, + .btn-primary.disabled:focus, + .btn-primary[disabled]:focus, + fieldset[disabled] .btn-primary:focus, + .btn-primary.disabled.focus, + .btn-primary[disabled].focus, + fieldset[disabled] .btn-primary.focus { + background-color: #337ab7; + border-color: #2e6da4; + } + .btn-primary .badge { + color: #337ab7; + background-color: #fff; + } + .btn-success { + color: #fff; + background-color: #5cb85c; + border-color: #4cae4c; + } + .btn-success:focus, + .btn-success.focus { + color: #fff; + background-color: #449d44; + border-color: #255625; + } + .btn-success:hover { + color: #fff; + background-color: #449d44; + border-color: #398439; + } + .btn-success:active, + .btn-success.active, + .open > .dropdown-toggle.btn-success { + color: #fff; + background-color: #449d44; + border-color: #398439; + } + .btn-success:active:hover, + .btn-success.active:hover, + .open > .dropdown-toggle.btn-success:hover, + .btn-success:active:focus, + .btn-success.active:focus, + .open > .dropdown-toggle.btn-success:focus, + .btn-success:active.focus, + .btn-success.active.focus, + .open > .dropdown-toggle.btn-success.focus { + color: #fff; + background-color: #398439; + border-color: #255625; + } + .btn-success:active, + .btn-success.active, + .open > .dropdown-toggle.btn-success { + background-image: none; + } + .btn-success.disabled:hover, + .btn-success[disabled]:hover, + fieldset[disabled] .btn-success:hover, + .btn-success.disabled:focus, + .btn-success[disabled]:focus, + fieldset[disabled] .btn-success:focus, + .btn-success.disabled.focus, + .btn-success[disabled].focus, + fieldset[disabled] .btn-success.focus { + background-color: #5cb85c; + border-color: #4cae4c; + } + .btn-success .badge { + color: #5cb85c; + background-color: #fff; + } + .btn-info { + color: #fff; + background-color: #5bc0de; + border-color: #46b8da; + } + .btn-info:focus, + .btn-info.focus { + color: #fff; + background-color: #31b0d5; + border-color: #1b6d85; + } + .btn-info:hover { + color: #fff; + background-color: #31b0d5; + border-color: #269abc; + } + .btn-info:active, + .btn-info.active, + .open > .dropdown-toggle.btn-info { + color: #fff; + background-color: #31b0d5; + border-color: #269abc; + } + .btn-info:active:hover, + .btn-info.active:hover, + .open > .dropdown-toggle.btn-info:hover, + .btn-info:active:focus, + .btn-info.active:focus, + .open > .dropdown-toggle.btn-info:focus, + .btn-info:active.focus, + .btn-info.active.focus, + .open > .dropdown-toggle.btn-info.focus { + color: #fff; + background-color: #269abc; + border-color: #1b6d85; + } + .btn-info:active, + .btn-info.active, + .open > .dropdown-toggle.btn-info { + background-image: none; + } + .btn-info.disabled:hover, + .btn-info[disabled]:hover, + fieldset[disabled] .btn-info:hover, + .btn-info.disabled:focus, + .btn-info[disabled]:focus, + fieldset[disabled] .btn-info:focus, + .btn-info.disabled.focus, + .btn-info[disabled].focus, + fieldset[disabled] .btn-info.focus { + background-color: #5bc0de; + border-color: #46b8da; + } + .btn-info .badge { + color: #5bc0de; + background-color: #fff; + } + .btn-warning { + color: #fff; + background-color: #f0ad4e; + border-color: #eea236; + } + .btn-warning:focus, + .btn-warning.focus { + color: #fff; + background-color: #ec971f; + border-color: #985f0d; + } + .btn-warning:hover { + color: #fff; + background-color: #ec971f; + border-color: #d58512; + } + .btn-warning:active, + .btn-warning.active, + .open > .dropdown-toggle.btn-warning { + color: #fff; + background-color: #ec971f; + border-color: #d58512; + } + .btn-warning:active:hover, + .btn-warning.active:hover, + .open > .dropdown-toggle.btn-warning:hover, + .btn-warning:active:focus, + .btn-warning.active:focus, + .open > .dropdown-toggle.btn-warning:focus, + .btn-warning:active.focus, + .btn-warning.active.focus, + .open > .dropdown-toggle.btn-warning.focus { + color: #fff; + background-color: #d58512; + border-color: #985f0d; + } + .btn-warning:active, + .btn-warning.active, + .open > .dropdown-toggle.btn-warning { + background-image: none; + } + .btn-warning.disabled:hover, + .btn-warning[disabled]:hover, + fieldset[disabled] .btn-warning:hover, + .btn-warning.disabled:focus, + .btn-warning[disabled]:focus, + fieldset[disabled] .btn-warning:focus, + .btn-warning.disabled.focus, + .btn-warning[disabled].focus, + fieldset[disabled] .btn-warning.focus { + background-color: #f0ad4e; + border-color: #eea236; + } + .btn-warning .badge { + color: #f0ad4e; + background-color: #fff; + } + .btn-danger { + color: #fff; + background-color: #d9534f; + border-color: #d43f3a; + } + .btn-danger:focus, + .btn-danger.focus { + color: #fff; + background-color: #c9302c; + border-color: #761c19; + } + .btn-danger:hover { + color: #fff; + background-color: #c9302c; + border-color: #ac2925; + } + .btn-danger:active, + .btn-danger.active, + .open > .dropdown-toggle.btn-danger { + color: #fff; + background-color: #c9302c; + border-color: #ac2925; + } + .btn-danger:active:hover, + .btn-danger.active:hover, + .open > .dropdown-toggle.btn-danger:hover, + .btn-danger:active:focus, + .btn-danger.active:focus, + .open > .dropdown-toggle.btn-danger:focus, + .btn-danger:active.focus, + .btn-danger.active.focus, + .open > .dropdown-toggle.btn-danger.focus { + color: #fff; + background-color: #ac2925; + border-color: #761c19; + } + .btn-danger:active, + .btn-danger.active, + .open > .dropdown-toggle.btn-danger { + background-image: none; + } + .btn-danger.disabled:hover, + .btn-danger[disabled]:hover, + fieldset[disabled] .btn-danger:hover, + .btn-danger.disabled:focus, + .btn-danger[disabled]:focus, + fieldset[disabled] .btn-danger:focus, + .btn-danger.disabled.focus, + .btn-danger[disabled].focus, + fieldset[disabled] .btn-danger.focus { + background-color: #d9534f; + border-color: #d43f3a; + } + .btn-danger .badge { + color: #d9534f; + background-color: #fff; + } + .btn-link { + font-weight: normal; + color: #337ab7; + border-radius: 0; + } + .btn-link, + .btn-link:active, + .btn-link.active, + .btn-link[disabled], + fieldset[disabled] .btn-link { + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; + } + .btn-link, + .btn-link:hover, + .btn-link:focus, + .btn-link:active { + border-color: transparent; + } + .btn-link:hover, + .btn-link:focus { + color: #23527c; + text-decoration: underline; + background-color: transparent; + } + .btn-link[disabled]:hover, + fieldset[disabled] .btn-link:hover, + .btn-link[disabled]:focus, + fieldset[disabled] .btn-link:focus { + color: #777; + text-decoration: none; + } + .btn-lg, + .btn-group-lg > .btn { + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; + } + .btn-sm, + .btn-group-sm > .btn { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; + } + .btn-xs, + .btn-group-xs > .btn { + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; + } + .btn-block { + display: block; + width: 100%; + } + .btn-block + .btn-block { + margin-top: 5px; + } + input[type="submit"].btn-block, + input[type="reset"].btn-block, + input[type="button"].btn-block { + width: 100%; + } + .fade { + opacity: 0; + -webkit-transition: opacity .15s linear; + -o-transition: opacity .15s linear; + transition: opacity .15s linear; + } + .fade.in { + opacity: 1; + } + .collapse { + display: none; + } + .collapse.in { + display: block; + } + tr.collapse.in { + display: table-row; + } + tbody.collapse.in { + display: table-row-group; + } + .collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition-timing-function: ease; + -o-transition-timing-function: ease; + transition-timing-function: ease; + -webkit-transition-duration: .35s; + -o-transition-duration: .35s; + transition-duration: .35s; + -webkit-transition-property: height, visibility; + -o-transition-property: height, visibility; + transition-property: height, visibility; + } + .caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 4px dashed; + border-top: 4px solid \9; + border-right: 4px solid transparent; + border-left: 4px solid transparent; + } + .dropup, + .dropdown { + position: relative; + } + .dropdown-toggle:focus { + outline: 0; + } + .dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + font-size: 14px; + text-align: left; + list-style: none; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); + box-shadow: 0 6px 12px rgba(0, 0, 0, .175); + } + .dropdown-menu.pull-right { + right: 0; + left: auto; + } + .dropdown-menu .divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; + } + .dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 1.42857143; + color: #333; + white-space: nowrap; + } + .dropdown-menu > li > a:hover, + .dropdown-menu > li > a:focus { + color: #262626; + text-decoration: none; + background-color: #f5f5f5; + } + .dropdown-menu > .active > a, + .dropdown-menu > .active > a:hover, + .dropdown-menu > .active > a:focus { + color: #fff; + text-decoration: none; + background-color: #337ab7; + outline: 0; + } + .dropdown-menu > .disabled > a, + .dropdown-menu > .disabled > a:hover, + .dropdown-menu > .disabled > a:focus { + color: #777; + } + .dropdown-menu > .disabled > a:hover, + .dropdown-menu > .disabled > a:focus { + text-decoration: none; + cursor: not-allowed; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + } + .open > .dropdown-menu { + display: block; + } + .open > a { + outline: 0; + } + .dropdown-menu-right { + right: 0; + left: auto; + } + .dropdown-menu-left { + right: auto; + left: 0; + } + .dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + line-height: 1.42857143; + color: #777; + white-space: nowrap; + } + .dropdown-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 990; + } + .pull-right > .dropdown-menu { + right: 0; + left: auto; + } + .dropup .caret, + .navbar-fixed-bottom .dropdown .caret { + content: ""; + border-top: 0; + border-bottom: 4px dashed; + border-bottom: 4px solid \9; + } + .dropup .dropdown-menu, + .navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 2px; + } + @media (min-width: 768px) { + .navbar-right .dropdown-menu { + right: 0; + left: auto; + } + .navbar-right .dropdown-menu-left { + right: auto; + left: 0; + } + } + .btn-group, + .btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; + } + .btn-group > .btn, + .btn-group-vertical > .btn { + position: relative; + float: left; + } + .btn-group > .btn:hover, + .btn-group-vertical > .btn:hover, + .btn-group > .btn:focus, + .btn-group-vertical > .btn:focus, + .btn-group > .btn:active, + .btn-group-vertical > .btn:active, + .btn-group > .btn.active, + .btn-group-vertical > .btn.active { + z-index: 2; + } + .btn-group .btn + .btn, + .btn-group .btn + .btn-group, + .btn-group .btn-group + .btn, + .btn-group .btn-group + .btn-group { + margin-left: -1px; + } + .btn-toolbar { + margin-left: -5px; + } + .btn-toolbar .btn, + .btn-toolbar .btn-group, + .btn-toolbar .input-group { + float: left; + } + .btn-toolbar > .btn, + .btn-toolbar > .btn-group, + .btn-toolbar > .input-group { + margin-left: 5px; + } + .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; + } + .btn-group > .btn:first-child { + margin-left: 0; + } + .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + .btn-group > .btn:last-child:not(:first-child), + .btn-group > .dropdown-toggle:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + .btn-group > .btn-group { + float: left; + } + .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; + } + .btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, + .btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + .btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + .btn-group .dropdown-toggle:active, + .btn-group.open .dropdown-toggle { + outline: 0; + } + .btn-group > .btn + .dropdown-toggle { + padding-right: 8px; + padding-left: 8px; + } + .btn-group > .btn-lg + .dropdown-toggle { + padding-right: 12px; + padding-left: 12px; + } + .btn-group.open .dropdown-toggle { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + } + .btn-group.open .dropdown-toggle.btn-link { + -webkit-box-shadow: none; + box-shadow: none; + } + .btn .caret { + margin-left: 0; + } + .btn-lg .caret { + border-width: 5px 5px 0; + border-bottom-width: 0; + } + .dropup .btn-lg .caret { + border-width: 0 5px 5px; + } + .btn-group-vertical > .btn, + .btn-group-vertical > .btn-group, + .btn-group-vertical > .btn-group > .btn { + display: block; + float: none; + width: 100%; + max-width: 100%; + } + .btn-group-vertical > .btn-group > .btn { + float: none; + } + .btn-group-vertical > .btn + .btn, + .btn-group-vertical > .btn + .btn-group, + .btn-group-vertical > .btn-group + .btn, + .btn-group-vertical > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; + } + .btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; + } + .btn-group-vertical > .btn:first-child:not(:last-child) { + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } + .btn-group-vertical > .btn:last-child:not(:first-child) { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; + } + .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; + } + .btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, + .btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } + .btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; + } + .btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; + } + .btn-group-justified > .btn, + .btn-group-justified > .btn-group { + display: table-cell; + float: none; + width: 1%; + } + .btn-group-justified > .btn-group .btn { + width: 100%; + } + .btn-group-justified > .btn-group .dropdown-menu { + left: auto; + } + [data-toggle="buttons"] > .btn input[type="radio"], + [data-toggle="buttons"] > .btn-group > .btn input[type="radio"], + [data-toggle="buttons"] > .btn input[type="checkbox"], + [data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; + } + .input-group { + position: relative; + display: table; + border-collapse: separate; + } + .input-group[class*="col-"] { + float: none; + padding-right: 0; + padding-left: 0; + } + .input-group .form-control { + position: relative; + z-index: 2; + float: left; + width: 100%; + margin-bottom: 0; + } + .input-group .form-control:focus { + z-index: 3; + } + .input-group-lg > .form-control, + .input-group-lg > .input-group-addon, + .input-group-lg > .input-group-btn > .btn { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; + } + select.input-group-lg > .form-control, + select.input-group-lg > .input-group-addon, + select.input-group-lg > .input-group-btn > .btn { + height: 46px; + line-height: 46px; + } + textarea.input-group-lg > .form-control, + textarea.input-group-lg > .input-group-addon, + textarea.input-group-lg > .input-group-btn > .btn, + select[multiple].input-group-lg > .form-control, + select[multiple].input-group-lg > .input-group-addon, + select[multiple].input-group-lg > .input-group-btn > .btn { + height: auto; + } + .input-group-sm > .form-control, + .input-group-sm > .input-group-addon, + .input-group-sm > .input-group-btn > .btn { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; + } + select.input-group-sm > .form-control, + select.input-group-sm > .input-group-addon, + select.input-group-sm > .input-group-btn > .btn { + height: 30px; + line-height: 30px; + } + textarea.input-group-sm > .form-control, + textarea.input-group-sm > .input-group-addon, + textarea.input-group-sm > .input-group-btn > .btn, + select[multiple].input-group-sm > .form-control, + select[multiple].input-group-sm > .input-group-addon, + select[multiple].input-group-sm > .input-group-btn > .btn { + height: auto; + } + .input-group-addon, + .input-group-btn, + .input-group .form-control { + display: table-cell; + } + .input-group-addon:not(:first-child):not(:last-child), + .input-group-btn:not(:first-child):not(:last-child), + .input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; + } + .input-group-addon, + .input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; + } + .input-group-addon { + padding: 6px 12px; + font-size: 14px; + font-weight: normal; + line-height: 1; + color: #555; + text-align: center; + background-color: #eee; + border: 1px solid #ccc; + border-radius: 4px; + } + .input-group-addon.input-sm { + padding: 5px 10px; + font-size: 12px; + border-radius: 3px; + } + .input-group-addon.input-lg { + padding: 10px 16px; + font-size: 18px; + border-radius: 6px; + } + .input-group-addon input[type="radio"], + .input-group-addon input[type="checkbox"] { + margin-top: 0; + } + .input-group .form-control:first-child, + .input-group-addon:first-child, + .input-group-btn:first-child > .btn, + .input-group-btn:first-child > .btn-group > .btn, + .input-group-btn:first-child > .dropdown-toggle, + .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), + .input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + .input-group-addon:first-child { + border-right: 0; + } + .input-group .form-control:last-child, + .input-group-addon:last-child, + .input-group-btn:last-child > .btn, + .input-group-btn:last-child > .btn-group > .btn, + .input-group-btn:last-child > .dropdown-toggle, + .input-group-btn:first-child > .btn:not(:first-child), + .input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + .input-group-addon:last-child { + border-left: 0; + } + .input-group-btn { + position: relative; + font-size: 0; + white-space: nowrap; + } + .input-group-btn > .btn { + position: relative; + } + .input-group-btn > .btn + .btn { + margin-left: -1px; + } + .input-group-btn > .btn:hover, + .input-group-btn > .btn:focus, + .input-group-btn > .btn:active { + z-index: 2; + } + .input-group-btn:first-child > .btn, + .input-group-btn:first-child > .btn-group { + margin-right: -1px; + } + .input-group-btn:last-child > .btn, + .input-group-btn:last-child > .btn-group { + z-index: 2; + margin-left: -1px; + } + .nav { + padding-left: 0; + margin-bottom: 0; + list-style: none; + } + .nav > li { + position: relative; + display: block; + } + .nav > li > a { + position: relative; + display: block; + padding: 10px 15px; + } + .nav > li > a:hover, + .nav > li > a:focus { + text-decoration: none; + background-color: #eee; + } + .nav > li.disabled > a { + color: #777; + } + .nav > li.disabled > a:hover, + .nav > li.disabled > a:focus { + color: #777; + text-decoration: none; + cursor: not-allowed; + background-color: transparent; + } + .nav .open > a, + .nav .open > a:hover, + .nav .open > a:focus { + background-color: #eee; + border-color: #337ab7; + } + .nav .nav-divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; + } + .nav > li > a > img { + max-width: none; + } + .nav-tabs { + border-bottom: 1px solid #ddd; + } + .nav-tabs > li { + float: left; + margin-bottom: -1px; + } + .nav-tabs > li > a { + margin-right: 2px; + line-height: 1.42857143; + border: 1px solid transparent; + border-radius: 4px 4px 0 0; + } + .nav-tabs > li > a:hover { + border-color: #eee #eee #ddd; + } + .nav-tabs > li.active > a, + .nav-tabs > li.active > a:hover, + .nav-tabs > li.active > a:focus { + color: #555; + cursor: default; + background-color: #fff; + border: 1px solid #ddd; + border-bottom-color: transparent; + } + .nav-tabs.nav-justified { + width: 100%; + border-bottom: 0; + } + .nav-tabs.nav-justified > li { + float: none; + } + .nav-tabs.nav-justified > li > a { + margin-bottom: 5px; + text-align: center; + } + .nav-tabs.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; + } + @media (min-width: 768px) { + .nav-tabs.nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-tabs.nav-justified > li > a { + margin-bottom: 0; + } + } + .nav-tabs.nav-justified > li > a { + margin-right: 0; + border-radius: 4px; + } + .nav-tabs.nav-justified > .active > a, + .nav-tabs.nav-justified > .active > a:hover, + .nav-tabs.nav-justified > .active > a:focus { + border: 1px solid #ddd; + } + @media (min-width: 768px) { + .nav-tabs.nav-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs.nav-justified > .active > a, + .nav-tabs.nav-justified > .active > a:hover, + .nav-tabs.nav-justified > .active > a:focus { + border-bottom-color: #fff; + } + } + .nav-pills > li { + float: left; + } + .nav-pills > li > a { + border-radius: 4px; + } + .nav-pills > li + li { + margin-left: 2px; + } + .nav-pills > li.active > a, + .nav-pills > li.active > a:hover, + .nav-pills > li.active > a:focus { + color: #fff; + background-color: #337ab7; + } + .nav-stacked > li { + float: none; + } + .nav-stacked > li + li { + margin-top: 2px; + margin-left: 0; + } + .nav-justified { + width: 100%; + } + .nav-justified > li { + float: none; + } + .nav-justified > li > a { + margin-bottom: 5px; + text-align: center; + } + .nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; + } + @media (min-width: 768px) { + .nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-justified > li > a { + margin-bottom: 0; + } + } + .nav-tabs-justified { + border-bottom: 0; + } + .nav-tabs-justified > li > a { + margin-right: 0; + border-radius: 4px; + } + .nav-tabs-justified > .active > a, + .nav-tabs-justified > .active > a:hover, + .nav-tabs-justified > .active > a:focus { + border: 1px solid #ddd; + } + @media (min-width: 768px) { + .nav-tabs-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs-justified > .active > a, + .nav-tabs-justified > .active > a:hover, + .nav-tabs-justified > .active > a:focus { + border-bottom-color: #fff; + } + } + .tab-content > .tab-pane { + display: none; + } + .tab-content > .active { + display: block; + } + .nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0; + } + .navbar { + position: relative; + min-height: 50px; + margin-bottom: 20px; + border: 1px solid transparent; + } + @media (min-width: 768px) { + .navbar { + border-radius: 4px; + } + } + @media (min-width: 768px) { + .navbar-header { + float: left; + } + } + .navbar-collapse { + padding-right: 15px; + padding-left: 15px; + overflow-x: visible; + -webkit-overflow-scrolling: touch; + border-top: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); + } + .navbar-collapse.in { + overflow-y: auto; + } + @media (min-width: 768px) { + .navbar-collapse { + width: auto; + border-top: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-collapse.collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important; + } + .navbar-collapse.in { + overflow-y: visible; + } + .navbar-fixed-top .navbar-collapse, + .navbar-static-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + padding-right: 0; + padding-left: 0; + } + } + .navbar-fixed-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + max-height: 340px; + } + @media (max-device-width: 480px) and (orientation: landscape) { + .navbar-fixed-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + max-height: 200px; + } + } + .container > .navbar-header, + .container-fluid > .navbar-header, + .container > .navbar-collapse, + .container-fluid > .navbar-collapse { + margin-right: -15px; + margin-left: -15px; + } + @media (min-width: 768px) { + .container > .navbar-header, + .container-fluid > .navbar-header, + .container > .navbar-collapse, + .container-fluid > .navbar-collapse { + margin-right: 0; + margin-left: 0; + } + } + .navbar-static-top { + z-index: 1000; + border-width: 0 0 1px; + } + @media (min-width: 768px) { + .navbar-static-top { + border-radius: 0; + } + } + .navbar-fixed-top, + .navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; + } + @media (min-width: 768px) { + .navbar-fixed-top, + .navbar-fixed-bottom { + border-radius: 0; + } + } + .navbar-fixed-top { + top: 0; + border-width: 0 0 1px; + } + .navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; + border-width: 1px 0 0; + } + .navbar-brand { + float: left; + height: 50px; + padding: 15px 15px; + font-size: 18px; + line-height: 20px; + } + .navbar-brand:hover, + .navbar-brand:focus { + text-decoration: none; + } + .navbar-brand > img { + display: block; + } + @media (min-width: 768px) { + .navbar > .container .navbar-brand, + .navbar > .container-fluid .navbar-brand { + margin-left: -15px; + } + } + .navbar-toggle { + position: relative; + float: right; + padding: 9px 10px; + margin-top: 8px; + margin-right: 15px; + margin-bottom: 8px; + background-color: transparent; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; + } + .navbar-toggle:focus { + outline: 0; + } + .navbar-toggle .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px; + } + .navbar-toggle .icon-bar + .icon-bar { + margin-top: 4px; + } + @media (min-width: 768px) { + .navbar-toggle { + display: none; + } + } + .navbar-nav { + margin: 7.5px -15px; + } + .navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; + line-height: 20px; + } + @media (max-width: 767px) { + .navbar-nav .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-nav .open .dropdown-menu > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 5px 15px 5px 25px; + } + .navbar-nav .open .dropdown-menu > li > a { + line-height: 20px; + } + .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-nav .open .dropdown-menu > li > a:focus { + background-image: none; + } + } + @media (min-width: 768px) { + .navbar-nav { + float: left; + margin: 0; + } + .navbar-nav > li { + float: left; + } + .navbar-nav > li > a { + padding-top: 15px; + padding-bottom: 15px; + } + } + .navbar-form { + padding: 10px 15px; + margin-top: 8px; + margin-right: -15px; + margin-bottom: 8px; + margin-left: -15px; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); + } + @media (min-width: 768px) { + .navbar-form .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .navbar-form .form-control-static { + display: inline-block; + } + .navbar-form .input-group { + display: inline-table; + vertical-align: middle; + } + .navbar-form .input-group .input-group-addon, + .navbar-form .input-group .input-group-btn, + .navbar-form .input-group .form-control { + width: auto; + } + .navbar-form .input-group > .form-control { + width: 100%; + } + .navbar-form .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio, + .navbar-form .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio label, + .navbar-form .checkbox label { + padding-left: 0; + } + .navbar-form .radio input[type="radio"], + .navbar-form .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .navbar-form .has-feedback .form-control-feedback { + top: 0; + } + } + @media (max-width: 767px) { + .navbar-form .form-group { + margin-bottom: 5px; + } + .navbar-form .form-group:last-child { + margin-bottom: 0; + } + } + @media (min-width: 768px) { + .navbar-form { + width: auto; + padding-top: 0; + padding-bottom: 0; + margin-right: 0; + margin-left: 0; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + } + .navbar-nav > li > .dropdown-menu { + margin-top: 0; + border-top-left-radius: 0; + border-top-right-radius: 0; + } + .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + margin-bottom: 0; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } + .navbar-btn { + margin-top: 8px; + margin-bottom: 8px; + } + .navbar-btn.btn-sm { + margin-top: 10px; + margin-bottom: 10px; + } + .navbar-btn.btn-xs { + margin-top: 14px; + margin-bottom: 14px; + } + .navbar-text { + margin-top: 15px; + margin-bottom: 15px; + } + @media (min-width: 768px) { + .navbar-text { + float: left; + margin-right: 15px; + margin-left: 15px; + } + } + @media (min-width: 768px) { + .navbar-left { + float: left !important; + } + .navbar-right { + float: right !important; + margin-right: -15px; + } + .navbar-right ~ .navbar-right { + margin-right: 0; + } + } + .navbar-default { + background-color: #f8f8f8; + border-color: #e7e7e7; + } + .navbar-default .navbar-brand { + color: #777; + } + .navbar-default .navbar-brand:hover, + .navbar-default .navbar-brand:focus { + color: #5e5e5e; + background-color: transparent; + } + .navbar-default .navbar-text { + color: #777; + } + .navbar-default .navbar-nav > li > a { + color: #777; + } + .navbar-default .navbar-nav > li > a:hover, + .navbar-default .navbar-nav > li > a:focus { + color: #333; + background-color: transparent; + } + .navbar-default .navbar-nav > .active > a, + .navbar-default .navbar-nav > .active > a:hover, + .navbar-default .navbar-nav > .active > a:focus { + color: #555; + background-color: #e7e7e7; + } + .navbar-default .navbar-nav > .disabled > a, + .navbar-default .navbar-nav > .disabled > a:hover, + .navbar-default .navbar-nav > .disabled > a:focus { + color: #ccc; + background-color: transparent; + } + .navbar-default .navbar-toggle { + border-color: #ddd; + } + .navbar-default .navbar-toggle:hover, + .navbar-default .navbar-toggle:focus { + background-color: #ddd; + } + .navbar-default .navbar-toggle .icon-bar { + background-color: #888; + } + .navbar-default .navbar-collapse, + .navbar-default .navbar-form { + border-color: #e7e7e7; + } + .navbar-default .navbar-nav > .open > a, + .navbar-default .navbar-nav > .open > a:hover, + .navbar-default .navbar-nav > .open > a:focus { + color: #555; + background-color: #e7e7e7; + } + @media (max-width: 767px) { + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #777; + } + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #333; + background-color: transparent; + } + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #555; + background-color: #e7e7e7; + } + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #ccc; + background-color: transparent; + } + } + .navbar-default .navbar-link { + color: #777; + } + .navbar-default .navbar-link:hover { + color: #333; + } + .navbar-default .btn-link { + color: #777; + } + .navbar-default .btn-link:hover, + .navbar-default .btn-link:focus { + color: #333; + } + .navbar-default .btn-link[disabled]:hover, + fieldset[disabled] .navbar-default .btn-link:hover, + .navbar-default .btn-link[disabled]:focus, + fieldset[disabled] .navbar-default .btn-link:focus { + color: #ccc; + } + .navbar-inverse { + background-color: #222; + border-color: #080808; + } + .navbar-inverse .navbar-brand { + color: #9d9d9d; + } + .navbar-inverse .navbar-brand:hover, + .navbar-inverse .navbar-brand:focus { + color: #fff; + background-color: transparent; + } + .navbar-inverse .navbar-text { + color: #9d9d9d; + } + .navbar-inverse .navbar-nav > li > a { + color: #9d9d9d; + } + .navbar-inverse .navbar-nav > li > a:hover, + .navbar-inverse .navbar-nav > li > a:focus { + color: #fff; + background-color: transparent; + } + .navbar-inverse .navbar-nav > .active > a, + .navbar-inverse .navbar-nav > .active > a:hover, + .navbar-inverse .navbar-nav > .active > a:focus { + color: #fff; + background-color: #080808; + } + .navbar-inverse .navbar-nav > .disabled > a, + .navbar-inverse .navbar-nav > .disabled > a:hover, + .navbar-inverse .navbar-nav > .disabled > a:focus { + color: #444; + background-color: transparent; + } + .navbar-inverse .navbar-toggle { + border-color: #333; + } + .navbar-inverse .navbar-toggle:hover, + .navbar-inverse .navbar-toggle:focus { + background-color: #333; + } + .navbar-inverse .navbar-toggle .icon-bar { + background-color: #fff; + } + .navbar-inverse .navbar-collapse, + .navbar-inverse .navbar-form { + border-color: #101010; + } + .navbar-inverse .navbar-nav > .open > a, + .navbar-inverse .navbar-nav > .open > a:hover, + .navbar-inverse .navbar-nav > .open > a:focus { + color: #fff; + background-color: #080808; + } + @media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu .divider { + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { + color: #9d9d9d; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #fff; + background-color: transparent; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #fff; + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #444; + background-color: transparent; + } + } + .navbar-inverse .navbar-link { + color: #9d9d9d; + } + .navbar-inverse .navbar-link:hover { + color: #fff; + } + .navbar-inverse .btn-link { + color: #9d9d9d; + } + .navbar-inverse .btn-link:hover, + .navbar-inverse .btn-link:focus { + color: #fff; + } + .navbar-inverse .btn-link[disabled]:hover, + fieldset[disabled] .navbar-inverse .btn-link:hover, + .navbar-inverse .btn-link[disabled]:focus, + fieldset[disabled] .navbar-inverse .btn-link:focus { + color: #444; + } + .breadcrumb { + padding: 8px 15px; + margin-bottom: 20px; + list-style: none; + background-color: #f5f5f5; + border-radius: 4px; + } + .breadcrumb > li { + display: inline-block; + } + .breadcrumb > li + li:before { + padding: 0 5px; + color: #ccc; + content: "/\00a0"; + } + .breadcrumb > .active { + color: #777; + } + .pagination { + display: inline-block; + padding-left: 0; + margin: 20px 0; + border-radius: 4px; + } + .pagination > li { + display: inline; + } + .pagination > li > a, + .pagination > li > span { + position: relative; + float: left; + padding: 6px 12px; + margin-left: -1px; + line-height: 1.42857143; + color: #337ab7; + text-decoration: none; + background-color: #fff; + border: 1px solid #ddd; + } + .pagination > li:first-child > a, + .pagination > li:first-child > span { + margin-left: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; + } + .pagination > li:last-child > a, + .pagination > li:last-child > span { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + } + .pagination > li > a:hover, + .pagination > li > span:hover, + .pagination > li > a:focus, + .pagination > li > span:focus { + z-index: 2; + color: #23527c; + background-color: #eee; + border-color: #ddd; + } + .pagination > .active > a, + .pagination > .active > span, + .pagination > .active > a:hover, + .pagination > .active > span:hover, + .pagination > .active > a:focus, + .pagination > .active > span:focus { + z-index: 3; + color: #fff; + cursor: default; + background-color: #337ab7; + border-color: #337ab7; + } + .pagination > .disabled > span, + .pagination > .disabled > span:hover, + .pagination > .disabled > span:focus, + .pagination > .disabled > a, + .pagination > .disabled > a:hover, + .pagination > .disabled > a:focus { + color: #777; + cursor: not-allowed; + background-color: #fff; + border-color: #ddd; + } + .pagination-lg > li > a, + .pagination-lg > li > span { + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + } + .pagination-lg > li:first-child > a, + .pagination-lg > li:first-child > span { + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; + } + .pagination-lg > li:last-child > a, + .pagination-lg > li:last-child > span { + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; + } + .pagination-sm > li > a, + .pagination-sm > li > span { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + } + .pagination-sm > li:first-child > a, + .pagination-sm > li:first-child > span { + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + } + .pagination-sm > li:last-child > a, + .pagination-sm > li:last-child > span { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + } + .pager { + padding-left: 0; + margin: 20px 0; + text-align: center; + list-style: none; + } + .pager li { + display: inline; + } + .pager li > a, + .pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 15px; + } + .pager li > a:hover, + .pager li > a:focus { + text-decoration: none; + background-color: #eee; + } + .pager .next > a, + .pager .next > span { + float: right; + } + .pager .previous > a, + .pager .previous > span { + float: left; + } + .pager .disabled > a, + .pager .disabled > a:hover, + .pager .disabled > a:focus, + .pager .disabled > span { + color: #777; + cursor: not-allowed; + background-color: #fff; + } + .label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; + } + a.label:hover, + a.label:focus { + color: #fff; + text-decoration: none; + cursor: pointer; + } + .label:empty { + display: none; + } + .btn .label { + position: relative; + top: -1px; + } + .label-default { + background-color: #777; + } + .label-default[href]:hover, + .label-default[href]:focus { + background-color: #5e5e5e; + } + .label-primary { + background-color: #337ab7; + } + .label-primary[href]:hover, + .label-primary[href]:focus { + background-color: #286090; + } + .label-success { + background-color: #5cb85c; + } + .label-success[href]:hover, + .label-success[href]:focus { + background-color: #449d44; + } + .label-info { + background-color: #5bc0de; + } + .label-info[href]:hover, + .label-info[href]:focus { + background-color: #31b0d5; + } + .label-warning { + background-color: #f0ad4e; + } + .label-warning[href]:hover, + .label-warning[href]:focus { + background-color: #ec971f; + } + .label-danger { + background-color: #d9534f; + } + .label-danger[href]:hover, + .label-danger[href]:focus { + background-color: #c9302c; + } + .badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: 12px; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: middle; + background-color: #777; + border-radius: 10px; + } + .badge:empty { + display: none; + } + .btn .badge { + position: relative; + top: -1px; + } + .btn-xs .badge, + .btn-group-xs > .btn .badge { + top: 0; + padding: 1px 5px; + } + a.badge:hover, + a.badge:focus { + color: #fff; + text-decoration: none; + cursor: pointer; + } + .list-group-item.active > .badge, + .nav-pills > .active > a > .badge { + color: #337ab7; + background-color: #fff; + } + .list-group-item > .badge { + float: right; + } + .list-group-item > .badge + .badge { + margin-right: 5px; + } + .nav-pills > li > a > .badge { + margin-left: 3px; + } + .jumbotron { + padding-top: 30px; + padding-bottom: 30px; + margin-bottom: 30px; + color: inherit; + background-color: #eee; + } + .jumbotron h1, + .jumbotron .h1 { + color: inherit; + } + .jumbotron p { + margin-bottom: 15px; + font-size: 21px; + font-weight: 200; + } + .jumbotron > hr { + border-top-color: #d5d5d5; + } + .container .jumbotron, + .container-fluid .jumbotron { + padding-right: 15px; + padding-left: 15px; + border-radius: 6px; + } + .jumbotron .container { + max-width: 100%; + } + @media screen and (min-width: 768px) { + .jumbotron { + padding-top: 48px; + padding-bottom: 48px; + } + .container .jumbotron, + .container-fluid .jumbotron { + padding-right: 60px; + padding-left: 60px; + } + .jumbotron h1, + .jumbotron .h1 { + font-size: 63px; + } + } + .thumbnail { + display: block; + padding: 4px; + margin-bottom: 20px; + line-height: 1.42857143; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: border .2s ease-in-out; + -o-transition: border .2s ease-in-out; + transition: border .2s ease-in-out; + } + .thumbnail > img, + .thumbnail a > img { + margin-right: auto; + margin-left: auto; + } + a.thumbnail:hover, + a.thumbnail:focus, + a.thumbnail.active { + border-color: #337ab7; + } + .thumbnail .caption { + padding: 9px; + color: #333; + } + .alert { + padding: 15px; + margin-bottom: 20px; + border: 1px solid transparent; + border-radius: 4px; + } + .alert h4 { + margin-top: 0; + color: inherit; + } + .alert .alert-link { + font-weight: bold; + } + .alert > p, + .alert > ul { + margin-bottom: 0; + } + .alert > p + p { + margin-top: 5px; + } + .alert-dismissable, + .alert-dismissible { + padding-right: 35px; + } + .alert-dismissable .close, + .alert-dismissible .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; + } + .alert-success { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; + } + .alert-success hr { + border-top-color: #c9e2b3; + } + .alert-success .alert-link { + color: #2b542c; + } + .alert-info { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; + } + .alert-info hr { + border-top-color: #a6e1ec; + } + .alert-info .alert-link { + color: #245269; + } + .alert-warning { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; + } + .alert-warning hr { + border-top-color: #f7e1b5; + } + .alert-warning .alert-link { + color: #66512c; + } + .alert-danger { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; + } + .alert-danger hr { + border-top-color: #e4b9c0; + } + .alert-danger .alert-link { + color: #843534; + } + @-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } + } + @-o-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } + } + @keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } + } + .progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); + } + .progress-bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #fff; + text-align: center; + background-color: #337ab7; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); + -webkit-transition: width .6s ease; + -o-transition: width .6s ease; + transition: width .6s ease; + } + .progress-striped .progress-bar, + .progress-bar-striped { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + background-size: 40px 40px; + } + .progress.active .progress-bar, + .progress-bar.active { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; + } + .progress-bar-success { + background-color: #5cb85c; + } + .progress-striped .progress-bar-success { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + } + .progress-bar-info { + background-color: #5bc0de; + } + .progress-striped .progress-bar-info { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + } + .progress-bar-warning { + background-color: #f0ad4e; + } + .progress-striped .progress-bar-warning { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + } + .progress-bar-danger { + background-color: #d9534f; + } + .progress-striped .progress-bar-danger { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + } + .media { + margin-top: 15px; + } + .media:first-child { + margin-top: 0; + } + .media, + .media-body { + overflow: hidden; + zoom: 1; + } + .media-body { + width: 10000px; + } + .media-object { + display: block; + } + .media-object.img-thumbnail { + max-width: none; + } + .media-right, + .media > .pull-right { + padding-left: 10px; + } + .media-left, + .media > .pull-left { + padding-right: 10px; + } + .media-left, + .media-right, + .media-body { + display: table-cell; + vertical-align: top; + } + .media-middle { + vertical-align: middle; + } + .media-bottom { + vertical-align: bottom; + } + .media-heading { + margin-top: 0; + margin-bottom: 5px; + } + .media-list { + padding-left: 0; + list-style: none; + } + .list-group { + padding-left: 0; + margin-bottom: 20px; + } + .list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #fff; + border: 1px solid #ddd; + } + .list-group-item:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 4px; + } + .list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; + } + a.list-group-item, + button.list-group-item { + color: #555; + } + a.list-group-item .list-group-item-heading, + button.list-group-item .list-group-item-heading { + color: #333; + } + a.list-group-item:hover, + button.list-group-item:hover, + a.list-group-item:focus, + button.list-group-item:focus { + color: #555; + text-decoration: none; + background-color: #f5f5f5; + } + button.list-group-item { + width: 100%; + text-align: left; + } + .list-group-item.disabled, + .list-group-item.disabled:hover, + .list-group-item.disabled:focus { + color: #777; + cursor: not-allowed; + background-color: #eee; + } + .list-group-item.disabled .list-group-item-heading, + .list-group-item.disabled:hover .list-group-item-heading, + .list-group-item.disabled:focus .list-group-item-heading { + color: inherit; + } + .list-group-item.disabled .list-group-item-text, + .list-group-item.disabled:hover .list-group-item-text, + .list-group-item.disabled:focus .list-group-item-text { + color: #777; + } + .list-group-item.active, + .list-group-item.active:hover, + .list-group-item.active:focus { + z-index: 2; + color: #fff; + background-color: #337ab7; + border-color: #337ab7; + } + .list-group-item.active .list-group-item-heading, + .list-group-item.active:hover .list-group-item-heading, + .list-group-item.active:focus .list-group-item-heading, + .list-group-item.active .list-group-item-heading > small, + .list-group-item.active:hover .list-group-item-heading > small, + .list-group-item.active:focus .list-group-item-heading > small, + .list-group-item.active .list-group-item-heading > .small, + .list-group-item.active:hover .list-group-item-heading > .small, + .list-group-item.active:focus .list-group-item-heading > .small { + color: inherit; + } + .list-group-item.active .list-group-item-text, + .list-group-item.active:hover .list-group-item-text, + .list-group-item.active:focus .list-group-item-text { + color: #c7ddef; + } + .list-group-item-success { + color: #3c763d; + background-color: #dff0d8; + } + a.list-group-item-success, + button.list-group-item-success { + color: #3c763d; + } + a.list-group-item-success .list-group-item-heading, + button.list-group-item-success .list-group-item-heading { + color: inherit; + } + a.list-group-item-success:hover, + button.list-group-item-success:hover, + a.list-group-item-success:focus, + button.list-group-item-success:focus { + color: #3c763d; + background-color: #d0e9c6; + } + a.list-group-item-success.active, + button.list-group-item-success.active, + a.list-group-item-success.active:hover, + button.list-group-item-success.active:hover, + a.list-group-item-success.active:focus, + button.list-group-item-success.active:focus { + color: #fff; + background-color: #3c763d; + border-color: #3c763d; + } + .list-group-item-info { + color: #31708f; + background-color: #d9edf7; + } + a.list-group-item-info, + button.list-group-item-info { + color: #31708f; + } + a.list-group-item-info .list-group-item-heading, + button.list-group-item-info .list-group-item-heading { + color: inherit; + } + a.list-group-item-info:hover, + button.list-group-item-info:hover, + a.list-group-item-info:focus, + button.list-group-item-info:focus { + color: #31708f; + background-color: #c4e3f3; + } + a.list-group-item-info.active, + button.list-group-item-info.active, + a.list-group-item-info.active:hover, + button.list-group-item-info.active:hover, + a.list-group-item-info.active:focus, + button.list-group-item-info.active:focus { + color: #fff; + background-color: #31708f; + border-color: #31708f; + } + .list-group-item-warning { + color: #8a6d3b; + background-color: #fcf8e3; + } + a.list-group-item-warning, + button.list-group-item-warning { + color: #8a6d3b; + } + a.list-group-item-warning .list-group-item-heading, + button.list-group-item-warning .list-group-item-heading { + color: inherit; + } + a.list-group-item-warning:hover, + button.list-group-item-warning:hover, + a.list-group-item-warning:focus, + button.list-group-item-warning:focus { + color: #8a6d3b; + background-color: #faf2cc; + } + a.list-group-item-warning.active, + button.list-group-item-warning.active, + a.list-group-item-warning.active:hover, + button.list-group-item-warning.active:hover, + a.list-group-item-warning.active:focus, + button.list-group-item-warning.active:focus { + color: #fff; + background-color: #8a6d3b; + border-color: #8a6d3b; + } + .list-group-item-danger { + color: #a94442; + background-color: #f2dede; + } + a.list-group-item-danger, + button.list-group-item-danger { + color: #a94442; + } + a.list-group-item-danger .list-group-item-heading, + button.list-group-item-danger .list-group-item-heading { + color: inherit; + } + a.list-group-item-danger:hover, + button.list-group-item-danger:hover, + a.list-group-item-danger:focus, + button.list-group-item-danger:focus { + color: #a94442; + background-color: #ebcccc; + } + a.list-group-item-danger.active, + button.list-group-item-danger.active, + a.list-group-item-danger.active:hover, + button.list-group-item-danger.active:hover, + a.list-group-item-danger.active:focus, + button.list-group-item-danger.active:focus { + color: #fff; + background-color: #a94442; + border-color: #a94442; + } + .list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; + } + .list-group-item-text { + margin-bottom: 0; + line-height: 1.3; + } + .panel { + margin-bottom: 20px; + background-color: #fff; + border: 1px solid transparent; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05); + box-shadow: 0 1px 1px rgba(0, 0, 0, .05); + } + .panel-body { + padding: 15px; + } + .panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-left-radius: 3px; + border-top-right-radius: 3px; + } + .panel-heading > .dropdown .dropdown-toggle { + color: inherit; + } + .panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 16px; + color: inherit; + } + .panel-title > a, + .panel-title > small, + .panel-title > .small, + .panel-title > small > a, + .panel-title > .small > a { + color: inherit; + } + .panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; + } + .panel > .list-group, + .panel > .panel-collapse > .list-group { + margin-bottom: 0; + } + .panel > .list-group .list-group-item, + .panel > .panel-collapse > .list-group .list-group-item { + border-width: 1px 0; + border-radius: 0; + } + .panel > .list-group:first-child .list-group-item:first-child, + .panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { + border-top: 0; + border-top-left-radius: 3px; + border-top-right-radius: 3px; + } + .panel > .list-group:last-child .list-group-item:last-child, + .panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { + border-bottom: 0; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; + } + .panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; + } + .panel-heading + .list-group .list-group-item:first-child { + border-top-width: 0; + } + .list-group + .panel-footer { + border-top-width: 0; + } + .panel > .table, + .panel > .table-responsive > .table, + .panel > .panel-collapse > .table { + margin-bottom: 0; + } + .panel > .table caption, + .panel > .table-responsive > .table caption, + .panel > .panel-collapse > .table caption { + padding-right: 15px; + padding-left: 15px; + } + .panel > .table:first-child, + .panel > .table-responsive:first-child > .table:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; + } + .panel > .table:first-child > thead:first-child > tr:first-child, + .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, + .panel > .table:first-child > tbody:first-child > tr:first-child, + .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; + } + .panel > .table:first-child > thead:first-child > tr:first-child td:first-child, + .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, + .panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, + .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, + .panel > .table:first-child > thead:first-child > tr:first-child th:first-child, + .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, + .panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, + .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { + border-top-left-radius: 3px; + } + .panel > .table:first-child > thead:first-child > tr:first-child td:last-child, + .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, + .panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, + .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, + .panel > .table:first-child > thead:first-child > tr:first-child th:last-child, + .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, + .panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, + .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { + border-top-right-radius: 3px; + } + .panel > .table:last-child, + .panel > .table-responsive:last-child > .table:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; + } + .panel > .table:last-child > tbody:last-child > tr:last-child, + .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, + .panel > .table:last-child > tfoot:last-child > tr:last-child, + .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; + } + .panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, + .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, + .panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, + .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, + .panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, + .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, + .panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, + .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { + border-bottom-left-radius: 3px; + } + .panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, + .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, + .panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, + .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, + .panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, + .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, + .panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, + .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { + border-bottom-right-radius: 3px; + } + .panel > .panel-body + .table, + .panel > .panel-body + .table-responsive, + .panel > .table + .panel-body, + .panel > .table-responsive + .panel-body { + border-top: 1px solid #ddd; + } + .panel > .table > tbody:first-child > tr:first-child th, + .panel > .table > tbody:first-child > tr:first-child td { + border-top: 0; + } + .panel > .table-bordered, + .panel > .table-responsive > .table-bordered { + border: 0; + } + .panel > .table-bordered > thead > tr > th:first-child, + .panel > .table-responsive > .table-bordered > thead > tr > th:first-child, + .panel > .table-bordered > tbody > tr > th:first-child, + .panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, + .panel > .table-bordered > tfoot > tr > th:first-child, + .panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .panel > .table-bordered > thead > tr > td:first-child, + .panel > .table-responsive > .table-bordered > thead > tr > td:first-child, + .panel > .table-bordered > tbody > tr > td:first-child, + .panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, + .panel > .table-bordered > tfoot > tr > td:first-child, + .panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; + } + .panel > .table-bordered > thead > tr > th:last-child, + .panel > .table-responsive > .table-bordered > thead > tr > th:last-child, + .panel > .table-bordered > tbody > tr > th:last-child, + .panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, + .panel > .table-bordered > tfoot > tr > th:last-child, + .panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .panel > .table-bordered > thead > tr > td:last-child, + .panel > .table-responsive > .table-bordered > thead > tr > td:last-child, + .panel > .table-bordered > tbody > tr > td:last-child, + .panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, + .panel > .table-bordered > tfoot > tr > td:last-child, + .panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; + } + .panel > .table-bordered > thead > tr:first-child > td, + .panel > .table-responsive > .table-bordered > thead > tr:first-child > td, + .panel > .table-bordered > tbody > tr:first-child > td, + .panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, + .panel > .table-bordered > thead > tr:first-child > th, + .panel > .table-responsive > .table-bordered > thead > tr:first-child > th, + .panel > .table-bordered > tbody > tr:first-child > th, + .panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { + border-bottom: 0; + } + .panel > .table-bordered > tbody > tr:last-child > td, + .panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, + .panel > .table-bordered > tfoot > tr:last-child > td, + .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, + .panel > .table-bordered > tbody > tr:last-child > th, + .panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, + .panel > .table-bordered > tfoot > tr:last-child > th, + .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { + border-bottom: 0; + } + .panel > .table-responsive { + margin-bottom: 0; + border: 0; + } + .panel-group { + margin-bottom: 20px; + } + .panel-group .panel { + margin-bottom: 0; + border-radius: 4px; + } + .panel-group .panel + .panel { + margin-top: 5px; + } + .panel-group .panel-heading { + border-bottom: 0; + } + .panel-group .panel-heading + .panel-collapse > .panel-body, + .panel-group .panel-heading + .panel-collapse > .list-group { + border-top: 1px solid #ddd; + } + .panel-group .panel-footer { + border-top: 0; + } + .panel-group .panel-footer + .panel-collapse .panel-body { + border-bottom: 1px solid #ddd; + } + .panel-default { + border-color: #ddd; + } + .panel-default > .panel-heading { + color: #333; + background-color: #f5f5f5; + border-color: #ddd; + } + .panel-default > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ddd; + } + .panel-default > .panel-heading .badge { + color: #f5f5f5; + background-color: #333; + } + .panel-default > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ddd; + } + .panel-primary { + border-color: #337ab7; + } + .panel-primary > .panel-heading { + color: #fff; + background-color: #337ab7; + border-color: #337ab7; + } + .panel-primary > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #337ab7; + } + .panel-primary > .panel-heading .badge { + color: #337ab7; + background-color: #fff; + } + .panel-primary > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #337ab7; + } + .panel-success { + border-color: #d6e9c6; + } + .panel-success > .panel-heading { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; + } + .panel-success > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #d6e9c6; + } + .panel-success > .panel-heading .badge { + color: #dff0d8; + background-color: #3c763d; + } + .panel-success > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #d6e9c6; + } + .panel-info { + border-color: #bce8f1; + } + .panel-info > .panel-heading { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; + } + .panel-info > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #bce8f1; + } + .panel-info > .panel-heading .badge { + color: #d9edf7; + background-color: #31708f; + } + .panel-info > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #bce8f1; + } + .panel-warning { + border-color: #faebcc; + } + .panel-warning > .panel-heading { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; + } + .panel-warning > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #faebcc; + } + .panel-warning > .panel-heading .badge { + color: #fcf8e3; + background-color: #8a6d3b; + } + .panel-warning > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #faebcc; + } + .panel-danger { + border-color: #ebccd1; + } + .panel-danger > .panel-heading { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; + } + .panel-danger > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ebccd1; + } + .panel-danger > .panel-heading .badge { + color: #f2dede; + background-color: #a94442; + } + .panel-danger > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ebccd1; + } + .embed-responsive { + position: relative; + display: block; + height: 0; + padding: 0; + overflow: hidden; + } + .embed-responsive .embed-responsive-item, + .embed-responsive iframe, + .embed-responsive embed, + .embed-responsive object, + .embed-responsive video { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + border: 0; + } + .embed-responsive-16by9 { + padding-bottom: 56.25%; + } + .embed-responsive-4by3 { + padding-bottom: 75%; + } + .well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); + } + .well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, .15); + } + .well-lg { + padding: 24px; + border-radius: 6px; + } + .well-sm { + padding: 9px; + border-radius: 3px; + } + .close { + float: right; + font-size: 21px; + font-weight: bold; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + filter: alpha(opacity=20); + opacity: .2; + } + .close:hover, + .close:focus { + color: #000; + text-decoration: none; + cursor: pointer; + filter: alpha(opacity=50); + opacity: .5; + } + button.close { + -webkit-appearance: none; + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + } + .modal-open { + overflow: hidden; + } + .modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1050; + display: none; + overflow: hidden; + -webkit-overflow-scrolling: touch; + outline: 0; + } + .modal.fade .modal-dialog { + -webkit-transition: -webkit-transform .3s ease-out; + -o-transition: -o-transform .3s ease-out; + transition: transform .3s ease-out; + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + -o-transform: translate(0, -25%); + transform: translate(0, -25%); + } + .modal.in .modal-dialog { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + -o-transform: translate(0, 0); + transform: translate(0, 0); + } + .modal-open .modal { + overflow-x: hidden; + overflow-y: auto; + } + .modal-dialog { + position: relative; + width: auto; + margin: 10px; + } + .modal-content { + position: relative; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 6px; + outline: 0; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5); + box-shadow: 0 3px 9px rgba(0, 0, 0, .5); + } + .modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000; + } + .modal-backdrop.fade { + filter: alpha(opacity=0); + opacity: 0; + } + .modal-backdrop.in { + filter: alpha(opacity=50); + opacity: .5; + } + .modal-header { + padding: 15px; + border-bottom: 1px solid #e5e5e5; + } + .modal-header .close { + margin-top: -2px; + } + .modal-title { + margin: 0; + line-height: 1.42857143; + } + .modal-body { + position: relative; + padding: 15px; + } + .modal-footer { + padding: 15px; + text-align: right; + border-top: 1px solid #e5e5e5; + } + .modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; + } + .modal-footer .btn-group .btn + .btn { + margin-left: -1px; + } + .modal-footer .btn-block + .btn-block { + margin-left: 0; + } + .modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; + } + @media (min-width: 768px) { + .modal-dialog { + width: 600px; + margin: 30px auto; + } + .modal-content { + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + } + .modal-sm { + width: 300px; + } + } + @media (min-width: 992px) { + .modal-lg { + width: 900px; + } + } + .tooltip { + position: absolute; + z-index: 1070; + display: block; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 12px; + font-style: normal; + font-weight: normal; + line-height: 1.42857143; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + word-wrap: normal; + white-space: normal; + filter: alpha(opacity=0); + opacity: 0; + + line-break: auto; + } + .tooltip.in { + filter: alpha(opacity=90); + opacity: .9; + } + .tooltip.top { + padding: 5px 0; + margin-top: -3px; + } + .tooltip.right { + padding: 0 5px; + margin-left: 3px; + } + .tooltip.bottom { + padding: 5px 0; + margin-top: 3px; + } + .tooltip.left { + padding: 0 5px; + margin-left: -3px; + } + .tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #fff; + text-align: center; + background-color: #000; + border-radius: 4px; + } + .tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; + } + .tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000; + } + .tooltip.top-left .tooltip-arrow { + right: 5px; + bottom: 0; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000; + } + .tooltip.top-right .tooltip-arrow { + bottom: 0; + left: 5px; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000; + } + .tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000; + } + .tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000; + } + .tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; + } + .tooltip.bottom-left .tooltip-arrow { + top: 0; + right: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; + } + .tooltip.bottom-right .tooltip-arrow { + top: 0; + left: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; + } + .popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: none; + max-width: 276px; + padding: 1px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + line-height: 1.42857143; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + word-wrap: normal; + white-space: normal; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2); + box-shadow: 0 5px 10px rgba(0, 0, 0, .2); + + line-break: auto; + } + .popover.top { + margin-top: -10px; + } + .popover.right { + margin-left: 10px; + } + .popover.bottom { + margin-top: 10px; + } + .popover.left { + margin-left: -10px; + } + .popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-radius: 5px 5px 0 0; + } + .popover-content { + padding: 9px 14px; + } + .popover > .arrow, + .popover > .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; + } + .popover > .arrow { + border-width: 11px; + } + .popover > .arrow:after { + content: ""; + border-width: 10px; + } + .popover.top > .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999; + border-top-color: rgba(0, 0, 0, .25); + border-bottom-width: 0; + } + .popover.top > .arrow:after { + bottom: 1px; + margin-left: -10px; + content: " "; + border-top-color: #fff; + border-bottom-width: 0; + } + .popover.right > .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999; + border-right-color: rgba(0, 0, 0, .25); + border-left-width: 0; + } + .popover.right > .arrow:after { + bottom: -10px; + left: 1px; + content: " "; + border-right-color: #fff; + border-left-width: 0; + } + .popover.bottom > .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-top-width: 0; + border-bottom-color: #999; + border-bottom-color: rgba(0, 0, 0, .25); + } + .popover.bottom > .arrow:after { + top: 1px; + margin-left: -10px; + content: " "; + border-top-width: 0; + border-bottom-color: #fff; + } + .popover.left > .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-right-width: 0; + border-left-color: #999; + border-left-color: rgba(0, 0, 0, .25); + } + .popover.left > .arrow:after { + right: 1px; + bottom: -10px; + content: " "; + border-right-width: 0; + border-left-color: #fff; + } + .carousel { + position: relative; + } + .carousel-inner { + position: relative; + width: 100%; + overflow: hidden; + } + .carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: .6s ease-in-out left; + -o-transition: .6s ease-in-out left; + transition: .6s ease-in-out left; + } + .carousel-inner > .item > img, + .carousel-inner > .item > a > img { + line-height: 1; + } + @media all and (transform-3d), (-webkit-transform-3d) { + .carousel-inner > .item { + -webkit-transition: -webkit-transform .6s ease-in-out; + -o-transition: -o-transform .6s ease-in-out; + transition: transform .6s ease-in-out; + + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000px; + perspective: 1000px; + } + .carousel-inner > .item.next, + .carousel-inner > .item.active.right { + left: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } + .carousel-inner > .item.prev, + .carousel-inner > .item.active.left { + left: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } + .carousel-inner > .item.next.left, + .carousel-inner > .item.prev.right, + .carousel-inner > .item.active { + left: 0; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + } + .carousel-inner > .active, + .carousel-inner > .next, + .carousel-inner > .prev { + display: block; + } + .carousel-inner > .active { + left: 0; + } + .carousel-inner > .next, + .carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; + } + .carousel-inner > .next { + left: 100%; + } + .carousel-inner > .prev { + left: -100%; + } + .carousel-inner > .next.left, + .carousel-inner > .prev.right { + left: 0; + } + .carousel-inner > .active.left { + left: -100%; + } + .carousel-inner > .active.right { + left: 100%; + } + .carousel-control { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 15%; + font-size: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, .6); + background-color: rgba(0, 0, 0, 0); + filter: alpha(opacity=50); + opacity: .5; + } + .carousel-control.left { + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001))); + background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); + background-repeat: repeat-x; + } + .carousel-control.right { + right: 0; + left: auto; + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5))); + background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); + background-repeat: repeat-x; + } + .carousel-control:hover, + .carousel-control:focus { + color: #fff; + text-decoration: none; + filter: alpha(opacity=90); + outline: 0; + opacity: .9; + } + .carousel-control .icon-prev, + .carousel-control .icon-next, + .carousel-control .glyphicon-chevron-left, + .carousel-control .glyphicon-chevron-right { + position: absolute; + top: 50%; + z-index: 5; + display: inline-block; + margin-top: -10px; + } + .carousel-control .icon-prev, + .carousel-control .glyphicon-chevron-left { + left: 50%; + margin-left: -10px; + } + .carousel-control .icon-next, + .carousel-control .glyphicon-chevron-right { + right: 50%; + margin-right: -10px; + } + .carousel-control .icon-prev, + .carousel-control .icon-next { + width: 20px; + height: 20px; + font-family: serif; + line-height: 1; + } + .carousel-control .icon-prev:before { + content: '\2039'; + } + .carousel-control .icon-next:before { + content: '\203a'; + } + .carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + padding-left: 0; + margin-left: -30%; + text-align: center; + list-style: none; + } + .carousel-indicators li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + cursor: pointer; + background-color: #000 \9; + background-color: rgba(0, 0, 0, 0); + border: 1px solid #fff; + border-radius: 10px; + } + .carousel-indicators .active { + width: 12px; + height: 12px; + margin: 0; + background-color: #fff; + } + .carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, .6); + } + .carousel-caption .btn { + text-shadow: none; + } + @media screen and (min-width: 768px) { + .carousel-control .glyphicon-chevron-left, + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-prev, + .carousel-control .icon-next { + width: 30px; + height: 30px; + margin-top: -10px; + font-size: 30px; + } + .carousel-control .glyphicon-chevron-left, + .carousel-control .icon-prev { + margin-left: -10px; + } + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-next { + margin-right: -10px; + } + .carousel-caption { + right: 20%; + left: 20%; + padding-bottom: 30px; + } + .carousel-indicators { + bottom: 20px; + } + } + .clearfix:before, + .clearfix:after, + .dl-horizontal dd:before, + .dl-horizontal dd:after, + .container:before, + .container:after, + .container-fluid:before, + .container-fluid:after, + .row:before, + .row:after, + .form-horizontal .form-group:before, + .form-horizontal .form-group:after, + .btn-toolbar:before, + .btn-toolbar:after, + .btn-group-vertical > .btn-group:before, + .btn-group-vertical > .btn-group:after, + .nav:before, + .nav:after, + .navbar:before, + .navbar:after, + .navbar-header:before, + .navbar-header:after, + .navbar-collapse:before, + .navbar-collapse:after, + .pager:before, + .pager:after, + .panel-body:before, + .panel-body:after, + .modal-header:before, + .modal-header:after, + .modal-footer:before, + .modal-footer:after { + display: table; + content: " "; + } + .clearfix:after, + .dl-horizontal dd:after, + .container:after, + .container-fluid:after, + .row:after, + .form-horizontal .form-group:after, + .btn-toolbar:after, + .btn-group-vertical > .btn-group:after, + .nav:after, + .navbar:after, + .navbar-header:after, + .navbar-collapse:after, + .pager:after, + .panel-body:after, + .modal-header:after, + .modal-footer:after { + clear: both; + } + .center-block { + display: block; + margin-right: auto; + margin-left: auto; + } + .pull-right { + float: right !important; + } + .pull-left { + float: left !important; + } + .hide { + display: none !important; + } + .show { + display: block !important; + } + .invisible { + visibility: hidden; + } + .text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; + } + .hidden { + display: none !important; + } + .affix { + position: fixed; + } + @-ms-viewport { + width: device-width; + } + .visible-xs, + .visible-sm, + .visible-md, + .visible-lg { + display: none !important; + } + .visible-xs-block, + .visible-xs-inline, + .visible-xs-inline-block, + .visible-sm-block, + .visible-sm-inline, + .visible-sm-inline-block, + .visible-md-block, + .visible-md-inline, + .visible-md-inline-block, + .visible-lg-block, + .visible-lg-inline, + .visible-lg-inline-block { + display: none !important; + } + @media (max-width: 767px) { + .visible-xs { + display: block !important; + } + table.visible-xs { + display: table !important; + } + tr.visible-xs { + display: table-row !important; + } + th.visible-xs, + td.visible-xs { + display: table-cell !important; + } + } + @media (max-width: 767px) { + .visible-xs-block { + display: block !important; + } + } + @media (max-width: 767px) { + .visible-xs-inline { + display: inline !important; + } + } + @media (max-width: 767px) { + .visible-xs-inline-block { + display: inline-block !important; + } + } + @media (min-width: 768px) and (max-width: 991px) { + .visible-sm { + display: block !important; + } + table.visible-sm { + display: table !important; + } + tr.visible-sm { + display: table-row !important; + } + th.visible-sm, + td.visible-sm { + display: table-cell !important; + } + } + @media (min-width: 768px) and (max-width: 991px) { + .visible-sm-block { + display: block !important; + } + } + @media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline { + display: inline !important; + } + } + @media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline-block { + display: inline-block !important; + } + } + @media (min-width: 992px) and (max-width: 1199px) { + .visible-md { + display: block !important; + } + table.visible-md { + display: table !important; + } + tr.visible-md { + display: table-row !important; + } + th.visible-md, + td.visible-md { + display: table-cell !important; + } + } + @media (min-width: 992px) and (max-width: 1199px) { + .visible-md-block { + display: block !important; + } + } + @media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline { + display: inline !important; + } + } + @media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline-block { + display: inline-block !important; + } + } + @media (min-width: 1200px) { + .visible-lg { + display: block !important; + } + table.visible-lg { + display: table !important; + } + tr.visible-lg { + display: table-row !important; + } + th.visible-lg, + td.visible-lg { + display: table-cell !important; + } + } + @media (min-width: 1200px) { + .visible-lg-block { + display: block !important; + } + } + @media (min-width: 1200px) { + .visible-lg-inline { + display: inline !important; + } + } + @media (min-width: 1200px) { + .visible-lg-inline-block { + display: inline-block !important; + } + } + @media (max-width: 767px) { + .hidden-xs { + display: none !important; + } + } + @media (min-width: 768px) and (max-width: 991px) { + .hidden-sm { + display: none !important; + } + } + @media (min-width: 992px) and (max-width: 1199px) { + .hidden-md { + display: none !important; + } + } + @media (min-width: 1200px) { + .hidden-lg { + display: none !important; + } + } + .visible-print { + display: none !important; + } + @media print { + .visible-print { + display: block !important; + } + table.visible-print { + display: table !important; + } + tr.visible-print { + display: table-row !important; + } + th.visible-print, + td.visible-print { + display: table-cell !important; + } + } + .visible-print-block { + display: none !important; + } + @media print { + .visible-print-block { + display: block !important; + } + } + .visible-print-inline { + display: none !important; + } + @media print { + .visible-print-inline { + display: inline !important; + } + } + .visible-print-inline-block { + display: none !important; + } + @media print { + .visible-print-inline-block { + display: inline-block !important; + } + } + @media print { + .hidden-print { + display: none !important; + } + } + /*# sourceMappingURL=bootstrap.css.map */ diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/wwwroot/favicon.ico b/aspnetcore/fundamentals/localization/sample/8.x/Localization/wwwroot/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..bfe873eb228f98720fe0ed18c638daa13906958f GIT binary patch literal 17174 zcmeHOJ#Q015PgP|sUltJ%A8D-(o!TUkc{NQ1+uPjPZg!4M<`cP($XUeDk>yUiu?k8 z10_|E2qK~~GdH`@9=;55lyHgjMj7wN?OyiY%vw?RV_+}{(X$}` zkiRp}d#2#VM9RE@(KQaI zUnaWs7TXteX8N); ON)^VQz<8Ga>-ryC<7BY_ literal 0 HcmV?d00001 diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/wwwroot/js/bootstrap-3.3.7.js b/aspnetcore/fundamentals/localization/sample/8.x/Localization/wwwroot/js/bootstrap-3.3.7.js new file mode 100644 index 000000000000..ab612bdbb5a6 --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/wwwroot/js/bootstrap-3.3.7.js @@ -0,0 +1,2377 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under the MIT license + */ + +if (typeof jQuery === 'undefined') { + throw new Error('Bootstrap\'s JavaScript requires jQuery') + } + + +function ($) { + 'use strict'; + var version = $.fn.jquery.split(' ')[0].split('.') + if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) { + throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4') + } + }(jQuery); + + /* ======================================================================== + * Bootstrap: transition.js v3.3.7 + * http://getbootstrap.com/javascript/#transitions + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/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] } + } + } + + return false // explicit for ie8 ( ._.) + } + + // http://blog.alexmaccaw.com/css-transitions + $.fn.emulateTransitionEnd = function (duration) { + var called = false + var $el = this + $(this).one('bsTransitionEnd', function () { called = true }) + var callback = function () { if (!called) $($el).trigger($.support.transition.end) } + setTimeout(callback, duration) + return this + } + + $(function () { + $.support.transition = transitionEnd() + + if (!$.support.transition) return + + $.event.special.bsTransitionEnd = { + bindType: $.support.transition.end, + delegateType: $.support.transition.end, + handle: function (e) { + if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) + } + } + }) + + }(jQuery); + + /* ======================================================================== + * Bootstrap: alert.js v3.3.7 + * http://getbootstrap.com/javascript/#alerts + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + + +function ($) { + 'use strict'; + + // ALERT CLASS DEFINITION + // ====================== + + var dismiss = '[data-dismiss="alert"]' + var Alert = function (el) { + $(el).on('click', dismiss, this.close) + } + + Alert.VERSION = '3.3.7' + + Alert.TRANSITION_DURATION = 150 + + 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 === '#' ? [] : selector) + + if (e) e.preventDefault() + + if (!$parent.length) { + $parent = $this.closest('.alert') + } + + $parent.trigger(e = $.Event('close.bs.alert')) + + if (e.isDefaultPrevented()) return + + $parent.removeClass('in') + + function removeElement() { + // detach from parent, fire event then clean up data + $parent.detach().trigger('closed.bs.alert').remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent + .one('bsTransitionEnd', removeElement) + .emulateTransitionEnd(Alert.TRANSITION_DURATION) : + removeElement() + } + + + // ALERT PLUGIN DEFINITION + // ======================= + + function Plugin(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) + }) + } + + var old = $.fn.alert + + $.fn.alert = Plugin + $.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) + + }(jQuery); + + /* ======================================================================== + * Bootstrap: button.js v3.3.7 + * http://getbootstrap.com/javascript/#buttons + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + + +function ($) { + 'use strict'; + + // BUTTON PUBLIC CLASS DEFINITION + // ============================== + + var Button = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Button.DEFAULTS, options) + this.isLoading = false + } + + Button.VERSION = '3.3.7' + + 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 += 'Text' + + if (data.resetText == null) $el.data('resetText', $el[val]()) + + // push to event loop to allow forms to submit + setTimeout($.proxy(function () { + $el[val](data[state] == null ? this.options[state] : data[state]) + + if (state == 'loadingText') { + this.isLoading = true + $el.addClass(d).attr(d, d).prop(d, true) + } else if (this.isLoading) { + this.isLoading = false + $el.removeClass(d).removeAttr(d).prop(d, false) + } + }, this), 0) + } + + Button.prototype.toggle = function () { + var changed = true + var $parent = this.$element.closest('[data-toggle="buttons"]') + + if ($parent.length) { + var $input = this.$element.find('input') + if ($input.prop('type') == 'radio') { + if ($input.prop('checked')) changed = false + $parent.find('.active').removeClass('active') + this.$element.addClass('active') + } else if ($input.prop('type') == 'checkbox') { + if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false + this.$element.toggleClass('active') + } + $input.prop('checked', this.$element.hasClass('active')) + if (changed) $input.trigger('change') + } else { + this.$element.attr('aria-pressed', !this.$element.hasClass('active')) + this.$element.toggleClass('active') + } + } + + + // BUTTON PLUGIN DEFINITION + // ======================== + + function Plugin(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) + }) + } + + var old = $.fn.button + + $.fn.button = Plugin + $.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).closest('.btn') + Plugin.call($btn, 'toggle') + if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) { + // Prevent double click on radios, and the double selections (so cancellation) on checkboxes + e.preventDefault() + // The target component still receive the focus + if ($btn.is('input,button')) $btn.trigger('focus') + else $btn.find('input:visible,button:visible').first().trigger('focus') + } + }) + .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { + $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type)) + }) + + }(jQuery); + + /* ======================================================================== + * Bootstrap: carousel.js v3.3.7 + * http://getbootstrap.com/javascript/#carousel + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/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 = null + this.sliding = null + this.interval = null + this.$active = null + this.$items = null + + this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this)) + + this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element + .on('mouseenter.bs.carousel', $.proxy(this.pause, this)) + .on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) + } + + Carousel.VERSION = '3.3.7' + + Carousel.TRANSITION_DURATION = 600 + + Carousel.DEFAULTS = { + interval: 5000, + pause: 'hover', + wrap: true, + keyboard: true + } + + Carousel.prototype.keydown = function (e) { + if (/input|textarea/i.test(e.target.tagName)) return + switch (e.which) { + case 37: this.prev(); break + case 39: this.next(); break + default: return + } + + e.preventDefault() + } + + 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.getItemIndex = function (item) { + this.$items = item.parent().children('.item') + return this.$items.index(item || this.$active) + } + + Carousel.prototype.getItemForDirection = function (direction, active) { + var activeIndex = this.getItemIndex(active) + var willWrap = (direction == 'prev' && activeIndex === 0) + || (direction == 'next' && activeIndex == (this.$items.length - 1)) + if (willWrap && !this.options.wrap) return active + var delta = direction == 'prev' ? -1 : 1 + var itemIndex = (activeIndex + delta) % this.$items.length + return this.$items.eq(itemIndex) + } + + Carousel.prototype.to = function (pos) { + var that = this + var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active')) + + if (pos > (this.$items.length - 1) || pos < 0) return + + if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid" + if (activeIndex == pos) return this.pause().cycle() + + return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos)) + } + + Carousel.prototype.pause = function (e) { + e || (this.paused = true) + + if (this.$element.find('.next, .prev').length && $.support.transition) { + 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 || this.getItemForDirection(type, $active) + var isCycling = this.interval + var direction = type == 'next' ? 'left' : 'right' + var that = this + + if ($next.hasClass('active')) return (this.sliding = false) + + var relatedTarget = $next[0] + var slideEvent = $.Event('slide.bs.carousel', { + relatedTarget: relatedTarget, + direction: direction + }) + this.$element.trigger(slideEvent) + if (slideEvent.isDefaultPrevented()) return + + this.sliding = true + + isCycling && this.pause() + + if (this.$indicators.length) { + this.$indicators.find('.active').removeClass('active') + var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)]) + $nextIndicator && $nextIndicator.addClass('active') + } + + var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid" + if ($.support.transition && this.$element.hasClass('slide')) { + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + $active + .one('bsTransitionEnd', function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { + that.$element.trigger(slidEvent) + }, 0) + }) + .emulateTransitionEnd(Carousel.TRANSITION_DURATION) + } else { + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger(slidEvent) + } + + isCycling && this.cycle() + + return this + } + + + // CAROUSEL PLUGIN DEFINITION + // ========================== + + function Plugin(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() + }) + } + + var old = $.fn.carousel + + $.fn.carousel = Plugin + $.fn.carousel.Constructor = Carousel + + + // CAROUSEL NO CONFLICT + // ==================== + + $.fn.carousel.noConflict = function () { + $.fn.carousel = old + return this + } + + + // CAROUSEL DATA-API + // ================= + + var clickHandler = function (e) { + var href + var $this = $(this) + var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 + if (!$target.hasClass('carousel')) return + var options = $.extend({}, $target.data(), $this.data()) + var slideIndex = $this.attr('data-slide-to') + if (slideIndex) options.interval = false + + Plugin.call($target, options) + + if (slideIndex) { + $target.data('bs.carousel').to(slideIndex) + } + + e.preventDefault() + } + + $(document) + .on('click.bs.carousel.data-api', '[data-slide]', clickHandler) + .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler) + + $(window).on('load', function () { + $('[data-ride="carousel"]').each(function () { + var $carousel = $(this) + Plugin.call($carousel, $carousel.data()) + }) + }) + + }(jQuery); + + /* ======================================================================== + * Bootstrap: collapse.js v3.3.7 + * http://getbootstrap.com/javascript/#collapse + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + /* jshint latedef: false */ + + +function ($) { + 'use strict'; + + // COLLAPSE PUBLIC CLASS DEFINITION + // ================================ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Collapse.DEFAULTS, options) + this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' + + '[data-toggle="collapse"][data-target="#' + element.id + '"]') + this.transitioning = null + + if (this.options.parent) { + this.$parent = this.getParent() + } else { + this.addAriaAndCollapsedClass(this.$element, this.$trigger) + } + + if (this.options.toggle) this.toggle() + } + + Collapse.VERSION = '3.3.7' + + Collapse.TRANSITION_DURATION = 350 + + 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 activesData + var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing') + + if (actives && actives.length) { + activesData = actives.data('bs.collapse') + if (activesData && activesData.transitioning) return + } + + var startEvent = $.Event('show.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + if (actives && actives.length) { + Plugin.call(actives, 'hide') + activesData || actives.data('bs.collapse', null) + } + + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + .addClass('collapsing')[dimension](0) + .attr('aria-expanded', true) + + this.$trigger + .removeClass('collapsed') + .attr('aria-expanded', true) + + this.transitioning = 1 + + var complete = function () { + this.$element + .removeClass('collapsing') + .addClass('collapse in')[dimension]('') + 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('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[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 in') + .attr('aria-expanded', false) + + this.$trigger + .addClass('collapsed') + .attr('aria-expanded', false) + + this.transitioning = 1 + + var complete = function () { + this.transitioning = 0 + this.$element + .removeClass('collapsing') + .addClass('collapse') + .trigger('hidden.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + this.$element + [dimension](0) + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION) + } + + Collapse.prototype.toggle = function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + Collapse.prototype.getParent = function () { + return $(this.options.parent) + .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]') + .each($.proxy(function (i, element) { + var $element = $(element) + this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element) + }, this)) + .end() + } + + Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) { + var isOpen = $element.hasClass('in') + + $element.attr('aria-expanded', isOpen) + $trigger + .toggleClass('collapsed', !isOpen) + .attr('aria-expanded', isOpen) + } + + function getTargetFromTrigger($trigger) { + var href + var target = $trigger.attr('data-target') + || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 + + return $(target) + } + + + // COLLAPSE PLUGIN DEFINITION + // ========================== + + function Plugin(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 && options.toggle && /show|hide/.test(option)) options.toggle = false + if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.collapse + + $.fn.collapse = Plugin + $.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) + + if (!$this.attr('data-target')) e.preventDefault() + + var $target = getTargetFromTrigger($this) + var data = $target.data('bs.collapse') + var option = data ? 'toggle' : $this.data() + + Plugin.call($target, option) + }) + + }(jQuery); + + /* ======================================================================== + * Bootstrap: dropdown.js v3.3.7 + * http://getbootstrap.com/javascript/#dropdowns + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + + +function ($) { + 'use strict'; + + // DROPDOWN CLASS DEFINITION + // ========================= + + var backdrop = '.dropdown-backdrop' + var toggle = '[data-toggle="dropdown"]' + var Dropdown = function (element) { + $(element).on('click.bs.dropdown', this.toggle) + } + + Dropdown.VERSION = '3.3.7' + + function getParent($this) { + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = selector && $(selector) + + return $parent && $parent.length ? $parent : $this.parent() + } + + function clearMenus(e) { + if (e && e.which === 3) return + $(backdrop).remove() + $(toggle).each(function () { + var $this = $(this) + var $parent = getParent($this) + var relatedTarget = { relatedTarget: this } + + if (!$parent.hasClass('open')) return + + if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return + + $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget)) + + if (e.isDefaultPrevented()) return + + $this.attr('aria-expanded', 'false') + $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget)) + }) + } + + 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 use a backdrop because click events don't delegate + $(document.createElement('div')) + .addClass('dropdown-backdrop') + .insertAfter($(this)) + .on('click', clearMenus) + } + + var relatedTarget = { relatedTarget: this } + $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget)) + + if (e.isDefaultPrevented()) return + + $this + .trigger('focus') + .attr('aria-expanded', 'true') + + $parent + .toggleClass('open') + .trigger($.Event('shown.bs.dropdown', relatedTarget)) + } + + return false + } + + Dropdown.prototype.keydown = function (e) { + if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return + + var $this = $(this) + + e.preventDefault() + e.stopPropagation() + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + if (!isActive && e.which != 27 || isActive && e.which == 27) { + if (e.which == 27) $parent.find(toggle).trigger('focus') + return $this.trigger('click') + } + + var desc = ' li:not(.disabled):visible a' + var $items = $parent.find('.dropdown-menu' + desc) + + if (!$items.length) return + + var index = $items.index(e.target) + + if (e.which == 38 && index > 0) index-- // up + if (e.which == 40 && index < $items.length - 1) index++ // down + if (!~index) index = 0 + + $items.eq(index).trigger('focus') + } + + + // DROPDOWN PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.dropdown') + + if (!data) $this.data('bs.dropdown', (data = new Dropdown(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + var old = $.fn.dropdown + + $.fn.dropdown = Plugin + $.fn.dropdown.Constructor = Dropdown + + + // DROPDOWN NO CONFLICT + // ==================== + + $.fn.dropdown.noConflict = function () { + $.fn.dropdown = old + return this + } + + + // APPLY TO STANDARD DROPDOWN ELEMENTS + // =================================== + + $(document) + .on('click.bs.dropdown.data-api', clearMenus) + .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) + .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle) + .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown) + .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown) + + }(jQuery); + + /* ======================================================================== + * Bootstrap: modal.js v3.3.7 + * http://getbootstrap.com/javascript/#modals + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + + +function ($) { + 'use strict'; + + // MODAL CLASS DEFINITION + // ====================== + + var Modal = function (element, options) { + this.options = options + this.$body = $(document.body) + this.$element = $(element) + this.$dialog = this.$element.find('.modal-dialog') + this.$backdrop = null + this.isShown = null + this.originalBodyPad = null + this.scrollbarWidth = 0 + this.ignoreBackdropClick = false + + if (this.options.remote) { + this.$element + .find('.modal-content') + .load(this.options.remote, $.proxy(function () { + this.$element.trigger('loaded.bs.modal') + }, this)) + } + } + + Modal.VERSION = '3.3.7' + + Modal.TRANSITION_DURATION = 300 + Modal.BACKDROP_TRANSITION_DURATION = 150 + + Modal.DEFAULTS = { + backdrop: true, + keyboard: true, + show: true + } + + Modal.prototype.toggle = function (_relatedTarget) { + return this.isShown ? this.hide() : this.show(_relatedTarget) + } + + Modal.prototype.show = function (_relatedTarget) { + var that = this + var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget }) + + this.$element.trigger(e) + + if (this.isShown || e.isDefaultPrevented()) return + + this.isShown = true + + this.checkScrollbar() + this.setScrollbar() + this.$body.addClass('modal-open') + + this.escape() + this.resize() + + this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this)) + + this.$dialog.on('mousedown.dismiss.bs.modal', function () { + that.$element.one('mouseup.dismiss.bs.modal', function (e) { + if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true + }) + }) + + this.backdrop(function () { + var transition = $.support.transition && that.$element.hasClass('fade') + + if (!that.$element.parent().length) { + that.$element.appendTo(that.$body) // don't move modals dom position + } + + that.$element + .show() + .scrollTop(0) + + that.adjustDialog() + + if (transition) { + that.$element[0].offsetWidth // force reflow + } + + that.$element.addClass('in') + + that.enforceFocus() + + var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget }) + + transition ? + that.$dialog // wait for modal to slide in + .one('bsTransitionEnd', function () { + that.$element.trigger('focus').trigger(e) + }) + .emulateTransitionEnd(Modal.TRANSITION_DURATION) : + that.$element.trigger('focus').trigger(e) + }) + } + + Modal.prototype.hide = function (e) { + if (e) e.preventDefault() + + e = $.Event('hide.bs.modal') + + this.$element.trigger(e) + + if (!this.isShown || e.isDefaultPrevented()) return + + this.isShown = false + + this.escape() + this.resize() + + $(document).off('focusin.bs.modal') + + this.$element + .removeClass('in') + .off('click.dismiss.bs.modal') + .off('mouseup.dismiss.bs.modal') + + this.$dialog.off('mousedown.dismiss.bs.modal') + + $.support.transition && this.$element.hasClass('fade') ? + this.$element + .one('bsTransitionEnd', $.proxy(this.hideModal, this)) + .emulateTransitionEnd(Modal.TRANSITION_DURATION) : + this.hideModal() + } + + Modal.prototype.enforceFocus = function () { + $(document) + .off('focusin.bs.modal') // guard against infinite focus loop + .on('focusin.bs.modal', $.proxy(function (e) { + if (document !== e.target && + this.$element[0] !== e.target && + !this.$element.has(e.target).length) { + this.$element.trigger('focus') + } + }, this)) + } + + Modal.prototype.escape = function () { + if (this.isShown && this.options.keyboard) { + this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) { + e.which == 27 && this.hide() + }, this)) + } else if (!this.isShown) { + this.$element.off('keydown.dismiss.bs.modal') + } + } + + Modal.prototype.resize = function () { + if (this.isShown) { + $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this)) + } else { + $(window).off('resize.bs.modal') + } + } + + Modal.prototype.hideModal = function () { + var that = this + this.$element.hide() + this.backdrop(function () { + that.$body.removeClass('modal-open') + that.resetAdjustments() + that.resetScrollbar() + that.$element.trigger('hidden.bs.modal') + }) + } + + Modal.prototype.removeBackdrop = function () { + this.$backdrop && this.$backdrop.remove() + this.$backdrop = null + } + + Modal.prototype.backdrop = function (callback) { + var that = this + var animate = this.$element.hasClass('fade') ? 'fade' : '' + + if (this.isShown && this.options.backdrop) { + var doAnimate = $.support.transition && animate + + this.$backdrop = $(document.createElement('div')) + .addClass('modal-backdrop ' + animate) + .appendTo(this.$body) + + this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) { + if (this.ignoreBackdropClick) { + this.ignoreBackdropClick = false + return + } + if (e.target !== e.currentTarget) return + this.options.backdrop == 'static' + ? this.$element[0].focus() + : this.hide() + }, this)) + + if (doAnimate) this.$backdrop[0].offsetWidth // force reflow + + this.$backdrop.addClass('in') + + if (!callback) return + + doAnimate ? + this.$backdrop + .one('bsTransitionEnd', callback) + .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : + callback() + + } else if (!this.isShown && this.$backdrop) { + this.$backdrop.removeClass('in') + + var callbackRemove = function () { + that.removeBackdrop() + callback && callback() + } + $.support.transition && this.$element.hasClass('fade') ? + this.$backdrop + .one('bsTransitionEnd', callbackRemove) + .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : + callbackRemove() + + } else if (callback) { + callback() + } + } + + // these following methods are used to handle overflowing modals + + Modal.prototype.handleUpdate = function () { + this.adjustDialog() + } + + Modal.prototype.adjustDialog = function () { + var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight + + this.$element.css({ + paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '', + paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : '' + }) + } + + Modal.prototype.resetAdjustments = function () { + this.$element.css({ + paddingLeft: '', + paddingRight: '' + }) + } + + Modal.prototype.checkScrollbar = function () { + var fullWindowWidth = window.innerWidth + if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8 + var documentElementRect = document.documentElement.getBoundingClientRect() + fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left) + } + this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth + this.scrollbarWidth = this.measureScrollbar() + } + + Modal.prototype.setScrollbar = function () { + var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10) + this.originalBodyPad = document.body.style.paddingRight || '' + if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth) + } + + Modal.prototype.resetScrollbar = function () { + this.$body.css('padding-right', this.originalBodyPad) + } + + Modal.prototype.measureScrollbar = function () { // thx walsh + var scrollDiv = document.createElement('div') + scrollDiv.className = 'modal-scrollbar-measure' + this.$body.append(scrollDiv) + var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth + this.$body[0].removeChild(scrollDiv) + return scrollbarWidth + } + + + // MODAL PLUGIN DEFINITION + // ======================= + + function Plugin(option, _relatedTarget) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.modal') + var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data) $this.data('bs.modal', (data = new Modal(this, options))) + if (typeof option == 'string') data[option](_relatedTarget) + else if (options.show) data.show(_relatedTarget) + }) + } + + var old = $.fn.modal + + $.fn.modal = Plugin + $.fn.modal.Constructor = Modal + + + // MODAL NO CONFLICT + // ================= + + $.fn.modal.noConflict = function () { + $.fn.modal = old + return this + } + + + // MODAL DATA-API + // ============== + + $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) { + var $this = $(this) + var href = $this.attr('href') + var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7 + var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data()) + + if ($this.is('a')) e.preventDefault() + + $target.one('show.bs.modal', function (showEvent) { + if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown + $target.one('hidden.bs.modal', function () { + $this.is(':visible') && $this.trigger('focus') + }) + }) + Plugin.call($target, option, this) + }) + + }(jQuery); + + /* ======================================================================== + * Bootstrap: tooltip.js v3.3.7 + * http://getbootstrap.com/javascript/#tooltip + * Inspired by the original jQuery.tipsy by Jason Frame + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + + +function ($) { + 'use strict'; + + // TOOLTIP PUBLIC CLASS DEFINITION + // =============================== + + var Tooltip = function (element, options) { + this.type = null + this.options = null + this.enabled = null + this.timeout = null + this.hoverState = null + this.$element = null + this.inState = null + + this.init('tooltip', element, options) + } + + Tooltip.VERSION = '3.3.7' + + Tooltip.TRANSITION_DURATION = 150 + + Tooltip.DEFAULTS = { + animation: true, + placement: 'top', + selector: false, + template: '', + trigger: 'hover focus', + title: '', + delay: 0, + html: false, + container: false, + viewport: { + selector: 'body', + padding: 0 + } + } + + Tooltip.prototype.init = function (type, element, options) { + this.enabled = true + this.type = type + this.$element = $(element) + this.options = this.getOptions(options) + this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport)) + this.inState = { click: false, hover: false, focus: false } + + if (this.$element[0] instanceof document.constructor && !this.options.selector) { + throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!') + } + + var triggers = this.options.trigger.split(' ') + + for (var i = triggers.length; i--;) { + var trigger = triggers[i] + + if (trigger == 'click') { + this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this)) + } else if (trigger != 'manual') { + var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin' + var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout' + + this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this)) + this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this)) + } + } + + this.options.selector ? + (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) : + this.fixTitle() + } + + Tooltip.prototype.getDefaults = function () { + return Tooltip.DEFAULTS + } + + Tooltip.prototype.getOptions = function (options) { + options = $.extend({}, this.getDefaults(), this.$element.data(), options) + + if (options.delay && typeof options.delay == 'number') { + options.delay = { + show: options.delay, + hide: options.delay + } + } + + return options + } + + Tooltip.prototype.getDelegateOptions = function () { + var options = {} + var defaults = this.getDefaults() + + this._options && $.each(this._options, function (key, value) { + if (defaults[key] != value) options[key] = value + }) + + return options + } + + Tooltip.prototype.enter = function (obj) { + var self = obj instanceof this.constructor ? + obj : $(obj.currentTarget).data('bs.' + this.type) + + if (!self) { + self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) + $(obj.currentTarget).data('bs.' + this.type, self) + } + + if (obj instanceof $.Event) { + self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true + } + + if (self.tip().hasClass('in') || self.hoverState == 'in') { + self.hoverState = 'in' + return + } + + clearTimeout(self.timeout) + + self.hoverState = 'in' + + if (!self.options.delay || !self.options.delay.show) return self.show() + + self.timeout = setTimeout(function () { + if (self.hoverState == 'in') self.show() + }, self.options.delay.show) + } + + Tooltip.prototype.isInStateTrue = function () { + for (var key in this.inState) { + if (this.inState[key]) return true + } + + return false + } + + Tooltip.prototype.leave = function (obj) { + var self = obj instanceof this.constructor ? + obj : $(obj.currentTarget).data('bs.' + this.type) + + if (!self) { + self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) + $(obj.currentTarget).data('bs.' + this.type, self) + } + + if (obj instanceof $.Event) { + self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false + } + + if (self.isInStateTrue()) return + + clearTimeout(self.timeout) + + self.hoverState = 'out' + + if (!self.options.delay || !self.options.delay.hide) return self.hide() + + self.timeout = setTimeout(function () { + if (self.hoverState == 'out') self.hide() + }, self.options.delay.hide) + } + + Tooltip.prototype.show = function () { + var e = $.Event('show.bs.' + this.type) + + if (this.hasContent() && this.enabled) { + this.$element.trigger(e) + + var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]) + if (e.isDefaultPrevented() || !inDom) return + var that = this + + var $tip = this.tip() + + var tipId = this.getUID(this.type) + + this.setContent() + $tip.attr('id', tipId) + this.$element.attr('aria-describedby', tipId) + + if (this.options.animation) $tip.addClass('fade') + + var placement = typeof this.options.placement == 'function' ? + this.options.placement.call(this, $tip[0], this.$element[0]) : + this.options.placement + + var autoToken = /\s?auto?\s?/i + var autoPlace = autoToken.test(placement) + if (autoPlace) placement = placement.replace(autoToken, '') || 'top' + + $tip + .detach() + .css({ top: 0, left: 0, display: 'block' }) + .addClass(placement) + .data('bs.' + this.type, this) + + this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) + this.$element.trigger('inserted.bs.' + this.type) + + var pos = this.getPosition() + var actualWidth = $tip[0].offsetWidth + var actualHeight = $tip[0].offsetHeight + + if (autoPlace) { + var orgPlacement = placement + var viewportDim = this.getPosition(this.$viewport) + + placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' : + placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' : + placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' : + placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' : + placement + + $tip + .removeClass(orgPlacement) + .addClass(placement) + } + + var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight) + + this.applyPlacement(calculatedOffset, placement) + + var complete = function () { + var prevHoverState = that.hoverState + that.$element.trigger('shown.bs.' + that.type) + that.hoverState = null + + if (prevHoverState == 'out') that.leave(that) + } + + $.support.transition && this.$tip.hasClass('fade') ? + $tip + .one('bsTransitionEnd', complete) + .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : + complete() + } + } + + Tooltip.prototype.applyPlacement = function (offset, placement) { + var $tip = this.tip() + var width = $tip[0].offsetWidth + var height = $tip[0].offsetHeight + + // manually read margins because getBoundingClientRect includes difference + var marginTop = parseInt($tip.css('margin-top'), 10) + var marginLeft = parseInt($tip.css('margin-left'), 10) + + // we must check for NaN for ie 8/9 + if (isNaN(marginTop)) marginTop = 0 + if (isNaN(marginLeft)) marginLeft = 0 + + offset.top += marginTop + offset.left += marginLeft + + // $.fn.offset doesn't round pixel values + // so we use setOffset directly with our own function B-0 + $.offset.setOffset($tip[0], $.extend({ + using: function (props) { + $tip.css({ + top: Math.round(props.top), + left: Math.round(props.left) + }) + } + }, offset), 0) + + $tip.addClass('in') + + // check to see if placing tip in new offset caused the tip to resize itself + var actualWidth = $tip[0].offsetWidth + var actualHeight = $tip[0].offsetHeight + + if (placement == 'top' && actualHeight != height) { + offset.top = offset.top + height - actualHeight + } + + var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight) + + if (delta.left) offset.left += delta.left + else offset.top += delta.top + + var isVertical = /top|bottom/.test(placement) + var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight + var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight' + + $tip.offset(offset) + this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical) + } + + Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) { + this.arrow() + .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%') + .css(isVertical ? 'top' : 'left', '') + } + + Tooltip.prototype.setContent = function () { + var $tip = this.tip() + var title = this.getTitle() + + $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title) + $tip.removeClass('fade in top bottom left right') + } + + Tooltip.prototype.hide = function (callback) { + var that = this + var $tip = $(this.$tip) + var e = $.Event('hide.bs.' + this.type) + + function complete() { + if (that.hoverState != 'in') $tip.detach() + if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary. + that.$element + .removeAttr('aria-describedby') + .trigger('hidden.bs.' + that.type) + } + callback && callback() + } + + this.$element.trigger(e) + + if (e.isDefaultPrevented()) return + + $tip.removeClass('in') + + $.support.transition && $tip.hasClass('fade') ? + $tip + .one('bsTransitionEnd', complete) + .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : + complete() + + this.hoverState = null + + return this + } + + Tooltip.prototype.fixTitle = function () { + var $e = this.$element + if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') { + $e.attr('data-original-title', $e.attr('title') || '').attr('title', '') + } + } + + Tooltip.prototype.hasContent = function () { + return this.getTitle() + } + + Tooltip.prototype.getPosition = function ($element) { + $element = $element || this.$element + + var el = $element[0] + var isBody = el.tagName == 'BODY' + + var elRect = el.getBoundingClientRect() + if (elRect.width == null) { + // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093 + elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top }) + } + var isSvg = window.SVGElement && el instanceof window.SVGElement + // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3. + // See https://github.com/twbs/bootstrap/issues/20280 + var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset()) + var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() } + var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null + + return $.extend({}, elRect, scroll, outerDims, elOffset) + } + + Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) { + return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } : + placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } : + placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } : + /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width } + + } + + Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) { + var delta = { top: 0, left: 0 } + if (!this.$viewport) return delta + + var viewportPadding = this.options.viewport && this.options.viewport.padding || 0 + var viewportDimensions = this.getPosition(this.$viewport) + + if (/right|left/.test(placement)) { + var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll + var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight + if (topEdgeOffset < viewportDimensions.top) { // top overflow + delta.top = viewportDimensions.top - topEdgeOffset + } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow + delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset + } + } else { + var leftEdgeOffset = pos.left - viewportPadding + var rightEdgeOffset = pos.left + viewportPadding + actualWidth + if (leftEdgeOffset < viewportDimensions.left) { // left overflow + delta.left = viewportDimensions.left - leftEdgeOffset + } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow + delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset + } + } + + return delta + } + + Tooltip.prototype.getTitle = function () { + var title + var $e = this.$element + var o = this.options + + title = $e.attr('data-original-title') + || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title) + + return title + } + + Tooltip.prototype.getUID = function (prefix) { + do prefix += ~~(Math.random() * 1000000) + while (document.getElementById(prefix)) + return prefix + } + + Tooltip.prototype.tip = function () { + if (!this.$tip) { + this.$tip = $(this.options.template) + if (this.$tip.length != 1) { + throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!') + } + } + return this.$tip + } + + Tooltip.prototype.arrow = function () { + return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')) + } + + Tooltip.prototype.enable = function () { + this.enabled = true + } + + Tooltip.prototype.disable = function () { + this.enabled = false + } + + Tooltip.prototype.toggleEnabled = function () { + this.enabled = !this.enabled + } + + Tooltip.prototype.toggle = function (e) { + var self = this + if (e) { + self = $(e.currentTarget).data('bs.' + this.type) + if (!self) { + self = new this.constructor(e.currentTarget, this.getDelegateOptions()) + $(e.currentTarget).data('bs.' + this.type, self) + } + } + + if (e) { + self.inState.click = !self.inState.click + if (self.isInStateTrue()) self.enter(self) + else self.leave(self) + } else { + self.tip().hasClass('in') ? self.leave(self) : self.enter(self) + } + } + + Tooltip.prototype.destroy = function () { + var that = this + clearTimeout(this.timeout) + this.hide(function () { + that.$element.off('.' + that.type).removeData('bs.' + that.type) + if (that.$tip) { + that.$tip.detach() + } + that.$tip = null + that.$arrow = null + that.$viewport = null + that.$element = null + }) + } + + + // TOOLTIP PLUGIN DEFINITION + // ========================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.tooltip') + var options = typeof option == 'object' && option + + if (!data && /destroy|hide/.test(option)) return + if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.tooltip + + $.fn.tooltip = Plugin + $.fn.tooltip.Constructor = Tooltip + + + // TOOLTIP NO CONFLICT + // =================== + + $.fn.tooltip.noConflict = function () { + $.fn.tooltip = old + return this + } + + }(jQuery); + + /* ======================================================================== + * Bootstrap: popover.js v3.3.7 + * http://getbootstrap.com/javascript/#popovers + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + + +function ($) { + 'use strict'; + + // POPOVER PUBLIC CLASS DEFINITION + // =============================== + + var Popover = function (element, options) { + this.init('popover', element, options) + } + + if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') + + Popover.VERSION = '3.3.7' + + Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, { + placement: 'right', + trigger: 'click', + content: '', + template: '' + }) + + + // NOTE: POPOVER EXTENDS tooltip.js + // ================================ + + Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype) + + Popover.prototype.constructor = Popover + + Popover.prototype.getDefaults = function () { + return Popover.DEFAULTS + } + + Popover.prototype.setContent = function () { + var $tip = this.tip() + var title = this.getTitle() + var content = this.getContent() + + $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title) + $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events + this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text' + ](content) + + $tip.removeClass('fade top bottom left right in') + + // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do + // this manually by checking the contents. + if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide() + } + + Popover.prototype.hasContent = function () { + return this.getTitle() || this.getContent() + } + + Popover.prototype.getContent = function () { + var $e = this.$element + var o = this.options + + return $e.attr('data-content') + || (typeof o.content == 'function' ? + o.content.call($e[0]) : + o.content) + } + + Popover.prototype.arrow = function () { + return (this.$arrow = this.$arrow || this.tip().find('.arrow')) + } + + + // POPOVER PLUGIN DEFINITION + // ========================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.popover') + var options = typeof option == 'object' && option + + if (!data && /destroy|hide/.test(option)) return + if (!data) $this.data('bs.popover', (data = new Popover(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.popover + + $.fn.popover = Plugin + $.fn.popover.Constructor = Popover + + + // POPOVER NO CONFLICT + // =================== + + $.fn.popover.noConflict = function () { + $.fn.popover = old + return this + } + + }(jQuery); + + /* ======================================================================== + * Bootstrap: scrollspy.js v3.3.7 + * http://getbootstrap.com/javascript/#scrollspy + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + + +function ($) { + 'use strict'; + + // SCROLLSPY CLASS DEFINITION + // ========================== + + function ScrollSpy(element, options) { + this.$body = $(document.body) + this.$scrollElement = $(element).is(document.body) ? $(window) : $(element) + this.options = $.extend({}, ScrollSpy.DEFAULTS, options) + this.selector = (this.options.target || '') + ' .nav li > a' + this.offsets = [] + this.targets = [] + this.activeTarget = null + this.scrollHeight = 0 + + this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this)) + this.refresh() + this.process() + } + + ScrollSpy.VERSION = '3.3.7' + + ScrollSpy.DEFAULTS = { + offset: 10 + } + + ScrollSpy.prototype.getScrollHeight = function () { + return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight) + } + + ScrollSpy.prototype.refresh = function () { + var that = this + var offsetMethod = 'offset' + var offsetBase = 0 + + this.offsets = [] + this.targets = [] + this.scrollHeight = this.getScrollHeight() + + if (!$.isWindow(this.$scrollElement[0])) { + offsetMethod = 'position' + offsetBase = this.$scrollElement.scrollTop() + } + + this.$body + .find(this.selector) + .map(function () { + var $el = $(this) + var href = $el.data('target') || $el.attr('href') + var $href = /^#./.test(href) && $(href) + + return ($href + && $href.length + && $href.is(':visible') + && [[$href[offsetMethod]().top + offsetBase, href]]) || null + }) + .sort(function (a, b) { return a[0] - b[0] }) + .each(function () { + that.offsets.push(this[0]) + that.targets.push(this[1]) + }) + } + + ScrollSpy.prototype.process = function () { + var scrollTop = this.$scrollElement.scrollTop() + this.options.offset + var scrollHeight = this.getScrollHeight() + var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height() + var offsets = this.offsets + var targets = this.targets + var activeTarget = this.activeTarget + var i + + if (this.scrollHeight != scrollHeight) { + this.refresh() + } + + if (scrollTop >= maxScroll) { + return activeTarget != (i = targets[targets.length - 1]) && this.activate(i) + } + + if (activeTarget && scrollTop < offsets[0]) { + this.activeTarget = null + return this.clear() + } + + for (i = offsets.length; i--;) { + activeTarget != targets[i] + && scrollTop >= offsets[i] + && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1]) + && this.activate(targets[i]) + } + } + + ScrollSpy.prototype.activate = function (target) { + this.activeTarget = target + + this.clear() + + var selector = this.selector + + '[data-target="' + target + '"],' + + this.selector + '[href="' + target + '"]' + + var active = $(selector) + .parents('li') + .addClass('active') + + if (active.parent('.dropdown-menu').length) { + active = active + .closest('li.dropdown') + .addClass('active') + } + + active.trigger('activate.bs.scrollspy') + } + + ScrollSpy.prototype.clear = function () { + $(this.selector) + .parentsUntil(this.options.target, '.active') + .removeClass('active') + } + + + // SCROLLSPY PLUGIN DEFINITION + // =========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.scrollspy') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.scrollspy + + $.fn.scrollspy = Plugin + $.fn.scrollspy.Constructor = ScrollSpy + + + // SCROLLSPY NO CONFLICT + // ===================== + + $.fn.scrollspy.noConflict = function () { + $.fn.scrollspy = old + return this + } + + + // SCROLLSPY DATA-API + // ================== + + $(window).on('load.bs.scrollspy.data-api', function () { + $('[data-spy="scroll"]').each(function () { + var $spy = $(this) + Plugin.call($spy, $spy.data()) + }) + }) + + }(jQuery); + + /* ======================================================================== + * Bootstrap: tab.js v3.3.7 + * http://getbootstrap.com/javascript/#tabs + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + + +function ($) { + 'use strict'; + + // TAB CLASS DEFINITION + // ==================== + + var Tab = function (element) { + // jscs:disable requireDollarBeforejQueryAssignment + this.element = $(element) + // jscs:enable requireDollarBeforejQueryAssignment + } + + Tab.VERSION = '3.3.7' + + Tab.TRANSITION_DURATION = 150 + + Tab.prototype.show = function () { + var $this = this.element + var $ul = $this.closest('ul:not(.dropdown-menu)') + var selector = $this.data('target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + if ($this.parent('li').hasClass('active')) return + + var $previous = $ul.find('.active:last a') + var hideEvent = $.Event('hide.bs.tab', { + relatedTarget: $this[0] + }) + var showEvent = $.Event('show.bs.tab', { + relatedTarget: $previous[0] + }) + + $previous.trigger(hideEvent) + $this.trigger(showEvent) + + if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return + + var $target = $(selector) + + this.activate($this.closest('li'), $ul) + this.activate($target, $target.parent(), function () { + $previous.trigger({ + type: 'hidden.bs.tab', + relatedTarget: $this[0] + }) + $this.trigger({ + type: 'shown.bs.tab', + relatedTarget: $previous[0] + }) + }) + } + + Tab.prototype.activate = function (element, container, callback) { + var $active = container.find('> .active') + var transition = callback + && $.support.transition + && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length) + + function next() { + $active + .removeClass('active') + .find('> .dropdown-menu > .active') + .removeClass('active') + .end() + .find('[data-toggle="tab"]') + .attr('aria-expanded', false) + + element + .addClass('active') + .find('[data-toggle="tab"]') + .attr('aria-expanded', true) + + if (transition) { + element[0].offsetWidth // reflow for transition + element.addClass('in') + } else { + element.removeClass('fade') + } + + if (element.parent('.dropdown-menu').length) { + element + .closest('li.dropdown') + .addClass('active') + .end() + .find('[data-toggle="tab"]') + .attr('aria-expanded', true) + } + + callback && callback() + } + + $active.length && transition ? + $active + .one('bsTransitionEnd', next) + .emulateTransitionEnd(Tab.TRANSITION_DURATION) : + next() + + $active.removeClass('in') + } + + + // TAB PLUGIN DEFINITION + // ===================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.tab') + + if (!data) $this.data('bs.tab', (data = new Tab(this))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.tab + + $.fn.tab = Plugin + $.fn.tab.Constructor = Tab + + + // TAB NO CONFLICT + // =============== + + $.fn.tab.noConflict = function () { + $.fn.tab = old + return this + } + + + // TAB DATA-API + // ============ + + var clickHandler = function (e) { + e.preventDefault() + Plugin.call($(this), 'show') + } + + $(document) + .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler) + .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler) + + }(jQuery); + + /* ======================================================================== + * Bootstrap: affix.js v3.3.7 + * http://getbootstrap.com/javascript/#affix + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + + +function ($) { + 'use strict'; + + // AFFIX CLASS DEFINITION + // ====================== + + var Affix = function (element, options) { + this.options = $.extend({}, Affix.DEFAULTS, options) + + this.$target = $(this.options.target) + .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this)) + .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this)) + + this.$element = $(element) + this.affixed = null + this.unpin = null + this.pinnedOffset = null + + this.checkPosition() + } + + Affix.VERSION = '3.3.7' + + Affix.RESET = 'affix affix-top affix-bottom' + + Affix.DEFAULTS = { + offset: 0, + target: window + } + + Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) { + var scrollTop = this.$target.scrollTop() + var position = this.$element.offset() + var targetHeight = this.$target.height() + + if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false + + if (this.affixed == 'bottom') { + if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom' + return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom' + } + + var initializing = this.affixed == null + var colliderTop = initializing ? scrollTop : position.top + var colliderHeight = initializing ? targetHeight : height + + if (offsetTop != null && scrollTop <= offsetTop) return 'top' + if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom' + + return false + } + + Affix.prototype.getPinnedOffset = function () { + if (this.pinnedOffset) return this.pinnedOffset + this.$element.removeClass(Affix.RESET).addClass('affix') + var scrollTop = this.$target.scrollTop() + var position = this.$element.offset() + return (this.pinnedOffset = position.top - scrollTop) + } + + Affix.prototype.checkPositionWithEventLoop = function () { + setTimeout($.proxy(this.checkPosition, this), 1) + } + + Affix.prototype.checkPosition = function () { + if (!this.$element.is(':visible')) return + + var height = this.$element.height() + var offset = this.options.offset + var offsetTop = offset.top + var offsetBottom = offset.bottom + var scrollHeight = Math.max($(document).height(), $(document.body).height()) + + if (typeof offset != 'object') offsetBottom = offsetTop = offset + if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element) + if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element) + + var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom) + + if (this.affixed != affix) { + if (this.unpin != null) this.$element.css('top', '') + + var affixType = 'affix' + (affix ? '-' + affix : '') + var e = $.Event(affixType + '.bs.affix') + + this.$element.trigger(e) + + if (e.isDefaultPrevented()) return + + this.affixed = affix + this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null + + this.$element + .removeClass(Affix.RESET) + .addClass(affixType) + .trigger(affixType.replace('affix', 'affixed') + '.bs.affix') + } + + if (affix == 'bottom') { + this.$element.offset({ + top: scrollHeight - height - offsetBottom + }) + } + } + + + // AFFIX PLUGIN DEFINITION + // ======================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.affix') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.affix', (data = new Affix(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.affix + + $.fn.affix = Plugin + $.fn.affix.Constructor = Affix + + + // AFFIX NO CONFLICT + // ================= + + $.fn.affix.noConflict = function () { + $.fn.affix = old + return this + } + + + // AFFIX DATA-API + // ============== + + $(window).on('load', function () { + $('[data-spy="affix"]').each(function () { + var $spy = $(this) + var data = $spy.data() + + data.offset = data.offset || {} + + if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom + if (data.offsetTop != null) data.offset.top = data.offsetTop + + Plugin.call($spy, data) + }) + }) + + }(jQuery); diff --git a/aspnetcore/fundamentals/localization/sample/8.x/Localization/wwwroot/js/jquery-2.2.0.js b/aspnetcore/fundamentals/localization/sample/8.x/Localization/wwwroot/js/jquery-2.2.0.js new file mode 100644 index 000000000000..e50863f10b6b --- /dev/null +++ b/aspnetcore/fundamentals/localization/sample/8.x/Localization/wwwroot/js/jquery-2.2.0.js @@ -0,0 +1,9831 @@ +/*! + * jQuery JavaScript Library v2.2.0 + * http://jquery.com/ + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-01-08T20:02Z + */ + +(function( global, factory ) { + + if ( typeof module === "object" && typeof module.exports === "object" ) { + // For CommonJS and CommonJS-like environments where a proper `window` + // is present, execute the factory and get jQuery. + // For environments that do not have a `window` with a `document` + // (such as Node.js), expose a factory as module.exports. + // This accentuates the need for the creation of a real `window`. + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info. + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + + // Pass this if window is not defined yet + }(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + + // Support: Firefox 18+ + // Can't be in strict mode, several libs including ASP.NET trace + // the stack via arguments.caller.callee and Firefox dies if + // you try to trace through "use strict" call chains. (#13335) + //"use strict"; + var arr = []; + + var document = window.document; + + var slice = arr.slice; + + var concat = arr.concat; + + var push = arr.push; + + var indexOf = arr.indexOf; + + var class2type = {}; + + var toString = class2type.toString; + + var hasOwn = class2type.hasOwnProperty; + + var support = {}; + + + + var + version = "2.2.0", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }, + + // Support: Android<4.1 + // Make sure we trim BOM and NBSP + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([\da-z])/gi, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }; + + jQuery.fn = jQuery.prototype = { + + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // Start with an empty selector + selector: "", + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num != null ? + + // Return just the one element from the set + ( num < 0 ? this[ num + this.length ] : this[ num ] ) : + + // Return all the elements in a clean array + slice.call( this ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + ret.context = this.context; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + each: function( callback ) { + return jQuery.each( this, callback ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map( this, function( elem, i ) { + return callback.call( elem, i, elem ); + } ) ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice + }; + + jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // Skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { + target = {}; + } + + // Extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + + // Only deal with non-null/undefined values + if ( ( options = arguments[ i ] ) != null ) { + + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = jQuery.isArray( copy ) ) ) ) { + + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray( src ) ? src : []; + + } else { + clone = src && jQuery.isPlainObject( src ) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; + }; + + jQuery.extend( { + + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + isFunction: function( obj ) { + return jQuery.type( obj ) === "function"; + }, + + isArray: Array.isArray, + + isWindow: function( obj ) { + return obj != null && obj === obj.window; + }, + + isNumeric: function( obj ) { + + // parseFloat NaNs numeric-cast false positives (null|true|false|"") + // ...but misinterprets leading-number strings, particularly hex literals ("0x...") + // subtraction forces infinities to NaN + // adding 1 corrects loss of precision from parseFloat (#15100) + var realStringObj = obj && obj.toString(); + return !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0; + }, + + isPlainObject: function( obj ) { + + // Not plain objects: + // - Any object or value whose internal [[Class]] property is not "[object Object]" + // - DOM nodes + // - window + if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + if ( obj.constructor && + !hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) { + return false; + } + + // If the function hasn't returned already, we're confident that + // |obj| is a plain object, created by {} or constructed with new Object + return true; + }, + + isEmptyObject: function( obj ) { + var name; + for ( name in obj ) { + return false; + } + return true; + }, + + type: function( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android<4.0, iOS<6 (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; + }, + + // Evaluates a script in a global context + globalEval: function( code ) { + var script, + indirect = eval; + + code = jQuery.trim( code ); + + if ( code ) { + + // If the code includes a valid, prologue position + // strict mode pragma, execute code by injecting a + // script tag into the document. + if ( code.indexOf( "use strict" ) === 1 ) { + script = document.createElement( "script" ); + script.text = code; + document.head.appendChild( script ).parentNode.removeChild( script ); + } else { + + // Otherwise, avoid the DOM node creation, insertion + // and removal by using an indirect global eval + + indirect( code ); + } + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Support: IE9-11+ + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + }, + + each: function( obj, callback ) { + var length, i = 0; + + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } + + return obj; + }, + + // Support: Android<4.1 + trim: function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArrayLike( Object( arr ) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : indexOf.call( arr, elem, i ); + }, + + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + for ( ; j < len; j++ ) { + first[ i++ ] = second[ j ]; + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var length, value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var tmp, args, proxy; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + now: Date.now, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support + } ); + + // JSHint would error on this code due to the Symbol not being defined in ES5. + // Defining this global in .jshintrc would create a danger of using the global + // unguarded in another place, it seems safer to just disable JSHint for these + // three lines. + /* jshint ignore: start */ + if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; + } + /* jshint ignore: end */ + + // Populate the class2type map + jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), + function( i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); + } ); + + function isArrayLike( obj ) { + + // Support: iOS 8.2 (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = jQuery.type( obj ); + + if ( type === "function" || jQuery.isWindow( obj ) ) { + return false; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; + } + var Sizzle = + /*! + * Sizzle CSS Selector Engine v2.2.1 + * http://sizzlejs.com/ + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2015-10-17 + */ + (function( window ) { + + var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + 1 * new Date(), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // General-purpose constants + MAX_NEGATIVE = 1 << 31, + + // Instance methods + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf as it's faster than native + // http://jsperf.com/thor-indexof-vs-for/5 + indexOf = function( list, elem ) { + var i = 0, + len = list.length; + for ( ; i < len; i++ ) { + if ( list[i] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + + // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + + rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + identifier + ")" ), + "CLASS": new RegExp( "^\\.(" + identifier + ")" ), + "TAG": new RegExp( "^(" + identifier + "|[*])" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + rescape = /'|\\/g, + + // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), + funescape = function( _, escaped, escapedWhitespace ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + // Support: Firefox<24 + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + high < 0 ? + // BMP codepoint + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }; + + // Optimize for push.apply( _, NodeList ) + try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; + } catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; + } + + function Sizzle( selector, context, results, seed ) { + var m, i, elem, nid, nidselect, match, groups, newSelector, + newContext = context && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or context + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + context = context || document; + + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { + + // ID selector + if ( (m = match[1]) ) { + + // Document context + if ( nodeType === 9 ) { + if ( (elem = context.getElementById( m )) ) { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( newContext && (elem = newContext.getElementById( m )) && + contains( context, elem ) && + elem.id === m ) { + + results.push( elem ); + return results; + } + } + + // Type selector + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( (m = match[3]) && support.getElementsByClassName && + context.getElementsByClassName ) { + + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // Take advantage of querySelectorAll + if ( support.qsa && + !compilerCache[ selector + " " ] && + (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + + if ( nodeType !== 1 ) { + newContext = context; + newSelector = selector; + + // qSA looks outside Element context, which is not what we want + // Thanks to Andrew Dupont for this workaround technique + // Support: IE <=8 + // Exclude object elements + } else if ( context.nodeName.toLowerCase() !== "object" ) { + + // Capture the context ID, setting it first if necessary + if ( (nid = context.getAttribute( "id" )) ) { + nid = nid.replace( rescape, "\\$&" ); + } else { + context.setAttribute( "id", (nid = expando) ); + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + nidselect = ridentifier.test( nid ) ? "#" + nid : "[id='" + nid + "']"; + while ( i-- ) { + groups[i] = nidselect + " " + toSelector( groups[i] ); + } + newSelector = groups.join( "," ); + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + } + + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + } finally { + if ( nid === expando ) { + context.removeAttribute( "id" ); + } + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); + } + + /** + * Create key-value caches of limited size + * @returns {function(string, object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ + function createCache() { + var keys = []; + + function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key + " " ] = value); + } + return cache; + } + + /** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ + function markFunction( fn ) { + fn[ expando ] = true; + return fn; + } + + /** + * Support testing using an element + * @param {Function} fn Passed the created div and expects a boolean result + */ + function assert( fn ) { + var div = document.createElement("div"); + + try { + return !!fn( div ); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if ( div.parentNode ) { + div.parentNode.removeChild( div ); + } + // release memory in IE + div = null; + } + } + + /** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ + function addHandle( attrs, handler ) { + var arr = attrs.split("|"), + i = arr.length; + + while ( i-- ) { + Expr.attrHandle[ arr[i] ] = handler; + } + } + + /** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ + function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + ( ~b.sourceIndex || MAX_NEGATIVE ) - + ( ~a.sourceIndex || MAX_NEGATIVE ); + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; + } + + /** + * Returns a function to use in pseudos for input types + * @param {String} type + */ + function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; + } + + /** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ + function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; + } + + /** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ + function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); + } + + /** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ + function testContext( context ) { + return context && typeof context.getElementsByTagName !== "undefined" && context; + } + + // Expose support vars for convenience + support = Sizzle.support = {}; + + /** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ + isXML = Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; + }; + + /** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ + setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, parent, + doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already selected + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Update global variables + document = doc; + docElem = document.documentElement; + documentIsHTML = !isXML( document ); + + // Support: IE 9-11, Edge + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) + if ( (parent = document.defaultView) && parent.top !== parent ) { + // Support: IE 11 + if ( parent.addEventListener ) { + parent.addEventListener( "unload", unloadHandler, false ); + + // Support: IE 9 - 10 only + } else if ( parent.attachEvent ) { + parent.attachEvent( "onunload", unloadHandler ); + } + } + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties + // (excepting IE8 booleans) + support.attributes = assert(function( div ) { + div.className = "i"; + return !div.getAttribute("className"); + }); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert(function( div ) { + div.appendChild( document.createComment("") ); + return !div.getElementsByTagName("*").length; + }); + + // Support: IE<9 + support.getElementsByClassName = rnative.test( document.getElementsByClassName ); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert(function( div ) { + docElem.appendChild( div ).id = expando; + return !document.getElementsByName || !document.getElementsByName( expando ).length; + }); + + // ID find and filter + if ( support.getById ) { + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var m = context.getElementById( id ); + return m ? [ m ] : []; + } + }; + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + } else { + // Support: IE6/7 + // getElementById is not reliable as a find shortcut + delete Expr.find["ID"]; + + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== "undefined" && + elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + } + + // Tag + Expr.find["TAG"] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( tag ); + + // DocumentFragment nodes don't have gEBTN + } else if ( support.qsa ) { + return context.querySelectorAll( tag ); + } + } : + + function( tag, context ) { + var elem, + tmp = [], + i = 0, + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See http://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( div ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // http://bugs.jquery.com/ticket/12359 + docElem.appendChild( div ).innerHTML = "" + + ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // http://msdn.microsoft.com/library/ie/hh465388.aspx#attribute_section + if ( div.querySelectorAll("[msallowcapture^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !div.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ + if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push("~="); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibing-combinator selector` fails + if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push(".#.+[+~]"); + } + }); + + assert(function( div ) { + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = document.createElement("input"); + input.setAttribute( "type", "hidden" ); + div.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( div.querySelectorAll("[name=d]").length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":enabled").length ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + div.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( div ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( div, "div" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( div, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully self-exclusive + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { + return -1; + } + if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + return a === document ? -1 : + b === document ? 1 : + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return document; + }; + + Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); + }; + + Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + if ( support.matchesSelector && documentIsHTML && + !compilerCache[ expr + " " ] && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch (e) {} + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; + }; + + Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); + }; + + Sizzle.attr = function( elem, name ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null; + }; + + Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); + }; + + /** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ + Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; + }; + + /** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ + getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + while ( (node = elem[i++]) ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; + }; + + Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[6] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[3] ) { + match[2] = match[4] || match[5] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { return true; } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, uniqueCache, outerCache, node, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType, + diff = false; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) { + + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + + // Seek `elem` from a previously-cached index + + // ...in a gzip-friendly way + node = parent; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex && cache[ 2 ]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + } else { + // Use previously-cached element index if available + if ( useCache ) { + // ...in a gzip-friendly way + node = elem; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex; + } + + // xml :nth-child(...) + // or :nth-last-child(...) or :nth(-last)?-of-type(...) + if ( diff === false ) { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) && + ++diff ) { + + // Cache the index of each encountered element + if ( useCache ) { + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + uniqueCache[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + // Don't keep the element (issue #299) + input[0] = null; + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + text = text.replace( runescape, funescape ); + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifier + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": function( elem ) { + return elem.disabled === false; + }, + + "disabled": function( elem ) { + return elem.disabled === true; + }, + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } + }; + + Expr.pseudos["nth"] = Expr.pseudos["eq"]; + + // Add button/input type pseudos + for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); + } + for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); + } + + // Easy API for creating new setFilters + function setFilters() {} + setFilters.prototype = Expr.filters = Expr.pseudos; + Expr.setFilters = new setFilters(); + + tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( (tokens = []) ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push({ + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + }); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); + }; + + function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; + } + + function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + checkNonElements = base && dir === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, uniqueCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); + + if ( (oldCache = uniqueCache[ dir ]) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return (newCache[ 2 ] = oldCache[ 2 ]); + } else { + // Reuse newcache so results back-propagate to previous elements + uniqueCache[ dir ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { + return true; + } + } + } + } + } + }; + } + + function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; + } + + function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; + } + + function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; + } + + function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); + } + + function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + // Avoid hanging onto element (issue #299) + checkContext = null; + return ret; + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); + } + + function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), + len = elems.length; + + if ( outermost ) { + outermostContext = context === document || context || outermost; + } + + // Add elements passing elementMatchers directly to results + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + if ( !context && elem.ownerDocument !== document ) { + setDocument( elem ); + xml = !documentIsHTML; + } + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context || document, xml) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // `i` is now the count of elements visited above, and adding it to `matchedCount` + // makes the latter nonnegative. + matchedCount += i; + + // Apply set filters to unmatched elements + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have + // no element matchers and no seed. + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that + // case, which will result in a "00" `matchedCount` that differs from `i` but is also + // numerically zero. + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; + } + + compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; + }; + + /** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ + select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( (selector = compiled.selector || selector) ); + + results = results || []; + + // Try to minimize operations if there is only one selector in the list and no seed + // (the latter of which guarantees us context) + if ( match.length === 1 ) { + + // Reduce context if the leading compound selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + support.getById && context.nodeType === 9 && documentIsHTML && + Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; + }; + + // One-time assignments + + // Sort stability + support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + + // Support: Chrome 14-35+ + // Always assume duplicates if they aren't passed to the comparison function + support.detectDuplicates = !!hasDuplicate; + + // Initialize against the default document + setDocument(); + + // Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) + // Detached nodes confoundingly follow *each other* + support.sortDetached = assert(function( div1 ) { + // Should return 1, but returns 4 (following) + return div1.compareDocumentPosition( document.createElement("div") ) & 1; + }); + + // Support: IE<8 + // Prevent attribute/property "interpolation" + // http://msdn.microsoft.com/library/ms536429%28VS.85%29.aspx + if ( !assert(function( div ) { + div.innerHTML = ""; + return div.firstChild.getAttribute("href") === "#" ; + }) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + }); + } + + // Support: IE<9 + // Use defaultValue in place of getAttribute("value") + if ( !support.attributes || !assert(function( div ) { + div.innerHTML = ""; + div.firstChild.setAttribute( "value", "" ); + return div.firstChild.getAttribute( "value" ) === ""; + }) ) { + addHandle( "value", function( elem, name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + }); + } + + // Support: IE<9 + // Use getAttributeNode to fetch booleans when getAttribute lies + if ( !assert(function( div ) { + return div.getAttribute("disabled") == null; + }) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + null; + } + }); + } + + return Sizzle; + + })( window ); + + + + jQuery.find = Sizzle; + jQuery.expr = Sizzle.selectors; + jQuery.expr[ ":" ] = jQuery.expr.pseudos; + jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; + jQuery.text = Sizzle.getText; + jQuery.isXMLDoc = Sizzle.isXML; + jQuery.contains = Sizzle.contains; + + + + var dir = function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; + }; + + + var siblings = function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; + }; + + + var rneedsContext = jQuery.expr.match.needsContext; + + var rsingleTag = ( /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/ ); + + + + var risSimple = /^.[^:#\[\.,]*$/; + + // Implement the identical functionality for filter and not + function winnow( elements, qualifier, not ) { + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + /* jshint -W018 */ + return !!qualifier.call( elem, i, elem ) !== not; + } ); + + } + + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + } ); + + } + + if ( typeof qualifier === "string" ) { + if ( risSimple.test( qualifier ) ) { + return jQuery.filter( qualifier, elements, not ); + } + + qualifier = jQuery.filter( qualifier, elements ); + } + + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not; + } ); + } + + jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 && elem.nodeType === 1 ? + jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : + jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + } ) ); + }; + + jQuery.fn.extend( { + find: function( selector ) { + var i, + len = this.length, + ret = [], + self = this; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter( function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + } ) ); + } + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + // Needed because $( selector, context ) becomes $( context ).find( selector ) + ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); + ret.selector = this.selector ? this.selector + " " + selector : selector; + return ret; + }, + filter: function( selector ) { + return this.pushStack( winnow( this, selector || [], false ) ); + }, + not: function( selector ) { + return this.pushStack( winnow( this, selector || [], true ) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } + } ); + + + // Initialize a jQuery object + + + // A central reference to the root jQuery(document) + var rootjQuery, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, + + init = jQuery.fn.init = function( selector, context, root ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Method init() accepts an alternate rootjQuery + // so migrate can support jQuery.sub (gh-2101) + root = root || rootjQuery; + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector[ 0 ] === "<" && + selector[ selector.length - 1 ] === ">" && + selector.length >= 3 ) { + + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && ( match[ 1 ] || !context ) ) { + + // HANDLE: $(html) -> $(array) + if ( match[ 1 ] ) { + context = context instanceof jQuery ? context[ 0 ] : context; + + // Option to run scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[ 1 ], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + + // Properties of context are called as methods if possible + if ( jQuery.isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[ 2 ] ); + + // Support: Blackberry 4.6 + // gEBID returns nodes no longer in the document (#6963) + if ( elem && elem.parentNode ) { + + // Inject the element directly into the jQuery object + this.length = 1; + this[ 0 ] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || root ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this.context = this[ 0 ] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return root.ready !== undefined ? + root.ready( selector ) : + + // Execute immediately if ready is not present + selector( jQuery ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }; + + // Give the init function the jQuery prototype for later instantiation + init.prototype = jQuery.fn; + + // Initialize central reference + rootjQuery = jQuery( document ); + + + var rparentsprev = /^(?:parents|prev(?:Until|All))/, + + // Methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + + jQuery.fn.extend( { + has: function( target ) { + var targets = jQuery( target, this ), + l = targets.length; + + return this.filter( function() { + var i = 0; + for ( ; i < l; i++ ) { + if ( jQuery.contains( this, targets[ i ] ) ) { + return true; + } + } + } ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( ; i < l; i++ ) { + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { + + // Always skip document fragments + if ( cur.nodeType < 11 && ( pos ? + pos.index( cur ) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector( cur, selectors ) ) ) { + + matched.push( cur ); + break; + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); + }, + + // Determine the position of an element within the set + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; + } + + // Index in selector + if ( typeof elem === "string" ) { + return indexOf.call( jQuery( elem ), this[ 0 ] ); + } + + // Locate the position of the desired element + return indexOf.call( this, + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem + ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.uniqueSort( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + } + } ); + + function sibling( cur, dir ) { + while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} + return cur; + } + + jQuery.each( { + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return siblings( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return siblings( elem.firstChild ); + }, + contents: function( elem ) { + return elem.contentDocument || jQuery.merge( [], elem.childNodes ); + } + }, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var matched = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + matched = jQuery.filter( selector, matched ); + } + + if ( this.length > 1 ) { + + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + jQuery.uniqueSort( matched ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + matched.reverse(); + } + } + + return this.pushStack( matched ); + }; + } ); + var rnotwhite = ( /\S+/g ); + + + + // Convert String-formatted options into Object-formatted ones + function createOptions( options ) { + var object = {}; + jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { + object[ flag ] = true; + } ); + return object; + } + + /* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ + jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + createOptions( options ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + + // Last fire value for non-forgettable lists + memory, + + // Flag to know if list was already fired + fired, + + // Flag to prevent firing + locked, + + // Actual callback list + list = [], + + // Queue of execution data for repeatable lists + queue = [], + + // Index of currently firing callback (modified by add/remove as needed) + firingIndex = -1, + + // Fire callbacks + fire = function() { + + // Enforce single-firing + locked = options.once; + + // Execute callbacks for all pending executions, + // respecting firingIndex overrides and runtime changes + fired = firing = true; + for ( ; queue.length; firingIndex = -1 ) { + memory = queue.shift(); + while ( ++firingIndex < list.length ) { + + // Run callback and check for early termination + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && + options.stopOnFalse ) { + + // Jump to end and forget the data so .add doesn't re-fire + firingIndex = list.length; + memory = false; + } + } + } + + // Forget the data if we're done with it + if ( !options.memory ) { + memory = false; + } + + firing = false; + + // Clean up if we're done firing for good + if ( locked ) { + + // Keep an empty list if we have data for future add calls + if ( memory ) { + list = []; + + // Otherwise, this object is spent + } else { + list = ""; + } + } + }, + + // Actual Callbacks object + self = { + + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + + // If we have memory from a past run, we should fire after adding + if ( memory && !firing ) { + firingIndex = list.length - 1; + queue.push( memory ); + } + + ( function add( args ) { + jQuery.each( args, function( _, arg ) { + if ( jQuery.isFunction( arg ) ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) { + + // Inspect recursively + add( arg ); + } + } ); + } )( arguments ); + + if ( memory && !firing ) { + fire(); + } + } + return this; + }, + + // Remove a callback from the list + remove: function() { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + + // Handle firing indexes + if ( index <= firingIndex ) { + firingIndex--; + } + } + } ); + return this; + }, + + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? + jQuery.inArray( fn, list ) > -1 : + list.length > 0; + }, + + // Remove all callbacks from the list + empty: function() { + if ( list ) { + list = []; + } + return this; + }, + + // Disable .fire and .add + // Abort any current/pending executions + // Clear all callbacks and values + disable: function() { + locked = queue = []; + list = memory = ""; + return this; + }, + disabled: function() { + return !list; + }, + + // Disable .fire + // Also disable .add unless we have memory (since it would have no effect) + // Abort any pending executions + lock: function() { + locked = queue = []; + if ( !memory ) { + list = memory = ""; + } + return this; + }, + locked: function() { + return !!locked; + }, + + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( !locked ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + queue.push( args ); + if ( !firing ) { + fire(); + } + } + return this; + }, + + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; + }; + + + jQuery.extend( { + + Deferred: function( func ) { + var tuples = [ + + // action, add listener, listener list, final state + [ "resolve", "done", jQuery.Callbacks( "once memory" ), "resolved" ], + [ "reject", "fail", jQuery.Callbacks( "once memory" ), "rejected" ], + [ "notify", "progress", jQuery.Callbacks( "memory" ) ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + then: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + return jQuery.Deferred( function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; + + // deferred[ done | fail | progress ] for forwarding actions to newDefer + deferred[ tuple[ 1 ] ]( function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .progress( newDefer.notify ) + .done( newDefer.resolve ) + .fail( newDefer.reject ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( + this === promise ? newDefer.promise() : this, + fn ? [ returned ] : arguments + ); + } + } ); + } ); + fns = null; + } ).promise(); + }, + + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Keep pipe for back-compat + promise.pipe = promise.then; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 3 ]; + + // promise[ done | fail | progress ] = list.add + promise[ tuple[ 1 ] ] = list.add; + + // Handle state + if ( stateString ) { + list.add( function() { + + // state = [ resolved | rejected ] + state = stateString; + + // [ reject_list | resolve_list ].disable; progress_list.lock + }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); + } + + // deferred[ resolve | reject | notify ] + deferred[ tuple[ 0 ] ] = function() { + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? promise : this, arguments ); + return this; + }; + deferred[ tuple[ 0 ] + "With" ] = list.fireWith; + } ); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( subordinate /* , ..., subordinateN */ ) { + var i = 0, + resolveValues = slice.call( arguments ), + length = resolveValues.length, + + // the count of uncompleted subordinates + remaining = length !== 1 || + ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, + + // the master Deferred. + // If resolveValues consist of only a single Deferred, just use that. + deferred = remaining === 1 ? subordinate : jQuery.Deferred(), + + // Update function for both resolve and progress values + updateFunc = function( i, contexts, values ) { + return function( value ) { + contexts[ i ] = this; + values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( values === progressValues ) { + deferred.notifyWith( contexts, values ); + } else if ( !( --remaining ) ) { + deferred.resolveWith( contexts, values ); + } + }; + }, + + progressValues, progressContexts, resolveContexts; + + // Add listeners to Deferred subordinates; treat others as resolved + if ( length > 1 ) { + progressValues = new Array( length ); + progressContexts = new Array( length ); + resolveContexts = new Array( length ); + for ( ; i < length; i++ ) { + if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { + resolveValues[ i ].promise() + .progress( updateFunc( i, progressContexts, progressValues ) ) + .done( updateFunc( i, resolveContexts, resolveValues ) ) + .fail( deferred.reject ); + } else { + --remaining; + } + } + } + + // If we're not waiting on anything, resolve the master + if ( !remaining ) { + deferred.resolveWith( resolveContexts, resolveValues ); + } + + return deferred.promise(); + } + } ); + + + // The deferred used on DOM ready + var readyList; + + jQuery.fn.ready = function( fn ) { + + // Add the callback + jQuery.ready.promise().done( fn ); + + return this; + }; + + jQuery.extend( { + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.triggerHandler ) { + jQuery( document ).triggerHandler( "ready" ); + jQuery( document ).off( "ready" ); + } + } + } ); + + /** + * The ready event handler and self cleanup method + */ + function completed() { + document.removeEventListener( "DOMContentLoaded", completed ); + window.removeEventListener( "load", completed ); + jQuery.ready(); + } + + jQuery.ready.promise = function( obj ) { + if ( !readyList ) { + + readyList = jQuery.Deferred(); + + // Catch cases where $(document).ready() is called + // after the browser event has already occurred. + // Support: IE9-10 only + // Older IE sometimes signals "interactive" too soon + if ( document.readyState === "complete" || + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { + + // Handle it asynchronously to allow scripts the opportunity to delay ready + window.setTimeout( jQuery.ready ); + + } else { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed ); + } + } + return readyList.promise( obj ); + }; + + // Kick off the DOM ready check even if the user does not + jQuery.ready.promise(); + + + + + // Multifunctional method to get and set values of a collection + // The value/s can optionally be executed if it's a function + var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + len = elems.length, + bulk = key == null; + + // Sets many values + if ( jQuery.type( key ) === "object" ) { + chainable = true; + for ( i in key ) { + access( elems, fn, i, key[ i ], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !jQuery.isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < len; i++ ) { + fn( + elems[ i ], key, raw ? + value : + value.call( elems[ i ], i, fn( elems[ i ], key ) ) + ); + } + } + } + + return chainable ? + elems : + + // Gets + bulk ? + fn.call( elems ) : + len ? fn( elems[ 0 ], key ) : emptyGet; + }; + var acceptData = function( owner ) { + + // Accepts only: + // - Node + // - Node.ELEMENT_NODE + // - Node.DOCUMENT_NODE + // - Object + // - Any + /* jshint -W018 */ + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); + }; + + + + + function Data() { + this.expando = jQuery.expando + Data.uid++; + } + + Data.uid = 1; + + Data.prototype = { + + register: function( owner, initial ) { + var value = initial || {}; + + // If it is a node unlikely to be stringify-ed or looped over + // use plain assignment + if ( owner.nodeType ) { + owner[ this.expando ] = value; + + // Otherwise secure it in a non-enumerable, non-writable property + // configurability must be true to allow the property to be + // deleted with the delete operator + } else { + Object.defineProperty( owner, this.expando, { + value: value, + writable: true, + configurable: true + } ); + } + return owner[ this.expando ]; + }, + cache: function( owner ) { + + // We can accept data for non-element nodes in modern browsers, + // but we should not, see #8335. + // Always return an empty object. + if ( !acceptData( owner ) ) { + return {}; + } + + // Check if the owner object already has a cache + var value = owner[ this.expando ]; + + // If not, create one + if ( !value ) { + value = {}; + + // We can accept data for non-element nodes in modern browsers, + // but we should not, see #8335. + // Always return an empty object. + if ( acceptData( owner ) ) { + + // If it is a node unlikely to be stringify-ed or looped over + // use plain assignment + if ( owner.nodeType ) { + owner[ this.expando ] = value; + + // Otherwise secure it in a non-enumerable property + // configurable must be true to allow the property to be + // deleted when data is removed + } else { + Object.defineProperty( owner, this.expando, { + value: value, + configurable: true + } ); + } + } + } + + return value; + }, + set: function( owner, data, value ) { + var prop, + cache = this.cache( owner ); + + // Handle: [ owner, key, value ] args + if ( typeof data === "string" ) { + cache[ data ] = value; + + // Handle: [ owner, { properties } ] args + } else { + + // Copy the properties one-by-one to the cache object + for ( prop in data ) { + cache[ prop ] = data[ prop ]; + } + } + return cache; + }, + get: function( owner, key ) { + return key === undefined ? + this.cache( owner ) : + owner[ this.expando ] && owner[ this.expando ][ key ]; + }, + access: function( owner, key, value ) { + var stored; + + // In cases where either: + // + // 1. No key was specified + // 2. A string key was specified, but no value provided + // + // Take the "read" path and allow the get method to determine + // which value to return, respectively either: + // + // 1. The entire cache object + // 2. The data stored at the key + // + if ( key === undefined || + ( ( key && typeof key === "string" ) && value === undefined ) ) { + + stored = this.get( owner, key ); + + return stored !== undefined ? + stored : this.get( owner, jQuery.camelCase( key ) ); + } + + // When the key is not a string, or both a key and value + // are specified, set or extend (existing objects) with either: + // + // 1. An object of properties + // 2. A key and value + // + this.set( owner, key, value ); + + // Since the "set" path can have two possible entry points + // return the expected data based on which path was taken[*] + return value !== undefined ? value : key; + }, + remove: function( owner, key ) { + var i, name, camel, + cache = owner[ this.expando ]; + + if ( cache === undefined ) { + return; + } + + if ( key === undefined ) { + this.register( owner ); + + } else { + + // Support array or space separated string of keys + if ( jQuery.isArray( key ) ) { + + // If "name" is an array of keys... + // When data is initially created, via ("key", "val") signature, + // keys will be converted to camelCase. + // Since there is no way to tell _how_ a key was added, remove + // both plain key and camelCase key. #12786 + // This will only penalize the array argument path. + name = key.concat( key.map( jQuery.camelCase ) ); + } else { + camel = jQuery.camelCase( key ); + + // Try the string as a key before any manipulation + if ( key in cache ) { + name = [ key, camel ]; + } else { + + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + name = camel; + name = name in cache ? + [ name ] : ( name.match( rnotwhite ) || [] ); + } + } + + i = name.length; + + while ( i-- ) { + delete cache[ name[ i ] ]; + } + } + + // Remove the expando if there's no more data + if ( key === undefined || jQuery.isEmptyObject( cache ) ) { + + // Support: Chrome <= 35-45+ + // Webkit & Blink performance suffers when deleting properties + // from DOM nodes, so set to undefined instead + // https://code.google.com/p/chromium/issues/detail?id=378607 + if ( owner.nodeType ) { + owner[ this.expando ] = undefined; + } else { + delete owner[ this.expando ]; + } + } + }, + hasData: function( owner ) { + var cache = owner[ this.expando ]; + return cache !== undefined && !jQuery.isEmptyObject( cache ); + } + }; + var dataPriv = new Data(); + + var dataUser = new Data(); + + + + // Implementation Summary + // + // 1. Enforce API surface and semantic compatibility with 1.9.x branch + // 2. Improve the module's maintainability by reducing the storage + // paths to a single mechanism. + // 3. Use the same single mechanism to support "private" and "user" data. + // 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) + // 5. Avoid exposing implementation details on user objects (eg. expando properties) + // 6. Provide a clear path for implementation upgrade to WeakMap in 2014 + + var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /[A-Z]/g; + + function dataAttr( elem, key, data ) { + var name; + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + + // Only convert to a number if it doesn't change the string + +data + "" === data ? +data : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch ( e ) {} + + // Make sure we set the data so it isn't changed later + dataUser.set( elem, key, data ); + } else { + data = undefined; + } + } + return data; + } + + jQuery.extend( { + hasData: function( elem ) { + return dataUser.hasData( elem ) || dataPriv.hasData( elem ); + }, + + data: function( elem, name, data ) { + return dataUser.access( elem, name, data ); + }, + + removeData: function( elem, name ) { + dataUser.remove( elem, name ); + }, + + // TODO: Now that all calls to _data and _removeData have been replaced + // with direct calls to dataPriv methods, these can be deprecated. + _data: function( elem, name, data ) { + return dataPriv.access( elem, name, data ); + }, + + _removeData: function( elem, name ) { + dataPriv.remove( elem, name ); + } + } ); + + jQuery.fn.extend( { + data: function( key, value ) { + var i, name, data, + elem = this[ 0 ], + attrs = elem && elem.attributes; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = dataUser.get( elem ); + + if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE11+ + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.slice( 5 ) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + dataPriv.set( elem, "hasDataAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each( function() { + dataUser.set( this, key ); + } ); + } + + return access( this, function( value ) { + var data, camelKey; + + // The calling jQuery object (element matches) is not empty + // (and therefore has an element appears at this[ 0 ]) and the + // `value` parameter was not undefined. An empty jQuery object + // will result in `undefined` for elem = this[ 0 ] which will + // throw an exception if an attempt to read a data cache is made. + if ( elem && value === undefined ) { + + // Attempt to get data from the cache + // with the key as-is + data = dataUser.get( elem, key ) || + + // Try to find dashed key if it exists (gh-2779) + // This is for 2.2.x only + dataUser.get( elem, key.replace( rmultiDash, "-$&" ).toLowerCase() ); + + if ( data !== undefined ) { + return data; + } + + camelKey = jQuery.camelCase( key ); + + // Attempt to get data from the cache + // with the key camelized + data = dataUser.get( elem, camelKey ); + if ( data !== undefined ) { + return data; + } + + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr( elem, camelKey, undefined ); + if ( data !== undefined ) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return; + } + + // Set the data... + camelKey = jQuery.camelCase( key ); + this.each( function() { + + // First, attempt to store a copy or reference of any + // data that might have been store with a camelCased key. + var data = dataUser.get( this, camelKey ); + + // For HTML5 data-* attribute interop, we have to + // store property names with dashes in a camelCase form. + // This might not apply to all properties...* + dataUser.set( this, camelKey, value ); + + // *... In the case of properties that might _actually_ + // have dashes, we need to also store a copy of that + // unchanged property. + if ( key.indexOf( "-" ) > -1 && data !== undefined ) { + dataUser.set( this, key, value ); + } + } ); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each( function() { + dataUser.remove( this, key ); + } ); + } + } ); + + + jQuery.extend( { + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = dataPriv.get( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || jQuery.isArray( data ) ) { + queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // Clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // Not public - generate a queueHooks object, or return the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { + empty: jQuery.Callbacks( "once memory" ).add( function() { + dataPriv.remove( elem, [ type + "queue", key ] ); + } ) + } ); + } + } ); + + jQuery.fn.extend( { + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[ 0 ], type ); + } + + return data === undefined ? + this : + this.each( function() { + var queue = jQuery.queue( this, type, data ); + + // Ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + } ); + }, + dequeue: function( type ) { + return this.each( function() { + jQuery.dequeue( this, type ); + } ); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } + } ); + var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; + + var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); + + + var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + + var isHidden = function( elem, el ) { + + // isHidden might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + return jQuery.css( elem, "display" ) === "none" || + !jQuery.contains( elem.ownerDocument, elem ); + }; + + + + function adjustCSS( elem, prop, valueParts, tween ) { + var adjusted, + scale = 1, + maxIterations = 20, + currentValue = tween ? + function() { return tween.cur(); } : + function() { return jQuery.css( elem, prop, "" ); }, + initial = currentValue(), + unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), + + // Starting value computation is required for potential unit mismatches + initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + rcssNum.exec( jQuery.css( elem, prop ) ); + + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[ 3 ]; + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + + // Iteratively approximate from a nonzero starting point + initialInUnit = +initial || 1; + + do { + + // If previous iteration zeroed out, double until we get *something*. + // Use string for doubling so we don't accidentally see scale as unchanged below + scale = scale || ".5"; + + // Adjust and apply + initialInUnit = initialInUnit / scale; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Update scale, tolerating zero or NaN from tween.cur() + // Break the loop if scale is unchanged or perfect, or if we've just had enough. + } while ( + scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations + ); + } + + if ( valueParts ) { + initialInUnit = +initialInUnit || +initial || 0; + + // Apply relative offset (+=/-=) if specified + adjusted = valueParts[ 1 ] ? + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : + +valueParts[ 2 ]; + if ( tween ) { + tween.unit = unit; + tween.start = initialInUnit; + tween.end = adjusted; + } + } + return adjusted; + } + var rcheckableType = ( /^(?:checkbox|radio)$/i ); + + var rtagName = ( /<([\w:-]+)/ ); + + var rscriptType = ( /^$|\/(?:java|ecma)script/i ); + + + + // We have to close these tags to support XHTML (#13200) + var wrapMap = { + + // Support: IE9 + option: [ 1, "" ], + + // XHTML parsers do not magically insert elements in the + // same way that tag soup parsers do. So we cannot shorten + // this by omitting or other required elements. + thead: [ 1, "", "
" ], + col: [ 2, "", "
" ], + tr: [ 2, "", "
" ], + td: [ 3, "", "
" ], + + _default: [ 0, "", "" ] + }; + + // Support: IE9 + wrapMap.optgroup = wrapMap.option; + + wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; + wrapMap.th = wrapMap.td; + + + function getAll( context, tag ) { + + // Support: IE9-11+ + // Use typeof to avoid zero-argument method invocation on host objects (#15151) + var ret = typeof context.getElementsByTagName !== "undefined" ? + context.getElementsByTagName( tag || "*" ) : + typeof context.querySelectorAll !== "undefined" ? + context.querySelectorAll( tag || "*" ) : + []; + + return tag === undefined || tag && jQuery.nodeName( context, tag ) ? + jQuery.merge( [ context ], ret ) : + ret; + } + + + // Mark scripts as having already been evaluated + function setGlobalEval( elems, refElements ) { + var i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + dataPriv.set( + elems[ i ], + "globalEval", + !refElements || dataPriv.get( refElements[ i ], "globalEval" ) + ); + } + } + + + var rhtml = /<|&#?\w+;/; + + function buildFragment( elems, context, scripts, selection, ignored ) { + var elem, tmp, tag, wrap, contains, j, + fragment = context.createDocumentFragment(), + nodes = [], + i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( jQuery.type( elem ) === "object" ) { + + // Support: Android<4.1, PhantomJS<2 + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Support: Android<4.1, PhantomJS<2 + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, tmp.childNodes ); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Ensure the created nodes are orphaned (#12392) + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + + i = 0; + while ( ( elem = nodes[ i++ ] ) ) { + + // Skip elements already in the context collection (trac-4087) + if ( selection && jQuery.inArray( elem, selection ) > -1 ) { + if ( ignored ) { + ignored.push( elem ); + } + continue; + } + + contains = jQuery.contains( elem.ownerDocument, elem ); + + // Append to fragment + tmp = getAll( fragment.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( contains ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( ( elem = tmp[ j++ ] ) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + return fragment; + } + + + ( function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // Support: Android 4.0-4.3, Safari<=5.1 + // Check state lost if the name is set (#11217) + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (#14901) + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Safari<=5.1, Android<4.2 + // Older WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE<=11+ + // Make sure textarea (and checkbox) defaultValue is properly cloned + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; + } )(); + + + var + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + + function returnTrue() { + return true; + } + + function returnFalse() { + return false; + } + + // Support: IE9 + // See #13393 for more info + function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } + } + + function on( elem, types, selector, data, fn, one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + on( elem, type, selector, data, types[ type ], one ); + } + return elem; + } + + if ( data == null && fn == null ) { + + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return this; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return elem.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + } ); + } + + /* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ + jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + + var handleObjIn, eventHandle, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.get( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !( events = elemData.events ) ) { + events = elemData.events = {}; + } + if ( !( eventHandle = elemData.handle ) ) { + eventHandle = elemData.handle = function( e ) { + + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? + jQuery.event.dispatch.apply( elem, arguments ) : undefined; + }; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnotwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend( { + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join( "." ) + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !( handlers = events[ type ] ) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener if the special events handler returns false + if ( !special.setup || + special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var j, origCount, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); + + if ( !elemData || !( events = elemData.events ) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnotwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[ 2 ] && + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || + selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || + special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove data and the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + dataPriv.remove( elem, "handle events" ); + } + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event ); + + var i, j, ret, matched, handleObj, + handlerQueue = [], + args = slice.call( arguments ), + handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[ 0 ] = event; + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( ( handleObj = matched.handlers[ j++ ] ) && + !event.isImmediatePropagationStopped() ) { + + // Triggered event must either 1) have no namespace, or 2) have namespace(s) + // a subset or equal to those in the bound event (both can have no namespace). + if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || + handleObj.handler ).apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( ( event.result = ret ) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var i, matches, sel, handleObj, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Support (at least): Chrome, IE9 + // Find delegate handlers + // Black-hole SVG instance trees (#13180) + // + // Support: Firefox<=42+ + // Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343) + if ( delegateCount && cur.nodeType && + ( event.type !== "click" || isNaN( event.button ) || event.button < 1 ) ) { + + for ( ; cur !== this; cur = cur.parentNode || this ) { + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== "click" ) ) { + matches = []; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matches[ sel ] === undefined ) { + matches[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) > -1 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matches[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push( { elem: cur, handlers: matches } ); + } + } + } + } + + // Add the remaining (directly-bound) handlers + if ( delegateCount < handlers.length ) { + handlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } ); + } + + return handlerQueue; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + props: ( "altKey bubbles cancelable ctrlKey currentTarget detail eventPhase " + + "metaKey relatedTarget shiftKey target timeStamp view which" ).split( " " ), + + fixHooks: {}, + + keyHooks: { + props: "char charCode key keyCode".split( " " ), + filter: function( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: ( "button buttons clientX clientY offsetX offsetY pageX pageY " + + "screenX screenY toElement" ).split( " " ), + filter: function( event, original ) { + var eventDoc, doc, body, + button = original.button; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - + ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - + ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // Create a writable copy of the event object and normalize some properties + var i, prop, copy, + type = event.type, + originalEvent = event, + fixHook = this.fixHooks[ type ]; + + if ( !fixHook ) { + this.fixHooks[ type ] = fixHook = + rmouseEvent.test( type ) ? this.mouseHooks : + rkeyEvent.test( type ) ? this.keyHooks : + {}; + } + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = new jQuery.Event( originalEvent ); + + i = copy.length; + while ( i-- ) { + prop = copy[ i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Support: Cordova 2.5 (WebKit) (#13255) + // All events should have a target; Cordova deviceready doesn't + if ( !event.target ) { + event.target = document; + } + + // Support: Safari 6.0+, Chrome<28 + // Target should not be a text node (#504, #13143) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; + }, + + special: { + load: { + + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + focus: { + + // Fire native event if possible so blur/focus sequence is correct + trigger: function() { + if ( this !== safeActiveElement() && this.focus ) { + this.focus(); + return false; + } + }, + delegateType: "focusin" + }, + blur: { + trigger: function() { + if ( this === safeActiveElement() && this.blur ) { + this.blur(); + return false; + } + }, + delegateType: "focusout" + }, + click: { + + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) { + this.click(); + return false; + } + }, + + // For cross-browser consistency, don't fire native .click() on links + _default: function( event ) { + return jQuery.nodeName( event.target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + } + }; + + jQuery.removeEvent = function( elem, type, handle ) { + + // This "if" is needed for plain objects + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle ); + } + }; + + jQuery.Event = function( src, props ) { + + // Allow instantiation without the 'new' keyword + if ( !( this instanceof jQuery.Event ) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + + // Support: Android<4.0 + src.returnValue === false ? + returnTrue : + returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; + }; + + // jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding + // http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html + jQuery.Event.prototype = { + constructor: jQuery.Event, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } + }; + + // Create mouseenter/leave events using mouseover/out and event-time checks + // so that event delegation works in jQuery. + // Do the same for pointerenter/pointerleave and pointerover/pointerout + // + // Support: Safari 7 only + // Safari sends mouseenter too often; see: + // https://code.google.com/p/chromium/issues/detail?id=470258 + // for the description of the bug (it existed in older Chrome versions as well). + jQuery.each( { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" + }, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mouseenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; + } ); + + jQuery.fn.extend( { + on: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn ); + }, + one: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? + handleObj.origType + "." + handleObj.namespace : + handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each( function() { + jQuery.event.remove( this, types, fn, selector ); + } ); + } + } ); + + + var + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi, + + // Support: IE 10-11, Edge 10240+ + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /\s*$/g; + + function manipulationTarget( elem, content ) { + if ( jQuery.nodeName( elem, "table" ) && + jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { + + return elem.getElementsByTagName( "tbody" )[ 0 ] || elem; + } + + return elem; + } + + // Replace/restore the type attribute of script elements for safe DOM manipulation + function disableScript( elem ) { + elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; + return elem; + } + function restoreScript( elem ) { + var match = rscriptTypeMasked.exec( elem.type ); + + if ( match ) { + elem.type = match[ 1 ]; + } else { + elem.removeAttribute( "type" ); + } + + return elem; + } + + function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( dataPriv.hasData( src ) ) { + pdataOld = dataPriv.access( src ); + pdataCur = dataPriv.set( dest, pdataOld ); + events = pdataOld.events; + + if ( events ) { + delete pdataCur.handle; + pdataCur.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + } + + // 2. Copy user data + if ( dataUser.hasData( src ) ) { + udataOld = dataUser.access( src ); + udataCur = jQuery.extend( {}, udataOld ); + + dataUser.set( dest, udataCur ); + } + } + + // Fix IE bugs, see support tests + function fixInput( src, dest ) { + var nodeName = dest.nodeName.toLowerCase(); + + // Fails to persist the checked state of a cloned checkbox or radio button. + if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + dest.checked = src.checked; + + // Fails to return the selected option to the default selected state when cloning options + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } + } + + function domManip( collection, args, callback, ignored ) { + + // Flatten any nested arrays + args = concat.apply( [], args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = collection.length, + iNoClone = l - 1, + value = args[ 0 ], + isFunction = jQuery.isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( isFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return collection.each( function( index ) { + var self = collection.eq( index ); + if ( isFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + domManip( self, args, callback, ignored ); + } ); + } + + if ( l ) { + fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + // Require either new content or an interest in ignored elements to invoke the callback + if ( first || ignored ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item + // instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + + // Support: Android<4.1, PhantomJS<2 + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( collection[ i ], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !dataPriv.access( node, "globalEval" ) && + jQuery.contains( doc, node ) ) { + + if ( node.src ) { + + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl ) { + jQuery._evalUrl( node.src ); + } + } else { + jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) ); + } + } + } + } + } + } + + return collection; + } + + function remove( elem, selector, keepData ) { + var node, + nodes = selector ? jQuery.filter( selector, elem ) : elem, + i = 0; + + for ( ; ( node = nodes[ i ] ) != null; i++ ) { + if ( !keepData && node.nodeType === 1 ) { + jQuery.cleanData( getAll( node ) ); + } + + if ( node.parentNode ) { + if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { + setGlobalEval( getAll( node, "script" ) ); + } + node.parentNode.removeChild( node ); + } + } + + return elem; + } + + jQuery.extend( { + htmlPrefilter: function( html ) { + return html.replace( rxhtmlTag, "<$1>" ); + }, + + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = jQuery.contains( elem.ownerDocument, elem ); + + // Fix IE cloning issues + if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && + !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + fixInput( srcElements[ i ], destElements[ i ] ); + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + cloneCopyEvent( srcElements[ i ], destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + // Return the cloned set + return clone; + }, + + cleanData: function( elems ) { + var data, elem, type, + special = jQuery.event.special, + i = 0; + + for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { + if ( acceptData( elem ) ) { + if ( ( data = elem[ dataPriv.expando ] ) ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Support: Chrome <= 35-45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataPriv.expando ] = undefined; + } + if ( elem[ dataUser.expando ] ) { + + // Support: Chrome <= 35-45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataUser.expando ] = undefined; + } + } + } + } + } ); + + jQuery.fn.extend( { + + // Keep domManip exposed until 3.0 (gh-2225) + domManip: domManip, + + detach: function( selector ) { + return remove( this, selector, true ); + }, + + remove: function( selector ) { + return remove( this, selector ); + }, + + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().each( function() { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.textContent = value; + } + } ); + }, null, value, arguments.length ); + }, + + append: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + } ); + }, + + prepend: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + } ); + }, + + before: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + } ); + }, + + after: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + } ); + }, + + empty: function() { + var elem, + i = 0; + + for ( ; ( elem = this[ i ] ) != null; i++ ) { + if ( elem.nodeType === 1 ) { + + // Prevent memory leaks + jQuery.cleanData( getAll( elem, false ) ); + + // Remove any remaining nodes + elem.textContent = ""; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + } ); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined && elem.nodeType === 1 ) { + return elem.innerHTML; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = jQuery.htmlPrefilter( value ); + + try { + for ( ; i < l; i++ ) { + elem = this[ i ] || {}; + + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch ( e ) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var ignored = []; + + // Make the changes, replacing each non-ignored context element with the new content + return domManip( this, arguments, function( elem ) { + var parent = this.parentNode; + + if ( jQuery.inArray( this, ignored ) < 0 ) { + jQuery.cleanData( getAll( this ) ); + if ( parent ) { + parent.replaceChild( elem, this ); + } + } + + // Force callback invocation + }, ignored ); + } + } ); + + jQuery.each( { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" + }, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1, + i = 0; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Support: QtWebKit + // .get() because push.apply(_, arraylike) throws + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; + } ); + + + var iframe, + elemdisplay = { + + // Support: Firefox + // We have to pre-define these values for FF (#10227) + HTML: "block", + BODY: "block" + }; + + /** + * Retrieve the actual display of a element + * @param {String} name nodeName of the element + * @param {Object} doc Document object + */ + + // Called only from within defaultDisplay + function actualDisplay( name, doc ) { + var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), + + display = jQuery.css( elem[ 0 ], "display" ); + + // We don't have any data stored on the element, + // so use "detach" method as fast way to get rid of the element + elem.detach(); + + return display; + } + + /** + * Try to determine the default display value of an element + * @param {String} nodeName + */ + function defaultDisplay( nodeName ) { + var doc = document, + display = elemdisplay[ nodeName ]; + + if ( !display ) { + display = actualDisplay( nodeName, doc ); + + // If the simple way fails, read from inside an iframe + if ( display === "none" || !display ) { + + // Use the already-created iframe if possible + iframe = ( iframe || jQuery( "