From badfcbb2b68c228eb4d03ceb65a2594ff8da355d Mon Sep 17 00:00:00 2001 From: Shawn Hurley Date: Tue, 13 Aug 2024 08:46:38 -0400 Subject: [PATCH] adding test case for the coolstore application Signed-off-by: Shawn Hurley --- resources/projects/coolstore/pom.xml | 160 + .../projects/coolstore/realm-export.json | 1926 + .../com/redhat/coolstore/utils/Producers.java | 17 + .../redhat/coolstore/utils/Transformers.java | 100 + .../resources/META-INF/resources/app/app.js | 113 + .../resources/app/controllers/controllers.js | 163 + .../META-INF/resources/app/css/coolstore.css | 13 + .../resources/app/directives/header.js | 11 + .../app/imgs/16 oz. Vortex Tumbler.jpg | Bin 0 -> 5041 bytes .../app/imgs/Forge Laptop Sticker.jpg | Bin 0 -> 95775 bytes .../resources/app/imgs/Knit socks.jpg | Bin 0 -> 37062 bytes .../resources/app/imgs/Lytro Camera.jpg | Bin 0 -> 5949 bytes .../imgs/Nanobloc Universal Webcam Cover.jpg | Bin 0 -> 170390 bytes .../resources/app/imgs/Oculus Rift.jpg | Bin 0 -> 9046 bytes .../resources/app/imgs/Ogio Caliber Polo.jpg | Bin 0 -> 142342 bytes .../app/imgs/Patagonia Refugio pack 28L.jpg | Bin 0 -> 18921 bytes .../resources/app/imgs/Pebble Smart Watch.jpg | Bin 0 -> 11740 bytes .../app/imgs/Pronounced Kubernetes.jpg | Bin 0 -> 48161 bytes .../app/imgs/Quarkus H2Go water bottle.jpg | Bin 0 -> 58187 bytes .../resources/app/imgs/Quarkus T-shirt.jpg | Bin 0 -> 120849 bytes .../resources/app/imgs/Quarkus twill cap.jpg | Bin 0 -> 112308 bytes .../resources/app/imgs/Red Fedora.jpg | Bin 0 -> 12700 bytes .../app/imgs/Red Hat Impact T-shirt.jpg | Bin 0 -> 185876 bytes .../app/imgs/Solid Performance Polo.jpg | Bin 0 -> 16962 bytes .../app/imgs/Women RHEL 8 t-shirt.jpg | Bin 0 -> 19963 bytes .../META-INF/resources/app/imgs/logo copy.png | Bin 0 -> 14306 bytes .../META-INF/resources/app/imgs/logo.png | Bin 0 -> 5104 bytes .../META-INF/resources/app/routes/routes.js | 13 + .../META-INF/resources/app/services/cart.js | 126 + .../resources/app/services/catalog.js | 37 + .../angular-animate/.bower.json | 20 + .../angular-animate/LICENSE.md | 21 + .../angular-animate/README.md | 68 + .../angular-animate/angular-animate.js | 4152 ++ .../angular-animate/angular-animate.min.js | 57 + .../angular-animate.min.js.map | 8 + .../angular-animate/bower.json | 10 + .../bower_components/angular-animate/index.js | 2 + .../angular-animate/package.json | 33 + .../angular-bootstrap/.bower.json | 31 + .../angular-bootstrap/.gitignore | 1 + .../angular-bootstrap/.npmignore | 1 + .../angular-bootstrap/README.md | 120 + .../angular-bootstrap/bower.json | 19 + .../angular-bootstrap/index.js | 2 + .../angular-bootstrap/package.json | 23 + .../angular-bootstrap/ui-bootstrap-csp.css | 6 + .../angular-bootstrap/ui-bootstrap-tpls.js | 8503 ++++ .../ui-bootstrap-tpls.min.js | 12 + .../angular-bootstrap/ui-bootstrap.js | 8126 ++++ .../angular-bootstrap/ui-bootstrap.min.js | 11 + .../angular-patternfly/.bower.json | 61 + .../angular-patternfly/.gitattributes | 14 + .../angular-patternfly/.htmlhintrc | 12 + .../angular-patternfly/.npmignore | 28 + .../.openshift/cron/README.cron | 27 + .../.openshift/cron/weekly/README | 16 + .../.openshift/cron/weekly/chronograph | 3 + .../.openshift/cron/weekly/jobs.allow | 12 + .../.openshift/cron/weekly/jobs.deny | 7 + .../.openshift/markers/hot_deploy | 0 .../angular-patternfly/.travis.yml | 36 + .../angular-patternfly/LICENSE.txt | 205 + .../angular-patternfly/bower.json | 51 + .../angular-patternfly/deploy_key.enc | Bin 0 -> 3248 bytes .../dist/angular-patternfly.js | 10378 +++++ .../dist/angular-patternfly.min.js | 4 + .../dist/docs/css/angular-patternfly.css | 472 + .../dist/docs/css/animations.css | 45 + .../dist/docs/css/bootstrap.min.css | 6167 +++ .../dist/docs/css/doc_widgets.css | 150 + .../angular-patternfly/dist/docs/css/docs.css | 322 + .../dist/docs/css/examples.css | 132 + .../dist/docs/css/font-awesome.css | 1268 + .../dist/docs/css/ng-docs.css | 372 + .../dist/docs/css/patternfly-additions.css | 6901 ++++ .../dist/docs/css/patternfly.css | 10225 +++++ .../dist/docs/css/prettify.css | 51 + .../dist/docs/font/FontAwesome.otf | Bin 0 -> 50204 bytes .../dist/docs/font/fontawesome-webfont.eot | Bin 0 -> 29360 bytes .../dist/docs/font/fontawesome-webfont.svg | 339 + .../dist/docs/font/fontawesome-webfont.ttf | Bin 0 -> 64960 bytes .../dist/docs/font/fontawesome-webfont.woff | Bin 0 -> 34420 bytes .../dist/docs/fonts/FontAwesome.otf | Bin 0 -> 124988 bytes .../dist/docs/fonts/OpenSans-Bold-webfont.eot | Bin 0 -> 19544 bytes .../dist/docs/fonts/OpenSans-Bold-webfont.svg | 1830 + .../dist/docs/fonts/OpenSans-Bold-webfont.ttf | Bin 0 -> 38452 bytes .../docs/fonts/OpenSans-Bold-webfont.woff | Bin 0 -> 22432 bytes .../fonts/OpenSans-BoldItalic-webfont.eot | Bin 0 -> 20133 bytes .../fonts/OpenSans-BoldItalic-webfont.svg | 1830 + .../fonts/OpenSans-BoldItalic-webfont.ttf | Bin 0 -> 39076 bytes .../fonts/OpenSans-BoldItalic-webfont.woff | Bin 0 -> 23048 bytes .../docs/fonts/OpenSans-ExtraBold-webfont.eot | Bin 0 -> 20855 bytes .../docs/fonts/OpenSans-ExtraBold-webfont.svg | 1830 + .../docs/fonts/OpenSans-ExtraBold-webfont.ttf | Bin 0 -> 42024 bytes .../fonts/OpenSans-ExtraBold-webfont.woff | Bin 0 -> 23764 bytes .../OpenSans-ExtraBoldItalic-webfont.eot | Bin 0 -> 21576 bytes .../OpenSans-ExtraBoldItalic-webfont.svg | 1830 + .../OpenSans-ExtraBoldItalic-webfont.ttf | Bin 0 -> 43420 bytes .../OpenSans-ExtraBoldItalic-webfont.woff | Bin 0 -> 24568 bytes .../docs/fonts/OpenSans-Italic-webfont.eot | Bin 0 -> 20265 bytes .../docs/fonts/OpenSans-Italic-webfont.svg | 1830 + .../docs/fonts/OpenSans-Italic-webfont.ttf | Bin 0 -> 38412 bytes .../docs/fonts/OpenSans-Italic-webfont.woff | Bin 0 -> 23188 bytes .../docs/fonts/OpenSans-Light-webfont.eot | Bin 0 -> 19514 bytes .../docs/fonts/OpenSans-Light-webfont.svg | 1831 + .../docs/fonts/OpenSans-Light-webfont.ttf | Bin 0 -> 37336 bytes .../docs/fonts/OpenSans-Light-webfont.woff | Bin 0 -> 22248 bytes .../fonts/OpenSans-LightItalic-webfont.eot | Bin 0 -> 20535 bytes .../fonts/OpenSans-LightItalic-webfont.svg | 1835 + .../fonts/OpenSans-LightItalic-webfont.ttf | Bin 0 -> 39956 bytes .../fonts/OpenSans-LightItalic-webfont.woff | Bin 0 -> 23400 bytes .../docs/fonts/OpenSans-Regular-webfont.eot | Bin 0 -> 19836 bytes .../docs/fonts/OpenSans-Regular-webfont.svg | 1831 + .../docs/fonts/OpenSans-Regular-webfont.ttf | Bin 0 -> 38232 bytes .../docs/fonts/OpenSans-Regular-webfont.woff | Bin 0 -> 22660 bytes .../docs/fonts/OpenSans-Semibold-webfont.eot | Bin 0 -> 20028 bytes .../docs/fonts/OpenSans-Semibold-webfont.svg | 1830 + .../docs/fonts/OpenSans-Semibold-webfont.ttf | Bin 0 -> 39476 bytes .../docs/fonts/OpenSans-Semibold-webfont.woff | Bin 0 -> 22908 bytes .../fonts/OpenSans-SemiboldItalic-webfont.eot | Bin 0 -> 20962 bytes .../fonts/OpenSans-SemiboldItalic-webfont.svg | 1830 + .../fonts/OpenSans-SemiboldItalic-webfont.ttf | Bin 0 -> 40252 bytes .../OpenSans-SemiboldItalic-webfont.woff | Bin 0 -> 23764 bytes .../docs/fonts/PatternFlyIcons-webfont.eot | Bin 0 -> 20904 bytes .../docs/fonts/PatternFlyIcons-webfont.svg | 93 + .../docs/fonts/PatternFlyIcons-webfont.ttf | Bin 0 -> 20676 bytes .../docs/fonts/PatternFlyIcons-webfont.woff | Bin 0 -> 20752 bytes .../dist/docs/fonts/fontawesome-webfont.eot | Bin 0 -> 76518 bytes .../dist/docs/fonts/fontawesome-webfont.svg | 685 + .../dist/docs/fonts/fontawesome-webfont.ttf | Bin 0 -> 152796 bytes .../dist/docs/fonts/fontawesome-webfont.woff | Bin 0 -> 90412 bytes .../dist/docs/fonts/fontawesome-webfont.woff2 | Bin 0 -> 71896 bytes .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes .../fonts/glyphicons-halflings-regular.svg | 288 + .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes .../docs/grunt-scripts/angular-animate.js | 4152 ++ .../angular-bootstrap-prettify.js | 323 + .../docs/grunt-scripts/angular-patternfly.js | 10378 +++++ .../docs/grunt-scripts/angular-sanitize.js | 739 + .../grunt-scripts/angular-ui-router.min.js | 11 + .../dist/docs/grunt-scripts/angular.js | 32621 ++++++++++++++++ .../docs/grunt-scripts/bootstrap-combobox.js | 462 + .../grunt-scripts/bootstrap-datepicker.js | 2096 + .../grunt-scripts/bootstrap-datetimepicker.js | 2637 ++ .../docs/grunt-scripts/bootstrap-select.js | 1709 + .../docs/grunt-scripts/bootstrap-treeview.js | 1931 + .../dist/docs/grunt-scripts/bootstrap.js | 2377 ++ .../dist/docs/grunt-scripts/c3.js | 8202 ++++ .../dist/docs/grunt-scripts/d3.js | 9554 +++++ .../dist/docs/grunt-scripts/jquery.js | 9210 +++++ .../dist/docs/grunt-scripts/lodash.min.js | 98 + .../dist/docs/grunt-scripts/moment.js | 4195 ++ .../dist/docs/grunt-scripts/patternfly.js | 1652 + .../docs/grunt-scripts/ui-bootstrap-tpls.js | 8503 ++++ .../dist/docs/img/OpenShift-Logo-NoText.svg | 51 + .../dist/docs/img/OpenShift-Logo-Text.svg | 95 + .../dist/docs/img/OpenShift-logo.svg | 69 + .../dist/docs/img/RH_Atomic-Logo-NoText.svg | 53 + .../dist/docs/img/RH_Atomic-Logo-Text.svg | 91 + .../dist/docs/img/RH_atomic.svg | 88 + .../img/apple-touch-icon-precomposed-114.png | Bin 0 -> 6892 bytes .../img/apple-touch-icon-precomposed-144.png | Bin 0 -> 9898 bytes .../img/apple-touch-icon-precomposed-152.png | Bin 0 -> 10896 bytes .../img/apple-touch-icon-precomposed-180.png | Bin 0 -> 9799 bytes .../img/apple-touch-icon-precomposed-57.png | Bin 0 -> 2364 bytes .../img/apple-touch-icon-precomposed-72.png | Bin 0 -> 3377 bytes .../img/apple-touch-icon-precomposed-76.png | Bin 0 -> 3678 bytes .../dist/docs/img/bg-login.jpg | Bin 0 -> 47664 bytes .../dist/docs/img/bg-modal-about-pf.png | Bin 0 -> 10987 bytes .../dist/docs/img/bg-navbar-pf-alt.svg | 9 + .../dist/docs/img/brand-alt.svg | 88 + .../dist/docs/img/brand.svg | 87 + .../dist/docs/img/favicon.ico | Bin 0 -> 6518 bytes .../dist/docs/img/kubernetes-Logo.svg | 60 + .../dist/docs/img/kubernetes.svg | 8 + .../dist/docs/img/logo-alt.svg | 18 + .../angular-patternfly/dist/docs/img/logo.svg | 22 + .../dist/docs/img/patternfly-orb.svg | 28 + .../dist/docs/img/spinner-inverse-lg.gif | Bin 0 -> 2210 bytes .../dist/docs/img/spinner-inverse-sm.gif | Bin 0 -> 1511 bytes .../dist/docs/img/spinner-inverse-xs.gif | Bin 0 -> 942 bytes .../dist/docs/img/spinner-inverse.gif | Bin 0 -> 2149 bytes .../dist/docs/img/spinner-lg.gif | Bin 0 -> 2482 bytes .../dist/docs/img/spinner-sm.gif | Bin 0 -> 1567 bytes .../dist/docs/img/spinner-xs.gif | Bin 0 -> 748 bytes .../dist/docs/img/spinner.gif | Bin 0 -> 2142 bytes .../angular-patternfly/dist/docs/index.html | 276 + .../docs/js/angular-bootstrap-prettify.js | 322 + .../dist/docs/js/angular-bootstrap.js | 392 + .../dist/docs/js/angular.min.js | 230 + .../dist/docs/js/docs-setup.js | 412 + .../angular-patternfly/dist/docs/js/docs.js | 541 + .../dist/docs/js/google-code-prettify.js | 1575 + .../angular-patternfly/dist/docs/js/marked.js | 1151 + .../api/patternfly.autofocus.pfFocused.html | 46 + ....card.directive.pfAggregateStatusCard.html | 143 + ....directive.pfCard - Timeframe Filters.html | 99 + ...ernfly.card.directive.pfCard - Trends.html | 163 + ...y.card.directive.pfCard - Utilization.html | 103 + ...patternfly.charts.directive.pfC3Chart.html | 87 + ...nfly.charts.directive.pfDonutPctChart.html | 269 + ...patternfly.charts.directive.pfHeatMap.html | 172 + ...tternfly.charts.directive.pfLineChart.html | 132 + ...fly.charts.directive.pfSparklineChart.html | 159 + ...ernfly.charts.directive.pfTrendsChart.html | 179 + ...harts.directive.pfUtilizationBarChart.html | 146 + ...rts.directive.pfUtilizationTrendChart.html | 198 + ...patternfly.filters.directive.pfFilter.html | 184 + ...nfly.filters.directive.pfFilterFields.html | 27 + ...fly.filters.directive.pfFilterResults.html | 29 + ...rnfly.form.directive.pfDateTimepicker.html | 44 + ...atternfly.form.directive.pfDatepicker.html | 52 + ...tternfly.form.directive.pfFormButtons.html | 69 + ...patternfly.form.directive.pfFormGroup.html | 61 + ....form.directive.pfRemainingCharsCount.html | 141 + ...ternfly.modals.directive.pfAboutModal.html | 74 + ...irective.pfVerticalNavigation - Basic.html | 596 + ...rective.pfVerticalNavigation - Router.html | 188 + .../patternfly.notification.Notification.html | 85 + ...cation.directive.pfInlineNotification.html | 84 + ...cation.directive.pfNotificationDrawer.html | 512 + ...fication.directive.pfNotificationList.html | 70 + ...ication.directive.pfToastNotification.html | 182 + ...ion.directive.pfToastNotificationList.html | 203 + .../api/patternfly.select.pfSelect.html | 77 + .../api/patternfly.sort.directive.pfSort.html | 160 + ...tternfly.toolbars.directive.pfToolbar.html | 420 + ...tternfly.utils.directive.pfTransclude.html | 104 + .../patternfly.utils.pfFixedAccordion.html | 68 + .../patternfly.validation.pfValidation.html | 83 + ...patternfly.views.directive.pfCardView.html | 206 + ...patternfly.views.directive.pfListView.html | 403 + .../patternfly.wizard.directive.pfWizard.html | 346 + ...y.wizard.directive.pfWizardReviewPage.html | 18 + ...ternfly.wizard.directive.pfWizardStep.html | 48 + ...nfly.wizard.directive.pfWizardSubstep.html | 40 + .../dist/styles/angular-patternfly.css | 472 + .../dist/styles/angular-patternfly.min.css | 1 + .../angular-patternfly/eslint.yaml | 46 + .../angular-patternfly/index.js | 8 + .../angular-patternfly/npm-shrinkwrap.json | 174 + .../scripts/publish-ghpages.sh | 266 + .../styles/angular-patternfly.css | 472 + .../test/autofocus/autofocus.spec.js | 113 + .../aggregate-status-card.directive.spec.js | 228 + .../test/card/basic/card.spec.js | 232 + .../test/charts/c3/c3.spec.js | 25 + .../test/charts/donut/donut-pct.spec.js | 133 + .../charts/heatmap/heatmap-legend.spec.js | 47 + .../test/charts/heatmap/heatmap.spec.js | 116 + .../charts/sparkline/sparkline-chart.spec.js | 181 + .../test/charts/trends/trends-chart.spec.js | 127 + .../utilization-bar/utilization-bar.spec.js | 109 + .../utilization-trend-chart.spec.js | 109 + .../test/filters/filter.spec.js | 210 + .../datepicker/datepicker.directive.spec.js | 42 + .../datetimepicker.directive.spec.js | 38 + .../form-buttons.directive.spec.js | 39 + .../form-group/form-group.directive.spec.js | 62 + .../remaining-chars-count.directive.spec.js | 68 + .../test/modals/about-modal.spec.js | 181 + .../navigation/vertical-navigation.spec.js | 826 + .../test/notification/heading.html | 1 + .../test/notification/notification-body.html | 20 + .../notification/notification-drawer.spec.js | 485 + .../notification/notification-footer.html | 4 + .../test/notification/notification.spec.js | 198 + .../test/notification/subheading.html | 1 + .../test/notification/title.html | 1 + .../toast-notification-list.spec.js | 210 + .../notification/toast-notification.spec.js | 241 + .../test/select/select.spec.js | 118 + .../angular-patternfly/test/sort/sort.spec.js | 186 + .../test/toolbars/toolbar.spec.js | 582 + .../test/utils/fixed-accordion.spec.js | 71 + .../test/utils/specUtils.js | 11 + .../test/utils/transclude-directive.spec.js | 108 + .../test/utils/utils.spec.js | 92 + .../test/validation/validation.spec.js | 175 + .../test/views/cardview/card-view.spec.js | 222 + .../test/views/listview/list-view.spec.js | 545 + .../test/wizard/deployment.html | 17 + .../test/wizard/detail-page.html | 12 + .../test/wizard/review-second-template.html | 12 + .../test/wizard/review-template.html | 12 + .../angular-patternfly/test/wizard/script.js | 59 + .../test/wizard/summary.html | 5 + .../test/wizard/wizard-container.html | 40 + .../test/wizard/wizard.spec.js | 205 + .../angular-route/.bower.json | 20 + .../bower_components/angular-route/LICENSE.md | 21 + .../bower_components/angular-route/README.md | 68 + .../angular-route/angular-route.js | 1071 + .../angular-route/angular-route.min.js | 16 + .../angular-route/angular-route.min.js.map | 8 + .../bower_components/angular-route/bower.json | 10 + .../bower_components/angular-route/index.js | 2 + .../angular-route/package.json | 33 + .../angular-sanitize/.bower.json | 20 + .../angular-sanitize/LICENSE.md | 21 + .../angular-sanitize/README.md | 68 + .../angular-sanitize/angular-sanitize.js | 739 + .../angular-sanitize/angular-sanitize.min.js | 16 + .../angular-sanitize.min.js.map | 8 + .../angular-sanitize/bower.json | 10 + .../angular-sanitize/index.js | 2 + .../angular-sanitize/package.json | 33 + .../bower_components/angular/.bower.json | 18 + .../bower_components/angular/LICENSE.md | 21 + .../bower_components/angular/README.md | 64 + .../bower_components/angular/angular-csp.css | 21 + .../bower_components/angular/angular.js | 32621 ++++++++++++++++ .../bower_components/angular/angular.min.js | 324 + .../angular/angular.min.js.gzip | Bin 0 -> 58216 bytes .../angular/angular.min.js.map | 8 + .../bower_components/angular/bower.json | 9 + .../bower_components/angular/index.js | 2 + .../bower_components/angular/package.json | 25 + .../META-INF/resources/coolstore.json | 6 + .../resources/META-INF/resources/index.html | 50 + .../META-INF/resources/keycloak.json | 8 + .../META-INF/resources/partials/cart.html | 99 + .../META-INF/resources/partials/header.html | 50 + .../META-INF/resources/partials/home.html | 54 + test/apis/language_recognizer_test.go | 4 + 328 files changed, 237070 insertions(+) create mode 100644 resources/projects/coolstore/pom.xml create mode 100644 resources/projects/coolstore/realm-export.json create mode 100644 resources/projects/coolstore/src/main/java/com/redhat/coolstore/utils/Producers.java create mode 100644 resources/projects/coolstore/src/main/java/com/redhat/coolstore/utils/Transformers.java create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/app/app.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/app/controllers/controllers.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/app/css/coolstore.css create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/app/directives/header.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/app/imgs/16 oz. Vortex Tumbler.jpg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/app/imgs/Forge Laptop Sticker.jpg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/app/imgs/Knit socks.jpg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/app/imgs/Lytro Camera.jpg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/app/imgs/Nanobloc Universal Webcam Cover.jpg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/app/imgs/Oculus Rift.jpg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/app/imgs/Ogio Caliber Polo.jpg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/app/imgs/Patagonia Refugio pack 28L.jpg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/app/imgs/Pebble Smart Watch.jpg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/app/imgs/Pronounced Kubernetes.jpg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/app/imgs/Quarkus H2Go water bottle.jpg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/app/imgs/Quarkus T-shirt.jpg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/app/imgs/Quarkus twill cap.jpg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/app/imgs/Red Fedora.jpg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/app/imgs/Red Hat Impact T-shirt.jpg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/app/imgs/Solid Performance Polo.jpg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/app/imgs/Women RHEL 8 t-shirt.jpg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/app/imgs/logo copy.png create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/app/imgs/logo.png create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/app/routes/routes.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/app/services/cart.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/app/services/catalog.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-animate/.bower.json create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-animate/LICENSE.md create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-animate/README.md create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-animate/angular-animate.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-animate/angular-animate.min.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-animate/angular-animate.min.js.map create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-animate/bower.json create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-animate/index.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-animate/package.json create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/.bower.json create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/.gitignore create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/.npmignore create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/README.md create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/bower.json create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/index.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/package.json create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/ui-bootstrap-csp.css create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/ui-bootstrap-tpls.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/ui-bootstrap-tpls.min.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/ui-bootstrap.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/ui-bootstrap.min.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/.bower.json create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/.gitattributes create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/.htmlhintrc create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/.npmignore create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/.openshift/cron/README.cron create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/.openshift/cron/weekly/README create mode 100755 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/.openshift/cron/weekly/chronograph create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/.openshift/cron/weekly/jobs.allow create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/.openshift/cron/weekly/jobs.deny create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/.openshift/markers/hot_deploy create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/.travis.yml create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/LICENSE.txt create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/bower.json create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/deploy_key.enc create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/angular-patternfly.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/angular-patternfly.min.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/angular-patternfly.css create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/animations.css create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/bootstrap.min.css create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/doc_widgets.css create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/docs.css create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/examples.css create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/font-awesome.css create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/ng-docs.css create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/patternfly-additions.css create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/patternfly.css create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/prettify.css create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/font/FontAwesome.otf create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/font/fontawesome-webfont.eot create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/font/fontawesome-webfont.svg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/font/fontawesome-webfont.ttf create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/font/fontawesome-webfont.woff create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/FontAwesome.otf create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Bold-webfont.eot create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Bold-webfont.svg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Bold-webfont.ttf create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Bold-webfont.woff create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-BoldItalic-webfont.eot create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-BoldItalic-webfont.svg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-BoldItalic-webfont.ttf create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-BoldItalic-webfont.woff create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-ExtraBold-webfont.eot create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-ExtraBold-webfont.svg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-ExtraBold-webfont.ttf create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-ExtraBold-webfont.woff create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-ExtraBoldItalic-webfont.eot create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-ExtraBoldItalic-webfont.svg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-ExtraBoldItalic-webfont.ttf create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-ExtraBoldItalic-webfont.woff create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Italic-webfont.eot create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Italic-webfont.svg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Italic-webfont.ttf create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Italic-webfont.woff create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Light-webfont.eot create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Light-webfont.svg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Light-webfont.ttf create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Light-webfont.woff create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-LightItalic-webfont.eot create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-LightItalic-webfont.svg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-LightItalic-webfont.ttf create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-LightItalic-webfont.woff create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Regular-webfont.eot create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Regular-webfont.svg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Regular-webfont.ttf create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Regular-webfont.woff create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Semibold-webfont.eot create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Semibold-webfont.svg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Semibold-webfont.ttf create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Semibold-webfont.woff create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-SemiboldItalic-webfont.eot create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-SemiboldItalic-webfont.svg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-SemiboldItalic-webfont.ttf create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-SemiboldItalic-webfont.woff create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/PatternFlyIcons-webfont.eot create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/PatternFlyIcons-webfont.svg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/PatternFlyIcons-webfont.ttf create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/PatternFlyIcons-webfont.woff create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/fontawesome-webfont.eot create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/fontawesome-webfont.svg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/fontawesome-webfont.ttf create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/fontawesome-webfont.woff create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/fontawesome-webfont.woff2 create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/glyphicons-halflings-regular.eot create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/glyphicons-halflings-regular.svg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/glyphicons-halflings-regular.ttf create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/glyphicons-halflings-regular.woff create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/glyphicons-halflings-regular.woff2 create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/grunt-scripts/angular-animate.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/grunt-scripts/angular-bootstrap-prettify.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/grunt-scripts/angular-patternfly.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/grunt-scripts/angular-sanitize.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/grunt-scripts/angular-ui-router.min.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/grunt-scripts/angular.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/grunt-scripts/bootstrap-combobox.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/grunt-scripts/bootstrap-datepicker.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/grunt-scripts/bootstrap-datetimepicker.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/grunt-scripts/bootstrap-select.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/grunt-scripts/bootstrap-treeview.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/grunt-scripts/bootstrap.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/grunt-scripts/c3.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/grunt-scripts/d3.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/grunt-scripts/jquery.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/grunt-scripts/lodash.min.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/grunt-scripts/moment.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/grunt-scripts/patternfly.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/grunt-scripts/ui-bootstrap-tpls.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/img/OpenShift-Logo-NoText.svg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/img/OpenShift-Logo-Text.svg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/img/OpenShift-logo.svg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/img/RH_Atomic-Logo-NoText.svg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/img/RH_Atomic-Logo-Text.svg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/img/RH_atomic.svg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/img/apple-touch-icon-precomposed-114.png create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/img/apple-touch-icon-precomposed-144.png create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/img/apple-touch-icon-precomposed-152.png create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/img/apple-touch-icon-precomposed-180.png create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/img/apple-touch-icon-precomposed-57.png create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/img/apple-touch-icon-precomposed-72.png create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/img/apple-touch-icon-precomposed-76.png create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/img/bg-login.jpg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/img/bg-modal-about-pf.png create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/img/bg-navbar-pf-alt.svg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/img/brand-alt.svg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/img/brand.svg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/img/favicon.ico create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/img/kubernetes-Logo.svg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/img/kubernetes.svg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/img/logo-alt.svg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/img/logo.svg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/img/patternfly-orb.svg create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/img/spinner-inverse-lg.gif create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/img/spinner-inverse-sm.gif create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/img/spinner-inverse-xs.gif create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/img/spinner-inverse.gif create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/img/spinner-lg.gif create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/img/spinner-sm.gif create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/img/spinner-xs.gif create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/img/spinner.gif create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/index.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/js/angular-bootstrap-prettify.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/js/angular-bootstrap.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/js/angular.min.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/js/docs-setup.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/js/docs.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/js/google-code-prettify.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/js/marked.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/partials/api/patternfly.autofocus.pfFocused.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/partials/api/patternfly.card.directive.pfAggregateStatusCard.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/partials/api/patternfly.card.directive.pfCard - Timeframe Filters.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/partials/api/patternfly.card.directive.pfCard - Trends.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/partials/api/patternfly.card.directive.pfCard - Utilization.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/partials/api/patternfly.charts.directive.pfC3Chart.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/partials/api/patternfly.charts.directive.pfDonutPctChart.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/partials/api/patternfly.charts.directive.pfHeatMap.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/partials/api/patternfly.charts.directive.pfLineChart.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/partials/api/patternfly.charts.directive.pfSparklineChart.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/partials/api/patternfly.charts.directive.pfTrendsChart.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/partials/api/patternfly.charts.directive.pfUtilizationBarChart.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/partials/api/patternfly.charts.directive.pfUtilizationTrendChart.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/partials/api/patternfly.filters.directive.pfFilter.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/partials/api/patternfly.filters.directive.pfFilterFields.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/partials/api/patternfly.filters.directive.pfFilterResults.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/partials/api/patternfly.form.directive.pfDateTimepicker.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/partials/api/patternfly.form.directive.pfDatepicker.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/partials/api/patternfly.form.directive.pfFormButtons.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/partials/api/patternfly.form.directive.pfFormGroup.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/partials/api/patternfly.form.directive.pfRemainingCharsCount.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/partials/api/patternfly.modals.directive.pfAboutModal.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/partials/api/patternfly.navigation.directive.pfVerticalNavigation - Basic.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/partials/api/patternfly.navigation.directive.pfVerticalNavigation - Router.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/partials/api/patternfly.notification.Notification.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/partials/api/patternfly.notification.directive.pfInlineNotification.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/partials/api/patternfly.notification.directive.pfNotificationDrawer.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/partials/api/patternfly.notification.directive.pfNotificationList.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/partials/api/patternfly.notification.directive.pfToastNotification.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/partials/api/patternfly.notification.directive.pfToastNotificationList.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/partials/api/patternfly.select.pfSelect.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/partials/api/patternfly.sort.directive.pfSort.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/partials/api/patternfly.toolbars.directive.pfToolbar.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/partials/api/patternfly.utils.directive.pfTransclude.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/partials/api/patternfly.utils.pfFixedAccordion.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/partials/api/patternfly.validation.pfValidation.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/partials/api/patternfly.views.directive.pfCardView.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/partials/api/patternfly.views.directive.pfListView.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/partials/api/patternfly.wizard.directive.pfWizard.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/partials/api/patternfly.wizard.directive.pfWizardReviewPage.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/partials/api/patternfly.wizard.directive.pfWizardStep.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/partials/api/patternfly.wizard.directive.pfWizardSubstep.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/styles/angular-patternfly.css create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/styles/angular-patternfly.min.css create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/eslint.yaml create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/index.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/npm-shrinkwrap.json create mode 100755 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/scripts/publish-ghpages.sh create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/styles/angular-patternfly.css create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/autofocus/autofocus.spec.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/card/aggregate-status/aggregate-status-card.directive.spec.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/card/basic/card.spec.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/charts/c3/c3.spec.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/charts/donut/donut-pct.spec.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/charts/heatmap/heatmap-legend.spec.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/charts/heatmap/heatmap.spec.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/charts/sparkline/sparkline-chart.spec.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/charts/trends/trends-chart.spec.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/charts/utilization-bar/utilization-bar.spec.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/charts/utilization-trend/utilization-trend-chart.spec.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/filters/filter.spec.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/form/datepicker/datepicker.directive.spec.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/form/datetimepicker/datetimepicker.directive.spec.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/form/form-buttons/form-buttons.directive.spec.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/form/form-group/form-group.directive.spec.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/form/remaining-chars-count/remaining-chars-count.directive.spec.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/modals/about-modal.spec.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/navigation/vertical-navigation.spec.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/notification/heading.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/notification/notification-body.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/notification/notification-drawer.spec.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/notification/notification-footer.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/notification/notification.spec.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/notification/subheading.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/notification/title.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/notification/toast-notification-list.spec.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/notification/toast-notification.spec.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/select/select.spec.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/sort/sort.spec.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/toolbars/toolbar.spec.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/utils/fixed-accordion.spec.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/utils/specUtils.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/utils/transclude-directive.spec.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/utils/utils.spec.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/validation/validation.spec.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/views/cardview/card-view.spec.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/views/listview/list-view.spec.js create mode 100755 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/wizard/deployment.html create mode 100755 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/wizard/detail-page.html create mode 100755 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/wizard/review-second-template.html create mode 100755 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/wizard/review-template.html create mode 100755 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/wizard/script.js create mode 100755 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/wizard/summary.html create mode 100755 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/wizard/wizard-container.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/test/wizard/wizard.spec.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-route/.bower.json create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-route/LICENSE.md create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-route/README.md create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-route/angular-route.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-route/angular-route.min.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-route/angular-route.min.js.map create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-route/bower.json create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-route/index.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-route/package.json create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-sanitize/.bower.json create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-sanitize/LICENSE.md create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-sanitize/README.md create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-sanitize/angular-sanitize.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-sanitize/angular-sanitize.min.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-sanitize/angular-sanitize.min.js.map create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-sanitize/bower.json create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-sanitize/index.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-sanitize/package.json create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular/.bower.json create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular/LICENSE.md create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular/README.md create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular/angular-csp.css create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular/angular.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular/angular.min.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular/angular.min.js.gzip create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular/angular.min.js.map create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular/bower.json create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular/index.js create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular/package.json create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/coolstore.json create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/index.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/keycloak.json create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/partials/cart.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/partials/header.html create mode 100644 resources/projects/coolstore/src/main/resources/META-INF/resources/partials/home.html diff --git a/resources/projects/coolstore/pom.xml b/resources/projects/coolstore/pom.xml new file mode 100644 index 00000000..20997e37 --- /dev/null +++ b/resources/projects/coolstore/pom.xml @@ -0,0 +1,160 @@ + + + 4.0.0 + com.redhat.coolstore + coolstore + 1.0.0-SNAPSHOT + coolstore-quarkus + + 3.13.0 + 21 + UTF-8 + UTF-8 + quarkus-bom + io.quarkus.platform + 3.12.3 + true + 3.2.5 + + + + + io.quarkus.platform + quarkus-bom + ${quarkus.platform.version} + pom + import + + + + + + io.quarkus + quarkus-arc + + + io.quarkus + quarkus-resteasy + + + io.quarkus + quarkus-resteasy-jackson + + + io.quarkus + quarkus-resteasy-client + + + io.quarkus + quarkus-resteasy-client-jackson + + + io.quarkus + quarkus-hibernate-orm + + + io.quarkus + quarkus-jdbc-postgresql + + + io.quarkus + quarkus-flyway + + + org.flywaydb + flyway-database-postgresql + 10.12.0 + runtime + + + io.quarkus + quarkus-undertow + + + io.quarkus + quarkus-messaging + + + io.quarkus + quarkus-container-image-docker + + + io.quarkus + quarkus-minikube + + + + + + ${quarkus.platform.group-id} + quarkus-maven-plugin + ${quarkus.platform.version} + true + + + + build + generate-code + generate-code-tests + native-image-agent + + + + + + maven-compiler-plugin + ${compiler-plugin.version} + + + -parameters + + + + + maven-surefire-plugin + ${surefire-plugin.version} + + + org.jboss.logmanager.LogManager + ${maven.home} + + + + + maven-failsafe-plugin + ${surefire-plugin.version} + + + + integration-test + verify + + + + + + ${project.build.directory}/${project.build.finalName}-runner + org.jboss.logmanager.LogManager + ${maven.home} + + + + + + + + + native + + + native + + + + false + true + + + + diff --git a/resources/projects/coolstore/realm-export.json b/resources/projects/coolstore/realm-export.json new file mode 100644 index 00000000..f65da225 --- /dev/null +++ b/resources/projects/coolstore/realm-export.json @@ -0,0 +1,1926 @@ +{ + "id": "c054a229-bcd8-458b-81a4-27e333bee6e4", + "realm": "eap", + "notBefore": 0, + "defaultSignatureAlgorithm": "RS256", + "revokeRefreshToken": false, + "refreshTokenMaxReuse": 0, + "accessTokenLifespan": 300, + "accessTokenLifespanForImplicitFlow": 900, + "ssoSessionIdleTimeout": 1800, + "ssoSessionMaxLifespan": 36000, + "ssoSessionIdleTimeoutRememberMe": 0, + "ssoSessionMaxLifespanRememberMe": 0, + "offlineSessionIdleTimeout": 2592000, + "offlineSessionMaxLifespanEnabled": false, + "offlineSessionMaxLifespan": 5184000, + "clientSessionIdleTimeout": 0, + "clientSessionMaxLifespan": 0, + "clientOfflineSessionIdleTimeout": 0, + "clientOfflineSessionMaxLifespan": 0, + "accessCodeLifespan": 60, + "accessCodeLifespanUserAction": 300, + "accessCodeLifespanLogin": 1800, + "actionTokenGeneratedByAdminLifespan": 43200, + "actionTokenGeneratedByUserLifespan": 300, + "oauth2DeviceCodeLifespan": 600, + "oauth2DevicePollingInterval": 5, + "enabled": true, + "sslRequired": "external", + "registrationAllowed": false, + "registrationEmailAsUsername": false, + "rememberMe": false, + "verifyEmail": false, + "loginWithEmailAllowed": true, + "duplicateEmailsAllowed": false, + "resetPasswordAllowed": false, + "editUsernameAllowed": false, + "bruteForceProtected": false, + "permanentLockout": false, + "maxFailureWaitSeconds": 900, + "minimumQuickLoginWaitSeconds": 60, + "waitIncrementSeconds": 60, + "quickLoginCheckMilliSeconds": 1000, + "maxDeltaTimeSeconds": 43200, + "failureFactor": 30, + "defaultRole": { + "id": "0770c39d-0f6b-4600-9307-fdbb0bf49cf8", + "name": "default-roles-eap", + "description": "${role_default-roles}", + "composite": true, + "clientRole": false, + "containerId": "c054a229-bcd8-458b-81a4-27e333bee6e4" + }, + "requiredCredentials": [ + "password" + ], + "otpPolicyType": "totp", + "otpPolicyAlgorithm": "HmacSHA1", + "otpPolicyInitialCounter": 0, + "otpPolicyDigits": 6, + "otpPolicyLookAheadWindow": 1, + "otpPolicyPeriod": 30, + "otpPolicyCodeReusable": false, + "otpSupportedApplications": [ + "totpAppGoogleName", + "totpAppFreeOTPName" + ], + "webAuthnPolicyRpEntityName": "keycloak", + "webAuthnPolicySignatureAlgorithms": [ + "ES256" + ], + "webAuthnPolicyRpId": "", + "webAuthnPolicyAttestationConveyancePreference": "not specified", + "webAuthnPolicyAuthenticatorAttachment": "not specified", + "webAuthnPolicyRequireResidentKey": "not specified", + "webAuthnPolicyUserVerificationRequirement": "not specified", + "webAuthnPolicyCreateTimeout": 0, + "webAuthnPolicyAvoidSameAuthenticatorRegister": false, + "webAuthnPolicyAcceptableAaguids": [], + "webAuthnPolicyPasswordlessRpEntityName": "keycloak", + "webAuthnPolicyPasswordlessSignatureAlgorithms": [ + "ES256" + ], + "webAuthnPolicyPasswordlessRpId": "", + "webAuthnPolicyPasswordlessAttestationConveyancePreference": "not specified", + "webAuthnPolicyPasswordlessAuthenticatorAttachment": "not specified", + "webAuthnPolicyPasswordlessRequireResidentKey": "not specified", + "webAuthnPolicyPasswordlessUserVerificationRequirement": "not specified", + "webAuthnPolicyPasswordlessCreateTimeout": 0, + "webAuthnPolicyPasswordlessAvoidSameAuthenticatorRegister": false, + "webAuthnPolicyPasswordlessAcceptableAaguids": [], + "scopeMappings": [ + { + "clientScope": "offline_access", + "roles": [ + "offline_access" + ] + } + ], + "clientScopeMappings": { + "account": [ + { + "client": "account-console", + "roles": [ + "manage-account", + "view-groups" + ] + } + ] + }, + "clients": [ + { + "id": "e9c6c371-2ecc-4e0c-9692-5d9a430de0e1", + "clientId": "account", + "name": "${client_account}", + "rootUrl": "${authBaseUrl}", + "baseUrl": "/realms/eap/account/", + "surrogateAuthRequired": false, + "enabled": true, + "alwaysDisplayInConsole": false, + "clientAuthenticatorType": "client-secret", + "redirectUris": [ + "/realms/eap/account/*" + ], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "publicClient": true, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "post.logout.redirect.uris": "+" + }, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "defaultClientScopes": [ + "web-origins", + "acr", + "roles", + "profile", + "email" + ], + "optionalClientScopes": [ + "address", + "phone", + "offline_access", + "microprofile-jwt" + ] + }, + { + "id": "be75b005-7b27-4c40-a271-b42556f0ab01", + "clientId": "account-console", + "name": "${client_account-console}", + "description": "", + "rootUrl": "${authBaseUrl}", + "adminUrl": "", + "baseUrl": "/realms/eap/account/", + "surrogateAuthRequired": false, + "enabled": true, + "alwaysDisplayInConsole": false, + "clientAuthenticatorType": "client-secret", + "redirectUris": [ + "/realms/eap/account/*" + ], + "webOrigins": [ + "*" + ], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "publicClient": true, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "oidc.ciba.grant.enabled": "false", + "backchannel.logout.session.required": "true", + "post.logout.redirect.uris": "+", + "oauth2.device.authorization.grant.enabled": "false", + "display.on.consent.screen": "false", + "pkce.code.challenge.method": "S256", + "backchannel.logout.revoke.offline.tokens": "false" + }, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "protocolMappers": [ + { + "id": "348b3fbe-95dd-42ad-a6ac-66f1e2ddba8c", + "name": "audience resolve", + "protocol": "openid-connect", + "protocolMapper": "oidc-audience-resolve-mapper", + "consentRequired": false, + "config": {} + } + ], + "defaultClientScopes": [ + "web-origins", + "acr", + "roles", + "profile", + "email" + ], + "optionalClientScopes": [ + "address", + "phone", + "offline_access", + "microprofile-jwt" + ] + }, + { + "id": "4bb4c0c7-9f37-4616-9cf8-5cca0b4523fd", + "clientId": "admin-cli", + "name": "${client_admin-cli}", + "surrogateAuthRequired": false, + "enabled": true, + "alwaysDisplayInConsole": false, + "clientAuthenticatorType": "client-secret", + "redirectUris": [], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": false, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": true, + "serviceAccountsEnabled": false, + "publicClient": true, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": {}, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "defaultClientScopes": [ + "web-origins", + "acr", + "roles", + "profile", + "email" + ], + "optionalClientScopes": [ + "address", + "phone", + "offline_access", + "microprofile-jwt" + ] + }, + { + "id": "92f3824a-db66-44b3-9012-e6dcf8cc5cb3", + "clientId": "broker", + "name": "${client_broker}", + "surrogateAuthRequired": false, + "enabled": true, + "alwaysDisplayInConsole": false, + "clientAuthenticatorType": "client-secret", + "redirectUris": [], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": true, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "publicClient": false, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": {}, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "defaultClientScopes": [ + "web-origins", + "acr", + "roles", + "profile", + "email" + ], + "optionalClientScopes": [ + "address", + "phone", + "offline_access", + "microprofile-jwt" + ] + }, + { + "id": "24ce7951-ec39-490f-bc36-91bff17c13aa", + "clientId": "eap-app", + "name": "", + "description": "", + "rootUrl": "", + "adminUrl": "", + "baseUrl": "", + "surrogateAuthRequired": false, + "enabled": true, + "alwaysDisplayInConsole": false, + "clientAuthenticatorType": "client-secret", + "redirectUris": [ + "", + "*" + ], + "webOrigins": [ + "*" + ], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": true, + "directAccessGrantsEnabled": true, + "serviceAccountsEnabled": false, + "publicClient": true, + "frontchannelLogout": true, + "protocol": "openid-connect", + "attributes": { + "client.secret.creation.time": "1677078233", + "post.logout.redirect.uris": "*", + "oauth2.device.authorization.grant.enabled": "false", + "backchannel.logout.revoke.offline.tokens": "false", + "use.refresh.tokens": "true", + "tls-client-certificate-bound-access-tokens": "false", + "oidc.ciba.grant.enabled": "false", + "backchannel.logout.session.required": "true", + "client_credentials.use_refresh_token": "false", + "acr.loa.map": "{}", + "require.pushed.authorization.requests": "false", + "display.on.consent.screen": "false", + "token.response.type.bearer.lower-case": "false" + }, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": true, + "nodeReRegistrationTimeout": -1, + "protocolMappers": [ + { + "id": "7cc9bd92-754d-4764-9565-128bcdcd7daa", + "name": "Client Host", + "protocol": "openid-connect", + "protocolMapper": "oidc-usersessionmodel-note-mapper", + "consentRequired": false, + "config": { + "user.session.note": "clientHost", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "clientHost", + "jsonType.label": "String" + } + }, + { + "id": "2dad55b4-fe76-4b8f-9e8c-038227a5cb4d", + "name": "Client ID", + "protocol": "openid-connect", + "protocolMapper": "oidc-usersessionmodel-note-mapper", + "consentRequired": false, + "config": { + "user.session.note": "clientId", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "clientId", + "jsonType.label": "String" + } + }, + { + "id": "fb2653ce-cc37-4770-aa81-d339d6100099", + "name": "Client IP Address", + "protocol": "openid-connect", + "protocolMapper": "oidc-usersessionmodel-note-mapper", + "consentRequired": false, + "config": { + "user.session.note": "clientAddress", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "clientAddress", + "jsonType.label": "String" + } + } + ], + "defaultClientScopes": [ + "web-origins", + "acr", + "roles", + "profile", + "email" + ], + "optionalClientScopes": [ + "address", + "phone", + "offline_access", + "microprofile-jwt" + ] + }, + { + "id": "3f83324f-813c-41f1-ab90-70276d3fafa1", + "clientId": "realm-management", + "name": "${client_realm-management}", + "surrogateAuthRequired": false, + "enabled": true, + "alwaysDisplayInConsole": false, + "clientAuthenticatorType": "client-secret", + "redirectUris": [], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": true, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "publicClient": false, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": {}, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "defaultClientScopes": [ + "web-origins", + "acr", + "roles", + "profile", + "email" + ], + "optionalClientScopes": [ + "address", + "phone", + "offline_access", + "microprofile-jwt" + ] + }, + { + "id": "d00da663-ef26-4673-a5d6-06011c396d00", + "clientId": "security-admin-console", + "name": "${client_security-admin-console}", + "rootUrl": "${authAdminUrl}", + "baseUrl": "/admin/eap/console/", + "surrogateAuthRequired": false, + "enabled": true, + "alwaysDisplayInConsole": false, + "clientAuthenticatorType": "client-secret", + "redirectUris": [ + "/admin/eap/console/*" + ], + "webOrigins": [ + "+" + ], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "publicClient": true, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "post.logout.redirect.uris": "+", + "pkce.code.challenge.method": "S256" + }, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "protocolMappers": [ + { + "id": "9da678f5-0ba4-40dd-a2c0-7579ee8fdc7e", + "name": "locale", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "userinfo.token.claim": "true", + "user.attribute": "locale", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "locale", + "jsonType.label": "String" + } + } + ], + "defaultClientScopes": [ + "web-origins", + "acr", + "roles", + "profile", + "email" + ], + "optionalClientScopes": [ + "address", + "phone", + "offline_access", + "microprofile-jwt" + ] + } + ], + "clientScopes": [ + { + "id": "03566133-1ef1-45c6-9255-c0524caf82f9", + "name": "role_list", + "description": "SAML role list", + "protocol": "saml", + "attributes": { + "consent.screen.text": "${samlRoleListScopeConsentText}", + "display.on.consent.screen": "true" + }, + "protocolMappers": [ + { + "id": "25d2d3d3-c7e5-4978-876b-b33f17b309eb", + "name": "role list", + "protocol": "saml", + "protocolMapper": "saml-role-list-mapper", + "consentRequired": false, + "config": { + "single": "false", + "attribute.nameformat": "Basic", + "attribute.name": "Role" + } + } + ] + }, + { + "id": "767d594d-f576-4ee2-81a7-16ac1cca5fbf", + "name": "address", + "description": "OpenID Connect built-in scope: address", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "true", + "display.on.consent.screen": "true", + "consent.screen.text": "${addressScopeConsentText}" + }, + "protocolMappers": [ + { + "id": "18c460f7-c503-42ec-a18e-3dd240d7ed3b", + "name": "address", + "protocol": "openid-connect", + "protocolMapper": "oidc-address-mapper", + "consentRequired": false, + "config": { + "user.attribute.formatted": "formatted", + "user.attribute.country": "country", + "user.attribute.postal_code": "postal_code", + "userinfo.token.claim": "true", + "user.attribute.street": "street", + "id.token.claim": "true", + "user.attribute.region": "region", + "access.token.claim": "true", + "user.attribute.locality": "locality" + } + } + ] + }, + { + "id": "f77ec6ad-40ee-46f0-a74a-0c4026a62211", + "name": "phone", + "description": "OpenID Connect built-in scope: phone", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "true", + "display.on.consent.screen": "true", + "consent.screen.text": "${phoneScopeConsentText}" + }, + "protocolMappers": [ + { + "id": "2cba7d5f-4425-48b7-963a-3eb5ac28e8ba", + "name": "phone number verified", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "userinfo.token.claim": "true", + "user.attribute": "phoneNumberVerified", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "phone_number_verified", + "jsonType.label": "boolean" + } + }, + { + "id": "d20fd766-f4ec-4659-9523-1a75e3331503", + "name": "phone number", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "userinfo.token.claim": "true", + "user.attribute": "phoneNumber", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "phone_number", + "jsonType.label": "String" + } + } + ] + }, + { + "id": "6d7f09d9-7979-46bd-a5af-ad73e58f11c8", + "name": "roles", + "description": "OpenID Connect scope for add user roles to the access token", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "false", + "display.on.consent.screen": "true", + "consent.screen.text": "${rolesScopeConsentText}" + }, + "protocolMappers": [ + { + "id": "acd34eb2-e2a7-45bb-8326-779ec0a9ded4", + "name": "audience resolve", + "protocol": "openid-connect", + "protocolMapper": "oidc-audience-resolve-mapper", + "consentRequired": false, + "config": {} + }, + { + "id": "6b4ae73f-b6ca-4fdc-a8bb-57de8e26340a", + "name": "client roles", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-client-role-mapper", + "consentRequired": false, + "config": { + "user.attribute": "foo", + "access.token.claim": "true", + "claim.name": "resource_access.${client_id}.roles", + "jsonType.label": "String", + "multivalued": "true" + } + }, + { + "id": "0503c6a2-b1b1-47c4-bdd5-2beed11b4d6d", + "name": "realm roles", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-realm-role-mapper", + "consentRequired": false, + "config": { + "user.attribute": "foo", + "access.token.claim": "true", + "claim.name": "realm_access.roles", + "jsonType.label": "String", + "multivalued": "true" + } + } + ] + }, + { + "id": "505ff63c-29a3-4bad-ae87-0634d3d5cfc4", + "name": "profile", + "description": "OpenID Connect built-in scope: profile", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "true", + "display.on.consent.screen": "true", + "consent.screen.text": "${profileScopeConsentText}" + }, + "protocolMappers": [ + { + "id": "8a3c9dcb-a6e9-43e7-8cdf-d753b9220fb9", + "name": "gender", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "userinfo.token.claim": "true", + "user.attribute": "gender", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "gender", + "jsonType.label": "String" + } + }, + { + "id": "906714bc-682b-47ce-a170-3098d0f9b2d8", + "name": "updated at", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "userinfo.token.claim": "true", + "user.attribute": "updatedAt", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "updated_at", + "jsonType.label": "long" + } + }, + { + "id": "2e8ea554-8436-45b3-bbff-197a6821f2f0", + "name": "locale", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "userinfo.token.claim": "true", + "user.attribute": "locale", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "locale", + "jsonType.label": "String" + } + }, + { + "id": "d7b09b38-bf20-472a-a926-e6c774dffd00", + "name": "family name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": false, + "config": { + "userinfo.token.claim": "true", + "user.attribute": "lastName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "family_name", + "jsonType.label": "String" + } + }, + { + "id": "00a6b70e-2e43-4382-877a-abbde23c6fd0", + "name": "zoneinfo", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "userinfo.token.claim": "true", + "user.attribute": "zoneinfo", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "zoneinfo", + "jsonType.label": "String" + } + }, + { + "id": "621002ea-e65d-42dc-9fb7-87dba3690542", + "name": "username", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": false, + "config": { + "userinfo.token.claim": "true", + "user.attribute": "username", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "preferred_username", + "jsonType.label": "String" + } + }, + { + "id": "6ca0c332-c463-4a87-904b-3f9fde4ae63b", + "name": "website", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "userinfo.token.claim": "true", + "user.attribute": "website", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "website", + "jsonType.label": "String" + } + }, + { + "id": "f29a3264-f585-4a2e-907e-eedfbaffb0a8", + "name": "nickname", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "userinfo.token.claim": "true", + "user.attribute": "nickname", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "nickname", + "jsonType.label": "String" + } + }, + { + "id": "19c792b4-fc00-4899-8d4a-d011c34a17f0", + "name": "profile", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "userinfo.token.claim": "true", + "user.attribute": "profile", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "profile", + "jsonType.label": "String" + } + }, + { + "id": "e2a8fa65-ac41-4d7d-abd6-2504428428df", + "name": "full name", + "protocol": "openid-connect", + "protocolMapper": "oidc-full-name-mapper", + "consentRequired": false, + "config": { + "id.token.claim": "true", + "access.token.claim": "true", + "userinfo.token.claim": "true" + } + }, + { + "id": "150168bc-744b-4478-b8d6-e713efc1b406", + "name": "middle name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "userinfo.token.claim": "true", + "user.attribute": "middleName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "middle_name", + "jsonType.label": "String" + } + }, + { + "id": "05954453-866f-43e6-a030-8dad14f06c4c", + "name": "birthdate", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "userinfo.token.claim": "true", + "user.attribute": "birthdate", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "birthdate", + "jsonType.label": "String" + } + }, + { + "id": "8a5acd0c-a4dd-41f8-b202-856f87423c7a", + "name": "given name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": false, + "config": { + "userinfo.token.claim": "true", + "user.attribute": "firstName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "given_name", + "jsonType.label": "String" + } + }, + { + "id": "55547d20-c088-458e-9c33-5a3c992b7636", + "name": "picture", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "userinfo.token.claim": "true", + "user.attribute": "picture", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "picture", + "jsonType.label": "String" + } + } + ] + }, + { + "id": "d39f5398-3e12-4b27-9797-b566c608aade", + "name": "microprofile-jwt", + "description": "Microprofile - JWT built-in scope", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "true", + "display.on.consent.screen": "false" + }, + "protocolMappers": [ + { + "id": "2b62eea1-37ad-4bb8-8552-a6731635cadf", + "name": "groups", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-realm-role-mapper", + "consentRequired": false, + "config": { + "multivalued": "true", + "user.attribute": "foo", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "groups", + "jsonType.label": "String" + } + }, + { + "id": "d1987076-82d1-4964-8b77-81350e299b70", + "name": "upn", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": false, + "config": { + "userinfo.token.claim": "true", + "user.attribute": "username", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "upn", + "jsonType.label": "String" + } + } + ] + }, + { + "id": "b6e369a9-3f15-476c-bf52-36e6099c5a78", + "name": "web-origins", + "description": "OpenID Connect scope for add allowed web origins to the access token", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "false", + "display.on.consent.screen": "false", + "consent.screen.text": "" + }, + "protocolMappers": [ + { + "id": "1b6a4769-7b34-483d-b592-67ff27a03d78", + "name": "allowed web origins", + "protocol": "openid-connect", + "protocolMapper": "oidc-allowed-origins-mapper", + "consentRequired": false, + "config": {} + } + ] + }, + { + "id": "dd30154e-2e9e-49c7-a3c4-0406dcbece10", + "name": "offline_access", + "description": "OpenID Connect built-in scope: offline_access", + "protocol": "openid-connect", + "attributes": { + "consent.screen.text": "${offlineAccessScopeConsentText}", + "display.on.consent.screen": "true" + } + }, + { + "id": "25f485af-de62-4c1b-ae0d-63c928776d93", + "name": "email", + "description": "OpenID Connect built-in scope: email", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "true", + "display.on.consent.screen": "true", + "consent.screen.text": "${emailScopeConsentText}" + }, + "protocolMappers": [ + { + "id": "8d0bcaee-86cc-442f-b021-3a961df72428", + "name": "email", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": false, + "config": { + "userinfo.token.claim": "true", + "user.attribute": "email", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "email", + "jsonType.label": "String" + } + }, + { + "id": "4ed5c341-9d2a-483d-b7e3-2e1aa62d5d20", + "name": "email verified", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": false, + "config": { + "userinfo.token.claim": "true", + "user.attribute": "emailVerified", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "email_verified", + "jsonType.label": "boolean" + } + } + ] + }, + { + "id": "34f5a6c0-a71b-4fc7-96d8-38a9800dd5a2", + "name": "acr", + "description": "OpenID Connect scope for add acr (authentication context class reference) to the token", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "false", + "display.on.consent.screen": "false" + }, + "protocolMappers": [ + { + "id": "b9b03f0d-41eb-4763-af2e-2fd7e123a179", + "name": "acr loa level", + "protocol": "openid-connect", + "protocolMapper": "oidc-acr-mapper", + "consentRequired": false, + "config": { + "id.token.claim": "true", + "access.token.claim": "true" + } + } + ] + } + ], + "defaultDefaultClientScopes": [ + "role_list", + "profile", + "email", + "roles", + "web-origins", + "acr" + ], + "defaultOptionalClientScopes": [ + "offline_access", + "address", + "phone", + "microprofile-jwt" + ], + "browserSecurityHeaders": { + "contentSecurityPolicyReportOnly": "", + "xContentTypeOptions": "nosniff", + "xRobotsTag": "none", + "xFrameOptions": "SAMEORIGIN", + "contentSecurityPolicy": "frame-src 'self'; frame-ancestors 'self'; object-src 'none';", + "xXSSProtection": "1; mode=block", + "strictTransportSecurity": "max-age=31536000; includeSubDomains" + }, + "smtpServer": {}, + "eventsEnabled": true, + "eventsListeners": [ + "jboss-logging", + "email" + ], + "enabledEventTypes": [], + "adminEventsEnabled": true, + "adminEventsDetailsEnabled": false, + "identityProviders": [], + "identityProviderMappers": [], + "components": { + "org.keycloak.services.clientregistration.policy.ClientRegistrationPolicy": [ + { + "id": "093ce19c-21c6-426b-a5f9-c84485d49178", + "name": "Allowed Client Scopes", + "providerId": "allowed-client-templates", + "subType": "anonymous", + "subComponents": {}, + "config": { + "allow-default-scopes": [ + "true" + ] + } + }, + { + "id": "0b83a8d8-463b-43b8-8478-8ef254e4b0da", + "name": "Max Clients Limit", + "providerId": "max-clients", + "subType": "anonymous", + "subComponents": {}, + "config": { + "max-clients": [ + "200" + ] + } + }, + { + "id": "4cf73054-b4fb-4c69-9447-aa13412e5f0a", + "name": "Allowed Client Scopes", + "providerId": "allowed-client-templates", + "subType": "authenticated", + "subComponents": {}, + "config": { + "allow-default-scopes": [ + "true" + ] + } + }, + { + "id": "af1ab818-4eae-4687-ae50-074f9720e125", + "name": "Trusted Hosts", + "providerId": "trusted-hosts", + "subType": "anonymous", + "subComponents": {}, + "config": { + "host-sending-registration-request-must-match": [ + "true" + ], + "client-uris-must-match": [ + "true" + ] + } + }, + { + "id": "ace7c238-9e25-4aaa-be33-e4b09667d814", + "name": "Full Scope Disabled", + "providerId": "scope", + "subType": "anonymous", + "subComponents": {}, + "config": {} + }, + { + "id": "6b75f739-af82-4c60-a89e-391d41d00fab", + "name": "Allowed Protocol Mapper Types", + "providerId": "allowed-protocol-mappers", + "subType": "authenticated", + "subComponents": {}, + "config": { + "allowed-protocol-mapper-types": [ + "oidc-usermodel-attribute-mapper", + "saml-user-attribute-mapper", + "oidc-full-name-mapper", + "saml-role-list-mapper", + "oidc-usermodel-property-mapper", + "oidc-sha256-pairwise-sub-mapper", + "saml-user-property-mapper", + "oidc-address-mapper" + ] + } + }, + { + "id": "0e4c21eb-8b14-4c2a-82f0-43f4d84d6c28", + "name": "Allowed Protocol Mapper Types", + "providerId": "allowed-protocol-mappers", + "subType": "anonymous", + "subComponents": {}, + "config": { + "allowed-protocol-mapper-types": [ + "saml-user-attribute-mapper", + "saml-role-list-mapper", + "oidc-sha256-pairwise-sub-mapper", + "oidc-usermodel-attribute-mapper", + "saml-user-property-mapper", + "oidc-usermodel-property-mapper", + "oidc-address-mapper", + "oidc-full-name-mapper" + ] + } + }, + { + "id": "4690dd35-844b-4ffb-9d0a-a428a2836422", + "name": "Consent Required", + "providerId": "consent-required", + "subType": "anonymous", + "subComponents": {}, + "config": {} + } + ], + "org.keycloak.userprofile.UserProfileProvider": [ + { + "id": "ea694b6d-6c63-4930-b91d-f161e5d7cbc1", + "providerId": "declarative-user-profile", + "subComponents": {}, + "config": {} + } + ], + "org.keycloak.keys.KeyProvider": [ + { + "id": "2c575d1c-e6be-4c2b-bb29-7c2b103485bc", + "name": "aes-generated", + "providerId": "aes-generated", + "subComponents": {}, + "config": { + "priority": [ + "100" + ] + } + }, + { + "id": "79ea65a7-2201-4696-abc6-b408296be0a8", + "name": "rsa-enc-generated", + "providerId": "rsa-enc-generated", + "subComponents": {}, + "config": { + "priority": [ + "100" + ], + "algorithm": [ + "RSA-OAEP" + ] + } + }, + { + "id": "bcfdaaa6-ae08-4b57-b48e-b515ff67d8bf", + "name": "rsa-generated", + "providerId": "rsa-generated", + "subComponents": {}, + "config": { + "priority": [ + "100" + ] + } + }, + { + "id": "06fe5315-4f03-4094-baf0-d57baf78e7ef", + "name": "hmac-generated", + "providerId": "hmac-generated", + "subComponents": {}, + "config": { + "priority": [ + "100" + ], + "algorithm": [ + "HS256" + ] + } + } + ] + }, + "internationalizationEnabled": false, + "supportedLocales": [], + "authenticationFlows": [ + { + "id": "7faf55af-5f7c-4c07-952c-a76afd0da6b9", + "alias": "Account verification options", + "description": "Method with which to verity the existing account", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "idp-email-verification", + "authenticatorFlow": false, + "requirement": "ALTERNATIVE", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticatorFlow": true, + "requirement": "ALTERNATIVE", + "priority": 20, + "autheticatorFlow": true, + "flowAlias": "Verify Existing Account by Re-authentication", + "userSetupAllowed": false + } + ] + }, + { + "id": "952b6c15-b0d9-4377-b480-7c86ab5d11f5", + "alias": "Authentication Options", + "description": "Authentication options.", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "basic-auth", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "basic-auth-otp", + "authenticatorFlow": false, + "requirement": "DISABLED", + "priority": 20, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "auth-spnego", + "authenticatorFlow": false, + "requirement": "DISABLED", + "priority": 30, + "autheticatorFlow": false, + "userSetupAllowed": false + } + ] + }, + { + "id": "768c5acd-5c26-4ad4-af9d-b82b0aa44222", + "alias": "Browser - Conditional OTP", + "description": "Flow to determine if the OTP is required for the authentication", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "conditional-user-configured", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "auth-otp-form", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 20, + "autheticatorFlow": false, + "userSetupAllowed": false + } + ] + }, + { + "id": "5a4b7625-eab0-48f3-a779-7008cf635e5c", + "alias": "Direct Grant - Conditional OTP", + "description": "Flow to determine if the OTP is required for the authentication", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "conditional-user-configured", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "direct-grant-validate-otp", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 20, + "autheticatorFlow": false, + "userSetupAllowed": false + } + ] + }, + { + "id": "d7ea76c1-6254-4fe7-8637-c1f955231a8c", + "alias": "First broker login - Conditional OTP", + "description": "Flow to determine if the OTP is required for the authentication", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "conditional-user-configured", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "auth-otp-form", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 20, + "autheticatorFlow": false, + "userSetupAllowed": false + } + ] + }, + { + "id": "e5196154-ecd7-4aeb-acf2-f92b2c2764fd", + "alias": "Handle Existing Account", + "description": "Handle what to do if there is existing account with same email/username like authenticated identity provider", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "idp-confirm-link", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticatorFlow": true, + "requirement": "REQUIRED", + "priority": 20, + "autheticatorFlow": true, + "flowAlias": "Account verification options", + "userSetupAllowed": false + } + ] + }, + { + "id": "94d29a2e-5fd9-4820-ad7f-0f95a7d23fae", + "alias": "Reset - Conditional OTP", + "description": "Flow to determine if the OTP should be reset or not. Set to REQUIRED to force.", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "conditional-user-configured", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "reset-otp", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 20, + "autheticatorFlow": false, + "userSetupAllowed": false + } + ] + }, + { + "id": "f8d0d697-639b-4d2d-adae-720d81023d38", + "alias": "User creation or linking", + "description": "Flow for the existing/non-existing user alternatives", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticatorConfig": "create unique user config", + "authenticator": "idp-create-user-if-unique", + "authenticatorFlow": false, + "requirement": "ALTERNATIVE", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticatorFlow": true, + "requirement": "ALTERNATIVE", + "priority": 20, + "autheticatorFlow": true, + "flowAlias": "Handle Existing Account", + "userSetupAllowed": false + } + ] + }, + { + "id": "b284838e-93b4-4af1-8bfc-83f4e8028c70", + "alias": "Verify Existing Account by Re-authentication", + "description": "Reauthentication of existing account", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "idp-username-password-form", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticatorFlow": true, + "requirement": "CONDITIONAL", + "priority": 20, + "autheticatorFlow": true, + "flowAlias": "First broker login - Conditional OTP", + "userSetupAllowed": false + } + ] + }, + { + "id": "bfbd3de0-1f8d-4132-8c4d-136bdf44417b", + "alias": "browser", + "description": "browser based authentication", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "auth-cookie", + "authenticatorFlow": false, + "requirement": "ALTERNATIVE", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "auth-spnego", + "authenticatorFlow": false, + "requirement": "DISABLED", + "priority": 20, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "identity-provider-redirector", + "authenticatorFlow": false, + "requirement": "ALTERNATIVE", + "priority": 25, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticatorFlow": true, + "requirement": "ALTERNATIVE", + "priority": 30, + "autheticatorFlow": true, + "flowAlias": "forms", + "userSetupAllowed": false + } + ] + }, + { + "id": "6ae0104d-afe4-4a64-88fa-0f90777cb7fe", + "alias": "clients", + "description": "Base authentication for clients", + "providerId": "client-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "client-secret", + "authenticatorFlow": false, + "requirement": "ALTERNATIVE", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "client-jwt", + "authenticatorFlow": false, + "requirement": "ALTERNATIVE", + "priority": 20, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "client-secret-jwt", + "authenticatorFlow": false, + "requirement": "ALTERNATIVE", + "priority": 30, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "client-x509", + "authenticatorFlow": false, + "requirement": "ALTERNATIVE", + "priority": 40, + "autheticatorFlow": false, + "userSetupAllowed": false + } + ] + }, + { + "id": "b66777e8-d98c-423f-9c85-5c7755727c39", + "alias": "direct grant", + "description": "OpenID Connect Resource Owner Grant", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "direct-grant-validate-username", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "direct-grant-validate-password", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 20, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticatorFlow": true, + "requirement": "CONDITIONAL", + "priority": 30, + "autheticatorFlow": true, + "flowAlias": "Direct Grant - Conditional OTP", + "userSetupAllowed": false + } + ] + }, + { + "id": "9faa3b08-1bd2-43f7-86c4-e4592069d1f9", + "alias": "docker auth", + "description": "Used by Docker clients to authenticate against the IDP", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "docker-http-basic-authenticator", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + } + ] + }, + { + "id": "c1755813-4198-4329-a76b-6a4889b2bd9a", + "alias": "first broker login", + "description": "Actions taken after first broker login with identity provider account, which is not yet linked to any Keycloak account", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticatorConfig": "review profile config", + "authenticator": "idp-review-profile", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticatorFlow": true, + "requirement": "REQUIRED", + "priority": 20, + "autheticatorFlow": true, + "flowAlias": "User creation or linking", + "userSetupAllowed": false + } + ] + }, + { + "id": "352f276a-3ab0-4b7c-adb6-8dcf39fafb6d", + "alias": "forms", + "description": "Username, password, otp and other auth forms.", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "auth-username-password-form", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticatorFlow": true, + "requirement": "CONDITIONAL", + "priority": 20, + "autheticatorFlow": true, + "flowAlias": "Browser - Conditional OTP", + "userSetupAllowed": false + } + ] + }, + { + "id": "95651538-94ac-4fdc-8bfd-2b021bed110e", + "alias": "http challenge", + "description": "An authentication flow based on challenge-response HTTP Authentication Schemes", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "no-cookie-redirect", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticatorFlow": true, + "requirement": "REQUIRED", + "priority": 20, + "autheticatorFlow": true, + "flowAlias": "Authentication Options", + "userSetupAllowed": false + } + ] + }, + { + "id": "6347d82e-c305-4f4d-b2a4-fbdf4ccd840a", + "alias": "registration", + "description": "registration flow", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "registration-page-form", + "authenticatorFlow": true, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": true, + "flowAlias": "registration form", + "userSetupAllowed": false + } + ] + }, + { + "id": "f4191e88-8b0d-4b9c-a00d-3f540f0f0a4d", + "alias": "registration form", + "description": "registration form", + "providerId": "form-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "registration-user-creation", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 20, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "registration-profile-action", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 40, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "registration-password-action", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 50, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "registration-recaptcha-action", + "authenticatorFlow": false, + "requirement": "DISABLED", + "priority": 60, + "autheticatorFlow": false, + "userSetupAllowed": false + } + ] + }, + { + "id": "9f2fa0a3-2e6b-4ddf-9835-421dce872114", + "alias": "reset credentials", + "description": "Reset credentials for a user if they forgot their password or something", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "reset-credentials-choose-user", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "reset-credential-email", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 20, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "reset-password", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 30, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticatorFlow": true, + "requirement": "CONDITIONAL", + "priority": 40, + "autheticatorFlow": true, + "flowAlias": "Reset - Conditional OTP", + "userSetupAllowed": false + } + ] + }, + { + "id": "6e22b6da-5940-4f2f-a978-9f33f6676109", + "alias": "saml ecp", + "description": "SAML ECP Profile Authentication Flow", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "http-basic-authenticator", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + } + ] + } + ], + "authenticatorConfig": [ + { + "id": "a440ef67-5bba-4728-9a93-6c770d455eb4", + "alias": "create unique user config", + "config": { + "require.password.update.after.registration": "false" + } + }, + { + "id": "223200e2-10e9-4aad-b208-4f9a84cc4371", + "alias": "review profile config", + "config": { + "update.profile.on.first.login": "missing" + } + } + ], + "requiredActions": [ + { + "alias": "CONFIGURE_TOTP", + "name": "Configure OTP", + "providerId": "CONFIGURE_TOTP", + "enabled": true, + "defaultAction": false, + "priority": 10, + "config": {} + }, + { + "alias": "terms_and_conditions", + "name": "Terms and Conditions", + "providerId": "terms_and_conditions", + "enabled": false, + "defaultAction": false, + "priority": 20, + "config": {} + }, + { + "alias": "UPDATE_PASSWORD", + "name": "Update Password", + "providerId": "UPDATE_PASSWORD", + "enabled": true, + "defaultAction": false, + "priority": 30, + "config": {} + }, + { + "alias": "UPDATE_PROFILE", + "name": "Update Profile", + "providerId": "UPDATE_PROFILE", + "enabled": true, + "defaultAction": false, + "priority": 40, + "config": {} + }, + { + "alias": "VERIFY_EMAIL", + "name": "Verify Email", + "providerId": "VERIFY_EMAIL", + "enabled": true, + "defaultAction": false, + "priority": 50, + "config": {} + }, + { + "alias": "delete_account", + "name": "Delete Account", + "providerId": "delete_account", + "enabled": false, + "defaultAction": false, + "priority": 60, + "config": {} + }, + { + "alias": "webauthn-register", + "name": "Webauthn Register", + "providerId": "webauthn-register", + "enabled": true, + "defaultAction": false, + "priority": 70, + "config": {} + }, + { + "alias": "webauthn-register-passwordless", + "name": "Webauthn Register Passwordless", + "providerId": "webauthn-register-passwordless", + "enabled": true, + "defaultAction": false, + "priority": 80, + "config": {} + }, + { + "alias": "update_user_locale", + "name": "Update User Locale", + "providerId": "update_user_locale", + "enabled": true, + "defaultAction": false, + "priority": 1000, + "config": {} + } + ], + "browserFlow": "browser", + "registrationFlow": "registration", + "directGrantFlow": "direct grant", + "resetCredentialsFlow": "reset credentials", + "clientAuthenticationFlow": "clients", + "dockerAuthenticationFlow": "docker auth", + "attributes": { + "cibaBackchannelTokenDeliveryMode": "poll", + "cibaAuthRequestedUserHint": "login_hint", + "oauth2DevicePollingInterval": "5", + "clientOfflineSessionMaxLifespan": "0", + "clientSessionIdleTimeout": "0", + "clientOfflineSessionIdleTimeout": "0", + "cibaInterval": "5", + "realmReusableOtpCode": "false", + "cibaExpiresIn": "120", + "oauth2DeviceCodeLifespan": "600", + "parRequestUriLifespan": "60", + "clientSessionMaxLifespan": "0", + "adminEventsExpiration": "" + }, + "keycloakVersion": "20.0.5", + "userManagedAccessAllowed": false, + "clientProfiles": { + "profiles": [] + }, + "clientPolicies": { + "policies": [] + } +} \ No newline at end of file diff --git a/resources/projects/coolstore/src/main/java/com/redhat/coolstore/utils/Producers.java b/resources/projects/coolstore/src/main/java/com/redhat/coolstore/utils/Producers.java new file mode 100644 index 00000000..7ea8eedb --- /dev/null +++ b/resources/projects/coolstore/src/main/java/com/redhat/coolstore/utils/Producers.java @@ -0,0 +1,17 @@ +package com.redhat.coolstore.utils; + +import jakarta.enterprise.inject.Produces; +import jakarta.enterprise.inject.spi.InjectionPoint; +import java.util.logging.Logger; + + +public class Producers { + + Logger log = Logger.getLogger(Producers.class.getName()); + + @Produces + public Logger produceLog(InjectionPoint injectionPoint) { + return Logger.getLogger(injectionPoint.getMember().getDeclaringClass().getName()); + } + +} diff --git a/resources/projects/coolstore/src/main/java/com/redhat/coolstore/utils/Transformers.java b/resources/projects/coolstore/src/main/java/com/redhat/coolstore/utils/Transformers.java new file mode 100644 index 00000000..5c445c96 --- /dev/null +++ b/resources/projects/coolstore/src/main/java/com/redhat/coolstore/utils/Transformers.java @@ -0,0 +1,100 @@ +package com.redhat.coolstore.utils; + +import com.redhat.coolstore.model.CatalogItemEntity; +import com.redhat.coolstore.model.Order; +import com.redhat.coolstore.model.OrderItem; +import com.redhat.coolstore.model.Product; +import com.redhat.coolstore.model.ShoppingCart; +import java.io.StringReader; +import java.io.StringWriter; +import java.util.ArrayList; +import java.util.List; +import jakarta.json.Json; +import jakarta.json.JsonArray; +import jakarta.json.JsonArrayBuilder; +import jakarta.json.JsonObject; +import jakarta.json.JsonReader; +import jakarta.json.JsonWriter; + +import java.util.concurrent.ThreadLocalRandom; +import java.util.logging.Logger; + +/** + * Created by tqvarnst on 2017-03-30. + */ +public class Transformers { + + private static final String[] RANDOM_NAMES = {"Sven Karlsson","Johan Andersson","Karl Svensson","Anders Johansson","Stefan Olson","Martin Ericsson"}; + private static final String[] RANDOM_EMAILS = {"sven@gmail.com","johan@gmail.com","karl@gmail.com","anders@gmail.com","stefan@gmail.com","martin@gmail.com"}; + + private static Logger log = Logger.getLogger(Transformers.class.getName()); + + public static Product toProduct(CatalogItemEntity entity) { + Product prod = new Product(); + prod.setItemId(entity.getItemId()); + prod.setName(entity.getName()); + prod.setDesc(entity.getDesc()); + prod.setPrice(entity.getPrice()); + if (entity.getInventory() != null) { + prod.setLocation(entity.getInventory().getLocation()); + prod.setLink(entity.getInventory().getLink()); + prod.setQuantity(entity.getInventory().getQuantity()); + } else { + log.warning("Inventory for " + entity.getName() + "[" + entity.getItemId()+ "] unknown and missing"); + } + return prod; + } + + public static String shoppingCartToJson(ShoppingCart cart) { + JsonArrayBuilder cartItems = Json.createArrayBuilder(); + cart.getShoppingCartItemList().forEach(item -> { + cartItems.add(Json.createObjectBuilder() + .add("productSku",item.getProduct().getItemId()) + .add("quantity",item.getQuantity()) + ); + }); + + int randomNameAndEmailIndex = ThreadLocalRandom.current().nextInt(RANDOM_NAMES.length); + + JsonObject jsonObject = Json.createObjectBuilder() + .add("orderValue", Double.valueOf(cart.getCartTotal())) + .add("customerName",RANDOM_NAMES[randomNameAndEmailIndex]) + .add("customerEmail",RANDOM_EMAILS[randomNameAndEmailIndex]) + .add("retailPrice", cart.getShoppingCartItemList().stream().mapToDouble(i -> i.getQuantity()*i.getPrice()).sum()) + .add("discount", Double.valueOf(cart.getCartItemPromoSavings())) + .add("shippingFee", Double.valueOf(cart.getShippingTotal())) + .add("shippingDiscount", Double.valueOf(cart.getShippingPromoSavings())) + .add("items",cartItems) + .build(); + StringWriter w = new StringWriter(); + try (JsonWriter writer = Json.createWriter(w)) { + writer.write(jsonObject); + } + return w.toString(); + } + + public static Order jsonToOrder(String json) { + JsonReader jsonReader = Json.createReader(new StringReader(json)); + JsonObject rootObject = jsonReader.readObject(); + Order order = new Order(); + order.setCustomerName(rootObject.getString("customerName")); + order.setCustomerEmail(rootObject.getString("customerEmail")); + order.setOrderValue(rootObject.getJsonNumber("orderValue").doubleValue()); + order.setRetailPrice(rootObject.getJsonNumber("retailPrice").doubleValue()); + order.setDiscount(rootObject.getJsonNumber("discount").doubleValue()); + order.setShippingFee(rootObject.getJsonNumber("shippingFee").doubleValue()); + order.setShippingDiscount(rootObject.getJsonNumber("shippingDiscount").doubleValue()); + JsonArray jsonItems = rootObject.getJsonArray("items"); + List items = new ArrayList(jsonItems.size()); + for (JsonObject jsonItem : jsonItems.getValuesAs(JsonObject.class)) { + OrderItem oi = new OrderItem(); + oi.setProductId(jsonItem.getString("productSku")); + oi.setQuantity(jsonItem.getInt("quantity")); + items.add(oi); + } + order.setItemList(items); + return order; + } + + +} diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/app/app.js b/resources/projects/coolstore/src/main/resources/META-INF/resources/app/app.js new file mode 100644 index 00000000..7be452f8 --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/app/app.js @@ -0,0 +1,113 @@ +'use strict'; + +var module = angular.module('app', ['ngRoute', 'patternfly']), auth = { + loggedIn: false, + ssoEnabled: false, + logout: function () { + } +}; + + +module.factory('Auth', function () { + return auth; +}); + +angular.element(document).ready(function () { + + // get config + var initInjector = angular.injector(["ng"]); + var $http = initInjector.get("$http"); + + $http.get("coolstore.json").then(function (response) { + module.constant("COOLSTORE_CONFIG", response.data); + if (!response.data.SSO_ENABLED) { + angular.bootstrap(document, ["app"], { + strictDi: true + }); + } else { + auth.ssoEnabled = true; + var keycloakAuth = new Keycloak('keycloak.json'); + auth.loggedIn = false; + + auth.login = function () { + keycloakAuth.login({ + loginHint: 'appuser' + }); + }; + + keycloakAuth.init({ + onLoad: 'check-sso' + }).success(function () { + if (keycloakAuth.authenticated) { + keycloakAuth.loadUserInfo().success(function (userInfo) { + auth.userInfo = userInfo; + angular.bootstrap(document, ["app"], { + strictDi: true + }); + auth.loggedIn = true; + auth.authz = keycloakAuth; + auth.logout = function () { + auth.loggedIn = false; + auth.authz = null; + auth.userInfo = {}; + keycloakAuth.logout(); + }; + }).error(function () { + angular.bootstrap(document, ["app"], { + strictDi: true + }); + + }); + } else { + angular.bootstrap(document, ["app"], { + strictDi: true + }); + } + }).error(function (msg) { + angular.bootstrap(document, ["app"], { + strictDi: true + }); + }); + } + }); +}); + + +// setup interceptors +module.config(['$httpProvider', function ($httpProvider) { + + $httpProvider.interceptors.push(['$q', 'Auth', function ($q, Auth) { + return { + 'request': function (config) { + var deferred = $q.defer(); + if (Auth.authz && Auth.authz.token) { + Auth.authz.updateToken(5).success(function () { + config.headers = config.headers || {}; + config.headers.Authorization = 'Bearer ' + Auth.authz.token; + config.withCredentials = true; + deferred.resolve(config); + }).error(function () { + deferred.reject('Failed to refresh token'); + }); + } else { + config.withCredentials = false; + deferred.resolve(config); + } + return deferred.promise; + + }, + 'responseError': function (response) { + if (response.status == 401) { + auth.logout(); + } + return $q.reject(response); + + } + } + }]); +}]); + + + + + diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/app/controllers/controllers.js b/resources/projects/coolstore/src/main/resources/META-INF/resources/app/controllers/controllers.js new file mode 100644 index 00000000..c1ed164b --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/app/controllers/controllers.js @@ -0,0 +1,163 @@ +'use strict'; + +angular.module('app') + + .controller("HomeController", + ['$scope', '$http', '$filter', 'Notifications', 'cart', 'catalog', 'Auth', + function ($scope, $http, $filter, Notifications, cart, catalog, $auth) { + $scope.products = []; + $scope.addToCart = function (item) { + cart.addToCart(item.product, parseInt(item.quantity)).then(function (data) { + Notifications.success("Added! Your total is " + $filter('currency')(data.cartTotal)); + }, function (err) { + Notifications.error("Error adding to cart: " + err.statusText); + }); + }; + + $scope.isLoggedIn = function () { + return $auth.loggedIn; + }; + $scope.ssoEnabled = function () { + return $auth.ssoEnabled; + }; + + $scope.login = function () { + $auth.login(); + }; + + + // initialize products + catalog.getProducts().then(function (data) { + $scope.products = data.map(function (el) { + return { + quantity: "1", + product: el + } + }) + }, function (err) { + Notifications.error("Error retrieving products: " + err.statusText); + }); + + + }]) + + .controller("CartController", + ['$scope', '$http', 'Notifications', 'cart', 'Auth', + function ($scope, $http, Notifications, cart, $auth) { + + function reset() { + $scope.cart = cart.getCart(); + $scope.items = $scope.cart.shoppingCartItemList; + + $scope.subtotal = 0; + $scope.cart.shoppingCartItemList.forEach(function (item) { + $scope.subtotal += (item.quantity * item.product.price); + }); + } + + $scope.config = { + selectItems: false, + multiSelect: false, + dblClick: false, + showSelectBox: false + }; + + function performAction(action, item) { + cart.removeFromCart(item.product, item.quantity).then(function (newCart) { + reset(); + }, function (err) { + Notifications.error("Error removing from cart: " + err.statusText); + }); + }; + + $scope.actionButtons = [ + { + name: 'Remove', + title: 'Remove', + actionFn: performAction + } + ]; + + + $scope.$watch(function () { + return cart.getCart(); + }, function (newValue) { + reset(); + }); + + $scope.$watch(function () { + return $auth.userInfo; + }, function (newValue) { + cart.reset(); + }); + + $scope.checkout = function () { + cart.checkout().then(function (cartData) { + }, function (err) { + Notifications.error("Error checking out: " + err.statusText); + }); + }; + + $scope.isLoggedIn = function () { + return $auth.loggedIn; + }; + $scope.ssoEnabled = function () { + return $auth.ssoEnabled; + }; + + reset(); + }]) + + .controller("HeaderController", + ['$scope', '$location', '$http', 'Notifications', 'cart', 'Auth', + function ($scope, $location, $http, Notifications, cart, $auth) { + $scope.userInfo = $auth.userInfo; + + $scope.cartTotal = 0.0; + $scope.itemCount = 0; + + $scope.isLoggedIn = function () { + return $auth.loggedIn; + }; + + $scope.login = function () { + $auth.login(); + }; + $scope.logout = function () { + $auth.logout(); + }; + $scope.isLoggedIn = function () { + return $auth.loggedIn; + }; + $scope.ssoEnabled = function () { + return $auth.ssoEnabled; + }; + $scope.profile = function () { + $auth.authz.accountManagement(); + }; + $scope.$watch(function () { + return cart.getCart().cartTotal || 0.0; + }, function (newValue) { + $scope.cartTotal = newValue; + }); + + $scope.$watch(function () { + var totalItems = 0; + cart.getCart().shoppingCartItemList.forEach(function (el) { + totalItems += el.quantity; + }); + return totalItems; + }, function (newValue) { + $scope.itemCount = newValue; + }); + + $scope.$watch(function () { + return $auth.userInfo; + }, function (newValue) { + $scope.userInfo = newValue; + }); + + $scope.isActive = function (loc) { + return loc === $location.path(); + } + }]); diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/app/css/coolstore.css b/resources/projects/coolstore/src/main/resources/META-INF/resources/app/css/coolstore.css new file mode 100644 index 00000000..25ee0570 --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/app/css/coolstore.css @@ -0,0 +1,13 @@ +.media img { + height: 100px; +} + +.p-t-8 { + padding-top: 8px !important; +} + +[ng-click], +[data-ng-click], +[x-ng-click] { + cursor: pointer; +} \ No newline at end of file diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/app/directives/header.js b/resources/projects/coolstore/src/main/resources/META-INF/resources/app/directives/header.js new file mode 100644 index 00000000..83906af0 --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/app/directives/header.js @@ -0,0 +1,11 @@ +'use strict'; + + +angular.module('app').directive('header', function() { + return { + restrict: 'A', + replace: true, + templateUrl: 'partials/header.html', + controller: 'HeaderController' + } +}); diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/app/imgs/16 oz. Vortex Tumbler.jpg b/resources/projects/coolstore/src/main/resources/META-INF/resources/app/imgs/16 oz. Vortex Tumbler.jpg new file mode 100644 index 0000000000000000000000000000000000000000..08218f92111675c8383e01026a39c94fcbbbbdca GIT binary patch literal 5041 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 literal 0 HcmV?d00001 diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/app/imgs/Forge Laptop Sticker.jpg b/resources/projects/coolstore/src/main/resources/META-INF/resources/app/imgs/Forge Laptop Sticker.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bdca80373c95009934a8cceef9b9ec5834841fa2 GIT binary patch literal 95775 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�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 literal 0 HcmV?d00001 diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/app/imgs/Oculus Rift.jpg b/resources/projects/coolstore/src/main/resources/META-INF/resources/app/imgs/Oculus Rift.jpg new file mode 100644 index 0000000000000000000000000000000000000000..eac26f2e2fa8c538c0c68eebac963972c17406b0 GIT binary patch literal 9046 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 J&H^Kj{THwS{JQ`E literal 0 HcmV?d00001 diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/app/imgs/Ogio Caliber Polo.jpg b/resources/projects/coolstore/src/main/resources/META-INF/resources/app/imgs/Ogio Caliber Polo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fda0e3fa044ad66dd3b2f4dfc32e8380f25372e9 GIT binary patch literal 142342 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

InSCO2%uSl1stfSA(K*>9)4ia3$| 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 BXu<#h literal 0 HcmV?d00001 diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/app/imgs/Patagonia Refugio pack 28L.jpg b/resources/projects/coolstore/src/main/resources/META-INF/resources/app/imgs/Patagonia Refugio pack 28L.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8c9065fd6e68ca1b54fcb6029a0fe8cebb244f72 GIT binary patch literal 18921 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 z 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 literal 0 HcmV?d00001 diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/app/imgs/Pebble Smart Watch.jpg b/resources/projects/coolstore/src/main/resources/META-INF/resources/app/imgs/Pebble Smart Watch.jpg new file mode 100644 index 0000000000000000000000000000000000000000..98d48f8c0eebe8ecd8359299bc6c203c63633691 GIT binary patch literal 11740 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 z

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

du)az2vYA0Vlr6{!Q1L)+ZX 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 literal 0 HcmV?d00001 diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/app/imgs/Red Fedora.jpg b/resources/projects/coolstore/src/main/resources/META-INF/resources/app/imgs/Red Fedora.jpg new file mode 100644 index 0000000000000000000000000000000000000000..aeb5968deeece2d89a6d7a2171fd4e54d3c82c02 GIT binary patch literal 12700 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 b>Zws9Oj>2Q`bDTDth`=K-no@2&rAOY?BLb$ literal 0 HcmV?d00001 diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/app/imgs/Red Hat Impact T-shirt.jpg b/resources/projects/coolstore/src/main/resources/META-INF/resources/app/imgs/Red Hat Impact T-shirt.jpg new file mode 100644 index 0000000000000000000000000000000000000000..68f017cc8199068f3c0910513800314d8836d7b8 GIT binary patch literal 185876 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

dVTSc$RkJ} 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

xb+wW}tQ%tR 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

5Omfa=X)jb*hA6DZ3C)4Kt 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]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 AQ2+n{ literal 0 HcmV?d00001 diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/app/imgs/Solid Performance Polo.jpg b/resources/projects/coolstore/src/main/resources/META-INF/resources/app/imgs/Solid Performance Polo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..eba0ec0c97c5c1a988677d7a515af2705f019d88 GIT binary patch literal 16962 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 literal 0 HcmV?d00001 diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/app/imgs/Women RHEL 8 t-shirt.jpg b/resources/projects/coolstore/src/main/resources/META-INF/resources/app/imgs/Women RHEL 8 t-shirt.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b90cf65810bffc670e9d9e79398dbcf8a5cc312a GIT binary patch literal 19963 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 literal 0 HcmV?d00001 diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/app/imgs/logo.png b/resources/projects/coolstore/src/main/resources/META-INF/resources/app/imgs/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..1b2999a8d584404dcfa92a0bea85ebe4bc4f37e1 GIT binary patch literal 5104 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 literal 0 HcmV?d00001 diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/app/routes/routes.js b/resources/projects/coolstore/src/main/resources/META-INF/resources/app/routes/routes.js new file mode 100644 index 00000000..39cdfbe2 --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/app/routes/routes.js @@ -0,0 +1,13 @@ +'use strict'; + +angular.module('app').config([ '$routeProvider', function($routeProvider) { + $routeProvider.when('/', { + templateUrl : 'partials/home.html', + controller : 'HomeController' + }).when('/cart', { + templateUrl : 'partials/cart.html', + controller : 'CartController' + }).otherwise({ + redirectTo : '/' + }); +} ]); diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/app/services/cart.js b/resources/projects/coolstore/src/main/resources/META-INF/resources/app/services/cart.js new file mode 100644 index 00000000..f2b1b52f --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/app/services/cart.js @@ -0,0 +1,126 @@ +'use strict'; + +angular.module("app") + +.factory('cart', ['$http', '$q', 'COOLSTORE_CONFIG', 'Auth', '$location', function($http, $q, COOLSTORE_CONFIG, $auth, $location) { + var factory = {}, cart, products, cartId, baseUrl; + + if(!!COOLSTORE_CONFIG.MONOLITH) { + baseUrl='/services/cart'; + } else { + if ($location.protocol() === 'https') { + baseUrl = (COOLSTORE_CONFIG.SECURE_API_ENDPOINT.startsWith("https://") ? COOLSTORE_CONFIG.SECURE_API_ENDPOINT : "https://" + COOLSTORE_CONFIG.SECURE_API_ENDPOINT + '.' + $location.host().replace(/^.*?\.(.*)/g,"$1")) + '/services/cart'; + } else { + baseUrl = (COOLSTORE_CONFIG.API_ENDPOINT.startsWith("http://") ? COOLSTORE_CONFIG.API_ENDPOINT : "http://" + COOLSTORE_CONFIG.API_ENDPOINT + '.' + $location.host().replace(/^.*?\.(.*)/g,"$1")) + '/services/cart'; + } + } + + factory.checkout = function() { + var deferred = $q.defer(); + $http({ + method: 'POST', + url: baseUrl + '/checkout/' + cartId + }).then(function(resp) { + cart = resp.data; + deferred.resolve(resp.data); + }, function(err) { + deferred.reject(err); + }); + return deferred.promise; + }; + + factory.reset = function() { + cart = { + shoppingCartItemList: [] + }; + var tmpId = localStorage.getItem('cartId'); + var authId = $auth.userInfo ? $auth.userInfo.sub : null; + + if (tmpId && authId) { + // transfer cart + cartId = authId; + this.setCart(tmpId).then(function(result) { + localStorage.removeItem('cartId'); + }, function(err) { + console.log("could not transfer cart " + tmpId + " to cart " + authId + ": " + err); + }); + return; + } + + if (tmpId && !authId) { + cartId = tmpId; + } + + if (!tmpId && authId) { + cartId = authId; + } + + if (!tmpId && !authId) { + tmpId = 'id-' + Math.random(); + localStorage.setItem('cartId', tmpId); + cartId = tmpId; + } + + cart.shoppingCartItemList = []; + $http({ + method: 'GET', + url: baseUrl + '/' + cartId + }).then(function(resp) { + cart = resp.data; + }, function(err) { + }); + + }; + + factory.getCart = function() { + return cart; + }; + + factory.removeFromCart = function(product, quantity) { + var deferred = $q.defer(); + $http({ + method: 'DELETE', + url: baseUrl + '/' + cartId + '/' + product.itemId + '/' + quantity + }).then(function(resp) { + cart = resp.data; + deferred.resolve(resp.data); + }, function(err) { + deferred.reject(err); + }); + return deferred.promise; + + }; + + factory.setCart = function(id) { + var deferred = $q.defer(); + $http({ + method: 'POST', + url: baseUrl + '/' + cartId + '/' + id + }).then(function(resp) { + cart = resp.data; + deferred.resolve(resp.data); + }, function(err) { + deferred.reject(err); + }); + return deferred.promise; + + }; + + factory.addToCart = function(product, quantity) { + var deferred = $q.defer(); + $http({ + method: 'POST', + url: baseUrl + '/' + cartId + '/' + product.itemId + '/' + quantity + }).then(function(resp) { + cart = resp.data; + deferred.resolve(resp.data); + }, function(err) { + deferred.reject(err); + }); + return deferred.promise; + + }; + + factory.reset(); + return factory; +}]); diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/app/services/catalog.js b/resources/projects/coolstore/src/main/resources/META-INF/resources/app/services/catalog.js new file mode 100644 index 00000000..59fabe17 --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/app/services/catalog.js @@ -0,0 +1,37 @@ +'use strict'; + +angular.module("app") + +.factory('catalog', ['$http', '$q', 'COOLSTORE_CONFIG', 'Auth', '$location', function($http, $q, COOLSTORE_CONFIG, $auth, $location) { + var factory = {}, products, baseUrl; + + if(!!COOLSTORE_CONFIG.MONOLITH) { + baseUrl='/services/products'; + } else { + if ($location.protocol() === 'https') { + baseUrl = (COOLSTORE_CONFIG.SECURE_API_ENDPOINT.startsWith("https://") ? COOLSTORE_CONFIG.SECURE_API_ENDPOINT : "https://" + COOLSTORE_CONFIG.SECURE_API_ENDPOINT + '.' + $location.host().replace(/^.*?\.(.*)/g,"$1")) + '/services/products'; + } else { + baseUrl = (COOLSTORE_CONFIG.API_ENDPOINT.startsWith("http://") ? COOLSTORE_CONFIG.API_ENDPOINT : "http://" + COOLSTORE_CONFIG.API_ENDPOINT + '.' + $location.host().replace(/^.*?\.(.*)/g,"$1")) + '/services/products'; + } + } + + factory.getProducts = function() { + var deferred = $q.defer(); + if (products) { + deferred.resolve(products); + } else { + $http({ + method: 'GET', + url: baseUrl + }).then(function(resp) { + products = resp.data; + deferred.resolve(resp.data); + }, function(err) { + deferred.reject(err); + }); + } + return deferred.promise; + }; + + return factory; +}]); diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-animate/.bower.json b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-animate/.bower.json new file mode 100644 index 00000000..bd908328 --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-animate/.bower.json @@ -0,0 +1,20 @@ +{ + "name": "angular-animate", + "version": "1.5.11", + "license": "MIT", + "main": "./angular-animate.js", + "ignore": [], + "dependencies": { + "angular": "1.5.11" + }, + "homepage": "https://github.com/angular/bower-angular-animate", + "_release": "1.5.11", + "_resolution": { + "type": "version", + "tag": "v1.5.11", + "commit": "ac17971fdc62d7ea816a079401084e6da2af3e3e" + }, + "_source": "https://github.com/angular/bower-angular-animate.git", + "_target": "1.3.0 - 1.5.*", + "_originalSource": "angular-animate" +} \ No newline at end of file diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-animate/LICENSE.md b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-animate/LICENSE.md new file mode 100644 index 00000000..2c395eef --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-animate/LICENSE.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016 Angular + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-animate/README.md b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-animate/README.md new file mode 100644 index 00000000..8313da67 --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-animate/README.md @@ -0,0 +1,68 @@ +# packaged angular-animate + +This repo is for distribution on `npm` and `bower`. The source for this module is in the +[main AngularJS repo](https://github.com/angular/angular.js/tree/master/src/ngAnimate). +Please file issues and pull requests against that repo. + +## Install + +You can install this package either with `npm` or with `bower`. + +### npm + +```shell +npm install angular-animate +``` + +Then add `ngAnimate` as a dependency for your app: + +```javascript +angular.module('myApp', [require('angular-animate')]); +``` + +### bower + +```shell +bower install angular-animate +``` + +Then add a ` +``` + +Then add `ngAnimate` as a dependency for your app: + +```javascript +angular.module('myApp', ['ngAnimate']); +``` + +## Documentation + +Documentation is available on the +[AngularJS docs site](http://docs.angularjs.org/api/ngAnimate). + +## License + +The MIT License + +Copyright (c) 2010-2015 Google, Inc. http://angularjs.org + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-animate/angular-animate.js b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-animate/angular-animate.js new file mode 100644 index 00000000..bbe4c3f6 --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-animate/angular-animate.js @@ -0,0 +1,4152 @@ +/** + * @license AngularJS v1.5.11 + * (c) 2010-2017 Google, Inc. http://angularjs.org + * License: MIT + */ +(function(window, angular) {'use strict'; + +var ELEMENT_NODE = 1; +var COMMENT_NODE = 8; + +var ADD_CLASS_SUFFIX = '-add'; +var REMOVE_CLASS_SUFFIX = '-remove'; +var EVENT_CLASS_PREFIX = 'ng-'; +var ACTIVE_CLASS_SUFFIX = '-active'; +var PREPARE_CLASS_SUFFIX = '-prepare'; + +var NG_ANIMATE_CLASSNAME = 'ng-animate'; +var NG_ANIMATE_CHILDREN_DATA = '$$ngAnimateChildren'; + +// Detect proper transitionend/animationend event names. +var CSS_PREFIX = '', TRANSITION_PROP, TRANSITIONEND_EVENT, ANIMATION_PROP, ANIMATIONEND_EVENT; + +// If unprefixed events are not supported but webkit-prefixed are, use the latter. +// Otherwise, just use W3C names, browsers not supporting them at all will just ignore them. +// Note: Chrome implements `window.onwebkitanimationend` and doesn't implement `window.onanimationend` +// but at the same time dispatches the `animationend` event and not `webkitAnimationEnd`. +// Register both events in case `window.onanimationend` is not supported because of that, +// do the same for `transitionend` as Safari is likely to exhibit similar behavior. +// Also, the only modern browser that uses vendor prefixes for transitions/keyframes is webkit +// therefore there is no reason to test anymore for other vendor prefixes: +// http://caniuse.com/#search=transition +if ((window.ontransitionend === undefined) && (window.onwebkittransitionend !== undefined)) { + CSS_PREFIX = '-webkit-'; + TRANSITION_PROP = 'WebkitTransition'; + TRANSITIONEND_EVENT = 'webkitTransitionEnd transitionend'; +} else { + TRANSITION_PROP = 'transition'; + TRANSITIONEND_EVENT = 'transitionend'; +} + +if ((window.onanimationend === undefined) && (window.onwebkitanimationend !== undefined)) { + CSS_PREFIX = '-webkit-'; + ANIMATION_PROP = 'WebkitAnimation'; + ANIMATIONEND_EVENT = 'webkitAnimationEnd animationend'; +} else { + ANIMATION_PROP = 'animation'; + ANIMATIONEND_EVENT = 'animationend'; +} + +var DURATION_KEY = 'Duration'; +var PROPERTY_KEY = 'Property'; +var DELAY_KEY = 'Delay'; +var TIMING_KEY = 'TimingFunction'; +var ANIMATION_ITERATION_COUNT_KEY = 'IterationCount'; +var ANIMATION_PLAYSTATE_KEY = 'PlayState'; +var SAFE_FAST_FORWARD_DURATION_VALUE = 9999; + +var ANIMATION_DELAY_PROP = ANIMATION_PROP + DELAY_KEY; +var ANIMATION_DURATION_PROP = ANIMATION_PROP + DURATION_KEY; +var TRANSITION_DELAY_PROP = TRANSITION_PROP + DELAY_KEY; +var TRANSITION_DURATION_PROP = TRANSITION_PROP + DURATION_KEY; + +var ngMinErr = angular.$$minErr('ng'); +function assertArg(arg, name, reason) { + if (!arg) { + throw ngMinErr('areq', 'Argument \'{0}\' is {1}', (name || '?'), (reason || 'required')); + } + return arg; +} + +function mergeClasses(a,b) { + if (!a && !b) return ''; + if (!a) return b; + if (!b) return a; + if (isArray(a)) a = a.join(' '); + if (isArray(b)) b = b.join(' '); + return a + ' ' + b; +} + +function packageStyles(options) { + var styles = {}; + if (options && (options.to || options.from)) { + styles.to = options.to; + styles.from = options.from; + } + return styles; +} + +function pendClasses(classes, fix, isPrefix) { + var className = ''; + classes = isArray(classes) + ? classes + : classes && isString(classes) && classes.length + ? classes.split(/\s+/) + : []; + forEach(classes, function(klass, i) { + if (klass && klass.length > 0) { + className += (i > 0) ? ' ' : ''; + className += isPrefix ? fix + klass + : klass + fix; + } + }); + return className; +} + +function removeFromArray(arr, val) { + var index = arr.indexOf(val); + if (val >= 0) { + arr.splice(index, 1); + } +} + +function stripCommentsFromElement(element) { + if (element instanceof jqLite) { + switch (element.length) { + case 0: + return element; + + case 1: + // there is no point of stripping anything if the element + // is the only element within the jqLite wrapper. + // (it's important that we retain the element instance.) + if (element[0].nodeType === ELEMENT_NODE) { + return element; + } + break; + + default: + return jqLite(extractElementNode(element)); + } + } + + if (element.nodeType === ELEMENT_NODE) { + return jqLite(element); + } +} + +function extractElementNode(element) { + if (!element[0]) return element; + for (var i = 0; i < element.length; i++) { + var elm = element[i]; + if (elm.nodeType === ELEMENT_NODE) { + return elm; + } + } +} + +function $$addClass($$jqLite, element, className) { + forEach(element, function(elm) { + $$jqLite.addClass(elm, className); + }); +} + +function $$removeClass($$jqLite, element, className) { + forEach(element, function(elm) { + $$jqLite.removeClass(elm, className); + }); +} + +function applyAnimationClassesFactory($$jqLite) { + return function(element, options) { + if (options.addClass) { + $$addClass($$jqLite, element, options.addClass); + options.addClass = null; + } + if (options.removeClass) { + $$removeClass($$jqLite, element, options.removeClass); + options.removeClass = null; + } + }; +} + +function prepareAnimationOptions(options) { + options = options || {}; + if (!options.$$prepared) { + var domOperation = options.domOperation || noop; + options.domOperation = function() { + options.$$domOperationFired = true; + domOperation(); + domOperation = noop; + }; + options.$$prepared = true; + } + return options; +} + +function applyAnimationStyles(element, options) { + applyAnimationFromStyles(element, options); + applyAnimationToStyles(element, options); +} + +function applyAnimationFromStyles(element, options) { + if (options.from) { + element.css(options.from); + options.from = null; + } +} + +function applyAnimationToStyles(element, options) { + if (options.to) { + element.css(options.to); + options.to = null; + } +} + +function mergeAnimationDetails(element, oldAnimation, newAnimation) { + var target = oldAnimation.options || {}; + var newOptions = newAnimation.options || {}; + + var toAdd = (target.addClass || '') + ' ' + (newOptions.addClass || ''); + var toRemove = (target.removeClass || '') + ' ' + (newOptions.removeClass || ''); + var classes = resolveElementClasses(element.attr('class'), toAdd, toRemove); + + if (newOptions.preparationClasses) { + target.preparationClasses = concatWithSpace(newOptions.preparationClasses, target.preparationClasses); + delete newOptions.preparationClasses; + } + + // noop is basically when there is no callback; otherwise something has been set + var realDomOperation = target.domOperation !== noop ? target.domOperation : null; + + extend(target, newOptions); + + // TODO(matsko or sreeramu): proper fix is to maintain all animation callback in array and call at last,but now only leave has the callback so no issue with this. + if (realDomOperation) { + target.domOperation = realDomOperation; + } + + if (classes.addClass) { + target.addClass = classes.addClass; + } else { + target.addClass = null; + } + + if (classes.removeClass) { + target.removeClass = classes.removeClass; + } else { + target.removeClass = null; + } + + oldAnimation.addClass = target.addClass; + oldAnimation.removeClass = target.removeClass; + + return target; +} + +function resolveElementClasses(existing, toAdd, toRemove) { + var ADD_CLASS = 1; + var REMOVE_CLASS = -1; + + var flags = {}; + existing = splitClassesToLookup(existing); + + toAdd = splitClassesToLookup(toAdd); + forEach(toAdd, function(value, key) { + flags[key] = ADD_CLASS; + }); + + toRemove = splitClassesToLookup(toRemove); + forEach(toRemove, function(value, key) { + flags[key] = flags[key] === ADD_CLASS ? null : REMOVE_CLASS; + }); + + var classes = { + addClass: '', + removeClass: '' + }; + + forEach(flags, function(val, klass) { + var prop, allow; + if (val === ADD_CLASS) { + prop = 'addClass'; + allow = !existing[klass] || existing[klass + REMOVE_CLASS_SUFFIX]; + } else if (val === REMOVE_CLASS) { + prop = 'removeClass'; + allow = existing[klass] || existing[klass + ADD_CLASS_SUFFIX]; + } + if (allow) { + if (classes[prop].length) { + classes[prop] += ' '; + } + classes[prop] += klass; + } + }); + + function splitClassesToLookup(classes) { + if (isString(classes)) { + classes = classes.split(' '); + } + + var obj = {}; + forEach(classes, function(klass) { + // sometimes the split leaves empty string values + // incase extra spaces were applied to the options + if (klass.length) { + obj[klass] = true; + } + }); + return obj; + } + + return classes; +} + +function getDomNode(element) { + return (element instanceof jqLite) ? element[0] : element; +} + +function applyGeneratedPreparationClasses(element, event, options) { + var classes = ''; + if (event) { + classes = pendClasses(event, EVENT_CLASS_PREFIX, true); + } + if (options.addClass) { + classes = concatWithSpace(classes, pendClasses(options.addClass, ADD_CLASS_SUFFIX)); + } + if (options.removeClass) { + classes = concatWithSpace(classes, pendClasses(options.removeClass, REMOVE_CLASS_SUFFIX)); + } + if (classes.length) { + options.preparationClasses = classes; + element.addClass(classes); + } +} + +function clearGeneratedClasses(element, options) { + if (options.preparationClasses) { + element.removeClass(options.preparationClasses); + options.preparationClasses = null; + } + if (options.activeClasses) { + element.removeClass(options.activeClasses); + options.activeClasses = null; + } +} + +function blockTransitions(node, duration) { + // we use a negative delay value since it performs blocking + // yet it doesn't kill any existing transitions running on the + // same element which makes this safe for class-based animations + var value = duration ? '-' + duration + 's' : ''; + applyInlineStyle(node, [TRANSITION_DELAY_PROP, value]); + return [TRANSITION_DELAY_PROP, value]; +} + +function blockKeyframeAnimations(node, applyBlock) { + var value = applyBlock ? 'paused' : ''; + var key = ANIMATION_PROP + ANIMATION_PLAYSTATE_KEY; + applyInlineStyle(node, [key, value]); + return [key, value]; +} + +function applyInlineStyle(node, styleTuple) { + var prop = styleTuple[0]; + var value = styleTuple[1]; + node.style[prop] = value; +} + +function concatWithSpace(a,b) { + if (!a) return b; + if (!b) return a; + return a + ' ' + b; +} + +var $$rAFSchedulerFactory = ['$$rAF', function($$rAF) { + var queue, cancelFn; + + function scheduler(tasks) { + // we make a copy since RAFScheduler mutates the state + // of the passed in array variable and this would be difficult + // to track down on the outside code + queue = queue.concat(tasks); + nextTick(); + } + + queue = scheduler.queue = []; + + /* waitUntilQuiet does two things: + * 1. It will run the FINAL `fn` value only when an uncanceled RAF has passed through + * 2. It will delay the next wave of tasks from running until the quiet `fn` has run. + * + * The motivation here is that animation code can request more time from the scheduler + * before the next wave runs. This allows for certain DOM properties such as classes to + * be resolved in time for the next animation to run. + */ + scheduler.waitUntilQuiet = function(fn) { + if (cancelFn) cancelFn(); + + cancelFn = $$rAF(function() { + cancelFn = null; + fn(); + nextTick(); + }); + }; + + return scheduler; + + function nextTick() { + if (!queue.length) return; + + var items = queue.shift(); + for (var i = 0; i < items.length; i++) { + items[i](); + } + + if (!cancelFn) { + $$rAF(function() { + if (!cancelFn) nextTick(); + }); + } + } +}]; + +/** + * @ngdoc directive + * @name ngAnimateChildren + * @restrict AE + * @element ANY + * + * @description + * + * ngAnimateChildren allows you to specify that children of this element should animate even if any + * of the children's parents are currently animating. By default, when an element has an active `enter`, `leave`, or `move` + * (structural) animation, child elements that also have an active structural animation are not animated. + * + * Note that even if `ngAnimateChildren` is set, no child animations will run when the parent element is removed from the DOM (`leave` animation). + * + * + * @param {string} ngAnimateChildren If the value is empty, `true` or `on`, + * then child animations are allowed. If the value is `false`, child animations are not allowed. + * + * @example + * + +
+ + +
+
+
+ List of items: +
Item {{item}}
+
+
+
+
+ + + .container.ng-enter, + .container.ng-leave { + transition: all ease 1.5s; + } + + .container.ng-enter, + .container.ng-leave-active { + opacity: 0; + } + + .container.ng-leave, + .container.ng-enter-active { + opacity: 1; + } + + .item { + background: firebrick; + color: #FFF; + margin-bottom: 10px; + } + + .item.ng-enter, + .item.ng-leave { + transition: transform 1.5s ease; + } + + .item.ng-enter { + transform: translateX(50px); + } + + .item.ng-enter-active { + transform: translateX(0); + } + + + angular.module('ngAnimateChildren', ['ngAnimate']) + .controller('MainController', function MainController() { + this.animateChildren = false; + this.enterElement = false; + }); + +
+ */ +var $$AnimateChildrenDirective = ['$interpolate', function($interpolate) { + return { + link: function(scope, element, attrs) { + var val = attrs.ngAnimateChildren; + if (isString(val) && val.length === 0) { //empty attribute + element.data(NG_ANIMATE_CHILDREN_DATA, true); + } else { + // Interpolate and set the value, so that it is available to + // animations that run right after compilation + setData($interpolate(val)(scope)); + attrs.$observe('ngAnimateChildren', setData); + } + + function setData(value) { + value = value === 'on' || value === 'true'; + element.data(NG_ANIMATE_CHILDREN_DATA, value); + } + } + }; +}]; + +/* exported $AnimateCssProvider */ + +var ANIMATE_TIMER_KEY = '$$animateCss'; + +/** + * @ngdoc service + * @name $animateCss + * @kind object + * + * @description + * The `$animateCss` service is a useful utility to trigger customized CSS-based transitions/keyframes + * from a JavaScript-based animation or directly from a directive. The purpose of `$animateCss` is NOT + * to side-step how `$animate` and ngAnimate work, but the goal is to allow pre-existing animations or + * directives to create more complex animations that can be purely driven using CSS code. + * + * Note that only browsers that support CSS transitions and/or keyframe animations are capable of + * rendering animations triggered via `$animateCss` (bad news for IE9 and lower). + * + * ## Usage + * Once again, `$animateCss` is designed to be used inside of a registered JavaScript animation that + * is powered by ngAnimate. It is possible to use `$animateCss` directly inside of a directive, however, + * any automatic control over cancelling animations and/or preventing animations from being run on + * child elements will not be handled by Angular. For this to work as expected, please use `$animate` to + * trigger the animation and then setup a JavaScript animation that injects `$animateCss` to trigger + * the CSS animation. + * + * The example below shows how we can create a folding animation on an element using `ng-if`: + * + * ```html + * + *
+ * This element will go BOOM + *
+ * + * ``` + * + * Now we create the **JavaScript animation** that will trigger the CSS transition: + * + * ```js + * ngModule.animation('.fold-animation', ['$animateCss', function($animateCss) { + * return { + * enter: function(element, doneFn) { + * var height = element[0].offsetHeight; + * return $animateCss(element, { + * from: { height:'0px' }, + * to: { height:height + 'px' }, + * duration: 1 // one second + * }); + * } + * } + * }]); + * ``` + * + * ## More Advanced Uses + * + * `$animateCss` is the underlying code that ngAnimate uses to power **CSS-based animations** behind the scenes. Therefore CSS hooks + * like `.ng-EVENT`, `.ng-EVENT-active`, `.ng-EVENT-stagger` are all features that can be triggered using `$animateCss` via JavaScript code. + * + * This also means that just about any combination of adding classes, removing classes, setting styles, dynamically setting a keyframe animation, + * applying a hardcoded duration or delay value, changing the animation easing or applying a stagger animation are all options that work with + * `$animateCss`. The service itself is smart enough to figure out the combination of options and examine the element styling properties in order + * to provide a working animation that will run in CSS. + * + * The example below showcases a more advanced version of the `.fold-animation` from the example above: + * + * ```js + * ngModule.animation('.fold-animation', ['$animateCss', function($animateCss) { + * return { + * enter: function(element, doneFn) { + * var height = element[0].offsetHeight; + * return $animateCss(element, { + * addClass: 'red large-text pulse-twice', + * easing: 'ease-out', + * from: { height:'0px' }, + * to: { height:height + 'px' }, + * duration: 1 // one second + * }); + * } + * } + * }]); + * ``` + * + * Since we're adding/removing CSS classes then the CSS transition will also pick those up: + * + * ```css + * /* since a hardcoded duration value of 1 was provided in the JavaScript animation code, + * the CSS classes below will be transitioned despite them being defined as regular CSS classes */ + * .red { background:red; } + * .large-text { font-size:20px; } + * + * /* we can also use a keyframe animation and $animateCss will make it work alongside the transition */ + * .pulse-twice { + * animation: 0.5s pulse linear 2; + * -webkit-animation: 0.5s pulse linear 2; + * } + * + * @keyframes pulse { + * from { transform: scale(0.5); } + * to { transform: scale(1.5); } + * } + * + * @-webkit-keyframes pulse { + * from { -webkit-transform: scale(0.5); } + * to { -webkit-transform: scale(1.5); } + * } + * ``` + * + * Given this complex combination of CSS classes, styles and options, `$animateCss` will figure everything out and make the animation happen. + * + * ## How the Options are handled + * + * `$animateCss` is very versatile and intelligent when it comes to figuring out what configurations to apply to the element to ensure the animation + * works with the options provided. Say for example we were adding a class that contained a keyframe value and we wanted to also animate some inline + * styles using the `from` and `to` properties. + * + * ```js + * var animator = $animateCss(element, { + * from: { background:'red' }, + * to: { background:'blue' } + * }); + * animator.start(); + * ``` + * + * ```css + * .rotating-animation { + * animation:0.5s rotate linear; + * -webkit-animation:0.5s rotate linear; + * } + * + * @keyframes rotate { + * from { transform: rotate(0deg); } + * to { transform: rotate(360deg); } + * } + * + * @-webkit-keyframes rotate { + * from { -webkit-transform: rotate(0deg); } + * to { -webkit-transform: rotate(360deg); } + * } + * ``` + * + * The missing pieces here are that we do not have a transition set (within the CSS code nor within the `$animateCss` options) and the duration of the animation is + * going to be detected from what the keyframe styles on the CSS class are. In this event, `$animateCss` will automatically create an inline transition + * style matching the duration detected from the keyframe style (which is present in the CSS class that is being added) and then prepare both the transition + * and keyframe animations to run in parallel on the element. Then when the animation is underway the provided `from` and `to` CSS styles will be applied + * and spread across the transition and keyframe animation. + * + * ## What is returned + * + * `$animateCss` works in two stages: a preparation phase and an animation phase. Therefore when `$animateCss` is first called it will NOT actually + * start the animation. All that is going on here is that the element is being prepared for the animation (which means that the generated CSS classes are + * added and removed on the element). Once `$animateCss` is called it will return an object with the following properties: + * + * ```js + * var animator = $animateCss(element, { ... }); + * ``` + * + * Now what do the contents of our `animator` variable look like: + * + * ```js + * { + * // starts the animation + * start: Function, + * + * // ends (aborts) the animation + * end: Function + * } + * ``` + * + * To actually start the animation we need to run `animation.start()` which will then return a promise that we can hook into to detect when the animation ends. + * If we choose not to run the animation then we MUST run `animation.end()` to perform a cleanup on the element (since some CSS classes and styles may have been + * applied to the element during the preparation phase). Note that all other properties such as duration, delay, transitions and keyframes are just properties + * and that changing them will not reconfigure the parameters of the animation. + * + * ### runner.done() vs runner.then() + * It is documented that `animation.start()` will return a promise object and this is true, however, there is also an additional method available on the + * runner called `.done(callbackFn)`. The done method works the same as `.finally(callbackFn)`, however, it does **not trigger a digest to occur**. + * Therefore, for performance reasons, it's always best to use `runner.done(callback)` instead of `runner.then()`, `runner.catch()` or `runner.finally()` + * unless you really need a digest to kick off afterwards. + * + * Keep in mind that, to make this easier, ngAnimate has tweaked the JS animations API to recognize when a runner instance is returned from $animateCss + * (so there is no need to call `runner.done(doneFn)` inside of your JavaScript animation code). + * Check the {@link ngAnimate.$animateCss#usage animation code above} to see how this works. + * + * @param {DOMElement} element the element that will be animated + * @param {object} options the animation-related options that will be applied during the animation + * + * * `event` - The DOM event (e.g. enter, leave, move). When used, a generated CSS class of `ng-EVENT` and `ng-EVENT-active` will be applied + * to the element during the animation. Multiple events can be provided when spaces are used as a separator. (Note that this will not perform any DOM operation.) + * * `structural` - Indicates that the `ng-` prefix will be added to the event class. Setting to `false` or omitting will turn `ng-EVENT` and + * `ng-EVENT-active` in `EVENT` and `EVENT-active`. Unused if `event` is omitted. + * * `easing` - The CSS easing value that will be applied to the transition or keyframe animation (or both). + * * `transitionStyle` - The raw CSS transition style that will be used (e.g. `1s linear all`). + * * `keyframeStyle` - The raw CSS keyframe animation style that will be used (e.g. `1s my_animation linear`). + * * `from` - The starting CSS styles (a key/value object) that will be applied at the start of the animation. + * * `to` - The ending CSS styles (a key/value object) that will be applied across the animation via a CSS transition. + * * `addClass` - A space separated list of CSS classes that will be added to the element and spread across the animation. + * * `removeClass` - A space separated list of CSS classes that will be removed from the element and spread across the animation. + * * `duration` - A number value representing the total duration of the transition and/or keyframe (note that a value of 1 is 1000ms). If a value of `0` + * is provided then the animation will be skipped entirely. + * * `delay` - A number value representing the total delay of the transition and/or keyframe (note that a value of 1 is 1000ms). If a value of `true` is + * used then whatever delay value is detected from the CSS classes will be mirrored on the elements styles (e.g. by setting delay true then the style value + * of the element will be `transition-delay: DETECTED_VALUE`). Using `true` is useful when you want the CSS classes and inline styles to all share the same + * CSS delay value. + * * `stagger` - A numeric time value representing the delay between successively animated elements + * ({@link ngAnimate#css-staggering-animations Click here to learn how CSS-based staggering works in ngAnimate.}) + * * `staggerIndex` - The numeric index representing the stagger item (e.g. a value of 5 is equal to the sixth item in the stagger; therefore when a + * `stagger` option value of `0.1` is used then there will be a stagger delay of `600ms`) + * * `applyClassesEarly` - Whether or not the classes being added or removed will be used when detecting the animation. This is set by `$animate` when enter/leave/move animations are fired to ensure that the CSS classes are resolved in time. (Note that this will prevent any transitions from occurring on the classes being added and removed.) + * * `cleanupStyles` - Whether or not the provided `from` and `to` styles will be removed once + * the animation is closed. This is useful for when the styles are used purely for the sake of + * the animation and do not have a lasting visual effect on the element (e.g. a collapse and open animation). + * By default this value is set to `false`. + * + * @return {object} an object with start and end methods and details about the animation. + * + * * `start` - The method to start the animation. This will return a `Promise` when called. + * * `end` - This method will cancel the animation and remove all applied CSS classes and styles. + */ +var ONE_SECOND = 1000; + +var ELAPSED_TIME_MAX_DECIMAL_PLACES = 3; +var CLOSING_TIME_BUFFER = 1.5; + +var DETECT_CSS_PROPERTIES = { + transitionDuration: TRANSITION_DURATION_PROP, + transitionDelay: TRANSITION_DELAY_PROP, + transitionProperty: TRANSITION_PROP + PROPERTY_KEY, + animationDuration: ANIMATION_DURATION_PROP, + animationDelay: ANIMATION_DELAY_PROP, + animationIterationCount: ANIMATION_PROP + ANIMATION_ITERATION_COUNT_KEY +}; + +var DETECT_STAGGER_CSS_PROPERTIES = { + transitionDuration: TRANSITION_DURATION_PROP, + transitionDelay: TRANSITION_DELAY_PROP, + animationDuration: ANIMATION_DURATION_PROP, + animationDelay: ANIMATION_DELAY_PROP +}; + +function getCssKeyframeDurationStyle(duration) { + return [ANIMATION_DURATION_PROP, duration + 's']; +} + +function getCssDelayStyle(delay, isKeyframeAnimation) { + var prop = isKeyframeAnimation ? ANIMATION_DELAY_PROP : TRANSITION_DELAY_PROP; + return [prop, delay + 's']; +} + +function computeCssStyles($window, element, properties) { + var styles = Object.create(null); + var detectedStyles = $window.getComputedStyle(element) || {}; + forEach(properties, function(formalStyleName, actualStyleName) { + var val = detectedStyles[formalStyleName]; + if (val) { + var c = val.charAt(0); + + // only numerical-based values have a negative sign or digit as the first value + if (c === '-' || c === '+' || c >= 0) { + val = parseMaxTime(val); + } + + // by setting this to null in the event that the delay is not set or is set directly as 0 + // then we can still allow for negative values to be used later on and not mistake this + // value for being greater than any other negative value. + if (val === 0) { + val = null; + } + styles[actualStyleName] = val; + } + }); + + return styles; +} + +function parseMaxTime(str) { + var maxValue = 0; + var values = str.split(/\s*,\s*/); + forEach(values, function(value) { + // it's always safe to consider only second values and omit `ms` values since + // getComputedStyle will always handle the conversion for us + if (value.charAt(value.length - 1) === 's') { + value = value.substring(0, value.length - 1); + } + value = parseFloat(value) || 0; + maxValue = maxValue ? Math.max(value, maxValue) : value; + }); + return maxValue; +} + +function truthyTimingValue(val) { + return val === 0 || val != null; +} + +function getCssTransitionDurationStyle(duration, applyOnlyDuration) { + var style = TRANSITION_PROP; + var value = duration + 's'; + if (applyOnlyDuration) { + style += DURATION_KEY; + } else { + value += ' linear all'; + } + return [style, value]; +} + +function createLocalCacheLookup() { + var cache = Object.create(null); + return { + flush: function() { + cache = Object.create(null); + }, + + count: function(key) { + var entry = cache[key]; + return entry ? entry.total : 0; + }, + + get: function(key) { + var entry = cache[key]; + return entry && entry.value; + }, + + put: function(key, value) { + if (!cache[key]) { + cache[key] = { total: 1, value: value }; + } else { + cache[key].total++; + } + } + }; +} + +// we do not reassign an already present style value since +// if we detect the style property value again we may be +// detecting styles that were added via the `from` styles. +// We make use of `isDefined` here since an empty string +// or null value (which is what getPropertyValue will return +// for a non-existing style) will still be marked as a valid +// value for the style (a falsy value implies that the style +// is to be removed at the end of the animation). If we had a simple +// "OR" statement then it would not be enough to catch that. +function registerRestorableStyles(backup, node, properties) { + forEach(properties, function(prop) { + backup[prop] = isDefined(backup[prop]) + ? backup[prop] + : node.style.getPropertyValue(prop); + }); +} + +var $AnimateCssProvider = ['$animateProvider', /** @this */ function($animateProvider) { + var gcsLookup = createLocalCacheLookup(); + var gcsStaggerLookup = createLocalCacheLookup(); + + this.$get = ['$window', '$$jqLite', '$$AnimateRunner', '$timeout', + '$$forceReflow', '$sniffer', '$$rAFScheduler', '$$animateQueue', + function($window, $$jqLite, $$AnimateRunner, $timeout, + $$forceReflow, $sniffer, $$rAFScheduler, $$animateQueue) { + + var applyAnimationClasses = applyAnimationClassesFactory($$jqLite); + + var parentCounter = 0; + function gcsHashFn(node, extraClasses) { + var KEY = '$$ngAnimateParentKey'; + var parentNode = node.parentNode; + var parentID = parentNode[KEY] || (parentNode[KEY] = ++parentCounter); + return parentID + '-' + node.getAttribute('class') + '-' + extraClasses; + } + + function computeCachedCssStyles(node, className, cacheKey, properties) { + var timings = gcsLookup.get(cacheKey); + + if (!timings) { + timings = computeCssStyles($window, node, properties); + if (timings.animationIterationCount === 'infinite') { + timings.animationIterationCount = 1; + } + } + + // we keep putting this in multiple times even though the value and the cacheKey are the same + // because we're keeping an internal tally of how many duplicate animations are detected. + gcsLookup.put(cacheKey, timings); + return timings; + } + + function computeCachedCssStaggerStyles(node, className, cacheKey, properties) { + var stagger; + + // if we have one or more existing matches of matching elements + // containing the same parent + CSS styles (which is how cacheKey works) + // then staggering is possible + if (gcsLookup.count(cacheKey) > 0) { + stagger = gcsStaggerLookup.get(cacheKey); + + if (!stagger) { + var staggerClassName = pendClasses(className, '-stagger'); + + $$jqLite.addClass(node, staggerClassName); + + stagger = computeCssStyles($window, node, properties); + + // force the conversion of a null value to zero incase not set + stagger.animationDuration = Math.max(stagger.animationDuration, 0); + stagger.transitionDuration = Math.max(stagger.transitionDuration, 0); + + $$jqLite.removeClass(node, staggerClassName); + + gcsStaggerLookup.put(cacheKey, stagger); + } + } + + return stagger || {}; + } + + var rafWaitQueue = []; + function waitUntilQuiet(callback) { + rafWaitQueue.push(callback); + $$rAFScheduler.waitUntilQuiet(function() { + gcsLookup.flush(); + gcsStaggerLookup.flush(); + + // DO NOT REMOVE THIS LINE OR REFACTOR OUT THE `pageWidth` variable. + // PLEASE EXAMINE THE `$$forceReflow` service to understand why. + var pageWidth = $$forceReflow(); + + // we use a for loop to ensure that if the queue is changed + // during this looping then it will consider new requests + for (var i = 0; i < rafWaitQueue.length; i++) { + rafWaitQueue[i](pageWidth); + } + rafWaitQueue.length = 0; + }); + } + + function computeTimings(node, className, cacheKey) { + var timings = computeCachedCssStyles(node, className, cacheKey, DETECT_CSS_PROPERTIES); + var aD = timings.animationDelay; + var tD = timings.transitionDelay; + timings.maxDelay = aD && tD + ? Math.max(aD, tD) + : (aD || tD); + timings.maxDuration = Math.max( + timings.animationDuration * timings.animationIterationCount, + timings.transitionDuration); + + return timings; + } + + return function init(element, initialOptions) { + // all of the animation functions should create + // a copy of the options data, however, if a + // parent service has already created a copy then + // we should stick to using that + var options = initialOptions || {}; + if (!options.$$prepared) { + options = prepareAnimationOptions(copy(options)); + } + + var restoreStyles = {}; + var node = getDomNode(element); + if (!node + || !node.parentNode + || !$$animateQueue.enabled()) { + return closeAndReturnNoopAnimator(); + } + + var temporaryStyles = []; + var classes = element.attr('class'); + var styles = packageStyles(options); + var animationClosed; + var animationPaused; + var animationCompleted; + var runner; + var runnerHost; + var maxDelay; + var maxDelayTime; + var maxDuration; + var maxDurationTime; + var startTime; + var events = []; + + if (options.duration === 0 || (!$sniffer.animations && !$sniffer.transitions)) { + return closeAndReturnNoopAnimator(); + } + + var method = options.event && isArray(options.event) + ? options.event.join(' ') + : options.event; + + var isStructural = method && options.structural; + var structuralClassName = ''; + var addRemoveClassName = ''; + + if (isStructural) { + structuralClassName = pendClasses(method, EVENT_CLASS_PREFIX, true); + } else if (method) { + structuralClassName = method; + } + + if (options.addClass) { + addRemoveClassName += pendClasses(options.addClass, ADD_CLASS_SUFFIX); + } + + if (options.removeClass) { + if (addRemoveClassName.length) { + addRemoveClassName += ' '; + } + addRemoveClassName += pendClasses(options.removeClass, REMOVE_CLASS_SUFFIX); + } + + // there may be a situation where a structural animation is combined together + // with CSS classes that need to resolve before the animation is computed. + // However this means that there is no explicit CSS code to block the animation + // from happening (by setting 0s none in the class name). If this is the case + // we need to apply the classes before the first rAF so we know to continue if + // there actually is a detected transition or keyframe animation + if (options.applyClassesEarly && addRemoveClassName.length) { + applyAnimationClasses(element, options); + } + + var preparationClasses = [structuralClassName, addRemoveClassName].join(' ').trim(); + var fullClassName = classes + ' ' + preparationClasses; + var activeClasses = pendClasses(preparationClasses, ACTIVE_CLASS_SUFFIX); + var hasToStyles = styles.to && Object.keys(styles.to).length > 0; + var containsKeyframeAnimation = (options.keyframeStyle || '').length > 0; + + // there is no way we can trigger an animation if no styles and + // no classes are being applied which would then trigger a transition, + // unless there a is raw keyframe value that is applied to the element. + if (!containsKeyframeAnimation + && !hasToStyles + && !preparationClasses) { + return closeAndReturnNoopAnimator(); + } + + var cacheKey, stagger; + if (options.stagger > 0) { + var staggerVal = parseFloat(options.stagger); + stagger = { + transitionDelay: staggerVal, + animationDelay: staggerVal, + transitionDuration: 0, + animationDuration: 0 + }; + } else { + cacheKey = gcsHashFn(node, fullClassName); + stagger = computeCachedCssStaggerStyles(node, preparationClasses, cacheKey, DETECT_STAGGER_CSS_PROPERTIES); + } + + if (!options.$$skipPreparationClasses) { + $$jqLite.addClass(element, preparationClasses); + } + + var applyOnlyDuration; + + if (options.transitionStyle) { + var transitionStyle = [TRANSITION_PROP, options.transitionStyle]; + applyInlineStyle(node, transitionStyle); + temporaryStyles.push(transitionStyle); + } + + if (options.duration >= 0) { + applyOnlyDuration = node.style[TRANSITION_PROP].length > 0; + var durationStyle = getCssTransitionDurationStyle(options.duration, applyOnlyDuration); + + // we set the duration so that it will be picked up by getComputedStyle later + applyInlineStyle(node, durationStyle); + temporaryStyles.push(durationStyle); + } + + if (options.keyframeStyle) { + var keyframeStyle = [ANIMATION_PROP, options.keyframeStyle]; + applyInlineStyle(node, keyframeStyle); + temporaryStyles.push(keyframeStyle); + } + + var itemIndex = stagger + ? options.staggerIndex >= 0 + ? options.staggerIndex + : gcsLookup.count(cacheKey) + : 0; + + var isFirst = itemIndex === 0; + + // this is a pre-emptive way of forcing the setup classes to be added and applied INSTANTLY + // without causing any combination of transitions to kick in. By adding a negative delay value + // it forces the setup class' transition to end immediately. We later then remove the negative + // transition delay to allow for the transition to naturally do it's thing. The beauty here is + // that if there is no transition defined then nothing will happen and this will also allow + // other transitions to be stacked on top of each other without any chopping them out. + if (isFirst && !options.skipBlocking) { + blockTransitions(node, SAFE_FAST_FORWARD_DURATION_VALUE); + } + + var timings = computeTimings(node, fullClassName, cacheKey); + var relativeDelay = timings.maxDelay; + maxDelay = Math.max(relativeDelay, 0); + maxDuration = timings.maxDuration; + + var flags = {}; + flags.hasTransitions = timings.transitionDuration > 0; + flags.hasAnimations = timings.animationDuration > 0; + flags.hasTransitionAll = flags.hasTransitions && timings.transitionProperty === 'all'; + flags.applyTransitionDuration = hasToStyles && ( + (flags.hasTransitions && !flags.hasTransitionAll) + || (flags.hasAnimations && !flags.hasTransitions)); + flags.applyAnimationDuration = options.duration && flags.hasAnimations; + flags.applyTransitionDelay = truthyTimingValue(options.delay) && (flags.applyTransitionDuration || flags.hasTransitions); + flags.applyAnimationDelay = truthyTimingValue(options.delay) && flags.hasAnimations; + flags.recalculateTimingStyles = addRemoveClassName.length > 0; + + if (flags.applyTransitionDuration || flags.applyAnimationDuration) { + maxDuration = options.duration ? parseFloat(options.duration) : maxDuration; + + if (flags.applyTransitionDuration) { + flags.hasTransitions = true; + timings.transitionDuration = maxDuration; + applyOnlyDuration = node.style[TRANSITION_PROP + PROPERTY_KEY].length > 0; + temporaryStyles.push(getCssTransitionDurationStyle(maxDuration, applyOnlyDuration)); + } + + if (flags.applyAnimationDuration) { + flags.hasAnimations = true; + timings.animationDuration = maxDuration; + temporaryStyles.push(getCssKeyframeDurationStyle(maxDuration)); + } + } + + if (maxDuration === 0 && !flags.recalculateTimingStyles) { + return closeAndReturnNoopAnimator(); + } + + if (options.delay != null) { + var delayStyle; + if (typeof options.delay !== 'boolean') { + delayStyle = parseFloat(options.delay); + // number in options.delay means we have to recalculate the delay for the closing timeout + maxDelay = Math.max(delayStyle, 0); + } + + if (flags.applyTransitionDelay) { + temporaryStyles.push(getCssDelayStyle(delayStyle)); + } + + if (flags.applyAnimationDelay) { + temporaryStyles.push(getCssDelayStyle(delayStyle, true)); + } + } + + // we need to recalculate the delay value since we used a pre-emptive negative + // delay value and the delay value is required for the final event checking. This + // property will ensure that this will happen after the RAF phase has passed. + if (options.duration == null && timings.transitionDuration > 0) { + flags.recalculateTimingStyles = flags.recalculateTimingStyles || isFirst; + } + + maxDelayTime = maxDelay * ONE_SECOND; + maxDurationTime = maxDuration * ONE_SECOND; + if (!options.skipBlocking) { + flags.blockTransition = timings.transitionDuration > 0; + flags.blockKeyframeAnimation = timings.animationDuration > 0 && + stagger.animationDelay > 0 && + stagger.animationDuration === 0; + } + + if (options.from) { + if (options.cleanupStyles) { + registerRestorableStyles(restoreStyles, node, Object.keys(options.from)); + } + applyAnimationFromStyles(element, options); + } + + if (flags.blockTransition || flags.blockKeyframeAnimation) { + applyBlocking(maxDuration); + } else if (!options.skipBlocking) { + blockTransitions(node, false); + } + + // TODO(matsko): for 1.5 change this code to have an animator object for better debugging + return { + $$willAnimate: true, + end: endFn, + start: function() { + if (animationClosed) return; + + runnerHost = { + end: endFn, + cancel: cancelFn, + resume: null, //this will be set during the start() phase + pause: null + }; + + runner = new $$AnimateRunner(runnerHost); + + waitUntilQuiet(start); + + // we don't have access to pause/resume the animation + // since it hasn't run yet. AnimateRunner will therefore + // set noop functions for resume and pause and they will + // later be overridden once the animation is triggered + return runner; + } + }; + + function endFn() { + close(); + } + + function cancelFn() { + close(true); + } + + function close(rejected) { + // if the promise has been called already then we shouldn't close + // the animation again + if (animationClosed || (animationCompleted && animationPaused)) return; + animationClosed = true; + animationPaused = false; + + if (!options.$$skipPreparationClasses) { + $$jqLite.removeClass(element, preparationClasses); + } + $$jqLite.removeClass(element, activeClasses); + + blockKeyframeAnimations(node, false); + blockTransitions(node, false); + + forEach(temporaryStyles, function(entry) { + // There is only one way to remove inline style properties entirely from elements. + // By using `removeProperty` this works, but we need to convert camel-cased CSS + // styles down to hyphenated values. + node.style[entry[0]] = ''; + }); + + applyAnimationClasses(element, options); + applyAnimationStyles(element, options); + + if (Object.keys(restoreStyles).length) { + forEach(restoreStyles, function(value, prop) { + if (value) { + node.style.setProperty(prop, value); + } else { + node.style.removeProperty(prop); + } + }); + } + + // the reason why we have this option is to allow a synchronous closing callback + // that is fired as SOON as the animation ends (when the CSS is removed) or if + // the animation never takes off at all. A good example is a leave animation since + // the element must be removed just after the animation is over or else the element + // will appear on screen for one animation frame causing an overbearing flicker. + if (options.onDone) { + options.onDone(); + } + + if (events && events.length) { + // Remove the transitionend / animationend listener(s) + element.off(events.join(' '), onAnimationProgress); + } + + //Cancel the fallback closing timeout and remove the timer data + var animationTimerData = element.data(ANIMATE_TIMER_KEY); + if (animationTimerData) { + $timeout.cancel(animationTimerData[0].timer); + element.removeData(ANIMATE_TIMER_KEY); + } + + // if the preparation function fails then the promise is not setup + if (runner) { + runner.complete(!rejected); + } + } + + function applyBlocking(duration) { + if (flags.blockTransition) { + blockTransitions(node, duration); + } + + if (flags.blockKeyframeAnimation) { + blockKeyframeAnimations(node, !!duration); + } + } + + function closeAndReturnNoopAnimator() { + runner = new $$AnimateRunner({ + end: endFn, + cancel: cancelFn + }); + + // should flush the cache animation + waitUntilQuiet(noop); + close(); + + return { + $$willAnimate: false, + start: function() { + return runner; + }, + end: endFn + }; + } + + function onAnimationProgress(event) { + event.stopPropagation(); + var ev = event.originalEvent || event; + + // we now always use `Date.now()` due to the recent changes with + // event.timeStamp in Firefox, Webkit and Chrome (see #13494 for more info) + var timeStamp = ev.$manualTimeStamp || Date.now(); + + /* Firefox (or possibly just Gecko) likes to not round values up + * when a ms measurement is used for the animation */ + var elapsedTime = parseFloat(ev.elapsedTime.toFixed(ELAPSED_TIME_MAX_DECIMAL_PLACES)); + + /* $manualTimeStamp is a mocked timeStamp value which is set + * within browserTrigger(). This is only here so that tests can + * mock animations properly. Real events fallback to event.timeStamp, + * or, if they don't, then a timeStamp is automatically created for them. + * We're checking to see if the timeStamp surpasses the expected delay, + * but we're using elapsedTime instead of the timeStamp on the 2nd + * pre-condition since animationPauseds sometimes close off early */ + if (Math.max(timeStamp - startTime, 0) >= maxDelayTime && elapsedTime >= maxDuration) { + // we set this flag to ensure that if the transition is paused then, when resumed, + // the animation will automatically close itself since transitions cannot be paused. + animationCompleted = true; + close(); + } + } + + function start() { + if (animationClosed) return; + if (!node.parentNode) { + close(); + return; + } + + // even though we only pause keyframe animations here the pause flag + // will still happen when transitions are used. Only the transition will + // not be paused since that is not possible. If the animation ends when + // paused then it will not complete until unpaused or cancelled. + var playPause = function(playAnimation) { + if (!animationCompleted) { + animationPaused = !playAnimation; + if (timings.animationDuration) { + var value = blockKeyframeAnimations(node, animationPaused); + if (animationPaused) { + temporaryStyles.push(value); + } else { + removeFromArray(temporaryStyles, value); + } + } + } else if (animationPaused && playAnimation) { + animationPaused = false; + close(); + } + }; + + // checking the stagger duration prevents an accidentally cascade of the CSS delay style + // being inherited from the parent. If the transition duration is zero then we can safely + // rely that the delay value is an intentional stagger delay style. + var maxStagger = itemIndex > 0 + && ((timings.transitionDuration && stagger.transitionDuration === 0) || + (timings.animationDuration && stagger.animationDuration === 0)) + && Math.max(stagger.animationDelay, stagger.transitionDelay); + if (maxStagger) { + $timeout(triggerAnimationStart, + Math.floor(maxStagger * itemIndex * ONE_SECOND), + false); + } else { + triggerAnimationStart(); + } + + // this will decorate the existing promise runner with pause/resume methods + runnerHost.resume = function() { + playPause(true); + }; + + runnerHost.pause = function() { + playPause(false); + }; + + function triggerAnimationStart() { + // just incase a stagger animation kicks in when the animation + // itself was cancelled entirely + if (animationClosed) return; + + applyBlocking(false); + + forEach(temporaryStyles, function(entry) { + var key = entry[0]; + var value = entry[1]; + node.style[key] = value; + }); + + applyAnimationClasses(element, options); + $$jqLite.addClass(element, activeClasses); + + if (flags.recalculateTimingStyles) { + fullClassName = node.className + ' ' + preparationClasses; + cacheKey = gcsHashFn(node, fullClassName); + + timings = computeTimings(node, fullClassName, cacheKey); + relativeDelay = timings.maxDelay; + maxDelay = Math.max(relativeDelay, 0); + maxDuration = timings.maxDuration; + + if (maxDuration === 0) { + close(); + return; + } + + flags.hasTransitions = timings.transitionDuration > 0; + flags.hasAnimations = timings.animationDuration > 0; + } + + if (flags.applyAnimationDelay) { + relativeDelay = typeof options.delay !== 'boolean' && truthyTimingValue(options.delay) + ? parseFloat(options.delay) + : relativeDelay; + + maxDelay = Math.max(relativeDelay, 0); + timings.animationDelay = relativeDelay; + delayStyle = getCssDelayStyle(relativeDelay, true); + temporaryStyles.push(delayStyle); + node.style[delayStyle[0]] = delayStyle[1]; + } + + maxDelayTime = maxDelay * ONE_SECOND; + maxDurationTime = maxDuration * ONE_SECOND; + + if (options.easing) { + var easeProp, easeVal = options.easing; + if (flags.hasTransitions) { + easeProp = TRANSITION_PROP + TIMING_KEY; + temporaryStyles.push([easeProp, easeVal]); + node.style[easeProp] = easeVal; + } + if (flags.hasAnimations) { + easeProp = ANIMATION_PROP + TIMING_KEY; + temporaryStyles.push([easeProp, easeVal]); + node.style[easeProp] = easeVal; + } + } + + if (timings.transitionDuration) { + events.push(TRANSITIONEND_EVENT); + } + + if (timings.animationDuration) { + events.push(ANIMATIONEND_EVENT); + } + + startTime = Date.now(); + var timerTime = maxDelayTime + CLOSING_TIME_BUFFER * maxDurationTime; + var endTime = startTime + timerTime; + + var animationsData = element.data(ANIMATE_TIMER_KEY) || []; + var setupFallbackTimer = true; + if (animationsData.length) { + var currentTimerData = animationsData[0]; + setupFallbackTimer = endTime > currentTimerData.expectedEndTime; + if (setupFallbackTimer) { + $timeout.cancel(currentTimerData.timer); + } else { + animationsData.push(close); + } + } + + if (setupFallbackTimer) { + var timer = $timeout(onAnimationExpired, timerTime, false); + animationsData[0] = { + timer: timer, + expectedEndTime: endTime + }; + animationsData.push(close); + element.data(ANIMATE_TIMER_KEY, animationsData); + } + + if (events.length) { + element.on(events.join(' '), onAnimationProgress); + } + + if (options.to) { + if (options.cleanupStyles) { + registerRestorableStyles(restoreStyles, node, Object.keys(options.to)); + } + applyAnimationToStyles(element, options); + } + } + + function onAnimationExpired() { + var animationsData = element.data(ANIMATE_TIMER_KEY); + + // this will be false in the event that the element was + // removed from the DOM (via a leave animation or something + // similar) + if (animationsData) { + for (var i = 1; i < animationsData.length; i++) { + animationsData[i](); + } + element.removeData(ANIMATE_TIMER_KEY); + } + } + } + }; + }]; +}]; + +var $$AnimateCssDriverProvider = ['$$animationProvider', /** @this */ function($$animationProvider) { + $$animationProvider.drivers.push('$$animateCssDriver'); + + var NG_ANIMATE_SHIM_CLASS_NAME = 'ng-animate-shim'; + var NG_ANIMATE_ANCHOR_CLASS_NAME = 'ng-anchor'; + + var NG_OUT_ANCHOR_CLASS_NAME = 'ng-anchor-out'; + var NG_IN_ANCHOR_CLASS_NAME = 'ng-anchor-in'; + + function isDocumentFragment(node) { + return node.parentNode && node.parentNode.nodeType === 11; + } + + this.$get = ['$animateCss', '$rootScope', '$$AnimateRunner', '$rootElement', '$sniffer', '$$jqLite', '$document', + function($animateCss, $rootScope, $$AnimateRunner, $rootElement, $sniffer, $$jqLite, $document) { + + // only browsers that support these properties can render animations + if (!$sniffer.animations && !$sniffer.transitions) return noop; + + var bodyNode = $document[0].body; + var rootNode = getDomNode($rootElement); + + var rootBodyElement = jqLite( + // this is to avoid using something that exists outside of the body + // we also special case the doc fragment case because our unit test code + // appends the $rootElement to the body after the app has been bootstrapped + isDocumentFragment(rootNode) || bodyNode.contains(rootNode) ? rootNode : bodyNode + ); + + return function initDriverFn(animationDetails) { + return animationDetails.from && animationDetails.to + ? prepareFromToAnchorAnimation(animationDetails.from, + animationDetails.to, + animationDetails.classes, + animationDetails.anchors) + : prepareRegularAnimation(animationDetails); + }; + + function filterCssClasses(classes) { + //remove all the `ng-` stuff + return classes.replace(/\bng-\S+\b/g, ''); + } + + function getUniqueValues(a, b) { + if (isString(a)) a = a.split(' '); + if (isString(b)) b = b.split(' '); + return a.filter(function(val) { + return b.indexOf(val) === -1; + }).join(' '); + } + + function prepareAnchoredAnimation(classes, outAnchor, inAnchor) { + var clone = jqLite(getDomNode(outAnchor).cloneNode(true)); + var startingClasses = filterCssClasses(getClassVal(clone)); + + outAnchor.addClass(NG_ANIMATE_SHIM_CLASS_NAME); + inAnchor.addClass(NG_ANIMATE_SHIM_CLASS_NAME); + + clone.addClass(NG_ANIMATE_ANCHOR_CLASS_NAME); + + rootBodyElement.append(clone); + + var animatorIn, animatorOut = prepareOutAnimation(); + + // the user may not end up using the `out` animation and + // only making use of the `in` animation or vice-versa. + // In either case we should allow this and not assume the + // animation is over unless both animations are not used. + if (!animatorOut) { + animatorIn = prepareInAnimation(); + if (!animatorIn) { + return end(); + } + } + + var startingAnimator = animatorOut || animatorIn; + + return { + start: function() { + var runner; + + var currentAnimation = startingAnimator.start(); + currentAnimation.done(function() { + currentAnimation = null; + if (!animatorIn) { + animatorIn = prepareInAnimation(); + if (animatorIn) { + currentAnimation = animatorIn.start(); + currentAnimation.done(function() { + currentAnimation = null; + end(); + runner.complete(); + }); + return currentAnimation; + } + } + // in the event that there is no `in` animation + end(); + runner.complete(); + }); + + runner = new $$AnimateRunner({ + end: endFn, + cancel: endFn + }); + + return runner; + + function endFn() { + if (currentAnimation) { + currentAnimation.end(); + } + } + } + }; + + function calculateAnchorStyles(anchor) { + var styles = {}; + + var coords = getDomNode(anchor).getBoundingClientRect(); + + // we iterate directly since safari messes up and doesn't return + // all the keys for the coords object when iterated + forEach(['width','height','top','left'], function(key) { + var value = coords[key]; + switch (key) { + case 'top': + value += bodyNode.scrollTop; + break; + case 'left': + value += bodyNode.scrollLeft; + break; + } + styles[key] = Math.floor(value) + 'px'; + }); + return styles; + } + + function prepareOutAnimation() { + var animator = $animateCss(clone, { + addClass: NG_OUT_ANCHOR_CLASS_NAME, + delay: true, + from: calculateAnchorStyles(outAnchor) + }); + + // read the comment within `prepareRegularAnimation` to understand + // why this check is necessary + return animator.$$willAnimate ? animator : null; + } + + function getClassVal(element) { + return element.attr('class') || ''; + } + + function prepareInAnimation() { + var endingClasses = filterCssClasses(getClassVal(inAnchor)); + var toAdd = getUniqueValues(endingClasses, startingClasses); + var toRemove = getUniqueValues(startingClasses, endingClasses); + + var animator = $animateCss(clone, { + to: calculateAnchorStyles(inAnchor), + addClass: NG_IN_ANCHOR_CLASS_NAME + ' ' + toAdd, + removeClass: NG_OUT_ANCHOR_CLASS_NAME + ' ' + toRemove, + delay: true + }); + + // read the comment within `prepareRegularAnimation` to understand + // why this check is necessary + return animator.$$willAnimate ? animator : null; + } + + function end() { + clone.remove(); + outAnchor.removeClass(NG_ANIMATE_SHIM_CLASS_NAME); + inAnchor.removeClass(NG_ANIMATE_SHIM_CLASS_NAME); + } + } + + function prepareFromToAnchorAnimation(from, to, classes, anchors) { + var fromAnimation = prepareRegularAnimation(from, noop); + var toAnimation = prepareRegularAnimation(to, noop); + + var anchorAnimations = []; + forEach(anchors, function(anchor) { + var outElement = anchor['out']; + var inElement = anchor['in']; + var animator = prepareAnchoredAnimation(classes, outElement, inElement); + if (animator) { + anchorAnimations.push(animator); + } + }); + + // no point in doing anything when there are no elements to animate + if (!fromAnimation && !toAnimation && anchorAnimations.length === 0) return; + + return { + start: function() { + var animationRunners = []; + + if (fromAnimation) { + animationRunners.push(fromAnimation.start()); + } + + if (toAnimation) { + animationRunners.push(toAnimation.start()); + } + + forEach(anchorAnimations, function(animation) { + animationRunners.push(animation.start()); + }); + + var runner = new $$AnimateRunner({ + end: endFn, + cancel: endFn // CSS-driven animations cannot be cancelled, only ended + }); + + $$AnimateRunner.all(animationRunners, function(status) { + runner.complete(status); + }); + + return runner; + + function endFn() { + forEach(animationRunners, function(runner) { + runner.end(); + }); + } + } + }; + } + + function prepareRegularAnimation(animationDetails) { + var element = animationDetails.element; + var options = animationDetails.options || {}; + + if (animationDetails.structural) { + options.event = animationDetails.event; + options.structural = true; + options.applyClassesEarly = true; + + // we special case the leave animation since we want to ensure that + // the element is removed as soon as the animation is over. Otherwise + // a flicker might appear or the element may not be removed at all + if (animationDetails.event === 'leave') { + options.onDone = options.domOperation; + } + } + + // We assign the preparationClasses as the actual animation event since + // the internals of $animateCss will just suffix the event token values + // with `-active` to trigger the animation. + if (options.preparationClasses) { + options.event = concatWithSpace(options.event, options.preparationClasses); + } + + var animator = $animateCss(element, options); + + // the driver lookup code inside of $$animation attempts to spawn a + // driver one by one until a driver returns a.$$willAnimate animator object. + // $animateCss will always return an object, however, it will pass in + // a flag as a hint as to whether an animation was detected or not + return animator.$$willAnimate ? animator : null; + } + }]; +}]; + +// TODO(matsko): use caching here to speed things up for detection +// TODO(matsko): add documentation +// by the time... + +var $$AnimateJsProvider = ['$animateProvider', /** @this */ function($animateProvider) { + this.$get = ['$injector', '$$AnimateRunner', '$$jqLite', + function($injector, $$AnimateRunner, $$jqLite) { + + var applyAnimationClasses = applyAnimationClassesFactory($$jqLite); + // $animateJs(element, 'enter'); + return function(element, event, classes, options) { + var animationClosed = false; + + // the `classes` argument is optional and if it is not used + // then the classes will be resolved from the element's className + // property as well as options.addClass/options.removeClass. + if (arguments.length === 3 && isObject(classes)) { + options = classes; + classes = null; + } + + options = prepareAnimationOptions(options); + if (!classes) { + classes = element.attr('class') || ''; + if (options.addClass) { + classes += ' ' + options.addClass; + } + if (options.removeClass) { + classes += ' ' + options.removeClass; + } + } + + var classesToAdd = options.addClass; + var classesToRemove = options.removeClass; + + // the lookupAnimations function returns a series of animation objects that are + // matched up with one or more of the CSS classes. These animation objects are + // defined via the module.animation factory function. If nothing is detected then + // we don't return anything which then makes $animation query the next driver. + var animations = lookupAnimations(classes); + var before, after; + if (animations.length) { + var afterFn, beforeFn; + if (event === 'leave') { + beforeFn = 'leave'; + afterFn = 'afterLeave'; // TODO(matsko): get rid of this + } else { + beforeFn = 'before' + event.charAt(0).toUpperCase() + event.substr(1); + afterFn = event; + } + + if (event !== 'enter' && event !== 'move') { + before = packageAnimations(element, event, options, animations, beforeFn); + } + after = packageAnimations(element, event, options, animations, afterFn); + } + + // no matching animations + if (!before && !after) return; + + function applyOptions() { + options.domOperation(); + applyAnimationClasses(element, options); + } + + function close() { + animationClosed = true; + applyOptions(); + applyAnimationStyles(element, options); + } + + var runner; + + return { + $$willAnimate: true, + end: function() { + if (runner) { + runner.end(); + } else { + close(); + runner = new $$AnimateRunner(); + runner.complete(true); + } + return runner; + }, + start: function() { + if (runner) { + return runner; + } + + runner = new $$AnimateRunner(); + var closeActiveAnimations; + var chain = []; + + if (before) { + chain.push(function(fn) { + closeActiveAnimations = before(fn); + }); + } + + if (chain.length) { + chain.push(function(fn) { + applyOptions(); + fn(true); + }); + } else { + applyOptions(); + } + + if (after) { + chain.push(function(fn) { + closeActiveAnimations = after(fn); + }); + } + + runner.setHost({ + end: function() { + endAnimations(); + }, + cancel: function() { + endAnimations(true); + } + }); + + $$AnimateRunner.chain(chain, onComplete); + return runner; + + function onComplete(success) { + close(success); + runner.complete(success); + } + + function endAnimations(cancelled) { + if (!animationClosed) { + (closeActiveAnimations || noop)(cancelled); + onComplete(cancelled); + } + } + } + }; + + function executeAnimationFn(fn, element, event, options, onDone) { + var args; + switch (event) { + case 'animate': + args = [element, options.from, options.to, onDone]; + break; + + case 'setClass': + args = [element, classesToAdd, classesToRemove, onDone]; + break; + + case 'addClass': + args = [element, classesToAdd, onDone]; + break; + + case 'removeClass': + args = [element, classesToRemove, onDone]; + break; + + default: + args = [element, onDone]; + break; + } + + args.push(options); + + var value = fn.apply(fn, args); + if (value) { + if (isFunction(value.start)) { + value = value.start(); + } + + if (value instanceof $$AnimateRunner) { + value.done(onDone); + } else if (isFunction(value)) { + // optional onEnd / onCancel callback + return value; + } + } + + return noop; + } + + function groupEventedAnimations(element, event, options, animations, fnName) { + var operations = []; + forEach(animations, function(ani) { + var animation = ani[fnName]; + if (!animation) return; + + // note that all of these animations will run in parallel + operations.push(function() { + var runner; + var endProgressCb; + + var resolved = false; + var onAnimationComplete = function(rejected) { + if (!resolved) { + resolved = true; + (endProgressCb || noop)(rejected); + runner.complete(!rejected); + } + }; + + runner = new $$AnimateRunner({ + end: function() { + onAnimationComplete(); + }, + cancel: function() { + onAnimationComplete(true); + } + }); + + endProgressCb = executeAnimationFn(animation, element, event, options, function(result) { + var cancelled = result === false; + onAnimationComplete(cancelled); + }); + + return runner; + }); + }); + + return operations; + } + + function packageAnimations(element, event, options, animations, fnName) { + var operations = groupEventedAnimations(element, event, options, animations, fnName); + if (operations.length === 0) { + var a, b; + if (fnName === 'beforeSetClass') { + a = groupEventedAnimations(element, 'removeClass', options, animations, 'beforeRemoveClass'); + b = groupEventedAnimations(element, 'addClass', options, animations, 'beforeAddClass'); + } else if (fnName === 'setClass') { + a = groupEventedAnimations(element, 'removeClass', options, animations, 'removeClass'); + b = groupEventedAnimations(element, 'addClass', options, animations, 'addClass'); + } + + if (a) { + operations = operations.concat(a); + } + if (b) { + operations = operations.concat(b); + } + } + + if (operations.length === 0) return; + + // TODO(matsko): add documentation + return function startAnimation(callback) { + var runners = []; + if (operations.length) { + forEach(operations, function(animateFn) { + runners.push(animateFn()); + }); + } + + if (runners.length) { + $$AnimateRunner.all(runners, callback); + } else { + callback(); + } + + return function endFn(reject) { + forEach(runners, function(runner) { + if (reject) { + runner.cancel(); + } else { + runner.end(); + } + }); + }; + }; + } + }; + + function lookupAnimations(classes) { + classes = isArray(classes) ? classes : classes.split(' '); + var matches = [], flagMap = {}; + for (var i = 0; i < classes.length; i++) { + var klass = classes[i], + animationFactory = $animateProvider.$$registeredAnimations[klass]; + if (animationFactory && !flagMap[klass]) { + matches.push($injector.get(animationFactory)); + flagMap[klass] = true; + } + } + return matches; + } + }]; +}]; + +var $$AnimateJsDriverProvider = ['$$animationProvider', /** @this */ function($$animationProvider) { + $$animationProvider.drivers.push('$$animateJsDriver'); + this.$get = ['$$animateJs', '$$AnimateRunner', function($$animateJs, $$AnimateRunner) { + return function initDriverFn(animationDetails) { + if (animationDetails.from && animationDetails.to) { + var fromAnimation = prepareAnimation(animationDetails.from); + var toAnimation = prepareAnimation(animationDetails.to); + if (!fromAnimation && !toAnimation) return; + + return { + start: function() { + var animationRunners = []; + + if (fromAnimation) { + animationRunners.push(fromAnimation.start()); + } + + if (toAnimation) { + animationRunners.push(toAnimation.start()); + } + + $$AnimateRunner.all(animationRunners, done); + + var runner = new $$AnimateRunner({ + end: endFnFactory(), + cancel: endFnFactory() + }); + + return runner; + + function endFnFactory() { + return function() { + forEach(animationRunners, function(runner) { + // at this point we cannot cancel animations for groups just yet. 1.5+ + runner.end(); + }); + }; + } + + function done(status) { + runner.complete(status); + } + } + }; + } else { + return prepareAnimation(animationDetails); + } + }; + + function prepareAnimation(animationDetails) { + // TODO(matsko): make sure to check for grouped animations and delegate down to normal animations + var element = animationDetails.element; + var event = animationDetails.event; + var options = animationDetails.options; + var classes = animationDetails.classes; + return $$animateJs(element, event, classes, options); + } + }]; +}]; + +var NG_ANIMATE_ATTR_NAME = 'data-ng-animate'; +var NG_ANIMATE_PIN_DATA = '$ngAnimatePin'; +var $$AnimateQueueProvider = ['$animateProvider', /** @this */ function($animateProvider) { + var PRE_DIGEST_STATE = 1; + var RUNNING_STATE = 2; + var ONE_SPACE = ' '; + + var rules = this.rules = { + skip: [], + cancel: [], + join: [] + }; + + function makeTruthyCssClassMap(classString) { + if (!classString) { + return null; + } + + var keys = classString.split(ONE_SPACE); + var map = Object.create(null); + + forEach(keys, function(key) { + map[key] = true; + }); + return map; + } + + function hasMatchingClasses(newClassString, currentClassString) { + if (newClassString && currentClassString) { + var currentClassMap = makeTruthyCssClassMap(currentClassString); + return newClassString.split(ONE_SPACE).some(function(className) { + return currentClassMap[className]; + }); + } + } + + function isAllowed(ruleType, element, currentAnimation, previousAnimation) { + return rules[ruleType].some(function(fn) { + return fn(element, currentAnimation, previousAnimation); + }); + } + + function hasAnimationClasses(animation, and) { + var a = (animation.addClass || '').length > 0; + var b = (animation.removeClass || '').length > 0; + return and ? a && b : a || b; + } + + rules.join.push(function(element, newAnimation, currentAnimation) { + // if the new animation is class-based then we can just tack that on + return !newAnimation.structural && hasAnimationClasses(newAnimation); + }); + + rules.skip.push(function(element, newAnimation, currentAnimation) { + // there is no need to animate anything if no classes are being added and + // there is no structural animation that will be triggered + return !newAnimation.structural && !hasAnimationClasses(newAnimation); + }); + + rules.skip.push(function(element, newAnimation, currentAnimation) { + // why should we trigger a new structural animation if the element will + // be removed from the DOM anyway? + return currentAnimation.event === 'leave' && newAnimation.structural; + }); + + rules.skip.push(function(element, newAnimation, currentAnimation) { + // if there is an ongoing current animation then don't even bother running the class-based animation + return currentAnimation.structural && currentAnimation.state === RUNNING_STATE && !newAnimation.structural; + }); + + rules.cancel.push(function(element, newAnimation, currentAnimation) { + // there can never be two structural animations running at the same time + return currentAnimation.structural && newAnimation.structural; + }); + + rules.cancel.push(function(element, newAnimation, currentAnimation) { + // if the previous animation is already running, but the new animation will + // be triggered, but the new animation is structural + return currentAnimation.state === RUNNING_STATE && newAnimation.structural; + }); + + rules.cancel.push(function(element, newAnimation, currentAnimation) { + // cancel the animation if classes added / removed in both animation cancel each other out, + // but only if the current animation isn't structural + + if (currentAnimation.structural) return false; + + var nA = newAnimation.addClass; + var nR = newAnimation.removeClass; + var cA = currentAnimation.addClass; + var cR = currentAnimation.removeClass; + + // early detection to save the global CPU shortage :) + if ((isUndefined(nA) && isUndefined(nR)) || (isUndefined(cA) && isUndefined(cR))) { + return false; + } + + return hasMatchingClasses(nA, cR) || hasMatchingClasses(nR, cA); + }); + + this.$get = ['$$rAF', '$rootScope', '$rootElement', '$document', '$$HashMap', + '$$animation', '$$AnimateRunner', '$templateRequest', '$$jqLite', '$$forceReflow', + function($$rAF, $rootScope, $rootElement, $document, $$HashMap, + $$animation, $$AnimateRunner, $templateRequest, $$jqLite, $$forceReflow) { + + var activeAnimationsLookup = new $$HashMap(); + var disabledElementsLookup = new $$HashMap(); + var animationsEnabled = null; + + function postDigestTaskFactory() { + var postDigestCalled = false; + return function(fn) { + // we only issue a call to postDigest before + // it has first passed. This prevents any callbacks + // from not firing once the animation has completed + // since it will be out of the digest cycle. + if (postDigestCalled) { + fn(); + } else { + $rootScope.$$postDigest(function() { + postDigestCalled = true; + fn(); + }); + } + }; + } + + // Wait until all directive and route-related templates are downloaded and + // compiled. The $templateRequest.totalPendingRequests variable keeps track of + // all of the remote templates being currently downloaded. If there are no + // templates currently downloading then the watcher will still fire anyway. + var deregisterWatch = $rootScope.$watch( + function() { return $templateRequest.totalPendingRequests === 0; }, + function(isEmpty) { + if (!isEmpty) return; + deregisterWatch(); + + // Now that all templates have been downloaded, $animate will wait until + // the post digest queue is empty before enabling animations. By having two + // calls to $postDigest calls we can ensure that the flag is enabled at the + // very end of the post digest queue. Since all of the animations in $animate + // use $postDigest, it's important that the code below executes at the end. + // This basically means that the page is fully downloaded and compiled before + // any animations are triggered. + $rootScope.$$postDigest(function() { + $rootScope.$$postDigest(function() { + // we check for null directly in the event that the application already called + // .enabled() with whatever arguments that it provided it with + if (animationsEnabled === null) { + animationsEnabled = true; + } + }); + }); + } + ); + + var callbackRegistry = Object.create(null); + + // remember that the classNameFilter is set during the provider/config + // stage therefore we can optimize here and setup a helper function + var classNameFilter = $animateProvider.classNameFilter(); + var isAnimatableClassName = !classNameFilter + ? function() { return true; } + : function(className) { + return classNameFilter.test(className); + }; + + var applyAnimationClasses = applyAnimationClassesFactory($$jqLite); + + function normalizeAnimationDetails(element, animation) { + return mergeAnimationDetails(element, animation, {}); + } + + // IE9-11 has no method "contains" in SVG element and in Node.prototype. Bug #10259. + var contains = window.Node.prototype.contains || /** @this */ function(arg) { + // eslint-disable-next-line no-bitwise + return this === arg || !!(this.compareDocumentPosition(arg) & 16); + }; + + function findCallbacks(parent, element, event) { + var targetNode = getDomNode(element); + var targetParentNode = getDomNode(parent); + + var matches = []; + var entries = callbackRegistry[event]; + if (entries) { + forEach(entries, function(entry) { + if (contains.call(entry.node, targetNode)) { + matches.push(entry.callback); + } else if (event === 'leave' && contains.call(entry.node, targetParentNode)) { + matches.push(entry.callback); + } + }); + } + + return matches; + } + + function filterFromRegistry(list, matchContainer, matchCallback) { + var containerNode = extractElementNode(matchContainer); + return list.filter(function(entry) { + var isMatch = entry.node === containerNode && + (!matchCallback || entry.callback === matchCallback); + return !isMatch; + }); + } + + function cleanupEventListeners(phase, element) { + if (phase === 'close' && !element[0].parentNode) { + // If the element is not attached to a parentNode, it has been removed by + // the domOperation, and we can safely remove the event callbacks + $animate.off(element); + } + } + + var $animate = { + on: function(event, container, callback) { + var node = extractElementNode(container); + callbackRegistry[event] = callbackRegistry[event] || []; + callbackRegistry[event].push({ + node: node, + callback: callback + }); + + // Remove the callback when the element is removed from the DOM + jqLite(container).on('$destroy', function() { + var animationDetails = activeAnimationsLookup.get(node); + + if (!animationDetails) { + // If there's an animation ongoing, the callback calling code will remove + // the event listeners. If we'd remove here, the callbacks would be removed + // before the animation ends + $animate.off(event, container, callback); + } + }); + }, + + off: function(event, container, callback) { + if (arguments.length === 1 && !isString(arguments[0])) { + container = arguments[0]; + for (var eventType in callbackRegistry) { + callbackRegistry[eventType] = filterFromRegistry(callbackRegistry[eventType], container); + } + + return; + } + + var entries = callbackRegistry[event]; + if (!entries) return; + + callbackRegistry[event] = arguments.length === 1 + ? null + : filterFromRegistry(entries, container, callback); + }, + + pin: function(element, parentElement) { + assertArg(isElement(element), 'element', 'not an element'); + assertArg(isElement(parentElement), 'parentElement', 'not an element'); + element.data(NG_ANIMATE_PIN_DATA, parentElement); + }, + + push: function(element, event, options, domOperation) { + options = options || {}; + options.domOperation = domOperation; + return queueAnimation(element, event, options); + }, + + // this method has four signatures: + // () - global getter + // (bool) - global setter + // (element) - element getter + // (element, bool) - element setter + enabled: function(element, bool) { + var argCount = arguments.length; + + if (argCount === 0) { + // () - Global getter + bool = !!animationsEnabled; + } else { + var hasElement = isElement(element); + + if (!hasElement) { + // (bool) - Global setter + bool = animationsEnabled = !!element; + } else { + var node = getDomNode(element); + + if (argCount === 1) { + // (element) - Element getter + bool = !disabledElementsLookup.get(node); + } else { + // (element, bool) - Element setter + disabledElementsLookup.put(node, !bool); + } + } + } + + return bool; + } + }; + + return $animate; + + function queueAnimation(element, event, initialOptions) { + // we always make a copy of the options since + // there should never be any side effects on + // the input data when running `$animateCss`. + var options = copy(initialOptions); + + var node, parent; + element = stripCommentsFromElement(element); + if (element) { + node = getDomNode(element); + parent = element.parent(); + } + + options = prepareAnimationOptions(options); + + // we create a fake runner with a working promise. + // These methods will become available after the digest has passed + var runner = new $$AnimateRunner(); + + // this is used to trigger callbacks in postDigest mode + var runInNextPostDigestOrNow = postDigestTaskFactory(); + + if (isArray(options.addClass)) { + options.addClass = options.addClass.join(' '); + } + + if (options.addClass && !isString(options.addClass)) { + options.addClass = null; + } + + if (isArray(options.removeClass)) { + options.removeClass = options.removeClass.join(' '); + } + + if (options.removeClass && !isString(options.removeClass)) { + options.removeClass = null; + } + + if (options.from && !isObject(options.from)) { + options.from = null; + } + + if (options.to && !isObject(options.to)) { + options.to = null; + } + + // there are situations where a directive issues an animation for + // a jqLite wrapper that contains only comment nodes... If this + // happens then there is no way we can perform an animation + if (!node) { + close(); + return runner; + } + + var className = [node.className, options.addClass, options.removeClass].join(' '); + if (!isAnimatableClassName(className)) { + close(); + return runner; + } + + var isStructural = ['enter', 'move', 'leave'].indexOf(event) >= 0; + + var documentHidden = $document[0].hidden; + + // this is a hard disable of all animations for the application or on + // the element itself, therefore there is no need to continue further + // past this point if not enabled + // Animations are also disabled if the document is currently hidden (page is not visible + // to the user), because browsers slow down or do not flush calls to requestAnimationFrame + var skipAnimations = !animationsEnabled || documentHidden || disabledElementsLookup.get(node); + var existingAnimation = (!skipAnimations && activeAnimationsLookup.get(node)) || {}; + var hasExistingAnimation = !!existingAnimation.state; + + // there is no point in traversing the same collection of parent ancestors if a followup + // animation will be run on the same element that already did all that checking work + if (!skipAnimations && (!hasExistingAnimation || existingAnimation.state !== PRE_DIGEST_STATE)) { + skipAnimations = !areAnimationsAllowed(element, parent, event); + } + + if (skipAnimations) { + // Callbacks should fire even if the document is hidden (regression fix for issue #14120) + if (documentHidden) notifyProgress(runner, event, 'start'); + close(); + if (documentHidden) notifyProgress(runner, event, 'close'); + return runner; + } + + if (isStructural) { + closeChildAnimations(element); + } + + var newAnimation = { + structural: isStructural, + element: element, + event: event, + addClass: options.addClass, + removeClass: options.removeClass, + close: close, + options: options, + runner: runner + }; + + if (hasExistingAnimation) { + var skipAnimationFlag = isAllowed('skip', element, newAnimation, existingAnimation); + if (skipAnimationFlag) { + if (existingAnimation.state === RUNNING_STATE) { + close(); + return runner; + } else { + mergeAnimationDetails(element, existingAnimation, newAnimation); + return existingAnimation.runner; + } + } + var cancelAnimationFlag = isAllowed('cancel', element, newAnimation, existingAnimation); + if (cancelAnimationFlag) { + if (existingAnimation.state === RUNNING_STATE) { + // this will end the animation right away and it is safe + // to do so since the animation is already running and the + // runner callback code will run in async + existingAnimation.runner.end(); + } else if (existingAnimation.structural) { + // this means that the animation is queued into a digest, but + // hasn't started yet. Therefore it is safe to run the close + // method which will call the runner methods in async. + existingAnimation.close(); + } else { + // this will merge the new animation options into existing animation options + mergeAnimationDetails(element, existingAnimation, newAnimation); + + return existingAnimation.runner; + } + } else { + // a joined animation means that this animation will take over the existing one + // so an example would involve a leave animation taking over an enter. Then when + // the postDigest kicks in the enter will be ignored. + var joinAnimationFlag = isAllowed('join', element, newAnimation, existingAnimation); + if (joinAnimationFlag) { + if (existingAnimation.state === RUNNING_STATE) { + normalizeAnimationDetails(element, newAnimation); + } else { + applyGeneratedPreparationClasses(element, isStructural ? event : null, options); + + event = newAnimation.event = existingAnimation.event; + options = mergeAnimationDetails(element, existingAnimation, newAnimation); + + //we return the same runner since only the option values of this animation will + //be fed into the `existingAnimation`. + return existingAnimation.runner; + } + } + } + } else { + // normalization in this case means that it removes redundant CSS classes that + // already exist (addClass) or do not exist (removeClass) on the element + normalizeAnimationDetails(element, newAnimation); + } + + // when the options are merged and cleaned up we may end up not having to do + // an animation at all, therefore we should check this before issuing a post + // digest callback. Structural animations will always run no matter what. + var isValidAnimation = newAnimation.structural; + if (!isValidAnimation) { + // animate (from/to) can be quickly checked first, otherwise we check if any classes are present + isValidAnimation = (newAnimation.event === 'animate' && Object.keys(newAnimation.options.to || {}).length > 0) + || hasAnimationClasses(newAnimation); + } + + if (!isValidAnimation) { + close(); + clearElementAnimationState(element); + return runner; + } + + // the counter keeps track of cancelled animations + var counter = (existingAnimation.counter || 0) + 1; + newAnimation.counter = counter; + + markElementAnimationState(element, PRE_DIGEST_STATE, newAnimation); + + $rootScope.$$postDigest(function() { + var animationDetails = activeAnimationsLookup.get(node); + var animationCancelled = !animationDetails; + animationDetails = animationDetails || {}; + + // if addClass/removeClass is called before something like enter then the + // registered parent element may not be present. The code below will ensure + // that a final value for parent element is obtained + var parentElement = element.parent() || []; + + // animate/structural/class-based animations all have requirements. Otherwise there + // is no point in performing an animation. The parent node must also be set. + var isValidAnimation = parentElement.length > 0 + && (animationDetails.event === 'animate' + || animationDetails.structural + || hasAnimationClasses(animationDetails)); + + // this means that the previous animation was cancelled + // even if the follow-up animation is the same event + if (animationCancelled || animationDetails.counter !== counter || !isValidAnimation) { + // if another animation did not take over then we need + // to make sure that the domOperation and options are + // handled accordingly + if (animationCancelled) { + applyAnimationClasses(element, options); + applyAnimationStyles(element, options); + } + + // if the event changed from something like enter to leave then we do + // it, otherwise if it's the same then the end result will be the same too + if (animationCancelled || (isStructural && animationDetails.event !== event)) { + options.domOperation(); + runner.end(); + } + + // in the event that the element animation was not cancelled or a follow-up animation + // isn't allowed to animate from here then we need to clear the state of the element + // so that any future animations won't read the expired animation data. + if (!isValidAnimation) { + clearElementAnimationState(element); + } + + return; + } + + // this combined multiple class to addClass / removeClass into a setClass event + // so long as a structural event did not take over the animation + event = !animationDetails.structural && hasAnimationClasses(animationDetails, true) + ? 'setClass' + : animationDetails.event; + + markElementAnimationState(element, RUNNING_STATE); + var realRunner = $$animation(element, event, animationDetails.options); + + // this will update the runner's flow-control events based on + // the `realRunner` object. + runner.setHost(realRunner); + notifyProgress(runner, event, 'start', {}); + + realRunner.done(function(status) { + close(!status); + var animationDetails = activeAnimationsLookup.get(node); + if (animationDetails && animationDetails.counter === counter) { + clearElementAnimationState(getDomNode(element)); + } + notifyProgress(runner, event, 'close', {}); + }); + }); + + return runner; + + function notifyProgress(runner, event, phase, data) { + runInNextPostDigestOrNow(function() { + var callbacks = findCallbacks(parent, element, event); + if (callbacks.length) { + // do not optimize this call here to RAF because + // we don't know how heavy the callback code here will + // be and if this code is buffered then this can + // lead to a performance regression. + $$rAF(function() { + forEach(callbacks, function(callback) { + callback(element, phase, data); + }); + cleanupEventListeners(phase, element); + }); + } else { + cleanupEventListeners(phase, element); + } + }); + runner.progress(event, phase, data); + } + + function close(reject) { + clearGeneratedClasses(element, options); + applyAnimationClasses(element, options); + applyAnimationStyles(element, options); + options.domOperation(); + runner.complete(!reject); + } + } + + function closeChildAnimations(element) { + var node = getDomNode(element); + var children = node.querySelectorAll('[' + NG_ANIMATE_ATTR_NAME + ']'); + forEach(children, function(child) { + var state = parseInt(child.getAttribute(NG_ANIMATE_ATTR_NAME), 10); + var animationDetails = activeAnimationsLookup.get(child); + if (animationDetails) { + switch (state) { + case RUNNING_STATE: + animationDetails.runner.end(); + /* falls through */ + case PRE_DIGEST_STATE: + activeAnimationsLookup.remove(child); + break; + } + } + }); + } + + function clearElementAnimationState(element) { + var node = getDomNode(element); + node.removeAttribute(NG_ANIMATE_ATTR_NAME); + activeAnimationsLookup.remove(node); + } + + function isMatchingElement(nodeOrElmA, nodeOrElmB) { + return getDomNode(nodeOrElmA) === getDomNode(nodeOrElmB); + } + + /** + * This fn returns false if any of the following is true: + * a) animations on any parent element are disabled, and animations on the element aren't explicitly allowed + * b) a parent element has an ongoing structural animation, and animateChildren is false + * c) the element is not a child of the body + * d) the element is not a child of the $rootElement + */ + function areAnimationsAllowed(element, parentElement, event) { + var bodyElement = jqLite($document[0].body); + var bodyElementDetected = isMatchingElement(element, bodyElement) || element[0].nodeName === 'HTML'; + var rootElementDetected = isMatchingElement(element, $rootElement); + var parentAnimationDetected = false; + var animateChildren; + var elementDisabled = disabledElementsLookup.get(getDomNode(element)); + + var parentHost = jqLite.data(element[0], NG_ANIMATE_PIN_DATA); + if (parentHost) { + parentElement = parentHost; + } + + parentElement = getDomNode(parentElement); + + while (parentElement) { + if (!rootElementDetected) { + // angular doesn't want to attempt to animate elements outside of the application + // therefore we need to ensure that the rootElement is an ancestor of the current element + rootElementDetected = isMatchingElement(parentElement, $rootElement); + } + + if (parentElement.nodeType !== ELEMENT_NODE) { + // no point in inspecting the #document element + break; + } + + var details = activeAnimationsLookup.get(parentElement) || {}; + // either an enter, leave or move animation will commence + // therefore we can't allow any animations to take place + // but if a parent animation is class-based then that's ok + if (!parentAnimationDetected) { + var parentElementDisabled = disabledElementsLookup.get(parentElement); + + if (parentElementDisabled === true && elementDisabled !== false) { + // disable animations if the user hasn't explicitly enabled animations on the + // current element + elementDisabled = true; + // element is disabled via parent element, no need to check anything else + break; + } else if (parentElementDisabled === false) { + elementDisabled = false; + } + parentAnimationDetected = details.structural; + } + + if (isUndefined(animateChildren) || animateChildren === true) { + var value = jqLite.data(parentElement, NG_ANIMATE_CHILDREN_DATA); + if (isDefined(value)) { + animateChildren = value; + } + } + + // there is no need to continue traversing at this point + if (parentAnimationDetected && animateChildren === false) break; + + if (!bodyElementDetected) { + // we also need to ensure that the element is or will be a part of the body element + // otherwise it is pointless to even issue an animation to be rendered + bodyElementDetected = isMatchingElement(parentElement, bodyElement); + } + + if (bodyElementDetected && rootElementDetected) { + // If both body and root have been found, any other checks are pointless, + // as no animation data should live outside the application + break; + } + + if (!rootElementDetected) { + // If no rootElement is detected, check if the parentElement is pinned to another element + parentHost = jqLite.data(parentElement, NG_ANIMATE_PIN_DATA); + if (parentHost) { + // The pin target element becomes the next parent element + parentElement = getDomNode(parentHost); + continue; + } + } + + parentElement = parentElement.parentNode; + } + + var allowAnimation = (!parentAnimationDetected || animateChildren) && elementDisabled !== true; + return allowAnimation && rootElementDetected && bodyElementDetected; + } + + function markElementAnimationState(element, state, details) { + details = details || {}; + details.state = state; + + var node = getDomNode(element); + node.setAttribute(NG_ANIMATE_ATTR_NAME, state); + + var oldValue = activeAnimationsLookup.get(node); + var newValue = oldValue + ? extend(oldValue, details) + : details; + activeAnimationsLookup.put(node, newValue); + } + }]; +}]; + +/* exported $$AnimationProvider */ + +var $$AnimationProvider = ['$animateProvider', /** @this */ function($animateProvider) { + var NG_ANIMATE_REF_ATTR = 'ng-animate-ref'; + + var drivers = this.drivers = []; + + var RUNNER_STORAGE_KEY = '$$animationRunner'; + + function setRunner(element, runner) { + element.data(RUNNER_STORAGE_KEY, runner); + } + + function removeRunner(element) { + element.removeData(RUNNER_STORAGE_KEY); + } + + function getRunner(element) { + return element.data(RUNNER_STORAGE_KEY); + } + + this.$get = ['$$jqLite', '$rootScope', '$injector', '$$AnimateRunner', '$$HashMap', '$$rAFScheduler', + function($$jqLite, $rootScope, $injector, $$AnimateRunner, $$HashMap, $$rAFScheduler) { + + var animationQueue = []; + var applyAnimationClasses = applyAnimationClassesFactory($$jqLite); + + function sortAnimations(animations) { + var tree = { children: [] }; + var i, lookup = new $$HashMap(); + + // this is done first beforehand so that the hashmap + // is filled with a list of the elements that will be animated + for (i = 0; i < animations.length; i++) { + var animation = animations[i]; + lookup.put(animation.domNode, animations[i] = { + domNode: animation.domNode, + fn: animation.fn, + children: [] + }); + } + + for (i = 0; i < animations.length; i++) { + processNode(animations[i]); + } + + return flatten(tree); + + function processNode(entry) { + if (entry.processed) return entry; + entry.processed = true; + + var elementNode = entry.domNode; + var parentNode = elementNode.parentNode; + lookup.put(elementNode, entry); + + var parentEntry; + while (parentNode) { + parentEntry = lookup.get(parentNode); + if (parentEntry) { + if (!parentEntry.processed) { + parentEntry = processNode(parentEntry); + } + break; + } + parentNode = parentNode.parentNode; + } + + (parentEntry || tree).children.push(entry); + return entry; + } + + function flatten(tree) { + var result = []; + var queue = []; + var i; + + for (i = 0; i < tree.children.length; i++) { + queue.push(tree.children[i]); + } + + var remainingLevelEntries = queue.length; + var nextLevelEntries = 0; + var row = []; + + for (i = 0; i < queue.length; i++) { + var entry = queue[i]; + if (remainingLevelEntries <= 0) { + remainingLevelEntries = nextLevelEntries; + nextLevelEntries = 0; + result.push(row); + row = []; + } + row.push(entry.fn); + entry.children.forEach(function(childEntry) { + nextLevelEntries++; + queue.push(childEntry); + }); + remainingLevelEntries--; + } + + if (row.length) { + result.push(row); + } + + return result; + } + } + + // TODO(matsko): document the signature in a better way + return function(element, event, options) { + options = prepareAnimationOptions(options); + var isStructural = ['enter', 'move', 'leave'].indexOf(event) >= 0; + + // there is no animation at the current moment, however + // these runner methods will get later updated with the + // methods leading into the driver's end/cancel methods + // for now they just stop the animation from starting + var runner = new $$AnimateRunner({ + end: function() { close(); }, + cancel: function() { close(true); } + }); + + if (!drivers.length) { + close(); + return runner; + } + + setRunner(element, runner); + + var classes = mergeClasses(element.attr('class'), mergeClasses(options.addClass, options.removeClass)); + var tempClasses = options.tempClasses; + if (tempClasses) { + classes += ' ' + tempClasses; + options.tempClasses = null; + } + + var prepareClassName; + if (isStructural) { + prepareClassName = 'ng-' + event + PREPARE_CLASS_SUFFIX; + $$jqLite.addClass(element, prepareClassName); + } + + animationQueue.push({ + // this data is used by the postDigest code and passed into + // the driver step function + element: element, + classes: classes, + event: event, + structural: isStructural, + options: options, + beforeStart: beforeStart, + close: close + }); + + element.on('$destroy', handleDestroyedElement); + + // we only want there to be one function called within the post digest + // block. This way we can group animations for all the animations that + // were apart of the same postDigest flush call. + if (animationQueue.length > 1) return runner; + + $rootScope.$$postDigest(function() { + var animations = []; + forEach(animationQueue, function(entry) { + // the element was destroyed early on which removed the runner + // form its storage. This means we can't animate this element + // at all and it already has been closed due to destruction. + if (getRunner(entry.element)) { + animations.push(entry); + } else { + entry.close(); + } + }); + + // now any future animations will be in another postDigest + animationQueue.length = 0; + + var groupedAnimations = groupAnimations(animations); + var toBeSortedAnimations = []; + + forEach(groupedAnimations, function(animationEntry) { + toBeSortedAnimations.push({ + domNode: getDomNode(animationEntry.from ? animationEntry.from.element : animationEntry.element), + fn: function triggerAnimationStart() { + // it's important that we apply the `ng-animate` CSS class and the + // temporary classes before we do any driver invoking since these + // CSS classes may be required for proper CSS detection. + animationEntry.beforeStart(); + + var startAnimationFn, closeFn = animationEntry.close; + + // in the event that the element was removed before the digest runs or + // during the RAF sequencing then we should not trigger the animation. + var targetElement = animationEntry.anchors + ? (animationEntry.from.element || animationEntry.to.element) + : animationEntry.element; + + if (getRunner(targetElement)) { + var operation = invokeFirstDriver(animationEntry); + if (operation) { + startAnimationFn = operation.start; + } + } + + if (!startAnimationFn) { + closeFn(); + } else { + var animationRunner = startAnimationFn(); + animationRunner.done(function(status) { + closeFn(!status); + }); + updateAnimationRunners(animationEntry, animationRunner); + } + } + }); + }); + + // we need to sort each of the animations in order of parent to child + // relationships. This ensures that the child classes are applied at the + // right time. + $$rAFScheduler(sortAnimations(toBeSortedAnimations)); + }); + + return runner; + + // TODO(matsko): change to reference nodes + function getAnchorNodes(node) { + var SELECTOR = '[' + NG_ANIMATE_REF_ATTR + ']'; + var items = node.hasAttribute(NG_ANIMATE_REF_ATTR) + ? [node] + : node.querySelectorAll(SELECTOR); + var anchors = []; + forEach(items, function(node) { + var attr = node.getAttribute(NG_ANIMATE_REF_ATTR); + if (attr && attr.length) { + anchors.push(node); + } + }); + return anchors; + } + + function groupAnimations(animations) { + var preparedAnimations = []; + var refLookup = {}; + forEach(animations, function(animation, index) { + var element = animation.element; + var node = getDomNode(element); + var event = animation.event; + var enterOrMove = ['enter', 'move'].indexOf(event) >= 0; + var anchorNodes = animation.structural ? getAnchorNodes(node) : []; + + if (anchorNodes.length) { + var direction = enterOrMove ? 'to' : 'from'; + + forEach(anchorNodes, function(anchor) { + var key = anchor.getAttribute(NG_ANIMATE_REF_ATTR); + refLookup[key] = refLookup[key] || {}; + refLookup[key][direction] = { + animationID: index, + element: jqLite(anchor) + }; + }); + } else { + preparedAnimations.push(animation); + } + }); + + var usedIndicesLookup = {}; + var anchorGroups = {}; + forEach(refLookup, function(operations, key) { + var from = operations.from; + var to = operations.to; + + if (!from || !to) { + // only one of these is set therefore we can't have an + // anchor animation since all three pieces are required + var index = from ? from.animationID : to.animationID; + var indexKey = index.toString(); + if (!usedIndicesLookup[indexKey]) { + usedIndicesLookup[indexKey] = true; + preparedAnimations.push(animations[index]); + } + return; + } + + var fromAnimation = animations[from.animationID]; + var toAnimation = animations[to.animationID]; + var lookupKey = from.animationID.toString(); + if (!anchorGroups[lookupKey]) { + var group = anchorGroups[lookupKey] = { + structural: true, + beforeStart: function() { + fromAnimation.beforeStart(); + toAnimation.beforeStart(); + }, + close: function() { + fromAnimation.close(); + toAnimation.close(); + }, + classes: cssClassesIntersection(fromAnimation.classes, toAnimation.classes), + from: fromAnimation, + to: toAnimation, + anchors: [] // TODO(matsko): change to reference nodes + }; + + // the anchor animations require that the from and to elements both have at least + // one shared CSS class which effectively marries the two elements together to use + // the same animation driver and to properly sequence the anchor animation. + if (group.classes.length) { + preparedAnimations.push(group); + } else { + preparedAnimations.push(fromAnimation); + preparedAnimations.push(toAnimation); + } + } + + anchorGroups[lookupKey].anchors.push({ + 'out': from.element, 'in': to.element + }); + }); + + return preparedAnimations; + } + + function cssClassesIntersection(a,b) { + a = a.split(' '); + b = b.split(' '); + var matches = []; + + for (var i = 0; i < a.length; i++) { + var aa = a[i]; + if (aa.substring(0,3) === 'ng-') continue; + + for (var j = 0; j < b.length; j++) { + if (aa === b[j]) { + matches.push(aa); + break; + } + } + } + + return matches.join(' '); + } + + function invokeFirstDriver(animationDetails) { + // we loop in reverse order since the more general drivers (like CSS and JS) + // may attempt more elements, but custom drivers are more particular + for (var i = drivers.length - 1; i >= 0; i--) { + var driverName = drivers[i]; + var factory = $injector.get(driverName); + var driver = factory(animationDetails); + if (driver) { + return driver; + } + } + } + + function beforeStart() { + element.addClass(NG_ANIMATE_CLASSNAME); + if (tempClasses) { + $$jqLite.addClass(element, tempClasses); + } + if (prepareClassName) { + $$jqLite.removeClass(element, prepareClassName); + prepareClassName = null; + } + } + + function updateAnimationRunners(animation, newRunner) { + if (animation.from && animation.to) { + update(animation.from.element); + update(animation.to.element); + } else { + update(animation.element); + } + + function update(element) { + var runner = getRunner(element); + if (runner) runner.setHost(newRunner); + } + } + + function handleDestroyedElement() { + var runner = getRunner(element); + if (runner && (event !== 'leave' || !options.$$domOperationFired)) { + runner.end(); + } + } + + function close(rejected) { + element.off('$destroy', handleDestroyedElement); + removeRunner(element); + + applyAnimationClasses(element, options); + applyAnimationStyles(element, options); + options.domOperation(); + + if (tempClasses) { + $$jqLite.removeClass(element, tempClasses); + } + + element.removeClass(NG_ANIMATE_CLASSNAME); + runner.complete(!rejected); + } + }; + }]; +}]; + +/** + * @ngdoc directive + * @name ngAnimateSwap + * @restrict A + * @scope + * + * @description + * + * ngAnimateSwap is a animation-oriented directive that allows for the container to + * be removed and entered in whenever the associated expression changes. A + * common usecase for this directive is a rotating banner or slider component which + * contains one image being present at a time. When the active image changes + * then the old image will perform a `leave` animation and the new element + * will be inserted via an `enter` animation. + * + * @animations + * | Animation | Occurs | + * |----------------------------------|--------------------------------------| + * | {@link ng.$animate#enter enter} | when the new element is inserted to the DOM | + * | {@link ng.$animate#leave leave} | when the old element is removed from the DOM | + * + * @example + * + * + *
+ *
+ * {{ number }} + *
+ *
+ *
+ * + * angular.module('ngAnimateSwapExample', ['ngAnimate']) + * .controller('AppCtrl', ['$scope', '$interval', function($scope, $interval) { + * $scope.number = 0; + * $interval(function() { + * $scope.number++; + * }, 1000); + * + * var colors = ['red','blue','green','yellow','orange']; + * $scope.colorClass = function(number) { + * return colors[number % colors.length]; + * }; + * }]); + * + * + * .container { + * height:250px; + * width:250px; + * position:relative; + * overflow:hidden; + * border:2px solid black; + * } + * .container .cell { + * font-size:150px; + * text-align:center; + * line-height:250px; + * position:absolute; + * top:0; + * left:0; + * right:0; + * border-bottom:2px solid black; + * } + * .swap-animation.ng-enter, .swap-animation.ng-leave { + * transition:0.5s linear all; + * } + * .swap-animation.ng-enter { + * top:-250px; + * } + * .swap-animation.ng-enter-active { + * top:0px; + * } + * .swap-animation.ng-leave { + * top:0px; + * } + * .swap-animation.ng-leave-active { + * top:250px; + * } + * .red { background:red; } + * .green { background:green; } + * .blue { background:blue; } + * .yellow { background:yellow; } + * .orange { background:orange; } + * + *
+ */ +var ngAnimateSwapDirective = ['$animate', '$rootScope', function($animate, $rootScope) { + return { + restrict: 'A', + transclude: 'element', + terminal: true, + priority: 600, // we use 600 here to ensure that the directive is caught before others + link: function(scope, $element, attrs, ctrl, $transclude) { + var previousElement, previousScope; + scope.$watchCollection(attrs.ngAnimateSwap || attrs['for'], function(value) { + if (previousElement) { + $animate.leave(previousElement); + } + if (previousScope) { + previousScope.$destroy(); + previousScope = null; + } + if (value || value === 0) { + previousScope = scope.$new(); + $transclude(previousScope, function(element) { + previousElement = element; + $animate.enter(element, null, $element); + }); + } + }); + } + }; +}]; + +/** + * @ngdoc module + * @name ngAnimate + * @description + * + * The `ngAnimate` module provides support for CSS-based animations (keyframes and transitions) as well as JavaScript-based animations via + * callback hooks. Animations are not enabled by default, however, by including `ngAnimate` the animation hooks are enabled for an Angular app. + * + *
+ * + * # Usage + * Simply put, there are two ways to make use of animations when ngAnimate is used: by using **CSS** and **JavaScript**. The former works purely based + * using CSS (by using matching CSS selectors/styles) and the latter triggers animations that are registered via `module.animation()`. For + * both CSS and JS animations the sole requirement is to have a matching `CSS class` that exists both in the registered animation and within + * the HTML element that the animation will be triggered on. + * + * ## Directive Support + * The following directives are "animation aware": + * + * | Directive | Supported Animations | + * |----------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------| + * | {@link ng.directive:ngRepeat#animations ngRepeat} | enter, leave and move | + * | {@link ngRoute.directive:ngView#animations ngView} | enter and leave | + * | {@link ng.directive:ngInclude#animations ngInclude} | enter and leave | + * | {@link ng.directive:ngSwitch#animations ngSwitch} | enter and leave | + * | {@link ng.directive:ngIf#animations ngIf} | enter and leave | + * | {@link ng.directive:ngClass#animations ngClass} | add and remove (the CSS class(es) present) | + * | {@link ng.directive:ngShow#animations ngShow} & {@link ng.directive:ngHide#animations ngHide} | add and remove (the ng-hide class value) | + * | {@link ng.directive:form#animation-hooks form} & {@link ng.directive:ngModel#animation-hooks ngModel} | add and remove (dirty, pristine, valid, invalid & all other validations) | + * | {@link module:ngMessages#animations ngMessages} | add and remove (ng-active & ng-inactive) | + * | {@link module:ngMessages#animations ngMessage} | enter and leave | + * + * (More information can be found by visiting each the documentation associated with each directive.) + * + * ## CSS-based Animations + * + * CSS-based animations with ngAnimate are unique since they require no JavaScript code at all. By using a CSS class that we reference between our HTML + * and CSS code we can create an animation that will be picked up by Angular when an underlying directive performs an operation. + * + * The example below shows how an `enter` animation can be made possible on an element using `ng-if`: + * + * ```html + *
+ * Fade me in out + *
+ * + * + * ``` + * + * Notice the CSS class **fade**? We can now create the CSS transition code that references this class: + * + * ```css + * /* The starting CSS styles for the enter animation */ + * .fade.ng-enter { + * transition:0.5s linear all; + * opacity:0; + * } + * + * /* The finishing CSS styles for the enter animation */ + * .fade.ng-enter.ng-enter-active { + * opacity:1; + * } + * ``` + * + * The key thing to remember here is that, depending on the animation event (which each of the directives above trigger depending on what's going on) two + * generated CSS classes will be applied to the element; in the example above we have `.ng-enter` and `.ng-enter-active`. For CSS transitions, the transition + * code **must** be defined within the starting CSS class (in this case `.ng-enter`). The destination class is what the transition will animate towards. + * + * If for example we wanted to create animations for `leave` and `move` (ngRepeat triggers move) then we can do so using the same CSS naming conventions: + * + * ```css + * /* now the element will fade out before it is removed from the DOM */ + * .fade.ng-leave { + * transition:0.5s linear all; + * opacity:1; + * } + * .fade.ng-leave.ng-leave-active { + * opacity:0; + * } + * ``` + * + * We can also make use of **CSS Keyframes** by referencing the keyframe animation within the starting CSS class: + * + * ```css + * /* there is no need to define anything inside of the destination + * CSS class since the keyframe will take charge of the animation */ + * .fade.ng-leave { + * animation: my_fade_animation 0.5s linear; + * -webkit-animation: my_fade_animation 0.5s linear; + * } + * + * @keyframes my_fade_animation { + * from { opacity:1; } + * to { opacity:0; } + * } + * + * @-webkit-keyframes my_fade_animation { + * from { opacity:1; } + * to { opacity:0; } + * } + * ``` + * + * Feel free also mix transitions and keyframes together as well as any other CSS classes on the same element. + * + * ### CSS Class-based Animations + * + * Class-based animations (animations that are triggered via `ngClass`, `ngShow`, `ngHide` and some other directives) have a slightly different + * naming convention. Class-based animations are basic enough that a standard transition or keyframe can be referenced on the class being added + * and removed. + * + * For example if we wanted to do a CSS animation for `ngHide` then we place an animation on the `.ng-hide` CSS class: + * + * ```html + *
+ * Show and hide me + *
+ * + * + * + * ``` + * + * All that is going on here with ngShow/ngHide behind the scenes is the `.ng-hide` class is added/removed (when the hidden state is valid). Since + * ngShow and ngHide are animation aware then we can match up a transition and ngAnimate handles the rest. + * + * In addition the addition and removal of the CSS class, ngAnimate also provides two helper methods that we can use to further decorate the animation + * with CSS styles. + * + * ```html + *
+ * Highlight this box + *
+ * + * + * + * ``` + * + * We can also make use of CSS keyframes by placing them within the CSS classes. + * + * + * ### CSS Staggering Animations + * A Staggering animation is a collection of animations that are issued with a slight delay in between each successive operation resulting in a + * curtain-like effect. The ngAnimate module (versions >=1.2) supports staggering animations and the stagger effect can be + * performed by creating a **ng-EVENT-stagger** CSS class and attaching that class to the base CSS class used for + * the animation. The style property expected within the stagger class can either be a **transition-delay** or an + * **animation-delay** property (or both if your animation contains both transitions and keyframe animations). + * + * ```css + * .my-animation.ng-enter { + * /* standard transition code */ + * transition: 1s linear all; + * opacity:0; + * } + * .my-animation.ng-enter-stagger { + * /* this will have a 100ms delay between each successive leave animation */ + * transition-delay: 0.1s; + * + * /* As of 1.4.4, this must always be set: it signals ngAnimate + * to not accidentally inherit a delay property from another CSS class */ + * transition-duration: 0s; + * } + * .my-animation.ng-enter.ng-enter-active { + * /* standard transition styles */ + * opacity:1; + * } + * ``` + * + * Staggering animations work by default in ngRepeat (so long as the CSS class is defined). Outside of ngRepeat, to use staggering animations + * on your own, they can be triggered by firing multiple calls to the same event on $animate. However, the restrictions surrounding this + * are that each of the elements must have the same CSS className value as well as the same parent element. A stagger operation + * will also be reset if one or more animation frames have passed since the multiple calls to `$animate` were fired. + * + * The following code will issue the **ng-leave-stagger** event on the element provided: + * + * ```js + * var kids = parent.children(); + * + * $animate.leave(kids[0]); //stagger index=0 + * $animate.leave(kids[1]); //stagger index=1 + * $animate.leave(kids[2]); //stagger index=2 + * $animate.leave(kids[3]); //stagger index=3 + * $animate.leave(kids[4]); //stagger index=4 + * + * window.requestAnimationFrame(function() { + * //stagger has reset itself + * $animate.leave(kids[5]); //stagger index=0 + * $animate.leave(kids[6]); //stagger index=1 + * + * $scope.$digest(); + * }); + * ``` + * + * Stagger animations are currently only supported within CSS-defined animations. + * + * ### The `ng-animate` CSS class + * + * When ngAnimate is animating an element it will apply the `ng-animate` CSS class to the element for the duration of the animation. + * This is a temporary CSS class and it will be removed once the animation is over (for both JavaScript and CSS-based animations). + * + * Therefore, animations can be applied to an element using this temporary class directly via CSS. + * + * ```css + * .zipper.ng-animate { + * transition:0.5s linear all; + * } + * .zipper.ng-enter { + * opacity:0; + * } + * .zipper.ng-enter.ng-enter-active { + * opacity:1; + * } + * .zipper.ng-leave { + * opacity:1; + * } + * .zipper.ng-leave.ng-leave-active { + * opacity:0; + * } + * ``` + * + * (Note that the `ng-animate` CSS class is reserved and it cannot be applied on an element directly since ngAnimate will always remove + * the CSS class once an animation has completed.) + * + * + * ### The `ng-[event]-prepare` class + * + * This is a special class that can be used to prevent unwanted flickering / flash of content before + * the actual animation starts. The class is added as soon as an animation is initialized, but removed + * before the actual animation starts (after waiting for a $digest). + * It is also only added for *structural* animations (`enter`, `move`, and `leave`). + * + * In practice, flickering can appear when nesting elements with structural animations such as `ngIf` + * into elements that have class-based animations such as `ngClass`. + * + * ```html + *
+ *
+ *
+ *
+ *
+ * ``` + * + * It is possible that during the `enter` animation, the `.message` div will be briefly visible before it starts animating. + * In that case, you can add styles to the CSS that make sure the element stays hidden before the animation starts: + * + * ```css + * .message.ng-enter-prepare { + * opacity: 0; + * } + * + * ``` + * + * ## JavaScript-based Animations + * + * ngAnimate also allows for animations to be consumed by JavaScript code. The approach is similar to CSS-based animations (where there is a shared + * CSS class that is referenced in our HTML code) but in addition we need to register the JavaScript animation on the module. By making use of the + * `module.animation()` module function we can register the animation. + * + * Let's see an example of a enter/leave animation using `ngRepeat`: + * + * ```html + *
+ * {{ item }} + *
+ * ``` + * + * See the **slide** CSS class? Let's use that class to define an animation that we'll structure in our module code by using `module.animation`: + * + * ```js + * myModule.animation('.slide', [function() { + * return { + * // make note that other events (like addClass/removeClass) + * // have different function input parameters + * enter: function(element, doneFn) { + * jQuery(element).fadeIn(1000, doneFn); + * + * // remember to call doneFn so that angular + * // knows that the animation has concluded + * }, + * + * move: function(element, doneFn) { + * jQuery(element).fadeIn(1000, doneFn); + * }, + * + * leave: function(element, doneFn) { + * jQuery(element).fadeOut(1000, doneFn); + * } + * } + * }]); + * ``` + * + * The nice thing about JS-based animations is that we can inject other services and make use of advanced animation libraries such as + * greensock.js and velocity.js. + * + * If our animation code class-based (meaning that something like `ngClass`, `ngHide` and `ngShow` triggers it) then we can still define + * our animations inside of the same registered animation, however, the function input arguments are a bit different: + * + * ```html + *
+ * this box is moody + *
+ * + * + * + * ``` + * + * ```js + * myModule.animation('.colorful', [function() { + * return { + * addClass: function(element, className, doneFn) { + * // do some cool animation and call the doneFn + * }, + * removeClass: function(element, className, doneFn) { + * // do some cool animation and call the doneFn + * }, + * setClass: function(element, addedClass, removedClass, doneFn) { + * // do some cool animation and call the doneFn + * } + * } + * }]); + * ``` + * + * ## CSS + JS Animations Together + * + * AngularJS 1.4 and higher has taken steps to make the amalgamation of CSS and JS animations more flexible. However, unlike earlier versions of Angular, + * defining CSS and JS animations to work off of the same CSS class will not work anymore. Therefore the example below will only result in **JS animations taking + * charge of the animation**: + * + * ```html + *
+ * Slide in and out + *
+ * ``` + * + * ```js + * myModule.animation('.slide', [function() { + * return { + * enter: function(element, doneFn) { + * jQuery(element).slideIn(1000, doneFn); + * } + * } + * }]); + * ``` + * + * ```css + * .slide.ng-enter { + * transition:0.5s linear all; + * transform:translateY(-100px); + * } + * .slide.ng-enter.ng-enter-active { + * transform:translateY(0); + * } + * ``` + * + * Does this mean that CSS and JS animations cannot be used together? Do JS-based animations always have higher priority? We can make up for the + * lack of CSS animations by using the `$animateCss` service to trigger our own tweaked-out, CSS-based animations directly from + * our own JS-based animation code: + * + * ```js + * myModule.animation('.slide', ['$animateCss', function($animateCss) { + * return { + * enter: function(element) { +* // this will trigger `.slide.ng-enter` and `.slide.ng-enter-active`. + * return $animateCss(element, { + * event: 'enter', + * structural: true + * }); + * } + * } + * }]); + * ``` + * + * The nice thing here is that we can save bandwidth by sticking to our CSS-based animation code and we don't need to rely on a 3rd-party animation framework. + * + * The `$animateCss` service is very powerful since we can feed in all kinds of extra properties that will be evaluated and fed into a CSS transition or + * keyframe animation. For example if we wanted to animate the height of an element while adding and removing classes then we can do so by providing that + * data into `$animateCss` directly: + * + * ```js + * myModule.animation('.slide', ['$animateCss', function($animateCss) { + * return { + * enter: function(element) { + * return $animateCss(element, { + * event: 'enter', + * structural: true, + * addClass: 'maroon-setting', + * from: { height:0 }, + * to: { height: 200 } + * }); + * } + * } + * }]); + * ``` + * + * Now we can fill in the rest via our transition CSS code: + * + * ```css + * /* the transition tells ngAnimate to make the animation happen */ + * .slide.ng-enter { transition:0.5s linear all; } + * + * /* this extra CSS class will be absorbed into the transition + * since the $animateCss code is adding the class */ + * .maroon-setting { background:red; } + * ``` + * + * And `$animateCss` will figure out the rest. Just make sure to have the `done()` callback fire the `doneFn` function to signal when the animation is over. + * + * To learn more about what's possible be sure to visit the {@link ngAnimate.$animateCss $animateCss service}. + * + * ## Animation Anchoring (via `ng-animate-ref`) + * + * ngAnimate in AngularJS 1.4 comes packed with the ability to cross-animate elements between + * structural areas of an application (like views) by pairing up elements using an attribute + * called `ng-animate-ref`. + * + * Let's say for example we have two views that are managed by `ng-view` and we want to show + * that there is a relationship between two components situated in within these views. By using the + * `ng-animate-ref` attribute we can identify that the two components are paired together and we + * can then attach an animation, which is triggered when the view changes. + * + * Say for example we have the following template code: + * + * ```html + * + *
+ *
+ * + * + *
+ * + * + * + * + * + * ``` + * + * Now, when the view changes (once the link is clicked), ngAnimate will examine the + * HTML contents to see if there is a match reference between any components in the view + * that is leaving and the view that is entering. It will scan both the view which is being + * removed (leave) and inserted (enter) to see if there are any paired DOM elements that + * contain a matching ref value. + * + * The two images match since they share the same ref value. ngAnimate will now create a + * transport element (which is a clone of the first image element) and it will then attempt + * to animate to the position of the second image element in the next view. For the animation to + * work a special CSS class called `ng-anchor` will be added to the transported element. + * + * We can now attach a transition onto the `.banner.ng-anchor` CSS class and then + * ngAnimate will handle the entire transition for us as well as the addition and removal of + * any changes of CSS classes between the elements: + * + * ```css + * .banner.ng-anchor { + * /* this animation will last for 1 second since there are + * two phases to the animation (an `in` and an `out` phase) */ + * transition:0.5s linear all; + * } + * ``` + * + * We also **must** include animations for the views that are being entered and removed + * (otherwise anchoring wouldn't be possible since the new view would be inserted right away). + * + * ```css + * .view-animation.ng-enter, .view-animation.ng-leave { + * transition:0.5s linear all; + * position:fixed; + * left:0; + * top:0; + * width:100%; + * } + * .view-animation.ng-enter { + * transform:translateX(100%); + * } + * .view-animation.ng-leave, + * .view-animation.ng-enter.ng-enter-active { + * transform:translateX(0%); + * } + * .view-animation.ng-leave.ng-leave-active { + * transform:translateX(-100%); + * } + * ``` + * + * Now we can jump back to the anchor animation. When the animation happens, there are two stages that occur: + * an `out` and an `in` stage. The `out` stage happens first and that is when the element is animated away + * from its origin. Once that animation is over then the `in` stage occurs which animates the + * element to its destination. The reason why there are two animations is to give enough time + * for the enter animation on the new element to be ready. + * + * The example above sets up a transition for both the in and out phases, but we can also target the out or + * in phases directly via `ng-anchor-out` and `ng-anchor-in`. + * + * ```css + * .banner.ng-anchor-out { + * transition: 0.5s linear all; + * + * /* the scale will be applied during the out animation, + * but will be animated away when the in animation runs */ + * transform: scale(1.2); + * } + * + * .banner.ng-anchor-in { + * transition: 1s linear all; + * } + * ``` + * + * + * + * + * ### Anchoring Demo + * + + + Home +
+
+
+
+
+ + angular.module('anchoringExample', ['ngAnimate', 'ngRoute']) + .config(['$routeProvider', function($routeProvider) { + $routeProvider.when('/', { + templateUrl: 'home.html', + controller: 'HomeController as home' + }); + $routeProvider.when('/profile/:id', { + templateUrl: 'profile.html', + controller: 'ProfileController as profile' + }); + }]) + .run(['$rootScope', function($rootScope) { + $rootScope.records = [ + { id: 1, title: 'Miss Beulah Roob' }, + { id: 2, title: 'Trent Morissette' }, + { id: 3, title: 'Miss Ava Pouros' }, + { id: 4, title: 'Rod Pouros' }, + { id: 5, title: 'Abdul Rice' }, + { id: 6, title: 'Laurie Rutherford Sr.' }, + { id: 7, title: 'Nakia McLaughlin' }, + { id: 8, title: 'Jordon Blanda DVM' }, + { id: 9, title: 'Rhoda Hand' }, + { id: 10, title: 'Alexandrea Sauer' } + ]; + }]) + .controller('HomeController', [function() { + //empty + }]) + .controller('ProfileController', ['$rootScope', '$routeParams', + function ProfileController($rootScope, $routeParams) { + var index = parseInt($routeParams.id, 10); + var record = $rootScope.records[index - 1]; + + this.title = record.title; + this.id = record.id; + }]); + + +

Welcome to the home page

+

Please click on an element

+ + {{ record.title }} + +
+ +
+ {{ profile.title }} +
+
+ + .record { + display:block; + font-size:20px; + } + .profile { + background:black; + color:white; + font-size:100px; + } + .view-container { + position:relative; + } + .view-container > .view.ng-animate { + position:absolute; + top:0; + left:0; + width:100%; + min-height:500px; + } + .view.ng-enter, .view.ng-leave, + .record.ng-anchor { + transition:0.5s linear all; + } + .view.ng-enter { + transform:translateX(100%); + } + .view.ng-enter.ng-enter-active, .view.ng-leave { + transform:translateX(0%); + } + .view.ng-leave.ng-leave-active { + transform:translateX(-100%); + } + .record.ng-anchor-out { + background:red; + } + +
+ * + * ### How is the element transported? + * + * When an anchor animation occurs, ngAnimate will clone the starting element and position it exactly where the starting + * element is located on screen via absolute positioning. The cloned element will be placed inside of the root element + * of the application (where ng-app was defined) and all of the CSS classes of the starting element will be applied. The + * element will then animate into the `out` and `in` animations and will eventually reach the coordinates and match + * the dimensions of the destination element. During the entire animation a CSS class of `.ng-animate-shim` will be applied + * to both the starting and destination elements in order to hide them from being visible (the CSS styling for the class + * is: `visibility:hidden`). Once the anchor reaches its destination then it will be removed and the destination element + * will become visible since the shim class will be removed. + * + * ### How is the morphing handled? + * + * CSS Anchoring relies on transitions and keyframes and the internal code is intelligent enough to figure out + * what CSS classes differ between the starting element and the destination element. These different CSS classes + * will be added/removed on the anchor element and a transition will be applied (the transition that is provided + * in the anchor class). Long story short, ngAnimate will figure out what classes to add and remove which will + * make the transition of the element as smooth and automatic as possible. Be sure to use simple CSS classes that + * do not rely on DOM nesting structure so that the anchor element appears the same as the starting element (since + * the cloned element is placed inside of root element which is likely close to the body element). + * + * Note that if the root element is on the `` element then the cloned node will be placed inside of body. + * + * + * ## Using $animate in your directive code + * + * So far we've explored how to feed in animations into an Angular application, but how do we trigger animations within our own directives in our application? + * By injecting the `$animate` service into our directive code, we can trigger structural and class-based hooks which can then be consumed by animations. Let's + * imagine we have a greeting box that shows and hides itself when the data changes + * + * ```html + * Hi there + * ``` + * + * ```js + * ngModule.directive('greetingBox', ['$animate', function($animate) { + * return function(scope, element, attrs) { + * attrs.$observe('active', function(value) { + * value ? $animate.addClass(element, 'on') : $animate.removeClass(element, 'on'); + * }); + * }); + * }]); + * ``` + * + * Now the `on` CSS class is added and removed on the greeting box component. Now if we add a CSS class on top of the greeting box element + * in our HTML code then we can trigger a CSS or JS animation to happen. + * + * ```css + * /* normally we would create a CSS class to reference on the element */ + * greeting-box.on { transition:0.5s linear all; background:green; color:white; } + * ``` + * + * The `$animate` service contains a variety of other methods like `enter`, `leave`, `animate` and `setClass`. To learn more about what's + * possible be sure to visit the {@link ng.$animate $animate service API page}. + * + * + * ## Callbacks and Promises + * + * When `$animate` is called it returns a promise that can be used to capture when the animation has ended. Therefore if we were to trigger + * an animation (within our directive code) then we can continue performing directive and scope related activities after the animation has + * ended by chaining onto the returned promise that animation method returns. + * + * ```js + * // somewhere within the depths of the directive + * $animate.enter(element, parent).then(function() { + * //the animation has completed + * }); + * ``` + * + * (Note that earlier versions of Angular prior to v1.4 required the promise code to be wrapped using `$scope.$apply(...)`. This is not the case + * anymore.) + * + * In addition to the animation promise, we can also make use of animation-related callbacks within our directives and controller code by registering + * an event listener using the `$animate` service. Let's say for example that an animation was triggered on our view + * routing controller to hook into that: + * + * ```js + * ngModule.controller('HomePageController', ['$animate', function($animate) { + * $animate.on('enter', ngViewElement, function(element) { + * // the animation for this route has completed + * }]); + * }]) + * ``` + * + * (Note that you will need to trigger a digest within the callback to get angular to notice any scope-related changes.) + */ + +var copy; +var extend; +var forEach; +var isArray; +var isDefined; +var isElement; +var isFunction; +var isObject; +var isString; +var isUndefined; +var jqLite; +var noop; + +/** + * @ngdoc service + * @name $animate + * @kind object + * + * @description + * The ngAnimate `$animate` service documentation is the same for the core `$animate` service. + * + * Click here {@link ng.$animate to learn more about animations with `$animate`}. + */ +angular.module('ngAnimate', [], function initAngularHelpers() { + // Access helpers from angular core. + // Do it inside a `config` block to ensure `window.angular` is available. + noop = angular.noop; + copy = angular.copy; + extend = angular.extend; + jqLite = angular.element; + forEach = angular.forEach; + isArray = angular.isArray; + isString = angular.isString; + isObject = angular.isObject; + isUndefined = angular.isUndefined; + isDefined = angular.isDefined; + isFunction = angular.isFunction; + isElement = angular.isElement; +}) + .directive('ngAnimateSwap', ngAnimateSwapDirective) + + .directive('ngAnimateChildren', $$AnimateChildrenDirective) + .factory('$$rAFScheduler', $$rAFSchedulerFactory) + + .provider('$$animateQueue', $$AnimateQueueProvider) + .provider('$$animation', $$AnimationProvider) + + .provider('$animateCss', $AnimateCssProvider) + .provider('$$animateCssDriver', $$AnimateCssDriverProvider) + + .provider('$$animateJs', $$AnimateJsProvider) + .provider('$$animateJsDriver', $$AnimateJsDriverProvider); + + +})(window, window.angular); diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-animate/angular-animate.min.js b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-animate/angular-animate.min.js new file mode 100644 index 00000000..3733313f --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-animate/angular-animate.min.js @@ -0,0 +1,57 @@ +/* + AngularJS v1.5.11 + (c) 2010-2017 Google, Inc. http://angularjs.org + License: MIT +*/ +(function(R,B){'use strict';function Da(a,b,c){if(!a)throw Ma("areq",b||"?",c||"required");return a}function Ea(a,b){if(!a&&!b)return"";if(!a)return b;if(!b)return a;X(a)&&(a=a.join(" "));X(b)&&(b=b.join(" "));return a+" "+b}function Na(a){var b={};a&&(a.to||a.from)&&(b.to=a.to,b.from=a.from);return b}function Y(a,b,c){var d="";a=X(a)?a:a&&G(a)&&a.length?a.split(/\s+/):[];s(a,function(a,l){a&&0=a&&(a=e,e=0,b.push(k),k=[]);k.push(g.fn);g.children.forEach(function(a){e++;c.push(a)});a--}k.length&&b.push(k);return b}(c)}var u=[],C=Z(a);return function(n,Q,t){function H(a){a= +a.hasAttribute("ng-animate-ref")?[a]:a.querySelectorAll("[ng-animate-ref]");var b=[];s(a,function(a){var c=a.getAttribute("ng-animate-ref");c&&c.length&&b.push(a)});return b}function T(a){var b=[],c={};s(a,function(a,d){var h=y(a.element),e=0<=["enter","move"].indexOf(a.event),h=a.structural?H(h):[];if(h.length){var k=e?"to":"from";s(h,function(a){var b=a.getAttribute("ng-animate-ref");c[b]=c[b]||{};c[b][k]={animationID:d,element:F(a)}})}else b.push(a)});var d={},e={};s(c,function(c,k){var r=c.from, +p=c.to;if(r&&p){var z=a[r.animationID],g=a[p.animationID],A=r.animationID.toString();if(!e[A]){var n=e[A]={structural:!0,beforeStart:function(){z.beforeStart();g.beforeStart()},close:function(){z.close();g.close()},classes:O(z.classes,g.classes),from:z,to:g,anchors:[]};n.classes.length?b.push(n):(b.push(z),b.push(g))}e[A].anchors.push({out:r.element,"in":p.element})}else r=r?r.animationID:p.animationID,p=r.toString(),d[p]||(d[p]=!0,b.push(a[r]))});return b}function O(a,b){a=a.split(" ");b=b.split(" "); +for(var c=[],d=0;d=R&&b>=m&&(F=!0,k())}function N(){function b(){if(!w){M(!1);s(x,function(a){h.style[a[0]]=a[1]});T(a,f);e.addClass(a,ea);if(q.recalculateTimingStyles){na= +h.className+" "+ga;ia=B(h,na);D=H(h,na,ia);ca=D.maxDelay;J=Math.max(ca,0);m=D.maxDuration;if(0===m){k();return}q.hasTransitions=0l.expectedEndTime)?n.cancel(l.timer):g.push(k)}N&&(p=n(c,p,!1),g[0]={timer:p,expectedEndTime:d},g.push(k),a.data("$$animateCss",g));if(fa.length)a.on(fa.join(" "),z);f.to&&(f.cleanupStyles&&Ka(A,h,Object.keys(f.to)),Ga(a,f))}}function c(){var b=a.data("$$animateCss");if(b){for(var d=1;d", + "license": "MIT", + "bugs": { + "url": "https://github.com/angular/angular.js/issues" + }, + "homepage": "http://angularjs.org", + "jspm": { + "shim": { + "angular-animate": { + "deps": ["angular"] + } + } + } +} diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/.bower.json b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/.bower.json new file mode 100644 index 00000000..39af9065 --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/.bower.json @@ -0,0 +1,31 @@ +{ + "author": { + "name": "https://github.com/angular-ui/bootstrap/graphs/contributors" + }, + "name": "angular-bootstrap", + "keywords": [ + "angular", + "angular-ui", + "bootstrap" + ], + "license": "MIT", + "ignore": [], + "description": "Native AngularJS (Angular) directives for Bootstrap.", + "version": "0.14.3", + "main": [ + "./ui-bootstrap-tpls.js" + ], + "dependencies": { + "angular": ">=1.3.0" + }, + "homepage": "https://github.com/angular-ui/bootstrap-bower", + "_release": "0.14.3", + "_resolution": { + "type": "version", + "tag": "0.14.3", + "commit": "306d1a30b4a8e8144741bb9c0126331ac884126a" + }, + "_source": "https://github.com/angular-ui/bootstrap-bower.git", + "_target": "0.14.x", + "_originalSource": "angular-bootstrap" +} \ No newline at end of file diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/.gitignore b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/.gitignore new file mode 100644 index 00000000..496ee2ca --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/.gitignore @@ -0,0 +1 @@ +.DS_Store \ No newline at end of file diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/.npmignore b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/.npmignore new file mode 100644 index 00000000..d62f9b6e --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/.npmignore @@ -0,0 +1 @@ +bower.json \ No newline at end of file diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/README.md b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/README.md new file mode 100644 index 00000000..9607c65f --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/README.md @@ -0,0 +1,120 @@ +### UI Bootstrap - [AngularJS](http://angularjs.org/) directives specific to [Bootstrap](http://getbootstrap.com) + +[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/angular-ui/bootstrap?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) +[![Build Status](https://secure.travis-ci.org/angular-ui/bootstrap.svg)](http://travis-ci.org/angular-ui/bootstrap) +[![devDependency Status](https://david-dm.org/angular-ui/bootstrap/dev-status.svg?branch=master)](https://david-dm.org/angular-ui/bootstrap#info=devDependencies) + +### Quick links +- [Demo](#demo) +- [Installation](#installation) + - [NPM](#install-with-npm) + - [Bower](#install-with-bower) + - [NuGet](#install-with-nuget) + - [Custom](#custom-build) + - [Manual](#manual-download) +- [Support](#support) + - [FAQ](#faq) + - [Supported browsers](#supported-browsers) + - [Need help?](#need-help) + - [Found a bug?](#found-a-bug) +- [Contributing to the project](#contributing-to-the-project) +- [Development, meeting minutes, roadmap and more.](#development-meeting-minutes-roadmap-and-more) + + +# Demo + +Do you want to see directives in action? Visit http://angular-ui.github.io/bootstrap/! + +# Installation + +Installation is easy as UI Bootstrap has minimal dependencies - only the AngularJS and Twitter Bootstrap's CSS are required. +Note: Since version 0.13.0, UI Bootstrap depends on [ngAnimate](https://docs.angularjs.org/api/ngAnimate) for transitions and animations, such as the accordion, carousel, etc. Include `ngAnimate` in the module dependencies for your app in order to enable animation. + +#### Install with NPM + +```sh +$ npm install angular-ui-bootstrap +``` + +This will install AngularJS and Bootstrap NPM packages. + +#### Install with Bower +```sh +$ bower install angular-bootstrap +``` + +Note: do not install 'angular-ui-bootstrap'. A separate repository - [bootstrap-bower](https://github.com/angular-ui/bootstrap-bower) - hosts the compiled javascript file and bower.json. + +#### Install with NuGet +To install AngularJS UI Bootstrap, run the following command in the Package Manager Console + +```sh +PM> Install-Package Angular.UI.Bootstrap +``` + +#### Custom build + +Head over to http://angular-ui.github.io/bootstrap/ and hit the *Custom build* button to create your own custom UI Bootstrap build, just the way you like it. + +#### Manual download + +After downloading dependencies (or better yet, referencing them from your favorite CDN) you need to download build version of this project. All the files and their purposes are described here: +https://github.com/angular-ui/bootstrap/tree/gh-pages#build-files +Don't worry, if you are not sure which file to take, opt for `ui-bootstrap-tpls-[version].min.js`. + +### Adding dependency to your project + +When you are done downloading all the dependencies and project files the only remaining part is to add dependencies on the `ui.bootstrap` AngularJS module: + +```js +angular.module('myModule', ['ui.bootstrap']); +``` + +If you're a Browserify or Webpack user, you can do: + +```js +var uibs = require('angular-ui-bootstrap'); + +angular.module('myModule', [uibs]); +``` + +# Support + +## FAQ + +https://github.com/angular-ui/bootstrap/wiki/FAQ + +## Supported browsers + +Directives from this repository are automatically tested with the following browsers: +* Chrome (stable and canary channel) +* Firefox +* IE 9 and 10 +* Opera +* Safari + +Modern mobile browsers should work without problems. + + +## Need help? +Need help using UI Bootstrap? + +* Live help in the IRC (`#angularjs` channel at the `freenode` network). Use this [webchat](https://webchat.freenode.net/) or your own IRC client. +* Ask a question in [StackOverflow](http://stackoverflow.com/) under the [angular-ui-bootstrap](http://stackoverflow.com/questions/tagged/angular-ui-bootstrap) tag. + +**Please do not create new issues in this repository to ask questions about using UI Bootstrap** + +## Found a bug? +Please take a look at [CONTRIBUTING.md](CONTRIBUTING.md#you-think-youve-found-a-bug) and submit your issue [here](https://github.com/angular-ui/bootstrap/issues/new). + + +---- + + +# Contributing to the project + +We are always looking for the quality contributions! Please check the [CONTRIBUTING.md](CONTRIBUTING.md) for the contribution guidelines. + +# Development, meeting minutes, roadmap and more. + +Head over to the [Wiki](https://github.com/angular-ui/bootstrap/wiki) for notes on development for UI Bootstrap, meeting minutes from the UI Bootstrap team, roadmap plans, project philosophy and more. diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/bower.json b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/bower.json new file mode 100644 index 00000000..03d4eb27 --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/bower.json @@ -0,0 +1,19 @@ +{ + "author": { + "name": "https://github.com/angular-ui/bootstrap/graphs/contributors" + }, + "name": "angular-bootstrap", + "keywords": [ + "angular", + "angular-ui", + "bootstrap" + ], + "license": "MIT", + "ignore": [], + "description": "Native AngularJS (Angular) directives for Bootstrap.", + "version": "0.14.3", + "main": ["./ui-bootstrap-tpls.js"], + "dependencies": { + "angular": ">=1.3.0" + } +} diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/index.js b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/index.js new file mode 100644 index 00000000..a174f26d --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/index.js @@ -0,0 +1,2 @@ +require('./ui-bootstrap-tpls'); +module.exports = 'ui.bootstrap'; diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/package.json b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/package.json new file mode 100644 index 00000000..f7800479 --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/package.json @@ -0,0 +1,23 @@ +{ + "name": "angular-ui-bootstrap", + "version": "0.14.3", + "description": "Bootstrap widgets for Angular", + "main": "index.js", + "homepage": "http://angular-ui.github.io/bootstrap/", + "repository": { + "type": "git", + "url": "https://github.com/angular-ui/bootstrap.git" + }, + "keywords": [ + "angular", + "bootstrap", + "angular-ui", + "components", + "client-side" + ], + "author": "https://github.com/angular-ui/bootstrap/graphs/contributors", + "peerDependencies": { + "angular": "^1.3.x || >= 1.4.0-beta.0 || >= 1.5.0-beta.0" + }, + "license": "MIT" +} diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/ui-bootstrap-csp.css b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/ui-bootstrap-csp.css new file mode 100644 index 00000000..d772f786 --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/ui-bootstrap-csp.css @@ -0,0 +1,6 @@ +/* Include this file in your html if you are using the CSP mode. */ + +.ng-animate.item:not(.left):not(.right) { + -webkit-transition: 0s ease-in-out left; + transition: 0s ease-in-out left +} \ No newline at end of file diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/ui-bootstrap-tpls.js b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/ui-bootstrap-tpls.js new file mode 100644 index 00000000..f72df496 --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/ui-bootstrap-tpls.js @@ -0,0 +1,8503 @@ +/* + * angular-ui-bootstrap + * http://angular-ui.github.io/bootstrap/ + + * Version: 0.14.3 - 2015-10-23 + * License: MIT + */ +angular.module("ui.bootstrap", ["ui.bootstrap.tpls", "ui.bootstrap.collapse","ui.bootstrap.accordion","ui.bootstrap.alert","ui.bootstrap.buttons","ui.bootstrap.carousel","ui.bootstrap.dateparser","ui.bootstrap.position","ui.bootstrap.datepicker","ui.bootstrap.dropdown","ui.bootstrap.stackedMap","ui.bootstrap.modal","ui.bootstrap.pagination","ui.bootstrap.tooltip","ui.bootstrap.popover","ui.bootstrap.progressbar","ui.bootstrap.rating","ui.bootstrap.tabs","ui.bootstrap.timepicker","ui.bootstrap.typeahead"]); +angular.module("ui.bootstrap.tpls", ["template/accordion/accordion-group.html","template/accordion/accordion.html","template/alert/alert.html","template/carousel/carousel.html","template/carousel/slide.html","template/datepicker/datepicker.html","template/datepicker/day.html","template/datepicker/month.html","template/datepicker/popup.html","template/datepicker/year.html","template/modal/backdrop.html","template/modal/window.html","template/pagination/pager.html","template/pagination/pagination.html","template/tooltip/tooltip-html-popup.html","template/tooltip/tooltip-popup.html","template/tooltip/tooltip-template-popup.html","template/popover/popover-html.html","template/popover/popover-template.html","template/popover/popover.html","template/progressbar/bar.html","template/progressbar/progress.html","template/progressbar/progressbar.html","template/rating/rating.html","template/tabs/tab.html","template/tabs/tabset.html","template/timepicker/timepicker.html","template/typeahead/typeahead-match.html","template/typeahead/typeahead-popup.html"]); +angular.module('ui.bootstrap.collapse', []) + + .directive('uibCollapse', ['$animate', '$injector', function($animate, $injector) { + var $animateCss = $injector.has('$animateCss') ? $injector.get('$animateCss') : null; + return { + link: function(scope, element, attrs) { + function expand() { + element.removeClass('collapse') + .addClass('collapsing') + .attr('aria-expanded', true) + .attr('aria-hidden', false); + + if ($animateCss) { + $animateCss(element, { + addClass: 'in', + easing: 'ease', + to: { height: element[0].scrollHeight + 'px' } + }).start().finally(expandDone); + } else { + $animate.addClass(element, 'in', { + to: { height: element[0].scrollHeight + 'px' } + }).then(expandDone); + } + } + + function expandDone() { + element.removeClass('collapsing') + .addClass('collapse') + .css({height: 'auto'}); + } + + function collapse() { + if (!element.hasClass('collapse') && !element.hasClass('in')) { + return collapseDone(); + } + + element + // IMPORTANT: The height must be set before adding "collapsing" class. + // Otherwise, the browser attempts to animate from height 0 (in + // collapsing class) to the given height here. + .css({height: element[0].scrollHeight + 'px'}) + // initially all panel collapse have the collapse class, this removal + // prevents the animation from jumping to collapsed state + .removeClass('collapse') + .addClass('collapsing') + .attr('aria-expanded', false) + .attr('aria-hidden', true); + + if ($animateCss) { + $animateCss(element, { + removeClass: 'in', + to: {height: '0'} + }).start().finally(collapseDone); + } else { + $animate.removeClass(element, 'in', { + to: {height: '0'} + }).then(collapseDone); + } + } + + function collapseDone() { + element.css({height: '0'}); // Required so that collapse works when animation is disabled + element.removeClass('collapsing') + .addClass('collapse'); + } + + scope.$watch(attrs.uibCollapse, function(shouldCollapse) { + if (shouldCollapse) { + collapse(); + } else { + expand(); + } + }); + } + }; + }]); + +/* Deprecated collapse below */ + +angular.module('ui.bootstrap.collapse') + + .value('$collapseSuppressWarning', false) + + .directive('collapse', ['$animate', '$injector', '$log', '$collapseSuppressWarning', function($animate, $injector, $log, $collapseSuppressWarning) { + var $animateCss = $injector.has('$animateCss') ? $injector.get('$animateCss') : null; + return { + link: function(scope, element, attrs) { + if (!$collapseSuppressWarning) { + $log.warn('collapse is now deprecated. Use uib-collapse instead.'); + } + + function expand() { + element.removeClass('collapse') + .addClass('collapsing') + .attr('aria-expanded', true) + .attr('aria-hidden', false); + + if ($animateCss) { + $animateCss(element, { + easing: 'ease', + to: { height: element[0].scrollHeight + 'px' } + }).start().done(expandDone); + } else { + $animate.animate(element, {}, { + height: element[0].scrollHeight + 'px' + }).then(expandDone); + } + } + + function expandDone() { + element.removeClass('collapsing') + .addClass('collapse in') + .css({height: 'auto'}); + } + + function collapse() { + if (!element.hasClass('collapse') && !element.hasClass('in')) { + return collapseDone(); + } + + element + // IMPORTANT: The height must be set before adding "collapsing" class. + // Otherwise, the browser attempts to animate from height 0 (in + // collapsing class) to the given height here. + .css({height: element[0].scrollHeight + 'px'}) + // initially all panel collapse have the collapse class, this removal + // prevents the animation from jumping to collapsed state + .removeClass('collapse in') + .addClass('collapsing') + .attr('aria-expanded', false) + .attr('aria-hidden', true); + + if ($animateCss) { + $animateCss(element, { + to: {height: '0'} + }).start().done(collapseDone); + } else { + $animate.animate(element, {}, { + height: '0' + }).then(collapseDone); + } + } + + function collapseDone() { + element.css({height: '0'}); // Required so that collapse works when animation is disabled + element.removeClass('collapsing') + .addClass('collapse'); + } + + scope.$watch(attrs.collapse, function(shouldCollapse) { + if (shouldCollapse) { + collapse(); + } else { + expand(); + } + }); + } + }; + }]); + +angular.module('ui.bootstrap.accordion', ['ui.bootstrap.collapse']) + +.constant('uibAccordionConfig', { + closeOthers: true +}) + +.controller('UibAccordionController', ['$scope', '$attrs', 'uibAccordionConfig', function($scope, $attrs, accordionConfig) { + // This array keeps track of the accordion groups + this.groups = []; + + // Ensure that all the groups in this accordion are closed, unless close-others explicitly says not to + this.closeOthers = function(openGroup) { + var closeOthers = angular.isDefined($attrs.closeOthers) ? + $scope.$eval($attrs.closeOthers) : accordionConfig.closeOthers; + if (closeOthers) { + angular.forEach(this.groups, function(group) { + if (group !== openGroup) { + group.isOpen = false; + } + }); + } + }; + + // This is called from the accordion-group directive to add itself to the accordion + this.addGroup = function(groupScope) { + var that = this; + this.groups.push(groupScope); + + groupScope.$on('$destroy', function(event) { + that.removeGroup(groupScope); + }); + }; + + // This is called from the accordion-group directive when to remove itself + this.removeGroup = function(group) { + var index = this.groups.indexOf(group); + if (index !== -1) { + this.groups.splice(index, 1); + } + }; + +}]) + +// The accordion directive simply sets up the directive controller +// and adds an accordion CSS class to itself element. +.directive('uibAccordion', function() { + return { + controller: 'UibAccordionController', + controllerAs: 'accordion', + transclude: true, + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/accordion/accordion.html'; + } + }; +}) + +// The accordion-group directive indicates a block of html that will expand and collapse in an accordion +.directive('uibAccordionGroup', function() { + return { + require: '^uibAccordion', // We need this directive to be inside an accordion + transclude: true, // It transcludes the contents of the directive into the template + replace: true, // The element containing the directive will be replaced with the template + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/accordion/accordion-group.html'; + }, + scope: { + heading: '@', // Interpolate the heading attribute onto this scope + isOpen: '=?', + isDisabled: '=?' + }, + controller: function() { + this.setHeading = function(element) { + this.heading = element; + }; + }, + link: function(scope, element, attrs, accordionCtrl) { + accordionCtrl.addGroup(scope); + + scope.openClass = attrs.openClass || 'panel-open'; + scope.panelClass = attrs.panelClass; + scope.$watch('isOpen', function(value) { + element.toggleClass(scope.openClass, !!value); + if (value) { + accordionCtrl.closeOthers(scope); + } + }); + + scope.toggleOpen = function($event) { + if (!scope.isDisabled) { + if (!$event || $event.which === 32) { + scope.isOpen = !scope.isOpen; + } + } + }; + } + }; +}) + +// Use accordion-heading below an accordion-group to provide a heading containing HTML +.directive('uibAccordionHeading', function() { + return { + transclude: true, // Grab the contents to be used as the heading + template: '', // In effect remove this element! + replace: true, + require: '^uibAccordionGroup', + link: function(scope, element, attrs, accordionGroupCtrl, transclude) { + // Pass the heading to the accordion-group controller + // so that it can be transcluded into the right place in the template + // [The second parameter to transclude causes the elements to be cloned so that they work in ng-repeat] + accordionGroupCtrl.setHeading(transclude(scope, angular.noop)); + } + }; +}) + +// Use in the accordion-group template to indicate where you want the heading to be transcluded +// You must provide the property on the accordion-group controller that will hold the transcluded element +.directive('uibAccordionTransclude', function() { + return { + require: ['?^uibAccordionGroup', '?^accordionGroup'], + link: function(scope, element, attrs, controller) { + controller = controller[0] ? controller[0] : controller[1]; // Delete after we remove deprecation + scope.$watch(function() { return controller[attrs.uibAccordionTransclude]; }, function(heading) { + if (heading) { + element.find('span').html(''); + element.find('span').append(heading); + } + }); + } + }; +}); + +/* Deprecated accordion below */ + +angular.module('ui.bootstrap.accordion') + + .value('$accordionSuppressWarning', false) + + .controller('AccordionController', ['$scope', '$attrs', '$controller', '$log', '$accordionSuppressWarning', function($scope, $attrs, $controller, $log, $accordionSuppressWarning) { + if (!$accordionSuppressWarning) { + $log.warn('AccordionController is now deprecated. Use UibAccordionController instead.'); + } + + angular.extend(this, $controller('UibAccordionController', { + $scope: $scope, + $attrs: $attrs + })); + }]) + + .directive('accordion', ['$log', '$accordionSuppressWarning', function($log, $accordionSuppressWarning) { + return { + restrict: 'EA', + controller: 'AccordionController', + controllerAs: 'accordion', + transclude: true, + replace: false, + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/accordion/accordion.html'; + }, + link: function() { + if (!$accordionSuppressWarning) { + $log.warn('accordion is now deprecated. Use uib-accordion instead.'); + } + } + }; + }]) + + .directive('accordionGroup', ['$log', '$accordionSuppressWarning', function($log, $accordionSuppressWarning) { + return { + require: '^accordion', // We need this directive to be inside an accordion + restrict: 'EA', + transclude: true, // It transcludes the contents of the directive into the template + replace: true, // The element containing the directive will be replaced with the template + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/accordion/accordion-group.html'; + }, + scope: { + heading: '@', // Interpolate the heading attribute onto this scope + isOpen: '=?', + isDisabled: '=?' + }, + controller: function() { + this.setHeading = function(element) { + this.heading = element; + }; + }, + link: function(scope, element, attrs, accordionCtrl) { + if (!$accordionSuppressWarning) { + $log.warn('accordion-group is now deprecated. Use uib-accordion-group instead.'); + } + + accordionCtrl.addGroup(scope); + + scope.openClass = attrs.openClass || 'panel-open'; + scope.panelClass = attrs.panelClass; + scope.$watch('isOpen', function(value) { + element.toggleClass(scope.openClass, !!value); + if (value) { + accordionCtrl.closeOthers(scope); + } + }); + + scope.toggleOpen = function($event) { + if (!scope.isDisabled) { + if (!$event || $event.which === 32) { + scope.isOpen = !scope.isOpen; + } + } + }; + } + }; + }]) + + .directive('accordionHeading', ['$log', '$accordionSuppressWarning', function($log, $accordionSuppressWarning) { + return { + restrict: 'EA', + transclude: true, // Grab the contents to be used as the heading + template: '', // In effect remove this element! + replace: true, + require: '^accordionGroup', + link: function(scope, element, attr, accordionGroupCtrl, transclude) { + if (!$accordionSuppressWarning) { + $log.warn('accordion-heading is now deprecated. Use uib-accordion-heading instead.'); + } + // Pass the heading to the accordion-group controller + // so that it can be transcluded into the right place in the template + // [The second parameter to transclude causes the elements to be cloned so that they work in ng-repeat] + accordionGroupCtrl.setHeading(transclude(scope, angular.noop)); + } + }; + }]) + + .directive('accordionTransclude', ['$log', '$accordionSuppressWarning', function($log, $accordionSuppressWarning) { + return { + require: '^accordionGroup', + link: function(scope, element, attr, controller) { + if (!$accordionSuppressWarning) { + $log.warn('accordion-transclude is now deprecated. Use uib-accordion-transclude instead.'); + } + + scope.$watch(function() { return controller[attr.accordionTransclude]; }, function(heading) { + if (heading) { + element.find('span').html(''); + element.find('span').append(heading); + } + }); + } + }; + }]); + + +angular.module('ui.bootstrap.alert', []) + +.controller('UibAlertController', ['$scope', '$attrs', '$interpolate', '$timeout', function($scope, $attrs, $interpolate, $timeout) { + $scope.closeable = !!$attrs.close; + + var dismissOnTimeout = angular.isDefined($attrs.dismissOnTimeout) ? + $interpolate($attrs.dismissOnTimeout)($scope.$parent) : null; + + if (dismissOnTimeout) { + $timeout(function() { + $scope.close(); + }, parseInt(dismissOnTimeout, 10)); + } +}]) + +.directive('uibAlert', function() { + return { + controller: 'UibAlertController', + controllerAs: 'alert', + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/alert/alert.html'; + }, + transclude: true, + replace: true, + scope: { + type: '@', + close: '&' + } + }; +}); + +/* Deprecated alert below */ + +angular.module('ui.bootstrap.alert') + + .value('$alertSuppressWarning', false) + + .controller('AlertController', ['$scope', '$attrs', '$controller', '$log', '$alertSuppressWarning', function($scope, $attrs, $controller, $log, $alertSuppressWarning) { + if (!$alertSuppressWarning) { + $log.warn('AlertController is now deprecated. Use UibAlertController instead.'); + } + + angular.extend(this, $controller('UibAlertController', { + $scope: $scope, + $attrs: $attrs + })); + }]) + + .directive('alert', ['$log', '$alertSuppressWarning', function($log, $alertSuppressWarning) { + return { + controller: 'AlertController', + controllerAs: 'alert', + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/alert/alert.html'; + }, + transclude: true, + replace: true, + scope: { + type: '@', + close: '&' + }, + link: function() { + if (!$alertSuppressWarning) { + $log.warn('alert is now deprecated. Use uib-alert instead.'); + } + } + }; + }]); + +angular.module('ui.bootstrap.buttons', []) + +.constant('uibButtonConfig', { + activeClass: 'active', + toggleEvent: 'click' +}) + +.controller('UibButtonsController', ['uibButtonConfig', function(buttonConfig) { + this.activeClass = buttonConfig.activeClass || 'active'; + this.toggleEvent = buttonConfig.toggleEvent || 'click'; +}]) + +.directive('uibBtnRadio', function() { + return { + require: ['uibBtnRadio', 'ngModel'], + controller: 'UibButtonsController', + controllerAs: 'buttons', + link: function(scope, element, attrs, ctrls) { + var buttonsCtrl = ctrls[0], ngModelCtrl = ctrls[1]; + + element.find('input').css({display: 'none'}); + + //model -> UI + ngModelCtrl.$render = function() { + element.toggleClass(buttonsCtrl.activeClass, angular.equals(ngModelCtrl.$modelValue, scope.$eval(attrs.uibBtnRadio))); + }; + + //ui->model + element.on(buttonsCtrl.toggleEvent, function() { + if (attrs.disabled) { + return; + } + + var isActive = element.hasClass(buttonsCtrl.activeClass); + + if (!isActive || angular.isDefined(attrs.uncheckable)) { + scope.$apply(function() { + ngModelCtrl.$setViewValue(isActive ? null : scope.$eval(attrs.uibBtnRadio)); + ngModelCtrl.$render(); + }); + } + }); + } + }; +}) + +.directive('uibBtnCheckbox', function() { + return { + require: ['uibBtnCheckbox', 'ngModel'], + controller: 'UibButtonsController', + controllerAs: 'button', + link: function(scope, element, attrs, ctrls) { + var buttonsCtrl = ctrls[0], ngModelCtrl = ctrls[1]; + + element.find('input').css({display: 'none'}); + + function getTrueValue() { + return getCheckboxValue(attrs.btnCheckboxTrue, true); + } + + function getFalseValue() { + return getCheckboxValue(attrs.btnCheckboxFalse, false); + } + + function getCheckboxValue(attribute, defaultValue) { + return angular.isDefined(attribute) ? scope.$eval(attribute) : defaultValue; + } + + //model -> UI + ngModelCtrl.$render = function() { + element.toggleClass(buttonsCtrl.activeClass, angular.equals(ngModelCtrl.$modelValue, getTrueValue())); + }; + + //ui->model + element.on(buttonsCtrl.toggleEvent, function() { + if (attrs.disabled) { + return; + } + + scope.$apply(function() { + ngModelCtrl.$setViewValue(element.hasClass(buttonsCtrl.activeClass) ? getFalseValue() : getTrueValue()); + ngModelCtrl.$render(); + }); + }); + } + }; +}); + +/* Deprecated buttons below */ + +angular.module('ui.bootstrap.buttons') + + .value('$buttonsSuppressWarning', false) + + .controller('ButtonsController', ['$controller', '$log', '$buttonsSuppressWarning', function($controller, $log, $buttonsSuppressWarning) { + if (!$buttonsSuppressWarning) { + $log.warn('ButtonsController is now deprecated. Use UibButtonsController instead.'); + } + + angular.extend(this, $controller('UibButtonsController')); + }]) + + .directive('btnRadio', ['$log', '$buttonsSuppressWarning', function($log, $buttonsSuppressWarning) { + return { + require: ['btnRadio', 'ngModel'], + controller: 'ButtonsController', + controllerAs: 'buttons', + link: function(scope, element, attrs, ctrls) { + if (!$buttonsSuppressWarning) { + $log.warn('btn-radio is now deprecated. Use uib-btn-radio instead.'); + } + + var buttonsCtrl = ctrls[0], ngModelCtrl = ctrls[1]; + + element.find('input').css({display: 'none'}); + + //model -> UI + ngModelCtrl.$render = function() { + element.toggleClass(buttonsCtrl.activeClass, angular.equals(ngModelCtrl.$modelValue, scope.$eval(attrs.btnRadio))); + }; + + //ui->model + element.bind(buttonsCtrl.toggleEvent, function() { + if (attrs.disabled) { + return; + } + + var isActive = element.hasClass(buttonsCtrl.activeClass); + + if (!isActive || angular.isDefined(attrs.uncheckable)) { + scope.$apply(function() { + ngModelCtrl.$setViewValue(isActive ? null : scope.$eval(attrs.btnRadio)); + ngModelCtrl.$render(); + }); + } + }); + } + }; + }]) + + .directive('btnCheckbox', ['$document', '$log', '$buttonsSuppressWarning', function($document, $log, $buttonsSuppressWarning) { + return { + require: ['btnCheckbox', 'ngModel'], + controller: 'ButtonsController', + controllerAs: 'button', + link: function(scope, element, attrs, ctrls) { + if (!$buttonsSuppressWarning) { + $log.warn('btn-checkbox is now deprecated. Use uib-btn-checkbox instead.'); + } + + var buttonsCtrl = ctrls[0], ngModelCtrl = ctrls[1]; + + element.find('input').css({display: 'none'}); + + function getTrueValue() { + return getCheckboxValue(attrs.btnCheckboxTrue, true); + } + + function getFalseValue() { + return getCheckboxValue(attrs.btnCheckboxFalse, false); + } + + function getCheckboxValue(attributeValue, defaultValue) { + var val = scope.$eval(attributeValue); + return angular.isDefined(val) ? val : defaultValue; + } + + //model -> UI + ngModelCtrl.$render = function() { + element.toggleClass(buttonsCtrl.activeClass, angular.equals(ngModelCtrl.$modelValue, getTrueValue())); + }; + + //ui->model + element.bind(buttonsCtrl.toggleEvent, function() { + if (attrs.disabled) { + return; + } + + scope.$apply(function() { + ngModelCtrl.$setViewValue(element.hasClass(buttonsCtrl.activeClass) ? getFalseValue() : getTrueValue()); + ngModelCtrl.$render(); + }); + }); + + //accessibility + element.on('keypress', function(e) { + if (attrs.disabled || e.which !== 32 || $document[0].activeElement !== element[0]) { + return; + } + + scope.$apply(function() { + ngModelCtrl.$setViewValue(element.hasClass(buttonsCtrl.activeClass) ? getFalseValue() : getTrueValue()); + ngModelCtrl.$render(); + }); + }); + } + }; + }]); + + +/** + * @ngdoc overview + * @name ui.bootstrap.carousel + * + * @description + * AngularJS version of an image carousel. + * + */ +angular.module('ui.bootstrap.carousel', []) + +.controller('UibCarouselController', ['$scope', '$element', '$interval', '$animate', function($scope, $element, $interval, $animate) { + var self = this, + slides = self.slides = $scope.slides = [], + NEW_ANIMATE = angular.version.minor >= 4, + NO_TRANSITION = 'uib-noTransition', + SLIDE_DIRECTION = 'uib-slideDirection', + currentIndex = -1, + currentInterval, isPlaying; + self.currentSlide = null; + + var destroyed = false; + /* direction: "prev" or "next" */ + self.select = $scope.select = function(nextSlide, direction) { + var nextIndex = $scope.indexOfSlide(nextSlide); + //Decide direction if it's not given + if (direction === undefined) { + direction = nextIndex > self.getCurrentIndex() ? 'next' : 'prev'; + } + //Prevent this user-triggered transition from occurring if there is already one in progress + if (nextSlide && nextSlide !== self.currentSlide && !$scope.$currentTransition) { + goNext(nextSlide, nextIndex, direction); + } + }; + + function goNext(slide, index, direction) { + // Scope has been destroyed, stop here. + if (destroyed) { return; } + + angular.extend(slide, {direction: direction, active: true}); + angular.extend(self.currentSlide || {}, {direction: direction, active: false}); + if ($animate.enabled() && !$scope.noTransition && !$scope.$currentTransition && + slide.$element && self.slides.length > 1) { + slide.$element.data(SLIDE_DIRECTION, slide.direction); + if (self.currentSlide && self.currentSlide.$element) { + self.currentSlide.$element.data(SLIDE_DIRECTION, slide.direction); + } + + $scope.$currentTransition = true; + if (NEW_ANIMATE) { + $animate.on('addClass', slide.$element, function(element, phase) { + if (phase === 'close') { + $scope.$currentTransition = null; + $animate.off('addClass', element); + } + }); + } else { + slide.$element.one('$animate:close', function closeFn() { + $scope.$currentTransition = null; + }); + } + } + + self.currentSlide = slide; + currentIndex = index; + + //every time you change slides, reset the timer + restartTimer(); + } + + $scope.$on('$destroy', function() { + destroyed = true; + }); + + function getSlideByIndex(index) { + if (angular.isUndefined(slides[index].index)) { + return slides[index]; + } + var i, len = slides.length; + for (i = 0; i < slides.length; ++i) { + if (slides[i].index == index) { + return slides[i]; + } + } + } + + self.getCurrentIndex = function() { + if (self.currentSlide && angular.isDefined(self.currentSlide.index)) { + return +self.currentSlide.index; + } + return currentIndex; + }; + + /* Allow outside people to call indexOf on slides array */ + $scope.indexOfSlide = function(slide) { + return angular.isDefined(slide.index) ? +slide.index : slides.indexOf(slide); + }; + + $scope.next = function() { + var newIndex = (self.getCurrentIndex() + 1) % slides.length; + + if (newIndex === 0 && $scope.noWrap()) { + $scope.pause(); + return; + } + + return self.select(getSlideByIndex(newIndex), 'next'); + }; + + $scope.prev = function() { + var newIndex = self.getCurrentIndex() - 1 < 0 ? slides.length - 1 : self.getCurrentIndex() - 1; + + if ($scope.noWrap() && newIndex === slides.length - 1) { + $scope.pause(); + return; + } + + return self.select(getSlideByIndex(newIndex), 'prev'); + }; + + $scope.isActive = function(slide) { + return self.currentSlide === slide; + }; + + $scope.$watch('interval', restartTimer); + $scope.$watchCollection('slides', resetTransition); + $scope.$on('$destroy', resetTimer); + + function restartTimer() { + resetTimer(); + var interval = +$scope.interval; + if (!isNaN(interval) && interval > 0) { + currentInterval = $interval(timerFn, interval); + } + } + + function resetTimer() { + if (currentInterval) { + $interval.cancel(currentInterval); + currentInterval = null; + } + } + + function timerFn() { + var interval = +$scope.interval; + if (isPlaying && !isNaN(interval) && interval > 0 && slides.length) { + $scope.next(); + } else { + $scope.pause(); + } + } + + function resetTransition(slides) { + if (!slides.length) { + $scope.$currentTransition = null; + } + } + + $scope.play = function() { + if (!isPlaying) { + isPlaying = true; + restartTimer(); + } + }; + $scope.pause = function() { + if (!$scope.noPause) { + isPlaying = false; + resetTimer(); + } + }; + + self.addSlide = function(slide, element) { + slide.$element = element; + slides.push(slide); + //if this is the first slide or the slide is set to active, select it + if (slides.length === 1 || slide.active) { + self.select(slides[slides.length - 1]); + if (slides.length === 1) { + $scope.play(); + } + } else { + slide.active = false; + } + }; + + self.removeSlide = function(slide) { + if (angular.isDefined(slide.index)) { + slides.sort(function(a, b) { + return +a.index > +b.index; + }); + } + //get the index of the slide inside the carousel + var index = slides.indexOf(slide); + slides.splice(index, 1); + if (slides.length > 0 && slide.active) { + if (index >= slides.length) { + self.select(slides[index - 1]); + } else { + self.select(slides[index]); + } + } else if (currentIndex > index) { + currentIndex--; + } + + //clean the currentSlide when no more slide + if (slides.length === 0) { + self.currentSlide = null; + } + }; + + $scope.$watch('noTransition', function(noTransition) { + $element.data(NO_TRANSITION, noTransition); + }); + +}]) + +/** + * @ngdoc directive + * @name ui.bootstrap.carousel.directive:carousel + * @restrict EA + * + * @description + * Carousel is the outer container for a set of image 'slides' to showcase. + * + * @param {number=} interval The time, in milliseconds, that it will take the carousel to go to the next slide. + * @param {boolean=} noTransition Whether to disable transitions on the carousel. + * @param {boolean=} noPause Whether to disable pausing on the carousel (by default, the carousel interval pauses on hover). + * + * @example + + + + + + + + + + + + + + + .carousel-indicators { + top: auto; + bottom: 15px; + } + + + */ +.directive('uibCarousel', [function() { + return { + transclude: true, + replace: true, + controller: 'UibCarouselController', + controllerAs: 'carousel', + require: 'carousel', + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/carousel/carousel.html'; + }, + scope: { + interval: '=', + noTransition: '=', + noPause: '=', + noWrap: '&' + } + }; +}]) + +/** + * @ngdoc directive + * @name ui.bootstrap.carousel.directive:slide + * @restrict EA + * + * @description + * Creates a slide inside a {@link ui.bootstrap.carousel.directive:carousel carousel}. Must be placed as a child of a carousel element. + * + * @param {boolean=} active Model binding, whether or not this slide is currently active. + * @param {number=} index The index of the slide. The slides will be sorted by this parameter. + * + * @example + + +
+ + + + + + + Interval, in milliseconds: +
Enter a negative number to stop the interval. +
+
+ +function CarouselDemoCtrl($scope) { + $scope.myInterval = 5000; +} + + + .carousel-indicators { + top: auto; + bottom: 15px; + } + +
+*/ + +.directive('uibSlide', function() { + return { + require: '^uibCarousel', + restrict: 'EA', + transclude: true, + replace: true, + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/carousel/slide.html'; + }, + scope: { + active: '=?', + actual: '=?', + index: '=?' + }, + link: function (scope, element, attrs, carouselCtrl) { + carouselCtrl.addSlide(scope, element); + //when the scope is destroyed then remove the slide from the current slides array + scope.$on('$destroy', function() { + carouselCtrl.removeSlide(scope); + }); + + scope.$watch('active', function(active) { + if (active) { + carouselCtrl.select(scope); + } + }); + } + }; +}) + +.animation('.item', [ + '$injector', '$animate', +function ($injector, $animate) { + var NO_TRANSITION = 'uib-noTransition', + SLIDE_DIRECTION = 'uib-slideDirection', + $animateCss = null; + + if ($injector.has('$animateCss')) { + $animateCss = $injector.get('$animateCss'); + } + + function removeClass(element, className, callback) { + element.removeClass(className); + if (callback) { + callback(); + } + } + + return { + beforeAddClass: function(element, className, done) { + // Due to transclusion, noTransition property is on parent's scope + if (className == 'active' && element.parent() && element.parent().parent() && + !element.parent().parent().data(NO_TRANSITION)) { + var stopped = false; + var direction = element.data(SLIDE_DIRECTION); + var directionClass = direction == 'next' ? 'left' : 'right'; + var removeClassFn = removeClass.bind(this, element, + directionClass + ' ' + direction, done); + element.addClass(direction); + + if ($animateCss) { + $animateCss(element, {addClass: directionClass}) + .start() + .done(removeClassFn); + } else { + $animate.addClass(element, directionClass).then(function () { + if (!stopped) { + removeClassFn(); + } + done(); + }); + } + + return function () { + stopped = true; + }; + } + done(); + }, + beforeRemoveClass: function (element, className, done) { + // Due to transclusion, noTransition property is on parent's scope + if (className === 'active' && element.parent() && element.parent().parent() && + !element.parent().parent().data(NO_TRANSITION)) { + var stopped = false; + var direction = element.data(SLIDE_DIRECTION); + var directionClass = direction == 'next' ? 'left' : 'right'; + var removeClassFn = removeClass.bind(this, element, directionClass, done); + + if ($animateCss) { + $animateCss(element, {addClass: directionClass}) + .start() + .done(removeClassFn); + } else { + $animate.addClass(element, directionClass).then(function() { + if (!stopped) { + removeClassFn(); + } + done(); + }); + } + return function() { + stopped = true; + }; + } + done(); + } + }; +}]); + +/* deprecated carousel below */ + +angular.module('ui.bootstrap.carousel') + +.value('$carouselSuppressWarning', false) + +.controller('CarouselController', ['$scope', '$element', '$controller', '$log', '$carouselSuppressWarning', function($scope, $element, $controller, $log, $carouselSuppressWarning) { + if (!$carouselSuppressWarning) { + $log.warn('CarouselController is now deprecated. Use UibCarouselController instead.'); + } + + angular.extend(this, $controller('UibCarouselController', { + $scope: $scope, + $element: $element + })); +}]) + +.directive('carousel', ['$log', '$carouselSuppressWarning', function($log, $carouselSuppressWarning) { + return { + transclude: true, + replace: true, + controller: 'CarouselController', + controllerAs: 'carousel', + require: 'carousel', + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/carousel/carousel.html'; + }, + scope: { + interval: '=', + noTransition: '=', + noPause: '=', + noWrap: '&' + }, + link: function() { + if (!$carouselSuppressWarning) { + $log.warn('carousel is now deprecated. Use uib-carousel instead.'); + } + } + }; +}]) + +.directive('slide', ['$log', '$carouselSuppressWarning', function($log, $carouselSuppressWarning) { + return { + require: '^carousel', + transclude: true, + replace: true, + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/carousel/slide.html'; + }, + scope: { + active: '=?', + actual: '=?', + index: '=?' + }, + link: function (scope, element, attrs, carouselCtrl) { + if (!$carouselSuppressWarning) { + $log.warn('slide is now deprecated. Use uib-slide instead.'); + } + + carouselCtrl.addSlide(scope, element); + //when the scope is destroyed then remove the slide from the current slides array + scope.$on('$destroy', function() { + carouselCtrl.removeSlide(scope); + }); + + scope.$watch('active', function(active) { + if (active) { + carouselCtrl.select(scope); + } + }); + } + }; +}]); + +angular.module('ui.bootstrap.dateparser', []) + +.service('uibDateParser', ['$log', '$locale', 'orderByFilter', function($log, $locale, orderByFilter) { + // Pulled from https://github.com/mbostock/d3/blob/master/src/format/requote.js + var SPECIAL_CHARACTERS_REGEXP = /[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g; + + var localeId; + var formatCodeToRegex; + + this.init = function() { + localeId = $locale.id; + + this.parsers = {}; + + formatCodeToRegex = { + 'yyyy': { + regex: '\\d{4}', + apply: function(value) { this.year = +value; } + }, + 'yy': { + regex: '\\d{2}', + apply: function(value) { this.year = +value + 2000; } + }, + 'y': { + regex: '\\d{1,4}', + apply: function(value) { this.year = +value; } + }, + 'MMMM': { + regex: $locale.DATETIME_FORMATS.MONTH.join('|'), + apply: function(value) { this.month = $locale.DATETIME_FORMATS.MONTH.indexOf(value); } + }, + 'MMM': { + regex: $locale.DATETIME_FORMATS.SHORTMONTH.join('|'), + apply: function(value) { this.month = $locale.DATETIME_FORMATS.SHORTMONTH.indexOf(value); } + }, + 'MM': { + regex: '0[1-9]|1[0-2]', + apply: function(value) { this.month = value - 1; } + }, + 'M': { + regex: '[1-9]|1[0-2]', + apply: function(value) { this.month = value - 1; } + }, + 'dd': { + regex: '[0-2][0-9]{1}|3[0-1]{1}', + apply: function(value) { this.date = +value; } + }, + 'd': { + regex: '[1-2]?[0-9]{1}|3[0-1]{1}', + apply: function(value) { this.date = +value; } + }, + 'EEEE': { + regex: $locale.DATETIME_FORMATS.DAY.join('|') + }, + 'EEE': { + regex: $locale.DATETIME_FORMATS.SHORTDAY.join('|') + }, + 'HH': { + regex: '(?:0|1)[0-9]|2[0-3]', + apply: function(value) { this.hours = +value; } + }, + 'hh': { + regex: '0[0-9]|1[0-2]', + apply: function(value) { this.hours = +value; } + }, + 'H': { + regex: '1?[0-9]|2[0-3]', + apply: function(value) { this.hours = +value; } + }, + 'h': { + regex: '[0-9]|1[0-2]', + apply: function(value) { this.hours = +value; } + }, + 'mm': { + regex: '[0-5][0-9]', + apply: function(value) { this.minutes = +value; } + }, + 'm': { + regex: '[0-9]|[1-5][0-9]', + apply: function(value) { this.minutes = +value; } + }, + 'sss': { + regex: '[0-9][0-9][0-9]', + apply: function(value) { this.milliseconds = +value; } + }, + 'ss': { + regex: '[0-5][0-9]', + apply: function(value) { this.seconds = +value; } + }, + 's': { + regex: '[0-9]|[1-5][0-9]', + apply: function(value) { this.seconds = +value; } + }, + 'a': { + regex: $locale.DATETIME_FORMATS.AMPMS.join('|'), + apply: function(value) { + if (this.hours === 12) { + this.hours = 0; + } + + if (value === 'PM') { + this.hours += 12; + } + } + } + }; + }; + + this.init(); + + function createParser(format) { + var map = [], regex = format.split(''); + + angular.forEach(formatCodeToRegex, function(data, code) { + var index = format.indexOf(code); + + if (index > -1) { + format = format.split(''); + + regex[index] = '(' + data.regex + ')'; + format[index] = '$'; // Custom symbol to define consumed part of format + for (var i = index + 1, n = index + code.length; i < n; i++) { + regex[i] = ''; + format[i] = '$'; + } + format = format.join(''); + + map.push({ index: index, apply: data.apply }); + } + }); + + return { + regex: new RegExp('^' + regex.join('') + '$'), + map: orderByFilter(map, 'index') + }; + } + + this.parse = function(input, format, baseDate) { + if (!angular.isString(input) || !format) { + return input; + } + + format = $locale.DATETIME_FORMATS[format] || format; + format = format.replace(SPECIAL_CHARACTERS_REGEXP, '\\$&'); + + if ($locale.id !== localeId) { + this.init(); + } + + if (!this.parsers[format]) { + this.parsers[format] = createParser(format); + } + + var parser = this.parsers[format], + regex = parser.regex, + map = parser.map, + results = input.match(regex); + + if (results && results.length) { + var fields, dt; + if (angular.isDate(baseDate) && !isNaN(baseDate.getTime())) { + fields = { + year: baseDate.getFullYear(), + month: baseDate.getMonth(), + date: baseDate.getDate(), + hours: baseDate.getHours(), + minutes: baseDate.getMinutes(), + seconds: baseDate.getSeconds(), + milliseconds: baseDate.getMilliseconds() + }; + } else { + if (baseDate) { + $log.warn('dateparser:', 'baseDate is not a valid date'); + } + fields = { year: 1900, month: 0, date: 1, hours: 0, minutes: 0, seconds: 0, milliseconds: 0 }; + } + + for (var i = 1, n = results.length; i < n; i++) { + var mapper = map[i-1]; + if (mapper.apply) { + mapper.apply.call(fields, results[i]); + } + } + + if (isValid(fields.year, fields.month, fields.date)) { + if (angular.isDate(baseDate) && !isNaN(baseDate.getTime())) { + dt = new Date(baseDate); + dt.setFullYear(fields.year, fields.month, fields.date, + fields.hours, fields.minutes, fields.seconds, + fields.milliseconds || 0); + } else { + dt = new Date(fields.year, fields.month, fields.date, + fields.hours, fields.minutes, fields.seconds, + fields.milliseconds || 0); + } + } + + return dt; + } + }; + + // Check if date is valid for specific month (and year for February). + // Month: 0 = Jan, 1 = Feb, etc + function isValid(year, month, date) { + if (date < 1) { + return false; + } + + if (month === 1 && date > 28) { + return date === 29 && ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0); + } + + if (month === 3 || month === 5 || month === 8 || month === 10) { + return date < 31; + } + + return true; + } +}]); + +/* Deprecated dateparser below */ + +angular.module('ui.bootstrap.dateparser') + +.value('$dateParserSuppressWarning', false) + +.service('dateParser', ['$log', '$dateParserSuppressWarning', 'uibDateParser', function($log, $dateParserSuppressWarning, uibDateParser) { + if (!$dateParserSuppressWarning) { + $log.warn('dateParser is now deprecated. Use uibDateParser instead.'); + } + + angular.extend(this, uibDateParser); +}]); + +angular.module('ui.bootstrap.position', []) + +/** + * A set of utility methods that can be use to retrieve position of DOM elements. + * It is meant to be used where we need to absolute-position DOM elements in + * relation to other, existing elements (this is the case for tooltips, popovers, + * typeahead suggestions etc.). + */ + .factory('$uibPosition', ['$document', '$window', function($document, $window) { + function getStyle(el, cssprop) { + if (el.currentStyle) { //IE + return el.currentStyle[cssprop]; + } else if ($window.getComputedStyle) { + return $window.getComputedStyle(el)[cssprop]; + } + // finally try and get inline style + return el.style[cssprop]; + } + + /** + * Checks if a given element is statically positioned + * @param element - raw DOM element + */ + function isStaticPositioned(element) { + return (getStyle(element, 'position') || 'static' ) === 'static'; + } + + /** + * returns the closest, non-statically positioned parentOffset of a given element + * @param element + */ + var parentOffsetEl = function(element) { + var docDomEl = $document[0]; + var offsetParent = element.offsetParent || docDomEl; + while (offsetParent && offsetParent !== docDomEl && isStaticPositioned(offsetParent) ) { + offsetParent = offsetParent.offsetParent; + } + return offsetParent || docDomEl; + }; + + return { + /** + * Provides read-only equivalent of jQuery's position function: + * http://api.jquery.com/position/ + */ + position: function(element) { + var elBCR = this.offset(element); + var offsetParentBCR = { top: 0, left: 0 }; + var offsetParentEl = parentOffsetEl(element[0]); + if (offsetParentEl != $document[0]) { + offsetParentBCR = this.offset(angular.element(offsetParentEl)); + offsetParentBCR.top += offsetParentEl.clientTop - offsetParentEl.scrollTop; + offsetParentBCR.left += offsetParentEl.clientLeft - offsetParentEl.scrollLeft; + } + + var boundingClientRect = element[0].getBoundingClientRect(); + return { + width: boundingClientRect.width || element.prop('offsetWidth'), + height: boundingClientRect.height || element.prop('offsetHeight'), + top: elBCR.top - offsetParentBCR.top, + left: elBCR.left - offsetParentBCR.left + }; + }, + + /** + * Provides read-only equivalent of jQuery's offset function: + * http://api.jquery.com/offset/ + */ + offset: function(element) { + var boundingClientRect = element[0].getBoundingClientRect(); + return { + width: boundingClientRect.width || element.prop('offsetWidth'), + height: boundingClientRect.height || element.prop('offsetHeight'), + top: boundingClientRect.top + ($window.pageYOffset || $document[0].documentElement.scrollTop), + left: boundingClientRect.left + ($window.pageXOffset || $document[0].documentElement.scrollLeft) + }; + }, + + /** + * Provides coordinates for the targetEl in relation to hostEl + */ + positionElements: function(hostEl, targetEl, positionStr, appendToBody) { + var positionStrParts = positionStr.split('-'); + var pos0 = positionStrParts[0], pos1 = positionStrParts[1] || 'center'; + + var hostElPos, + targetElWidth, + targetElHeight, + targetElPos; + + hostElPos = appendToBody ? this.offset(hostEl) : this.position(hostEl); + + targetElWidth = targetEl.prop('offsetWidth'); + targetElHeight = targetEl.prop('offsetHeight'); + + var shiftWidth = { + center: function() { + return hostElPos.left + hostElPos.width / 2 - targetElWidth / 2; + }, + left: function() { + return hostElPos.left; + }, + right: function() { + return hostElPos.left + hostElPos.width; + } + }; + + var shiftHeight = { + center: function() { + return hostElPos.top + hostElPos.height / 2 - targetElHeight / 2; + }, + top: function() { + return hostElPos.top; + }, + bottom: function() { + return hostElPos.top + hostElPos.height; + } + }; + + switch (pos0) { + case 'right': + targetElPos = { + top: shiftHeight[pos1](), + left: shiftWidth[pos0]() + }; + break; + case 'left': + targetElPos = { + top: shiftHeight[pos1](), + left: hostElPos.left - targetElWidth + }; + break; + case 'bottom': + targetElPos = { + top: shiftHeight[pos0](), + left: shiftWidth[pos1]() + }; + break; + default: + targetElPos = { + top: hostElPos.top - targetElHeight, + left: shiftWidth[pos1]() + }; + break; + } + + return targetElPos; + } + }; + }]); + +/* Deprecated position below */ + +angular.module('ui.bootstrap.position') + +.value('$positionSuppressWarning', false) + +.service('$position', ['$log', '$positionSuppressWarning', '$uibPosition', function($log, $positionSuppressWarning, $uibPosition) { + if (!$positionSuppressWarning) { + $log.warn('$position is now deprecated. Use $uibPosition instead.'); + } + + angular.extend(this, $uibPosition); +}]); + +angular.module('ui.bootstrap.datepicker', ['ui.bootstrap.dateparser', 'ui.bootstrap.position']) + +.value('$datepickerSuppressError', false) + +.constant('uibDatepickerConfig', { + formatDay: 'dd', + formatMonth: 'MMMM', + formatYear: 'yyyy', + formatDayHeader: 'EEE', + formatDayTitle: 'MMMM yyyy', + formatMonthTitle: 'yyyy', + datepickerMode: 'day', + minMode: 'day', + maxMode: 'year', + showWeeks: true, + startingDay: 0, + yearRange: 20, + minDate: null, + maxDate: null, + shortcutPropagation: false +}) + +.controller('UibDatepickerController', ['$scope', '$attrs', '$parse', '$interpolate', '$log', 'dateFilter', 'uibDatepickerConfig', '$datepickerSuppressError', function($scope, $attrs, $parse, $interpolate, $log, dateFilter, datepickerConfig, $datepickerSuppressError) { + var self = this, + ngModelCtrl = { $setViewValue: angular.noop }; // nullModelCtrl; + + // Modes chain + this.modes = ['day', 'month', 'year']; + + // Configuration attributes + angular.forEach(['formatDay', 'formatMonth', 'formatYear', 'formatDayHeader', 'formatDayTitle', 'formatMonthTitle', + 'showWeeks', 'startingDay', 'yearRange', 'shortcutPropagation'], function(key, index) { + self[key] = angular.isDefined($attrs[key]) ? (index < 6 ? $interpolate($attrs[key])($scope.$parent) : $scope.$parent.$eval($attrs[key])) : datepickerConfig[key]; + }); + + // Watchable date attributes + angular.forEach(['minDate', 'maxDate'], function(key) { + if ($attrs[key]) { + $scope.$parent.$watch($parse($attrs[key]), function(value) { + self[key] = value ? new Date(value) : null; + self.refreshView(); + }); + } else { + self[key] = datepickerConfig[key] ? new Date(datepickerConfig[key]) : null; + } + }); + + angular.forEach(['minMode', 'maxMode'], function(key) { + if ($attrs[key]) { + $scope.$parent.$watch($parse($attrs[key]), function(value) { + self[key] = angular.isDefined(value) ? value : $attrs[key]; + $scope[key] = self[key]; + if ((key == 'minMode' && self.modes.indexOf($scope.datepickerMode) < self.modes.indexOf(self[key])) || (key == 'maxMode' && self.modes.indexOf($scope.datepickerMode) > self.modes.indexOf(self[key]))) { + $scope.datepickerMode = self[key]; + } + }); + } else { + self[key] = datepickerConfig[key] || null; + $scope[key] = self[key]; + } + }); + + $scope.datepickerMode = $scope.datepickerMode || datepickerConfig.datepickerMode; + $scope.uniqueId = 'datepicker-' + $scope.$id + '-' + Math.floor(Math.random() * 10000); + + if (angular.isDefined($attrs.initDate)) { + this.activeDate = $scope.$parent.$eval($attrs.initDate) || new Date(); + $scope.$parent.$watch($attrs.initDate, function(initDate) { + if (initDate && (ngModelCtrl.$isEmpty(ngModelCtrl.$modelValue) || ngModelCtrl.$invalid)) { + self.activeDate = initDate; + self.refreshView(); + } + }); + } else { + this.activeDate = new Date(); + } + + $scope.isActive = function(dateObject) { + if (self.compare(dateObject.date, self.activeDate) === 0) { + $scope.activeDateId = dateObject.uid; + return true; + } + return false; + }; + + this.init = function(ngModelCtrl_) { + ngModelCtrl = ngModelCtrl_; + + ngModelCtrl.$render = function() { + self.render(); + }; + }; + + this.render = function() { + if (ngModelCtrl.$viewValue) { + var date = new Date(ngModelCtrl.$viewValue), + isValid = !isNaN(date); + + if (isValid) { + this.activeDate = date; + } else if (!$datepickerSuppressError) { + $log.error('Datepicker directive: "ng-model" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.'); + } + } + this.refreshView(); + }; + + this.refreshView = function() { + if (this.element) { + this._refreshView(); + + var date = ngModelCtrl.$viewValue ? new Date(ngModelCtrl.$viewValue) : null; + ngModelCtrl.$setValidity('dateDisabled', !date || (this.element && !this.isDisabled(date))); + } + }; + + this.createDateObject = function(date, format) { + var model = ngModelCtrl.$viewValue ? new Date(ngModelCtrl.$viewValue) : null; + return { + date: date, + label: dateFilter(date, format), + selected: model && this.compare(date, model) === 0, + disabled: this.isDisabled(date), + current: this.compare(date, new Date()) === 0, + customClass: this.customClass(date) + }; + }; + + this.isDisabled = function(date) { + return ((this.minDate && this.compare(date, this.minDate) < 0) || (this.maxDate && this.compare(date, this.maxDate) > 0) || ($attrs.dateDisabled && $scope.dateDisabled({date: date, mode: $scope.datepickerMode}))); + }; + + this.customClass = function(date) { + return $scope.customClass({date: date, mode: $scope.datepickerMode}); + }; + + // Split array into smaller arrays + this.split = function(arr, size) { + var arrays = []; + while (arr.length > 0) { + arrays.push(arr.splice(0, size)); + } + return arrays; + }; + + $scope.select = function(date) { + if ($scope.datepickerMode === self.minMode) { + var dt = ngModelCtrl.$viewValue ? new Date(ngModelCtrl.$viewValue) : new Date(0, 0, 0, 0, 0, 0, 0); + dt.setFullYear(date.getFullYear(), date.getMonth(), date.getDate()); + ngModelCtrl.$setViewValue(dt); + ngModelCtrl.$render(); + } else { + self.activeDate = date; + $scope.datepickerMode = self.modes[self.modes.indexOf($scope.datepickerMode) - 1]; + } + }; + + $scope.move = function(direction) { + var year = self.activeDate.getFullYear() + direction * (self.step.years || 0), + month = self.activeDate.getMonth() + direction * (self.step.months || 0); + self.activeDate.setFullYear(year, month, 1); + self.refreshView(); + }; + + $scope.toggleMode = function(direction) { + direction = direction || 1; + + if (($scope.datepickerMode === self.maxMode && direction === 1) || ($scope.datepickerMode === self.minMode && direction === -1)) { + return; + } + + $scope.datepickerMode = self.modes[self.modes.indexOf($scope.datepickerMode) + direction]; + }; + + // Key event mapper + $scope.keys = { 13: 'enter', 32: 'space', 33: 'pageup', 34: 'pagedown', 35: 'end', 36: 'home', 37: 'left', 38: 'up', 39: 'right', 40: 'down' }; + + var focusElement = function() { + self.element[0].focus(); + }; + + // Listen for focus requests from popup directive + $scope.$on('uib:datepicker.focus', focusElement); + + $scope.keydown = function(evt) { + var key = $scope.keys[evt.which]; + + if (!key || evt.shiftKey || evt.altKey) { + return; + } + + evt.preventDefault(); + if (!self.shortcutPropagation) { + evt.stopPropagation(); + } + + if (key === 'enter' || key === 'space') { + if (self.isDisabled(self.activeDate)) { + return; // do nothing + } + $scope.select(self.activeDate); + } else if (evt.ctrlKey && (key === 'up' || key === 'down')) { + $scope.toggleMode(key === 'up' ? 1 : -1); + } else { + self.handleKeyDown(key, evt); + self.refreshView(); + } + }; +}]) + +.controller('UibDaypickerController', ['$scope', '$element', 'dateFilter', function(scope, $element, dateFilter) { + var DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; + + this.step = { months: 1 }; + this.element = $element; + function getDaysInMonth(year, month) { + return ((month === 1) && (year % 4 === 0) && ((year % 100 !== 0) || (year % 400 === 0))) ? 29 : DAYS_IN_MONTH[month]; + } + + this.init = function(ctrl) { + angular.extend(ctrl, this); + scope.showWeeks = ctrl.showWeeks; + ctrl.refreshView(); + }; + + this.getDates = function(startDate, n) { + var dates = new Array(n), current = new Date(startDate), i = 0, date; + while (i < n) { + date = new Date(current); + dates[i++] = date; + current.setDate(current.getDate() + 1); + } + return dates; + }; + + this._refreshView = function() { + var year = this.activeDate.getFullYear(), + month = this.activeDate.getMonth(), + firstDayOfMonth = new Date(this.activeDate); + + firstDayOfMonth.setFullYear(year, month, 1); + + var difference = this.startingDay - firstDayOfMonth.getDay(), + numDisplayedFromPreviousMonth = (difference > 0) ? 7 - difference : - difference, + firstDate = new Date(firstDayOfMonth); + + if (numDisplayedFromPreviousMonth > 0) { + firstDate.setDate(-numDisplayedFromPreviousMonth + 1); + } + + // 42 is the number of days on a six-month calendar + var days = this.getDates(firstDate, 42); + for (var i = 0; i < 42; i ++) { + days[i] = angular.extend(this.createDateObject(days[i], this.formatDay), { + secondary: days[i].getMonth() !== month, + uid: scope.uniqueId + '-' + i + }); + } + + scope.labels = new Array(7); + for (var j = 0; j < 7; j++) { + scope.labels[j] = { + abbr: dateFilter(days[j].date, this.formatDayHeader), + full: dateFilter(days[j].date, 'EEEE') + }; + } + + scope.title = dateFilter(this.activeDate, this.formatDayTitle); + scope.rows = this.split(days, 7); + + if (scope.showWeeks) { + scope.weekNumbers = []; + var thursdayIndex = (4 + 7 - this.startingDay) % 7, + numWeeks = scope.rows.length; + for (var curWeek = 0; curWeek < numWeeks; curWeek++) { + scope.weekNumbers.push( + getISO8601WeekNumber(scope.rows[curWeek][thursdayIndex].date)); + } + } + }; + + this.compare = function(date1, date2) { + return (new Date(date1.getFullYear(), date1.getMonth(), date1.getDate()) - new Date(date2.getFullYear(), date2.getMonth(), date2.getDate())); + }; + + function getISO8601WeekNumber(date) { + var checkDate = new Date(date); + checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7)); // Thursday + var time = checkDate.getTime(); + checkDate.setMonth(0); // Compare with Jan 1 + checkDate.setDate(1); + return Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1; + } + + this.handleKeyDown = function(key, evt) { + var date = this.activeDate.getDate(); + + if (key === 'left') { + date = date - 1; // up + } else if (key === 'up') { + date = date - 7; // down + } else if (key === 'right') { + date = date + 1; // down + } else if (key === 'down') { + date = date + 7; + } else if (key === 'pageup' || key === 'pagedown') { + var month = this.activeDate.getMonth() + (key === 'pageup' ? - 1 : 1); + this.activeDate.setMonth(month, 1); + date = Math.min(getDaysInMonth(this.activeDate.getFullYear(), this.activeDate.getMonth()), date); + } else if (key === 'home') { + date = 1; + } else if (key === 'end') { + date = getDaysInMonth(this.activeDate.getFullYear(), this.activeDate.getMonth()); + } + this.activeDate.setDate(date); + }; +}]) + +.controller('UibMonthpickerController', ['$scope', '$element', 'dateFilter', function(scope, $element, dateFilter) { + this.step = { years: 1 }; + this.element = $element; + + this.init = function(ctrl) { + angular.extend(ctrl, this); + ctrl.refreshView(); + }; + + this._refreshView = function() { + var months = new Array(12), + year = this.activeDate.getFullYear(), + date; + + for (var i = 0; i < 12; i++) { + date = new Date(this.activeDate); + date.setFullYear(year, i, 1); + months[i] = angular.extend(this.createDateObject(date, this.formatMonth), { + uid: scope.uniqueId + '-' + i + }); + } + + scope.title = dateFilter(this.activeDate, this.formatMonthTitle); + scope.rows = this.split(months, 3); + }; + + this.compare = function(date1, date2) { + return new Date(date1.getFullYear(), date1.getMonth()) - new Date(date2.getFullYear(), date2.getMonth()); + }; + + this.handleKeyDown = function(key, evt) { + var date = this.activeDate.getMonth(); + + if (key === 'left') { + date = date - 1; // up + } else if (key === 'up') { + date = date - 3; // down + } else if (key === 'right') { + date = date + 1; // down + } else if (key === 'down') { + date = date + 3; + } else if (key === 'pageup' || key === 'pagedown') { + var year = this.activeDate.getFullYear() + (key === 'pageup' ? - 1 : 1); + this.activeDate.setFullYear(year); + } else if (key === 'home') { + date = 0; + } else if (key === 'end') { + date = 11; + } + this.activeDate.setMonth(date); + }; +}]) + +.controller('UibYearpickerController', ['$scope', '$element', 'dateFilter', function(scope, $element, dateFilter) { + var range; + this.element = $element; + + function getStartingYear(year) { + return parseInt((year - 1) / range, 10) * range + 1; + } + + this.yearpickerInit = function() { + range = this.yearRange; + this.step = { years: range }; + }; + + this._refreshView = function() { + var years = new Array(range), date; + + for (var i = 0, start = getStartingYear(this.activeDate.getFullYear()); i < range; i++) { + date = new Date(this.activeDate); + date.setFullYear(start + i, 0, 1); + years[i] = angular.extend(this.createDateObject(date, this.formatYear), { + uid: scope.uniqueId + '-' + i + }); + } + + scope.title = [years[0].label, years[range - 1].label].join(' - '); + scope.rows = this.split(years, 5); + }; + + this.compare = function(date1, date2) { + return date1.getFullYear() - date2.getFullYear(); + }; + + this.handleKeyDown = function(key, evt) { + var date = this.activeDate.getFullYear(); + + if (key === 'left') { + date = date - 1; // up + } else if (key === 'up') { + date = date - 5; // down + } else if (key === 'right') { + date = date + 1; // down + } else if (key === 'down') { + date = date + 5; + } else if (key === 'pageup' || key === 'pagedown') { + date += (key === 'pageup' ? - 1 : 1) * this.step.years; + } else if (key === 'home') { + date = getStartingYear(this.activeDate.getFullYear()); + } else if (key === 'end') { + date = getStartingYear(this.activeDate.getFullYear()) + range - 1; + } + this.activeDate.setFullYear(date); + }; +}]) + +.directive('uibDatepicker', function() { + return { + replace: true, + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/datepicker/datepicker.html'; + }, + scope: { + datepickerMode: '=?', + dateDisabled: '&', + customClass: '&', + shortcutPropagation: '&?' + }, + require: ['uibDatepicker', '^ngModel'], + controller: 'UibDatepickerController', + controllerAs: 'datepicker', + link: function(scope, element, attrs, ctrls) { + var datepickerCtrl = ctrls[0], ngModelCtrl = ctrls[1]; + + datepickerCtrl.init(ngModelCtrl); + } + }; +}) + +.directive('uibDaypicker', function() { + return { + replace: true, + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/datepicker/day.html'; + }, + require: ['^?uibDatepicker', 'uibDaypicker', '^?datepicker'], + controller: 'UibDaypickerController', + link: function(scope, element, attrs, ctrls) { + var datepickerCtrl = ctrls[0] || ctrls[2], + daypickerCtrl = ctrls[1]; + + daypickerCtrl.init(datepickerCtrl); + } + }; +}) + +.directive('uibMonthpicker', function() { + return { + replace: true, + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/datepicker/month.html'; + }, + require: ['^?uibDatepicker', 'uibMonthpicker', '^?datepicker'], + controller: 'UibMonthpickerController', + link: function(scope, element, attrs, ctrls) { + var datepickerCtrl = ctrls[0] || ctrls[2], + monthpickerCtrl = ctrls[1]; + + monthpickerCtrl.init(datepickerCtrl); + } + }; +}) + +.directive('uibYearpicker', function() { + return { + replace: true, + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/datepicker/year.html'; + }, + require: ['^?uibDatepicker', 'uibYearpicker', '^?datepicker'], + controller: 'UibYearpickerController', + link: function(scope, element, attrs, ctrls) { + var ctrl = ctrls[0] || ctrls[2]; + angular.extend(ctrl, ctrls[1]); + ctrl.yearpickerInit(); + + ctrl.refreshView(); + } + }; +}) + +.constant('uibDatepickerPopupConfig', { + datepickerPopup: 'yyyy-MM-dd', + datepickerPopupTemplateUrl: 'template/datepicker/popup.html', + datepickerTemplateUrl: 'template/datepicker/datepicker.html', + html5Types: { + date: 'yyyy-MM-dd', + 'datetime-local': 'yyyy-MM-ddTHH:mm:ss.sss', + 'month': 'yyyy-MM' + }, + currentText: 'Today', + clearText: 'Clear', + closeText: 'Done', + closeOnDateSelection: true, + appendToBody: false, + showButtonBar: true, + onOpenFocus: true +}) + +.controller('UibDatepickerPopupController', ['$scope', '$element', '$attrs', '$compile', '$parse', '$document', '$rootScope', '$uibPosition', 'dateFilter', 'uibDateParser', 'uibDatepickerPopupConfig', '$timeout', +function(scope, element, attrs, $compile, $parse, $document, $rootScope, $position, dateFilter, dateParser, datepickerPopupConfig, $timeout) { + var self = this; + var cache = {}, + isHtml5DateInput = false; + var dateFormat, closeOnDateSelection, appendToBody, onOpenFocus, + datepickerPopupTemplateUrl, datepickerTemplateUrl, popupEl, datepickerEl, + ngModel, $popup; + + scope.watchData = {}; + + this.init = function(_ngModel_) { + ngModel = _ngModel_; + closeOnDateSelection = angular.isDefined(attrs.closeOnDateSelection) ? scope.$parent.$eval(attrs.closeOnDateSelection) : datepickerPopupConfig.closeOnDateSelection; + appendToBody = angular.isDefined(attrs.datepickerAppendToBody) ? scope.$parent.$eval(attrs.datepickerAppendToBody) : datepickerPopupConfig.appendToBody; + onOpenFocus = angular.isDefined(attrs.onOpenFocus) ? scope.$parent.$eval(attrs.onOpenFocus) : datepickerPopupConfig.onOpenFocus; + datepickerPopupTemplateUrl = angular.isDefined(attrs.datepickerPopupTemplateUrl) ? attrs.datepickerPopupTemplateUrl : datepickerPopupConfig.datepickerPopupTemplateUrl; + datepickerTemplateUrl = angular.isDefined(attrs.datepickerTemplateUrl) ? attrs.datepickerTemplateUrl : datepickerPopupConfig.datepickerTemplateUrl; + + scope.showButtonBar = angular.isDefined(attrs.showButtonBar) ? scope.$parent.$eval(attrs.showButtonBar) : datepickerPopupConfig.showButtonBar; + + if (datepickerPopupConfig.html5Types[attrs.type]) { + dateFormat = datepickerPopupConfig.html5Types[attrs.type]; + isHtml5DateInput = true; + } else { + dateFormat = attrs.datepickerPopup || attrs.uibDatepickerPopup || datepickerPopupConfig.datepickerPopup; + attrs.$observe('uibDatepickerPopup', function(value, oldValue) { + var newDateFormat = value || datepickerPopupConfig.datepickerPopup; + // Invalidate the $modelValue to ensure that formatters re-run + // FIXME: Refactor when PR is merged: https://github.com/angular/angular.js/pull/10764 + if (newDateFormat !== dateFormat) { + dateFormat = newDateFormat; + ngModel.$modelValue = null; + + if (!dateFormat) { + throw new Error('uibDatepickerPopup must have a date format specified.'); + } + } + }); + } + + if (!dateFormat) { + throw new Error('uibDatepickerPopup must have a date format specified.'); + } + + if (isHtml5DateInput && attrs.datepickerPopup) { + throw new Error('HTML5 date input types do not support custom formats.'); + } + + // popup element used to display calendar + popupEl = angular.element('
'); + popupEl.attr({ + 'ng-model': 'date', + 'ng-change': 'dateSelection(date)', + 'template-url': datepickerPopupTemplateUrl + }); + + // datepicker element + datepickerEl = angular.element(popupEl.children()[0]); + datepickerEl.attr('template-url', datepickerTemplateUrl); + + if (isHtml5DateInput) { + if (attrs.type === 'month') { + datepickerEl.attr('datepicker-mode', '"month"'); + datepickerEl.attr('min-mode', 'month'); + } + } + + if (attrs.datepickerOptions) { + var options = scope.$parent.$eval(attrs.datepickerOptions); + if (options && options.initDate) { + scope.initDate = options.initDate; + datepickerEl.attr('init-date', 'initDate'); + delete options.initDate; + } + angular.forEach(options, function(value, option) { + datepickerEl.attr(cameltoDash(option), value); + }); + } + + angular.forEach(['minMode', 'maxMode', 'minDate', 'maxDate', 'datepickerMode', 'initDate', 'shortcutPropagation'], function(key) { + if (attrs[key]) { + var getAttribute = $parse(attrs[key]); + scope.$parent.$watch(getAttribute, function(value) { + scope.watchData[key] = value; + if (key === 'minDate' || key === 'maxDate') { + cache[key] = new Date(value); + } + }); + datepickerEl.attr(cameltoDash(key), 'watchData.' + key); + + // Propagate changes from datepicker to outside + if (key === 'datepickerMode') { + var setAttribute = getAttribute.assign; + scope.$watch('watchData.' + key, function(value, oldvalue) { + if (angular.isFunction(setAttribute) && value !== oldvalue) { + setAttribute(scope.$parent, value); + } + }); + } + } + }); + if (attrs.dateDisabled) { + datepickerEl.attr('date-disabled', 'dateDisabled({ date: date, mode: mode })'); + } + + if (attrs.showWeeks) { + datepickerEl.attr('show-weeks', attrs.showWeeks); + } + + if (attrs.customClass) { + datepickerEl.attr('custom-class', 'customClass({ date: date, mode: mode })'); + } + + if (!isHtml5DateInput) { + // Internal API to maintain the correct ng-invalid-[key] class + ngModel.$$parserName = 'date'; + ngModel.$validators.date = validator; + ngModel.$parsers.unshift(parseDate); + ngModel.$formatters.push(function(value) { + scope.date = value; + return ngModel.$isEmpty(value) ? value : dateFilter(value, dateFormat); + }); + } else { + ngModel.$formatters.push(function(value) { + scope.date = value; + return value; + }); + } + + // Detect changes in the view from the text box + ngModel.$viewChangeListeners.push(function() { + scope.date = dateParser.parse(ngModel.$viewValue, dateFormat, scope.date); + }); + + element.bind('keydown', inputKeydownBind); + + $popup = $compile(popupEl)(scope); + // Prevent jQuery cache memory leak (template is now redundant after linking) + popupEl.remove(); + + if (appendToBody) { + $document.find('body').append($popup); + } else { + element.after($popup); + } + + scope.$on('$destroy', function() { + if (scope.isOpen === true) { + if (!$rootScope.$$phase) { + scope.$apply(function() { + scope.isOpen = false; + }); + } + } + + $popup.remove(); + element.unbind('keydown', inputKeydownBind); + $document.unbind('click', documentClickBind); + }); + }; + + scope.getText = function(key) { + return scope[key + 'Text'] || datepickerPopupConfig[key + 'Text']; + }; + + scope.isDisabled = function(date) { + if (date === 'today') { + date = new Date(); + } + + return ((scope.watchData.minDate && scope.compare(date, cache.minDate) < 0) || + (scope.watchData.maxDate && scope.compare(date, cache.maxDate) > 0)); + }; + + scope.compare = function(date1, date2) { + return (new Date(date1.getFullYear(), date1.getMonth(), date1.getDate()) - new Date(date2.getFullYear(), date2.getMonth(), date2.getDate())); + }; + + // Inner change + scope.dateSelection = function(dt) { + if (angular.isDefined(dt)) { + scope.date = dt; + } + var date = scope.date ? dateFilter(scope.date, dateFormat) : null; // Setting to NULL is necessary for form validators to function + element.val(date); + ngModel.$setViewValue(date); + + if (closeOnDateSelection) { + scope.isOpen = false; + element[0].focus(); + } + }; + + scope.keydown = function(evt) { + if (evt.which === 27) { + scope.isOpen = false; + element[0].focus(); + } + }; + + scope.select = function(date) { + if (date === 'today') { + var today = new Date(); + if (angular.isDate(scope.date)) { + date = new Date(scope.date); + date.setFullYear(today.getFullYear(), today.getMonth(), today.getDate()); + } else { + date = new Date(today.setHours(0, 0, 0, 0)); + } + } + scope.dateSelection(date); + }; + + scope.close = function() { + scope.isOpen = false; + element[0].focus(); + }; + + scope.$watch('isOpen', function(value) { + if (value) { + scope.position = appendToBody ? $position.offset(element) : $position.position(element); + scope.position.top = scope.position.top + element.prop('offsetHeight'); + + $timeout(function() { + if (onOpenFocus) { + scope.$broadcast('uib:datepicker.focus'); + } + $document.bind('click', documentClickBind); + }, 0, false); + } else { + $document.unbind('click', documentClickBind); + } + }); + + function cameltoDash(string) { + return string.replace(/([A-Z])/g, function($1) { return '-' + $1.toLowerCase(); }); + } + + function parseDate(viewValue) { + if (angular.isNumber(viewValue)) { + // presumably timestamp to date object + viewValue = new Date(viewValue); + } + + if (!viewValue) { + return null; + } else if (angular.isDate(viewValue) && !isNaN(viewValue)) { + return viewValue; + } else if (angular.isString(viewValue)) { + var date = dateParser.parse(viewValue, dateFormat, scope.date); + if (isNaN(date)) { + return undefined; + } else { + return date; + } + } else { + return undefined; + } + } + + function validator(modelValue, viewValue) { + var value = modelValue || viewValue; + + if (!attrs.ngRequired && !value) { + return true; + } + + if (angular.isNumber(value)) { + value = new Date(value); + } + if (!value) { + return true; + } else if (angular.isDate(value) && !isNaN(value)) { + return true; + } else if (angular.isString(value)) { + var date = dateParser.parse(value, dateFormat); + return !isNaN(date); + } else { + return false; + } + } + + function documentClickBind(event) { + var popup = $popup[0]; + var dpContainsTarget = element[0].contains(event.target); + // The popup node may not be an element node + // In some browsers (IE) only element nodes have the 'contains' function + var popupContainsTarget = popup.contains !== undefined && popup.contains(event.target); + if (scope.isOpen && !(dpContainsTarget || popupContainsTarget)) { + scope.$apply(function() { + scope.isOpen = false; + }); + } + } + + function inputKeydownBind(evt) { + if (evt.which === 27 && scope.isOpen) { + evt.preventDefault(); + evt.stopPropagation(); + scope.$apply(function() { + scope.isOpen = false; + }); + element[0].focus(); + } else if (evt.which === 40 && !scope.isOpen) { + evt.preventDefault(); + evt.stopPropagation(); + scope.$apply(function() { + scope.isOpen = true; + }); + } + } +}]) + +.directive('uibDatepickerPopup', function() { + return { + require: ['ngModel', 'uibDatepickerPopup'], + controller: 'UibDatepickerPopupController', + scope: { + isOpen: '=?', + currentText: '@', + clearText: '@', + closeText: '@', + dateDisabled: '&', + customClass: '&' + }, + link: function(scope, element, attrs, ctrls) { + var ngModel = ctrls[0], + ctrl = ctrls[1]; + + ctrl.init(ngModel); + } + }; +}) + +.directive('uibDatepickerPopupWrap', function() { + return { + replace: true, + transclude: true, + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/datepicker/popup.html'; + } + }; +}); + +/* Deprecated datepicker below */ + +angular.module('ui.bootstrap.datepicker') + +.value('$datepickerSuppressWarning', false) + +.controller('DatepickerController', ['$scope', '$attrs', '$parse', '$interpolate', '$log', 'dateFilter', 'uibDatepickerConfig', '$datepickerSuppressError', '$datepickerSuppressWarning', function($scope, $attrs, $parse, $interpolate, $log, dateFilter, datepickerConfig, $datepickerSuppressError, $datepickerSuppressWarning) { + if (!$datepickerSuppressWarning) { + $log.warn('DatepickerController is now deprecated. Use UibDatepickerController instead.'); + } + + var self = this, + ngModelCtrl = { $setViewValue: angular.noop }; // nullModelCtrl; + + this.modes = ['day', 'month', 'year']; + + angular.forEach(['formatDay', 'formatMonth', 'formatYear', 'formatDayHeader', 'formatDayTitle', 'formatMonthTitle', + 'showWeeks', 'startingDay', 'yearRange', 'shortcutPropagation'], function(key, index) { + self[key] = angular.isDefined($attrs[key]) ? (index < 6 ? $interpolate($attrs[key])($scope.$parent) : $scope.$parent.$eval($attrs[key])) : datepickerConfig[key]; + }); + + angular.forEach(['minDate', 'maxDate'], function(key) { + if ($attrs[key]) { + $scope.$parent.$watch($parse($attrs[key]), function(value) { + self[key] = value ? new Date(value) : null; + self.refreshView(); + }); + } else { + self[key] = datepickerConfig[key] ? new Date(datepickerConfig[key]) : null; + } + }); + + angular.forEach(['minMode', 'maxMode'], function(key) { + if ($attrs[key]) { + $scope.$parent.$watch($parse($attrs[key]), function(value) { + self[key] = angular.isDefined(value) ? value : $attrs[key]; + $scope[key] = self[key]; + if ((key == 'minMode' && self.modes.indexOf($scope.datepickerMode) < self.modes.indexOf(self[key])) || (key == 'maxMode' && self.modes.indexOf($scope.datepickerMode) > self.modes.indexOf(self[key]))) { + $scope.datepickerMode = self[key]; + } + }); + } else { + self[key] = datepickerConfig[key] || null; + $scope[key] = self[key]; + } + }); + + $scope.datepickerMode = $scope.datepickerMode || datepickerConfig.datepickerMode; + $scope.uniqueId = 'datepicker-' + $scope.$id + '-' + Math.floor(Math.random() * 10000); + + if (angular.isDefined($attrs.initDate)) { + this.activeDate = $scope.$parent.$eval($attrs.initDate) || new Date(); + $scope.$parent.$watch($attrs.initDate, function(initDate) { + if (initDate && (ngModelCtrl.$isEmpty(ngModelCtrl.$modelValue) || ngModelCtrl.$invalid)) { + self.activeDate = initDate; + self.refreshView(); + } + }); + } else { + this.activeDate = new Date(); + } + + $scope.isActive = function(dateObject) { + if (self.compare(dateObject.date, self.activeDate) === 0) { + $scope.activeDateId = dateObject.uid; + return true; + } + return false; + }; + + this.init = function(ngModelCtrl_) { + ngModelCtrl = ngModelCtrl_; + + ngModelCtrl.$render = function() { + self.render(); + }; + }; + + this.render = function() { + if (ngModelCtrl.$viewValue) { + var date = new Date(ngModelCtrl.$viewValue), + isValid = !isNaN(date); + + if (isValid) { + this.activeDate = date; + } else if (!$datepickerSuppressError) { + $log.error('Datepicker directive: "ng-model" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.'); + } + } + this.refreshView(); + }; + + this.refreshView = function() { + if (this.element) { + this._refreshView(); + + var date = ngModelCtrl.$viewValue ? new Date(ngModelCtrl.$viewValue) : null; + ngModelCtrl.$setValidity('dateDisabled', !date || (this.element && !this.isDisabled(date))); + } + }; + + this.createDateObject = function(date, format) { + var model = ngModelCtrl.$viewValue ? new Date(ngModelCtrl.$viewValue) : null; + return { + date: date, + label: dateFilter(date, format), + selected: model && this.compare(date, model) === 0, + disabled: this.isDisabled(date), + current: this.compare(date, new Date()) === 0, + customClass: this.customClass(date) + }; + }; + + this.isDisabled = function(date) { + return ((this.minDate && this.compare(date, this.minDate) < 0) || (this.maxDate && this.compare(date, this.maxDate) > 0) || ($attrs.dateDisabled && $scope.dateDisabled({date: date, mode: $scope.datepickerMode}))); + }; + + this.customClass = function(date) { + return $scope.customClass({date: date, mode: $scope.datepickerMode}); + }; + + // Split array into smaller arrays + this.split = function(arr, size) { + var arrays = []; + while (arr.length > 0) { + arrays.push(arr.splice(0, size)); + } + return arrays; + }; + + this.fixTimeZone = function(date) { + var hours = date.getHours(); + date.setHours(hours === 23 ? hours + 2 : 0); + }; + + $scope.select = function(date) { + if ($scope.datepickerMode === self.minMode) { + var dt = ngModelCtrl.$viewValue ? new Date(ngModelCtrl.$viewValue) : new Date(0, 0, 0, 0, 0, 0, 0); + dt.setFullYear(date.getFullYear(), date.getMonth(), date.getDate()); + ngModelCtrl.$setViewValue(dt); + ngModelCtrl.$render(); + } else { + self.activeDate = date; + $scope.datepickerMode = self.modes[self.modes.indexOf($scope.datepickerMode) - 1]; + } + }; + + $scope.move = function(direction) { + var year = self.activeDate.getFullYear() + direction * (self.step.years || 0), + month = self.activeDate.getMonth() + direction * (self.step.months || 0); + self.activeDate.setFullYear(year, month, 1); + self.refreshView(); + }; + + $scope.toggleMode = function(direction) { + direction = direction || 1; + + if (($scope.datepickerMode === self.maxMode && direction === 1) || ($scope.datepickerMode === self.minMode && direction === -1)) { + return; + } + + $scope.datepickerMode = self.modes[self.modes.indexOf($scope.datepickerMode) + direction]; + }; + + // Key event mapper + $scope.keys = { 13: 'enter', 32: 'space', 33: 'pageup', 34: 'pagedown', 35: 'end', 36: 'home', 37: 'left', 38: 'up', 39: 'right', 40: 'down' }; + + var focusElement = function() { + self.element[0].focus(); + }; + + $scope.$on('uib:datepicker.focus', focusElement); + + $scope.keydown = function(evt) { + var key = $scope.keys[evt.which]; + + if (!key || evt.shiftKey || evt.altKey) { + return; + } + + evt.preventDefault(); + if (!self.shortcutPropagation) { + evt.stopPropagation(); + } + + if (key === 'enter' || key === 'space') { + if (self.isDisabled(self.activeDate)) { + return; // do nothing + } + $scope.select(self.activeDate); + } else if (evt.ctrlKey && (key === 'up' || key === 'down')) { + $scope.toggleMode(key === 'up' ? 1 : -1); + } else { + self.handleKeyDown(key, evt); + self.refreshView(); + } + }; +}]) + +.directive('datepicker', ['$log', '$datepickerSuppressWarning', function($log, $datepickerSuppressWarning) { + return { + replace: true, + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/datepicker/datepicker.html'; + }, + scope: { + datepickerMode: '=?', + dateDisabled: '&', + customClass: '&', + shortcutPropagation: '&?' + }, + require: ['datepicker', '^ngModel'], + controller: 'DatepickerController', + controllerAs: 'datepicker', + link: function(scope, element, attrs, ctrls) { + if (!$datepickerSuppressWarning) { + $log.warn('datepicker is now deprecated. Use uib-datepicker instead.'); + } + + var datepickerCtrl = ctrls[0], ngModelCtrl = ctrls[1]; + + datepickerCtrl.init(ngModelCtrl); + } + }; +}]) + +.directive('daypicker', ['$log', '$datepickerSuppressWarning', function($log, $datepickerSuppressWarning) { + return { + replace: true, + templateUrl: 'template/datepicker/day.html', + require: ['^datepicker', 'daypicker'], + controller: 'UibDaypickerController', + link: function(scope, element, attrs, ctrls) { + if (!$datepickerSuppressWarning) { + $log.warn('daypicker is now deprecated. Use uib-daypicker instead.'); + } + + var datepickerCtrl = ctrls[0], + daypickerCtrl = ctrls[1]; + + daypickerCtrl.init(datepickerCtrl); + } + }; +}]) + +.directive('monthpicker', ['$log', '$datepickerSuppressWarning', function($log, $datepickerSuppressWarning) { + return { + replace: true, + templateUrl: 'template/datepicker/month.html', + require: ['^datepicker', 'monthpicker'], + controller: 'UibMonthpickerController', + link: function(scope, element, attrs, ctrls) { + if (!$datepickerSuppressWarning) { + $log.warn('monthpicker is now deprecated. Use uib-monthpicker instead.'); + } + + var datepickerCtrl = ctrls[0], + monthpickerCtrl = ctrls[1]; + + monthpickerCtrl.init(datepickerCtrl); + } + }; +}]) + +.directive('yearpicker', ['$log', '$datepickerSuppressWarning', function($log, $datepickerSuppressWarning) { + return { + replace: true, + templateUrl: 'template/datepicker/year.html', + require: ['^datepicker', 'yearpicker'], + controller: 'UibYearpickerController', + link: function(scope, element, attrs, ctrls) { + if (!$datepickerSuppressWarning) { + $log.warn('yearpicker is now deprecated. Use uib-yearpicker instead.'); + } + + var ctrl = ctrls[0]; + angular.extend(ctrl, ctrls[1]); + ctrl.yearpickerInit(); + + ctrl.refreshView(); + } + }; +}]) + +.directive('datepickerPopup', ['$log', '$datepickerSuppressWarning', function($log, $datepickerSuppressWarning) { + return { + require: ['ngModel', 'datepickerPopup'], + controller: 'UibDatepickerPopupController', + scope: { + isOpen: '=?', + currentText: '@', + clearText: '@', + closeText: '@', + dateDisabled: '&', + customClass: '&' + }, + link: function(scope, element, attrs, ctrls) { + if (!$datepickerSuppressWarning) { + $log.warn('datepicker-popup is now deprecated. Use uib-datepicker-popup instead.'); + } + + var ngModel = ctrls[0], + ctrl = ctrls[1]; + + ctrl.init(ngModel); + } + }; +}]) + +.directive('datepickerPopupWrap', ['$log', '$datepickerSuppressWarning', function($log, $datepickerSuppressWarning) { + return { + replace: true, + transclude: true, + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/datepicker/popup.html'; + }, + link: function() { + if (!$datepickerSuppressWarning) { + $log.warn('datepicker-popup-wrap is now deprecated. Use uib-datepicker-popup-wrap instead.'); + } + } + }; +}]); + +angular.module('ui.bootstrap.dropdown', ['ui.bootstrap.position']) + +.constant('uibDropdownConfig', { + openClass: 'open' +}) + +.service('uibDropdownService', ['$document', '$rootScope', function($document, $rootScope) { + var openScope = null; + + this.open = function(dropdownScope) { + if (!openScope) { + $document.bind('click', closeDropdown); + $document.bind('keydown', keybindFilter); + } + + if (openScope && openScope !== dropdownScope) { + openScope.isOpen = false; + } + + openScope = dropdownScope; + }; + + this.close = function(dropdownScope) { + if (openScope === dropdownScope) { + openScope = null; + $document.unbind('click', closeDropdown); + $document.unbind('keydown', keybindFilter); + } + }; + + var closeDropdown = function(evt) { + // This method may still be called during the same mouse event that + // unbound this event handler. So check openScope before proceeding. + if (!openScope) { return; } + + if (evt && openScope.getAutoClose() === 'disabled') { return ; } + + var toggleElement = openScope.getToggleElement(); + if (evt && toggleElement && toggleElement[0].contains(evt.target)) { + return; + } + + var dropdownElement = openScope.getDropdownElement(); + if (evt && openScope.getAutoClose() === 'outsideClick' && + dropdownElement && dropdownElement[0].contains(evt.target)) { + return; + } + + openScope.isOpen = false; + + if (!$rootScope.$$phase) { + openScope.$apply(); + } + }; + + var keybindFilter = function(evt) { + if (evt.which === 27) { + openScope.focusToggleElement(); + closeDropdown(); + } else if (openScope.isKeynavEnabled() && /(38|40)/.test(evt.which) && openScope.isOpen) { + evt.preventDefault(); + evt.stopPropagation(); + openScope.focusDropdownEntry(evt.which); + } + }; +}]) + +.controller('UibDropdownController', ['$scope', '$element', '$attrs', '$parse', 'uibDropdownConfig', 'uibDropdownService', '$animate', '$uibPosition', '$document', '$compile', '$templateRequest', function($scope, $element, $attrs, $parse, dropdownConfig, uibDropdownService, $animate, $position, $document, $compile, $templateRequest) { + var self = this, + scope = $scope.$new(), // create a child scope so we are not polluting original one + templateScope, + openClass = dropdownConfig.openClass, + getIsOpen, + setIsOpen = angular.noop, + toggleInvoker = $attrs.onToggle ? $parse($attrs.onToggle) : angular.noop, + appendToBody = false, + keynavEnabled =false, + selectedOption = null; + + + $element.addClass('dropdown'); + + this.init = function() { + if ($attrs.isOpen) { + getIsOpen = $parse($attrs.isOpen); + setIsOpen = getIsOpen.assign; + + $scope.$watch(getIsOpen, function(value) { + scope.isOpen = !!value; + }); + } + + appendToBody = angular.isDefined($attrs.dropdownAppendToBody); + keynavEnabled = angular.isDefined($attrs.uibKeyboardNav); + + if (appendToBody && self.dropdownMenu) { + $document.find('body').append(self.dropdownMenu); + $element.on('$destroy', function handleDestroyEvent() { + self.dropdownMenu.remove(); + }); + } + }; + + this.toggle = function(open) { + return scope.isOpen = arguments.length ? !!open : !scope.isOpen; + }; + + // Allow other directives to watch status + this.isOpen = function() { + return scope.isOpen; + }; + + scope.getToggleElement = function() { + return self.toggleElement; + }; + + scope.getAutoClose = function() { + return $attrs.autoClose || 'always'; //or 'outsideClick' or 'disabled' + }; + + scope.getElement = function() { + return $element; + }; + + scope.isKeynavEnabled = function() { + return keynavEnabled; + }; + + scope.focusDropdownEntry = function(keyCode) { + var elems = self.dropdownMenu ? //If append to body is used. + (angular.element(self.dropdownMenu).find('a')) : + (angular.element($element).find('ul').eq(0).find('a')); + + switch (keyCode) { + case (40): { + if (!angular.isNumber(self.selectedOption)) { + self.selectedOption = 0; + } else { + self.selectedOption = (self.selectedOption === elems.length - 1 ? + self.selectedOption : + self.selectedOption + 1); + } + break; + } + case (38): { + if (!angular.isNumber(self.selectedOption)) { + self.selectedOption = elems.length - 1; + } else { + self.selectedOption = self.selectedOption === 0 ? + 0 : self.selectedOption - 1; + } + break; + } + } + elems[self.selectedOption].focus(); + }; + + scope.getDropdownElement = function() { + return self.dropdownMenu; + }; + + scope.focusToggleElement = function() { + if (self.toggleElement) { + self.toggleElement[0].focus(); + } + }; + + scope.$watch('isOpen', function(isOpen, wasOpen) { + if (appendToBody && self.dropdownMenu) { + var pos = $position.positionElements($element, self.dropdownMenu, 'bottom-left', true); + var css = { + top: pos.top + 'px', + display: isOpen ? 'block' : 'none' + }; + + var rightalign = self.dropdownMenu.hasClass('dropdown-menu-right'); + if (!rightalign) { + css.left = pos.left + 'px'; + css.right = 'auto'; + } else { + css.left = 'auto'; + css.right = (window.innerWidth - (pos.left + $element.prop('offsetWidth'))) + 'px'; + } + + self.dropdownMenu.css(css); + } + + $animate[isOpen ? 'addClass' : 'removeClass']($element, openClass).then(function() { + if (angular.isDefined(isOpen) && isOpen !== wasOpen) { + toggleInvoker($scope, { open: !!isOpen }); + } + }); + + if (isOpen) { + if (self.dropdownMenuTemplateUrl) { + $templateRequest(self.dropdownMenuTemplateUrl).then(function(tplContent) { + templateScope = scope.$new(); + $compile(tplContent.trim())(templateScope, function(dropdownElement) { + var newEl = dropdownElement; + self.dropdownMenu.replaceWith(newEl); + self.dropdownMenu = newEl; + }); + }); + } + + scope.focusToggleElement(); + uibDropdownService.open(scope); + } else { + if (self.dropdownMenuTemplateUrl) { + if (templateScope) { + templateScope.$destroy(); + } + var newEl = angular.element(''); + self.dropdownMenu.replaceWith(newEl); + self.dropdownMenu = newEl; + } + + uibDropdownService.close(scope); + self.selectedOption = null; + } + + if (angular.isFunction(setIsOpen)) { + setIsOpen($scope, isOpen); + } + }); + + $scope.$on('$locationChangeSuccess', function() { + if (scope.getAutoClose() !== 'disabled') { + scope.isOpen = false; + } + }); + + var offDestroy = $scope.$on('$destroy', function() { + scope.$destroy(); + }); + scope.$on('$destroy', offDestroy); +}]) + +.directive('uibDropdown', function() { + return { + controller: 'UibDropdownController', + link: function(scope, element, attrs, dropdownCtrl) { + dropdownCtrl.init(); + } + }; +}) + +.directive('uibDropdownMenu', function() { + return { + restrict: 'AC', + require: '?^uibDropdown', + link: function(scope, element, attrs, dropdownCtrl) { + if (!dropdownCtrl || angular.isDefined(attrs.dropdownNested)) { + return; + } + + element.addClass('dropdown-menu'); + + var tplUrl = attrs.templateUrl; + if (tplUrl) { + dropdownCtrl.dropdownMenuTemplateUrl = tplUrl; + } + + if (!dropdownCtrl.dropdownMenu) { + dropdownCtrl.dropdownMenu = element; + } + } + }; +}) + +.directive('uibKeyboardNav', function() { + return { + restrict: 'A', + require: '?^uibDropdown', + link: function(scope, element, attrs, dropdownCtrl) { + element.bind('keydown', function(e) { + if ([38, 40].indexOf(e.which) !== -1) { + e.preventDefault(); + e.stopPropagation(); + + var elems = dropdownCtrl.dropdownMenu.find('a'); + + switch (e.which) { + case (40): { // Down + if (!angular.isNumber(dropdownCtrl.selectedOption)) { + dropdownCtrl.selectedOption = 0; + } else { + dropdownCtrl.selectedOption = dropdownCtrl.selectedOption === elems.length -1 ? + dropdownCtrl.selectedOption : dropdownCtrl.selectedOption + 1; + } + break; + } + case (38): { // Up + if (!angular.isNumber(dropdownCtrl.selectedOption)) { + dropdownCtrl.selectedOption = elems.length - 1; + } else { + dropdownCtrl.selectedOption = dropdownCtrl.selectedOption === 0 ? + 0 : dropdownCtrl.selectedOption - 1; + } + break; + } + } + elems[dropdownCtrl.selectedOption].focus(); + } + }); + } + }; +}) + +.directive('uibDropdownToggle', function() { + return { + require: '?^uibDropdown', + link: function(scope, element, attrs, dropdownCtrl) { + if (!dropdownCtrl) { + return; + } + + element.addClass('dropdown-toggle'); + + dropdownCtrl.toggleElement = element; + + var toggleDropdown = function(event) { + event.preventDefault(); + + if (!element.hasClass('disabled') && !attrs.disabled) { + scope.$apply(function() { + dropdownCtrl.toggle(); + }); + } + }; + + element.bind('click', toggleDropdown); + + // WAI-ARIA + element.attr({ 'aria-haspopup': true, 'aria-expanded': false }); + scope.$watch(dropdownCtrl.isOpen, function(isOpen) { + element.attr('aria-expanded', !!isOpen); + }); + + scope.$on('$destroy', function() { + element.unbind('click', toggleDropdown); + }); + } + }; +}); + +/* Deprecated dropdown below */ + +angular.module('ui.bootstrap.dropdown') + +.value('$dropdownSuppressWarning', false) + +.service('dropdownService', ['$log', '$dropdownSuppressWarning', 'uibDropdownService', function($log, $dropdownSuppressWarning, uibDropdownService) { + if (!$dropdownSuppressWarning) { + $log.warn('dropdownService is now deprecated. Use uibDropdownService instead.'); + } + + angular.extend(this, uibDropdownService); +}]) + +.controller('DropdownController', ['$scope', '$element', '$attrs', '$parse', 'uibDropdownConfig', 'uibDropdownService', '$animate', '$uibPosition', '$document', '$compile', '$templateRequest', '$log', '$dropdownSuppressWarning', function($scope, $element, $attrs, $parse, dropdownConfig, uibDropdownService, $animate, $position, $document, $compile, $templateRequest, $log, $dropdownSuppressWarning) { + if (!$dropdownSuppressWarning) { + $log.warn('DropdownController is now deprecated. Use UibDropdownController instead.'); + } + + var self = this, + scope = $scope.$new(), // create a child scope so we are not polluting original one + templateScope, + openClass = dropdownConfig.openClass, + getIsOpen, + setIsOpen = angular.noop, + toggleInvoker = $attrs.onToggle ? $parse($attrs.onToggle) : angular.noop, + appendToBody = false, + keynavEnabled =false, + selectedOption = null; + + + $element.addClass('dropdown'); + + this.init = function() { + if ($attrs.isOpen) { + getIsOpen = $parse($attrs.isOpen); + setIsOpen = getIsOpen.assign; + + $scope.$watch(getIsOpen, function(value) { + scope.isOpen = !!value; + }); + } + + appendToBody = angular.isDefined($attrs.dropdownAppendToBody); + keynavEnabled = angular.isDefined($attrs.uibKeyboardNav); + + if (appendToBody && self.dropdownMenu) { + $document.find('body').append(self.dropdownMenu); + $element.on('$destroy', function handleDestroyEvent() { + self.dropdownMenu.remove(); + }); + } + }; + + this.toggle = function(open) { + return scope.isOpen = arguments.length ? !!open : !scope.isOpen; + }; + + // Allow other directives to watch status + this.isOpen = function() { + return scope.isOpen; + }; + + scope.getToggleElement = function() { + return self.toggleElement; + }; + + scope.getAutoClose = function() { + return $attrs.autoClose || 'always'; //or 'outsideClick' or 'disabled' + }; + + scope.getElement = function() { + return $element; + }; + + scope.isKeynavEnabled = function() { + return keynavEnabled; + }; + + scope.focusDropdownEntry = function(keyCode) { + var elems = self.dropdownMenu ? //If append to body is used. + (angular.element(self.dropdownMenu).find('a')) : + (angular.element($element).find('ul').eq(0).find('a')); + + switch (keyCode) { + case (40): { + if (!angular.isNumber(self.selectedOption)) { + self.selectedOption = 0; + } else { + self.selectedOption = (self.selectedOption === elems.length -1 ? + self.selectedOption : + self.selectedOption + 1); + } + break; + } + case (38): { + if (!angular.isNumber(self.selectedOption)) { + self.selectedOption = elems.length - 1; + } else { + self.selectedOption = self.selectedOption === 0 ? + 0 : self.selectedOption - 1; + } + break; + } + } + elems[self.selectedOption].focus(); + }; + + scope.getDropdownElement = function() { + return self.dropdownMenu; + }; + + scope.focusToggleElement = function() { + if (self.toggleElement) { + self.toggleElement[0].focus(); + } + }; + + scope.$watch('isOpen', function(isOpen, wasOpen) { + if (appendToBody && self.dropdownMenu) { + var pos = $position.positionElements($element, self.dropdownMenu, 'bottom-left', true); + var css = { + top: pos.top + 'px', + display: isOpen ? 'block' : 'none' + }; + + var rightalign = self.dropdownMenu.hasClass('dropdown-menu-right'); + if (!rightalign) { + css.left = pos.left + 'px'; + css.right = 'auto'; + } else { + css.left = 'auto'; + css.right = (window.innerWidth - (pos.left + $element.prop('offsetWidth'))) + 'px'; + } + + self.dropdownMenu.css(css); + } + + $animate[isOpen ? 'addClass' : 'removeClass']($element, openClass).then(function() { + if (angular.isDefined(isOpen) && isOpen !== wasOpen) { + toggleInvoker($scope, { open: !!isOpen }); + } + }); + + if (isOpen) { + if (self.dropdownMenuTemplateUrl) { + $templateRequest(self.dropdownMenuTemplateUrl).then(function(tplContent) { + templateScope = scope.$new(); + $compile(tplContent.trim())(templateScope, function(dropdownElement) { + var newEl = dropdownElement; + self.dropdownMenu.replaceWith(newEl); + self.dropdownMenu = newEl; + }); + }); + } + + scope.focusToggleElement(); + uibDropdownService.open(scope); + } else { + if (self.dropdownMenuTemplateUrl) { + if (templateScope) { + templateScope.$destroy(); + } + var newEl = angular.element(''); + self.dropdownMenu.replaceWith(newEl); + self.dropdownMenu = newEl; + } + + uibDropdownService.close(scope); + self.selectedOption = null; + } + + if (angular.isFunction(setIsOpen)) { + setIsOpen($scope, isOpen); + } + }); + + $scope.$on('$locationChangeSuccess', function() { + if (scope.getAutoClose() !== 'disabled') { + scope.isOpen = false; + } + }); + + var offDestroy = $scope.$on('$destroy', function() { + scope.$destroy(); + }); + scope.$on('$destroy', offDestroy); +}]) + +.directive('dropdown', ['$log', '$dropdownSuppressWarning', function($log, $dropdownSuppressWarning) { + return { + controller: 'DropdownController', + link: function(scope, element, attrs, dropdownCtrl) { + if (!$dropdownSuppressWarning) { + $log.warn('dropdown is now deprecated. Use uib-dropdown instead.'); + } + + dropdownCtrl.init(); + } + }; +}]) + +.directive('dropdownMenu', ['$log', '$dropdownSuppressWarning', function($log, $dropdownSuppressWarning) { + return { + restrict: 'AC', + require: '?^dropdown', + link: function(scope, element, attrs, dropdownCtrl) { + if (!dropdownCtrl || angular.isDefined(attrs.dropdownNested)) { + return; + } + + if (!$dropdownSuppressWarning) { + $log.warn('dropdown-menu is now deprecated. Use uib-dropdown-menu instead.'); + } + + element.addClass('dropdown-menu'); + + var tplUrl = attrs.templateUrl; + if (tplUrl) { + dropdownCtrl.dropdownMenuTemplateUrl = tplUrl; + } + + if (!dropdownCtrl.dropdownMenu) { + dropdownCtrl.dropdownMenu = element; + } + } + }; +}]) + +.directive('keyboardNav', ['$log', '$dropdownSuppressWarning', function($log, $dropdownSuppressWarning) { + return { + restrict: 'A', + require: '?^dropdown', + link: function(scope, element, attrs, dropdownCtrl) { + if (!$dropdownSuppressWarning) { + $log.warn('keyboard-nav is now deprecated. Use uib-keyboard-nav instead.'); + } + + element.bind('keydown', function(e) { + if ([38, 40].indexOf(e.which) !== -1) { + e.preventDefault(); + e.stopPropagation(); + + var elems = dropdownCtrl.dropdownMenu.find('a'); + + switch (e.which) { + case (40): { // Down + if (!angular.isNumber(dropdownCtrl.selectedOption)) { + dropdownCtrl.selectedOption = 0; + } else { + dropdownCtrl.selectedOption = dropdownCtrl.selectedOption === elems.length -1 ? + dropdownCtrl.selectedOption : dropdownCtrl.selectedOption + 1; + } + break; + } + case (38): { // Up + if (!angular.isNumber(dropdownCtrl.selectedOption)) { + dropdownCtrl.selectedOption = elems.length - 1; + } else { + dropdownCtrl.selectedOption = dropdownCtrl.selectedOption === 0 ? + 0 : dropdownCtrl.selectedOption - 1; + } + break; + } + } + elems[dropdownCtrl.selectedOption].focus(); + } + }); + } + }; +}]) + +.directive('dropdownToggle', ['$log', '$dropdownSuppressWarning', function($log, $dropdownSuppressWarning) { + return { + require: '?^dropdown', + link: function(scope, element, attrs, dropdownCtrl) { + if (!$dropdownSuppressWarning) { + $log.warn('dropdown-toggle is now deprecated. Use uib-dropdown-toggle instead.'); + } + + if (!dropdownCtrl) { + return; + } + + element.addClass('dropdown-toggle'); + + dropdownCtrl.toggleElement = element; + + var toggleDropdown = function(event) { + event.preventDefault(); + + if (!element.hasClass('disabled') && !attrs.disabled) { + scope.$apply(function() { + dropdownCtrl.toggle(); + }); + } + }; + + element.bind('click', toggleDropdown); + + // WAI-ARIA + element.attr({ 'aria-haspopup': true, 'aria-expanded': false }); + scope.$watch(dropdownCtrl.isOpen, function(isOpen) { + element.attr('aria-expanded', !!isOpen); + }); + + scope.$on('$destroy', function() { + element.unbind('click', toggleDropdown); + }); + } + }; +}]); + +angular.module('ui.bootstrap.stackedMap', []) +/** + * A helper, internal data structure that acts as a map but also allows getting / removing + * elements in the LIFO order + */ + .factory('$$stackedMap', function() { + return { + createNew: function() { + var stack = []; + + return { + add: function(key, value) { + stack.push({ + key: key, + value: value + }); + }, + get: function(key) { + for (var i = 0; i < stack.length; i++) { + if (key == stack[i].key) { + return stack[i]; + } + } + }, + keys: function() { + var keys = []; + for (var i = 0; i < stack.length; i++) { + keys.push(stack[i].key); + } + return keys; + }, + top: function() { + return stack[stack.length - 1]; + }, + remove: function(key) { + var idx = -1; + for (var i = 0; i < stack.length; i++) { + if (key == stack[i].key) { + idx = i; + break; + } + } + return stack.splice(idx, 1)[0]; + }, + removeTop: function() { + return stack.splice(stack.length - 1, 1)[0]; + }, + length: function() { + return stack.length; + } + }; + } + }; + }); +angular.module('ui.bootstrap.modal', ['ui.bootstrap.stackedMap']) +/** + * A helper, internal data structure that stores all references attached to key + */ + .factory('$$multiMap', function() { + return { + createNew: function() { + var map = {}; + + return { + entries: function() { + return Object.keys(map).map(function(key) { + return { + key: key, + value: map[key] + }; + }); + }, + get: function(key) { + return map[key]; + }, + hasKey: function(key) { + return !!map[key]; + }, + keys: function() { + return Object.keys(map); + }, + put: function(key, value) { + if (!map[key]) { + map[key] = []; + } + + map[key].push(value); + }, + remove: function(key, value) { + var values = map[key]; + + if (!values) { + return; + } + + var idx = values.indexOf(value); + + if (idx !== -1) { + values.splice(idx, 1); + } + + if (!values.length) { + delete map[key]; + } + } + }; + } + }; + }) + +/** + * A helper directive for the $modal service. It creates a backdrop element. + */ + .directive('uibModalBackdrop', [ + '$animate', '$injector', '$uibModalStack', + function($animate , $injector, $modalStack) { + var $animateCss = null; + + if ($injector.has('$animateCss')) { + $animateCss = $injector.get('$animateCss'); + } + + return { + replace: true, + templateUrl: 'template/modal/backdrop.html', + compile: function(tElement, tAttrs) { + tElement.addClass(tAttrs.backdropClass); + return linkFn; + } + }; + + function linkFn(scope, element, attrs) { + // Temporary fix for prefixing + element.addClass('modal-backdrop'); + + if (attrs.modalInClass) { + if ($animateCss) { + $animateCss(element, { + addClass: attrs.modalInClass + }).start(); + } else { + $animate.addClass(element, attrs.modalInClass); + } + + scope.$on($modalStack.NOW_CLOSING_EVENT, function(e, setIsAsync) { + var done = setIsAsync(); + if ($animateCss) { + $animateCss(element, { + removeClass: attrs.modalInClass + }).start().then(done); + } else { + $animate.removeClass(element, attrs.modalInClass).then(done); + } + }); + } + } + }]) + + .directive('uibModalWindow', [ + '$uibModalStack', '$q', '$animate', '$injector', + function($modalStack , $q , $animate, $injector) { + var $animateCss = null; + + if ($injector.has('$animateCss')) { + $animateCss = $injector.get('$animateCss'); + } + + return { + scope: { + index: '@' + }, + replace: true, + transclude: true, + templateUrl: function(tElement, tAttrs) { + return tAttrs.templateUrl || 'template/modal/window.html'; + }, + link: function(scope, element, attrs) { + element.addClass(attrs.windowClass || ''); + element.addClass(attrs.windowTopClass || ''); + scope.size = attrs.size; + + scope.close = function(evt) { + var modal = $modalStack.getTop(); + if (modal && modal.value.backdrop && modal.value.backdrop !== 'static' && (evt.target === evt.currentTarget)) { + evt.preventDefault(); + evt.stopPropagation(); + $modalStack.dismiss(modal.key, 'backdrop click'); + } + }; + + // moved from template to fix issue #2280 + element.on('click', scope.close); + + // This property is only added to the scope for the purpose of detecting when this directive is rendered. + // We can detect that by using this property in the template associated with this directive and then use + // {@link Attribute#$observe} on it. For more details please see {@link TableColumnResize}. + scope.$isRendered = true; + + // Deferred object that will be resolved when this modal is render. + var modalRenderDeferObj = $q.defer(); + // Observe function will be called on next digest cycle after compilation, ensuring that the DOM is ready. + // In order to use this way of finding whether DOM is ready, we need to observe a scope property used in modal's template. + attrs.$observe('modalRender', function(value) { + if (value == 'true') { + modalRenderDeferObj.resolve(); + } + }); + + modalRenderDeferObj.promise.then(function() { + var animationPromise = null; + + if (attrs.modalInClass) { + if ($animateCss) { + animationPromise = $animateCss(element, { + addClass: attrs.modalInClass + }).start(); + } else { + animationPromise = $animate.addClass(element, attrs.modalInClass); + } + + scope.$on($modalStack.NOW_CLOSING_EVENT, function(e, setIsAsync) { + var done = setIsAsync(); + if ($animateCss) { + $animateCss(element, { + removeClass: attrs.modalInClass + }).start().then(done); + } else { + $animate.removeClass(element, attrs.modalInClass).then(done); + } + }); + } + + + $q.when(animationPromise).then(function() { + var inputWithAutofocus = element[0].querySelector('[autofocus]'); + /** + * Auto-focusing of a freshly-opened modal element causes any child elements + * with the autofocus attribute to lose focus. This is an issue on touch + * based devices which will show and then hide the onscreen keyboard. + * Attempts to refocus the autofocus element via JavaScript will not reopen + * the onscreen keyboard. Fixed by updated the focusing logic to only autofocus + * the modal element if the modal does not contain an autofocus element. + */ + if (inputWithAutofocus) { + inputWithAutofocus.focus(); + } else { + element[0].focus(); + } + }); + + // Notify {@link $modalStack} that modal is rendered. + var modal = $modalStack.getTop(); + if (modal) { + $modalStack.modalRendered(modal.key); + } + }); + } + }; + }]) + + .directive('uibModalAnimationClass', function() { + return { + compile: function(tElement, tAttrs) { + if (tAttrs.modalAnimation) { + tElement.addClass(tAttrs.uibModalAnimationClass); + } + } + }; + }) + + .directive('uibModalTransclude', function() { + return { + link: function($scope, $element, $attrs, controller, $transclude) { + $transclude($scope.$parent, function(clone) { + $element.empty(); + $element.append(clone); + }); + } + }; + }) + + .factory('$uibModalStack', [ + '$animate', '$timeout', '$document', '$compile', '$rootScope', + '$q', + '$injector', + '$$multiMap', + '$$stackedMap', + function($animate , $timeout , $document , $compile , $rootScope , + $q, + $injector, + $$multiMap, + $$stackedMap) { + var $animateCss = null; + + if ($injector.has('$animateCss')) { + $animateCss = $injector.get('$animateCss'); + } + + var OPENED_MODAL_CLASS = 'modal-open'; + + var backdropDomEl, backdropScope; + var openedWindows = $$stackedMap.createNew(); + var openedClasses = $$multiMap.createNew(); + var $modalStack = { + NOW_CLOSING_EVENT: 'modal.stack.now-closing' + }; + + //Modal focus behavior + var focusableElementList; + var focusIndex = 0; + var tababbleSelector = 'a[href], area[href], input:not([disabled]), ' + + 'button:not([disabled]),select:not([disabled]), textarea:not([disabled]), ' + + 'iframe, object, embed, *[tabindex], *[contenteditable=true]'; + + function backdropIndex() { + var topBackdropIndex = -1; + var opened = openedWindows.keys(); + for (var i = 0; i < opened.length; i++) { + if (openedWindows.get(opened[i]).value.backdrop) { + topBackdropIndex = i; + } + } + return topBackdropIndex; + } + + $rootScope.$watch(backdropIndex, function(newBackdropIndex) { + if (backdropScope) { + backdropScope.index = newBackdropIndex; + } + }); + + function removeModalWindow(modalInstance, elementToReceiveFocus) { + var body = $document.find('body').eq(0); + var modalWindow = openedWindows.get(modalInstance).value; + + //clean up the stack + openedWindows.remove(modalInstance); + + removeAfterAnimate(modalWindow.modalDomEl, modalWindow.modalScope, function() { + var modalBodyClass = modalWindow.openedClass || OPENED_MODAL_CLASS; + openedClasses.remove(modalBodyClass, modalInstance); + body.toggleClass(modalBodyClass, openedClasses.hasKey(modalBodyClass)); + toggleTopWindowClass(true); + }); + checkRemoveBackdrop(); + + //move focus to specified element if available, or else to body + if (elementToReceiveFocus && elementToReceiveFocus.focus) { + elementToReceiveFocus.focus(); + } else { + body.focus(); + } + } + + // Add or remove "windowTopClass" from the top window in the stack + function toggleTopWindowClass(toggleSwitch) { + var modalWindow; + + if (openedWindows.length() > 0) { + modalWindow = openedWindows.top().value; + modalWindow.modalDomEl.toggleClass(modalWindow.windowTopClass || '', toggleSwitch); + } + } + + function checkRemoveBackdrop() { + //remove backdrop if no longer needed + if (backdropDomEl && backdropIndex() == -1) { + var backdropScopeRef = backdropScope; + removeAfterAnimate(backdropDomEl, backdropScope, function() { + backdropScopeRef = null; + }); + backdropDomEl = undefined; + backdropScope = undefined; + } + } + + function removeAfterAnimate(domEl, scope, done) { + var asyncDeferred; + var asyncPromise = null; + var setIsAsync = function() { + if (!asyncDeferred) { + asyncDeferred = $q.defer(); + asyncPromise = asyncDeferred.promise; + } + + return function asyncDone() { + asyncDeferred.resolve(); + }; + }; + scope.$broadcast($modalStack.NOW_CLOSING_EVENT, setIsAsync); + + // Note that it's intentional that asyncPromise might be null. + // That's when setIsAsync has not been called during the + // NOW_CLOSING_EVENT broadcast. + return $q.when(asyncPromise).then(afterAnimating); + + function afterAnimating() { + if (afterAnimating.done) { + return; + } + afterAnimating.done = true; + + if ($animateCss) { + $animateCss(domEl, { + event: 'leave' + }).start().then(function() { + domEl.remove(); + }); + } else { + $animate.leave(domEl); + } + scope.$destroy(); + if (done) { + done(); + } + } + } + + $document.bind('keydown', function(evt) { + if (evt.isDefaultPrevented()) { + return evt; + } + + var modal = openedWindows.top(); + if (modal && modal.value.keyboard) { + switch (evt.which) { + case 27: { + evt.preventDefault(); + $rootScope.$apply(function() { + $modalStack.dismiss(modal.key, 'escape key press'); + }); + break; + } + case 9: { + $modalStack.loadFocusElementList(modal); + var focusChanged = false; + if (evt.shiftKey) { + if ($modalStack.isFocusInFirstItem(evt)) { + focusChanged = $modalStack.focusLastFocusableElement(); + } + } else { + if ($modalStack.isFocusInLastItem(evt)) { + focusChanged = $modalStack.focusFirstFocusableElement(); + } + } + + if (focusChanged) { + evt.preventDefault(); + evt.stopPropagation(); + } + break; + } + } + } + }); + + $modalStack.open = function(modalInstance, modal) { + var modalOpener = $document[0].activeElement, + modalBodyClass = modal.openedClass || OPENED_MODAL_CLASS; + + toggleTopWindowClass(false); + + openedWindows.add(modalInstance, { + deferred: modal.deferred, + renderDeferred: modal.renderDeferred, + modalScope: modal.scope, + backdrop: modal.backdrop, + keyboard: modal.keyboard, + openedClass: modal.openedClass, + windowTopClass: modal.windowTopClass + }); + + openedClasses.put(modalBodyClass, modalInstance); + + var body = $document.find('body').eq(0), + currBackdropIndex = backdropIndex(); + + if (currBackdropIndex >= 0 && !backdropDomEl) { + backdropScope = $rootScope.$new(true); + backdropScope.index = currBackdropIndex; + var angularBackgroundDomEl = angular.element('
'); + angularBackgroundDomEl.attr('backdrop-class', modal.backdropClass); + if (modal.animation) { + angularBackgroundDomEl.attr('modal-animation', 'true'); + } + backdropDomEl = $compile(angularBackgroundDomEl)(backdropScope); + body.append(backdropDomEl); + } + + var angularDomEl = angular.element('
'); + angularDomEl.attr({ + 'template-url': modal.windowTemplateUrl, + 'window-class': modal.windowClass, + 'window-top-class': modal.windowTopClass, + 'size': modal.size, + 'index': openedWindows.length() - 1, + 'animate': 'animate' + }).html(modal.content); + if (modal.animation) { + angularDomEl.attr('modal-animation', 'true'); + } + + var modalDomEl = $compile(angularDomEl)(modal.scope); + openedWindows.top().value.modalDomEl = modalDomEl; + openedWindows.top().value.modalOpener = modalOpener; + body.append(modalDomEl); + body.addClass(modalBodyClass); + + $modalStack.clearFocusListCache(); + }; + + function broadcastClosing(modalWindow, resultOrReason, closing) { + return !modalWindow.value.modalScope.$broadcast('modal.closing', resultOrReason, closing).defaultPrevented; + } + + $modalStack.close = function(modalInstance, result) { + var modalWindow = openedWindows.get(modalInstance); + if (modalWindow && broadcastClosing(modalWindow, result, true)) { + modalWindow.value.modalScope.$$uibDestructionScheduled = true; + modalWindow.value.deferred.resolve(result); + removeModalWindow(modalInstance, modalWindow.value.modalOpener); + return true; + } + return !modalWindow; + }; + + $modalStack.dismiss = function(modalInstance, reason) { + var modalWindow = openedWindows.get(modalInstance); + if (modalWindow && broadcastClosing(modalWindow, reason, false)) { + modalWindow.value.modalScope.$$uibDestructionScheduled = true; + modalWindow.value.deferred.reject(reason); + removeModalWindow(modalInstance, modalWindow.value.modalOpener); + return true; + } + return !modalWindow; + }; + + $modalStack.dismissAll = function(reason) { + var topModal = this.getTop(); + while (topModal && this.dismiss(topModal.key, reason)) { + topModal = this.getTop(); + } + }; + + $modalStack.getTop = function() { + return openedWindows.top(); + }; + + $modalStack.modalRendered = function(modalInstance) { + var modalWindow = openedWindows.get(modalInstance); + if (modalWindow) { + modalWindow.value.renderDeferred.resolve(); + } + }; + + $modalStack.focusFirstFocusableElement = function() { + if (focusableElementList.length > 0) { + focusableElementList[0].focus(); + return true; + } + return false; + }; + $modalStack.focusLastFocusableElement = function() { + if (focusableElementList.length > 0) { + focusableElementList[focusableElementList.length - 1].focus(); + return true; + } + return false; + }; + + $modalStack.isFocusInFirstItem = function(evt) { + if (focusableElementList.length > 0) { + return (evt.target || evt.srcElement) == focusableElementList[0]; + } + return false; + }; + + $modalStack.isFocusInLastItem = function(evt) { + if (focusableElementList.length > 0) { + return (evt.target || evt.srcElement) == focusableElementList[focusableElementList.length - 1]; + } + return false; + }; + + $modalStack.clearFocusListCache = function() { + focusableElementList = []; + focusIndex = 0; + }; + + $modalStack.loadFocusElementList = function(modalWindow) { + if (focusableElementList === undefined || !focusableElementList.length) { + if (modalWindow) { + var modalDomE1 = modalWindow.value.modalDomEl; + if (modalDomE1 && modalDomE1.length) { + focusableElementList = modalDomE1[0].querySelectorAll(tababbleSelector); + } + } + } + }; + + return $modalStack; + }]) + + .provider('$uibModal', function() { + var $modalProvider = { + options: { + animation: true, + backdrop: true, //can also be false or 'static' + keyboard: true + }, + $get: ['$injector', '$rootScope', '$q', '$templateRequest', '$controller', '$uibModalStack', '$modalSuppressWarning', '$log', + function ($injector, $rootScope, $q, $templateRequest, $controller, $modalStack, $modalSuppressWarning, $log) { + var $modal = {}; + + function getTemplatePromise(options) { + return options.template ? $q.when(options.template) : + $templateRequest(angular.isFunction(options.templateUrl) ? (options.templateUrl)() : options.templateUrl); + } + + function getResolvePromises(resolves) { + var promisesArr = []; + angular.forEach(resolves, function(value) { + if (angular.isFunction(value) || angular.isArray(value)) { + promisesArr.push($q.when($injector.invoke(value))); + } else if (angular.isString(value)) { + promisesArr.push($q.when($injector.get(value))); + } else { + promisesArr.push($q.when(value)); + } + }); + return promisesArr; + } + + var promiseChain = null; + $modal.getPromiseChain = function() { + return promiseChain; + }; + + $modal.open = function(modalOptions) { + var modalResultDeferred = $q.defer(); + var modalOpenedDeferred = $q.defer(); + var modalRenderDeferred = $q.defer(); + + //prepare an instance of a modal to be injected into controllers and returned to a caller + var modalInstance = { + result: modalResultDeferred.promise, + opened: modalOpenedDeferred.promise, + rendered: modalRenderDeferred.promise, + close: function (result) { + return $modalStack.close(modalInstance, result); + }, + dismiss: function (reason) { + return $modalStack.dismiss(modalInstance, reason); + } + }; + + //merge and clean up options + modalOptions = angular.extend({}, $modalProvider.options, modalOptions); + modalOptions.resolve = modalOptions.resolve || {}; + + //verify options + if (!modalOptions.template && !modalOptions.templateUrl) { + throw new Error('One of template or templateUrl options is required.'); + } + + var templateAndResolvePromise = + $q.all([getTemplatePromise(modalOptions)].concat(getResolvePromises(modalOptions.resolve))); + + function resolveWithTemplate() { + return templateAndResolvePromise; + } + + // Wait for the resolution of the existing promise chain. + // Then switch to our own combined promise dependency (regardless of how the previous modal fared). + // Then add to $modalStack and resolve opened. + // Finally clean up the chain variable if no subsequent modal has overwritten it. + var samePromise; + samePromise = promiseChain = $q.all([promiseChain]) + .then(resolveWithTemplate, resolveWithTemplate) + .then(function resolveSuccess(tplAndVars) { + + var modalScope = (modalOptions.scope || $rootScope).$new(); + modalScope.$close = modalInstance.close; + modalScope.$dismiss = modalInstance.dismiss; + + modalScope.$on('$destroy', function() { + if (!modalScope.$$uibDestructionScheduled) { + modalScope.$dismiss('$uibUnscheduledDestruction'); + } + }); + + var ctrlInstance, ctrlLocals = {}; + var resolveIter = 1; + + //controllers + if (modalOptions.controller) { + ctrlLocals.$scope = modalScope; + ctrlLocals.$uibModalInstance = modalInstance; + Object.defineProperty(ctrlLocals, '$modalInstance', { + get: function() { + if (!$modalSuppressWarning) { + $log.warn('$modalInstance is now deprecated. Use $uibModalInstance instead.'); + } + + return modalInstance; + } + }); + angular.forEach(modalOptions.resolve, function(value, key) { + ctrlLocals[key] = tplAndVars[resolveIter++]; + }); + + ctrlInstance = $controller(modalOptions.controller, ctrlLocals); + if (modalOptions.controllerAs) { + if (modalOptions.bindToController) { + angular.extend(ctrlInstance, modalScope); + } + + modalScope[modalOptions.controllerAs] = ctrlInstance; + } + } + + $modalStack.open(modalInstance, { + scope: modalScope, + deferred: modalResultDeferred, + renderDeferred: modalRenderDeferred, + content: tplAndVars[0], + animation: modalOptions.animation, + backdrop: modalOptions.backdrop, + keyboard: modalOptions.keyboard, + backdropClass: modalOptions.backdropClass, + windowTopClass: modalOptions.windowTopClass, + windowClass: modalOptions.windowClass, + windowTemplateUrl: modalOptions.windowTemplateUrl, + size: modalOptions.size, + openedClass: modalOptions.openedClass + }); + modalOpenedDeferred.resolve(true); + + }, function resolveError(reason) { + modalOpenedDeferred.reject(reason); + modalResultDeferred.reject(reason); + }) + .finally(function() { + if (promiseChain === samePromise) { + promiseChain = null; + } + }); + + return modalInstance; + }; + + return $modal; + } + ] + }; + + return $modalProvider; + }); + +/* deprecated modal below */ + +angular.module('ui.bootstrap.modal') + + .value('$modalSuppressWarning', false) + + /** + * A helper directive for the $modal service. It creates a backdrop element. + */ + .directive('modalBackdrop', [ + '$animate', '$injector', '$modalStack', '$log', '$modalSuppressWarning', + function($animate , $injector, $modalStack, $log, $modalSuppressWarning) { + var $animateCss = null; + + if ($injector.has('$animateCss')) { + $animateCss = $injector.get('$animateCss'); + } + + return { + replace: true, + templateUrl: 'template/modal/backdrop.html', + compile: function(tElement, tAttrs) { + tElement.addClass(tAttrs.backdropClass); + return linkFn; + } + }; + + function linkFn(scope, element, attrs) { + if (!$modalSuppressWarning) { + $log.warn('modal-backdrop is now deprecated. Use uib-modal-backdrop instead.'); + } + element.addClass('modal-backdrop'); + + if (attrs.modalInClass) { + if ($animateCss) { + $animateCss(element, { + addClass: attrs.modalInClass + }).start(); + } else { + $animate.addClass(element, attrs.modalInClass); + } + + scope.$on($modalStack.NOW_CLOSING_EVENT, function(e, setIsAsync) { + var done = setIsAsync(); + if ($animateCss) { + $animateCss(element, { + removeClass: attrs.modalInClass + }).start().then(done); + } else { + $animate.removeClass(element, attrs.modalInClass).then(done); + } + }); + } + } + }]) + + .directive('modalWindow', [ + '$modalStack', '$q', '$animate', '$injector', '$log', '$modalSuppressWarning', + function($modalStack , $q , $animate, $injector, $log, $modalSuppressWarning) { + var $animateCss = null; + + if ($injector.has('$animateCss')) { + $animateCss = $injector.get('$animateCss'); + } + + return { + scope: { + index: '@' + }, + replace: true, + transclude: true, + templateUrl: function(tElement, tAttrs) { + return tAttrs.templateUrl || 'template/modal/window.html'; + }, + link: function(scope, element, attrs) { + if (!$modalSuppressWarning) { + $log.warn('modal-window is now deprecated. Use uib-modal-window instead.'); + } + element.addClass(attrs.windowClass || ''); + element.addClass(attrs.windowTopClass || ''); + scope.size = attrs.size; + + scope.close = function(evt) { + var modal = $modalStack.getTop(); + if (modal && modal.value.backdrop && modal.value.backdrop !== 'static' && (evt.target === evt.currentTarget)) { + evt.preventDefault(); + evt.stopPropagation(); + $modalStack.dismiss(modal.key, 'backdrop click'); + } + }; + + // moved from template to fix issue #2280 + element.on('click', scope.close); + + // This property is only added to the scope for the purpose of detecting when this directive is rendered. + // We can detect that by using this property in the template associated with this directive and then use + // {@link Attribute#$observe} on it. For more details please see {@link TableColumnResize}. + scope.$isRendered = true; + + // Deferred object that will be resolved when this modal is render. + var modalRenderDeferObj = $q.defer(); + // Observe function will be called on next digest cycle after compilation, ensuring that the DOM is ready. + // In order to use this way of finding whether DOM is ready, we need to observe a scope property used in modal's template. + attrs.$observe('modalRender', function(value) { + if (value == 'true') { + modalRenderDeferObj.resolve(); + } + }); + + modalRenderDeferObj.promise.then(function() { + var animationPromise = null; + + if (attrs.modalInClass) { + if ($animateCss) { + animationPromise = $animateCss(element, { + addClass: attrs.modalInClass + }).start(); + } else { + animationPromise = $animate.addClass(element, attrs.modalInClass); + } + + scope.$on($modalStack.NOW_CLOSING_EVENT, function(e, setIsAsync) { + var done = setIsAsync(); + if ($animateCss) { + $animateCss(element, { + removeClass: attrs.modalInClass + }).start().then(done); + } else { + $animate.removeClass(element, attrs.modalInClass).then(done); + } + }); + } + + + $q.when(animationPromise).then(function() { + var inputWithAutofocus = element[0].querySelector('[autofocus]'); + /** + * Auto-focusing of a freshly-opened modal element causes any child elements + * with the autofocus attribute to lose focus. This is an issue on touch + * based devices which will show and then hide the onscreen keyboard. + * Attempts to refocus the autofocus element via JavaScript will not reopen + * the onscreen keyboard. Fixed by updated the focusing logic to only autofocus + * the modal element if the modal does not contain an autofocus element. + */ + if (inputWithAutofocus) { + inputWithAutofocus.focus(); + } else { + element[0].focus(); + } + }); + + // Notify {@link $modalStack} that modal is rendered. + var modal = $modalStack.getTop(); + if (modal) { + $modalStack.modalRendered(modal.key); + } + }); + } + }; + }]) + + .directive('modalAnimationClass', [ + '$log', '$modalSuppressWarning', + function ($log, $modalSuppressWarning) { + return { + compile: function(tElement, tAttrs) { + if (!$modalSuppressWarning) { + $log.warn('modal-animation-class is now deprecated. Use uib-modal-animation-class instead.'); + } + if (tAttrs.modalAnimation) { + tElement.addClass(tAttrs.modalAnimationClass); + } + } + }; + }]) + + .directive('modalTransclude', [ + '$log', '$modalSuppressWarning', + function ($log, $modalSuppressWarning) { + return { + link: function($scope, $element, $attrs, controller, $transclude) { + if (!$modalSuppressWarning) { + $log.warn('modal-transclude is now deprecated. Use uib-modal-transclude instead.'); + } + $transclude($scope.$parent, function(clone) { + $element.empty(); + $element.append(clone); + }); + } + }; + }]) + + .service('$modalStack', [ + '$animate', '$timeout', '$document', '$compile', '$rootScope', + '$q', + '$injector', + '$$multiMap', + '$$stackedMap', + '$uibModalStack', + '$log', + '$modalSuppressWarning', + function($animate , $timeout , $document , $compile , $rootScope , + $q, + $injector, + $$multiMap, + $$stackedMap, + $uibModalStack, + $log, + $modalSuppressWarning) { + if (!$modalSuppressWarning) { + $log.warn('$modalStack is now deprecated. Use $uibModalStack instead.'); + } + + angular.extend(this, $uibModalStack); + }]) + + .provider('$modal', ['$uibModalProvider', function($uibModalProvider) { + angular.extend(this, $uibModalProvider); + + this.$get = ['$injector', '$log', '$modalSuppressWarning', + function ($injector, $log, $modalSuppressWarning) { + if (!$modalSuppressWarning) { + $log.warn('$modal is now deprecated. Use $uibModal instead.'); + } + + return $injector.invoke($uibModalProvider.$get); + }]; + }]); + +angular.module('ui.bootstrap.pagination', []) +.controller('UibPaginationController', ['$scope', '$attrs', '$parse', function($scope, $attrs, $parse) { + var self = this, + ngModelCtrl = { $setViewValue: angular.noop }, // nullModelCtrl + setNumPages = $attrs.numPages ? $parse($attrs.numPages).assign : angular.noop; + + this.init = function(ngModelCtrl_, config) { + ngModelCtrl = ngModelCtrl_; + this.config = config; + + ngModelCtrl.$render = function() { + self.render(); + }; + + if ($attrs.itemsPerPage) { + $scope.$parent.$watch($parse($attrs.itemsPerPage), function(value) { + self.itemsPerPage = parseInt(value, 10); + $scope.totalPages = self.calculateTotalPages(); + }); + } else { + this.itemsPerPage = config.itemsPerPage; + } + + $scope.$watch('totalItems', function() { + $scope.totalPages = self.calculateTotalPages(); + }); + + $scope.$watch('totalPages', function(value) { + setNumPages($scope.$parent, value); // Readonly variable + + if ( $scope.page > value ) { + $scope.selectPage(value); + } else { + ngModelCtrl.$render(); + } + }); + }; + + this.calculateTotalPages = function() { + var totalPages = this.itemsPerPage < 1 ? 1 : Math.ceil($scope.totalItems / this.itemsPerPage); + return Math.max(totalPages || 0, 1); + }; + + this.render = function() { + $scope.page = parseInt(ngModelCtrl.$viewValue, 10) || 1; + }; + + $scope.selectPage = function(page, evt) { + if (evt) { + evt.preventDefault(); + } + + var clickAllowed = !$scope.ngDisabled || !evt; + if (clickAllowed && $scope.page !== page && page > 0 && page <= $scope.totalPages) { + if (evt && evt.target) { + evt.target.blur(); + } + ngModelCtrl.$setViewValue(page); + ngModelCtrl.$render(); + } + }; + + $scope.getText = function(key) { + return $scope[key + 'Text'] || self.config[key + 'Text']; + }; + + $scope.noPrevious = function() { + return $scope.page === 1; + }; + + $scope.noNext = function() { + return $scope.page === $scope.totalPages; + }; +}]) + +.constant('uibPaginationConfig', { + itemsPerPage: 10, + boundaryLinks: false, + directionLinks: true, + firstText: 'First', + previousText: 'Previous', + nextText: 'Next', + lastText: 'Last', + rotate: true +}) + +.directive('uibPagination', ['$parse', 'uibPaginationConfig', function($parse, paginationConfig) { + return { + restrict: 'EA', + scope: { + totalItems: '=', + firstText: '@', + previousText: '@', + nextText: '@', + lastText: '@', + ngDisabled:'=' + }, + require: ['uibPagination', '?ngModel'], + controller: 'UibPaginationController', + controllerAs: 'pagination', + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/pagination/pagination.html'; + }, + replace: true, + link: function(scope, element, attrs, ctrls) { + var paginationCtrl = ctrls[0], ngModelCtrl = ctrls[1]; + + if (!ngModelCtrl) { + return; // do nothing if no ng-model + } + + // Setup configuration parameters + var maxSize = angular.isDefined(attrs.maxSize) ? scope.$parent.$eval(attrs.maxSize) : paginationConfig.maxSize, + rotate = angular.isDefined(attrs.rotate) ? scope.$parent.$eval(attrs.rotate) : paginationConfig.rotate; + scope.boundaryLinks = angular.isDefined(attrs.boundaryLinks) ? scope.$parent.$eval(attrs.boundaryLinks) : paginationConfig.boundaryLinks; + scope.directionLinks = angular.isDefined(attrs.directionLinks) ? scope.$parent.$eval(attrs.directionLinks) : paginationConfig.directionLinks; + + paginationCtrl.init(ngModelCtrl, paginationConfig); + + if (attrs.maxSize) { + scope.$parent.$watch($parse(attrs.maxSize), function(value) { + maxSize = parseInt(value, 10); + paginationCtrl.render(); + }); + } + + // Create page object used in template + function makePage(number, text, isActive) { + return { + number: number, + text: text, + active: isActive + }; + } + + function getPages(currentPage, totalPages) { + var pages = []; + + // Default page limits + var startPage = 1, endPage = totalPages; + var isMaxSized = angular.isDefined(maxSize) && maxSize < totalPages; + + // recompute if maxSize + if (isMaxSized) { + if (rotate) { + // Current page is displayed in the middle of the visible ones + startPage = Math.max(currentPage - Math.floor(maxSize/2), 1); + endPage = startPage + maxSize - 1; + + // Adjust if limit is exceeded + if (endPage > totalPages) { + endPage = totalPages; + startPage = endPage - maxSize + 1; + } + } else { + // Visible pages are paginated with maxSize + startPage = ((Math.ceil(currentPage / maxSize) - 1) * maxSize) + 1; + + // Adjust last page if limit is exceeded + endPage = Math.min(startPage + maxSize - 1, totalPages); + } + } + + // Add page number links + for (var number = startPage; number <= endPage; number++) { + var page = makePage(number, number, number === currentPage); + pages.push(page); + } + + // Add links to move between page sets + if (isMaxSized && ! rotate) { + if (startPage > 1) { + var previousPageSet = makePage(startPage - 1, '...', false); + pages.unshift(previousPageSet); + } + + if (endPage < totalPages) { + var nextPageSet = makePage(endPage + 1, '...', false); + pages.push(nextPageSet); + } + } + + return pages; + } + + var originalRender = paginationCtrl.render; + paginationCtrl.render = function() { + originalRender(); + if (scope.page > 0 && scope.page <= scope.totalPages) { + scope.pages = getPages(scope.page, scope.totalPages); + } + }; + } + }; +}]) + +.constant('uibPagerConfig', { + itemsPerPage: 10, + previousText: '« Previous', + nextText: 'Next »', + align: true +}) + +.directive('uibPager', ['uibPagerConfig', function(pagerConfig) { + return { + restrict: 'EA', + scope: { + totalItems: '=', + previousText: '@', + nextText: '@', + ngDisabled: '=' + }, + require: ['uibPager', '?ngModel'], + controller: 'UibPaginationController', + controllerAs: 'pagination', + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/pagination/pager.html'; + }, + replace: true, + link: function(scope, element, attrs, ctrls) { + var paginationCtrl = ctrls[0], ngModelCtrl = ctrls[1]; + + if (!ngModelCtrl) { + return; // do nothing if no ng-model + } + + scope.align = angular.isDefined(attrs.align) ? scope.$parent.$eval(attrs.align) : pagerConfig.align; + paginationCtrl.init(ngModelCtrl, pagerConfig); + } + }; +}]); + +/* Deprecated Pagination Below */ + +angular.module('ui.bootstrap.pagination') +.value('$paginationSuppressWarning', false) +.controller('PaginationController', ['$scope', '$attrs', '$parse', '$log', '$paginationSuppressWarning', function($scope, $attrs, $parse, $log, $paginationSuppressWarning) { + if (!$paginationSuppressWarning) { + $log.warn('PaginationController is now deprecated. Use UibPaginationController instead.'); + } + + var self = this, + ngModelCtrl = { $setViewValue: angular.noop }, // nullModelCtrl + setNumPages = $attrs.numPages ? $parse($attrs.numPages).assign : angular.noop; + + this.init = function(ngModelCtrl_, config) { + ngModelCtrl = ngModelCtrl_; + this.config = config; + + ngModelCtrl.$render = function() { + self.render(); + }; + + if ($attrs.itemsPerPage) { + $scope.$parent.$watch($parse($attrs.itemsPerPage), function(value) { + self.itemsPerPage = parseInt(value, 10); + $scope.totalPages = self.calculateTotalPages(); + }); + } else { + this.itemsPerPage = config.itemsPerPage; + } + + $scope.$watch('totalItems', function() { + $scope.totalPages = self.calculateTotalPages(); + }); + + $scope.$watch('totalPages', function(value) { + setNumPages($scope.$parent, value); // Readonly variable + + if ( $scope.page > value ) { + $scope.selectPage(value); + } else { + ngModelCtrl.$render(); + } + }); + }; + + this.calculateTotalPages = function() { + var totalPages = this.itemsPerPage < 1 ? 1 : Math.ceil($scope.totalItems / this.itemsPerPage); + return Math.max(totalPages || 0, 1); + }; + + this.render = function() { + $scope.page = parseInt(ngModelCtrl.$viewValue, 10) || 1; + }; + + $scope.selectPage = function(page, evt) { + if (evt) { + evt.preventDefault(); + } + + var clickAllowed = !$scope.ngDisabled || !evt; + if (clickAllowed && $scope.page !== page && page > 0 && page <= $scope.totalPages) { + if (evt && evt.target) { + evt.target.blur(); + } + ngModelCtrl.$setViewValue(page); + ngModelCtrl.$render(); + } + }; + + $scope.getText = function(key) { + return $scope[key + 'Text'] || self.config[key + 'Text']; + }; + + $scope.noPrevious = function() { + return $scope.page === 1; + }; + + $scope.noNext = function() { + return $scope.page === $scope.totalPages; + }; +}]) +.directive('pagination', ['$parse', 'uibPaginationConfig', '$log', '$paginationSuppressWarning', function($parse, paginationConfig, $log, $paginationSuppressWarning) { + return { + restrict: 'EA', + scope: { + totalItems: '=', + firstText: '@', + previousText: '@', + nextText: '@', + lastText: '@', + ngDisabled:'=' + }, + require: ['pagination', '?ngModel'], + controller: 'PaginationController', + controllerAs: 'pagination', + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/pagination/pagination.html'; + }, + replace: true, + link: function(scope, element, attrs, ctrls) { + if (!$paginationSuppressWarning) { + $log.warn('pagination is now deprecated. Use uib-pagination instead.'); + } + var paginationCtrl = ctrls[0], ngModelCtrl = ctrls[1]; + + if (!ngModelCtrl) { + return; // do nothing if no ng-model + } + + // Setup configuration parameters + var maxSize = angular.isDefined(attrs.maxSize) ? scope.$parent.$eval(attrs.maxSize) : paginationConfig.maxSize, + rotate = angular.isDefined(attrs.rotate) ? scope.$parent.$eval(attrs.rotate) : paginationConfig.rotate; + scope.boundaryLinks = angular.isDefined(attrs.boundaryLinks) ? scope.$parent.$eval(attrs.boundaryLinks) : paginationConfig.boundaryLinks; + scope.directionLinks = angular.isDefined(attrs.directionLinks) ? scope.$parent.$eval(attrs.directionLinks) : paginationConfig.directionLinks; + + paginationCtrl.init(ngModelCtrl, paginationConfig); + + if (attrs.maxSize) { + scope.$parent.$watch($parse(attrs.maxSize), function(value) { + maxSize = parseInt(value, 10); + paginationCtrl.render(); + }); + } + + // Create page object used in template + function makePage(number, text, isActive) { + return { + number: number, + text: text, + active: isActive + }; + } + + function getPages(currentPage, totalPages) { + var pages = []; + + // Default page limits + var startPage = 1, endPage = totalPages; + var isMaxSized = angular.isDefined(maxSize) && maxSize < totalPages; + + // recompute if maxSize + if (isMaxSized) { + if (rotate) { + // Current page is displayed in the middle of the visible ones + startPage = Math.max(currentPage - Math.floor(maxSize/2), 1); + endPage = startPage + maxSize - 1; + + // Adjust if limit is exceeded + if (endPage > totalPages) { + endPage = totalPages; + startPage = endPage - maxSize + 1; + } + } else { + // Visible pages are paginated with maxSize + startPage = ((Math.ceil(currentPage / maxSize) - 1) * maxSize) + 1; + + // Adjust last page if limit is exceeded + endPage = Math.min(startPage + maxSize - 1, totalPages); + } + } + + // Add page number links + for (var number = startPage; number <= endPage; number++) { + var page = makePage(number, number, number === currentPage); + pages.push(page); + } + + // Add links to move between page sets + if (isMaxSized && ! rotate) { + if (startPage > 1) { + var previousPageSet = makePage(startPage - 1, '...', false); + pages.unshift(previousPageSet); + } + + if (endPage < totalPages) { + var nextPageSet = makePage(endPage + 1, '...', false); + pages.push(nextPageSet); + } + } + + return pages; + } + + var originalRender = paginationCtrl.render; + paginationCtrl.render = function() { + originalRender(); + if (scope.page > 0 && scope.page <= scope.totalPages) { + scope.pages = getPages(scope.page, scope.totalPages); + } + }; + } + }; +}]) + +.directive('pager', ['uibPagerConfig', '$log', '$paginationSuppressWarning', function(pagerConfig, $log, $paginationSuppressWarning) { + return { + restrict: 'EA', + scope: { + totalItems: '=', + previousText: '@', + nextText: '@', + ngDisabled: '=' + }, + require: ['pager', '?ngModel'], + controller: 'PaginationController', + controllerAs: 'pagination', + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/pagination/pager.html'; + }, + replace: true, + link: function(scope, element, attrs, ctrls) { + if (!$paginationSuppressWarning) { + $log.warn('pager is now deprecated. Use uib-pager instead.'); + } + var paginationCtrl = ctrls[0], ngModelCtrl = ctrls[1]; + + if (!ngModelCtrl) { + return; // do nothing if no ng-model + } + + scope.align = angular.isDefined(attrs.align) ? scope.$parent.$eval(attrs.align) : pagerConfig.align; + paginationCtrl.init(ngModelCtrl, pagerConfig); + } + }; +}]); + +/** + * The following features are still outstanding: animation as a + * function, placement as a function, inside, support for more triggers than + * just mouse enter/leave, html tooltips, and selector delegation. + */ +angular.module('ui.bootstrap.tooltip', ['ui.bootstrap.position', 'ui.bootstrap.stackedMap']) + +/** + * The $tooltip service creates tooltip- and popover-like directives as well as + * houses global options for them. + */ +.provider('$uibTooltip', function() { + // The default options tooltip and popover. + var defaultOptions = { + placement: 'top', + animation: true, + popupDelay: 0, + popupCloseDelay: 0, + useContentExp: false + }; + + // Default hide triggers for each show trigger + var triggerMap = { + 'mouseenter': 'mouseleave', + 'click': 'click', + 'focus': 'blur', + 'none': '' + }; + + // The options specified to the provider globally. + var globalOptions = {}; + + /** + * `options({})` allows global configuration of all tooltips in the + * application. + * + * var app = angular.module( 'App', ['ui.bootstrap.tooltip'], function( $tooltipProvider ) { + * // place tooltips left instead of top by default + * $tooltipProvider.options( { placement: 'left' } ); + * }); + */ + this.options = function(value) { + angular.extend(globalOptions, value); + }; + + /** + * This allows you to extend the set of trigger mappings available. E.g.: + * + * $tooltipProvider.setTriggers( 'openTrigger': 'closeTrigger' ); + */ + this.setTriggers = function setTriggers(triggers) { + angular.extend(triggerMap, triggers); + }; + + /** + * This is a helper function for translating camel-case to snake-case. + */ + function snake_case(name) { + var regexp = /[A-Z]/g; + var separator = '-'; + return name.replace(regexp, function(letter, pos) { + return (pos ? separator : '') + letter.toLowerCase(); + }); + } + + /** + * Returns the actual instance of the $tooltip service. + * TODO support multiple triggers + */ + this.$get = ['$window', '$compile', '$timeout', '$document', '$uibPosition', '$interpolate', '$rootScope', '$parse', '$$stackedMap', function($window, $compile, $timeout, $document, $position, $interpolate, $rootScope, $parse, $$stackedMap) { + var openedTooltips = $$stackedMap.createNew(); + $document.on('keypress', function(e) { + if (e.which === 27) { + var last = openedTooltips.top(); + if (last) { + last.value.close(); + openedTooltips.removeTop(); + last = null; + } + } + }); + + return function $tooltip(ttType, prefix, defaultTriggerShow, options) { + options = angular.extend({}, defaultOptions, globalOptions, options); + + /** + * Returns an object of show and hide triggers. + * + * If a trigger is supplied, + * it is used to show the tooltip; otherwise, it will use the `trigger` + * option passed to the `$tooltipProvider.options` method; else it will + * default to the trigger supplied to this directive factory. + * + * The hide trigger is based on the show trigger. If the `trigger` option + * was passed to the `$tooltipProvider.options` method, it will use the + * mapped trigger from `triggerMap` or the passed trigger if the map is + * undefined; otherwise, it uses the `triggerMap` value of the show + * trigger; else it will just use the show trigger. + */ + function getTriggers(trigger) { + var show = (trigger || options.trigger || defaultTriggerShow).split(' '); + var hide = show.map(function(trigger) { + return triggerMap[trigger] || trigger; + }); + return { + show: show, + hide: hide + }; + } + + var directiveName = snake_case(ttType); + + var startSym = $interpolate.startSymbol(); + var endSym = $interpolate.endSymbol(); + var template = + '
' + + '
'; + + return { + compile: function(tElem, tAttrs) { + var tooltipLinker = $compile(template); + + return function link(scope, element, attrs, tooltipCtrl) { + var tooltip; + var tooltipLinkedScope; + var transitionTimeout; + var showTimeout; + var hideTimeout; + var positionTimeout; + var appendToBody = angular.isDefined(options.appendToBody) ? options.appendToBody : false; + var triggers = getTriggers(undefined); + var hasEnableExp = angular.isDefined(attrs[prefix + 'Enable']); + var ttScope = scope.$new(true); + var repositionScheduled = false; + var isOpenParse = angular.isDefined(attrs[prefix + 'IsOpen']) ? $parse(attrs[prefix + 'IsOpen']) : false; + var contentParse = options.useContentExp ? $parse(attrs[ttType]) : false; + var observers = []; + + var positionTooltip = function() { + // check if tooltip exists and is not empty + if (!tooltip || !tooltip.html()) { return; } + + if (!positionTimeout) { + positionTimeout = $timeout(function() { + // Reset the positioning. + tooltip.css({ top: 0, left: 0 }); + + // Now set the calculated positioning. + var ttCss = $position.positionElements(element, tooltip, ttScope.placement, appendToBody); + ttCss.top += 'px'; + ttCss.left += 'px'; + ttCss.visibility = 'visible'; + tooltip.css(ttCss); + + positionTimeout = null; + }, 0, false); + } + }; + + // Set up the correct scope to allow transclusion later + ttScope.origScope = scope; + + // By default, the tooltip is not open. + // TODO add ability to start tooltip opened + ttScope.isOpen = false; + openedTooltips.add(ttScope, { + close: hide + }); + + function toggleTooltipBind() { + if (!ttScope.isOpen) { + showTooltipBind(); + } else { + hideTooltipBind(); + } + } + + // Show the tooltip with delay if specified, otherwise show it immediately + function showTooltipBind() { + if (hasEnableExp && !scope.$eval(attrs[prefix + 'Enable'])) { + return; + } + + cancelHide(); + prepareTooltip(); + + if (ttScope.popupDelay) { + // Do nothing if the tooltip was already scheduled to pop-up. + // This happens if show is triggered multiple times before any hide is triggered. + if (!showTimeout) { + showTimeout = $timeout(show, ttScope.popupDelay, false); + } + } else { + show(); + } + } + + function hideTooltipBind() { + cancelShow(); + + if (ttScope.popupCloseDelay) { + if (!hideTimeout) { + hideTimeout = $timeout(hide, ttScope.popupCloseDelay, false); + } + } else { + hide(); + } + } + + // Show the tooltip popup element. + function show() { + cancelShow(); + cancelHide(); + + // Don't show empty tooltips. + if (!ttScope.content) { + return angular.noop; + } + + createTooltip(); + + // And show the tooltip. + ttScope.$evalAsync(function() { + ttScope.isOpen = true; + assignIsOpen(true); + positionTooltip(); + }); + } + + function cancelShow() { + if (showTimeout) { + $timeout.cancel(showTimeout); + showTimeout = null; + } + + if (positionTimeout) { + $timeout.cancel(positionTimeout); + positionTimeout = null; + } + } + + // Hide the tooltip popup element. + function hide() { + cancelShow(); + cancelHide(); + + if (!ttScope) { + return; + } + + // First things first: we don't show it anymore. + ttScope.$evalAsync(function() { + ttScope.isOpen = false; + assignIsOpen(false); + // And now we remove it from the DOM. However, if we have animation, we + // need to wait for it to expire beforehand. + // FIXME: this is a placeholder for a port of the transitions library. + // The fade transition in TWBS is 150ms. + if (ttScope.animation) { + if (!transitionTimeout) { + transitionTimeout = $timeout(removeTooltip, 150, false); + } + } else { + removeTooltip(); + } + }); + } + + function cancelHide() { + if (hideTimeout) { + $timeout.cancel(hideTimeout); + hideTimeout = null; + } + if (transitionTimeout) { + $timeout.cancel(transitionTimeout); + transitionTimeout = null; + } + } + + function createTooltip() { + // There can only be one tooltip element per directive shown at once. + if (tooltip) { + return; + } + + tooltipLinkedScope = ttScope.$new(); + tooltip = tooltipLinker(tooltipLinkedScope, function(tooltip) { + if (appendToBody) { + $document.find('body').append(tooltip); + } else { + element.after(tooltip); + } + }); + + prepObservers(); + } + + function removeTooltip() { + unregisterObservers(); + + transitionTimeout = null; + if (tooltip) { + tooltip.remove(); + tooltip = null; + } + if (tooltipLinkedScope) { + tooltipLinkedScope.$destroy(); + tooltipLinkedScope = null; + } + } + + /** + * Set the inital scope values. Once + * the tooltip is created, the observers + * will be added to keep things in synch. + */ + function prepareTooltip() { + ttScope.title = attrs[prefix + 'Title']; + if (contentParse) { + ttScope.content = contentParse(scope); + } else { + ttScope.content = attrs[ttType]; + } + + ttScope.popupClass = attrs[prefix + 'Class']; + ttScope.placement = angular.isDefined(attrs[prefix + 'Placement']) ? attrs[prefix + 'Placement'] : options.placement; + + var delay = parseInt(attrs[prefix + 'PopupDelay'], 10); + var closeDelay = parseInt(attrs[prefix + 'PopupCloseDelay'], 10); + ttScope.popupDelay = !isNaN(delay) ? delay : options.popupDelay; + ttScope.popupCloseDelay = !isNaN(closeDelay) ? closeDelay : options.popupCloseDelay; + } + + function assignIsOpen(isOpen) { + if (isOpenParse && angular.isFunction(isOpenParse.assign)) { + isOpenParse.assign(scope, isOpen); + } + } + + ttScope.contentExp = function() { + return ttScope.content; + }; + + /** + * Observe the relevant attributes. + */ + attrs.$observe('disabled', function(val) { + if (val) { + cancelShow(); + } + + if (val && ttScope.isOpen) { + hide(); + } + }); + + if (isOpenParse) { + scope.$watch(isOpenParse, function(val) { + /*jshint -W018 */ + if (ttScope && !val === ttScope.isOpen) { + toggleTooltipBind(); + } + /*jshint +W018 */ + }); + } + + function prepObservers() { + observers.length = 0; + + if (contentParse) { + observers.push( + scope.$watch(contentParse, function(val) { + ttScope.content = val; + if (!val && ttScope.isOpen) { + hide(); + } + }) + ); + + observers.push( + tooltipLinkedScope.$watch(function() { + if (!repositionScheduled) { + repositionScheduled = true; + tooltipLinkedScope.$$postDigest(function() { + repositionScheduled = false; + if (ttScope && ttScope.isOpen) { + positionTooltip(); + } + }); + } + }) + ); + } else { + observers.push( + attrs.$observe(ttType, function(val) { + ttScope.content = val; + if (!val && ttScope.isOpen) { + hide(); + } else { + positionTooltip(); + } + }) + ); + } + + observers.push( + attrs.$observe(prefix + 'Title', function(val) { + ttScope.title = val; + if (ttScope.isOpen) { + positionTooltip(); + } + }) + ); + + observers.push( + attrs.$observe(prefix + 'Placement', function(val) { + ttScope.placement = val ? val : options.placement; + if (ttScope.isOpen) { + positionTooltip(); + } + }) + ); + } + + function unregisterObservers() { + if (observers.length) { + angular.forEach(observers, function(observer) { + observer(); + }); + observers.length = 0; + } + } + + var unregisterTriggers = function() { + triggers.show.forEach(function(trigger) { + element.unbind(trigger, showTooltipBind); + }); + triggers.hide.forEach(function(trigger) { + trigger.split(' ').forEach(function(hideTrigger) { + element[0].removeEventListener(hideTrigger, hideTooltipBind); + }); + }); + }; + + function prepTriggers() { + var val = attrs[prefix + 'Trigger']; + unregisterTriggers(); + + triggers = getTriggers(val); + + if (triggers.show !== 'none') { + triggers.show.forEach(function(trigger, idx) { + // Using raw addEventListener due to jqLite/jQuery bug - #4060 + if (trigger === triggers.hide[idx]) { + element[0].addEventListener(trigger, toggleTooltipBind); + } else if (trigger) { + element[0].addEventListener(trigger, showTooltipBind); + triggers.hide[idx].split(' ').forEach(function(trigger) { + element[0].addEventListener(trigger, hideTooltipBind); + }); + } + + element.on('keypress', function(e) { + if (e.which === 27) { + hideTooltipBind(); + } + }); + }); + } + } + + prepTriggers(); + + var animation = scope.$eval(attrs[prefix + 'Animation']); + ttScope.animation = angular.isDefined(animation) ? !!animation : options.animation; + + var appendToBodyVal = scope.$eval(attrs[prefix + 'AppendToBody']); + appendToBody = angular.isDefined(appendToBodyVal) ? appendToBodyVal : appendToBody; + + // if a tooltip is attached to we need to remove it on + // location change as its parent scope will probably not be destroyed + // by the change. + if (appendToBody) { + scope.$on('$locationChangeSuccess', function closeTooltipOnLocationChangeSuccess() { + if (ttScope.isOpen) { + hide(); + } + }); + } + + // Make sure tooltip is destroyed and removed. + scope.$on('$destroy', function onDestroyTooltip() { + cancelShow(); + cancelHide(); + unregisterTriggers(); + removeTooltip(); + openedTooltips.remove(ttScope); + ttScope = null; + }); + }; + } + }; + }; + }]; +}) + +// This is mostly ngInclude code but with a custom scope +.directive('uibTooltipTemplateTransclude', [ + '$animate', '$sce', '$compile', '$templateRequest', +function ($animate , $sce , $compile , $templateRequest) { + return { + link: function(scope, elem, attrs) { + var origScope = scope.$eval(attrs.tooltipTemplateTranscludeScope); + + var changeCounter = 0, + currentScope, + previousElement, + currentElement; + + var cleanupLastIncludeContent = function() { + if (previousElement) { + previousElement.remove(); + previousElement = null; + } + + if (currentScope) { + currentScope.$destroy(); + currentScope = null; + } + + if (currentElement) { + $animate.leave(currentElement).then(function() { + previousElement = null; + }); + previousElement = currentElement; + currentElement = null; + } + }; + + scope.$watch($sce.parseAsResourceUrl(attrs.uibTooltipTemplateTransclude), function(src) { + var thisChangeId = ++changeCounter; + + if (src) { + //set the 2nd param to true to ignore the template request error so that the inner + //contents and scope can be cleaned up. + $templateRequest(src, true).then(function(response) { + if (thisChangeId !== changeCounter) { return; } + var newScope = origScope.$new(); + var template = response; + + var clone = $compile(template)(newScope, function(clone) { + cleanupLastIncludeContent(); + $animate.enter(clone, elem); + }); + + currentScope = newScope; + currentElement = clone; + + currentScope.$emit('$includeContentLoaded', src); + }, function() { + if (thisChangeId === changeCounter) { + cleanupLastIncludeContent(); + scope.$emit('$includeContentError', src); + } + }); + scope.$emit('$includeContentRequested', src); + } else { + cleanupLastIncludeContent(); + } + }); + + scope.$on('$destroy', cleanupLastIncludeContent); + } + }; +}]) + +/** + * Note that it's intentional that these classes are *not* applied through $animate. + * They must not be animated as they're expected to be present on the tooltip on + * initialization. + */ +.directive('uibTooltipClasses', function() { + return { + restrict: 'A', + link: function(scope, element, attrs) { + if (scope.placement) { + element.addClass(scope.placement); + } + + if (scope.popupClass) { + element.addClass(scope.popupClass); + } + + if (scope.animation()) { + element.addClass(attrs.tooltipAnimationClass); + } + } + }; +}) + +.directive('uibTooltipPopup', function() { + return { + replace: true, + scope: { content: '@', placement: '@', popupClass: '@', animation: '&', isOpen: '&' }, + templateUrl: 'template/tooltip/tooltip-popup.html', + link: function(scope, element) { + element.addClass('tooltip'); + } + }; +}) + +.directive('uibTooltip', [ '$uibTooltip', function($uibTooltip) { + return $uibTooltip('uibTooltip', 'tooltip', 'mouseenter'); +}]) + +.directive('uibTooltipTemplatePopup', function() { + return { + replace: true, + scope: { contentExp: '&', placement: '@', popupClass: '@', animation: '&', isOpen: '&', + originScope: '&' }, + templateUrl: 'template/tooltip/tooltip-template-popup.html', + link: function(scope, element) { + element.addClass('tooltip'); + } + }; +}) + +.directive('uibTooltipTemplate', ['$uibTooltip', function($uibTooltip) { + return $uibTooltip('uibTooltipTemplate', 'tooltip', 'mouseenter', { + useContentExp: true + }); +}]) + +.directive('uibTooltipHtmlPopup', function() { + return { + replace: true, + scope: { contentExp: '&', placement: '@', popupClass: '@', animation: '&', isOpen: '&' }, + templateUrl: 'template/tooltip/tooltip-html-popup.html', + link: function(scope, element) { + element.addClass('tooltip'); + } + }; +}) + +.directive('uibTooltipHtml', ['$uibTooltip', function($uibTooltip) { + return $uibTooltip('uibTooltipHtml', 'tooltip', 'mouseenter', { + useContentExp: true + }); +}]); + +/* Deprecated tooltip below */ + +angular.module('ui.bootstrap.tooltip') + +.value('$tooltipSuppressWarning', false) + +.provider('$tooltip', ['$uibTooltipProvider', function($uibTooltipProvider) { + angular.extend(this, $uibTooltipProvider); + + this.$get = ['$log', '$tooltipSuppressWarning', '$injector', function($log, $tooltipSuppressWarning, $injector) { + if (!$tooltipSuppressWarning) { + $log.warn('$tooltip is now deprecated. Use $uibTooltip instead.'); + } + + return $injector.invoke($uibTooltipProvider.$get); + }]; +}]) + +// This is mostly ngInclude code but with a custom scope +.directive('tooltipTemplateTransclude', [ + '$animate', '$sce', '$compile', '$templateRequest', '$log', '$tooltipSuppressWarning', +function ($animate , $sce , $compile , $templateRequest, $log, $tooltipSuppressWarning) { + return { + link: function(scope, elem, attrs) { + if (!$tooltipSuppressWarning) { + $log.warn('tooltip-template-transclude is now deprecated. Use uib-tooltip-template-transclude instead.'); + } + + var origScope = scope.$eval(attrs.tooltipTemplateTranscludeScope); + + var changeCounter = 0, + currentScope, + previousElement, + currentElement; + + var cleanupLastIncludeContent = function() { + if (previousElement) { + previousElement.remove(); + previousElement = null; + } + if (currentScope) { + currentScope.$destroy(); + currentScope = null; + } + if (currentElement) { + $animate.leave(currentElement).then(function() { + previousElement = null; + }); + previousElement = currentElement; + currentElement = null; + } + }; + + scope.$watch($sce.parseAsResourceUrl(attrs.tooltipTemplateTransclude), function(src) { + var thisChangeId = ++changeCounter; + + if (src) { + //set the 2nd param to true to ignore the template request error so that the inner + //contents and scope can be cleaned up. + $templateRequest(src, true).then(function(response) { + if (thisChangeId !== changeCounter) { return; } + var newScope = origScope.$new(); + var template = response; + + var clone = $compile(template)(newScope, function(clone) { + cleanupLastIncludeContent(); + $animate.enter(clone, elem); + }); + + currentScope = newScope; + currentElement = clone; + + currentScope.$emit('$includeContentLoaded', src); + }, function() { + if (thisChangeId === changeCounter) { + cleanupLastIncludeContent(); + scope.$emit('$includeContentError', src); + } + }); + scope.$emit('$includeContentRequested', src); + } else { + cleanupLastIncludeContent(); + } + }); + + scope.$on('$destroy', cleanupLastIncludeContent); + } + }; +}]) + +.directive('tooltipClasses', ['$log', '$tooltipSuppressWarning', function($log, $tooltipSuppressWarning) { + return { + restrict: 'A', + link: function(scope, element, attrs) { + if (!$tooltipSuppressWarning) { + $log.warn('tooltip-classes is now deprecated. Use uib-tooltip-classes instead.'); + } + + if (scope.placement) { + element.addClass(scope.placement); + } + if (scope.popupClass) { + element.addClass(scope.popupClass); + } + if (scope.animation()) { + element.addClass(attrs.tooltipAnimationClass); + } + } + }; +}]) + +.directive('tooltipPopup', ['$log', '$tooltipSuppressWarning', function($log, $tooltipSuppressWarning) { + return { + replace: true, + scope: { content: '@', placement: '@', popupClass: '@', animation: '&', isOpen: '&' }, + templateUrl: 'template/tooltip/tooltip-popup.html', + link: function(scope, element) { + if (!$tooltipSuppressWarning) { + $log.warn('tooltip-popup is now deprecated. Use uib-tooltip-popup instead.'); + } + + element.addClass('tooltip'); + } + }; +}]) + +.directive('tooltip', ['$tooltip', function($tooltip) { + return $tooltip('tooltip', 'tooltip', 'mouseenter'); +}]) + +.directive('tooltipTemplatePopup', ['$log', '$tooltipSuppressWarning', function($log, $tooltipSuppressWarning) { + return { + replace: true, + scope: { contentExp: '&', placement: '@', popupClass: '@', animation: '&', isOpen: '&', + originScope: '&' }, + templateUrl: 'template/tooltip/tooltip-template-popup.html', + link: function(scope, element) { + if (!$tooltipSuppressWarning) { + $log.warn('tooltip-template-popup is now deprecated. Use uib-tooltip-template-popup instead.'); + } + + element.addClass('tooltip'); + } + }; +}]) + +.directive('tooltipTemplate', ['$tooltip', function($tooltip) { + return $tooltip('tooltipTemplate', 'tooltip', 'mouseenter', { + useContentExp: true + }); +}]) + +.directive('tooltipHtmlPopup', ['$log', '$tooltipSuppressWarning', function($log, $tooltipSuppressWarning) { + return { + replace: true, + scope: { contentExp: '&', placement: '@', popupClass: '@', animation: '&', isOpen: '&' }, + templateUrl: 'template/tooltip/tooltip-html-popup.html', + link: function(scope, element) { + if (!$tooltipSuppressWarning) { + $log.warn('tooltip-html-popup is now deprecated. Use uib-tooltip-html-popup instead.'); + } + + element.addClass('tooltip'); + } + }; +}]) + +.directive('tooltipHtml', ['$tooltip', function($tooltip) { + return $tooltip('tooltipHtml', 'tooltip', 'mouseenter', { + useContentExp: true + }); +}]); + +/** + * The following features are still outstanding: popup delay, animation as a + * function, placement as a function, inside, support for more triggers than + * just mouse enter/leave, and selector delegatation. + */ +angular.module('ui.bootstrap.popover', ['ui.bootstrap.tooltip']) + +.directive('uibPopoverTemplatePopup', function() { + return { + replace: true, + scope: { title: '@', contentExp: '&', placement: '@', popupClass: '@', animation: '&', isOpen: '&', + originScope: '&' }, + templateUrl: 'template/popover/popover-template.html', + link: function(scope, element) { + element.addClass('popover'); + } + }; +}) + +.directive('uibPopoverTemplate', ['$uibTooltip', function($uibTooltip) { + return $uibTooltip('uibPopoverTemplate', 'popover', 'click', { + useContentExp: true + }); +}]) + +.directive('uibPopoverHtmlPopup', function() { + return { + replace: true, + scope: { contentExp: '&', title: '@', placement: '@', popupClass: '@', animation: '&', isOpen: '&' }, + templateUrl: 'template/popover/popover-html.html', + link: function(scope, element) { + element.addClass('popover'); + } + }; +}) + +.directive('uibPopoverHtml', ['$uibTooltip', function($uibTooltip) { + return $uibTooltip('uibPopoverHtml', 'popover', 'click', { + useContentExp: true + }); +}]) + +.directive('uibPopoverPopup', function() { + return { + replace: true, + scope: { title: '@', content: '@', placement: '@', popupClass: '@', animation: '&', isOpen: '&' }, + templateUrl: 'template/popover/popover.html', + link: function(scope, element) { + element.addClass('popover'); + } + }; +}) + +.directive('uibPopover', ['$uibTooltip', function($uibTooltip) { + return $uibTooltip('uibPopover', 'popover', 'click'); +}]); + +/* Deprecated popover below */ + +angular.module('ui.bootstrap.popover') + +.value('$popoverSuppressWarning', false) + +.directive('popoverTemplatePopup', ['$log', '$popoverSuppressWarning', function($log, $popoverSuppressWarning) { + return { + replace: true, + scope: { title: '@', contentExp: '&', placement: '@', popupClass: '@', animation: '&', isOpen: '&', + originScope: '&' }, + templateUrl: 'template/popover/popover-template.html', + link: function(scope, element) { + if (!$popoverSuppressWarning) { + $log.warn('popover-template-popup is now deprecated. Use uib-popover-template-popup instead.'); + } + + element.addClass('popover'); + } + }; +}]) + +.directive('popoverTemplate', ['$tooltip', function($tooltip) { + return $tooltip('popoverTemplate', 'popover', 'click', { + useContentExp: true + }); +}]) + +.directive('popoverHtmlPopup', ['$log', '$popoverSuppressWarning', function($log, $popoverSuppressWarning) { + return { + replace: true, + scope: { contentExp: '&', title: '@', placement: '@', popupClass: '@', animation: '&', isOpen: '&' }, + templateUrl: 'template/popover/popover-html.html', + link: function(scope, element) { + if (!$popoverSuppressWarning) { + $log.warn('popover-html-popup is now deprecated. Use uib-popover-html-popup instead.'); + } + + element.addClass('popover'); + } + }; +}]) + +.directive('popoverHtml', ['$tooltip', function($tooltip) { + return $tooltip('popoverHtml', 'popover', 'click', { + useContentExp: true + }); +}]) + +.directive('popoverPopup', ['$log', '$popoverSuppressWarning', function($log, $popoverSuppressWarning) { + return { + replace: true, + scope: { title: '@', content: '@', placement: '@', popupClass: '@', animation: '&', isOpen: '&' }, + templateUrl: 'template/popover/popover.html', + link: function(scope, element) { + if (!$popoverSuppressWarning) { + $log.warn('popover-popup is now deprecated. Use uib-popover-popup instead.'); + } + + element.addClass('popover'); + } + }; +}]) + +.directive('popover', ['$tooltip', function($tooltip) { + + return $tooltip('popover', 'popover', 'click'); +}]); + +angular.module('ui.bootstrap.progressbar', []) + +.constant('uibProgressConfig', { + animate: true, + max: 100 +}) + +.controller('UibProgressController', ['$scope', '$attrs', 'uibProgressConfig', function($scope, $attrs, progressConfig) { + var self = this, + animate = angular.isDefined($attrs.animate) ? $scope.$parent.$eval($attrs.animate) : progressConfig.animate; + + this.bars = []; + $scope.max = angular.isDefined($scope.max) ? $scope.max : progressConfig.max; + + this.addBar = function(bar, element, attrs) { + if (!animate) { + element.css({'transition': 'none'}); + } + + this.bars.push(bar); + + bar.max = $scope.max; + bar.title = attrs && angular.isDefined(attrs.title) ? attrs.title : 'progressbar'; + + bar.$watch('value', function(value) { + bar.recalculatePercentage(); + }); + + bar.recalculatePercentage = function() { + var totalPercentage = self.bars.reduce(function(total, bar) { + bar.percent = +(100 * bar.value / bar.max).toFixed(2); + return total + bar.percent; + }, 0); + + if (totalPercentage > 100) { + bar.percent -= totalPercentage - 100; + } + }; + + bar.$on('$destroy', function() { + element = null; + self.removeBar(bar); + }); + }; + + this.removeBar = function(bar) { + this.bars.splice(this.bars.indexOf(bar), 1); + this.bars.forEach(function (bar) { + bar.recalculatePercentage(); + }); + }; + + $scope.$watch('max', function(max) { + self.bars.forEach(function(bar) { + bar.max = $scope.max; + bar.recalculatePercentage(); + }); + }); +}]) + +.directive('uibProgress', function() { + return { + replace: true, + transclude: true, + controller: 'UibProgressController', + require: 'uibProgress', + scope: { + max: '=?' + }, + templateUrl: 'template/progressbar/progress.html' + }; +}) + +.directive('uibBar', function() { + return { + replace: true, + transclude: true, + require: '^uibProgress', + scope: { + value: '=', + type: '@' + }, + templateUrl: 'template/progressbar/bar.html', + link: function(scope, element, attrs, progressCtrl) { + progressCtrl.addBar(scope, element, attrs); + } + }; +}) + +.directive('uibProgressbar', function() { + return { + replace: true, + transclude: true, + controller: 'UibProgressController', + scope: { + value: '=', + max: '=?', + type: '@' + }, + templateUrl: 'template/progressbar/progressbar.html', + link: function(scope, element, attrs, progressCtrl) { + progressCtrl.addBar(scope, angular.element(element.children()[0]), {title: attrs.title}); + } + }; +}); + +/* Deprecated progressbar below */ + +angular.module('ui.bootstrap.progressbar') + +.value('$progressSuppressWarning', false) + +.controller('ProgressController', ['$scope', '$attrs', 'uibProgressConfig', '$log', '$progressSuppressWarning', function($scope, $attrs, progressConfig, $log, $progressSuppressWarning) { + if (!$progressSuppressWarning) { + $log.warn('ProgressController is now deprecated. Use UibProgressController instead.'); + } + + var self = this, + animate = angular.isDefined($attrs.animate) ? $scope.$parent.$eval($attrs.animate) : progressConfig.animate; + + this.bars = []; + $scope.max = angular.isDefined($scope.max) ? $scope.max : progressConfig.max; + + this.addBar = function(bar, element, attrs) { + if (!animate) { + element.css({'transition': 'none'}); + } + + this.bars.push(bar); + + bar.max = $scope.max; + bar.title = attrs && angular.isDefined(attrs.title) ? attrs.title : 'progressbar'; + + bar.$watch('value', function(value) { + bar.recalculatePercentage(); + }); + + bar.recalculatePercentage = function() { + bar.percent = +(100 * bar.value / bar.max).toFixed(2); + + var totalPercentage = self.bars.reduce(function(total, bar) { + return total + bar.percent; + }, 0); + + if (totalPercentage > 100) { + bar.percent -= totalPercentage - 100; + } + }; + + bar.$on('$destroy', function() { + element = null; + self.removeBar(bar); + }); + }; + + this.removeBar = function(bar) { + this.bars.splice(this.bars.indexOf(bar), 1); + }; + + $scope.$watch('max', function(max) { + self.bars.forEach(function(bar) { + bar.max = $scope.max; + bar.recalculatePercentage(); + }); + }); +}]) + +.directive('progress', ['$log', '$progressSuppressWarning', function($log, $progressSuppressWarning) { + return { + replace: true, + transclude: true, + controller: 'ProgressController', + require: 'progress', + scope: { + max: '=?', + title: '@?' + }, + templateUrl: 'template/progressbar/progress.html', + link: function() { + if (!$progressSuppressWarning) { + $log.warn('progress is now deprecated. Use uib-progress instead.'); + } + } + }; +}]) + +.directive('bar', ['$log', '$progressSuppressWarning', function($log, $progressSuppressWarning) { + return { + replace: true, + transclude: true, + require: '^progress', + scope: { + value: '=', + type: '@' + }, + templateUrl: 'template/progressbar/bar.html', + link: function(scope, element, attrs, progressCtrl) { + if (!$progressSuppressWarning) { + $log.warn('bar is now deprecated. Use uib-bar instead.'); + } + progressCtrl.addBar(scope, element); + } + }; +}]) + +.directive('progressbar', ['$log', '$progressSuppressWarning', function($log, $progressSuppressWarning) { + return { + replace: true, + transclude: true, + controller: 'ProgressController', + scope: { + value: '=', + max: '=?', + type: '@' + }, + templateUrl: 'template/progressbar/progressbar.html', + link: function(scope, element, attrs, progressCtrl) { + if (!$progressSuppressWarning) { + $log.warn('progressbar is now deprecated. Use uib-progressbar instead.'); + } + progressCtrl.addBar(scope, angular.element(element.children()[0]), {title: attrs.title}); + } + }; +}]); + +angular.module('ui.bootstrap.rating', []) + +.constant('uibRatingConfig', { + max: 5, + stateOn: null, + stateOff: null, + titles : ['one', 'two', 'three', 'four', 'five'] +}) + +.controller('UibRatingController', ['$scope', '$attrs', 'uibRatingConfig', function($scope, $attrs, ratingConfig) { + var ngModelCtrl = { $setViewValue: angular.noop }; + + this.init = function(ngModelCtrl_) { + ngModelCtrl = ngModelCtrl_; + ngModelCtrl.$render = this.render; + + ngModelCtrl.$formatters.push(function(value) { + if (angular.isNumber(value) && value << 0 !== value) { + value = Math.round(value); + } + return value; + }); + + this.stateOn = angular.isDefined($attrs.stateOn) ? $scope.$parent.$eval($attrs.stateOn) : ratingConfig.stateOn; + this.stateOff = angular.isDefined($attrs.stateOff) ? $scope.$parent.$eval($attrs.stateOff) : ratingConfig.stateOff; + var tmpTitles = angular.isDefined($attrs.titles) ? $scope.$parent.$eval($attrs.titles) : ratingConfig.titles ; + this.titles = angular.isArray(tmpTitles) && tmpTitles.length > 0 ? + tmpTitles : ratingConfig.titles; + + var ratingStates = angular.isDefined($attrs.ratingStates) ? + $scope.$parent.$eval($attrs.ratingStates) : + new Array(angular.isDefined($attrs.max) ? $scope.$parent.$eval($attrs.max) : ratingConfig.max); + $scope.range = this.buildTemplateObjects(ratingStates); + }; + + this.buildTemplateObjects = function(states) { + for (var i = 0, n = states.length; i < n; i++) { + states[i] = angular.extend({ index: i }, { stateOn: this.stateOn, stateOff: this.stateOff, title: this.getTitle(i) }, states[i]); + } + return states; + }; + + this.getTitle = function(index) { + if (index >= this.titles.length) { + return index + 1; + } else { + return this.titles[index]; + } + }; + + $scope.rate = function(value) { + if (!$scope.readonly && value >= 0 && value <= $scope.range.length) { + ngModelCtrl.$setViewValue(ngModelCtrl.$viewValue === value ? 0 : value); + ngModelCtrl.$render(); + } + }; + + $scope.enter = function(value) { + if (!$scope.readonly) { + $scope.value = value; + } + $scope.onHover({value: value}); + }; + + $scope.reset = function() { + $scope.value = ngModelCtrl.$viewValue; + $scope.onLeave(); + }; + + $scope.onKeydown = function(evt) { + if (/(37|38|39|40)/.test(evt.which)) { + evt.preventDefault(); + evt.stopPropagation(); + $scope.rate($scope.value + (evt.which === 38 || evt.which === 39 ? 1 : -1)); + } + }; + + this.render = function() { + $scope.value = ngModelCtrl.$viewValue; + }; +}]) + +.directive('uibRating', function() { + return { + require: ['uibRating', 'ngModel'], + scope: { + readonly: '=?', + onHover: '&', + onLeave: '&' + }, + controller: 'UibRatingController', + templateUrl: 'template/rating/rating.html', + replace: true, + link: function(scope, element, attrs, ctrls) { + var ratingCtrl = ctrls[0], ngModelCtrl = ctrls[1]; + ratingCtrl.init(ngModelCtrl); + } + }; +}); + +/* Deprecated rating below */ + +angular.module('ui.bootstrap.rating') + +.value('$ratingSuppressWarning', false) + +.controller('RatingController', ['$scope', '$attrs', '$controller', '$log', '$ratingSuppressWarning', function($scope, $attrs, $controller, $log, $ratingSuppressWarning) { + if (!$ratingSuppressWarning) { + $log.warn('RatingController is now deprecated. Use UibRatingController instead.'); + } + + angular.extend(this, $controller('UibRatingController', { + $scope: $scope, + $attrs: $attrs + })); +}]) + +.directive('rating', ['$log', '$ratingSuppressWarning', function($log, $ratingSuppressWarning) { + return { + require: ['rating', 'ngModel'], + scope: { + readonly: '=?', + onHover: '&', + onLeave: '&' + }, + controller: 'RatingController', + templateUrl: 'template/rating/rating.html', + replace: true, + link: function(scope, element, attrs, ctrls) { + if (!$ratingSuppressWarning) { + $log.warn('rating is now deprecated. Use uib-rating instead.'); + } + var ratingCtrl = ctrls[0], ngModelCtrl = ctrls[1]; + ratingCtrl.init(ngModelCtrl); + } + }; +}]); + + +/** + * @ngdoc overview + * @name ui.bootstrap.tabs + * + * @description + * AngularJS version of the tabs directive. + */ + +angular.module('ui.bootstrap.tabs', []) + +.controller('UibTabsetController', ['$scope', function ($scope) { + var ctrl = this, + tabs = ctrl.tabs = $scope.tabs = []; + + ctrl.select = function(selectedTab) { + angular.forEach(tabs, function(tab) { + if (tab.active && tab !== selectedTab) { + tab.active = false; + tab.onDeselect(); + selectedTab.selectCalled = false; + } + }); + selectedTab.active = true; + // only call select if it has not already been called + if (!selectedTab.selectCalled) { + selectedTab.onSelect(); + selectedTab.selectCalled = true; + } + }; + + ctrl.addTab = function addTab(tab) { + tabs.push(tab); + // we can't run the select function on the first tab + // since that would select it twice + if (tabs.length === 1 && tab.active !== false) { + tab.active = true; + } else if (tab.active) { + ctrl.select(tab); + } else { + tab.active = false; + } + }; + + ctrl.removeTab = function removeTab(tab) { + var index = tabs.indexOf(tab); + //Select a new tab if the tab to be removed is selected and not destroyed + if (tab.active && tabs.length > 1 && !destroyed) { + //If this is the last tab, select the previous tab. else, the next tab. + var newActiveIndex = index == tabs.length - 1 ? index - 1 : index + 1; + ctrl.select(tabs[newActiveIndex]); + } + tabs.splice(index, 1); + }; + + var destroyed; + $scope.$on('$destroy', function() { + destroyed = true; + }); +}]) + +/** + * @ngdoc directive + * @name ui.bootstrap.tabs.directive:tabset + * @restrict EA + * + * @description + * Tabset is the outer container for the tabs directive + * + * @param {boolean=} vertical Whether or not to use vertical styling for the tabs. + * @param {boolean=} justified Whether or not to use justified styling for the tabs. + * + * @example + + + + First Content! + Second Content! + +
+ + First Vertical Content! + Second Vertical Content! + + + First Justified Content! + Second Justified Content! + +
+
+ */ +.directive('uibTabset', function() { + return { + restrict: 'EA', + transclude: true, + replace: true, + scope: { + type: '@' + }, + controller: 'UibTabsetController', + templateUrl: 'template/tabs/tabset.html', + link: function(scope, element, attrs) { + scope.vertical = angular.isDefined(attrs.vertical) ? scope.$parent.$eval(attrs.vertical) : false; + scope.justified = angular.isDefined(attrs.justified) ? scope.$parent.$eval(attrs.justified) : false; + } + }; +}) + +/** + * @ngdoc directive + * @name ui.bootstrap.tabs.directive:tab + * @restrict EA + * + * @param {string=} heading The visible heading, or title, of the tab. Set HTML headings with {@link ui.bootstrap.tabs.directive:tabHeading tabHeading}. + * @param {string=} select An expression to evaluate when the tab is selected. + * @param {boolean=} active A binding, telling whether or not this tab is selected. + * @param {boolean=} disabled A binding, telling whether or not this tab is disabled. + * + * @description + * Creates a tab with a heading and content. Must be placed within a {@link ui.bootstrap.tabs.directive:tabset tabset}. + * + * @example + + +
+ + +
+ + First Tab + + Alert me! + Second Tab, with alert callback and html heading! + + + {{item.content}} + + +
+
+ + function TabsDemoCtrl($scope) { + $scope.items = [ + { title:"Dynamic Title 1", content:"Dynamic Item 0" }, + { title:"Dynamic Title 2", content:"Dynamic Item 1", disabled: true } + ]; + + $scope.alertMe = function() { + setTimeout(function() { + alert("You've selected the alert tab!"); + }); + }; + }; + +
+ */ + +/** + * @ngdoc directive + * @name ui.bootstrap.tabs.directive:tabHeading + * @restrict EA + * + * @description + * Creates an HTML heading for a {@link ui.bootstrap.tabs.directive:tab tab}. Must be placed as a child of a tab element. + * + * @example + + + + + HTML in my titles?! + And some content, too! + + + Icon heading?!? + That's right. + + + + + */ +.directive('uibTab', ['$parse', function($parse) { + return { + require: '^uibTabset', + restrict: 'EA', + replace: true, + templateUrl: 'template/tabs/tab.html', + transclude: true, + scope: { + active: '=?', + heading: '@', + onSelect: '&select', //This callback is called in contentHeadingTransclude + //once it inserts the tab's content into the dom + onDeselect: '&deselect' + }, + controller: function() { + //Empty controller so other directives can require being 'under' a tab + }, + link: function(scope, elm, attrs, tabsetCtrl, transclude) { + scope.$watch('active', function(active) { + if (active) { + tabsetCtrl.select(scope); + } + }); + + scope.disabled = false; + if (attrs.disable) { + scope.$parent.$watch($parse(attrs.disable), function(value) { + scope.disabled = !! value; + }); + } + + scope.select = function() { + if (!scope.disabled) { + scope.active = true; + } + }; + + tabsetCtrl.addTab(scope); + scope.$on('$destroy', function() { + tabsetCtrl.removeTab(scope); + }); + + //We need to transclude later, once the content container is ready. + //when this link happens, we're inside a tab heading. + scope.$transcludeFn = transclude; + } + }; +}]) + +.directive('uibTabHeadingTransclude', function() { + return { + restrict: 'A', + require: ['?^uibTab', '?^tab'], // TODO: change to '^uibTab' after deprecation removal + link: function(scope, elm) { + scope.$watch('headingElement', function updateHeadingElement(heading) { + if (heading) { + elm.html(''); + elm.append(heading); + } + }); + } + }; +}) + +.directive('uibTabContentTransclude', function() { + return { + restrict: 'A', + require: ['?^uibTabset', '?^tabset'], // TODO: change to '^uibTabset' after deprecation removal + link: function(scope, elm, attrs) { + var tab = scope.$eval(attrs.uibTabContentTransclude); + + //Now our tab is ready to be transcluded: both the tab heading area + //and the tab content area are loaded. Transclude 'em both. + tab.$transcludeFn(tab.$parent, function(contents) { + angular.forEach(contents, function(node) { + if (isTabHeading(node)) { + //Let tabHeadingTransclude know. + tab.headingElement = node; + } else { + elm.append(node); + } + }); + }); + } + }; + + function isTabHeading(node) { + return node.tagName && ( + node.hasAttribute('tab-heading') || // TODO: remove after deprecation removal + node.hasAttribute('data-tab-heading') || // TODO: remove after deprecation removal + node.hasAttribute('x-tab-heading') || // TODO: remove after deprecation removal + node.hasAttribute('uib-tab-heading') || + node.hasAttribute('data-uib-tab-heading') || + node.hasAttribute('x-uib-tab-heading') || + node.tagName.toLowerCase() === 'tab-heading' || // TODO: remove after deprecation removal + node.tagName.toLowerCase() === 'data-tab-heading' || // TODO: remove after deprecation removal + node.tagName.toLowerCase() === 'x-tab-heading' || // TODO: remove after deprecation removal + node.tagName.toLowerCase() === 'uib-tab-heading' || + node.tagName.toLowerCase() === 'data-uib-tab-heading' || + node.tagName.toLowerCase() === 'x-uib-tab-heading' + ); + } +}); + +/* deprecated tabs below */ + +angular.module('ui.bootstrap.tabs') + + .value('$tabsSuppressWarning', false) + + .controller('TabsetController', ['$scope', '$controller', '$log', '$tabsSuppressWarning', function($scope, $controller, $log, $tabsSuppressWarning) { + if (!$tabsSuppressWarning) { + $log.warn('TabsetController is now deprecated. Use UibTabsetController instead.'); + } + + angular.extend(this, $controller('UibTabsetController', { + $scope: $scope + })); + }]) + + .directive('tabset', ['$log', '$tabsSuppressWarning', function($log, $tabsSuppressWarning) { + return { + restrict: 'EA', + transclude: true, + replace: true, + scope: { + type: '@' + }, + controller: 'TabsetController', + templateUrl: 'template/tabs/tabset.html', + link: function(scope, element, attrs) { + + if (!$tabsSuppressWarning) { + $log.warn('tabset is now deprecated. Use uib-tabset instead.'); + } + scope.vertical = angular.isDefined(attrs.vertical) ? scope.$parent.$eval(attrs.vertical) : false; + scope.justified = angular.isDefined(attrs.justified) ? scope.$parent.$eval(attrs.justified) : false; + } + }; + }]) + + .directive('tab', ['$parse', '$log', '$tabsSuppressWarning', function($parse, $log, $tabsSuppressWarning) { + return { + require: '^tabset', + restrict: 'EA', + replace: true, + templateUrl: 'template/tabs/tab.html', + transclude: true, + scope: { + active: '=?', + heading: '@', + onSelect: '&select', //This callback is called in contentHeadingTransclude + //once it inserts the tab's content into the dom + onDeselect: '&deselect' + }, + controller: function() { + //Empty controller so other directives can require being 'under' a tab + }, + link: function(scope, elm, attrs, tabsetCtrl, transclude) { + if (!$tabsSuppressWarning) { + $log.warn('tab is now deprecated. Use uib-tab instead.'); + } + + scope.$watch('active', function(active) { + if (active) { + tabsetCtrl.select(scope); + } + }); + + scope.disabled = false; + if (attrs.disable) { + scope.$parent.$watch($parse(attrs.disable), function(value) { + scope.disabled = !!value; + }); + } + + scope.select = function() { + if (!scope.disabled) { + scope.active = true; + } + }; + + tabsetCtrl.addTab(scope); + scope.$on('$destroy', function() { + tabsetCtrl.removeTab(scope); + }); + + //We need to transclude later, once the content container is ready. + //when this link happens, we're inside a tab heading. + scope.$transcludeFn = transclude; + } + }; + }]) + + .directive('tabHeadingTransclude', ['$log', '$tabsSuppressWarning', function($log, $tabsSuppressWarning) { + return { + restrict: 'A', + require: '^tab', + link: function(scope, elm) { + if (!$tabsSuppressWarning) { + $log.warn('tab-heading-transclude is now deprecated. Use uib-tab-heading-transclude instead.'); + } + + scope.$watch('headingElement', function updateHeadingElement(heading) { + if (heading) { + elm.html(''); + elm.append(heading); + } + }); + } + }; + }]) + + .directive('tabContentTransclude', ['$log', '$tabsSuppressWarning', function($log, $tabsSuppressWarning) { + return { + restrict: 'A', + require: '^tabset', + link: function(scope, elm, attrs) { + if (!$tabsSuppressWarning) { + $log.warn('tab-content-transclude is now deprecated. Use uib-tab-content-transclude instead.'); + } + + var tab = scope.$eval(attrs.tabContentTransclude); + + //Now our tab is ready to be transcluded: both the tab heading area + //and the tab content area are loaded. Transclude 'em both. + tab.$transcludeFn(tab.$parent, function(contents) { + angular.forEach(contents, function(node) { + if (isTabHeading(node)) { + //Let tabHeadingTransclude know. + tab.headingElement = node; + } + else { + elm.append(node); + } + }); + }); + } + }; + + function isTabHeading(node) { + return node.tagName && ( + node.hasAttribute('tab-heading') || + node.hasAttribute('data-tab-heading') || + node.hasAttribute('x-tab-heading') || + node.tagName.toLowerCase() === 'tab-heading' || + node.tagName.toLowerCase() === 'data-tab-heading' || + node.tagName.toLowerCase() === 'x-tab-heading' + ); + } + }]); + +angular.module('ui.bootstrap.timepicker', []) + +.constant('uibTimepickerConfig', { + hourStep: 1, + minuteStep: 1, + showMeridian: true, + meridians: null, + readonlyInput: false, + mousewheel: true, + arrowkeys: true, + showSpinners: true +}) + +.controller('UibTimepickerController', ['$scope', '$element', '$attrs', '$parse', '$log', '$locale', 'uibTimepickerConfig', function($scope, $element, $attrs, $parse, $log, $locale, timepickerConfig) { + var selected = new Date(), + ngModelCtrl = { $setViewValue: angular.noop }, // nullModelCtrl + meridians = angular.isDefined($attrs.meridians) ? $scope.$parent.$eval($attrs.meridians) : timepickerConfig.meridians || $locale.DATETIME_FORMATS.AMPMS; + + $scope.tabindex = angular.isDefined($attrs.tabindex) ? $attrs.tabindex : 0; + $element.removeAttr('tabindex'); + + this.init = function(ngModelCtrl_, inputs) { + ngModelCtrl = ngModelCtrl_; + ngModelCtrl.$render = this.render; + + ngModelCtrl.$formatters.unshift(function(modelValue) { + return modelValue ? new Date(modelValue) : null; + }); + + var hoursInputEl = inputs.eq(0), + minutesInputEl = inputs.eq(1); + + var mousewheel = angular.isDefined($attrs.mousewheel) ? $scope.$parent.$eval($attrs.mousewheel) : timepickerConfig.mousewheel; + if (mousewheel) { + this.setupMousewheelEvents(hoursInputEl, minutesInputEl); + } + + var arrowkeys = angular.isDefined($attrs.arrowkeys) ? $scope.$parent.$eval($attrs.arrowkeys) : timepickerConfig.arrowkeys; + if (arrowkeys) { + this.setupArrowkeyEvents(hoursInputEl, minutesInputEl); + } + + $scope.readonlyInput = angular.isDefined($attrs.readonlyInput) ? $scope.$parent.$eval($attrs.readonlyInput) : timepickerConfig.readonlyInput; + this.setupInputEvents(hoursInputEl, minutesInputEl); + }; + + var hourStep = timepickerConfig.hourStep; + if ($attrs.hourStep) { + $scope.$parent.$watch($parse($attrs.hourStep), function(value) { + hourStep = parseInt(value, 10); + }); + } + + var minuteStep = timepickerConfig.minuteStep; + if ($attrs.minuteStep) { + $scope.$parent.$watch($parse($attrs.minuteStep), function(value) { + minuteStep = parseInt(value, 10); + }); + } + + var min; + $scope.$parent.$watch($parse($attrs.min), function(value) { + var dt = new Date(value); + min = isNaN(dt) ? undefined : dt; + }); + + var max; + $scope.$parent.$watch($parse($attrs.max), function(value) { + var dt = new Date(value); + max = isNaN(dt) ? undefined : dt; + }); + + $scope.noIncrementHours = function() { + var incrementedSelected = addMinutes(selected, hourStep * 60); + return incrementedSelected > max || + (incrementedSelected < selected && incrementedSelected < min); + }; + + $scope.noDecrementHours = function() { + var decrementedSelected = addMinutes(selected, -hourStep * 60); + return decrementedSelected < min || + (decrementedSelected > selected && decrementedSelected > max); + }; + + $scope.noIncrementMinutes = function() { + var incrementedSelected = addMinutes(selected, minuteStep); + return incrementedSelected > max || + (incrementedSelected < selected && incrementedSelected < min); + }; + + $scope.noDecrementMinutes = function() { + var decrementedSelected = addMinutes(selected, -minuteStep); + return decrementedSelected < min || + (decrementedSelected > selected && decrementedSelected > max); + }; + + $scope.noToggleMeridian = function() { + if (selected.getHours() < 13) { + return addMinutes(selected, 12 * 60) > max; + } else { + return addMinutes(selected, -12 * 60) < min; + } + }; + + // 12H / 24H mode + $scope.showMeridian = timepickerConfig.showMeridian; + if ($attrs.showMeridian) { + $scope.$parent.$watch($parse($attrs.showMeridian), function(value) { + $scope.showMeridian = !!value; + + if (ngModelCtrl.$error.time) { + // Evaluate from template + var hours = getHoursFromTemplate(), minutes = getMinutesFromTemplate(); + if (angular.isDefined(hours) && angular.isDefined(minutes)) { + selected.setHours(hours); + refresh(); + } + } else { + updateTemplate(); + } + }); + } + + // Get $scope.hours in 24H mode if valid + function getHoursFromTemplate() { + var hours = parseInt($scope.hours, 10); + var valid = $scope.showMeridian ? (hours > 0 && hours < 13) : (hours >= 0 && hours < 24); + if (!valid) { + return undefined; + } + + if ($scope.showMeridian) { + if (hours === 12) { + hours = 0; + } + if ($scope.meridian === meridians[1]) { + hours = hours + 12; + } + } + return hours; + } + + function getMinutesFromTemplate() { + var minutes = parseInt($scope.minutes, 10); + return (minutes >= 0 && minutes < 60) ? minutes : undefined; + } + + function pad(value) { + return (angular.isDefined(value) && value.toString().length < 2) ? '0' + value : value.toString(); + } + + // Respond on mousewheel spin + this.setupMousewheelEvents = function(hoursInputEl, minutesInputEl) { + var isScrollingUp = function(e) { + if (e.originalEvent) { + e = e.originalEvent; + } + //pick correct delta variable depending on event + var delta = (e.wheelDelta) ? e.wheelDelta : -e.deltaY; + return (e.detail || delta > 0); + }; + + hoursInputEl.bind('mousewheel wheel', function(e) { + $scope.$apply(isScrollingUp(e) ? $scope.incrementHours() : $scope.decrementHours()); + e.preventDefault(); + }); + + minutesInputEl.bind('mousewheel wheel', function(e) { + $scope.$apply(isScrollingUp(e) ? $scope.incrementMinutes() : $scope.decrementMinutes()); + e.preventDefault(); + }); + + }; + + // Respond on up/down arrowkeys + this.setupArrowkeyEvents = function(hoursInputEl, minutesInputEl) { + hoursInputEl.bind('keydown', function(e) { + if (e.which === 38) { // up + e.preventDefault(); + $scope.incrementHours(); + $scope.$apply(); + } else if (e.which === 40) { // down + e.preventDefault(); + $scope.decrementHours(); + $scope.$apply(); + } + }); + + minutesInputEl.bind('keydown', function(e) { + if (e.which === 38) { // up + e.preventDefault(); + $scope.incrementMinutes(); + $scope.$apply(); + } else if (e.which === 40) { // down + e.preventDefault(); + $scope.decrementMinutes(); + $scope.$apply(); + } + }); + }; + + this.setupInputEvents = function(hoursInputEl, minutesInputEl) { + if ($scope.readonlyInput) { + $scope.updateHours = angular.noop; + $scope.updateMinutes = angular.noop; + return; + } + + var invalidate = function(invalidHours, invalidMinutes) { + ngModelCtrl.$setViewValue(null); + ngModelCtrl.$setValidity('time', false); + if (angular.isDefined(invalidHours)) { + $scope.invalidHours = invalidHours; + } + if (angular.isDefined(invalidMinutes)) { + $scope.invalidMinutes = invalidMinutes; + } + }; + + $scope.updateHours = function() { + var hours = getHoursFromTemplate(), + minutes = getMinutesFromTemplate(); + + if (angular.isDefined(hours) && angular.isDefined(minutes)) { + selected.setHours(hours); + if (selected < min || selected > max) { + invalidate(true); + } else { + refresh('h'); + } + } else { + invalidate(true); + } + }; + + hoursInputEl.bind('blur', function(e) { + if (!$scope.invalidHours && $scope.hours < 10) { + $scope.$apply(function() { + $scope.hours = pad($scope.hours); + }); + } + }); + + $scope.updateMinutes = function() { + var minutes = getMinutesFromTemplate(), + hours = getHoursFromTemplate(); + + if (angular.isDefined(minutes) && angular.isDefined(hours)) { + selected.setMinutes(minutes); + if (selected < min || selected > max) { + invalidate(undefined, true); + } else { + refresh('m'); + } + } else { + invalidate(undefined, true); + } + }; + + minutesInputEl.bind('blur', function(e) { + if (!$scope.invalidMinutes && $scope.minutes < 10) { + $scope.$apply(function() { + $scope.minutes = pad($scope.minutes); + }); + } + }); + + }; + + this.render = function() { + var date = ngModelCtrl.$viewValue; + + if (isNaN(date)) { + ngModelCtrl.$setValidity('time', false); + $log.error('Timepicker directive: "ng-model" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.'); + } else { + if (date) { + selected = date; + } + + if (selected < min || selected > max) { + ngModelCtrl.$setValidity('time', false); + $scope.invalidHours = true; + $scope.invalidMinutes = true; + } else { + makeValid(); + } + updateTemplate(); + } + }; + + // Call internally when we know that model is valid. + function refresh(keyboardChange) { + makeValid(); + ngModelCtrl.$setViewValue(new Date(selected)); + updateTemplate(keyboardChange); + } + + function makeValid() { + ngModelCtrl.$setValidity('time', true); + $scope.invalidHours = false; + $scope.invalidMinutes = false; + } + + function updateTemplate(keyboardChange) { + var hours = selected.getHours(), minutes = selected.getMinutes(); + + if ($scope.showMeridian) { + hours = (hours === 0 || hours === 12) ? 12 : hours % 12; // Convert 24 to 12 hour system + } + + $scope.hours = keyboardChange === 'h' ? hours : pad(hours); + if (keyboardChange !== 'm') { + $scope.minutes = pad(minutes); + } + $scope.meridian = selected.getHours() < 12 ? meridians[0] : meridians[1]; + } + + function addMinutes(date, minutes) { + var dt = new Date(date.getTime() + minutes * 60000); + var newDate = new Date(date); + newDate.setHours(dt.getHours(), dt.getMinutes()); + return newDate; + } + + function addMinutesToSelected(minutes) { + selected = addMinutes(selected, minutes); + refresh(); + } + + $scope.showSpinners = angular.isDefined($attrs.showSpinners) ? + $scope.$parent.$eval($attrs.showSpinners) : timepickerConfig.showSpinners; + + $scope.incrementHours = function() { + if (!$scope.noIncrementHours()) { + addMinutesToSelected(hourStep * 60); + } + }; + + $scope.decrementHours = function() { + if (!$scope.noDecrementHours()) { + addMinutesToSelected(-hourStep * 60); + } + }; + + $scope.incrementMinutes = function() { + if (!$scope.noIncrementMinutes()) { + addMinutesToSelected(minuteStep); + } + }; + + $scope.decrementMinutes = function() { + if (!$scope.noDecrementMinutes()) { + addMinutesToSelected(-minuteStep); + } + }; + + $scope.toggleMeridian = function() { + if (!$scope.noToggleMeridian()) { + addMinutesToSelected(12 * 60 * (selected.getHours() < 12 ? 1 : -1)); + } + }; +}]) + +.directive('uibTimepicker', function() { + return { + restrict: 'EA', + require: ['uibTimepicker', '?^ngModel'], + controller: 'UibTimepickerController', + controllerAs: 'timepicker', + replace: true, + scope: {}, + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/timepicker/timepicker.html'; + }, + link: function(scope, element, attrs, ctrls) { + var timepickerCtrl = ctrls[0], ngModelCtrl = ctrls[1]; + + if (ngModelCtrl) { + timepickerCtrl.init(ngModelCtrl, element.find('input')); + } + } + }; +}); + +/* Deprecated timepicker below */ + +angular.module('ui.bootstrap.timepicker') + +.value('$timepickerSuppressWarning', false) + +.controller('TimepickerController', ['$scope', '$element', '$attrs', '$controller', '$log', '$timepickerSuppressWarning', function($scope, $element, $attrs, $controller, $log, $timepickerSuppressWarning) { + if (!$timepickerSuppressWarning) { + $log.warn('TimepickerController is now deprecated. Use UibTimepickerController instead.'); + } + + angular.extend(this, $controller('UibTimepickerController', { + $scope: $scope, + $element: $element, + $attrs: $attrs + })); +}]) + +.directive('timepicker', ['$log', '$timepickerSuppressWarning', function($log, $timepickerSuppressWarning) { + return { + restrict: 'EA', + require: ['timepicker', '?^ngModel'], + controller: 'TimepickerController', + controllerAs: 'timepicker', + replace: true, + scope: {}, + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/timepicker/timepicker.html'; + }, + link: function(scope, element, attrs, ctrls) { + if (!$timepickerSuppressWarning) { + $log.warn('timepicker is now deprecated. Use uib-timepicker instead.'); + } + var timepickerCtrl = ctrls[0], ngModelCtrl = ctrls[1]; + + if (ngModelCtrl) { + timepickerCtrl.init(ngModelCtrl, element.find('input')); + } + } + }; +}]); + +angular.module('ui.bootstrap.typeahead', ['ui.bootstrap.position']) + +/** + * A helper service that can parse typeahead's syntax (string provided by users) + * Extracted to a separate service for ease of unit testing + */ + .factory('uibTypeaheadParser', ['$parse', function($parse) { + // 00000111000000000000022200000000000000003333333333333330000000000044000 + var TYPEAHEAD_REGEXP = /^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w\d]*))\s+in\s+([\s\S]+?)$/; + return { + parse: function(input) { + var match = input.match(TYPEAHEAD_REGEXP); + if (!match) { + throw new Error( + 'Expected typeahead specification in form of "_modelValue_ (as _label_)? for _item_ in _collection_"' + + ' but got "' + input + '".'); + } + + return { + itemName: match[3], + source: $parse(match[4]), + viewMapper: $parse(match[2] || match[1]), + modelMapper: $parse(match[1]) + }; + } + }; + }]) + + .controller('UibTypeaheadController', ['$scope', '$element', '$attrs', '$compile', '$parse', '$q', '$timeout', '$document', '$window', '$rootScope', '$uibPosition', 'uibTypeaheadParser', + function(originalScope, element, attrs, $compile, $parse, $q, $timeout, $document, $window, $rootScope, $position, typeaheadParser) { + var HOT_KEYS = [9, 13, 27, 38, 40]; + var eventDebounceTime = 200; + var modelCtrl, ngModelOptions; + //SUPPORTED ATTRIBUTES (OPTIONS) + + //minimal no of characters that needs to be entered before typeahead kicks-in + var minLength = originalScope.$eval(attrs.typeaheadMinLength); + if (!minLength && minLength !== 0) { + minLength = 1; + } + + //minimal wait time after last character typed before typeahead kicks-in + var waitTime = originalScope.$eval(attrs.typeaheadWaitMs) || 0; + + //should it restrict model values to the ones selected from the popup only? + var isEditable = originalScope.$eval(attrs.typeaheadEditable) !== false; + + //binding to a variable that indicates if matches are being retrieved asynchronously + var isLoadingSetter = $parse(attrs.typeaheadLoading).assign || angular.noop; + + //a callback executed when a match is selected + var onSelectCallback = $parse(attrs.typeaheadOnSelect); + + //should it select highlighted popup value when losing focus? + var isSelectOnBlur = angular.isDefined(attrs.typeaheadSelectOnBlur) ? originalScope.$eval(attrs.typeaheadSelectOnBlur) : false; + + //binding to a variable that indicates if there were no results after the query is completed + var isNoResultsSetter = $parse(attrs.typeaheadNoResults).assign || angular.noop; + + var inputFormatter = attrs.typeaheadInputFormatter ? $parse(attrs.typeaheadInputFormatter) : undefined; + + var appendToBody = attrs.typeaheadAppendToBody ? originalScope.$eval(attrs.typeaheadAppendToBody) : false; + + var appendToElementId = attrs.typeaheadAppendToElementId || false; + + var focusFirst = originalScope.$eval(attrs.typeaheadFocusFirst) !== false; + + //If input matches an item of the list exactly, select it automatically + var selectOnExact = attrs.typeaheadSelectOnExact ? originalScope.$eval(attrs.typeaheadSelectOnExact) : false; + + //INTERNAL VARIABLES + + //model setter executed upon match selection + var parsedModel = $parse(attrs.ngModel); + var invokeModelSetter = $parse(attrs.ngModel + '($$$p)'); + var $setModelValue = function(scope, newValue) { + if (angular.isFunction(parsedModel(originalScope)) && + ngModelOptions && ngModelOptions.$options && ngModelOptions.$options.getterSetter) { + return invokeModelSetter(scope, {$$$p: newValue}); + } else { + return parsedModel.assign(scope, newValue); + } + }; + + //expressions used by typeahead + var parserResult = typeaheadParser.parse(attrs.uibTypeahead); + + var hasFocus; + + //Used to avoid bug in iOS webview where iOS keyboard does not fire + //mousedown & mouseup events + //Issue #3699 + var selected; + + //create a child scope for the typeahead directive so we are not polluting original scope + //with typeahead-specific data (matches, query etc.) + var scope = originalScope.$new(); + var offDestroy = originalScope.$on('$destroy', function() { + scope.$destroy(); + }); + scope.$on('$destroy', offDestroy); + + // WAI-ARIA + var popupId = 'typeahead-' + scope.$id + '-' + Math.floor(Math.random() * 10000); + element.attr({ + 'aria-autocomplete': 'list', + 'aria-expanded': false, + 'aria-owns': popupId + }); + + //pop-up element used to display matches + var popUpEl = angular.element('
'); + popUpEl.attr({ + id: popupId, + matches: 'matches', + active: 'activeIdx', + select: 'select(activeIdx)', + 'move-in-progress': 'moveInProgress', + query: 'query', + position: 'position' + }); + //custom item template + if (angular.isDefined(attrs.typeaheadTemplateUrl)) { + popUpEl.attr('template-url', attrs.typeaheadTemplateUrl); + } + + if (angular.isDefined(attrs.typeaheadPopupTemplateUrl)) { + popUpEl.attr('popup-template-url', attrs.typeaheadPopupTemplateUrl); + } + + var resetMatches = function() { + scope.matches = []; + scope.activeIdx = -1; + element.attr('aria-expanded', false); + }; + + var getMatchId = function(index) { + return popupId + '-option-' + index; + }; + + // Indicate that the specified match is the active (pre-selected) item in the list owned by this typeahead. + // This attribute is added or removed automatically when the `activeIdx` changes. + scope.$watch('activeIdx', function(index) { + if (index < 0) { + element.removeAttr('aria-activedescendant'); + } else { + element.attr('aria-activedescendant', getMatchId(index)); + } + }); + + var inputIsExactMatch = function(inputValue, index) { + if (scope.matches.length > index && inputValue) { + return inputValue.toUpperCase() === scope.matches[index].label.toUpperCase(); + } + + return false; + }; + + var getMatchesAsync = function(inputValue) { + var locals = {$viewValue: inputValue}; + isLoadingSetter(originalScope, true); + isNoResultsSetter(originalScope, false); + $q.when(parserResult.source(originalScope, locals)).then(function(matches) { + //it might happen that several async queries were in progress if a user were typing fast + //but we are interested only in responses that correspond to the current view value + var onCurrentRequest = (inputValue === modelCtrl.$viewValue); + if (onCurrentRequest && hasFocus) { + if (matches && matches.length > 0) { + scope.activeIdx = focusFirst ? 0 : -1; + isNoResultsSetter(originalScope, false); + scope.matches.length = 0; + + //transform labels + for (var i = 0; i < matches.length; i++) { + locals[parserResult.itemName] = matches[i]; + scope.matches.push({ + id: getMatchId(i), + label: parserResult.viewMapper(scope, locals), + model: matches[i] + }); + } + + scope.query = inputValue; + //position pop-up with matches - we need to re-calculate its position each time we are opening a window + //with matches as a pop-up might be absolute-positioned and position of an input might have changed on a page + //due to other elements being rendered + recalculatePosition(); + + element.attr('aria-expanded', true); + + //Select the single remaining option if user input matches + if (selectOnExact && scope.matches.length === 1 && inputIsExactMatch(inputValue, 0)) { + scope.select(0); + } + } else { + resetMatches(); + isNoResultsSetter(originalScope, true); + } + } + if (onCurrentRequest) { + isLoadingSetter(originalScope, false); + } + }, function() { + resetMatches(); + isLoadingSetter(originalScope, false); + isNoResultsSetter(originalScope, true); + }); + }; + + // bind events only if appendToBody params exist - performance feature + if (appendToBody) { + angular.element($window).bind('resize', fireRecalculating); + $document.find('body').bind('scroll', fireRecalculating); + } + + // Declare the timeout promise var outside the function scope so that stacked calls can be cancelled later + var timeoutEventPromise; + + // Default progress type + scope.moveInProgress = false; + + function fireRecalculating() { + if (!scope.moveInProgress) { + scope.moveInProgress = true; + scope.$digest(); + } + + // Cancel previous timeout + if (timeoutEventPromise) { + $timeout.cancel(timeoutEventPromise); + } + + // Debounced executing recalculate after events fired + timeoutEventPromise = $timeout(function() { + // if popup is visible + if (scope.matches.length) { + recalculatePosition(); + } + + scope.moveInProgress = false; + }, eventDebounceTime); + } + + // recalculate actual position and set new values to scope + // after digest loop is popup in right position + function recalculatePosition() { + scope.position = appendToBody ? $position.offset(element) : $position.position(element); + scope.position.top += element.prop('offsetHeight'); + } + + //we need to propagate user's query so we can higlight matches + scope.query = undefined; + + //Declare the timeout promise var outside the function scope so that stacked calls can be cancelled later + var timeoutPromise; + + var scheduleSearchWithTimeout = function(inputValue) { + timeoutPromise = $timeout(function() { + getMatchesAsync(inputValue); + }, waitTime); + }; + + var cancelPreviousTimeout = function() { + if (timeoutPromise) { + $timeout.cancel(timeoutPromise); + } + }; + + resetMatches(); + + scope.select = function(activeIdx) { + //called from within the $digest() cycle + var locals = {}; + var model, item; + + selected = true; + locals[parserResult.itemName] = item = scope.matches[activeIdx].model; + model = parserResult.modelMapper(originalScope, locals); + $setModelValue(originalScope, model); + modelCtrl.$setValidity('editable', true); + modelCtrl.$setValidity('parse', true); + + onSelectCallback(originalScope, { + $item: item, + $model: model, + $label: parserResult.viewMapper(originalScope, locals) + }); + + resetMatches(); + + //return focus to the input element if a match was selected via a mouse click event + // use timeout to avoid $rootScope:inprog error + if (scope.$eval(attrs.typeaheadFocusOnSelect) !== false) { + $timeout(function() { element[0].focus(); }, 0, false); + } + }; + + //bind keyboard events: arrows up(38) / down(40), enter(13) and tab(9), esc(27) + element.bind('keydown', function(evt) { + //typeahead is open and an "interesting" key was pressed + if (scope.matches.length === 0 || HOT_KEYS.indexOf(evt.which) === -1) { + return; + } + + // if there's nothing selected (i.e. focusFirst) and enter or tab is hit, clear the results + if (scope.activeIdx === -1 && (evt.which === 9 || evt.which === 13)) { + resetMatches(); + scope.$digest(); + return; + } + + evt.preventDefault(); + + if (evt.which === 40) { + scope.activeIdx = (scope.activeIdx + 1) % scope.matches.length; + scope.$digest(); + } else if (evt.which === 38) { + scope.activeIdx = (scope.activeIdx > 0 ? scope.activeIdx : scope.matches.length) - 1; + scope.$digest(); + } else if (evt.which === 13 || evt.which === 9) { + scope.$apply(function () { + scope.select(scope.activeIdx); + }); + } else if (evt.which === 27) { + evt.stopPropagation(); + + resetMatches(); + scope.$digest(); + } + }); + + element.bind('blur', function() { + if (isSelectOnBlur && scope.matches.length && scope.activeIdx !== -1 && !selected) { + selected = true; + scope.$apply(function() { + scope.select(scope.activeIdx); + }); + } + hasFocus = false; + selected = false; + }); + + // Keep reference to click handler to unbind it. + var dismissClickHandler = function(evt) { + // Issue #3973 + // Firefox treats right click as a click on document + if (element[0] !== evt.target && evt.which !== 3 && scope.matches.length !== 0) { + resetMatches(); + if (!$rootScope.$$phase) { + scope.$digest(); + } + } + }; + + $document.bind('click', dismissClickHandler); + + originalScope.$on('$destroy', function() { + $document.unbind('click', dismissClickHandler); + if (appendToBody || appendToElementId) { + $popup.remove(); + } + + if (appendToBody) { + angular.element($window).unbind('resize', fireRecalculating); + $document.find('body').unbind('scroll', fireRecalculating); + } + // Prevent jQuery cache memory leak + popUpEl.remove(); + }); + + var $popup = $compile(popUpEl)(scope); + + if (appendToBody) { + $document.find('body').append($popup); + } else if (appendToElementId !== false) { + angular.element($document[0].getElementById(appendToElementId)).append($popup); + } else { + element.after($popup); + } + + this.init = function(_modelCtrl, _ngModelOptions) { + modelCtrl = _modelCtrl; + ngModelOptions = _ngModelOptions; + + //plug into $parsers pipeline to open a typeahead on view changes initiated from DOM + //$parsers kick-in on all the changes coming from the view as well as manually triggered by $setViewValue + modelCtrl.$parsers.unshift(function(inputValue) { + hasFocus = true; + + if (minLength === 0 || inputValue && inputValue.length >= minLength) { + if (waitTime > 0) { + cancelPreviousTimeout(); + scheduleSearchWithTimeout(inputValue); + } else { + getMatchesAsync(inputValue); + } + } else { + isLoadingSetter(originalScope, false); + cancelPreviousTimeout(); + resetMatches(); + } + + if (isEditable) { + return inputValue; + } else { + if (!inputValue) { + // Reset in case user had typed something previously. + modelCtrl.$setValidity('editable', true); + return null; + } else { + modelCtrl.$setValidity('editable', false); + return undefined; + } + } + }); + + modelCtrl.$formatters.push(function(modelValue) { + var candidateViewValue, emptyViewValue; + var locals = {}; + + // The validity may be set to false via $parsers (see above) if + // the model is restricted to selected values. If the model + // is set manually it is considered to be valid. + if (!isEditable) { + modelCtrl.$setValidity('editable', true); + } + + if (inputFormatter) { + locals.$model = modelValue; + return inputFormatter(originalScope, locals); + } else { + //it might happen that we don't have enough info to properly render input value + //we need to check for this situation and simply return model value if we can't apply custom formatting + locals[parserResult.itemName] = modelValue; + candidateViewValue = parserResult.viewMapper(originalScope, locals); + locals[parserResult.itemName] = undefined; + emptyViewValue = parserResult.viewMapper(originalScope, locals); + + return candidateViewValue !== emptyViewValue ? candidateViewValue : modelValue; + } + }); + }; + }]) + + .directive('uibTypeahead', function() { + return { + controller: 'UibTypeaheadController', + require: ['ngModel', '^?ngModelOptions', 'uibTypeahead'], + link: function(originalScope, element, attrs, ctrls) { + ctrls[2].init(ctrls[0], ctrls[1]); + } + }; + }) + + .directive('uibTypeaheadPopup', function() { + return { + scope: { + matches: '=', + query: '=', + active: '=', + position: '&', + moveInProgress: '=', + select: '&' + }, + replace: true, + templateUrl: function(element, attrs) { + return attrs.popupTemplateUrl || 'template/typeahead/typeahead-popup.html'; + }, + link: function(scope, element, attrs) { + scope.templateUrl = attrs.templateUrl; + + scope.isOpen = function() { + return scope.matches.length > 0; + }; + + scope.isActive = function(matchIdx) { + return scope.active == matchIdx; + }; + + scope.selectActive = function(matchIdx) { + scope.active = matchIdx; + }; + + scope.selectMatch = function(activeIdx) { + scope.select({activeIdx:activeIdx}); + }; + } + }; + }) + + .directive('uibTypeaheadMatch', ['$templateRequest', '$compile', '$parse', function($templateRequest, $compile, $parse) { + return { + scope: { + index: '=', + match: '=', + query: '=' + }, + link:function(scope, element, attrs) { + var tplUrl = $parse(attrs.templateUrl)(scope.$parent) || 'template/typeahead/typeahead-match.html'; + $templateRequest(tplUrl).then(function(tplContent) { + $compile(tplContent.trim())(scope, function(clonedElement) { + element.replaceWith(clonedElement); + }); + }); + } + }; + }]) + + .filter('uibTypeaheadHighlight', ['$sce', '$injector', '$log', function($sce, $injector, $log) { + var isSanitizePresent; + isSanitizePresent = $injector.has('$sanitize'); + + function escapeRegexp(queryToEscape) { + // Regex: capture the whole query string and replace it with the string that will be used to match + // the results, for example if the capture is "a" the result will be \a + return queryToEscape.replace(/([.?*+^$[\]\\(){}|-])/g, '\\$1'); + } + + function containsHtml(matchItem) { + return /<.*>/g.test(matchItem); + } + + return function(matchItem, query) { + if (!isSanitizePresent && containsHtml(matchItem)) { + $log.warn('Unsafe use of typeahead please use ngSanitize'); // Warn the user about the danger + } + matchItem = query? ('' + matchItem).replace(new RegExp(escapeRegexp(query), 'gi'), '$&') : matchItem; // Replaces the capture string with a the same string inside of a "strong" tag + if (!isSanitizePresent) { + matchItem = $sce.trustAsHtml(matchItem); // If $sanitize is not present we pack the string in a $sce object for the ng-bind-html directive + } + return matchItem; + }; + }]); + +/* Deprecated typeahead below */ + +angular.module('ui.bootstrap.typeahead') + .value('$typeaheadSuppressWarning', false) + .service('typeaheadParser', ['$parse', 'uibTypeaheadParser', '$log', '$typeaheadSuppressWarning', function($parse, uibTypeaheadParser, $log, $typeaheadSuppressWarning) { + if (!$typeaheadSuppressWarning) { + $log.warn('typeaheadParser is now deprecated. Use uibTypeaheadParser instead.'); + } + + return uibTypeaheadParser; + }]) + + .directive('typeahead', ['$compile', '$parse', '$q', '$timeout', '$document', '$window', '$rootScope', '$uibPosition', 'typeaheadParser', '$log', '$typeaheadSuppressWarning', + function($compile, $parse, $q, $timeout, $document, $window, $rootScope, $position, typeaheadParser, $log, $typeaheadSuppressWarning) { + var HOT_KEYS = [9, 13, 27, 38, 40]; + var eventDebounceTime = 200; + return { + require: ['ngModel', '^?ngModelOptions'], + link: function(originalScope, element, attrs, ctrls) { + if (!$typeaheadSuppressWarning) { + $log.warn('typeahead is now deprecated. Use uib-typeahead instead.'); + } + var modelCtrl = ctrls[0]; + var ngModelOptions = ctrls[1]; + //SUPPORTED ATTRIBUTES (OPTIONS) + + //minimal no of characters that needs to be entered before typeahead kicks-in + var minLength = originalScope.$eval(attrs.typeaheadMinLength); + if (!minLength && minLength !== 0) { + minLength = 1; + } + + //minimal wait time after last character typed before typeahead kicks-in + var waitTime = originalScope.$eval(attrs.typeaheadWaitMs) || 0; + + //should it restrict model values to the ones selected from the popup only? + var isEditable = originalScope.$eval(attrs.typeaheadEditable) !== false; + + //binding to a variable that indicates if matches are being retrieved asynchronously + var isLoadingSetter = $parse(attrs.typeaheadLoading).assign || angular.noop; + + //a callback executed when a match is selected + var onSelectCallback = $parse(attrs.typeaheadOnSelect); + + //should it select highlighted popup value when losing focus? + var isSelectOnBlur = angular.isDefined(attrs.typeaheadSelectOnBlur) ? originalScope.$eval(attrs.typeaheadSelectOnBlur) : false; + + //binding to a variable that indicates if there were no results after the query is completed + var isNoResultsSetter = $parse(attrs.typeaheadNoResults).assign || angular.noop; + + var inputFormatter = attrs.typeaheadInputFormatter ? $parse(attrs.typeaheadInputFormatter) : undefined; + + var appendToBody = attrs.typeaheadAppendToBody ? originalScope.$eval(attrs.typeaheadAppendToBody) : false; + + var appendToElementId = attrs.typeaheadAppendToElementId || false; + + var focusFirst = originalScope.$eval(attrs.typeaheadFocusFirst) !== false; + + //If input matches an item of the list exactly, select it automatically + var selectOnExact = attrs.typeaheadSelectOnExact ? originalScope.$eval(attrs.typeaheadSelectOnExact) : false; + + //INTERNAL VARIABLES + + //model setter executed upon match selection + var parsedModel = $parse(attrs.ngModel); + var invokeModelSetter = $parse(attrs.ngModel + '($$$p)'); + var $setModelValue = function(scope, newValue) { + if (angular.isFunction(parsedModel(originalScope)) && + ngModelOptions && ngModelOptions.$options && ngModelOptions.$options.getterSetter) { + return invokeModelSetter(scope, {$$$p: newValue}); + } else { + return parsedModel.assign(scope, newValue); + } + }; + + //expressions used by typeahead + var parserResult = typeaheadParser.parse(attrs.typeahead); + + var hasFocus; + + //Used to avoid bug in iOS webview where iOS keyboard does not fire + //mousedown & mouseup events + //Issue #3699 + var selected; + + //create a child scope for the typeahead directive so we are not polluting original scope + //with typeahead-specific data (matches, query etc.) + var scope = originalScope.$new(); + var offDestroy = originalScope.$on('$destroy', function() { + scope.$destroy(); + }); + scope.$on('$destroy', offDestroy); + + // WAI-ARIA + var popupId = 'typeahead-' + scope.$id + '-' + Math.floor(Math.random() * 10000); + element.attr({ + 'aria-autocomplete': 'list', + 'aria-expanded': false, + 'aria-owns': popupId + }); + + //pop-up element used to display matches + var popUpEl = angular.element('
'); + popUpEl.attr({ + id: popupId, + matches: 'matches', + active: 'activeIdx', + select: 'select(activeIdx)', + 'move-in-progress': 'moveInProgress', + query: 'query', + position: 'position' + }); + //custom item template + if (angular.isDefined(attrs.typeaheadTemplateUrl)) { + popUpEl.attr('template-url', attrs.typeaheadTemplateUrl); + } + + if (angular.isDefined(attrs.typeaheadPopupTemplateUrl)) { + popUpEl.attr('popup-template-url', attrs.typeaheadPopupTemplateUrl); + } + + var resetMatches = function() { + scope.matches = []; + scope.activeIdx = -1; + element.attr('aria-expanded', false); + }; + + var getMatchId = function(index) { + return popupId + '-option-' + index; + }; + + // Indicate that the specified match is the active (pre-selected) item in the list owned by this typeahead. + // This attribute is added or removed automatically when the `activeIdx` changes. + scope.$watch('activeIdx', function(index) { + if (index < 0) { + element.removeAttr('aria-activedescendant'); + } else { + element.attr('aria-activedescendant', getMatchId(index)); + } + }); + + var inputIsExactMatch = function(inputValue, index) { + if (scope.matches.length > index && inputValue) { + return inputValue.toUpperCase() === scope.matches[index].label.toUpperCase(); + } + + return false; + }; + + var getMatchesAsync = function(inputValue) { + var locals = {$viewValue: inputValue}; + isLoadingSetter(originalScope, true); + isNoResultsSetter(originalScope, false); + $q.when(parserResult.source(originalScope, locals)).then(function(matches) { + //it might happen that several async queries were in progress if a user were typing fast + //but we are interested only in responses that correspond to the current view value + var onCurrentRequest = (inputValue === modelCtrl.$viewValue); + if (onCurrentRequest && hasFocus) { + if (matches && matches.length > 0) { + scope.activeIdx = focusFirst ? 0 : -1; + isNoResultsSetter(originalScope, false); + scope.matches.length = 0; + + //transform labels + for (var i = 0; i < matches.length; i++) { + locals[parserResult.itemName] = matches[i]; + scope.matches.push({ + id: getMatchId(i), + label: parserResult.viewMapper(scope, locals), + model: matches[i] + }); + } + + scope.query = inputValue; + //position pop-up with matches - we need to re-calculate its position each time we are opening a window + //with matches as a pop-up might be absolute-positioned and position of an input might have changed on a page + //due to other elements being rendered + recalculatePosition(); + + element.attr('aria-expanded', true); + + //Select the single remaining option if user input matches + if (selectOnExact && scope.matches.length === 1 && inputIsExactMatch(inputValue, 0)) { + scope.select(0); + } + } else { + resetMatches(); + isNoResultsSetter(originalScope, true); + } + } + if (onCurrentRequest) { + isLoadingSetter(originalScope, false); + } + }, function() { + resetMatches(); + isLoadingSetter(originalScope, false); + isNoResultsSetter(originalScope, true); + }); + }; + + // bind events only if appendToBody params exist - performance feature + if (appendToBody) { + angular.element($window).bind('resize', fireRecalculating); + $document.find('body').bind('scroll', fireRecalculating); + } + + // Declare the timeout promise var outside the function scope so that stacked calls can be cancelled later + var timeoutEventPromise; + + // Default progress type + scope.moveInProgress = false; + + function fireRecalculating() { + if (!scope.moveInProgress) { + scope.moveInProgress = true; + scope.$digest(); + } + + // Cancel previous timeout + if (timeoutEventPromise) { + $timeout.cancel(timeoutEventPromise); + } + + // Debounced executing recalculate after events fired + timeoutEventPromise = $timeout(function() { + // if popup is visible + if (scope.matches.length) { + recalculatePosition(); + } + + scope.moveInProgress = false; + }, eventDebounceTime); + } + + // recalculate actual position and set new values to scope + // after digest loop is popup in right position + function recalculatePosition() { + scope.position = appendToBody ? $position.offset(element) : $position.position(element); + scope.position.top += element.prop('offsetHeight'); + } + + resetMatches(); + + //we need to propagate user's query so we can higlight matches + scope.query = undefined; + + //Declare the timeout promise var outside the function scope so that stacked calls can be cancelled later + var timeoutPromise; + + var scheduleSearchWithTimeout = function(inputValue) { + timeoutPromise = $timeout(function() { + getMatchesAsync(inputValue); + }, waitTime); + }; + + var cancelPreviousTimeout = function() { + if (timeoutPromise) { + $timeout.cancel(timeoutPromise); + } + }; + + //plug into $parsers pipeline to open a typeahead on view changes initiated from DOM + //$parsers kick-in on all the changes coming from the view as well as manually triggered by $setViewValue + modelCtrl.$parsers.unshift(function(inputValue) { + hasFocus = true; + + if (minLength === 0 || inputValue && inputValue.length >= minLength) { + if (waitTime > 0) { + cancelPreviousTimeout(); + scheduleSearchWithTimeout(inputValue); + } else { + getMatchesAsync(inputValue); + } + } else { + isLoadingSetter(originalScope, false); + cancelPreviousTimeout(); + resetMatches(); + } + + if (isEditable) { + return inputValue; + } else { + if (!inputValue) { + // Reset in case user had typed something previously. + modelCtrl.$setValidity('editable', true); + return null; + } else { + modelCtrl.$setValidity('editable', false); + return undefined; + } + } + }); + + modelCtrl.$formatters.push(function(modelValue) { + var candidateViewValue, emptyViewValue; + var locals = {}; + + // The validity may be set to false via $parsers (see above) if + // the model is restricted to selected values. If the model + // is set manually it is considered to be valid. + if (!isEditable) { + modelCtrl.$setValidity('editable', true); + } + + if (inputFormatter) { + locals.$model = modelValue; + return inputFormatter(originalScope, locals); + } else { + //it might happen that we don't have enough info to properly render input value + //we need to check for this situation and simply return model value if we can't apply custom formatting + locals[parserResult.itemName] = modelValue; + candidateViewValue = parserResult.viewMapper(originalScope, locals); + locals[parserResult.itemName] = undefined; + emptyViewValue = parserResult.viewMapper(originalScope, locals); + + return candidateViewValue !== emptyViewValue ? candidateViewValue : modelValue; + } + }); + + scope.select = function(activeIdx) { + //called from within the $digest() cycle + var locals = {}; + var model, item; + + selected = true; + locals[parserResult.itemName] = item = scope.matches[activeIdx].model; + model = parserResult.modelMapper(originalScope, locals); + $setModelValue(originalScope, model); + modelCtrl.$setValidity('editable', true); + modelCtrl.$setValidity('parse', true); + + onSelectCallback(originalScope, { + $item: item, + $model: model, + $label: parserResult.viewMapper(originalScope, locals) + }); + + resetMatches(); + + //return focus to the input element if a match was selected via a mouse click event + // use timeout to avoid $rootScope:inprog error + if (scope.$eval(attrs.typeaheadFocusOnSelect) !== false) { + $timeout(function() { element[0].focus(); }, 0, false); + } + }; + + //bind keyboard events: arrows up(38) / down(40), enter(13) and tab(9), esc(27) + element.bind('keydown', function(evt) { + //typeahead is open and an "interesting" key was pressed + if (scope.matches.length === 0 || HOT_KEYS.indexOf(evt.which) === -1) { + return; + } + + // if there's nothing selected (i.e. focusFirst) and enter or tab is hit, clear the results + if (scope.activeIdx === -1 && (evt.which === 9 || evt.which === 13)) { + resetMatches(); + scope.$digest(); + return; + } + + evt.preventDefault(); + + if (evt.which === 40) { + scope.activeIdx = (scope.activeIdx + 1) % scope.matches.length; + scope.$digest(); + } else if (evt.which === 38) { + scope.activeIdx = (scope.activeIdx > 0 ? scope.activeIdx : scope.matches.length) - 1; + scope.$digest(); + } else if (evt.which === 13 || evt.which === 9) { + scope.$apply(function () { + scope.select(scope.activeIdx); + }); + } else if (evt.which === 27) { + evt.stopPropagation(); + + resetMatches(); + scope.$digest(); + } + }); + + element.bind('blur', function() { + if (isSelectOnBlur && scope.matches.length && scope.activeIdx !== -1 && !selected) { + selected = true; + scope.$apply(function() { + scope.select(scope.activeIdx); + }); + } + hasFocus = false; + selected = false; + }); + + // Keep reference to click handler to unbind it. + var dismissClickHandler = function(evt) { + // Issue #3973 + // Firefox treats right click as a click on document + if (element[0] !== evt.target && evt.which !== 3 && scope.matches.length !== 0) { + resetMatches(); + if (!$rootScope.$$phase) { + scope.$digest(); + } + } + }; + + $document.bind('click', dismissClickHandler); + + originalScope.$on('$destroy', function() { + $document.unbind('click', dismissClickHandler); + if (appendToBody || appendToElementId) { + $popup.remove(); + } + + if (appendToBody) { + angular.element($window).unbind('resize', fireRecalculating); + $document.find('body').unbind('scroll', fireRecalculating); + } + // Prevent jQuery cache memory leak + popUpEl.remove(); + }); + + var $popup = $compile(popUpEl)(scope); + + if (appendToBody) { + $document.find('body').append($popup); + } else if (appendToElementId !== false) { + angular.element($document[0].getElementById(appendToElementId)).append($popup); + } else { + element.after($popup); + } + } + }; + }]) + + .directive('typeaheadPopup', ['$typeaheadSuppressWarning', '$log', function($typeaheadSuppressWarning, $log) { + return { + scope: { + matches: '=', + query: '=', + active: '=', + position: '&', + moveInProgress: '=', + select: '&' + }, + replace: true, + templateUrl: function(element, attrs) { + return attrs.popupTemplateUrl || 'template/typeahead/typeahead-popup.html'; + }, + link: function(scope, element, attrs) { + + if (!$typeaheadSuppressWarning) { + $log.warn('typeahead-popup is now deprecated. Use uib-typeahead-popup instead.'); + } + scope.templateUrl = attrs.templateUrl; + + scope.isOpen = function() { + return scope.matches.length > 0; + }; + + scope.isActive = function(matchIdx) { + return scope.active == matchIdx; + }; + + scope.selectActive = function(matchIdx) { + scope.active = matchIdx; + }; + + scope.selectMatch = function(activeIdx) { + scope.select({activeIdx:activeIdx}); + }; + } + }; + }]) + + .directive('typeaheadMatch', ['$templateRequest', '$compile', '$parse', '$typeaheadSuppressWarning', '$log', function($templateRequest, $compile, $parse, $typeaheadSuppressWarning, $log) { + return { + restrict: 'EA', + scope: { + index: '=', + match: '=', + query: '=' + }, + link:function(scope, element, attrs) { + if (!$typeaheadSuppressWarning) { + $log.warn('typeahead-match is now deprecated. Use uib-typeahead-match instead.'); + } + + var tplUrl = $parse(attrs.templateUrl)(scope.$parent) || 'template/typeahead/typeahead-match.html'; + $templateRequest(tplUrl).then(function(tplContent) { + $compile(tplContent.trim())(scope, function(clonedElement) { + element.replaceWith(clonedElement); + }); + }); + } + }; + }]) + + .filter('typeaheadHighlight', ['$sce', '$injector', '$log', '$typeaheadSuppressWarning', function($sce, $injector, $log, $typeaheadSuppressWarning) { + var isSanitizePresent; + isSanitizePresent = $injector.has('$sanitize'); + + function escapeRegexp(queryToEscape) { + // Regex: capture the whole query string and replace it with the string that will be used to match + // the results, for example if the capture is "a" the result will be \a + return queryToEscape.replace(/([.?*+^$[\]\\(){}|-])/g, '\\$1'); + } + + function containsHtml(matchItem) { + return /<.*>/g.test(matchItem); + } + + return function(matchItem, query) { + if (!$typeaheadSuppressWarning) { + $log.warn('typeaheadHighlight is now deprecated. Use uibTypeaheadHighlight instead.'); + } + + if (!isSanitizePresent && containsHtml(matchItem)) { + $log.warn('Unsafe use of typeahead please use ngSanitize'); // Warn the user about the danger + } + + matchItem = query? ('' + matchItem).replace(new RegExp(escapeRegexp(query), 'gi'), '$&') : matchItem; // Replaces the capture string with a the same string inside of a "strong" tag + if (!isSanitizePresent) { + matchItem = $sce.trustAsHtml(matchItem); // If $sanitize is not present we pack the string in a $sce object for the ng-bind-html directive + } + + return matchItem; + }; + }]); + +angular.module("template/accordion/accordion-group.html", []).run(["$templateCache", function($templateCache) { + $templateCache.put("template/accordion/accordion-group.html", + "
\n" + + "
\n" + + "

\n" + + " {{heading}}\n" + + "

\n" + + "
\n" + + "
\n" + + "
\n" + + "
\n" + + "
\n" + + ""); +}]); + +angular.module("template/accordion/accordion.html", []).run(["$templateCache", function($templateCache) { + $templateCache.put("template/accordion/accordion.html", + "
"); +}]); + +angular.module("template/alert/alert.html", []).run(["$templateCache", function($templateCache) { + $templateCache.put("template/alert/alert.html", + "
\n" + + " \n" + + "
\n" + + "
\n" + + ""); +}]); + +angular.module("template/carousel/carousel.html", []).run(["$templateCache", function($templateCache) { + $templateCache.put("template/carousel/carousel.html", + "
\n" + + "
\n" + + " 1\">\n" + + " \n" + + " previous\n" + + " \n" + + " 1\">\n" + + " \n" + + " next\n" + + " \n" + + "
    1\">\n" + + "
  1. \n" + + " slide {{ $index + 1 }} of {{ slides.length }}, currently active\n" + + "
  2. \n" + + "
\n" + + "
"); +}]); + +angular.module("template/carousel/slide.html", []).run(["$templateCache", function($templateCache) { + $templateCache.put("template/carousel/slide.html", + "
\n" + + ""); +}]); + +angular.module("template/datepicker/datepicker.html", []).run(["$templateCache", function($templateCache) { + $templateCache.put("template/datepicker/datepicker.html", + "
\n" + + " \n" + + " \n" + + " \n" + + "
"); +}]); + +angular.module("template/datepicker/day.html", []).run(["$templateCache", function($templateCache) { + $templateCache.put("template/datepicker/day.html", + "\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + "
{{::label.abbr}}
{{ weekNumbers[$index] }}\n" + + " \n" + + "
\n" + + ""); +}]); + +angular.module("template/datepicker/month.html", []).run(["$templateCache", function($templateCache) { + $templateCache.put("template/datepicker/month.html", + "\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + "
\n" + + " \n" + + "
\n" + + ""); +}]); + +angular.module("template/datepicker/popup.html", []).run(["$templateCache", function($templateCache) { + $templateCache.put("template/datepicker/popup.html", + "
    \n" + + "
  • \n" + + "
  • \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + "
  • \n" + + "
\n" + + ""); +}]); + +angular.module("template/datepicker/year.html", []).run(["$templateCache", function($templateCache) { + $templateCache.put("template/datepicker/year.html", + "\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + "
\n" + + " \n" + + "
\n" + + ""); +}]); + +angular.module("template/modal/backdrop.html", []).run(["$templateCache", function($templateCache) { + $templateCache.put("template/modal/backdrop.html", + "
\n" + + ""); +}]); + +angular.module("template/modal/window.html", []).run(["$templateCache", function($templateCache) { + $templateCache.put("template/modal/window.html", + "
\n" + + "
\n" + + "
\n" + + ""); +}]); + +angular.module("template/pagination/pager.html", []).run(["$templateCache", function($templateCache) { + $templateCache.put("template/pagination/pager.html", + "\n" + + ""); +}]); + +angular.module("template/pagination/pagination.html", []).run(["$templateCache", function($templateCache) { + $templateCache.put("template/pagination/pagination.html", + "\n" + + ""); +}]); + +angular.module("template/tooltip/tooltip-html-popup.html", []).run(["$templateCache", function($templateCache) { + $templateCache.put("template/tooltip/tooltip-html-popup.html", + "\n" + + "
\n" + + "
\n" + + "\n" + + ""); +}]); + +angular.module("template/tooltip/tooltip-popup.html", []).run(["$templateCache", function($templateCache) { + $templateCache.put("template/tooltip/tooltip-popup.html", + "\n" + + "
\n" + + "
\n" + + "\n" + + ""); +}]); + +angular.module("template/tooltip/tooltip-template-popup.html", []).run(["$templateCache", function($templateCache) { + $templateCache.put("template/tooltip/tooltip-template-popup.html", + "\n" + + "
\n" + + "
\n" + + "\n" + + ""); +}]); + +angular.module("template/popover/popover-html.html", []).run(["$templateCache", function($templateCache) { + $templateCache.put("template/popover/popover-html.html", + "
\n" + + "
\n" + + "\n" + + "
\n" + + "

\n" + + "
\n" + + "
\n" + + "
\n" + + ""); +}]); + +angular.module("template/popover/popover-template.html", []).run(["$templateCache", function($templateCache) { + $templateCache.put("template/popover/popover-template.html", + "
\n" + + "
\n" + + "\n" + + "
\n" + + "

\n" + + "
\n" + + "
\n" + + "
\n" + + ""); +}]); + +angular.module("template/popover/popover.html", []).run(["$templateCache", function($templateCache) { + $templateCache.put("template/popover/popover.html", + "
\n" + + "
\n" + + "\n" + + "
\n" + + "

\n" + + "
\n" + + "
\n" + + "
\n" + + ""); +}]); + +angular.module("template/progressbar/bar.html", []).run(["$templateCache", function($templateCache) { + $templateCache.put("template/progressbar/bar.html", + "
\n" + + ""); +}]); + +angular.module("template/progressbar/progress.html", []).run(["$templateCache", function($templateCache) { + $templateCache.put("template/progressbar/progress.html", + "
"); +}]); + +angular.module("template/progressbar/progressbar.html", []).run(["$templateCache", function($templateCache) { + $templateCache.put("template/progressbar/progressbar.html", + "
\n" + + "
\n" + + "
\n" + + ""); +}]); + +angular.module("template/rating/rating.html", []).run(["$templateCache", function($templateCache) { + $templateCache.put("template/rating/rating.html", + "\n" + + " ({{ $index < value ? '*' : ' ' }})\n" + + " \n" + + "\n" + + ""); +}]); + +angular.module("template/tabs/tab.html", []).run(["$templateCache", function($templateCache) { + $templateCache.put("template/tabs/tab.html", + "
  • \n" + + " {{heading}}\n" + + "
  • \n" + + ""); +}]); + +angular.module("template/tabs/tabset.html", []).run(["$templateCache", function($templateCache) { + $templateCache.put("template/tabs/tabset.html", + "
    \n" + + "
      \n" + + "
      \n" + + "
      \n" + + "
      \n" + + "
      \n" + + "
      \n" + + ""); +}]); + +angular.module("template/timepicker/timepicker.html", []).run(["$templateCache", function($templateCache) { + $templateCache.put("template/timepicker/timepicker.html", + "\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + "
       
      \n" + + " \n" + + " :\n" + + " \n" + + "
       
      \n" + + ""); +}]); + +angular.module("template/typeahead/typeahead-match.html", []).run(["$templateCache", function($templateCache) { + $templateCache.put("template/typeahead/typeahead-match.html", + "\n" + + ""); +}]); + +angular.module("template/typeahead/typeahead-popup.html", []).run(["$templateCache", function($templateCache) { + $templateCache.put("template/typeahead/typeahead-popup.html", + "
        \n" + + "
      • \n" + + "
        \n" + + "
      • \n" + + "
      \n" + + ""); +}]); +!angular.$$csp() && angular.element(document).find('head').prepend(''); \ No newline at end of file diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/ui-bootstrap-tpls.min.js b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/ui-bootstrap-tpls.min.js new file mode 100644 index 00000000..f729eda6 --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/ui-bootstrap-tpls.min.js @@ -0,0 +1,12 @@ +/* + * angular-ui-bootstrap + * http://angular-ui.github.io/bootstrap/ + + * Version: 0.14.3 - 2015-10-23 + * License: MIT + */ +angular.module("ui.bootstrap",["ui.bootstrap.tpls","ui.bootstrap.collapse","ui.bootstrap.accordion","ui.bootstrap.alert","ui.bootstrap.buttons","ui.bootstrap.carousel","ui.bootstrap.dateparser","ui.bootstrap.position","ui.bootstrap.datepicker","ui.bootstrap.dropdown","ui.bootstrap.stackedMap","ui.bootstrap.modal","ui.bootstrap.pagination","ui.bootstrap.tooltip","ui.bootstrap.popover","ui.bootstrap.progressbar","ui.bootstrap.rating","ui.bootstrap.tabs","ui.bootstrap.timepicker","ui.bootstrap.typeahead"]),angular.module("ui.bootstrap.tpls",["template/accordion/accordion-group.html","template/accordion/accordion.html","template/alert/alert.html","template/carousel/carousel.html","template/carousel/slide.html","template/datepicker/datepicker.html","template/datepicker/day.html","template/datepicker/month.html","template/datepicker/popup.html","template/datepicker/year.html","template/modal/backdrop.html","template/modal/window.html","template/pagination/pager.html","template/pagination/pagination.html","template/tooltip/tooltip-html-popup.html","template/tooltip/tooltip-popup.html","template/tooltip/tooltip-template-popup.html","template/popover/popover-html.html","template/popover/popover-template.html","template/popover/popover.html","template/progressbar/bar.html","template/progressbar/progress.html","template/progressbar/progressbar.html","template/rating/rating.html","template/tabs/tab.html","template/tabs/tabset.html","template/timepicker/timepicker.html","template/typeahead/typeahead-match.html","template/typeahead/typeahead-popup.html"]),angular.module("ui.bootstrap.collapse",[]).directive("uibCollapse",["$animate","$injector",function(a,b){var c=b.has("$animateCss")?b.get("$animateCss"):null;return{link:function(b,d,e){function f(){d.removeClass("collapse").addClass("collapsing").attr("aria-expanded",!0).attr("aria-hidden",!1),c?c(d,{addClass:"in",easing:"ease",to:{height:d[0].scrollHeight+"px"}}).start()["finally"](g):a.addClass(d,"in",{to:{height:d[0].scrollHeight+"px"}}).then(g)}function g(){d.removeClass("collapsing").addClass("collapse").css({height:"auto"})}function h(){return d.hasClass("collapse")||d.hasClass("in")?(d.css({height:d[0].scrollHeight+"px"}).removeClass("collapse").addClass("collapsing").attr("aria-expanded",!1).attr("aria-hidden",!0),void(c?c(d,{removeClass:"in",to:{height:"0"}}).start()["finally"](i):a.removeClass(d,"in",{to:{height:"0"}}).then(i))):i()}function i(){d.css({height:"0"}),d.removeClass("collapsing").addClass("collapse")}b.$watch(e.uibCollapse,function(a){a?h():f()})}}}]),angular.module("ui.bootstrap.collapse").value("$collapseSuppressWarning",!1).directive("collapse",["$animate","$injector","$log","$collapseSuppressWarning",function(a,b,c,d){var e=b.has("$animateCss")?b.get("$animateCss"):null;return{link:function(b,f,g){function h(){f.removeClass("collapse").addClass("collapsing").attr("aria-expanded",!0).attr("aria-hidden",!1),e?e(f,{easing:"ease",to:{height:f[0].scrollHeight+"px"}}).start().done(i):a.animate(f,{},{height:f[0].scrollHeight+"px"}).then(i)}function i(){f.removeClass("collapsing").addClass("collapse in").css({height:"auto"})}function j(){return f.hasClass("collapse")||f.hasClass("in")?(f.css({height:f[0].scrollHeight+"px"}).removeClass("collapse in").addClass("collapsing").attr("aria-expanded",!1).attr("aria-hidden",!0),void(e?e(f,{to:{height:"0"}}).start().done(k):a.animate(f,{},{height:"0"}).then(k))):k()}function k(){f.css({height:"0"}),f.removeClass("collapsing").addClass("collapse")}d||c.warn("collapse is now deprecated. Use uib-collapse instead."),b.$watch(g.collapse,function(a){a?j():h()})}}}]),angular.module("ui.bootstrap.accordion",["ui.bootstrap.collapse"]).constant("uibAccordionConfig",{closeOthers:!0}).controller("UibAccordionController",["$scope","$attrs","uibAccordionConfig",function(a,b,c){this.groups=[],this.closeOthers=function(d){var e=angular.isDefined(b.closeOthers)?a.$eval(b.closeOthers):c.closeOthers;e&&angular.forEach(this.groups,function(a){a!==d&&(a.isOpen=!1)})},this.addGroup=function(a){var b=this;this.groups.push(a),a.$on("$destroy",function(c){b.removeGroup(a)})},this.removeGroup=function(a){var b=this.groups.indexOf(a);-1!==b&&this.groups.splice(b,1)}}]).directive("uibAccordion",function(){return{controller:"UibAccordionController",controllerAs:"accordion",transclude:!0,templateUrl:function(a,b){return b.templateUrl||"template/accordion/accordion.html"}}}).directive("uibAccordionGroup",function(){return{require:"^uibAccordion",transclude:!0,replace:!0,templateUrl:function(a,b){return b.templateUrl||"template/accordion/accordion-group.html"},scope:{heading:"@",isOpen:"=?",isDisabled:"=?"},controller:function(){this.setHeading=function(a){this.heading=a}},link:function(a,b,c,d){d.addGroup(a),a.openClass=c.openClass||"panel-open",a.panelClass=c.panelClass,a.$watch("isOpen",function(c){b.toggleClass(a.openClass,!!c),c&&d.closeOthers(a)}),a.toggleOpen=function(b){a.isDisabled||b&&32!==b.which||(a.isOpen=!a.isOpen)}}}}).directive("uibAccordionHeading",function(){return{transclude:!0,template:"",replace:!0,require:"^uibAccordionGroup",link:function(a,b,c,d,e){d.setHeading(e(a,angular.noop))}}}).directive("uibAccordionTransclude",function(){return{require:["?^uibAccordionGroup","?^accordionGroup"],link:function(a,b,c,d){d=d[0]?d[0]:d[1],a.$watch(function(){return d[c.uibAccordionTransclude]},function(a){a&&(b.find("span").html(""),b.find("span").append(a))})}}}),angular.module("ui.bootstrap.accordion").value("$accordionSuppressWarning",!1).controller("AccordionController",["$scope","$attrs","$controller","$log","$accordionSuppressWarning",function(a,b,c,d,e){e||d.warn("AccordionController is now deprecated. Use UibAccordionController instead."),angular.extend(this,c("UibAccordionController",{$scope:a,$attrs:b}))}]).directive("accordion",["$log","$accordionSuppressWarning",function(a,b){return{restrict:"EA",controller:"AccordionController",controllerAs:"accordion",transclude:!0,replace:!1,templateUrl:function(a,b){return b.templateUrl||"template/accordion/accordion.html"},link:function(){b||a.warn("accordion is now deprecated. Use uib-accordion instead.")}}}]).directive("accordionGroup",["$log","$accordionSuppressWarning",function(a,b){return{require:"^accordion",restrict:"EA",transclude:!0,replace:!0,templateUrl:function(a,b){return b.templateUrl||"template/accordion/accordion-group.html"},scope:{heading:"@",isOpen:"=?",isDisabled:"=?"},controller:function(){this.setHeading=function(a){this.heading=a}},link:function(c,d,e,f){b||a.warn("accordion-group is now deprecated. Use uib-accordion-group instead."),f.addGroup(c),c.openClass=e.openClass||"panel-open",c.panelClass=e.panelClass,c.$watch("isOpen",function(a){d.toggleClass(c.openClass,!!a),a&&f.closeOthers(c)}),c.toggleOpen=function(a){c.isDisabled||a&&32!==a.which||(c.isOpen=!c.isOpen)}}}}]).directive("accordionHeading",["$log","$accordionSuppressWarning",function(a,b){return{restrict:"EA",transclude:!0,template:"",replace:!0,require:"^accordionGroup",link:function(c,d,e,f,g){b||a.warn("accordion-heading is now deprecated. Use uib-accordion-heading instead."),f.setHeading(g(c,angular.noop))}}}]).directive("accordionTransclude",["$log","$accordionSuppressWarning",function(a,b){return{require:"^accordionGroup",link:function(c,d,e,f){b||a.warn("accordion-transclude is now deprecated. Use uib-accordion-transclude instead."),c.$watch(function(){return f[e.accordionTransclude]},function(a){a&&(d.find("span").html(""),d.find("span").append(a))})}}}]),angular.module("ui.bootstrap.alert",[]).controller("UibAlertController",["$scope","$attrs","$interpolate","$timeout",function(a,b,c,d){a.closeable=!!b.close;var e=angular.isDefined(b.dismissOnTimeout)?c(b.dismissOnTimeout)(a.$parent):null;e&&d(function(){a.close()},parseInt(e,10))}]).directive("uibAlert",function(){return{controller:"UibAlertController",controllerAs:"alert",templateUrl:function(a,b){return b.templateUrl||"template/alert/alert.html"},transclude:!0,replace:!0,scope:{type:"@",close:"&"}}}),angular.module("ui.bootstrap.alert").value("$alertSuppressWarning",!1).controller("AlertController",["$scope","$attrs","$controller","$log","$alertSuppressWarning",function(a,b,c,d,e){e||d.warn("AlertController is now deprecated. Use UibAlertController instead."),angular.extend(this,c("UibAlertController",{$scope:a,$attrs:b}))}]).directive("alert",["$log","$alertSuppressWarning",function(a,b){return{controller:"AlertController",controllerAs:"alert",templateUrl:function(a,b){return b.templateUrl||"template/alert/alert.html"},transclude:!0,replace:!0,scope:{type:"@",close:"&"},link:function(){b||a.warn("alert is now deprecated. Use uib-alert instead.")}}}]),angular.module("ui.bootstrap.buttons",[]).constant("uibButtonConfig",{activeClass:"active",toggleEvent:"click"}).controller("UibButtonsController",["uibButtonConfig",function(a){this.activeClass=a.activeClass||"active",this.toggleEvent=a.toggleEvent||"click"}]).directive("uibBtnRadio",function(){return{require:["uibBtnRadio","ngModel"],controller:"UibButtonsController",controllerAs:"buttons",link:function(a,b,c,d){var e=d[0],f=d[1];b.find("input").css({display:"none"}),f.$render=function(){b.toggleClass(e.activeClass,angular.equals(f.$modelValue,a.$eval(c.uibBtnRadio)))},b.on(e.toggleEvent,function(){if(!c.disabled){var d=b.hasClass(e.activeClass);(!d||angular.isDefined(c.uncheckable))&&a.$apply(function(){f.$setViewValue(d?null:a.$eval(c.uibBtnRadio)),f.$render()})}})}}}).directive("uibBtnCheckbox",function(){return{require:["uibBtnCheckbox","ngModel"],controller:"UibButtonsController",controllerAs:"button",link:function(a,b,c,d){function e(){return g(c.btnCheckboxTrue,!0)}function f(){return g(c.btnCheckboxFalse,!1)}function g(b,c){return angular.isDefined(b)?a.$eval(b):c}var h=d[0],i=d[1];b.find("input").css({display:"none"}),i.$render=function(){b.toggleClass(h.activeClass,angular.equals(i.$modelValue,e()))},b.on(h.toggleEvent,function(){c.disabled||a.$apply(function(){i.$setViewValue(b.hasClass(h.activeClass)?f():e()),i.$render()})})}}}),angular.module("ui.bootstrap.buttons").value("$buttonsSuppressWarning",!1).controller("ButtonsController",["$controller","$log","$buttonsSuppressWarning",function(a,b,c){c||b.warn("ButtonsController is now deprecated. Use UibButtonsController instead."),angular.extend(this,a("UibButtonsController"))}]).directive("btnRadio",["$log","$buttonsSuppressWarning",function(a,b){return{require:["btnRadio","ngModel"],controller:"ButtonsController",controllerAs:"buttons",link:function(c,d,e,f){b||a.warn("btn-radio is now deprecated. Use uib-btn-radio instead.");var g=f[0],h=f[1];d.find("input").css({display:"none"}),h.$render=function(){d.toggleClass(g.activeClass,angular.equals(h.$modelValue,c.$eval(e.btnRadio)))},d.bind(g.toggleEvent,function(){if(!e.disabled){var a=d.hasClass(g.activeClass);(!a||angular.isDefined(e.uncheckable))&&c.$apply(function(){h.$setViewValue(a?null:c.$eval(e.btnRadio)),h.$render()})}})}}}]).directive("btnCheckbox",["$document","$log","$buttonsSuppressWarning",function(a,b,c){return{require:["btnCheckbox","ngModel"],controller:"ButtonsController",controllerAs:"button",link:function(d,e,f,g){function h(){return j(f.btnCheckboxTrue,!0)}function i(){return j(f.btnCheckboxFalse,!1)}function j(a,b){var c=d.$eval(a);return angular.isDefined(c)?c:b}c||b.warn("btn-checkbox is now deprecated. Use uib-btn-checkbox instead.");var k=g[0],l=g[1];e.find("input").css({display:"none"}),l.$render=function(){e.toggleClass(k.activeClass,angular.equals(l.$modelValue,h()))},e.bind(k.toggleEvent,function(){f.disabled||d.$apply(function(){l.$setViewValue(e.hasClass(k.activeClass)?i():h()),l.$render()})}),e.on("keypress",function(b){f.disabled||32!==b.which||a[0].activeElement!==e[0]||d.$apply(function(){l.$setViewValue(e.hasClass(k.activeClass)?i():h()),l.$render()})})}}}]),angular.module("ui.bootstrap.carousel",[]).controller("UibCarouselController",["$scope","$element","$interval","$animate",function(a,b,c,d){function e(b,c,e){s||(angular.extend(b,{direction:e,active:!0}),angular.extend(m.currentSlide||{},{direction:e,active:!1}),d.enabled()&&!a.noTransition&&!a.$currentTransition&&b.$element&&m.slides.length>1&&(b.$element.data(q,b.direction),m.currentSlide&&m.currentSlide.$element&&m.currentSlide.$element.data(q,b.direction),a.$currentTransition=!0,o?d.on("addClass",b.$element,function(b,c){"close"===c&&(a.$currentTransition=null,d.off("addClass",b))}):b.$element.one("$animate:close",function(){a.$currentTransition=null})),m.currentSlide=b,r=c,g())}function f(a){if(angular.isUndefined(n[a].index))return n[a];var b;n.length;for(b=0;b0&&(k=c(i,b))}function h(){k&&(c.cancel(k),k=null)}function i(){var b=+a.interval;l&&!isNaN(b)&&b>0&&n.length?a.next():a.pause()}function j(b){b.length||(a.$currentTransition=null)}var k,l,m=this,n=m.slides=a.slides=[],o=angular.version.minor>=4,p="uib-noTransition",q="uib-slideDirection",r=-1;m.currentSlide=null;var s=!1;m.select=a.select=function(b,c){var d=a.indexOfSlide(b);void 0===c&&(c=d>m.getCurrentIndex()?"next":"prev"),b&&b!==m.currentSlide&&!a.$currentTransition&&e(b,d,c)},a.$on("$destroy",function(){s=!0}),m.getCurrentIndex=function(){return m.currentSlide&&angular.isDefined(m.currentSlide.index)?+m.currentSlide.index:r},a.indexOfSlide=function(a){return angular.isDefined(a.index)?+a.index:n.indexOf(a)},a.next=function(){var b=(m.getCurrentIndex()+1)%n.length;return 0===b&&a.noWrap()?void a.pause():m.select(f(b),"next")},a.prev=function(){var b=m.getCurrentIndex()-1<0?n.length-1:m.getCurrentIndex()-1;return a.noWrap()&&b===n.length-1?void a.pause():m.select(f(b),"prev")},a.isActive=function(a){return m.currentSlide===a},a.$watch("interval",g),a.$watchCollection("slides",j),a.$on("$destroy",h),a.play=function(){l||(l=!0,g())},a.pause=function(){a.noPause||(l=!1,h())},m.addSlide=function(b,c){b.$element=c,n.push(b),1===n.length||b.active?(m.select(n[n.length-1]),1===n.length&&a.play()):b.active=!1},m.removeSlide=function(a){angular.isDefined(a.index)&&n.sort(function(a,b){return+a.index>+b.index});var b=n.indexOf(a);n.splice(b,1),n.length>0&&a.active?b>=n.length?m.select(n[b-1]):m.select(n[b]):r>b&&r--,0===n.length&&(m.currentSlide=null)},a.$watch("noTransition",function(a){b.data(p,a)})}]).directive("uibCarousel",[function(){return{transclude:!0,replace:!0,controller:"UibCarouselController",controllerAs:"carousel",require:"carousel",templateUrl:function(a,b){return b.templateUrl||"template/carousel/carousel.html"},scope:{interval:"=",noTransition:"=",noPause:"=",noWrap:"&"}}}]).directive("uibSlide",function(){return{require:"^uibCarousel",restrict:"EA",transclude:!0,replace:!0,templateUrl:function(a,b){return b.templateUrl||"template/carousel/slide.html"},scope:{active:"=?",actual:"=?",index:"=?"},link:function(a,b,c,d){d.addSlide(a,b),a.$on("$destroy",function(){d.removeSlide(a)}),a.$watch("active",function(b){b&&d.select(a)})}}}).animation(".item",["$injector","$animate",function(a,b){function c(a,b,c){a.removeClass(b),c&&c()}var d="uib-noTransition",e="uib-slideDirection",f=null;return a.has("$animateCss")&&(f=a.get("$animateCss")),{beforeAddClass:function(a,g,h){if("active"==g&&a.parent()&&a.parent().parent()&&!a.parent().parent().data(d)){var i=!1,j=a.data(e),k="next"==j?"left":"right",l=c.bind(this,a,k+" "+j,h);return a.addClass(j),f?f(a,{addClass:k}).start().done(l):b.addClass(a,k).then(function(){i||l(),h()}),function(){i=!0}}h()},beforeRemoveClass:function(a,g,h){if("active"===g&&a.parent()&&a.parent().parent()&&!a.parent().parent().data(d)){var i=!1,j=a.data(e),k="next"==j?"left":"right",l=c.bind(this,a,k,h);return f?f(a,{addClass:k}).start().done(l):b.addClass(a,k).then(function(){i||l(),h()}),function(){i=!0}}h()}}}]),angular.module("ui.bootstrap.carousel").value("$carouselSuppressWarning",!1).controller("CarouselController",["$scope","$element","$controller","$log","$carouselSuppressWarning",function(a,b,c,d,e){e||d.warn("CarouselController is now deprecated. Use UibCarouselController instead."),angular.extend(this,c("UibCarouselController",{$scope:a,$element:b}))}]).directive("carousel",["$log","$carouselSuppressWarning",function(a,b){return{transclude:!0,replace:!0,controller:"CarouselController",controllerAs:"carousel",require:"carousel",templateUrl:function(a,b){return b.templateUrl||"template/carousel/carousel.html"},scope:{interval:"=",noTransition:"=",noPause:"=",noWrap:"&"},link:function(){b||a.warn("carousel is now deprecated. Use uib-carousel instead.")}}}]).directive("slide",["$log","$carouselSuppressWarning",function(a,b){return{require:"^carousel",transclude:!0,replace:!0,templateUrl:function(a,b){return b.templateUrl||"template/carousel/slide.html"},scope:{active:"=?",actual:"=?",index:"=?"},link:function(c,d,e,f){b||a.warn("slide is now deprecated. Use uib-slide instead."),f.addSlide(c,d),c.$on("$destroy",function(){f.removeSlide(c)}),c.$watch("active",function(a){a&&f.select(c)})}}}]),angular.module("ui.bootstrap.dateparser",[]).service("uibDateParser",["$log","$locale","orderByFilter",function(a,b,c){function d(a){var b=[],d=a.split("");return angular.forEach(g,function(c,e){var f=a.indexOf(e);if(f>-1){a=a.split(""),d[f]="("+c.regex+")",a[f]="$";for(var g=f+1,h=f+e.length;h>g;g++)d[g]="",a[g]="$";a=a.join(""),b.push({index:f,apply:c.apply})}}),{regex:new RegExp("^"+d.join("")+"$"),map:c(b,"index")}}function e(a,b,c){return 1>c?!1:1===b&&c>28?29===c&&(a%4===0&&a%100!==0||a%400===0):3===b||5===b||8===b||10===b?31>c:!0}var f,g,h=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g;this.init=function(){f=b.id,this.parsers={},g={yyyy:{regex:"\\d{4}",apply:function(a){this.year=+a}},yy:{regex:"\\d{2}",apply:function(a){this.year=+a+2e3}},y:{regex:"\\d{1,4}",apply:function(a){this.year=+a}},MMMM:{regex:b.DATETIME_FORMATS.MONTH.join("|"),apply:function(a){this.month=b.DATETIME_FORMATS.MONTH.indexOf(a)}},MMM:{regex:b.DATETIME_FORMATS.SHORTMONTH.join("|"),apply:function(a){this.month=b.DATETIME_FORMATS.SHORTMONTH.indexOf(a)}},MM:{regex:"0[1-9]|1[0-2]",apply:function(a){this.month=a-1}},M:{regex:"[1-9]|1[0-2]",apply:function(a){this.month=a-1}},dd:{regex:"[0-2][0-9]{1}|3[0-1]{1}",apply:function(a){this.date=+a}},d:{regex:"[1-2]?[0-9]{1}|3[0-1]{1}",apply:function(a){this.date=+a}},EEEE:{regex:b.DATETIME_FORMATS.DAY.join("|")},EEE:{regex:b.DATETIME_FORMATS.SHORTDAY.join("|")},HH:{regex:"(?:0|1)[0-9]|2[0-3]",apply:function(a){this.hours=+a}},hh:{regex:"0[0-9]|1[0-2]",apply:function(a){this.hours=+a}},H:{regex:"1?[0-9]|2[0-3]",apply:function(a){this.hours=+a}},h:{regex:"[0-9]|1[0-2]",apply:function(a){this.hours=+a}},mm:{regex:"[0-5][0-9]",apply:function(a){this.minutes=+a}},m:{regex:"[0-9]|[1-5][0-9]",apply:function(a){this.minutes=+a}},sss:{regex:"[0-9][0-9][0-9]",apply:function(a){this.milliseconds=+a}},ss:{regex:"[0-5][0-9]",apply:function(a){this.seconds=+a}},s:{regex:"[0-9]|[1-5][0-9]",apply:function(a){this.seconds=+a}},a:{regex:b.DATETIME_FORMATS.AMPMS.join("|"),apply:function(a){12===this.hours&&(this.hours=0),"PM"===a&&(this.hours+=12)}}}},this.init(),this.parse=function(c,g,i){if(!angular.isString(c)||!g)return c;g=b.DATETIME_FORMATS[g]||g,g=g.replace(h,"\\$&"),b.id!==f&&this.init(),this.parsers[g]||(this.parsers[g]=d(g));var j=this.parsers[g],k=j.regex,l=j.map,m=c.match(k);if(m&&m.length){var n,o;angular.isDate(i)&&!isNaN(i.getTime())?n={year:i.getFullYear(),month:i.getMonth(),date:i.getDate(),hours:i.getHours(),minutes:i.getMinutes(),seconds:i.getSeconds(),milliseconds:i.getMilliseconds()}:(i&&a.warn("dateparser:","baseDate is not a valid date"),n={year:1900,month:0,date:1,hours:0,minutes:0,seconds:0,milliseconds:0});for(var p=1,q=m.length;q>p;p++){var r=l[p-1];r.apply&&r.apply.call(n,m[p])}return e(n.year,n.month,n.date)&&(angular.isDate(i)&&!isNaN(i.getTime())?(o=new Date(i),o.setFullYear(n.year,n.month,n.date,n.hours,n.minutes,n.seconds,n.milliseconds||0)):o=new Date(n.year,n.month,n.date,n.hours,n.minutes,n.seconds,n.milliseconds||0)),o}}}]),angular.module("ui.bootstrap.dateparser").value("$dateParserSuppressWarning",!1).service("dateParser",["$log","$dateParserSuppressWarning","uibDateParser",function(a,b,c){b||a.warn("dateParser is now deprecated. Use uibDateParser instead."),angular.extend(this,c)}]),angular.module("ui.bootstrap.position",[]).factory("$uibPosition",["$document","$window",function(a,b){function c(a,c){return a.currentStyle?a.currentStyle[c]:b.getComputedStyle?b.getComputedStyle(a)[c]:a.style[c]}function d(a){return"static"===(c(a,"position")||"static")}var e=function(b){for(var c=a[0],e=b.offsetParent||c;e&&e!==c&&d(e);)e=e.offsetParent;return e||c};return{position:function(b){var c=this.offset(b),d={top:0,left:0},f=e(b[0]);f!=a[0]&&(d=this.offset(angular.element(f)),d.top+=f.clientTop-f.scrollTop,d.left+=f.clientLeft-f.scrollLeft);var g=b[0].getBoundingClientRect();return{width:g.width||b.prop("offsetWidth"),height:g.height||b.prop("offsetHeight"),top:c.top-d.top,left:c.left-d.left}},offset:function(c){var d=c[0].getBoundingClientRect();return{width:d.width||c.prop("offsetWidth"),height:d.height||c.prop("offsetHeight"),top:d.top+(b.pageYOffset||a[0].documentElement.scrollTop),left:d.left+(b.pageXOffset||a[0].documentElement.scrollLeft)}},positionElements:function(a,b,c,d){var e,f,g,h,i=c.split("-"),j=i[0],k=i[1]||"center";e=d?this.offset(a):this.position(a),f=b.prop("offsetWidth"),g=b.prop("offsetHeight");var l={center:function(){return e.left+e.width/2-f/2},left:function(){return e.left},right:function(){return e.left+e.width}},m={center:function(){return e.top+e.height/2-g/2},top:function(){return e.top},bottom:function(){return e.top+e.height}};switch(j){case"right":h={top:m[k](),left:l[j]()};break;case"left":h={top:m[k](),left:e.left-f};break;case"bottom":h={top:m[j](),left:l[k]()};break;default:h={top:e.top-g,left:l[k]()}}return h}}}]),angular.module("ui.bootstrap.position").value("$positionSuppressWarning",!1).service("$position",["$log","$positionSuppressWarning","$uibPosition",function(a,b,c){b||a.warn("$position is now deprecated. Use $uibPosition instead."),angular.extend(this,c)}]),angular.module("ui.bootstrap.datepicker",["ui.bootstrap.dateparser","ui.bootstrap.position"]).value("$datepickerSuppressError",!1).constant("uibDatepickerConfig",{formatDay:"dd",formatMonth:"MMMM",formatYear:"yyyy",formatDayHeader:"EEE",formatDayTitle:"MMMM yyyy",formatMonthTitle:"yyyy",datepickerMode:"day",minMode:"day",maxMode:"year",showWeeks:!0,startingDay:0,yearRange:20,minDate:null,maxDate:null,shortcutPropagation:!1}).controller("UibDatepickerController",["$scope","$attrs","$parse","$interpolate","$log","dateFilter","uibDatepickerConfig","$datepickerSuppressError",function(a,b,c,d,e,f,g,h){var i=this,j={$setViewValue:angular.noop};this.modes=["day","month","year"],angular.forEach(["formatDay","formatMonth","formatYear","formatDayHeader","formatDayTitle","formatMonthTitle","showWeeks","startingDay","yearRange","shortcutPropagation"],function(c,e){i[c]=angular.isDefined(b[c])?6>e?d(b[c])(a.$parent):a.$parent.$eval(b[c]):g[c]}),angular.forEach(["minDate","maxDate"],function(d){b[d]?a.$parent.$watch(c(b[d]),function(a){i[d]=a?new Date(a):null,i.refreshView()}):i[d]=g[d]?new Date(g[d]):null}),angular.forEach(["minMode","maxMode"],function(d){b[d]?a.$parent.$watch(c(b[d]),function(c){i[d]=angular.isDefined(c)?c:b[d],a[d]=i[d],("minMode"==d&&i.modes.indexOf(a.datepickerMode)i.modes.indexOf(i[d]))&&(a.datepickerMode=i[d])}):(i[d]=g[d]||null,a[d]=i[d])}),a.datepickerMode=a.datepickerMode||g.datepickerMode,a.uniqueId="datepicker-"+a.$id+"-"+Math.floor(1e4*Math.random()),angular.isDefined(b.initDate)?(this.activeDate=a.$parent.$eval(b.initDate)||new Date,a.$parent.$watch(b.initDate,function(a){a&&(j.$isEmpty(j.$modelValue)||j.$invalid)&&(i.activeDate=a,i.refreshView())})):this.activeDate=new Date,a.isActive=function(b){return 0===i.compare(b.date,i.activeDate)?(a.activeDateId=b.uid,!0):!1},this.init=function(a){j=a,j.$render=function(){i.render()}},this.render=function(){if(j.$viewValue){var a=new Date(j.$viewValue),b=!isNaN(a);b?this.activeDate=a:h||e.error('Datepicker directive: "ng-model" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.')}this.refreshView()},this.refreshView=function(){if(this.element){this._refreshView();var a=j.$viewValue?new Date(j.$viewValue):null;j.$setValidity("dateDisabled",!a||this.element&&!this.isDisabled(a))}},this.createDateObject=function(a,b){var c=j.$viewValue?new Date(j.$viewValue):null;return{date:a,label:f(a,b),selected:c&&0===this.compare(a,c),disabled:this.isDisabled(a),current:0===this.compare(a,new Date),customClass:this.customClass(a)}},this.isDisabled=function(c){return this.minDate&&this.compare(c,this.minDate)<0||this.maxDate&&this.compare(c,this.maxDate)>0||b.dateDisabled&&a.dateDisabled({date:c,mode:a.datepickerMode})},this.customClass=function(b){return a.customClass({date:b,mode:a.datepickerMode})},this.split=function(a,b){for(var c=[];a.length>0;)c.push(a.splice(0,b));return c},a.select=function(b){if(a.datepickerMode===i.minMode){var c=j.$viewValue?new Date(j.$viewValue):new Date(0,0,0,0,0,0,0);c.setFullYear(b.getFullYear(),b.getMonth(),b.getDate()),j.$setViewValue(c),j.$render()}else i.activeDate=b,a.datepickerMode=i.modes[i.modes.indexOf(a.datepickerMode)-1]},a.move=function(a){var b=i.activeDate.getFullYear()+a*(i.step.years||0),c=i.activeDate.getMonth()+a*(i.step.months||0);i.activeDate.setFullYear(b,c,1),i.refreshView()},a.toggleMode=function(b){b=b||1,a.datepickerMode===i.maxMode&&1===b||a.datepickerMode===i.minMode&&-1===b||(a.datepickerMode=i.modes[i.modes.indexOf(a.datepickerMode)+b])},a.keys={13:"enter",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down"};var k=function(){i.element[0].focus()};a.$on("uib:datepicker.focus",k),a.keydown=function(b){var c=a.keys[b.which];if(c&&!b.shiftKey&&!b.altKey)if(b.preventDefault(),i.shortcutPropagation||b.stopPropagation(),"enter"===c||"space"===c){if(i.isDisabled(i.activeDate))return;a.select(i.activeDate)}else!b.ctrlKey||"up"!==c&&"down"!==c?(i.handleKeyDown(c,b),i.refreshView()):a.toggleMode("up"===c?1:-1)}}]).controller("UibDaypickerController",["$scope","$element","dateFilter",function(a,b,c){function d(a,b){return 1!==b||a%4!==0||a%100===0&&a%400!==0?f[b]:29}function e(a){var b=new Date(a);b.setDate(b.getDate()+4-(b.getDay()||7));var c=b.getTime();return b.setMonth(0),b.setDate(1),Math.floor(Math.round((c-b)/864e5)/7)+1}var f=[31,28,31,30,31,30,31,31,30,31,30,31];this.step={months:1},this.element=b,this.init=function(b){angular.extend(b,this),a.showWeeks=b.showWeeks,b.refreshView()},this.getDates=function(a,b){for(var c,d=new Array(b),e=new Date(a),f=0;b>f;)c=new Date(e),d[f++]=c,e.setDate(e.getDate()+1);return d},this._refreshView=function(){var b=this.activeDate.getFullYear(),d=this.activeDate.getMonth(),f=new Date(this.activeDate);f.setFullYear(b,d,1);var g=this.startingDay-f.getDay(),h=g>0?7-g:-g,i=new Date(f);h>0&&i.setDate(-h+1);for(var j=this.getDates(i,42),k=0;42>k;k++)j[k]=angular.extend(this.createDateObject(j[k],this.formatDay),{secondary:j[k].getMonth()!==d,uid:a.uniqueId+"-"+k});a.labels=new Array(7);for(var l=0;7>l;l++)a.labels[l]={abbr:c(j[l].date,this.formatDayHeader),full:c(j[l].date,"EEEE")};if(a.title=c(this.activeDate,this.formatDayTitle),a.rows=this.split(j,7),a.showWeeks){a.weekNumbers=[];for(var m=(11-this.startingDay)%7,n=a.rows.length,o=0;n>o;o++)a.weekNumbers.push(e(a.rows[o][m].date))}},this.compare=function(a,b){return new Date(a.getFullYear(),a.getMonth(),a.getDate())-new Date(b.getFullYear(),b.getMonth(),b.getDate())},this.handleKeyDown=function(a,b){var c=this.activeDate.getDate();if("left"===a)c-=1;else if("up"===a)c-=7;else if("right"===a)c+=1;else if("down"===a)c+=7;else if("pageup"===a||"pagedown"===a){var e=this.activeDate.getMonth()+("pageup"===a?-1:1);this.activeDate.setMonth(e,1),c=Math.min(d(this.activeDate.getFullYear(),this.activeDate.getMonth()),c)}else"home"===a?c=1:"end"===a&&(c=d(this.activeDate.getFullYear(),this.activeDate.getMonth()));this.activeDate.setDate(c)}}]).controller("UibMonthpickerController",["$scope","$element","dateFilter",function(a,b,c){this.step={years:1},this.element=b,this.init=function(a){angular.extend(a,this),a.refreshView()},this._refreshView=function(){for(var b,d=new Array(12),e=this.activeDate.getFullYear(),f=0;12>f;f++)b=new Date(this.activeDate),b.setFullYear(e,f,1),d[f]=angular.extend(this.createDateObject(b,this.formatMonth),{uid:a.uniqueId+"-"+f});a.title=c(this.activeDate,this.formatMonthTitle),a.rows=this.split(d,3)},this.compare=function(a,b){return new Date(a.getFullYear(),a.getMonth())-new Date(b.getFullYear(),b.getMonth())},this.handleKeyDown=function(a,b){var c=this.activeDate.getMonth();if("left"===a)c-=1;else if("up"===a)c-=3;else if("right"===a)c+=1;else if("down"===a)c+=3;else if("pageup"===a||"pagedown"===a){var d=this.activeDate.getFullYear()+("pageup"===a?-1:1);this.activeDate.setFullYear(d)}else"home"===a?c=0:"end"===a&&(c=11);this.activeDate.setMonth(c)}}]).controller("UibYearpickerController",["$scope","$element","dateFilter",function(a,b,c){function d(a){return parseInt((a-1)/e,10)*e+1}var e;this.element=b,this.yearpickerInit=function(){e=this.yearRange,this.step={years:e}},this._refreshView=function(){for(var b,c=new Array(e),f=0,g=d(this.activeDate.getFullYear());e>f;f++)b=new Date(this.activeDate),b.setFullYear(g+f,0,1),c[f]=angular.extend(this.createDateObject(b,this.formatYear),{uid:a.uniqueId+"-"+f});a.title=[c[0].label,c[e-1].label].join(" - "),a.rows=this.split(c,5)},this.compare=function(a,b){return a.getFullYear()-b.getFullYear()},this.handleKeyDown=function(a,b){var c=this.activeDate.getFullYear();"left"===a?c-=1:"up"===a?c-=5:"right"===a?c+=1:"down"===a?c+=5:"pageup"===a||"pagedown"===a?c+=("pageup"===a?-1:1)*this.step.years:"home"===a?c=d(this.activeDate.getFullYear()):"end"===a&&(c=d(this.activeDate.getFullYear())+e-1),this.activeDate.setFullYear(c)}}]).directive("uibDatepicker",function(){return{replace:!0,templateUrl:function(a,b){return b.templateUrl||"template/datepicker/datepicker.html"},scope:{datepickerMode:"=?",dateDisabled:"&",customClass:"&",shortcutPropagation:"&?"},require:["uibDatepicker","^ngModel"],controller:"UibDatepickerController",controllerAs:"datepicker",link:function(a,b,c,d){var e=d[0],f=d[1];e.init(f)}}}).directive("uibDaypicker",function(){return{replace:!0,templateUrl:function(a,b){return b.templateUrl||"template/datepicker/day.html"},require:["^?uibDatepicker","uibDaypicker","^?datepicker"],controller:"UibDaypickerController",link:function(a,b,c,d){var e=d[0]||d[2],f=d[1];f.init(e)}}}).directive("uibMonthpicker",function(){return{replace:!0,templateUrl:function(a,b){return b.templateUrl||"template/datepicker/month.html"},require:["^?uibDatepicker","uibMonthpicker","^?datepicker"],controller:"UibMonthpickerController",link:function(a,b,c,d){var e=d[0]||d[2],f=d[1];f.init(e)}}}).directive("uibYearpicker",function(){return{replace:!0,templateUrl:function(a,b){return b.templateUrl||"template/datepicker/year.html"},require:["^?uibDatepicker","uibYearpicker","^?datepicker"],controller:"UibYearpickerController",link:function(a,b,c,d){var e=d[0]||d[2];angular.extend(e,d[1]),e.yearpickerInit(),e.refreshView()}}}).constant("uibDatepickerPopupConfig",{datepickerPopup:"yyyy-MM-dd",datepickerPopupTemplateUrl:"template/datepicker/popup.html",datepickerTemplateUrl:"template/datepicker/datepicker.html",html5Types:{date:"yyyy-MM-dd","datetime-local":"yyyy-MM-ddTHH:mm:ss.sss",month:"yyyy-MM"},currentText:"Today",clearText:"Clear",closeText:"Done",closeOnDateSelection:!0,appendToBody:!1,showButtonBar:!0,onOpenFocus:!0}).controller("UibDatepickerPopupController",["$scope","$element","$attrs","$compile","$parse","$document","$rootScope","$uibPosition","dateFilter","uibDateParser","uibDatepickerPopupConfig","$timeout",function(a,b,c,d,e,f,g,h,i,j,k,l){ +function m(a){return a.replace(/([A-Z])/g,function(a){return"-"+a.toLowerCase()})}function n(b){if(angular.isNumber(b)&&(b=new Date(b)),b){if(angular.isDate(b)&&!isNaN(b))return b;if(angular.isString(b)){var c=j.parse(b,r,a.date);return isNaN(c)?void 0:c}return void 0}return null}function o(a,b){var d=a||b;if(!c.ngRequired&&!d)return!0;if(angular.isNumber(d)&&(d=new Date(d)),d){if(angular.isDate(d)&&!isNaN(d))return!0;if(angular.isString(d)){var e=j.parse(d,r);return!isNaN(e)}return!1}return!0}function p(c){var d=A[0],e=b[0].contains(c.target),f=void 0!==d.contains&&d.contains(c.target);!a.isOpen||e||f||a.$apply(function(){a.isOpen=!1})}function q(c){27===c.which&&a.isOpen?(c.preventDefault(),c.stopPropagation(),a.$apply(function(){a.isOpen=!1}),b[0].focus()):40!==c.which||a.isOpen||(c.preventDefault(),c.stopPropagation(),a.$apply(function(){a.isOpen=!0}))}var r,s,t,u,v,w,x,y,z,A,B={},C=!1;a.watchData={},this.init=function(h){if(z=h,s=angular.isDefined(c.closeOnDateSelection)?a.$parent.$eval(c.closeOnDateSelection):k.closeOnDateSelection,t=angular.isDefined(c.datepickerAppendToBody)?a.$parent.$eval(c.datepickerAppendToBody):k.appendToBody,u=angular.isDefined(c.onOpenFocus)?a.$parent.$eval(c.onOpenFocus):k.onOpenFocus,v=angular.isDefined(c.datepickerPopupTemplateUrl)?c.datepickerPopupTemplateUrl:k.datepickerPopupTemplateUrl,w=angular.isDefined(c.datepickerTemplateUrl)?c.datepickerTemplateUrl:k.datepickerTemplateUrl,a.showButtonBar=angular.isDefined(c.showButtonBar)?a.$parent.$eval(c.showButtonBar):k.showButtonBar,k.html5Types[c.type]?(r=k.html5Types[c.type],C=!0):(r=c.datepickerPopup||c.uibDatepickerPopup||k.datepickerPopup,c.$observe("uibDatepickerPopup",function(a,b){var c=a||k.datepickerPopup;if(c!==r&&(r=c,z.$modelValue=null,!r))throw new Error("uibDatepickerPopup must have a date format specified.")})),!r)throw new Error("uibDatepickerPopup must have a date format specified.");if(C&&c.datepickerPopup)throw new Error("HTML5 date input types do not support custom formats.");if(x=angular.element("
      "),x.attr({"ng-model":"date","ng-change":"dateSelection(date)","template-url":v}),y=angular.element(x.children()[0]),y.attr("template-url",w),C&&"month"===c.type&&(y.attr("datepicker-mode",'"month"'),y.attr("min-mode","month")),c.datepickerOptions){var l=a.$parent.$eval(c.datepickerOptions);l&&l.initDate&&(a.initDate=l.initDate,y.attr("init-date","initDate"),delete l.initDate),angular.forEach(l,function(a,b){y.attr(m(b),a)})}angular.forEach(["minMode","maxMode","minDate","maxDate","datepickerMode","initDate","shortcutPropagation"],function(b){if(c[b]){var d=e(c[b]);if(a.$parent.$watch(d,function(c){a.watchData[b]=c,("minDate"===b||"maxDate"===b)&&(B[b]=new Date(c))}),y.attr(m(b),"watchData."+b),"datepickerMode"===b){var f=d.assign;a.$watch("watchData."+b,function(b,c){angular.isFunction(f)&&b!==c&&f(a.$parent,b)})}}}),c.dateDisabled&&y.attr("date-disabled","dateDisabled({ date: date, mode: mode })"),c.showWeeks&&y.attr("show-weeks",c.showWeeks),c.customClass&&y.attr("custom-class","customClass({ date: date, mode: mode })"),C?z.$formatters.push(function(b){return a.date=b,b}):(z.$$parserName="date",z.$validators.date=o,z.$parsers.unshift(n),z.$formatters.push(function(b){return a.date=b,z.$isEmpty(b)?b:i(b,r)})),z.$viewChangeListeners.push(function(){a.date=j.parse(z.$viewValue,r,a.date)}),b.bind("keydown",q),A=d(x)(a),x.remove(),t?f.find("body").append(A):b.after(A),a.$on("$destroy",function(){a.isOpen===!0&&(g.$$phase||a.$apply(function(){a.isOpen=!1})),A.remove(),b.unbind("keydown",q),f.unbind("click",p)})},a.getText=function(b){return a[b+"Text"]||k[b+"Text"]},a.isDisabled=function(b){return"today"===b&&(b=new Date),a.watchData.minDate&&a.compare(b,B.minDate)<0||a.watchData.maxDate&&a.compare(b,B.maxDate)>0},a.compare=function(a,b){return new Date(a.getFullYear(),a.getMonth(),a.getDate())-new Date(b.getFullYear(),b.getMonth(),b.getDate())},a.dateSelection=function(c){angular.isDefined(c)&&(a.date=c);var d=a.date?i(a.date,r):null;b.val(d),z.$setViewValue(d),s&&(a.isOpen=!1,b[0].focus())},a.keydown=function(c){27===c.which&&(a.isOpen=!1,b[0].focus())},a.select=function(b){if("today"===b){var c=new Date;angular.isDate(a.date)?(b=new Date(a.date),b.setFullYear(c.getFullYear(),c.getMonth(),c.getDate())):b=new Date(c.setHours(0,0,0,0))}a.dateSelection(b)},a.close=function(){a.isOpen=!1,b[0].focus()},a.$watch("isOpen",function(c){c?(a.position=t?h.offset(b):h.position(b),a.position.top=a.position.top+b.prop("offsetHeight"),l(function(){u&&a.$broadcast("uib:datepicker.focus"),f.bind("click",p)},0,!1)):f.unbind("click",p)})}]).directive("uibDatepickerPopup",function(){return{require:["ngModel","uibDatepickerPopup"],controller:"UibDatepickerPopupController",scope:{isOpen:"=?",currentText:"@",clearText:"@",closeText:"@",dateDisabled:"&",customClass:"&"},link:function(a,b,c,d){var e=d[0],f=d[1];f.init(e)}}}).directive("uibDatepickerPopupWrap",function(){return{replace:!0,transclude:!0,templateUrl:function(a,b){return b.templateUrl||"template/datepicker/popup.html"}}}),angular.module("ui.bootstrap.datepicker").value("$datepickerSuppressWarning",!1).controller("DatepickerController",["$scope","$attrs","$parse","$interpolate","$log","dateFilter","uibDatepickerConfig","$datepickerSuppressError","$datepickerSuppressWarning",function(a,b,c,d,e,f,g,h,i){i||e.warn("DatepickerController is now deprecated. Use UibDatepickerController instead.");var j=this,k={$setViewValue:angular.noop};this.modes=["day","month","year"],angular.forEach(["formatDay","formatMonth","formatYear","formatDayHeader","formatDayTitle","formatMonthTitle","showWeeks","startingDay","yearRange","shortcutPropagation"],function(c,e){j[c]=angular.isDefined(b[c])?6>e?d(b[c])(a.$parent):a.$parent.$eval(b[c]):g[c]}),angular.forEach(["minDate","maxDate"],function(d){b[d]?a.$parent.$watch(c(b[d]),function(a){j[d]=a?new Date(a):null,j.refreshView()}):j[d]=g[d]?new Date(g[d]):null}),angular.forEach(["minMode","maxMode"],function(d){b[d]?a.$parent.$watch(c(b[d]),function(c){j[d]=angular.isDefined(c)?c:b[d],a[d]=j[d],("minMode"==d&&j.modes.indexOf(a.datepickerMode)j.modes.indexOf(j[d]))&&(a.datepickerMode=j[d])}):(j[d]=g[d]||null,a[d]=j[d])}),a.datepickerMode=a.datepickerMode||g.datepickerMode,a.uniqueId="datepicker-"+a.$id+"-"+Math.floor(1e4*Math.random()),angular.isDefined(b.initDate)?(this.activeDate=a.$parent.$eval(b.initDate)||new Date,a.$parent.$watch(b.initDate,function(a){a&&(k.$isEmpty(k.$modelValue)||k.$invalid)&&(j.activeDate=a,j.refreshView())})):this.activeDate=new Date,a.isActive=function(b){return 0===j.compare(b.date,j.activeDate)?(a.activeDateId=b.uid,!0):!1},this.init=function(a){k=a,k.$render=function(){j.render()}},this.render=function(){if(k.$viewValue){var a=new Date(k.$viewValue),b=!isNaN(a);b?this.activeDate=a:h||e.error('Datepicker directive: "ng-model" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.')}this.refreshView()},this.refreshView=function(){if(this.element){this._refreshView();var a=k.$viewValue?new Date(k.$viewValue):null;k.$setValidity("dateDisabled",!a||this.element&&!this.isDisabled(a))}},this.createDateObject=function(a,b){var c=k.$viewValue?new Date(k.$viewValue):null;return{date:a,label:f(a,b),selected:c&&0===this.compare(a,c),disabled:this.isDisabled(a),current:0===this.compare(a,new Date),customClass:this.customClass(a)}},this.isDisabled=function(c){return this.minDate&&this.compare(c,this.minDate)<0||this.maxDate&&this.compare(c,this.maxDate)>0||b.dateDisabled&&a.dateDisabled({date:c,mode:a.datepickerMode})},this.customClass=function(b){return a.customClass({date:b,mode:a.datepickerMode})},this.split=function(a,b){for(var c=[];a.length>0;)c.push(a.splice(0,b));return c},this.fixTimeZone=function(a){var b=a.getHours();a.setHours(23===b?b+2:0)},a.select=function(b){if(a.datepickerMode===j.minMode){var c=k.$viewValue?new Date(k.$viewValue):new Date(0,0,0,0,0,0,0);c.setFullYear(b.getFullYear(),b.getMonth(),b.getDate()),k.$setViewValue(c),k.$render()}else j.activeDate=b,a.datepickerMode=j.modes[j.modes.indexOf(a.datepickerMode)-1]},a.move=function(a){var b=j.activeDate.getFullYear()+a*(j.step.years||0),c=j.activeDate.getMonth()+a*(j.step.months||0);j.activeDate.setFullYear(b,c,1),j.refreshView()},a.toggleMode=function(b){b=b||1,a.datepickerMode===j.maxMode&&1===b||a.datepickerMode===j.minMode&&-1===b||(a.datepickerMode=j.modes[j.modes.indexOf(a.datepickerMode)+b])},a.keys={13:"enter",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down"};var l=function(){j.element[0].focus()};a.$on("uib:datepicker.focus",l),a.keydown=function(b){var c=a.keys[b.which];if(c&&!b.shiftKey&&!b.altKey)if(b.preventDefault(),j.shortcutPropagation||b.stopPropagation(),"enter"===c||"space"===c){if(j.isDisabled(j.activeDate))return;a.select(j.activeDate)}else!b.ctrlKey||"up"!==c&&"down"!==c?(j.handleKeyDown(c,b),j.refreshView()):a.toggleMode("up"===c?1:-1)}}]).directive("datepicker",["$log","$datepickerSuppressWarning",function(a,b){return{replace:!0,templateUrl:function(a,b){return b.templateUrl||"template/datepicker/datepicker.html"},scope:{datepickerMode:"=?",dateDisabled:"&",customClass:"&",shortcutPropagation:"&?"},require:["datepicker","^ngModel"],controller:"DatepickerController",controllerAs:"datepicker",link:function(c,d,e,f){b||a.warn("datepicker is now deprecated. Use uib-datepicker instead.");var g=f[0],h=f[1];g.init(h)}}}]).directive("daypicker",["$log","$datepickerSuppressWarning",function(a,b){return{replace:!0,templateUrl:"template/datepicker/day.html",require:["^datepicker","daypicker"],controller:"UibDaypickerController",link:function(c,d,e,f){b||a.warn("daypicker is now deprecated. Use uib-daypicker instead.");var g=f[0],h=f[1];h.init(g)}}}]).directive("monthpicker",["$log","$datepickerSuppressWarning",function(a,b){return{replace:!0,templateUrl:"template/datepicker/month.html",require:["^datepicker","monthpicker"],controller:"UibMonthpickerController",link:function(c,d,e,f){b||a.warn("monthpicker is now deprecated. Use uib-monthpicker instead.");var g=f[0],h=f[1];h.init(g)}}}]).directive("yearpicker",["$log","$datepickerSuppressWarning",function(a,b){return{replace:!0,templateUrl:"template/datepicker/year.html",require:["^datepicker","yearpicker"],controller:"UibYearpickerController",link:function(c,d,e,f){b||a.warn("yearpicker is now deprecated. Use uib-yearpicker instead.");var g=f[0];angular.extend(g,f[1]),g.yearpickerInit(),g.refreshView()}}}]).directive("datepickerPopup",["$log","$datepickerSuppressWarning",function(a,b){return{require:["ngModel","datepickerPopup"],controller:"UibDatepickerPopupController",scope:{isOpen:"=?",currentText:"@",clearText:"@",closeText:"@",dateDisabled:"&",customClass:"&"},link:function(c,d,e,f){b||a.warn("datepicker-popup is now deprecated. Use uib-datepicker-popup instead.");var g=f[0],h=f[1];h.init(g)}}}]).directive("datepickerPopupWrap",["$log","$datepickerSuppressWarning",function(a,b){return{replace:!0,transclude:!0,templateUrl:function(a,b){return b.templateUrl||"template/datepicker/popup.html"},link:function(){b||a.warn("datepicker-popup-wrap is now deprecated. Use uib-datepicker-popup-wrap instead.")}}}]),angular.module("ui.bootstrap.dropdown",["ui.bootstrap.position"]).constant("uibDropdownConfig",{openClass:"open"}).service("uibDropdownService",["$document","$rootScope",function(a,b){var c=null;this.open=function(b){c||(a.bind("click",d),a.bind("keydown",e)),c&&c!==b&&(c.isOpen=!1),c=b},this.close=function(b){c===b&&(c=null,a.unbind("click",d),a.unbind("keydown",e))};var d=function(a){if(c&&(!a||"disabled"!==c.getAutoClose())){var d=c.getToggleElement();if(!(a&&d&&d[0].contains(a.target))){var e=c.getDropdownElement();a&&"outsideClick"===c.getAutoClose()&&e&&e[0].contains(a.target)||(c.isOpen=!1,b.$$phase||c.$apply())}}},e=function(a){27===a.which?(c.focusToggleElement(),d()):c.isKeynavEnabled()&&/(38|40)/.test(a.which)&&c.isOpen&&(a.preventDefault(),a.stopPropagation(),c.focusDropdownEntry(a.which))}}]).controller("UibDropdownController",["$scope","$element","$attrs","$parse","uibDropdownConfig","uibDropdownService","$animate","$uibPosition","$document","$compile","$templateRequest",function(a,b,c,d,e,f,g,h,i,j,k){var l,m,n=this,o=a.$new(),p=e.openClass,q=angular.noop,r=c.onToggle?d(c.onToggle):angular.noop,s=!1,t=!1;b.addClass("dropdown"),this.init=function(){c.isOpen&&(m=d(c.isOpen),q=m.assign,a.$watch(m,function(a){o.isOpen=!!a})),s=angular.isDefined(c.dropdownAppendToBody),t=angular.isDefined(c.uibKeyboardNav),s&&n.dropdownMenu&&(i.find("body").append(n.dropdownMenu),b.on("$destroy",function(){n.dropdownMenu.remove()}))},this.toggle=function(a){return o.isOpen=arguments.length?!!a:!o.isOpen},this.isOpen=function(){return o.isOpen},o.getToggleElement=function(){return n.toggleElement},o.getAutoClose=function(){return c.autoClose||"always"},o.getElement=function(){return b},o.isKeynavEnabled=function(){return t},o.focusDropdownEntry=function(a){var c=n.dropdownMenu?angular.element(n.dropdownMenu).find("a"):angular.element(b).find("ul").eq(0).find("a");switch(a){case 40:angular.isNumber(n.selectedOption)?n.selectedOption=n.selectedOption===c.length-1?n.selectedOption:n.selectedOption+1:n.selectedOption=0;break;case 38:angular.isNumber(n.selectedOption)?n.selectedOption=0===n.selectedOption?0:n.selectedOption-1:n.selectedOption=c.length-1}c[n.selectedOption].focus()},o.getDropdownElement=function(){return n.dropdownMenu},o.focusToggleElement=function(){n.toggleElement&&n.toggleElement[0].focus()},o.$watch("isOpen",function(c,d){if(s&&n.dropdownMenu){var e=h.positionElements(b,n.dropdownMenu,"bottom-left",!0),i={top:e.top+"px",display:c?"block":"none"},m=n.dropdownMenu.hasClass("dropdown-menu-right");m?(i.left="auto",i.right=window.innerWidth-(e.left+b.prop("offsetWidth"))+"px"):(i.left=e.left+"px",i.right="auto"),n.dropdownMenu.css(i)}if(g[c?"addClass":"removeClass"](b,p).then(function(){angular.isDefined(c)&&c!==d&&r(a,{open:!!c})}),c)n.dropdownMenuTemplateUrl&&k(n.dropdownMenuTemplateUrl).then(function(a){l=o.$new(),j(a.trim())(l,function(a){var b=a;n.dropdownMenu.replaceWith(b),n.dropdownMenu=b})}),o.focusToggleElement(),f.open(o);else{if(n.dropdownMenuTemplateUrl){l&&l.$destroy();var t=angular.element('');n.dropdownMenu.replaceWith(t),n.dropdownMenu=t}f.close(o),n.selectedOption=null}angular.isFunction(q)&&q(a,c)}),a.$on("$locationChangeSuccess",function(){"disabled"!==o.getAutoClose()&&(o.isOpen=!1)});var u=a.$on("$destroy",function(){o.$destroy()});o.$on("$destroy",u)}]).directive("uibDropdown",function(){return{controller:"UibDropdownController",link:function(a,b,c,d){d.init()}}}).directive("uibDropdownMenu",function(){return{restrict:"AC",require:"?^uibDropdown",link:function(a,b,c,d){if(d&&!angular.isDefined(c.dropdownNested)){b.addClass("dropdown-menu");var e=c.templateUrl;e&&(d.dropdownMenuTemplateUrl=e),d.dropdownMenu||(d.dropdownMenu=b)}}}}).directive("uibKeyboardNav",function(){return{restrict:"A",require:"?^uibDropdown",link:function(a,b,c,d){b.bind("keydown",function(a){if(-1!==[38,40].indexOf(a.which)){a.preventDefault(),a.stopPropagation();var b=d.dropdownMenu.find("a");switch(a.which){case 40:angular.isNumber(d.selectedOption)?d.selectedOption=d.selectedOption===b.length-1?d.selectedOption:d.selectedOption+1:d.selectedOption=0;break;case 38:angular.isNumber(d.selectedOption)?d.selectedOption=0===d.selectedOption?0:d.selectedOption-1:d.selectedOption=b.length-1}b[d.selectedOption].focus()}})}}}).directive("uibDropdownToggle",function(){return{require:"?^uibDropdown",link:function(a,b,c,d){if(d){b.addClass("dropdown-toggle"),d.toggleElement=b;var e=function(e){e.preventDefault(),b.hasClass("disabled")||c.disabled||a.$apply(function(){d.toggle()})};b.bind("click",e),b.attr({"aria-haspopup":!0,"aria-expanded":!1}),a.$watch(d.isOpen,function(a){b.attr("aria-expanded",!!a)}),a.$on("$destroy",function(){b.unbind("click",e)})}}}}),angular.module("ui.bootstrap.dropdown").value("$dropdownSuppressWarning",!1).service("dropdownService",["$log","$dropdownSuppressWarning","uibDropdownService",function(a,b,c){b||a.warn("dropdownService is now deprecated. Use uibDropdownService instead."),angular.extend(this,c)}]).controller("DropdownController",["$scope","$element","$attrs","$parse","uibDropdownConfig","uibDropdownService","$animate","$uibPosition","$document","$compile","$templateRequest","$log","$dropdownSuppressWarning",function(a,b,c,d,e,f,g,h,i,j,k,l,m){m||l.warn("DropdownController is now deprecated. Use UibDropdownController instead.");var n,o,p=this,q=a.$new(),r=e.openClass,s=angular.noop,t=c.onToggle?d(c.onToggle):angular.noop,u=!1,v=!1;b.addClass("dropdown"),this.init=function(){c.isOpen&&(o=d(c.isOpen),s=o.assign,a.$watch(o,function(a){q.isOpen=!!a})),u=angular.isDefined(c.dropdownAppendToBody),v=angular.isDefined(c.uibKeyboardNav),u&&p.dropdownMenu&&(i.find("body").append(p.dropdownMenu),b.on("$destroy",function(){p.dropdownMenu.remove()}))},this.toggle=function(a){return q.isOpen=arguments.length?!!a:!q.isOpen},this.isOpen=function(){return q.isOpen},q.getToggleElement=function(){return p.toggleElement},q.getAutoClose=function(){return c.autoClose||"always"},q.getElement=function(){return b},q.isKeynavEnabled=function(){return v},q.focusDropdownEntry=function(a){var c=p.dropdownMenu?angular.element(p.dropdownMenu).find("a"):angular.element(b).find("ul").eq(0).find("a");switch(a){case 40:angular.isNumber(p.selectedOption)?p.selectedOption=p.selectedOption===c.length-1?p.selectedOption:p.selectedOption+1:p.selectedOption=0;break;case 38:angular.isNumber(p.selectedOption)?p.selectedOption=0===p.selectedOption?0:p.selectedOption-1:p.selectedOption=c.length-1}c[p.selectedOption].focus()},q.getDropdownElement=function(){return p.dropdownMenu},q.focusToggleElement=function(){p.toggleElement&&p.toggleElement[0].focus()},q.$watch("isOpen",function(c,d){if(u&&p.dropdownMenu){var e=h.positionElements(b,p.dropdownMenu,"bottom-left",!0),i={top:e.top+"px",display:c?"block":"none"},l=p.dropdownMenu.hasClass("dropdown-menu-right");l?(i.left="auto",i.right=window.innerWidth-(e.left+b.prop("offsetWidth"))+"px"):(i.left=e.left+"px",i.right="auto"),p.dropdownMenu.css(i)}if(g[c?"addClass":"removeClass"](b,r).then(function(){angular.isDefined(c)&&c!==d&&t(a,{open:!!c})}),c)p.dropdownMenuTemplateUrl&&k(p.dropdownMenuTemplateUrl).then(function(a){n=q.$new(),j(a.trim())(n,function(a){var b=a;p.dropdownMenu.replaceWith(b),p.dropdownMenu=b})}),q.focusToggleElement(),f.open(q);else{if(p.dropdownMenuTemplateUrl){n&&n.$destroy();var m=angular.element('');p.dropdownMenu.replaceWith(m),p.dropdownMenu=m}f.close(q),p.selectedOption=null}angular.isFunction(s)&&s(a,c)}),a.$on("$locationChangeSuccess",function(){"disabled"!==q.getAutoClose()&&(q.isOpen=!1)});var w=a.$on("$destroy",function(){q.$destroy()});q.$on("$destroy",w)}]).directive("dropdown",["$log","$dropdownSuppressWarning",function(a,b){return{controller:"DropdownController",link:function(c,d,e,f){b||a.warn("dropdown is now deprecated. Use uib-dropdown instead."),f.init()}}}]).directive("dropdownMenu",["$log","$dropdownSuppressWarning",function(a,b){return{restrict:"AC",require:"?^dropdown",link:function(c,d,e,f){if(f&&!angular.isDefined(e.dropdownNested)){b||a.warn("dropdown-menu is now deprecated. Use uib-dropdown-menu instead."),d.addClass("dropdown-menu");var g=e.templateUrl;g&&(f.dropdownMenuTemplateUrl=g),f.dropdownMenu||(f.dropdownMenu=d)}}}}]).directive("keyboardNav",["$log","$dropdownSuppressWarning",function(a,b){return{restrict:"A",require:"?^dropdown",link:function(c,d,e,f){b||a.warn("keyboard-nav is now deprecated. Use uib-keyboard-nav instead."),d.bind("keydown",function(a){if(-1!==[38,40].indexOf(a.which)){a.preventDefault(),a.stopPropagation();var b=f.dropdownMenu.find("a");switch(a.which){case 40:angular.isNumber(f.selectedOption)?f.selectedOption=f.selectedOption===b.length-1?f.selectedOption:f.selectedOption+1:f.selectedOption=0;break;case 38:angular.isNumber(f.selectedOption)?f.selectedOption=0===f.selectedOption?0:f.selectedOption-1:f.selectedOption=b.length-1}b[f.selectedOption].focus()}})}}}]).directive("dropdownToggle",["$log","$dropdownSuppressWarning",function(a,b){return{require:"?^dropdown",link:function(c,d,e,f){if(b||a.warn("dropdown-toggle is now deprecated. Use uib-dropdown-toggle instead."),f){d.addClass("dropdown-toggle"),f.toggleElement=d;var g=function(a){a.preventDefault(),d.hasClass("disabled")||e.disabled||c.$apply(function(){f.toggle()})};d.bind("click",g),d.attr({"aria-haspopup":!0,"aria-expanded":!1}),c.$watch(f.isOpen,function(a){d.attr("aria-expanded",!!a)}),c.$on("$destroy",function(){d.unbind("click",g)})}}}}]),angular.module("ui.bootstrap.stackedMap",[]).factory("$$stackedMap",function(){return{createNew:function(){var a=[];return{add:function(b,c){a.push({key:b,value:c})},get:function(b){for(var c=0;c0&&(b=u.top().value,b.modalDomEl.toggleClass(b.windowTopClass||"",a))}function m(){if(q&&-1==j()){var a=r;n(q,r,function(){a=null}),q=void 0,r=void 0}}function n(b,c,d){function e(){e.done||(e.done=!0,p?p(b,{event:"leave"}).start().then(function(){b.remove()}):a.leave(b),c.$destroy(),d&&d())}var g,h=null,i=function(){return g||(g=f.defer(),h=g.promise),function(){g.resolve()}};return c.$broadcast(w.NOW_CLOSING_EVENT,i),f.when(h).then(e)}function o(a,b,c){return!a.value.modalScope.$broadcast("modal.closing",b,c).defaultPrevented}var p=null;g.has("$animateCss")&&(p=g.get("$animateCss"));var q,r,s,t="modal-open",u=i.createNew(),v=h.createNew(),w={NOW_CLOSING_EVENT:"modal.stack.now-closing"},x=0,y="a[href], area[href], input:not([disabled]), button:not([disabled]),select:not([disabled]), textarea:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable=true]";return e.$watch(j,function(a){r&&(r.index=a)}),c.bind("keydown",function(a){if(a.isDefaultPrevented())return a;var b=u.top();if(b&&b.value.keyboard)switch(a.which){case 27:a.preventDefault(),e.$apply(function(){w.dismiss(b.key,"escape key press")});break;case 9:w.loadFocusElementList(b);var c=!1;a.shiftKey?w.isFocusInFirstItem(a)&&(c=w.focusLastFocusableElement()):w.isFocusInLastItem(a)&&(c=w.focusFirstFocusableElement()),c&&(a.preventDefault(),a.stopPropagation())}}),w.open=function(a,b){var f=c[0].activeElement,g=b.openedClass||t;l(!1),u.add(a,{deferred:b.deferred,renderDeferred:b.renderDeferred,modalScope:b.scope,backdrop:b.backdrop,keyboard:b.keyboard,openedClass:b.openedClass,windowTopClass:b.windowTopClass}),v.put(g,a);var h=c.find("body").eq(0),i=j();if(i>=0&&!q){r=e.$new(!0),r.index=i;var k=angular.element('
      ');k.attr("backdrop-class",b.backdropClass),b.animation&&k.attr("modal-animation","true"),q=d(k)(r),h.append(q)}var m=angular.element('
      ');m.attr({"template-url":b.windowTemplateUrl,"window-class":b.windowClass,"window-top-class":b.windowTopClass,size:b.size,index:u.length()-1,animate:"animate"}).html(b.content),b.animation&&m.attr("modal-animation","true");var n=d(m)(b.scope);u.top().value.modalDomEl=n,u.top().value.modalOpener=f,h.append(n),h.addClass(g),w.clearFocusListCache()},w.close=function(a,b){var c=u.get(a);return c&&o(c,b,!0)?(c.value.modalScope.$$uibDestructionScheduled=!0,c.value.deferred.resolve(b),k(a,c.value.modalOpener),!0):!c},w.dismiss=function(a,b){var c=u.get(a);return c&&o(c,b,!1)?(c.value.modalScope.$$uibDestructionScheduled=!0,c.value.deferred.reject(b),k(a,c.value.modalOpener),!0):!c},w.dismissAll=function(a){for(var b=this.getTop();b&&this.dismiss(b.key,a);)b=this.getTop()},w.getTop=function(){return u.top()},w.modalRendered=function(a){var b=u.get(a);b&&b.value.renderDeferred.resolve()},w.focusFirstFocusableElement=function(){return s.length>0?(s[0].focus(),!0):!1},w.focusLastFocusableElement=function(){return s.length>0?(s[s.length-1].focus(),!0):!1},w.isFocusInFirstItem=function(a){return s.length>0?(a.target||a.srcElement)==s[0]:!1},w.isFocusInLastItem=function(a){return s.length>0?(a.target||a.srcElement)==s[s.length-1]:!1},w.clearFocusListCache=function(){s=[],x=0},w.loadFocusElementList=function(a){if((void 0===s||!s.length)&&a){var b=a.value.modalDomEl;b&&b.length&&(s=b[0].querySelectorAll(y))}},w}]).provider("$uibModal",function(){var a={options:{animation:!0,backdrop:!0,keyboard:!0},$get:["$injector","$rootScope","$q","$templateRequest","$controller","$uibModalStack","$modalSuppressWarning","$log",function(b,c,d,e,f,g,h,i){function j(a){return a.template?d.when(a.template):e(angular.isFunction(a.templateUrl)?a.templateUrl():a.templateUrl)}function k(a){var c=[];return angular.forEach(a,function(a){angular.isFunction(a)||angular.isArray(a)?c.push(d.when(b.invoke(a))):angular.isString(a)?c.push(d.when(b.get(a))):c.push(d.when(a))}),c}var l={},m=null;return l.getPromiseChain=function(){return m},l.open=function(b){function e(){return r}var l=d.defer(),n=d.defer(),o=d.defer(),p={result:l.promise,opened:n.promise,rendered:o.promise,close:function(a){return g.close(p,a)},dismiss:function(a){return g.dismiss(p,a)}};if(b=angular.extend({},a.options,b),b.resolve=b.resolve||{},!b.template&&!b.templateUrl)throw new Error("One of template or templateUrl options is required.");var q,r=d.all([j(b)].concat(k(b.resolve)));return q=m=d.all([m]).then(e,e).then(function(a){var d=(b.scope||c).$new();d.$close=p.close,d.$dismiss=p.dismiss,d.$on("$destroy",function(){d.$$uibDestructionScheduled||d.$dismiss("$uibUnscheduledDestruction")});var e,j={},k=1;b.controller&&(j.$scope=d,j.$uibModalInstance=p,Object.defineProperty(j,"$modalInstance",{get:function(){return h||i.warn("$modalInstance is now deprecated. Use $uibModalInstance instead."),p}}),angular.forEach(b.resolve,function(b,c){j[c]=a[k++]}),e=f(b.controller,j),b.controllerAs&&(b.bindToController&&angular.extend(e,d),d[b.controllerAs]=e)),g.open(p,{scope:d,deferred:l,renderDeferred:o,content:a[0],animation:b.animation,backdrop:b.backdrop,keyboard:b.keyboard,backdropClass:b.backdropClass,windowTopClass:b.windowTopClass,windowClass:b.windowClass,windowTemplateUrl:b.windowTemplateUrl,size:b.size,openedClass:b.openedClass}),n.resolve(!0)},function(a){n.reject(a),l.reject(a)})["finally"](function(){m===q&&(m=null)}),p},l}]};return a}),angular.module("ui.bootstrap.modal").value("$modalSuppressWarning",!1).directive("modalBackdrop",["$animate","$injector","$modalStack","$log","$modalSuppressWarning",function(a,b,c,d,e){function f(b,f,h){e||d.warn("modal-backdrop is now deprecated. Use uib-modal-backdrop instead."),f.addClass("modal-backdrop"),h.modalInClass&&(g?g(f,{addClass:h.modalInClass}).start():a.addClass(f,h.modalInClass),b.$on(c.NOW_CLOSING_EVENT,function(b,c){var d=c();g?g(f,{removeClass:h.modalInClass}).start().then(d):a.removeClass(f,h.modalInClass).then(d)}))}var g=null;return b.has("$animateCss")&&(g=b.get("$animateCss")),{replace:!0,templateUrl:"template/modal/backdrop.html",compile:function(a,b){return a.addClass(b.backdropClass),f}}}]).directive("modalWindow",["$modalStack","$q","$animate","$injector","$log","$modalSuppressWarning",function(a,b,c,d,e,f){var g=null;return d.has("$animateCss")&&(g=d.get("$animateCss")),{scope:{index:"@"},replace:!0,transclude:!0,templateUrl:function(a,b){return b.templateUrl||"template/modal/window.html"},link:function(d,h,i){f||e.warn("modal-window is now deprecated. Use uib-modal-window instead."),h.addClass(i.windowClass||""),h.addClass(i.windowTopClass||""),d.size=i.size,d.close=function(b){var c=a.getTop();c&&c.value.backdrop&&"static"!==c.value.backdrop&&b.target===b.currentTarget&&(b.preventDefault(),b.stopPropagation(),a.dismiss(c.key,"backdrop click"))},h.on("click",d.close),d.$isRendered=!0;var j=b.defer();i.$observe("modalRender",function(a){"true"==a&&j.resolve()}),j.promise.then(function(){var e=null;i.modalInClass&&(e=g?g(h,{addClass:i.modalInClass}).start():c.addClass(h,i.modalInClass),d.$on(a.NOW_CLOSING_EVENT,function(a,b){var d=b();g?g(h,{removeClass:i.modalInClass}).start().then(d):c.removeClass(h,i.modalInClass).then(d)})),b.when(e).then(function(){var a=h[0].querySelector("[autofocus]");a?a.focus():h[0].focus()});var f=a.getTop();f&&a.modalRendered(f.key)})}}}]).directive("modalAnimationClass",["$log","$modalSuppressWarning",function(a,b){return{compile:function(c,d){b||a.warn("modal-animation-class is now deprecated. Use uib-modal-animation-class instead."),d.modalAnimation&&c.addClass(d.modalAnimationClass)}}}]).directive("modalTransclude",["$log","$modalSuppressWarning",function(a,b){return{link:function(c,d,e,f,g){ +b||a.warn("modal-transclude is now deprecated. Use uib-modal-transclude instead."),g(c.$parent,function(a){d.empty(),d.append(a)})}}}]).service("$modalStack",["$animate","$timeout","$document","$compile","$rootScope","$q","$injector","$$multiMap","$$stackedMap","$uibModalStack","$log","$modalSuppressWarning",function(a,b,c,d,e,f,g,h,i,j,k,l){l||k.warn("$modalStack is now deprecated. Use $uibModalStack instead."),angular.extend(this,j)}]).provider("$modal",["$uibModalProvider",function(a){angular.extend(this,a),this.$get=["$injector","$log","$modalSuppressWarning",function(b,c,d){return d||c.warn("$modal is now deprecated. Use $uibModal instead."),b.invoke(a.$get)}]}]),angular.module("ui.bootstrap.pagination",[]).controller("UibPaginationController",["$scope","$attrs","$parse",function(a,b,c){var d=this,e={$setViewValue:angular.noop},f=b.numPages?c(b.numPages).assign:angular.noop;this.init=function(g,h){e=g,this.config=h,e.$render=function(){d.render()},b.itemsPerPage?a.$parent.$watch(c(b.itemsPerPage),function(b){d.itemsPerPage=parseInt(b,10),a.totalPages=d.calculateTotalPages()}):this.itemsPerPage=h.itemsPerPage,a.$watch("totalItems",function(){a.totalPages=d.calculateTotalPages()}),a.$watch("totalPages",function(b){f(a.$parent,b),a.page>b?a.selectPage(b):e.$render()})},this.calculateTotalPages=function(){var b=this.itemsPerPage<1?1:Math.ceil(a.totalItems/this.itemsPerPage);return Math.max(b||0,1)},this.render=function(){a.page=parseInt(e.$viewValue,10)||1},a.selectPage=function(b,c){c&&c.preventDefault();var d=!a.ngDisabled||!c;d&&a.page!==b&&b>0&&b<=a.totalPages&&(c&&c.target&&c.target.blur(),e.$setViewValue(b),e.$render())},a.getText=function(b){return a[b+"Text"]||d.config[b+"Text"]},a.noPrevious=function(){return 1===a.page},a.noNext=function(){return a.page===a.totalPages}}]).constant("uibPaginationConfig",{itemsPerPage:10,boundaryLinks:!1,directionLinks:!0,firstText:"First",previousText:"Previous",nextText:"Next",lastText:"Last",rotate:!0}).directive("uibPagination",["$parse","uibPaginationConfig",function(a,b){return{restrict:"EA",scope:{totalItems:"=",firstText:"@",previousText:"@",nextText:"@",lastText:"@",ngDisabled:"="},require:["uibPagination","?ngModel"],controller:"UibPaginationController",controllerAs:"pagination",templateUrl:function(a,b){return b.templateUrl||"template/pagination/pagination.html"},replace:!0,link:function(c,d,e,f){function g(a,b,c){return{number:a,text:b,active:c}}function h(a,b){var c=[],d=1,e=b,f=angular.isDefined(k)&&b>k;f&&(l?(d=Math.max(a-Math.floor(k/2),1),e=d+k-1,e>b&&(e=b,d=e-k+1)):(d=(Math.ceil(a/k)-1)*k+1,e=Math.min(d+k-1,b)));for(var h=d;e>=h;h++){var i=g(h,h,h===a);c.push(i)}if(f&&!l){if(d>1){var j=g(d-1,"...",!1);c.unshift(j)}if(b>e){var m=g(e+1,"...",!1);c.push(m)}}return c}var i=f[0],j=f[1];if(j){var k=angular.isDefined(e.maxSize)?c.$parent.$eval(e.maxSize):b.maxSize,l=angular.isDefined(e.rotate)?c.$parent.$eval(e.rotate):b.rotate;c.boundaryLinks=angular.isDefined(e.boundaryLinks)?c.$parent.$eval(e.boundaryLinks):b.boundaryLinks,c.directionLinks=angular.isDefined(e.directionLinks)?c.$parent.$eval(e.directionLinks):b.directionLinks,i.init(j,b),e.maxSize&&c.$parent.$watch(a(e.maxSize),function(a){k=parseInt(a,10),i.render()});var m=i.render;i.render=function(){m(),c.page>0&&c.page<=c.totalPages&&(c.pages=h(c.page,c.totalPages))}}}}}]).constant("uibPagerConfig",{itemsPerPage:10,previousText:"« Previous",nextText:"Next »",align:!0}).directive("uibPager",["uibPagerConfig",function(a){return{restrict:"EA",scope:{totalItems:"=",previousText:"@",nextText:"@",ngDisabled:"="},require:["uibPager","?ngModel"],controller:"UibPaginationController",controllerAs:"pagination",templateUrl:function(a,b){return b.templateUrl||"template/pagination/pager.html"},replace:!0,link:function(b,c,d,e){var f=e[0],g=e[1];g&&(b.align=angular.isDefined(d.align)?b.$parent.$eval(d.align):a.align,f.init(g,a))}}}]),angular.module("ui.bootstrap.pagination").value("$paginationSuppressWarning",!1).controller("PaginationController",["$scope","$attrs","$parse","$log","$paginationSuppressWarning",function(a,b,c,d,e){e||d.warn("PaginationController is now deprecated. Use UibPaginationController instead.");var f=this,g={$setViewValue:angular.noop},h=b.numPages?c(b.numPages).assign:angular.noop;this.init=function(d,e){g=d,this.config=e,g.$render=function(){f.render()},b.itemsPerPage?a.$parent.$watch(c(b.itemsPerPage),function(b){f.itemsPerPage=parseInt(b,10),a.totalPages=f.calculateTotalPages()}):this.itemsPerPage=e.itemsPerPage,a.$watch("totalItems",function(){a.totalPages=f.calculateTotalPages()}),a.$watch("totalPages",function(b){h(a.$parent,b),a.page>b?a.selectPage(b):g.$render()})},this.calculateTotalPages=function(){var b=this.itemsPerPage<1?1:Math.ceil(a.totalItems/this.itemsPerPage);return Math.max(b||0,1)},this.render=function(){a.page=parseInt(g.$viewValue,10)||1},a.selectPage=function(b,c){c&&c.preventDefault();var d=!a.ngDisabled||!c;d&&a.page!==b&&b>0&&b<=a.totalPages&&(c&&c.target&&c.target.blur(),g.$setViewValue(b),g.$render())},a.getText=function(b){return a[b+"Text"]||f.config[b+"Text"]},a.noPrevious=function(){return 1===a.page},a.noNext=function(){return a.page===a.totalPages}}]).directive("pagination",["$parse","uibPaginationConfig","$log","$paginationSuppressWarning",function(a,b,c,d){return{restrict:"EA",scope:{totalItems:"=",firstText:"@",previousText:"@",nextText:"@",lastText:"@",ngDisabled:"="},require:["pagination","?ngModel"],controller:"PaginationController",controllerAs:"pagination",templateUrl:function(a,b){return b.templateUrl||"template/pagination/pagination.html"},replace:!0,link:function(e,f,g,h){function i(a,b,c){return{number:a,text:b,active:c}}function j(a,b){var c=[],d=1,e=b,f=angular.isDefined(m)&&b>m;f&&(n?(d=Math.max(a-Math.floor(m/2),1),e=d+m-1,e>b&&(e=b,d=e-m+1)):(d=(Math.ceil(a/m)-1)*m+1,e=Math.min(d+m-1,b)));for(var g=d;e>=g;g++){var h=i(g,g,g===a);c.push(h)}if(f&&!n){if(d>1){var j=i(d-1,"...",!1);c.unshift(j)}if(b>e){var k=i(e+1,"...",!1);c.push(k)}}return c}d||c.warn("pagination is now deprecated. Use uib-pagination instead.");var k=h[0],l=h[1];if(l){var m=angular.isDefined(g.maxSize)?e.$parent.$eval(g.maxSize):b.maxSize,n=angular.isDefined(g.rotate)?e.$parent.$eval(g.rotate):b.rotate;e.boundaryLinks=angular.isDefined(g.boundaryLinks)?e.$parent.$eval(g.boundaryLinks):b.boundaryLinks,e.directionLinks=angular.isDefined(g.directionLinks)?e.$parent.$eval(g.directionLinks):b.directionLinks,k.init(l,b),g.maxSize&&e.$parent.$watch(a(g.maxSize),function(a){m=parseInt(a,10),k.render()});var o=k.render;k.render=function(){o(),e.page>0&&e.page<=e.totalPages&&(e.pages=j(e.page,e.totalPages))}}}}}]).directive("pager",["uibPagerConfig","$log","$paginationSuppressWarning",function(a,b,c){return{restrict:"EA",scope:{totalItems:"=",previousText:"@",nextText:"@",ngDisabled:"="},require:["pager","?ngModel"],controller:"PaginationController",controllerAs:"pagination",templateUrl:function(a,b){return b.templateUrl||"template/pagination/pager.html"},replace:!0,link:function(d,e,f,g){c||b.warn("pager is now deprecated. Use uib-pager instead.");var h=g[0],i=g[1];i&&(d.align=angular.isDefined(f.align)?d.$parent.$eval(f.align):a.align,h.init(i,a))}}}]),angular.module("ui.bootstrap.tooltip",["ui.bootstrap.position","ui.bootstrap.stackedMap"]).provider("$uibTooltip",function(){function a(a){var b=/[A-Z]/g,c="-";return a.replace(b,function(a,b){return(b?c:"")+a.toLowerCase()})}var b={placement:"top",animation:!0,popupDelay:0,popupCloseDelay:0,useContentExp:!1},c={mouseenter:"mouseleave",click:"click",focus:"blur",none:""},d={};this.options=function(a){angular.extend(d,a)},this.setTriggers=function(a){angular.extend(c,a)},this.$get=["$window","$compile","$timeout","$document","$uibPosition","$interpolate","$rootScope","$parse","$$stackedMap",function(e,f,g,h,i,j,k,l,m){var n=m.createNew();return h.on("keypress",function(a){if(27===a.which){var b=n.top();b&&(b.value.close(),n.removeTop(),b=null)}}),function(e,k,m,o){function p(a){var b=(a||o.trigger||m).split(" "),d=b.map(function(a){return c[a]||a});return{show:b,hide:d}}o=angular.extend({},b,d,o);var q=a(e),r=j.startSymbol(),s=j.endSymbol(),t="
      ';return{compile:function(a,b){var c=f(t);return function(a,b,d,f){function j(){L.isOpen?q():m()}function m(){(!K||a.$eval(d[k+"Enable"]))&&(u(),x(),L.popupDelay?F||(F=g(r,L.popupDelay,!1)):r())}function q(){s(),L.popupCloseDelay?G||(G=g(t,L.popupCloseDelay,!1)):t()}function r(){return s(),u(),L.content?(v(),void L.$evalAsync(function(){L.isOpen=!0,y(!0),Q()})):angular.noop}function s(){F&&(g.cancel(F),F=null),H&&(g.cancel(H),H=null)}function t(){s(),u(),L&&L.$evalAsync(function(){L.isOpen=!1,y(!1),L.animation?E||(E=g(w,150,!1)):w()})}function u(){G&&(g.cancel(G),G=null),E&&(g.cancel(E),E=null)}function v(){C||(D=L.$new(),C=c(D,function(a){I?h.find("body").append(a):b.after(a)}),z())}function w(){A(),E=null,C&&(C.remove(),C=null),D&&(D.$destroy(),D=null)}function x(){L.title=d[k+"Title"],O?L.content=O(a):L.content=d[e],L.popupClass=d[k+"Class"],L.placement=angular.isDefined(d[k+"Placement"])?d[k+"Placement"]:o.placement;var b=parseInt(d[k+"PopupDelay"],10),c=parseInt(d[k+"PopupCloseDelay"],10);L.popupDelay=isNaN(b)?o.popupDelay:b,L.popupCloseDelay=isNaN(c)?o.popupCloseDelay:c}function y(b){N&&angular.isFunction(N.assign)&&N.assign(a,b)}function z(){P.length=0,O?(P.push(a.$watch(O,function(a){L.content=a,!a&&L.isOpen&&t()})),P.push(D.$watch(function(){M||(M=!0,D.$$postDigest(function(){M=!1,L&&L.isOpen&&Q()}))}))):P.push(d.$observe(e,function(a){L.content=a,!a&&L.isOpen?t():Q()})),P.push(d.$observe(k+"Title",function(a){L.title=a,L.isOpen&&Q()})),P.push(d.$observe(k+"Placement",function(a){L.placement=a?a:o.placement,L.isOpen&&Q()}))}function A(){P.length&&(angular.forEach(P,function(a){a()}),P.length=0)}function B(){var a=d[k+"Trigger"];R(),J=p(a),"none"!==J.show&&J.show.forEach(function(a,c){a===J.hide[c]?b[0].addEventListener(a,j):a&&(b[0].addEventListener(a,m),J.hide[c].split(" ").forEach(function(a){b[0].addEventListener(a,q)})),b.on("keypress",function(a){27===a.which&&q()})})}var C,D,E,F,G,H,I=angular.isDefined(o.appendToBody)?o.appendToBody:!1,J=p(void 0),K=angular.isDefined(d[k+"Enable"]),L=a.$new(!0),M=!1,N=angular.isDefined(d[k+"IsOpen"])?l(d[k+"IsOpen"]):!1,O=o.useContentExp?l(d[e]):!1,P=[],Q=function(){C&&C.html()&&(H||(H=g(function(){C.css({top:0,left:0});var a=i.positionElements(b,C,L.placement,I);a.top+="px",a.left+="px",a.visibility="visible",C.css(a),H=null},0,!1)))};L.origScope=a,L.isOpen=!1,n.add(L,{close:t}),L.contentExp=function(){return L.content},d.$observe("disabled",function(a){a&&s(),a&&L.isOpen&&t()}),N&&a.$watch(N,function(a){L&&!a===L.isOpen&&j()});var R=function(){J.show.forEach(function(a){b.unbind(a,m)}),J.hide.forEach(function(a){a.split(" ").forEach(function(a){b[0].removeEventListener(a,q)})})};B();var S=a.$eval(d[k+"Animation"]);L.animation=angular.isDefined(S)?!!S:o.animation;var T=a.$eval(d[k+"AppendToBody"]);I=angular.isDefined(T)?T:I,I&&a.$on("$locationChangeSuccess",function(){L.isOpen&&t()}),a.$on("$destroy",function(){s(),u(),R(),w(),n.remove(L),L=null})}}}}}]}).directive("uibTooltipTemplateTransclude",["$animate","$sce","$compile","$templateRequest",function(a,b,c,d){return{link:function(e,f,g){var h,i,j,k=e.$eval(g.tooltipTemplateTranscludeScope),l=0,m=function(){i&&(i.remove(),i=null),h&&(h.$destroy(),h=null),j&&(a.leave(j).then(function(){i=null}),i=j,j=null)};e.$watch(b.parseAsResourceUrl(g.uibTooltipTemplateTransclude),function(b){var g=++l;b?(d(b,!0).then(function(d){if(g===l){var e=k.$new(),i=d,n=c(i)(e,function(b){m(),a.enter(b,f)});h=e,j=n,h.$emit("$includeContentLoaded",b)}},function(){g===l&&(m(),e.$emit("$includeContentError",b))}),e.$emit("$includeContentRequested",b)):m()}),e.$on("$destroy",m)}}}]).directive("uibTooltipClasses",function(){return{restrict:"A",link:function(a,b,c){a.placement&&b.addClass(a.placement),a.popupClass&&b.addClass(a.popupClass),a.animation()&&b.addClass(c.tooltipAnimationClass)}}}).directive("uibTooltipPopup",function(){return{replace:!0,scope:{content:"@",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"template/tooltip/tooltip-popup.html",link:function(a,b){b.addClass("tooltip")}}}).directive("uibTooltip",["$uibTooltip",function(a){return a("uibTooltip","tooltip","mouseenter")}]).directive("uibTooltipTemplatePopup",function(){return{replace:!0,scope:{contentExp:"&",placement:"@",popupClass:"@",animation:"&",isOpen:"&",originScope:"&"},templateUrl:"template/tooltip/tooltip-template-popup.html",link:function(a,b){b.addClass("tooltip")}}}).directive("uibTooltipTemplate",["$uibTooltip",function(a){return a("uibTooltipTemplate","tooltip","mouseenter",{useContentExp:!0})}]).directive("uibTooltipHtmlPopup",function(){return{replace:!0,scope:{contentExp:"&",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"template/tooltip/tooltip-html-popup.html",link:function(a,b){b.addClass("tooltip")}}}).directive("uibTooltipHtml",["$uibTooltip",function(a){return a("uibTooltipHtml","tooltip","mouseenter",{useContentExp:!0})}]),angular.module("ui.bootstrap.tooltip").value("$tooltipSuppressWarning",!1).provider("$tooltip",["$uibTooltipProvider",function(a){angular.extend(this,a),this.$get=["$log","$tooltipSuppressWarning","$injector",function(b,c,d){return c||b.warn("$tooltip is now deprecated. Use $uibTooltip instead."),d.invoke(a.$get)}]}]).directive("tooltipTemplateTransclude",["$animate","$sce","$compile","$templateRequest","$log","$tooltipSuppressWarning",function(a,b,c,d,e,f){return{link:function(g,h,i){f||e.warn("tooltip-template-transclude is now deprecated. Use uib-tooltip-template-transclude instead.");var j,k,l,m=g.$eval(i.tooltipTemplateTranscludeScope),n=0,o=function(){k&&(k.remove(),k=null),j&&(j.$destroy(),j=null),l&&(a.leave(l).then(function(){k=null}),k=l,l=null)};g.$watch(b.parseAsResourceUrl(i.tooltipTemplateTransclude),function(b){var e=++n;b?(d(b,!0).then(function(d){if(e===n){var f=m.$new(),g=d,i=c(g)(f,function(b){o(),a.enter(b,h)});j=f,l=i,j.$emit("$includeContentLoaded",b)}},function(){e===n&&(o(),g.$emit("$includeContentError",b))}),g.$emit("$includeContentRequested",b)):o()}),g.$on("$destroy",o)}}}]).directive("tooltipClasses",["$log","$tooltipSuppressWarning",function(a,b){return{restrict:"A",link:function(c,d,e){b||a.warn("tooltip-classes is now deprecated. Use uib-tooltip-classes instead."),c.placement&&d.addClass(c.placement),c.popupClass&&d.addClass(c.popupClass),c.animation()&&d.addClass(e.tooltipAnimationClass)}}}]).directive("tooltipPopup",["$log","$tooltipSuppressWarning",function(a,b){return{replace:!0,scope:{content:"@",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"template/tooltip/tooltip-popup.html",link:function(c,d){b||a.warn("tooltip-popup is now deprecated. Use uib-tooltip-popup instead."),d.addClass("tooltip")}}}]).directive("tooltip",["$tooltip",function(a){return a("tooltip","tooltip","mouseenter")}]).directive("tooltipTemplatePopup",["$log","$tooltipSuppressWarning",function(a,b){return{replace:!0,scope:{contentExp:"&",placement:"@",popupClass:"@",animation:"&",isOpen:"&",originScope:"&"},templateUrl:"template/tooltip/tooltip-template-popup.html",link:function(c,d){b||a.warn("tooltip-template-popup is now deprecated. Use uib-tooltip-template-popup instead."),d.addClass("tooltip")}}}]).directive("tooltipTemplate",["$tooltip",function(a){return a("tooltipTemplate","tooltip","mouseenter",{useContentExp:!0})}]).directive("tooltipHtmlPopup",["$log","$tooltipSuppressWarning",function(a,b){return{replace:!0,scope:{contentExp:"&",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"template/tooltip/tooltip-html-popup.html",link:function(c,d){b||a.warn("tooltip-html-popup is now deprecated. Use uib-tooltip-html-popup instead."),d.addClass("tooltip")}}}]).directive("tooltipHtml",["$tooltip",function(a){return a("tooltipHtml","tooltip","mouseenter",{useContentExp:!0})}]),angular.module("ui.bootstrap.popover",["ui.bootstrap.tooltip"]).directive("uibPopoverTemplatePopup",function(){return{replace:!0,scope:{title:"@",contentExp:"&",placement:"@",popupClass:"@",animation:"&",isOpen:"&",originScope:"&"},templateUrl:"template/popover/popover-template.html",link:function(a,b){b.addClass("popover")}}}).directive("uibPopoverTemplate",["$uibTooltip",function(a){return a("uibPopoverTemplate","popover","click",{useContentExp:!0})}]).directive("uibPopoverHtmlPopup",function(){return{replace:!0,scope:{contentExp:"&",title:"@",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"template/popover/popover-html.html",link:function(a,b){b.addClass("popover")}}}).directive("uibPopoverHtml",["$uibTooltip",function(a){return a("uibPopoverHtml","popover","click",{useContentExp:!0})}]).directive("uibPopoverPopup",function(){return{replace:!0,scope:{title:"@",content:"@",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"template/popover/popover.html",link:function(a,b){b.addClass("popover")}}}).directive("uibPopover",["$uibTooltip",function(a){return a("uibPopover","popover","click")}]),angular.module("ui.bootstrap.popover").value("$popoverSuppressWarning",!1).directive("popoverTemplatePopup",["$log","$popoverSuppressWarning",function(a,b){return{replace:!0,scope:{title:"@",contentExp:"&",placement:"@",popupClass:"@",animation:"&",isOpen:"&",originScope:"&"},templateUrl:"template/popover/popover-template.html",link:function(c,d){b||a.warn("popover-template-popup is now deprecated. Use uib-popover-template-popup instead."),d.addClass("popover")}}}]).directive("popoverTemplate",["$tooltip",function(a){return a("popoverTemplate","popover","click",{useContentExp:!0})}]).directive("popoverHtmlPopup",["$log","$popoverSuppressWarning",function(a,b){return{replace:!0,scope:{contentExp:"&",title:"@",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"template/popover/popover-html.html",link:function(c,d){b||a.warn("popover-html-popup is now deprecated. Use uib-popover-html-popup instead."),d.addClass("popover")}}}]).directive("popoverHtml",["$tooltip",function(a){return a("popoverHtml","popover","click",{useContentExp:!0})}]).directive("popoverPopup",["$log","$popoverSuppressWarning",function(a,b){return{replace:!0,scope:{title:"@",content:"@",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"template/popover/popover.html",link:function(c,d){b||a.warn("popover-popup is now deprecated. Use uib-popover-popup instead."),d.addClass("popover")}}}]).directive("popover",["$tooltip",function(a){return a("popover","popover","click")}]),angular.module("ui.bootstrap.progressbar",[]).constant("uibProgressConfig",{animate:!0,max:100}).controller("UibProgressController",["$scope","$attrs","uibProgressConfig",function(a,b,c){var d=this,e=angular.isDefined(b.animate)?a.$parent.$eval(b.animate):c.animate;this.bars=[],a.max=angular.isDefined(a.max)?a.max:c.max,this.addBar=function(b,c,f){e||c.css({transition:"none"}),this.bars.push(b),b.max=a.max,b.title=f&&angular.isDefined(f.title)?f.title:"progressbar",b.$watch("value",function(a){b.recalculatePercentage()}),b.recalculatePercentage=function(){var a=d.bars.reduce(function(a,b){return b.percent=+(100*b.value/b.max).toFixed(2),a+b.percent},0);a>100&&(b.percent-=a-100)},b.$on("$destroy",function(){c=null,d.removeBar(b)})},this.removeBar=function(a){this.bars.splice(this.bars.indexOf(a),1),this.bars.forEach(function(a){a.recalculatePercentage()})},a.$watch("max",function(b){d.bars.forEach(function(b){b.max=a.max,b.recalculatePercentage()})})}]).directive("uibProgress",function(){return{replace:!0,transclude:!0,controller:"UibProgressController",require:"uibProgress",scope:{max:"=?"},templateUrl:"template/progressbar/progress.html"}}).directive("uibBar",function(){return{replace:!0,transclude:!0,require:"^uibProgress",scope:{value:"=",type:"@"},templateUrl:"template/progressbar/bar.html",link:function(a,b,c,d){d.addBar(a,b,c)}}}).directive("uibProgressbar",function(){return{replace:!0,transclude:!0,controller:"UibProgressController",scope:{value:"=",max:"=?",type:"@"},templateUrl:"template/progressbar/progressbar.html",link:function(a,b,c,d){d.addBar(a,angular.element(b.children()[0]),{title:c.title})}}}),angular.module("ui.bootstrap.progressbar").value("$progressSuppressWarning",!1).controller("ProgressController",["$scope","$attrs","uibProgressConfig","$log","$progressSuppressWarning",function(a,b,c,d,e){e||d.warn("ProgressController is now deprecated. Use UibProgressController instead.");var f=this,g=angular.isDefined(b.animate)?a.$parent.$eval(b.animate):c.animate;this.bars=[],a.max=angular.isDefined(a.max)?a.max:c.max,this.addBar=function(b,c,d){g||c.css({transition:"none"}),this.bars.push(b),b.max=a.max,b.title=d&&angular.isDefined(d.title)?d.title:"progressbar",b.$watch("value",function(a){b.recalculatePercentage()}),b.recalculatePercentage=function(){b.percent=+(100*b.value/b.max).toFixed(2);var a=f.bars.reduce(function(a,b){return a+b.percent},0);a>100&&(b.percent-=a-100)},b.$on("$destroy",function(){c=null,f.removeBar(b)})},this.removeBar=function(a){this.bars.splice(this.bars.indexOf(a),1)},a.$watch("max",function(b){f.bars.forEach(function(b){b.max=a.max,b.recalculatePercentage()})})}]).directive("progress",["$log","$progressSuppressWarning",function(a,b){return{replace:!0,transclude:!0,controller:"ProgressController",require:"progress",scope:{max:"=?",title:"@?"},templateUrl:"template/progressbar/progress.html",link:function(){b||a.warn("progress is now deprecated. Use uib-progress instead.")}}}]).directive("bar",["$log","$progressSuppressWarning",function(a,b){return{replace:!0,transclude:!0,require:"^progress",scope:{value:"=",type:"@"},templateUrl:"template/progressbar/bar.html",link:function(c,d,e,f){b||a.warn("bar is now deprecated. Use uib-bar instead."),f.addBar(c,d)}}}]).directive("progressbar",["$log","$progressSuppressWarning",function(a,b){return{replace:!0,transclude:!0,controller:"ProgressController",scope:{value:"=",max:"=?",type:"@"},templateUrl:"template/progressbar/progressbar.html",link:function(c,d,e,f){b||a.warn("progressbar is now deprecated. Use uib-progressbar instead."),f.addBar(c,angular.element(d.children()[0]),{title:e.title})}}}]),angular.module("ui.bootstrap.rating",[]).constant("uibRatingConfig",{max:5,stateOn:null,stateOff:null,titles:["one","two","three","four","five"]}).controller("UibRatingController",["$scope","$attrs","uibRatingConfig",function(a,b,c){var d={$setViewValue:angular.noop};this.init=function(e){d=e,d.$render=this.render,d.$formatters.push(function(a){return angular.isNumber(a)&&a<<0!==a&&(a=Math.round(a)),a}),this.stateOn=angular.isDefined(b.stateOn)?a.$parent.$eval(b.stateOn):c.stateOn,this.stateOff=angular.isDefined(b.stateOff)?a.$parent.$eval(b.stateOff):c.stateOff;var f=angular.isDefined(b.titles)?a.$parent.$eval(b.titles):c.titles;this.titles=angular.isArray(f)&&f.length>0?f:c.titles;var g=angular.isDefined(b.ratingStates)?a.$parent.$eval(b.ratingStates):new Array(angular.isDefined(b.max)?a.$parent.$eval(b.max):c.max);a.range=this.buildTemplateObjects(g)},this.buildTemplateObjects=function(a){for(var b=0,c=a.length;c>b;b++)a[b]=angular.extend({index:b},{stateOn:this.stateOn,stateOff:this.stateOff,title:this.getTitle(b)},a[b]);return a},this.getTitle=function(a){return a>=this.titles.length?a+1:this.titles[a]},a.rate=function(b){!a.readonly&&b>=0&&b<=a.range.length&&(d.$setViewValue(d.$viewValue===b?0:b),d.$render())},a.enter=function(b){a.readonly||(a.value=b),a.onHover({value:b})},a.reset=function(){a.value=d.$viewValue,a.onLeave()},a.onKeydown=function(b){/(37|38|39|40)/.test(b.which)&&(b.preventDefault(),b.stopPropagation(),a.rate(a.value+(38===b.which||39===b.which?1:-1)))},this.render=function(){a.value=d.$viewValue}}]).directive("uibRating",function(){return{require:["uibRating","ngModel"],scope:{readonly:"=?",onHover:"&",onLeave:"&"},controller:"UibRatingController",templateUrl:"template/rating/rating.html",replace:!0,link:function(a,b,c,d){var e=d[0],f=d[1];e.init(f)}}}),angular.module("ui.bootstrap.rating").value("$ratingSuppressWarning",!1).controller("RatingController",["$scope","$attrs","$controller","$log","$ratingSuppressWarning",function(a,b,c,d,e){e||d.warn("RatingController is now deprecated. Use UibRatingController instead."),angular.extend(this,c("UibRatingController",{$scope:a,$attrs:b}))}]).directive("rating",["$log","$ratingSuppressWarning",function(a,b){return{require:["rating","ngModel"],scope:{readonly:"=?",onHover:"&",onLeave:"&"},controller:"RatingController",templateUrl:"template/rating/rating.html",replace:!0,link:function(c,d,e,f){b||a.warn("rating is now deprecated. Use uib-rating instead.");var g=f[0],h=f[1];g.init(h)}}}]),angular.module("ui.bootstrap.tabs",[]).controller("UibTabsetController",["$scope",function(a){var b=this,c=b.tabs=a.tabs=[];b.select=function(a){angular.forEach(c,function(b){b.active&&b!==a&&(b.active=!1,b.onDeselect(),a.selectCalled=!1)}),a.active=!0,a.selectCalled||(a.onSelect(),a.selectCalled=!0)},b.addTab=function(a){c.push(a),1===c.length&&a.active!==!1?a.active=!0:a.active?b.select(a):a.active=!1},b.removeTab=function(a){var e=c.indexOf(a);if(a.active&&c.length>1&&!d){var f=e==c.length-1?e-1:e+1;b.select(c[f])}c.splice(e,1)};var d;a.$on("$destroy",function(){d=!0})}]).directive("uibTabset",function(){return{restrict:"EA",transclude:!0,replace:!0,scope:{type:"@"},controller:"UibTabsetController",templateUrl:"template/tabs/tabset.html",link:function(a,b,c){a.vertical=angular.isDefined(c.vertical)?a.$parent.$eval(c.vertical):!1,a.justified=angular.isDefined(c.justified)?a.$parent.$eval(c.justified):!1}}}).directive("uibTab",["$parse",function(a){return{require:"^uibTabset",restrict:"EA",replace:!0,templateUrl:"template/tabs/tab.html",transclude:!0,scope:{active:"=?",heading:"@",onSelect:"&select",onDeselect:"&deselect"},controller:function(){},link:function(b,c,d,e,f){b.$watch("active",function(a){a&&e.select(b)}),b.disabled=!1,d.disable&&b.$parent.$watch(a(d.disable),function(a){b.disabled=!!a}),b.select=function(){b.disabled||(b.active=!0)},e.addTab(b),b.$on("$destroy",function(){e.removeTab(b)}),b.$transcludeFn=f}}}]).directive("uibTabHeadingTransclude",function(){return{restrict:"A",require:["?^uibTab","?^tab"],link:function(a,b){a.$watch("headingElement",function(a){a&&(b.html(""),b.append(a))})}}}).directive("uibTabContentTransclude",function(){function a(a){return a.tagName&&(a.hasAttribute("tab-heading")||a.hasAttribute("data-tab-heading")||a.hasAttribute("x-tab-heading")||a.hasAttribute("uib-tab-heading")||a.hasAttribute("data-uib-tab-heading")||a.hasAttribute("x-uib-tab-heading")||"tab-heading"===a.tagName.toLowerCase()||"data-tab-heading"===a.tagName.toLowerCase()||"x-tab-heading"===a.tagName.toLowerCase()||"uib-tab-heading"===a.tagName.toLowerCase()||"data-uib-tab-heading"===a.tagName.toLowerCase()||"x-uib-tab-heading"===a.tagName.toLowerCase())}return{restrict:"A",require:["?^uibTabset","?^tabset"],link:function(b,c,d){var e=b.$eval(d.uibTabContentTransclude);e.$transcludeFn(e.$parent,function(b){angular.forEach(b,function(b){a(b)?e.headingElement=b:c.append(b)})})}}}),angular.module("ui.bootstrap.tabs").value("$tabsSuppressWarning",!1).controller("TabsetController",["$scope","$controller","$log","$tabsSuppressWarning",function(a,b,c,d){d||c.warn("TabsetController is now deprecated. Use UibTabsetController instead."),angular.extend(this,b("UibTabsetController",{$scope:a}))}]).directive("tabset",["$log","$tabsSuppressWarning",function(a,b){return{restrict:"EA",transclude:!0,replace:!0,scope:{type:"@"},controller:"TabsetController",templateUrl:"template/tabs/tabset.html",link:function(c,d,e){b||a.warn("tabset is now deprecated. Use uib-tabset instead."),c.vertical=angular.isDefined(e.vertical)?c.$parent.$eval(e.vertical):!1,c.justified=angular.isDefined(e.justified)?c.$parent.$eval(e.justified):!1}}}]).directive("tab",["$parse","$log","$tabsSuppressWarning",function(a,b,c){return{require:"^tabset",restrict:"EA",replace:!0,templateUrl:"template/tabs/tab.html",transclude:!0,scope:{active:"=?",heading:"@",onSelect:"&select",onDeselect:"&deselect"},controller:function(){},link:function(d,e,f,g,h){c||b.warn("tab is now deprecated. Use uib-tab instead."),d.$watch("active",function(a){a&&g.select(d)}),d.disabled=!1,f.disable&&d.$parent.$watch(a(f.disable),function(a){d.disabled=!!a}),d.select=function(){d.disabled||(d.active=!0)},g.addTab(d),d.$on("$destroy",function(){g.removeTab(d)}),d.$transcludeFn=h}}}]).directive("tabHeadingTransclude",["$log","$tabsSuppressWarning",function(a,b){return{restrict:"A",require:"^tab",link:function(c,d){b||a.warn("tab-heading-transclude is now deprecated. Use uib-tab-heading-transclude instead."),c.$watch("headingElement",function(a){a&&(d.html(""),d.append(a))})}}}]).directive("tabContentTransclude",["$log","$tabsSuppressWarning",function(a,b){function c(a){return a.tagName&&(a.hasAttribute("tab-heading")||a.hasAttribute("data-tab-heading")||a.hasAttribute("x-tab-heading")||"tab-heading"===a.tagName.toLowerCase()||"data-tab-heading"===a.tagName.toLowerCase()||"x-tab-heading"===a.tagName.toLowerCase())}return{restrict:"A",require:"^tabset",link:function(d,e,f){b||a.warn("tab-content-transclude is now deprecated. Use uib-tab-content-transclude instead.");var g=d.$eval(f.tabContentTransclude);g.$transcludeFn(g.$parent,function(a){angular.forEach(a,function(a){c(a)?g.headingElement=a:e.append(a)})})}}}]),angular.module("ui.bootstrap.timepicker",[]).constant("uibTimepickerConfig",{hourStep:1,minuteStep:1,showMeridian:!0,meridians:null,readonlyInput:!1,mousewheel:!0,arrowkeys:!0,showSpinners:!0}).controller("UibTimepickerController",["$scope","$element","$attrs","$parse","$log","$locale","uibTimepickerConfig",function(a,b,c,d,e,f,g){function h(){var b=parseInt(a.hours,10),c=a.showMeridian?b>0&&13>b:b>=0&&24>b;return c?(a.showMeridian&&(12===b&&(b=0),a.meridian===r[1]&&(b+=12)),b):void 0}function i(){var b=parseInt(a.minutes,10);return b>=0&&60>b?b:void 0}function j(a){return angular.isDefined(a)&&a.toString().length<2?"0"+a:a.toString()}function k(a){l(),q.$setViewValue(new Date(p)),m(a)}function l(){q.$setValidity("time",!0),a.invalidHours=!1,a.invalidMinutes=!1}function m(b){var c=p.getHours(),d=p.getMinutes();a.showMeridian&&(c=0===c||12===c?12:c%12),a.hours="h"===b?c:j(c),"m"!==b&&(a.minutes=j(d)),a.meridian=p.getHours()<12?r[0]:r[1]}function n(a,b){var c=new Date(a.getTime()+6e4*b),d=new Date(a);return d.setHours(c.getHours(),c.getMinutes()),d}function o(a){p=n(p,a),k()}var p=new Date,q={$setViewValue:angular.noop},r=angular.isDefined(c.meridians)?a.$parent.$eval(c.meridians):g.meridians||f.DATETIME_FORMATS.AMPMS;a.tabindex=angular.isDefined(c.tabindex)?c.tabindex:0,b.removeAttr("tabindex"),this.init=function(b,d){q=b,q.$render=this.render,q.$formatters.unshift(function(a){return a?new Date(a):null});var e=d.eq(0),f=d.eq(1),h=angular.isDefined(c.mousewheel)?a.$parent.$eval(c.mousewheel):g.mousewheel;h&&this.setupMousewheelEvents(e,f);var i=angular.isDefined(c.arrowkeys)?a.$parent.$eval(c.arrowkeys):g.arrowkeys;i&&this.setupArrowkeyEvents(e,f),a.readonlyInput=angular.isDefined(c.readonlyInput)?a.$parent.$eval(c.readonlyInput):g.readonlyInput,this.setupInputEvents(e,f)};var s=g.hourStep;c.hourStep&&a.$parent.$watch(d(c.hourStep),function(a){s=parseInt(a,10)});var t=g.minuteStep;c.minuteStep&&a.$parent.$watch(d(c.minuteStep),function(a){t=parseInt(a,10)});var u;a.$parent.$watch(d(c.min),function(a){var b=new Date(a);u=isNaN(b)?void 0:b});var v;a.$parent.$watch(d(c.max),function(a){var b=new Date(a);v=isNaN(b)?void 0:b}),a.noIncrementHours=function(){var a=n(p,60*s); +return a>v||p>a&&u>a},a.noDecrementHours=function(){var a=n(p,60*-s);return u>a||a>p&&a>v},a.noIncrementMinutes=function(){var a=n(p,t);return a>v||p>a&&u>a},a.noDecrementMinutes=function(){var a=n(p,-t);return u>a||a>p&&a>v},a.noToggleMeridian=function(){return p.getHours()<13?n(p,720)>v:n(p,-720)0};b.bind("mousewheel wheel",function(b){a.$apply(d(b)?a.incrementHours():a.decrementHours()),b.preventDefault()}),c.bind("mousewheel wheel",function(b){a.$apply(d(b)?a.incrementMinutes():a.decrementMinutes()),b.preventDefault()})},this.setupArrowkeyEvents=function(b,c){b.bind("keydown",function(b){38===b.which?(b.preventDefault(),a.incrementHours(),a.$apply()):40===b.which&&(b.preventDefault(),a.decrementHours(),a.$apply())}),c.bind("keydown",function(b){38===b.which?(b.preventDefault(),a.incrementMinutes(),a.$apply()):40===b.which&&(b.preventDefault(),a.decrementMinutes(),a.$apply())})},this.setupInputEvents=function(b,c){if(a.readonlyInput)return a.updateHours=angular.noop,void(a.updateMinutes=angular.noop);var d=function(b,c){q.$setViewValue(null),q.$setValidity("time",!1),angular.isDefined(b)&&(a.invalidHours=b),angular.isDefined(c)&&(a.invalidMinutes=c)};a.updateHours=function(){var a=h(),b=i();angular.isDefined(a)&&angular.isDefined(b)?(p.setHours(a),u>p||p>v?d(!0):k("h")):d(!0)},b.bind("blur",function(b){!a.invalidHours&&a.hours<10&&a.$apply(function(){a.hours=j(a.hours)})}),a.updateMinutes=function(){var a=i(),b=h();angular.isDefined(a)&&angular.isDefined(b)?(p.setMinutes(a),u>p||p>v?d(void 0,!0):k("m")):d(void 0,!0)},c.bind("blur",function(b){!a.invalidMinutes&&a.minutes<10&&a.$apply(function(){a.minutes=j(a.minutes)})})},this.render=function(){var b=q.$viewValue;isNaN(b)?(q.$setValidity("time",!1),e.error('Timepicker directive: "ng-model" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.')):(b&&(p=b),u>p||p>v?(q.$setValidity("time",!1),a.invalidHours=!0,a.invalidMinutes=!0):l(),m())},a.showSpinners=angular.isDefined(c.showSpinners)?a.$parent.$eval(c.showSpinners):g.showSpinners,a.incrementHours=function(){a.noIncrementHours()||o(60*s)},a.decrementHours=function(){a.noDecrementHours()||o(60*-s)},a.incrementMinutes=function(){a.noIncrementMinutes()||o(t)},a.decrementMinutes=function(){a.noDecrementMinutes()||o(-t)},a.toggleMeridian=function(){a.noToggleMeridian()||o(720*(p.getHours()<12?1:-1))}}]).directive("uibTimepicker",function(){return{restrict:"EA",require:["uibTimepicker","?^ngModel"],controller:"UibTimepickerController",controllerAs:"timepicker",replace:!0,scope:{},templateUrl:function(a,b){return b.templateUrl||"template/timepicker/timepicker.html"},link:function(a,b,c,d){var e=d[0],f=d[1];f&&e.init(f,b.find("input"))}}}),angular.module("ui.bootstrap.timepicker").value("$timepickerSuppressWarning",!1).controller("TimepickerController",["$scope","$element","$attrs","$controller","$log","$timepickerSuppressWarning",function(a,b,c,d,e,f){f||e.warn("TimepickerController is now deprecated. Use UibTimepickerController instead."),angular.extend(this,d("UibTimepickerController",{$scope:a,$element:b,$attrs:c}))}]).directive("timepicker",["$log","$timepickerSuppressWarning",function(a,b){return{restrict:"EA",require:["timepicker","?^ngModel"],controller:"TimepickerController",controllerAs:"timepicker",replace:!0,scope:{},templateUrl:function(a,b){return b.templateUrl||"template/timepicker/timepicker.html"},link:function(c,d,e,f){b||a.warn("timepicker is now deprecated. Use uib-timepicker instead.");var g=f[0],h=f[1];h&&g.init(h,d.find("input"))}}}]),angular.module("ui.bootstrap.typeahead",["ui.bootstrap.position"]).factory("uibTypeaheadParser",["$parse",function(a){var b=/^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w\d]*))\s+in\s+([\s\S]+?)$/;return{parse:function(c){var d=c.match(b);if(!d)throw new Error('Expected typeahead specification in form of "_modelValue_ (as _label_)? for _item_ in _collection_" but got "'+c+'".');return{itemName:d[3],source:a(d[4]),viewMapper:a(d[2]||d[1]),modelMapper:a(d[1])}}}}]).controller("UibTypeaheadController",["$scope","$element","$attrs","$compile","$parse","$q","$timeout","$document","$window","$rootScope","$uibPosition","uibTypeaheadParser",function(a,b,c,d,e,f,g,h,i,j,k,l){function m(){K.moveInProgress||(K.moveInProgress=!0,K.$digest()),S&&g.cancel(S),S=g(function(){K.matches.length&&n(),K.moveInProgress=!1},r)}function n(){K.position=C?k.offset(b):k.position(b),K.position.top+=b.prop("offsetHeight")}var o,p,q=[9,13,27,38,40],r=200,s=a.$eval(c.typeaheadMinLength);s||0===s||(s=1);var t,u,v=a.$eval(c.typeaheadWaitMs)||0,w=a.$eval(c.typeaheadEditable)!==!1,x=e(c.typeaheadLoading).assign||angular.noop,y=e(c.typeaheadOnSelect),z=angular.isDefined(c.typeaheadSelectOnBlur)?a.$eval(c.typeaheadSelectOnBlur):!1,A=e(c.typeaheadNoResults).assign||angular.noop,B=c.typeaheadInputFormatter?e(c.typeaheadInputFormatter):void 0,C=c.typeaheadAppendToBody?a.$eval(c.typeaheadAppendToBody):!1,D=c.typeaheadAppendToElementId||!1,E=a.$eval(c.typeaheadFocusFirst)!==!1,F=c.typeaheadSelectOnExact?a.$eval(c.typeaheadSelectOnExact):!1,G=e(c.ngModel),H=e(c.ngModel+"($$$p)"),I=function(b,c){return angular.isFunction(G(a))&&p&&p.$options&&p.$options.getterSetter?H(b,{$$$p:c}):G.assign(b,c)},J=l.parse(c.uibTypeahead),K=a.$new(),L=a.$on("$destroy",function(){K.$destroy()});K.$on("$destroy",L);var M="typeahead-"+K.$id+"-"+Math.floor(1e4*Math.random());b.attr({"aria-autocomplete":"list","aria-expanded":!1,"aria-owns":M});var N=angular.element("
      ");N.attr({id:M,matches:"matches",active:"activeIdx",select:"select(activeIdx)","move-in-progress":"moveInProgress",query:"query",position:"position"}),angular.isDefined(c.typeaheadTemplateUrl)&&N.attr("template-url",c.typeaheadTemplateUrl),angular.isDefined(c.typeaheadPopupTemplateUrl)&&N.attr("popup-template-url",c.typeaheadPopupTemplateUrl);var O=function(){K.matches=[],K.activeIdx=-1,b.attr("aria-expanded",!1)},P=function(a){return M+"-option-"+a};K.$watch("activeIdx",function(a){0>a?b.removeAttr("aria-activedescendant"):b.attr("aria-activedescendant",P(a))});var Q=function(a,b){return K.matches.length>b&&a?a.toUpperCase()===K.matches[b].label.toUpperCase():!1},R=function(c){var d={$viewValue:c};x(a,!0),A(a,!1),f.when(J.source(a,d)).then(function(e){var f=c===o.$viewValue;if(f&&t)if(e&&e.length>0){K.activeIdx=E?0:-1,A(a,!1),K.matches.length=0;for(var g=0;g0?K.activeIdx:K.matches.length)-1,K.$digest()):13===a.which||9===a.which?K.$apply(function(){K.select(K.activeIdx)}):27===a.which&&(a.stopPropagation(),O(),K.$digest())}}),b.bind("blur",function(){z&&K.matches.length&&-1!==K.activeIdx&&!u&&(u=!0,K.$apply(function(){K.select(K.activeIdx)})),t=!1,u=!1});var W=function(a){b[0]!==a.target&&3!==a.which&&0!==K.matches.length&&(O(),j.$$phase||K.$digest())};h.bind("click",W),a.$on("$destroy",function(){h.unbind("click",W),(C||D)&&X.remove(),C&&(angular.element(i).unbind("resize",m),h.find("body").unbind("scroll",m)),N.remove()});var X=d(N)(K);C?h.find("body").append(X):D!==!1?angular.element(h[0].getElementById(D)).append(X):b.after(X),this.init=function(b,c){o=b,p=c,o.$parsers.unshift(function(b){return t=!0,0===s||b&&b.length>=s?v>0?(V(),U(b)):R(b):(x(a,!1),V(),O()),w?b:b?void o.$setValidity("editable",!1):(o.$setValidity("editable",!0),null)}),o.$formatters.push(function(b){var c,d,e={};return w||o.$setValidity("editable",!0),B?(e.$model=b,B(a,e)):(e[J.itemName]=b,c=J.viewMapper(a,e),e[J.itemName]=void 0,d=J.viewMapper(a,e),c!==d?c:b)})}}]).directive("uibTypeahead",function(){return{controller:"UibTypeaheadController",require:["ngModel","^?ngModelOptions","uibTypeahead"],link:function(a,b,c,d){d[2].init(d[0],d[1])}}}).directive("uibTypeaheadPopup",function(){return{scope:{matches:"=",query:"=",active:"=",position:"&",moveInProgress:"=",select:"&"},replace:!0,templateUrl:function(a,b){return b.popupTemplateUrl||"template/typeahead/typeahead-popup.html"},link:function(a,b,c){a.templateUrl=c.templateUrl,a.isOpen=function(){return a.matches.length>0},a.isActive=function(b){return a.active==b},a.selectActive=function(b){a.active=b},a.selectMatch=function(b){a.select({activeIdx:b})}}}}).directive("uibTypeaheadMatch",["$templateRequest","$compile","$parse",function(a,b,c){return{scope:{index:"=",match:"=",query:"="},link:function(d,e,f){var g=c(f.templateUrl)(d.$parent)||"template/typeahead/typeahead-match.html";a(g).then(function(a){b(a.trim())(d,function(a){e.replaceWith(a)})})}}}]).filter("uibTypeaheadHighlight",["$sce","$injector","$log",function(a,b,c){function d(a){return a.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}function e(a){return/<.*>/g.test(a)}var f;return f=b.has("$sanitize"),function(b,g){return!f&&e(b)&&c.warn("Unsafe use of typeahead please use ngSanitize"),b=g?(""+b).replace(new RegExp(d(g),"gi"),"$&"):b,f||(b=a.trustAsHtml(b)),b}}]),angular.module("ui.bootstrap.typeahead").value("$typeaheadSuppressWarning",!1).service("typeaheadParser",["$parse","uibTypeaheadParser","$log","$typeaheadSuppressWarning",function(a,b,c,d){return d||c.warn("typeaheadParser is now deprecated. Use uibTypeaheadParser instead."),b}]).directive("typeahead",["$compile","$parse","$q","$timeout","$document","$window","$rootScope","$uibPosition","typeaheadParser","$log","$typeaheadSuppressWarning",function(a,b,c,d,e,f,g,h,i,j,k){var l=[9,13,27,38,40],m=200;return{require:["ngModel","^?ngModelOptions"],link:function(n,o,p,q){function r(){N.moveInProgress||(N.moveInProgress=!0,N.$digest()),V&&d.cancel(V),V=d(function(){N.matches.length&&s(),N.moveInProgress=!1},m)}function s(){N.position=F?h.offset(o):h.position(o),N.position.top+=o.prop("offsetHeight")}k||j.warn("typeahead is now deprecated. Use uib-typeahead instead.");var t=q[0],u=q[1],v=n.$eval(p.typeaheadMinLength);v||0===v||(v=1);var w,x,y=n.$eval(p.typeaheadWaitMs)||0,z=n.$eval(p.typeaheadEditable)!==!1,A=b(p.typeaheadLoading).assign||angular.noop,B=b(p.typeaheadOnSelect),C=angular.isDefined(p.typeaheadSelectOnBlur)?n.$eval(p.typeaheadSelectOnBlur):!1,D=b(p.typeaheadNoResults).assign||angular.noop,E=p.typeaheadInputFormatter?b(p.typeaheadInputFormatter):void 0,F=p.typeaheadAppendToBody?n.$eval(p.typeaheadAppendToBody):!1,G=p.typeaheadAppendToElementId||!1,H=n.$eval(p.typeaheadFocusFirst)!==!1,I=p.typeaheadSelectOnExact?n.$eval(p.typeaheadSelectOnExact):!1,J=b(p.ngModel),K=b(p.ngModel+"($$$p)"),L=function(a,b){return angular.isFunction(J(n))&&u&&u.$options&&u.$options.getterSetter?K(a,{$$$p:b}):J.assign(a,b)},M=i.parse(p.typeahead),N=n.$new(),O=n.$on("$destroy",function(){N.$destroy()});N.$on("$destroy",O);var P="typeahead-"+N.$id+"-"+Math.floor(1e4*Math.random());o.attr({"aria-autocomplete":"list","aria-expanded":!1,"aria-owns":P});var Q=angular.element("
      ");Q.attr({id:P,matches:"matches",active:"activeIdx",select:"select(activeIdx)","move-in-progress":"moveInProgress",query:"query",position:"position"}),angular.isDefined(p.typeaheadTemplateUrl)&&Q.attr("template-url",p.typeaheadTemplateUrl),angular.isDefined(p.typeaheadPopupTemplateUrl)&&Q.attr("popup-template-url",p.typeaheadPopupTemplateUrl);var R=function(){N.matches=[],N.activeIdx=-1,o.attr("aria-expanded",!1)},S=function(a){return P+"-option-"+a};N.$watch("activeIdx",function(a){0>a?o.removeAttr("aria-activedescendant"):o.attr("aria-activedescendant",S(a))});var T=function(a,b){return N.matches.length>b&&a?a.toUpperCase()===N.matches[b].label.toUpperCase():!1},U=function(a){var b={$viewValue:a};A(n,!0),D(n,!1),c.when(M.source(n,b)).then(function(c){var d=a===t.$viewValue;if(d&&w)if(c&&c.length>0){N.activeIdx=H?0:-1,D(n,!1),N.matches.length=0;for(var e=0;e=v?y>0?(Y(),X(a)):U(a):(A(n,!1),Y(),R()),z?a:a?void t.$setValidity("editable",!1):(t.$setValidity("editable",!0),null)}),t.$formatters.push(function(a){var b,c,d={};return z||t.$setValidity("editable",!0),E?(d.$model=a,E(n,d)):(d[M.itemName]=a,b=M.viewMapper(n,d),d[M.itemName]=void 0,c=M.viewMapper(n,d),b!==c?b:a)}),N.select=function(a){var b,c,e={};x=!0,e[M.itemName]=c=N.matches[a].model,b=M.modelMapper(n,e),L(n,b),t.$setValidity("editable",!0),t.$setValidity("parse",!0),B(n,{$item:c,$model:b,$label:M.viewMapper(n,e)}),R(),N.$eval(p.typeaheadFocusOnSelect)!==!1&&d(function(){o[0].focus()},0,!1)},o.bind("keydown",function(a){if(0!==N.matches.length&&-1!==l.indexOf(a.which)){if(-1===N.activeIdx&&(9===a.which||13===a.which))return R(),void N.$digest();a.preventDefault(),40===a.which?(N.activeIdx=(N.activeIdx+1)%N.matches.length,N.$digest()):38===a.which?(N.activeIdx=(N.activeIdx>0?N.activeIdx:N.matches.length)-1,N.$digest()):13===a.which||9===a.which?N.$apply(function(){N.select(N.activeIdx)}):27===a.which&&(a.stopPropagation(),R(),N.$digest())}}),o.bind("blur",function(){C&&N.matches.length&&-1!==N.activeIdx&&!x&&(x=!0,N.$apply(function(){N.select(N.activeIdx)})),w=!1,x=!1});var Z=function(a){o[0]!==a.target&&3!==a.which&&0!==N.matches.length&&(R(),g.$$phase||N.$digest())};e.bind("click",Z),n.$on("$destroy",function(){e.unbind("click",Z),(F||G)&&$.remove(),F&&(angular.element(f).unbind("resize",r),e.find("body").unbind("scroll",r)),Q.remove()});var $=a(Q)(N);F?e.find("body").append($):G!==!1?angular.element(e[0].getElementById(G)).append($):o.after($)}}}]).directive("typeaheadPopup",["$typeaheadSuppressWarning","$log",function(a,b){return{scope:{matches:"=",query:"=",active:"=",position:"&",moveInProgress:"=",select:"&"},replace:!0,templateUrl:function(a,b){return b.popupTemplateUrl||"template/typeahead/typeahead-popup.html"},link:function(c,d,e){a||b.warn("typeahead-popup is now deprecated. Use uib-typeahead-popup instead."),c.templateUrl=e.templateUrl,c.isOpen=function(){return c.matches.length>0},c.isActive=function(a){return c.active==a},c.selectActive=function(a){c.active=a},c.selectMatch=function(a){c.select({activeIdx:a})}}}}]).directive("typeaheadMatch",["$templateRequest","$compile","$parse","$typeaheadSuppressWarning","$log",function(a,b,c,d,e){return{restrict:"EA",scope:{index:"=",match:"=",query:"="},link:function(f,g,h){d||e.warn("typeahead-match is now deprecated. Use uib-typeahead-match instead.");var i=c(h.templateUrl)(f.$parent)||"template/typeahead/typeahead-match.html";a(i).then(function(a){b(a.trim())(f,function(a){g.replaceWith(a)})})}}}]).filter("typeaheadHighlight",["$sce","$injector","$log","$typeaheadSuppressWarning",function(a,b,c,d){function e(a){return a.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}function f(a){return/<.*>/g.test(a)}var g;return g=b.has("$sanitize"),function(b,h){return d||c.warn("typeaheadHighlight is now deprecated. Use uibTypeaheadHighlight instead."),!g&&f(b)&&c.warn("Unsafe use of typeahead please use ngSanitize"),b=h?(""+b).replace(new RegExp(e(h),"gi"),"$&"):b,g||(b=a.trustAsHtml(b)),b}}]),angular.module("template/accordion/accordion-group.html",[]).run(["$templateCache",function(a){a.put("template/accordion/accordion-group.html",'
      \n
      \n

      \n {{heading}}\n

      \n
      \n
      \n
      \n
      \n
      \n')}]),angular.module("template/accordion/accordion.html",[]).run(["$templateCache",function(a){a.put("template/accordion/accordion.html",'
      ')}]),angular.module("template/alert/alert.html",[]).run(["$templateCache",function(a){a.put("template/alert/alert.html",'\n')}]),angular.module("template/carousel/carousel.html",[]).run(["$templateCache",function(a){a.put("template/carousel/carousel.html",'')}]),angular.module("template/carousel/slide.html",[]).run(["$templateCache",function(a){a.put("template/carousel/slide.html",'
      \n')}]),angular.module("template/datepicker/datepicker.html",[]).run(["$templateCache",function(a){a.put("template/datepicker/datepicker.html",'
      \n \n \n \n
      ')}]),angular.module("template/datepicker/day.html",[]).run(["$templateCache",function(a){a.put("template/datepicker/day.html",'\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
      {{::label.abbr}}
      {{ weekNumbers[$index] }}\n \n
      \n')}]),angular.module("template/datepicker/month.html",[]).run(["$templateCache",function(a){a.put("template/datepicker/month.html",'\n \n \n \n \n \n \n \n \n \n \n \n \n
      \n \n
      \n')}]),angular.module("template/datepicker/popup.html",[]).run(["$templateCache",function(a){a.put("template/datepicker/popup.html",'\n')}]),angular.module("template/datepicker/year.html",[]).run(["$templateCache",function(a){a.put("template/datepicker/year.html",'\n \n \n \n \n \n \n \n \n \n \n \n \n
      \n \n
      \n')}]),angular.module("template/modal/backdrop.html",[]).run(["$templateCache",function(a){a.put("template/modal/backdrop.html",'
      \n')}]),angular.module("template/modal/window.html",[]).run(["$templateCache",function(a){a.put("template/modal/window.html",'\n')}]),angular.module("template/pagination/pager.html",[]).run(["$templateCache",function(a){a.put("template/pagination/pager.html",'\n')}]),angular.module("template/pagination/pagination.html",[]).run(["$templateCache",function(a){a.put("template/pagination/pagination.html",'\n')}]),angular.module("template/tooltip/tooltip-html-popup.html",[]).run(["$templateCache",function(a){a.put("template/tooltip/tooltip-html-popup.html",'\n
      \n
      \n\n')}]),angular.module("template/tooltip/tooltip-popup.html",[]).run(["$templateCache",function(a){a.put("template/tooltip/tooltip-popup.html",'\n
      \n
      \n\n')}]),angular.module("template/tooltip/tooltip-template-popup.html",[]).run(["$templateCache",function(a){a.put("template/tooltip/tooltip-template-popup.html",'\n
      \n
      \n\n')}]),angular.module("template/popover/popover-html.html",[]).run(["$templateCache",function(a){a.put("template/popover/popover-html.html",'
      \n
      \n\n
      \n

      \n
      \n
      \n
      \n')}]),angular.module("template/popover/popover-template.html",[]).run(["$templateCache",function(a){a.put("template/popover/popover-template.html",'
      \n
      \n\n
      \n

      \n
      \n
      \n
      \n')}]),angular.module("template/popover/popover.html",[]).run(["$templateCache",function(a){a.put("template/popover/popover.html",'
      \n
      \n\n
      \n

      \n
      \n
      \n
      \n')}]),angular.module("template/progressbar/bar.html",[]).run(["$templateCache",function(a){a.put("template/progressbar/bar.html",'
      \n')}]),angular.module("template/progressbar/progress.html",[]).run(["$templateCache",function(a){a.put("template/progressbar/progress.html",'
      ')}]),angular.module("template/progressbar/progressbar.html",[]).run(["$templateCache",function(a){a.put("template/progressbar/progressbar.html",'
      \n
      \n
      \n')}]),angular.module("template/rating/rating.html",[]).run(["$templateCache",function(a){a.put("template/rating/rating.html",'\n ({{ $index < value ? \'*\' : \' \' }})\n \n\n'); +}]),angular.module("template/tabs/tab.html",[]).run(["$templateCache",function(a){a.put("template/tabs/tab.html",'
    • \n {{heading}}\n
    • \n')}]),angular.module("template/tabs/tabset.html",[]).run(["$templateCache",function(a){a.put("template/tabs/tabset.html",'
      \n \n
      \n
      \n
      \n
      \n
      \n')}]),angular.module("template/timepicker/timepicker.html",[]).run(["$templateCache",function(a){a.put("template/timepicker/timepicker.html",'\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
       
      \n \n :\n \n
       
      \n')}]),angular.module("template/typeahead/typeahead-match.html",[]).run(["$templateCache",function(a){a.put("template/typeahead/typeahead-match.html",'\n')}]),angular.module("template/typeahead/typeahead-popup.html",[]).run(["$templateCache",function(a){a.put("template/typeahead/typeahead-popup.html",'\n')}]),!angular.$$csp()&&angular.element(document).find("head").prepend(''); \ No newline at end of file diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/ui-bootstrap.js b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/ui-bootstrap.js new file mode 100644 index 00000000..9287bb54 --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/ui-bootstrap.js @@ -0,0 +1,8126 @@ +/* + * angular-ui-bootstrap + * http://angular-ui.github.io/bootstrap/ + + * Version: 0.14.3 - 2015-10-23 + * License: MIT + */ +angular.module("ui.bootstrap", ["ui.bootstrap.collapse","ui.bootstrap.accordion","ui.bootstrap.alert","ui.bootstrap.buttons","ui.bootstrap.carousel","ui.bootstrap.dateparser","ui.bootstrap.position","ui.bootstrap.datepicker","ui.bootstrap.dropdown","ui.bootstrap.stackedMap","ui.bootstrap.modal","ui.bootstrap.pagination","ui.bootstrap.tooltip","ui.bootstrap.popover","ui.bootstrap.progressbar","ui.bootstrap.rating","ui.bootstrap.tabs","ui.bootstrap.timepicker","ui.bootstrap.typeahead"]); +angular.module('ui.bootstrap.collapse', []) + + .directive('uibCollapse', ['$animate', '$injector', function($animate, $injector) { + var $animateCss = $injector.has('$animateCss') ? $injector.get('$animateCss') : null; + return { + link: function(scope, element, attrs) { + function expand() { + element.removeClass('collapse') + .addClass('collapsing') + .attr('aria-expanded', true) + .attr('aria-hidden', false); + + if ($animateCss) { + $animateCss(element, { + addClass: 'in', + easing: 'ease', + to: { height: element[0].scrollHeight + 'px' } + }).start().finally(expandDone); + } else { + $animate.addClass(element, 'in', { + to: { height: element[0].scrollHeight + 'px' } + }).then(expandDone); + } + } + + function expandDone() { + element.removeClass('collapsing') + .addClass('collapse') + .css({height: 'auto'}); + } + + function collapse() { + if (!element.hasClass('collapse') && !element.hasClass('in')) { + return collapseDone(); + } + + element + // IMPORTANT: The height must be set before adding "collapsing" class. + // Otherwise, the browser attempts to animate from height 0 (in + // collapsing class) to the given height here. + .css({height: element[0].scrollHeight + 'px'}) + // initially all panel collapse have the collapse class, this removal + // prevents the animation from jumping to collapsed state + .removeClass('collapse') + .addClass('collapsing') + .attr('aria-expanded', false) + .attr('aria-hidden', true); + + if ($animateCss) { + $animateCss(element, { + removeClass: 'in', + to: {height: '0'} + }).start().finally(collapseDone); + } else { + $animate.removeClass(element, 'in', { + to: {height: '0'} + }).then(collapseDone); + } + } + + function collapseDone() { + element.css({height: '0'}); // Required so that collapse works when animation is disabled + element.removeClass('collapsing') + .addClass('collapse'); + } + + scope.$watch(attrs.uibCollapse, function(shouldCollapse) { + if (shouldCollapse) { + collapse(); + } else { + expand(); + } + }); + } + }; + }]); + +/* Deprecated collapse below */ + +angular.module('ui.bootstrap.collapse') + + .value('$collapseSuppressWarning', false) + + .directive('collapse', ['$animate', '$injector', '$log', '$collapseSuppressWarning', function($animate, $injector, $log, $collapseSuppressWarning) { + var $animateCss = $injector.has('$animateCss') ? $injector.get('$animateCss') : null; + return { + link: function(scope, element, attrs) { + if (!$collapseSuppressWarning) { + $log.warn('collapse is now deprecated. Use uib-collapse instead.'); + } + + function expand() { + element.removeClass('collapse') + .addClass('collapsing') + .attr('aria-expanded', true) + .attr('aria-hidden', false); + + if ($animateCss) { + $animateCss(element, { + easing: 'ease', + to: { height: element[0].scrollHeight + 'px' } + }).start().done(expandDone); + } else { + $animate.animate(element, {}, { + height: element[0].scrollHeight + 'px' + }).then(expandDone); + } + } + + function expandDone() { + element.removeClass('collapsing') + .addClass('collapse in') + .css({height: 'auto'}); + } + + function collapse() { + if (!element.hasClass('collapse') && !element.hasClass('in')) { + return collapseDone(); + } + + element + // IMPORTANT: The height must be set before adding "collapsing" class. + // Otherwise, the browser attempts to animate from height 0 (in + // collapsing class) to the given height here. + .css({height: element[0].scrollHeight + 'px'}) + // initially all panel collapse have the collapse class, this removal + // prevents the animation from jumping to collapsed state + .removeClass('collapse in') + .addClass('collapsing') + .attr('aria-expanded', false) + .attr('aria-hidden', true); + + if ($animateCss) { + $animateCss(element, { + to: {height: '0'} + }).start().done(collapseDone); + } else { + $animate.animate(element, {}, { + height: '0' + }).then(collapseDone); + } + } + + function collapseDone() { + element.css({height: '0'}); // Required so that collapse works when animation is disabled + element.removeClass('collapsing') + .addClass('collapse'); + } + + scope.$watch(attrs.collapse, function(shouldCollapse) { + if (shouldCollapse) { + collapse(); + } else { + expand(); + } + }); + } + }; + }]); + +angular.module('ui.bootstrap.accordion', ['ui.bootstrap.collapse']) + +.constant('uibAccordionConfig', { + closeOthers: true +}) + +.controller('UibAccordionController', ['$scope', '$attrs', 'uibAccordionConfig', function($scope, $attrs, accordionConfig) { + // This array keeps track of the accordion groups + this.groups = []; + + // Ensure that all the groups in this accordion are closed, unless close-others explicitly says not to + this.closeOthers = function(openGroup) { + var closeOthers = angular.isDefined($attrs.closeOthers) ? + $scope.$eval($attrs.closeOthers) : accordionConfig.closeOthers; + if (closeOthers) { + angular.forEach(this.groups, function(group) { + if (group !== openGroup) { + group.isOpen = false; + } + }); + } + }; + + // This is called from the accordion-group directive to add itself to the accordion + this.addGroup = function(groupScope) { + var that = this; + this.groups.push(groupScope); + + groupScope.$on('$destroy', function(event) { + that.removeGroup(groupScope); + }); + }; + + // This is called from the accordion-group directive when to remove itself + this.removeGroup = function(group) { + var index = this.groups.indexOf(group); + if (index !== -1) { + this.groups.splice(index, 1); + } + }; + +}]) + +// The accordion directive simply sets up the directive controller +// and adds an accordion CSS class to itself element. +.directive('uibAccordion', function() { + return { + controller: 'UibAccordionController', + controllerAs: 'accordion', + transclude: true, + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/accordion/accordion.html'; + } + }; +}) + +// The accordion-group directive indicates a block of html that will expand and collapse in an accordion +.directive('uibAccordionGroup', function() { + return { + require: '^uibAccordion', // We need this directive to be inside an accordion + transclude: true, // It transcludes the contents of the directive into the template + replace: true, // The element containing the directive will be replaced with the template + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/accordion/accordion-group.html'; + }, + scope: { + heading: '@', // Interpolate the heading attribute onto this scope + isOpen: '=?', + isDisabled: '=?' + }, + controller: function() { + this.setHeading = function(element) { + this.heading = element; + }; + }, + link: function(scope, element, attrs, accordionCtrl) { + accordionCtrl.addGroup(scope); + + scope.openClass = attrs.openClass || 'panel-open'; + scope.panelClass = attrs.panelClass; + scope.$watch('isOpen', function(value) { + element.toggleClass(scope.openClass, !!value); + if (value) { + accordionCtrl.closeOthers(scope); + } + }); + + scope.toggleOpen = function($event) { + if (!scope.isDisabled) { + if (!$event || $event.which === 32) { + scope.isOpen = !scope.isOpen; + } + } + }; + } + }; +}) + +// Use accordion-heading below an accordion-group to provide a heading containing HTML +.directive('uibAccordionHeading', function() { + return { + transclude: true, // Grab the contents to be used as the heading + template: '', // In effect remove this element! + replace: true, + require: '^uibAccordionGroup', + link: function(scope, element, attrs, accordionGroupCtrl, transclude) { + // Pass the heading to the accordion-group controller + // so that it can be transcluded into the right place in the template + // [The second parameter to transclude causes the elements to be cloned so that they work in ng-repeat] + accordionGroupCtrl.setHeading(transclude(scope, angular.noop)); + } + }; +}) + +// Use in the accordion-group template to indicate where you want the heading to be transcluded +// You must provide the property on the accordion-group controller that will hold the transcluded element +.directive('uibAccordionTransclude', function() { + return { + require: ['?^uibAccordionGroup', '?^accordionGroup'], + link: function(scope, element, attrs, controller) { + controller = controller[0] ? controller[0] : controller[1]; // Delete after we remove deprecation + scope.$watch(function() { return controller[attrs.uibAccordionTransclude]; }, function(heading) { + if (heading) { + element.find('span').html(''); + element.find('span').append(heading); + } + }); + } + }; +}); + +/* Deprecated accordion below */ + +angular.module('ui.bootstrap.accordion') + + .value('$accordionSuppressWarning', false) + + .controller('AccordionController', ['$scope', '$attrs', '$controller', '$log', '$accordionSuppressWarning', function($scope, $attrs, $controller, $log, $accordionSuppressWarning) { + if (!$accordionSuppressWarning) { + $log.warn('AccordionController is now deprecated. Use UibAccordionController instead.'); + } + + angular.extend(this, $controller('UibAccordionController', { + $scope: $scope, + $attrs: $attrs + })); + }]) + + .directive('accordion', ['$log', '$accordionSuppressWarning', function($log, $accordionSuppressWarning) { + return { + restrict: 'EA', + controller: 'AccordionController', + controllerAs: 'accordion', + transclude: true, + replace: false, + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/accordion/accordion.html'; + }, + link: function() { + if (!$accordionSuppressWarning) { + $log.warn('accordion is now deprecated. Use uib-accordion instead.'); + } + } + }; + }]) + + .directive('accordionGroup', ['$log', '$accordionSuppressWarning', function($log, $accordionSuppressWarning) { + return { + require: '^accordion', // We need this directive to be inside an accordion + restrict: 'EA', + transclude: true, // It transcludes the contents of the directive into the template + replace: true, // The element containing the directive will be replaced with the template + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/accordion/accordion-group.html'; + }, + scope: { + heading: '@', // Interpolate the heading attribute onto this scope + isOpen: '=?', + isDisabled: '=?' + }, + controller: function() { + this.setHeading = function(element) { + this.heading = element; + }; + }, + link: function(scope, element, attrs, accordionCtrl) { + if (!$accordionSuppressWarning) { + $log.warn('accordion-group is now deprecated. Use uib-accordion-group instead.'); + } + + accordionCtrl.addGroup(scope); + + scope.openClass = attrs.openClass || 'panel-open'; + scope.panelClass = attrs.panelClass; + scope.$watch('isOpen', function(value) { + element.toggleClass(scope.openClass, !!value); + if (value) { + accordionCtrl.closeOthers(scope); + } + }); + + scope.toggleOpen = function($event) { + if (!scope.isDisabled) { + if (!$event || $event.which === 32) { + scope.isOpen = !scope.isOpen; + } + } + }; + } + }; + }]) + + .directive('accordionHeading', ['$log', '$accordionSuppressWarning', function($log, $accordionSuppressWarning) { + return { + restrict: 'EA', + transclude: true, // Grab the contents to be used as the heading + template: '', // In effect remove this element! + replace: true, + require: '^accordionGroup', + link: function(scope, element, attr, accordionGroupCtrl, transclude) { + if (!$accordionSuppressWarning) { + $log.warn('accordion-heading is now deprecated. Use uib-accordion-heading instead.'); + } + // Pass the heading to the accordion-group controller + // so that it can be transcluded into the right place in the template + // [The second parameter to transclude causes the elements to be cloned so that they work in ng-repeat] + accordionGroupCtrl.setHeading(transclude(scope, angular.noop)); + } + }; + }]) + + .directive('accordionTransclude', ['$log', '$accordionSuppressWarning', function($log, $accordionSuppressWarning) { + return { + require: '^accordionGroup', + link: function(scope, element, attr, controller) { + if (!$accordionSuppressWarning) { + $log.warn('accordion-transclude is now deprecated. Use uib-accordion-transclude instead.'); + } + + scope.$watch(function() { return controller[attr.accordionTransclude]; }, function(heading) { + if (heading) { + element.find('span').html(''); + element.find('span').append(heading); + } + }); + } + }; + }]); + + +angular.module('ui.bootstrap.alert', []) + +.controller('UibAlertController', ['$scope', '$attrs', '$interpolate', '$timeout', function($scope, $attrs, $interpolate, $timeout) { + $scope.closeable = !!$attrs.close; + + var dismissOnTimeout = angular.isDefined($attrs.dismissOnTimeout) ? + $interpolate($attrs.dismissOnTimeout)($scope.$parent) : null; + + if (dismissOnTimeout) { + $timeout(function() { + $scope.close(); + }, parseInt(dismissOnTimeout, 10)); + } +}]) + +.directive('uibAlert', function() { + return { + controller: 'UibAlertController', + controllerAs: 'alert', + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/alert/alert.html'; + }, + transclude: true, + replace: true, + scope: { + type: '@', + close: '&' + } + }; +}); + +/* Deprecated alert below */ + +angular.module('ui.bootstrap.alert') + + .value('$alertSuppressWarning', false) + + .controller('AlertController', ['$scope', '$attrs', '$controller', '$log', '$alertSuppressWarning', function($scope, $attrs, $controller, $log, $alertSuppressWarning) { + if (!$alertSuppressWarning) { + $log.warn('AlertController is now deprecated. Use UibAlertController instead.'); + } + + angular.extend(this, $controller('UibAlertController', { + $scope: $scope, + $attrs: $attrs + })); + }]) + + .directive('alert', ['$log', '$alertSuppressWarning', function($log, $alertSuppressWarning) { + return { + controller: 'AlertController', + controllerAs: 'alert', + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/alert/alert.html'; + }, + transclude: true, + replace: true, + scope: { + type: '@', + close: '&' + }, + link: function() { + if (!$alertSuppressWarning) { + $log.warn('alert is now deprecated. Use uib-alert instead.'); + } + } + }; + }]); + +angular.module('ui.bootstrap.buttons', []) + +.constant('uibButtonConfig', { + activeClass: 'active', + toggleEvent: 'click' +}) + +.controller('UibButtonsController', ['uibButtonConfig', function(buttonConfig) { + this.activeClass = buttonConfig.activeClass || 'active'; + this.toggleEvent = buttonConfig.toggleEvent || 'click'; +}]) + +.directive('uibBtnRadio', function() { + return { + require: ['uibBtnRadio', 'ngModel'], + controller: 'UibButtonsController', + controllerAs: 'buttons', + link: function(scope, element, attrs, ctrls) { + var buttonsCtrl = ctrls[0], ngModelCtrl = ctrls[1]; + + element.find('input').css({display: 'none'}); + + //model -> UI + ngModelCtrl.$render = function() { + element.toggleClass(buttonsCtrl.activeClass, angular.equals(ngModelCtrl.$modelValue, scope.$eval(attrs.uibBtnRadio))); + }; + + //ui->model + element.on(buttonsCtrl.toggleEvent, function() { + if (attrs.disabled) { + return; + } + + var isActive = element.hasClass(buttonsCtrl.activeClass); + + if (!isActive || angular.isDefined(attrs.uncheckable)) { + scope.$apply(function() { + ngModelCtrl.$setViewValue(isActive ? null : scope.$eval(attrs.uibBtnRadio)); + ngModelCtrl.$render(); + }); + } + }); + } + }; +}) + +.directive('uibBtnCheckbox', function() { + return { + require: ['uibBtnCheckbox', 'ngModel'], + controller: 'UibButtonsController', + controllerAs: 'button', + link: function(scope, element, attrs, ctrls) { + var buttonsCtrl = ctrls[0], ngModelCtrl = ctrls[1]; + + element.find('input').css({display: 'none'}); + + function getTrueValue() { + return getCheckboxValue(attrs.btnCheckboxTrue, true); + } + + function getFalseValue() { + return getCheckboxValue(attrs.btnCheckboxFalse, false); + } + + function getCheckboxValue(attribute, defaultValue) { + return angular.isDefined(attribute) ? scope.$eval(attribute) : defaultValue; + } + + //model -> UI + ngModelCtrl.$render = function() { + element.toggleClass(buttonsCtrl.activeClass, angular.equals(ngModelCtrl.$modelValue, getTrueValue())); + }; + + //ui->model + element.on(buttonsCtrl.toggleEvent, function() { + if (attrs.disabled) { + return; + } + + scope.$apply(function() { + ngModelCtrl.$setViewValue(element.hasClass(buttonsCtrl.activeClass) ? getFalseValue() : getTrueValue()); + ngModelCtrl.$render(); + }); + }); + } + }; +}); + +/* Deprecated buttons below */ + +angular.module('ui.bootstrap.buttons') + + .value('$buttonsSuppressWarning', false) + + .controller('ButtonsController', ['$controller', '$log', '$buttonsSuppressWarning', function($controller, $log, $buttonsSuppressWarning) { + if (!$buttonsSuppressWarning) { + $log.warn('ButtonsController is now deprecated. Use UibButtonsController instead.'); + } + + angular.extend(this, $controller('UibButtonsController')); + }]) + + .directive('btnRadio', ['$log', '$buttonsSuppressWarning', function($log, $buttonsSuppressWarning) { + return { + require: ['btnRadio', 'ngModel'], + controller: 'ButtonsController', + controllerAs: 'buttons', + link: function(scope, element, attrs, ctrls) { + if (!$buttonsSuppressWarning) { + $log.warn('btn-radio is now deprecated. Use uib-btn-radio instead.'); + } + + var buttonsCtrl = ctrls[0], ngModelCtrl = ctrls[1]; + + element.find('input').css({display: 'none'}); + + //model -> UI + ngModelCtrl.$render = function() { + element.toggleClass(buttonsCtrl.activeClass, angular.equals(ngModelCtrl.$modelValue, scope.$eval(attrs.btnRadio))); + }; + + //ui->model + element.bind(buttonsCtrl.toggleEvent, function() { + if (attrs.disabled) { + return; + } + + var isActive = element.hasClass(buttonsCtrl.activeClass); + + if (!isActive || angular.isDefined(attrs.uncheckable)) { + scope.$apply(function() { + ngModelCtrl.$setViewValue(isActive ? null : scope.$eval(attrs.btnRadio)); + ngModelCtrl.$render(); + }); + } + }); + } + }; + }]) + + .directive('btnCheckbox', ['$document', '$log', '$buttonsSuppressWarning', function($document, $log, $buttonsSuppressWarning) { + return { + require: ['btnCheckbox', 'ngModel'], + controller: 'ButtonsController', + controllerAs: 'button', + link: function(scope, element, attrs, ctrls) { + if (!$buttonsSuppressWarning) { + $log.warn('btn-checkbox is now deprecated. Use uib-btn-checkbox instead.'); + } + + var buttonsCtrl = ctrls[0], ngModelCtrl = ctrls[1]; + + element.find('input').css({display: 'none'}); + + function getTrueValue() { + return getCheckboxValue(attrs.btnCheckboxTrue, true); + } + + function getFalseValue() { + return getCheckboxValue(attrs.btnCheckboxFalse, false); + } + + function getCheckboxValue(attributeValue, defaultValue) { + var val = scope.$eval(attributeValue); + return angular.isDefined(val) ? val : defaultValue; + } + + //model -> UI + ngModelCtrl.$render = function() { + element.toggleClass(buttonsCtrl.activeClass, angular.equals(ngModelCtrl.$modelValue, getTrueValue())); + }; + + //ui->model + element.bind(buttonsCtrl.toggleEvent, function() { + if (attrs.disabled) { + return; + } + + scope.$apply(function() { + ngModelCtrl.$setViewValue(element.hasClass(buttonsCtrl.activeClass) ? getFalseValue() : getTrueValue()); + ngModelCtrl.$render(); + }); + }); + + //accessibility + element.on('keypress', function(e) { + if (attrs.disabled || e.which !== 32 || $document[0].activeElement !== element[0]) { + return; + } + + scope.$apply(function() { + ngModelCtrl.$setViewValue(element.hasClass(buttonsCtrl.activeClass) ? getFalseValue() : getTrueValue()); + ngModelCtrl.$render(); + }); + }); + } + }; + }]); + + +/** + * @ngdoc overview + * @name ui.bootstrap.carousel + * + * @description + * AngularJS version of an image carousel. + * + */ +angular.module('ui.bootstrap.carousel', []) + +.controller('UibCarouselController', ['$scope', '$element', '$interval', '$animate', function($scope, $element, $interval, $animate) { + var self = this, + slides = self.slides = $scope.slides = [], + NEW_ANIMATE = angular.version.minor >= 4, + NO_TRANSITION = 'uib-noTransition', + SLIDE_DIRECTION = 'uib-slideDirection', + currentIndex = -1, + currentInterval, isPlaying; + self.currentSlide = null; + + var destroyed = false; + /* direction: "prev" or "next" */ + self.select = $scope.select = function(nextSlide, direction) { + var nextIndex = $scope.indexOfSlide(nextSlide); + //Decide direction if it's not given + if (direction === undefined) { + direction = nextIndex > self.getCurrentIndex() ? 'next' : 'prev'; + } + //Prevent this user-triggered transition from occurring if there is already one in progress + if (nextSlide && nextSlide !== self.currentSlide && !$scope.$currentTransition) { + goNext(nextSlide, nextIndex, direction); + } + }; + + function goNext(slide, index, direction) { + // Scope has been destroyed, stop here. + if (destroyed) { return; } + + angular.extend(slide, {direction: direction, active: true}); + angular.extend(self.currentSlide || {}, {direction: direction, active: false}); + if ($animate.enabled() && !$scope.noTransition && !$scope.$currentTransition && + slide.$element && self.slides.length > 1) { + slide.$element.data(SLIDE_DIRECTION, slide.direction); + if (self.currentSlide && self.currentSlide.$element) { + self.currentSlide.$element.data(SLIDE_DIRECTION, slide.direction); + } + + $scope.$currentTransition = true; + if (NEW_ANIMATE) { + $animate.on('addClass', slide.$element, function(element, phase) { + if (phase === 'close') { + $scope.$currentTransition = null; + $animate.off('addClass', element); + } + }); + } else { + slide.$element.one('$animate:close', function closeFn() { + $scope.$currentTransition = null; + }); + } + } + + self.currentSlide = slide; + currentIndex = index; + + //every time you change slides, reset the timer + restartTimer(); + } + + $scope.$on('$destroy', function() { + destroyed = true; + }); + + function getSlideByIndex(index) { + if (angular.isUndefined(slides[index].index)) { + return slides[index]; + } + var i, len = slides.length; + for (i = 0; i < slides.length; ++i) { + if (slides[i].index == index) { + return slides[i]; + } + } + } + + self.getCurrentIndex = function() { + if (self.currentSlide && angular.isDefined(self.currentSlide.index)) { + return +self.currentSlide.index; + } + return currentIndex; + }; + + /* Allow outside people to call indexOf on slides array */ + $scope.indexOfSlide = function(slide) { + return angular.isDefined(slide.index) ? +slide.index : slides.indexOf(slide); + }; + + $scope.next = function() { + var newIndex = (self.getCurrentIndex() + 1) % slides.length; + + if (newIndex === 0 && $scope.noWrap()) { + $scope.pause(); + return; + } + + return self.select(getSlideByIndex(newIndex), 'next'); + }; + + $scope.prev = function() { + var newIndex = self.getCurrentIndex() - 1 < 0 ? slides.length - 1 : self.getCurrentIndex() - 1; + + if ($scope.noWrap() && newIndex === slides.length - 1) { + $scope.pause(); + return; + } + + return self.select(getSlideByIndex(newIndex), 'prev'); + }; + + $scope.isActive = function(slide) { + return self.currentSlide === slide; + }; + + $scope.$watch('interval', restartTimer); + $scope.$watchCollection('slides', resetTransition); + $scope.$on('$destroy', resetTimer); + + function restartTimer() { + resetTimer(); + var interval = +$scope.interval; + if (!isNaN(interval) && interval > 0) { + currentInterval = $interval(timerFn, interval); + } + } + + function resetTimer() { + if (currentInterval) { + $interval.cancel(currentInterval); + currentInterval = null; + } + } + + function timerFn() { + var interval = +$scope.interval; + if (isPlaying && !isNaN(interval) && interval > 0 && slides.length) { + $scope.next(); + } else { + $scope.pause(); + } + } + + function resetTransition(slides) { + if (!slides.length) { + $scope.$currentTransition = null; + } + } + + $scope.play = function() { + if (!isPlaying) { + isPlaying = true; + restartTimer(); + } + }; + $scope.pause = function() { + if (!$scope.noPause) { + isPlaying = false; + resetTimer(); + } + }; + + self.addSlide = function(slide, element) { + slide.$element = element; + slides.push(slide); + //if this is the first slide or the slide is set to active, select it + if (slides.length === 1 || slide.active) { + self.select(slides[slides.length - 1]); + if (slides.length === 1) { + $scope.play(); + } + } else { + slide.active = false; + } + }; + + self.removeSlide = function(slide) { + if (angular.isDefined(slide.index)) { + slides.sort(function(a, b) { + return +a.index > +b.index; + }); + } + //get the index of the slide inside the carousel + var index = slides.indexOf(slide); + slides.splice(index, 1); + if (slides.length > 0 && slide.active) { + if (index >= slides.length) { + self.select(slides[index - 1]); + } else { + self.select(slides[index]); + } + } else if (currentIndex > index) { + currentIndex--; + } + + //clean the currentSlide when no more slide + if (slides.length === 0) { + self.currentSlide = null; + } + }; + + $scope.$watch('noTransition', function(noTransition) { + $element.data(NO_TRANSITION, noTransition); + }); + +}]) + +/** + * @ngdoc directive + * @name ui.bootstrap.carousel.directive:carousel + * @restrict EA + * + * @description + * Carousel is the outer container for a set of image 'slides' to showcase. + * + * @param {number=} interval The time, in milliseconds, that it will take the carousel to go to the next slide. + * @param {boolean=} noTransition Whether to disable transitions on the carousel. + * @param {boolean=} noPause Whether to disable pausing on the carousel (by default, the carousel interval pauses on hover). + * + * @example + + + + + + + + + + + + + + + .carousel-indicators { + top: auto; + bottom: 15px; + } + + + */ +.directive('uibCarousel', [function() { + return { + transclude: true, + replace: true, + controller: 'UibCarouselController', + controllerAs: 'carousel', + require: 'carousel', + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/carousel/carousel.html'; + }, + scope: { + interval: '=', + noTransition: '=', + noPause: '=', + noWrap: '&' + } + }; +}]) + +/** + * @ngdoc directive + * @name ui.bootstrap.carousel.directive:slide + * @restrict EA + * + * @description + * Creates a slide inside a {@link ui.bootstrap.carousel.directive:carousel carousel}. Must be placed as a child of a carousel element. + * + * @param {boolean=} active Model binding, whether or not this slide is currently active. + * @param {number=} index The index of the slide. The slides will be sorted by this parameter. + * + * @example + + +
      + + + + + + + Interval, in milliseconds: +
      Enter a negative number to stop the interval. +
      +
      + +function CarouselDemoCtrl($scope) { + $scope.myInterval = 5000; +} + + + .carousel-indicators { + top: auto; + bottom: 15px; + } + +
      +*/ + +.directive('uibSlide', function() { + return { + require: '^uibCarousel', + restrict: 'EA', + transclude: true, + replace: true, + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/carousel/slide.html'; + }, + scope: { + active: '=?', + actual: '=?', + index: '=?' + }, + link: function (scope, element, attrs, carouselCtrl) { + carouselCtrl.addSlide(scope, element); + //when the scope is destroyed then remove the slide from the current slides array + scope.$on('$destroy', function() { + carouselCtrl.removeSlide(scope); + }); + + scope.$watch('active', function(active) { + if (active) { + carouselCtrl.select(scope); + } + }); + } + }; +}) + +.animation('.item', [ + '$injector', '$animate', +function ($injector, $animate) { + var NO_TRANSITION = 'uib-noTransition', + SLIDE_DIRECTION = 'uib-slideDirection', + $animateCss = null; + + if ($injector.has('$animateCss')) { + $animateCss = $injector.get('$animateCss'); + } + + function removeClass(element, className, callback) { + element.removeClass(className); + if (callback) { + callback(); + } + } + + return { + beforeAddClass: function(element, className, done) { + // Due to transclusion, noTransition property is on parent's scope + if (className == 'active' && element.parent() && element.parent().parent() && + !element.parent().parent().data(NO_TRANSITION)) { + var stopped = false; + var direction = element.data(SLIDE_DIRECTION); + var directionClass = direction == 'next' ? 'left' : 'right'; + var removeClassFn = removeClass.bind(this, element, + directionClass + ' ' + direction, done); + element.addClass(direction); + + if ($animateCss) { + $animateCss(element, {addClass: directionClass}) + .start() + .done(removeClassFn); + } else { + $animate.addClass(element, directionClass).then(function () { + if (!stopped) { + removeClassFn(); + } + done(); + }); + } + + return function () { + stopped = true; + }; + } + done(); + }, + beforeRemoveClass: function (element, className, done) { + // Due to transclusion, noTransition property is on parent's scope + if (className === 'active' && element.parent() && element.parent().parent() && + !element.parent().parent().data(NO_TRANSITION)) { + var stopped = false; + var direction = element.data(SLIDE_DIRECTION); + var directionClass = direction == 'next' ? 'left' : 'right'; + var removeClassFn = removeClass.bind(this, element, directionClass, done); + + if ($animateCss) { + $animateCss(element, {addClass: directionClass}) + .start() + .done(removeClassFn); + } else { + $animate.addClass(element, directionClass).then(function() { + if (!stopped) { + removeClassFn(); + } + done(); + }); + } + return function() { + stopped = true; + }; + } + done(); + } + }; +}]); + +/* deprecated carousel below */ + +angular.module('ui.bootstrap.carousel') + +.value('$carouselSuppressWarning', false) + +.controller('CarouselController', ['$scope', '$element', '$controller', '$log', '$carouselSuppressWarning', function($scope, $element, $controller, $log, $carouselSuppressWarning) { + if (!$carouselSuppressWarning) { + $log.warn('CarouselController is now deprecated. Use UibCarouselController instead.'); + } + + angular.extend(this, $controller('UibCarouselController', { + $scope: $scope, + $element: $element + })); +}]) + +.directive('carousel', ['$log', '$carouselSuppressWarning', function($log, $carouselSuppressWarning) { + return { + transclude: true, + replace: true, + controller: 'CarouselController', + controllerAs: 'carousel', + require: 'carousel', + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/carousel/carousel.html'; + }, + scope: { + interval: '=', + noTransition: '=', + noPause: '=', + noWrap: '&' + }, + link: function() { + if (!$carouselSuppressWarning) { + $log.warn('carousel is now deprecated. Use uib-carousel instead.'); + } + } + }; +}]) + +.directive('slide', ['$log', '$carouselSuppressWarning', function($log, $carouselSuppressWarning) { + return { + require: '^carousel', + transclude: true, + replace: true, + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/carousel/slide.html'; + }, + scope: { + active: '=?', + actual: '=?', + index: '=?' + }, + link: function (scope, element, attrs, carouselCtrl) { + if (!$carouselSuppressWarning) { + $log.warn('slide is now deprecated. Use uib-slide instead.'); + } + + carouselCtrl.addSlide(scope, element); + //when the scope is destroyed then remove the slide from the current slides array + scope.$on('$destroy', function() { + carouselCtrl.removeSlide(scope); + }); + + scope.$watch('active', function(active) { + if (active) { + carouselCtrl.select(scope); + } + }); + } + }; +}]); + +angular.module('ui.bootstrap.dateparser', []) + +.service('uibDateParser', ['$log', '$locale', 'orderByFilter', function($log, $locale, orderByFilter) { + // Pulled from https://github.com/mbostock/d3/blob/master/src/format/requote.js + var SPECIAL_CHARACTERS_REGEXP = /[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g; + + var localeId; + var formatCodeToRegex; + + this.init = function() { + localeId = $locale.id; + + this.parsers = {}; + + formatCodeToRegex = { + 'yyyy': { + regex: '\\d{4}', + apply: function(value) { this.year = +value; } + }, + 'yy': { + regex: '\\d{2}', + apply: function(value) { this.year = +value + 2000; } + }, + 'y': { + regex: '\\d{1,4}', + apply: function(value) { this.year = +value; } + }, + 'MMMM': { + regex: $locale.DATETIME_FORMATS.MONTH.join('|'), + apply: function(value) { this.month = $locale.DATETIME_FORMATS.MONTH.indexOf(value); } + }, + 'MMM': { + regex: $locale.DATETIME_FORMATS.SHORTMONTH.join('|'), + apply: function(value) { this.month = $locale.DATETIME_FORMATS.SHORTMONTH.indexOf(value); } + }, + 'MM': { + regex: '0[1-9]|1[0-2]', + apply: function(value) { this.month = value - 1; } + }, + 'M': { + regex: '[1-9]|1[0-2]', + apply: function(value) { this.month = value - 1; } + }, + 'dd': { + regex: '[0-2][0-9]{1}|3[0-1]{1}', + apply: function(value) { this.date = +value; } + }, + 'd': { + regex: '[1-2]?[0-9]{1}|3[0-1]{1}', + apply: function(value) { this.date = +value; } + }, + 'EEEE': { + regex: $locale.DATETIME_FORMATS.DAY.join('|') + }, + 'EEE': { + regex: $locale.DATETIME_FORMATS.SHORTDAY.join('|') + }, + 'HH': { + regex: '(?:0|1)[0-9]|2[0-3]', + apply: function(value) { this.hours = +value; } + }, + 'hh': { + regex: '0[0-9]|1[0-2]', + apply: function(value) { this.hours = +value; } + }, + 'H': { + regex: '1?[0-9]|2[0-3]', + apply: function(value) { this.hours = +value; } + }, + 'h': { + regex: '[0-9]|1[0-2]', + apply: function(value) { this.hours = +value; } + }, + 'mm': { + regex: '[0-5][0-9]', + apply: function(value) { this.minutes = +value; } + }, + 'm': { + regex: '[0-9]|[1-5][0-9]', + apply: function(value) { this.minutes = +value; } + }, + 'sss': { + regex: '[0-9][0-9][0-9]', + apply: function(value) { this.milliseconds = +value; } + }, + 'ss': { + regex: '[0-5][0-9]', + apply: function(value) { this.seconds = +value; } + }, + 's': { + regex: '[0-9]|[1-5][0-9]', + apply: function(value) { this.seconds = +value; } + }, + 'a': { + regex: $locale.DATETIME_FORMATS.AMPMS.join('|'), + apply: function(value) { + if (this.hours === 12) { + this.hours = 0; + } + + if (value === 'PM') { + this.hours += 12; + } + } + } + }; + }; + + this.init(); + + function createParser(format) { + var map = [], regex = format.split(''); + + angular.forEach(formatCodeToRegex, function(data, code) { + var index = format.indexOf(code); + + if (index > -1) { + format = format.split(''); + + regex[index] = '(' + data.regex + ')'; + format[index] = '$'; // Custom symbol to define consumed part of format + for (var i = index + 1, n = index + code.length; i < n; i++) { + regex[i] = ''; + format[i] = '$'; + } + format = format.join(''); + + map.push({ index: index, apply: data.apply }); + } + }); + + return { + regex: new RegExp('^' + regex.join('') + '$'), + map: orderByFilter(map, 'index') + }; + } + + this.parse = function(input, format, baseDate) { + if (!angular.isString(input) || !format) { + return input; + } + + format = $locale.DATETIME_FORMATS[format] || format; + format = format.replace(SPECIAL_CHARACTERS_REGEXP, '\\$&'); + + if ($locale.id !== localeId) { + this.init(); + } + + if (!this.parsers[format]) { + this.parsers[format] = createParser(format); + } + + var parser = this.parsers[format], + regex = parser.regex, + map = parser.map, + results = input.match(regex); + + if (results && results.length) { + var fields, dt; + if (angular.isDate(baseDate) && !isNaN(baseDate.getTime())) { + fields = { + year: baseDate.getFullYear(), + month: baseDate.getMonth(), + date: baseDate.getDate(), + hours: baseDate.getHours(), + minutes: baseDate.getMinutes(), + seconds: baseDate.getSeconds(), + milliseconds: baseDate.getMilliseconds() + }; + } else { + if (baseDate) { + $log.warn('dateparser:', 'baseDate is not a valid date'); + } + fields = { year: 1900, month: 0, date: 1, hours: 0, minutes: 0, seconds: 0, milliseconds: 0 }; + } + + for (var i = 1, n = results.length; i < n; i++) { + var mapper = map[i-1]; + if (mapper.apply) { + mapper.apply.call(fields, results[i]); + } + } + + if (isValid(fields.year, fields.month, fields.date)) { + if (angular.isDate(baseDate) && !isNaN(baseDate.getTime())) { + dt = new Date(baseDate); + dt.setFullYear(fields.year, fields.month, fields.date, + fields.hours, fields.minutes, fields.seconds, + fields.milliseconds || 0); + } else { + dt = new Date(fields.year, fields.month, fields.date, + fields.hours, fields.minutes, fields.seconds, + fields.milliseconds || 0); + } + } + + return dt; + } + }; + + // Check if date is valid for specific month (and year for February). + // Month: 0 = Jan, 1 = Feb, etc + function isValid(year, month, date) { + if (date < 1) { + return false; + } + + if (month === 1 && date > 28) { + return date === 29 && ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0); + } + + if (month === 3 || month === 5 || month === 8 || month === 10) { + return date < 31; + } + + return true; + } +}]); + +/* Deprecated dateparser below */ + +angular.module('ui.bootstrap.dateparser') + +.value('$dateParserSuppressWarning', false) + +.service('dateParser', ['$log', '$dateParserSuppressWarning', 'uibDateParser', function($log, $dateParserSuppressWarning, uibDateParser) { + if (!$dateParserSuppressWarning) { + $log.warn('dateParser is now deprecated. Use uibDateParser instead.'); + } + + angular.extend(this, uibDateParser); +}]); + +angular.module('ui.bootstrap.position', []) + +/** + * A set of utility methods that can be use to retrieve position of DOM elements. + * It is meant to be used where we need to absolute-position DOM elements in + * relation to other, existing elements (this is the case for tooltips, popovers, + * typeahead suggestions etc.). + */ + .factory('$uibPosition', ['$document', '$window', function($document, $window) { + function getStyle(el, cssprop) { + if (el.currentStyle) { //IE + return el.currentStyle[cssprop]; + } else if ($window.getComputedStyle) { + return $window.getComputedStyle(el)[cssprop]; + } + // finally try and get inline style + return el.style[cssprop]; + } + + /** + * Checks if a given element is statically positioned + * @param element - raw DOM element + */ + function isStaticPositioned(element) { + return (getStyle(element, 'position') || 'static' ) === 'static'; + } + + /** + * returns the closest, non-statically positioned parentOffset of a given element + * @param element + */ + var parentOffsetEl = function(element) { + var docDomEl = $document[0]; + var offsetParent = element.offsetParent || docDomEl; + while (offsetParent && offsetParent !== docDomEl && isStaticPositioned(offsetParent) ) { + offsetParent = offsetParent.offsetParent; + } + return offsetParent || docDomEl; + }; + + return { + /** + * Provides read-only equivalent of jQuery's position function: + * http://api.jquery.com/position/ + */ + position: function(element) { + var elBCR = this.offset(element); + var offsetParentBCR = { top: 0, left: 0 }; + var offsetParentEl = parentOffsetEl(element[0]); + if (offsetParentEl != $document[0]) { + offsetParentBCR = this.offset(angular.element(offsetParentEl)); + offsetParentBCR.top += offsetParentEl.clientTop - offsetParentEl.scrollTop; + offsetParentBCR.left += offsetParentEl.clientLeft - offsetParentEl.scrollLeft; + } + + var boundingClientRect = element[0].getBoundingClientRect(); + return { + width: boundingClientRect.width || element.prop('offsetWidth'), + height: boundingClientRect.height || element.prop('offsetHeight'), + top: elBCR.top - offsetParentBCR.top, + left: elBCR.left - offsetParentBCR.left + }; + }, + + /** + * Provides read-only equivalent of jQuery's offset function: + * http://api.jquery.com/offset/ + */ + offset: function(element) { + var boundingClientRect = element[0].getBoundingClientRect(); + return { + width: boundingClientRect.width || element.prop('offsetWidth'), + height: boundingClientRect.height || element.prop('offsetHeight'), + top: boundingClientRect.top + ($window.pageYOffset || $document[0].documentElement.scrollTop), + left: boundingClientRect.left + ($window.pageXOffset || $document[0].documentElement.scrollLeft) + }; + }, + + /** + * Provides coordinates for the targetEl in relation to hostEl + */ + positionElements: function(hostEl, targetEl, positionStr, appendToBody) { + var positionStrParts = positionStr.split('-'); + var pos0 = positionStrParts[0], pos1 = positionStrParts[1] || 'center'; + + var hostElPos, + targetElWidth, + targetElHeight, + targetElPos; + + hostElPos = appendToBody ? this.offset(hostEl) : this.position(hostEl); + + targetElWidth = targetEl.prop('offsetWidth'); + targetElHeight = targetEl.prop('offsetHeight'); + + var shiftWidth = { + center: function() { + return hostElPos.left + hostElPos.width / 2 - targetElWidth / 2; + }, + left: function() { + return hostElPos.left; + }, + right: function() { + return hostElPos.left + hostElPos.width; + } + }; + + var shiftHeight = { + center: function() { + return hostElPos.top + hostElPos.height / 2 - targetElHeight / 2; + }, + top: function() { + return hostElPos.top; + }, + bottom: function() { + return hostElPos.top + hostElPos.height; + } + }; + + switch (pos0) { + case 'right': + targetElPos = { + top: shiftHeight[pos1](), + left: shiftWidth[pos0]() + }; + break; + case 'left': + targetElPos = { + top: shiftHeight[pos1](), + left: hostElPos.left - targetElWidth + }; + break; + case 'bottom': + targetElPos = { + top: shiftHeight[pos0](), + left: shiftWidth[pos1]() + }; + break; + default: + targetElPos = { + top: hostElPos.top - targetElHeight, + left: shiftWidth[pos1]() + }; + break; + } + + return targetElPos; + } + }; + }]); + +/* Deprecated position below */ + +angular.module('ui.bootstrap.position') + +.value('$positionSuppressWarning', false) + +.service('$position', ['$log', '$positionSuppressWarning', '$uibPosition', function($log, $positionSuppressWarning, $uibPosition) { + if (!$positionSuppressWarning) { + $log.warn('$position is now deprecated. Use $uibPosition instead.'); + } + + angular.extend(this, $uibPosition); +}]); + +angular.module('ui.bootstrap.datepicker', ['ui.bootstrap.dateparser', 'ui.bootstrap.position']) + +.value('$datepickerSuppressError', false) + +.constant('uibDatepickerConfig', { + formatDay: 'dd', + formatMonth: 'MMMM', + formatYear: 'yyyy', + formatDayHeader: 'EEE', + formatDayTitle: 'MMMM yyyy', + formatMonthTitle: 'yyyy', + datepickerMode: 'day', + minMode: 'day', + maxMode: 'year', + showWeeks: true, + startingDay: 0, + yearRange: 20, + minDate: null, + maxDate: null, + shortcutPropagation: false +}) + +.controller('UibDatepickerController', ['$scope', '$attrs', '$parse', '$interpolate', '$log', 'dateFilter', 'uibDatepickerConfig', '$datepickerSuppressError', function($scope, $attrs, $parse, $interpolate, $log, dateFilter, datepickerConfig, $datepickerSuppressError) { + var self = this, + ngModelCtrl = { $setViewValue: angular.noop }; // nullModelCtrl; + + // Modes chain + this.modes = ['day', 'month', 'year']; + + // Configuration attributes + angular.forEach(['formatDay', 'formatMonth', 'formatYear', 'formatDayHeader', 'formatDayTitle', 'formatMonthTitle', + 'showWeeks', 'startingDay', 'yearRange', 'shortcutPropagation'], function(key, index) { + self[key] = angular.isDefined($attrs[key]) ? (index < 6 ? $interpolate($attrs[key])($scope.$parent) : $scope.$parent.$eval($attrs[key])) : datepickerConfig[key]; + }); + + // Watchable date attributes + angular.forEach(['minDate', 'maxDate'], function(key) { + if ($attrs[key]) { + $scope.$parent.$watch($parse($attrs[key]), function(value) { + self[key] = value ? new Date(value) : null; + self.refreshView(); + }); + } else { + self[key] = datepickerConfig[key] ? new Date(datepickerConfig[key]) : null; + } + }); + + angular.forEach(['minMode', 'maxMode'], function(key) { + if ($attrs[key]) { + $scope.$parent.$watch($parse($attrs[key]), function(value) { + self[key] = angular.isDefined(value) ? value : $attrs[key]; + $scope[key] = self[key]; + if ((key == 'minMode' && self.modes.indexOf($scope.datepickerMode) < self.modes.indexOf(self[key])) || (key == 'maxMode' && self.modes.indexOf($scope.datepickerMode) > self.modes.indexOf(self[key]))) { + $scope.datepickerMode = self[key]; + } + }); + } else { + self[key] = datepickerConfig[key] || null; + $scope[key] = self[key]; + } + }); + + $scope.datepickerMode = $scope.datepickerMode || datepickerConfig.datepickerMode; + $scope.uniqueId = 'datepicker-' + $scope.$id + '-' + Math.floor(Math.random() * 10000); + + if (angular.isDefined($attrs.initDate)) { + this.activeDate = $scope.$parent.$eval($attrs.initDate) || new Date(); + $scope.$parent.$watch($attrs.initDate, function(initDate) { + if (initDate && (ngModelCtrl.$isEmpty(ngModelCtrl.$modelValue) || ngModelCtrl.$invalid)) { + self.activeDate = initDate; + self.refreshView(); + } + }); + } else { + this.activeDate = new Date(); + } + + $scope.isActive = function(dateObject) { + if (self.compare(dateObject.date, self.activeDate) === 0) { + $scope.activeDateId = dateObject.uid; + return true; + } + return false; + }; + + this.init = function(ngModelCtrl_) { + ngModelCtrl = ngModelCtrl_; + + ngModelCtrl.$render = function() { + self.render(); + }; + }; + + this.render = function() { + if (ngModelCtrl.$viewValue) { + var date = new Date(ngModelCtrl.$viewValue), + isValid = !isNaN(date); + + if (isValid) { + this.activeDate = date; + } else if (!$datepickerSuppressError) { + $log.error('Datepicker directive: "ng-model" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.'); + } + } + this.refreshView(); + }; + + this.refreshView = function() { + if (this.element) { + this._refreshView(); + + var date = ngModelCtrl.$viewValue ? new Date(ngModelCtrl.$viewValue) : null; + ngModelCtrl.$setValidity('dateDisabled', !date || (this.element && !this.isDisabled(date))); + } + }; + + this.createDateObject = function(date, format) { + var model = ngModelCtrl.$viewValue ? new Date(ngModelCtrl.$viewValue) : null; + return { + date: date, + label: dateFilter(date, format), + selected: model && this.compare(date, model) === 0, + disabled: this.isDisabled(date), + current: this.compare(date, new Date()) === 0, + customClass: this.customClass(date) + }; + }; + + this.isDisabled = function(date) { + return ((this.minDate && this.compare(date, this.minDate) < 0) || (this.maxDate && this.compare(date, this.maxDate) > 0) || ($attrs.dateDisabled && $scope.dateDisabled({date: date, mode: $scope.datepickerMode}))); + }; + + this.customClass = function(date) { + return $scope.customClass({date: date, mode: $scope.datepickerMode}); + }; + + // Split array into smaller arrays + this.split = function(arr, size) { + var arrays = []; + while (arr.length > 0) { + arrays.push(arr.splice(0, size)); + } + return arrays; + }; + + $scope.select = function(date) { + if ($scope.datepickerMode === self.minMode) { + var dt = ngModelCtrl.$viewValue ? new Date(ngModelCtrl.$viewValue) : new Date(0, 0, 0, 0, 0, 0, 0); + dt.setFullYear(date.getFullYear(), date.getMonth(), date.getDate()); + ngModelCtrl.$setViewValue(dt); + ngModelCtrl.$render(); + } else { + self.activeDate = date; + $scope.datepickerMode = self.modes[self.modes.indexOf($scope.datepickerMode) - 1]; + } + }; + + $scope.move = function(direction) { + var year = self.activeDate.getFullYear() + direction * (self.step.years || 0), + month = self.activeDate.getMonth() + direction * (self.step.months || 0); + self.activeDate.setFullYear(year, month, 1); + self.refreshView(); + }; + + $scope.toggleMode = function(direction) { + direction = direction || 1; + + if (($scope.datepickerMode === self.maxMode && direction === 1) || ($scope.datepickerMode === self.minMode && direction === -1)) { + return; + } + + $scope.datepickerMode = self.modes[self.modes.indexOf($scope.datepickerMode) + direction]; + }; + + // Key event mapper + $scope.keys = { 13: 'enter', 32: 'space', 33: 'pageup', 34: 'pagedown', 35: 'end', 36: 'home', 37: 'left', 38: 'up', 39: 'right', 40: 'down' }; + + var focusElement = function() { + self.element[0].focus(); + }; + + // Listen for focus requests from popup directive + $scope.$on('uib:datepicker.focus', focusElement); + + $scope.keydown = function(evt) { + var key = $scope.keys[evt.which]; + + if (!key || evt.shiftKey || evt.altKey) { + return; + } + + evt.preventDefault(); + if (!self.shortcutPropagation) { + evt.stopPropagation(); + } + + if (key === 'enter' || key === 'space') { + if (self.isDisabled(self.activeDate)) { + return; // do nothing + } + $scope.select(self.activeDate); + } else if (evt.ctrlKey && (key === 'up' || key === 'down')) { + $scope.toggleMode(key === 'up' ? 1 : -1); + } else { + self.handleKeyDown(key, evt); + self.refreshView(); + } + }; +}]) + +.controller('UibDaypickerController', ['$scope', '$element', 'dateFilter', function(scope, $element, dateFilter) { + var DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; + + this.step = { months: 1 }; + this.element = $element; + function getDaysInMonth(year, month) { + return ((month === 1) && (year % 4 === 0) && ((year % 100 !== 0) || (year % 400 === 0))) ? 29 : DAYS_IN_MONTH[month]; + } + + this.init = function(ctrl) { + angular.extend(ctrl, this); + scope.showWeeks = ctrl.showWeeks; + ctrl.refreshView(); + }; + + this.getDates = function(startDate, n) { + var dates = new Array(n), current = new Date(startDate), i = 0, date; + while (i < n) { + date = new Date(current); + dates[i++] = date; + current.setDate(current.getDate() + 1); + } + return dates; + }; + + this._refreshView = function() { + var year = this.activeDate.getFullYear(), + month = this.activeDate.getMonth(), + firstDayOfMonth = new Date(this.activeDate); + + firstDayOfMonth.setFullYear(year, month, 1); + + var difference = this.startingDay - firstDayOfMonth.getDay(), + numDisplayedFromPreviousMonth = (difference > 0) ? 7 - difference : - difference, + firstDate = new Date(firstDayOfMonth); + + if (numDisplayedFromPreviousMonth > 0) { + firstDate.setDate(-numDisplayedFromPreviousMonth + 1); + } + + // 42 is the number of days on a six-month calendar + var days = this.getDates(firstDate, 42); + for (var i = 0; i < 42; i ++) { + days[i] = angular.extend(this.createDateObject(days[i], this.formatDay), { + secondary: days[i].getMonth() !== month, + uid: scope.uniqueId + '-' + i + }); + } + + scope.labels = new Array(7); + for (var j = 0; j < 7; j++) { + scope.labels[j] = { + abbr: dateFilter(days[j].date, this.formatDayHeader), + full: dateFilter(days[j].date, 'EEEE') + }; + } + + scope.title = dateFilter(this.activeDate, this.formatDayTitle); + scope.rows = this.split(days, 7); + + if (scope.showWeeks) { + scope.weekNumbers = []; + var thursdayIndex = (4 + 7 - this.startingDay) % 7, + numWeeks = scope.rows.length; + for (var curWeek = 0; curWeek < numWeeks; curWeek++) { + scope.weekNumbers.push( + getISO8601WeekNumber(scope.rows[curWeek][thursdayIndex].date)); + } + } + }; + + this.compare = function(date1, date2) { + return (new Date(date1.getFullYear(), date1.getMonth(), date1.getDate()) - new Date(date2.getFullYear(), date2.getMonth(), date2.getDate())); + }; + + function getISO8601WeekNumber(date) { + var checkDate = new Date(date); + checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7)); // Thursday + var time = checkDate.getTime(); + checkDate.setMonth(0); // Compare with Jan 1 + checkDate.setDate(1); + return Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1; + } + + this.handleKeyDown = function(key, evt) { + var date = this.activeDate.getDate(); + + if (key === 'left') { + date = date - 1; // up + } else if (key === 'up') { + date = date - 7; // down + } else if (key === 'right') { + date = date + 1; // down + } else if (key === 'down') { + date = date + 7; + } else if (key === 'pageup' || key === 'pagedown') { + var month = this.activeDate.getMonth() + (key === 'pageup' ? - 1 : 1); + this.activeDate.setMonth(month, 1); + date = Math.min(getDaysInMonth(this.activeDate.getFullYear(), this.activeDate.getMonth()), date); + } else if (key === 'home') { + date = 1; + } else if (key === 'end') { + date = getDaysInMonth(this.activeDate.getFullYear(), this.activeDate.getMonth()); + } + this.activeDate.setDate(date); + }; +}]) + +.controller('UibMonthpickerController', ['$scope', '$element', 'dateFilter', function(scope, $element, dateFilter) { + this.step = { years: 1 }; + this.element = $element; + + this.init = function(ctrl) { + angular.extend(ctrl, this); + ctrl.refreshView(); + }; + + this._refreshView = function() { + var months = new Array(12), + year = this.activeDate.getFullYear(), + date; + + for (var i = 0; i < 12; i++) { + date = new Date(this.activeDate); + date.setFullYear(year, i, 1); + months[i] = angular.extend(this.createDateObject(date, this.formatMonth), { + uid: scope.uniqueId + '-' + i + }); + } + + scope.title = dateFilter(this.activeDate, this.formatMonthTitle); + scope.rows = this.split(months, 3); + }; + + this.compare = function(date1, date2) { + return new Date(date1.getFullYear(), date1.getMonth()) - new Date(date2.getFullYear(), date2.getMonth()); + }; + + this.handleKeyDown = function(key, evt) { + var date = this.activeDate.getMonth(); + + if (key === 'left') { + date = date - 1; // up + } else if (key === 'up') { + date = date - 3; // down + } else if (key === 'right') { + date = date + 1; // down + } else if (key === 'down') { + date = date + 3; + } else if (key === 'pageup' || key === 'pagedown') { + var year = this.activeDate.getFullYear() + (key === 'pageup' ? - 1 : 1); + this.activeDate.setFullYear(year); + } else if (key === 'home') { + date = 0; + } else if (key === 'end') { + date = 11; + } + this.activeDate.setMonth(date); + }; +}]) + +.controller('UibYearpickerController', ['$scope', '$element', 'dateFilter', function(scope, $element, dateFilter) { + var range; + this.element = $element; + + function getStartingYear(year) { + return parseInt((year - 1) / range, 10) * range + 1; + } + + this.yearpickerInit = function() { + range = this.yearRange; + this.step = { years: range }; + }; + + this._refreshView = function() { + var years = new Array(range), date; + + for (var i = 0, start = getStartingYear(this.activeDate.getFullYear()); i < range; i++) { + date = new Date(this.activeDate); + date.setFullYear(start + i, 0, 1); + years[i] = angular.extend(this.createDateObject(date, this.formatYear), { + uid: scope.uniqueId + '-' + i + }); + } + + scope.title = [years[0].label, years[range - 1].label].join(' - '); + scope.rows = this.split(years, 5); + }; + + this.compare = function(date1, date2) { + return date1.getFullYear() - date2.getFullYear(); + }; + + this.handleKeyDown = function(key, evt) { + var date = this.activeDate.getFullYear(); + + if (key === 'left') { + date = date - 1; // up + } else if (key === 'up') { + date = date - 5; // down + } else if (key === 'right') { + date = date + 1; // down + } else if (key === 'down') { + date = date + 5; + } else if (key === 'pageup' || key === 'pagedown') { + date += (key === 'pageup' ? - 1 : 1) * this.step.years; + } else if (key === 'home') { + date = getStartingYear(this.activeDate.getFullYear()); + } else if (key === 'end') { + date = getStartingYear(this.activeDate.getFullYear()) + range - 1; + } + this.activeDate.setFullYear(date); + }; +}]) + +.directive('uibDatepicker', function() { + return { + replace: true, + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/datepicker/datepicker.html'; + }, + scope: { + datepickerMode: '=?', + dateDisabled: '&', + customClass: '&', + shortcutPropagation: '&?' + }, + require: ['uibDatepicker', '^ngModel'], + controller: 'UibDatepickerController', + controllerAs: 'datepicker', + link: function(scope, element, attrs, ctrls) { + var datepickerCtrl = ctrls[0], ngModelCtrl = ctrls[1]; + + datepickerCtrl.init(ngModelCtrl); + } + }; +}) + +.directive('uibDaypicker', function() { + return { + replace: true, + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/datepicker/day.html'; + }, + require: ['^?uibDatepicker', 'uibDaypicker', '^?datepicker'], + controller: 'UibDaypickerController', + link: function(scope, element, attrs, ctrls) { + var datepickerCtrl = ctrls[0] || ctrls[2], + daypickerCtrl = ctrls[1]; + + daypickerCtrl.init(datepickerCtrl); + } + }; +}) + +.directive('uibMonthpicker', function() { + return { + replace: true, + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/datepicker/month.html'; + }, + require: ['^?uibDatepicker', 'uibMonthpicker', '^?datepicker'], + controller: 'UibMonthpickerController', + link: function(scope, element, attrs, ctrls) { + var datepickerCtrl = ctrls[0] || ctrls[2], + monthpickerCtrl = ctrls[1]; + + monthpickerCtrl.init(datepickerCtrl); + } + }; +}) + +.directive('uibYearpicker', function() { + return { + replace: true, + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/datepicker/year.html'; + }, + require: ['^?uibDatepicker', 'uibYearpicker', '^?datepicker'], + controller: 'UibYearpickerController', + link: function(scope, element, attrs, ctrls) { + var ctrl = ctrls[0] || ctrls[2]; + angular.extend(ctrl, ctrls[1]); + ctrl.yearpickerInit(); + + ctrl.refreshView(); + } + }; +}) + +.constant('uibDatepickerPopupConfig', { + datepickerPopup: 'yyyy-MM-dd', + datepickerPopupTemplateUrl: 'template/datepicker/popup.html', + datepickerTemplateUrl: 'template/datepicker/datepicker.html', + html5Types: { + date: 'yyyy-MM-dd', + 'datetime-local': 'yyyy-MM-ddTHH:mm:ss.sss', + 'month': 'yyyy-MM' + }, + currentText: 'Today', + clearText: 'Clear', + closeText: 'Done', + closeOnDateSelection: true, + appendToBody: false, + showButtonBar: true, + onOpenFocus: true +}) + +.controller('UibDatepickerPopupController', ['$scope', '$element', '$attrs', '$compile', '$parse', '$document', '$rootScope', '$uibPosition', 'dateFilter', 'uibDateParser', 'uibDatepickerPopupConfig', '$timeout', +function(scope, element, attrs, $compile, $parse, $document, $rootScope, $position, dateFilter, dateParser, datepickerPopupConfig, $timeout) { + var self = this; + var cache = {}, + isHtml5DateInput = false; + var dateFormat, closeOnDateSelection, appendToBody, onOpenFocus, + datepickerPopupTemplateUrl, datepickerTemplateUrl, popupEl, datepickerEl, + ngModel, $popup; + + scope.watchData = {}; + + this.init = function(_ngModel_) { + ngModel = _ngModel_; + closeOnDateSelection = angular.isDefined(attrs.closeOnDateSelection) ? scope.$parent.$eval(attrs.closeOnDateSelection) : datepickerPopupConfig.closeOnDateSelection; + appendToBody = angular.isDefined(attrs.datepickerAppendToBody) ? scope.$parent.$eval(attrs.datepickerAppendToBody) : datepickerPopupConfig.appendToBody; + onOpenFocus = angular.isDefined(attrs.onOpenFocus) ? scope.$parent.$eval(attrs.onOpenFocus) : datepickerPopupConfig.onOpenFocus; + datepickerPopupTemplateUrl = angular.isDefined(attrs.datepickerPopupTemplateUrl) ? attrs.datepickerPopupTemplateUrl : datepickerPopupConfig.datepickerPopupTemplateUrl; + datepickerTemplateUrl = angular.isDefined(attrs.datepickerTemplateUrl) ? attrs.datepickerTemplateUrl : datepickerPopupConfig.datepickerTemplateUrl; + + scope.showButtonBar = angular.isDefined(attrs.showButtonBar) ? scope.$parent.$eval(attrs.showButtonBar) : datepickerPopupConfig.showButtonBar; + + if (datepickerPopupConfig.html5Types[attrs.type]) { + dateFormat = datepickerPopupConfig.html5Types[attrs.type]; + isHtml5DateInput = true; + } else { + dateFormat = attrs.datepickerPopup || attrs.uibDatepickerPopup || datepickerPopupConfig.datepickerPopup; + attrs.$observe('uibDatepickerPopup', function(value, oldValue) { + var newDateFormat = value || datepickerPopupConfig.datepickerPopup; + // Invalidate the $modelValue to ensure that formatters re-run + // FIXME: Refactor when PR is merged: https://github.com/angular/angular.js/pull/10764 + if (newDateFormat !== dateFormat) { + dateFormat = newDateFormat; + ngModel.$modelValue = null; + + if (!dateFormat) { + throw new Error('uibDatepickerPopup must have a date format specified.'); + } + } + }); + } + + if (!dateFormat) { + throw new Error('uibDatepickerPopup must have a date format specified.'); + } + + if (isHtml5DateInput && attrs.datepickerPopup) { + throw new Error('HTML5 date input types do not support custom formats.'); + } + + // popup element used to display calendar + popupEl = angular.element('
      '); + popupEl.attr({ + 'ng-model': 'date', + 'ng-change': 'dateSelection(date)', + 'template-url': datepickerPopupTemplateUrl + }); + + // datepicker element + datepickerEl = angular.element(popupEl.children()[0]); + datepickerEl.attr('template-url', datepickerTemplateUrl); + + if (isHtml5DateInput) { + if (attrs.type === 'month') { + datepickerEl.attr('datepicker-mode', '"month"'); + datepickerEl.attr('min-mode', 'month'); + } + } + + if (attrs.datepickerOptions) { + var options = scope.$parent.$eval(attrs.datepickerOptions); + if (options && options.initDate) { + scope.initDate = options.initDate; + datepickerEl.attr('init-date', 'initDate'); + delete options.initDate; + } + angular.forEach(options, function(value, option) { + datepickerEl.attr(cameltoDash(option), value); + }); + } + + angular.forEach(['minMode', 'maxMode', 'minDate', 'maxDate', 'datepickerMode', 'initDate', 'shortcutPropagation'], function(key) { + if (attrs[key]) { + var getAttribute = $parse(attrs[key]); + scope.$parent.$watch(getAttribute, function(value) { + scope.watchData[key] = value; + if (key === 'minDate' || key === 'maxDate') { + cache[key] = new Date(value); + } + }); + datepickerEl.attr(cameltoDash(key), 'watchData.' + key); + + // Propagate changes from datepicker to outside + if (key === 'datepickerMode') { + var setAttribute = getAttribute.assign; + scope.$watch('watchData.' + key, function(value, oldvalue) { + if (angular.isFunction(setAttribute) && value !== oldvalue) { + setAttribute(scope.$parent, value); + } + }); + } + } + }); + if (attrs.dateDisabled) { + datepickerEl.attr('date-disabled', 'dateDisabled({ date: date, mode: mode })'); + } + + if (attrs.showWeeks) { + datepickerEl.attr('show-weeks', attrs.showWeeks); + } + + if (attrs.customClass) { + datepickerEl.attr('custom-class', 'customClass({ date: date, mode: mode })'); + } + + if (!isHtml5DateInput) { + // Internal API to maintain the correct ng-invalid-[key] class + ngModel.$$parserName = 'date'; + ngModel.$validators.date = validator; + ngModel.$parsers.unshift(parseDate); + ngModel.$formatters.push(function(value) { + scope.date = value; + return ngModel.$isEmpty(value) ? value : dateFilter(value, dateFormat); + }); + } else { + ngModel.$formatters.push(function(value) { + scope.date = value; + return value; + }); + } + + // Detect changes in the view from the text box + ngModel.$viewChangeListeners.push(function() { + scope.date = dateParser.parse(ngModel.$viewValue, dateFormat, scope.date); + }); + + element.bind('keydown', inputKeydownBind); + + $popup = $compile(popupEl)(scope); + // Prevent jQuery cache memory leak (template is now redundant after linking) + popupEl.remove(); + + if (appendToBody) { + $document.find('body').append($popup); + } else { + element.after($popup); + } + + scope.$on('$destroy', function() { + if (scope.isOpen === true) { + if (!$rootScope.$$phase) { + scope.$apply(function() { + scope.isOpen = false; + }); + } + } + + $popup.remove(); + element.unbind('keydown', inputKeydownBind); + $document.unbind('click', documentClickBind); + }); + }; + + scope.getText = function(key) { + return scope[key + 'Text'] || datepickerPopupConfig[key + 'Text']; + }; + + scope.isDisabled = function(date) { + if (date === 'today') { + date = new Date(); + } + + return ((scope.watchData.minDate && scope.compare(date, cache.minDate) < 0) || + (scope.watchData.maxDate && scope.compare(date, cache.maxDate) > 0)); + }; + + scope.compare = function(date1, date2) { + return (new Date(date1.getFullYear(), date1.getMonth(), date1.getDate()) - new Date(date2.getFullYear(), date2.getMonth(), date2.getDate())); + }; + + // Inner change + scope.dateSelection = function(dt) { + if (angular.isDefined(dt)) { + scope.date = dt; + } + var date = scope.date ? dateFilter(scope.date, dateFormat) : null; // Setting to NULL is necessary for form validators to function + element.val(date); + ngModel.$setViewValue(date); + + if (closeOnDateSelection) { + scope.isOpen = false; + element[0].focus(); + } + }; + + scope.keydown = function(evt) { + if (evt.which === 27) { + scope.isOpen = false; + element[0].focus(); + } + }; + + scope.select = function(date) { + if (date === 'today') { + var today = new Date(); + if (angular.isDate(scope.date)) { + date = new Date(scope.date); + date.setFullYear(today.getFullYear(), today.getMonth(), today.getDate()); + } else { + date = new Date(today.setHours(0, 0, 0, 0)); + } + } + scope.dateSelection(date); + }; + + scope.close = function() { + scope.isOpen = false; + element[0].focus(); + }; + + scope.$watch('isOpen', function(value) { + if (value) { + scope.position = appendToBody ? $position.offset(element) : $position.position(element); + scope.position.top = scope.position.top + element.prop('offsetHeight'); + + $timeout(function() { + if (onOpenFocus) { + scope.$broadcast('uib:datepicker.focus'); + } + $document.bind('click', documentClickBind); + }, 0, false); + } else { + $document.unbind('click', documentClickBind); + } + }); + + function cameltoDash(string) { + return string.replace(/([A-Z])/g, function($1) { return '-' + $1.toLowerCase(); }); + } + + function parseDate(viewValue) { + if (angular.isNumber(viewValue)) { + // presumably timestamp to date object + viewValue = new Date(viewValue); + } + + if (!viewValue) { + return null; + } else if (angular.isDate(viewValue) && !isNaN(viewValue)) { + return viewValue; + } else if (angular.isString(viewValue)) { + var date = dateParser.parse(viewValue, dateFormat, scope.date); + if (isNaN(date)) { + return undefined; + } else { + return date; + } + } else { + return undefined; + } + } + + function validator(modelValue, viewValue) { + var value = modelValue || viewValue; + + if (!attrs.ngRequired && !value) { + return true; + } + + if (angular.isNumber(value)) { + value = new Date(value); + } + if (!value) { + return true; + } else if (angular.isDate(value) && !isNaN(value)) { + return true; + } else if (angular.isString(value)) { + var date = dateParser.parse(value, dateFormat); + return !isNaN(date); + } else { + return false; + } + } + + function documentClickBind(event) { + var popup = $popup[0]; + var dpContainsTarget = element[0].contains(event.target); + // The popup node may not be an element node + // In some browsers (IE) only element nodes have the 'contains' function + var popupContainsTarget = popup.contains !== undefined && popup.contains(event.target); + if (scope.isOpen && !(dpContainsTarget || popupContainsTarget)) { + scope.$apply(function() { + scope.isOpen = false; + }); + } + } + + function inputKeydownBind(evt) { + if (evt.which === 27 && scope.isOpen) { + evt.preventDefault(); + evt.stopPropagation(); + scope.$apply(function() { + scope.isOpen = false; + }); + element[0].focus(); + } else if (evt.which === 40 && !scope.isOpen) { + evt.preventDefault(); + evt.stopPropagation(); + scope.$apply(function() { + scope.isOpen = true; + }); + } + } +}]) + +.directive('uibDatepickerPopup', function() { + return { + require: ['ngModel', 'uibDatepickerPopup'], + controller: 'UibDatepickerPopupController', + scope: { + isOpen: '=?', + currentText: '@', + clearText: '@', + closeText: '@', + dateDisabled: '&', + customClass: '&' + }, + link: function(scope, element, attrs, ctrls) { + var ngModel = ctrls[0], + ctrl = ctrls[1]; + + ctrl.init(ngModel); + } + }; +}) + +.directive('uibDatepickerPopupWrap', function() { + return { + replace: true, + transclude: true, + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/datepicker/popup.html'; + } + }; +}); + +/* Deprecated datepicker below */ + +angular.module('ui.bootstrap.datepicker') + +.value('$datepickerSuppressWarning', false) + +.controller('DatepickerController', ['$scope', '$attrs', '$parse', '$interpolate', '$log', 'dateFilter', 'uibDatepickerConfig', '$datepickerSuppressError', '$datepickerSuppressWarning', function($scope, $attrs, $parse, $interpolate, $log, dateFilter, datepickerConfig, $datepickerSuppressError, $datepickerSuppressWarning) { + if (!$datepickerSuppressWarning) { + $log.warn('DatepickerController is now deprecated. Use UibDatepickerController instead.'); + } + + var self = this, + ngModelCtrl = { $setViewValue: angular.noop }; // nullModelCtrl; + + this.modes = ['day', 'month', 'year']; + + angular.forEach(['formatDay', 'formatMonth', 'formatYear', 'formatDayHeader', 'formatDayTitle', 'formatMonthTitle', + 'showWeeks', 'startingDay', 'yearRange', 'shortcutPropagation'], function(key, index) { + self[key] = angular.isDefined($attrs[key]) ? (index < 6 ? $interpolate($attrs[key])($scope.$parent) : $scope.$parent.$eval($attrs[key])) : datepickerConfig[key]; + }); + + angular.forEach(['minDate', 'maxDate'], function(key) { + if ($attrs[key]) { + $scope.$parent.$watch($parse($attrs[key]), function(value) { + self[key] = value ? new Date(value) : null; + self.refreshView(); + }); + } else { + self[key] = datepickerConfig[key] ? new Date(datepickerConfig[key]) : null; + } + }); + + angular.forEach(['minMode', 'maxMode'], function(key) { + if ($attrs[key]) { + $scope.$parent.$watch($parse($attrs[key]), function(value) { + self[key] = angular.isDefined(value) ? value : $attrs[key]; + $scope[key] = self[key]; + if ((key == 'minMode' && self.modes.indexOf($scope.datepickerMode) < self.modes.indexOf(self[key])) || (key == 'maxMode' && self.modes.indexOf($scope.datepickerMode) > self.modes.indexOf(self[key]))) { + $scope.datepickerMode = self[key]; + } + }); + } else { + self[key] = datepickerConfig[key] || null; + $scope[key] = self[key]; + } + }); + + $scope.datepickerMode = $scope.datepickerMode || datepickerConfig.datepickerMode; + $scope.uniqueId = 'datepicker-' + $scope.$id + '-' + Math.floor(Math.random() * 10000); + + if (angular.isDefined($attrs.initDate)) { + this.activeDate = $scope.$parent.$eval($attrs.initDate) || new Date(); + $scope.$parent.$watch($attrs.initDate, function(initDate) { + if (initDate && (ngModelCtrl.$isEmpty(ngModelCtrl.$modelValue) || ngModelCtrl.$invalid)) { + self.activeDate = initDate; + self.refreshView(); + } + }); + } else { + this.activeDate = new Date(); + } + + $scope.isActive = function(dateObject) { + if (self.compare(dateObject.date, self.activeDate) === 0) { + $scope.activeDateId = dateObject.uid; + return true; + } + return false; + }; + + this.init = function(ngModelCtrl_) { + ngModelCtrl = ngModelCtrl_; + + ngModelCtrl.$render = function() { + self.render(); + }; + }; + + this.render = function() { + if (ngModelCtrl.$viewValue) { + var date = new Date(ngModelCtrl.$viewValue), + isValid = !isNaN(date); + + if (isValid) { + this.activeDate = date; + } else if (!$datepickerSuppressError) { + $log.error('Datepicker directive: "ng-model" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.'); + } + } + this.refreshView(); + }; + + this.refreshView = function() { + if (this.element) { + this._refreshView(); + + var date = ngModelCtrl.$viewValue ? new Date(ngModelCtrl.$viewValue) : null; + ngModelCtrl.$setValidity('dateDisabled', !date || (this.element && !this.isDisabled(date))); + } + }; + + this.createDateObject = function(date, format) { + var model = ngModelCtrl.$viewValue ? new Date(ngModelCtrl.$viewValue) : null; + return { + date: date, + label: dateFilter(date, format), + selected: model && this.compare(date, model) === 0, + disabled: this.isDisabled(date), + current: this.compare(date, new Date()) === 0, + customClass: this.customClass(date) + }; + }; + + this.isDisabled = function(date) { + return ((this.minDate && this.compare(date, this.minDate) < 0) || (this.maxDate && this.compare(date, this.maxDate) > 0) || ($attrs.dateDisabled && $scope.dateDisabled({date: date, mode: $scope.datepickerMode}))); + }; + + this.customClass = function(date) { + return $scope.customClass({date: date, mode: $scope.datepickerMode}); + }; + + // Split array into smaller arrays + this.split = function(arr, size) { + var arrays = []; + while (arr.length > 0) { + arrays.push(arr.splice(0, size)); + } + return arrays; + }; + + this.fixTimeZone = function(date) { + var hours = date.getHours(); + date.setHours(hours === 23 ? hours + 2 : 0); + }; + + $scope.select = function(date) { + if ($scope.datepickerMode === self.minMode) { + var dt = ngModelCtrl.$viewValue ? new Date(ngModelCtrl.$viewValue) : new Date(0, 0, 0, 0, 0, 0, 0); + dt.setFullYear(date.getFullYear(), date.getMonth(), date.getDate()); + ngModelCtrl.$setViewValue(dt); + ngModelCtrl.$render(); + } else { + self.activeDate = date; + $scope.datepickerMode = self.modes[self.modes.indexOf($scope.datepickerMode) - 1]; + } + }; + + $scope.move = function(direction) { + var year = self.activeDate.getFullYear() + direction * (self.step.years || 0), + month = self.activeDate.getMonth() + direction * (self.step.months || 0); + self.activeDate.setFullYear(year, month, 1); + self.refreshView(); + }; + + $scope.toggleMode = function(direction) { + direction = direction || 1; + + if (($scope.datepickerMode === self.maxMode && direction === 1) || ($scope.datepickerMode === self.minMode && direction === -1)) { + return; + } + + $scope.datepickerMode = self.modes[self.modes.indexOf($scope.datepickerMode) + direction]; + }; + + // Key event mapper + $scope.keys = { 13: 'enter', 32: 'space', 33: 'pageup', 34: 'pagedown', 35: 'end', 36: 'home', 37: 'left', 38: 'up', 39: 'right', 40: 'down' }; + + var focusElement = function() { + self.element[0].focus(); + }; + + $scope.$on('uib:datepicker.focus', focusElement); + + $scope.keydown = function(evt) { + var key = $scope.keys[evt.which]; + + if (!key || evt.shiftKey || evt.altKey) { + return; + } + + evt.preventDefault(); + if (!self.shortcutPropagation) { + evt.stopPropagation(); + } + + if (key === 'enter' || key === 'space') { + if (self.isDisabled(self.activeDate)) { + return; // do nothing + } + $scope.select(self.activeDate); + } else if (evt.ctrlKey && (key === 'up' || key === 'down')) { + $scope.toggleMode(key === 'up' ? 1 : -1); + } else { + self.handleKeyDown(key, evt); + self.refreshView(); + } + }; +}]) + +.directive('datepicker', ['$log', '$datepickerSuppressWarning', function($log, $datepickerSuppressWarning) { + return { + replace: true, + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/datepicker/datepicker.html'; + }, + scope: { + datepickerMode: '=?', + dateDisabled: '&', + customClass: '&', + shortcutPropagation: '&?' + }, + require: ['datepicker', '^ngModel'], + controller: 'DatepickerController', + controllerAs: 'datepicker', + link: function(scope, element, attrs, ctrls) { + if (!$datepickerSuppressWarning) { + $log.warn('datepicker is now deprecated. Use uib-datepicker instead.'); + } + + var datepickerCtrl = ctrls[0], ngModelCtrl = ctrls[1]; + + datepickerCtrl.init(ngModelCtrl); + } + }; +}]) + +.directive('daypicker', ['$log', '$datepickerSuppressWarning', function($log, $datepickerSuppressWarning) { + return { + replace: true, + templateUrl: 'template/datepicker/day.html', + require: ['^datepicker', 'daypicker'], + controller: 'UibDaypickerController', + link: function(scope, element, attrs, ctrls) { + if (!$datepickerSuppressWarning) { + $log.warn('daypicker is now deprecated. Use uib-daypicker instead.'); + } + + var datepickerCtrl = ctrls[0], + daypickerCtrl = ctrls[1]; + + daypickerCtrl.init(datepickerCtrl); + } + }; +}]) + +.directive('monthpicker', ['$log', '$datepickerSuppressWarning', function($log, $datepickerSuppressWarning) { + return { + replace: true, + templateUrl: 'template/datepicker/month.html', + require: ['^datepicker', 'monthpicker'], + controller: 'UibMonthpickerController', + link: function(scope, element, attrs, ctrls) { + if (!$datepickerSuppressWarning) { + $log.warn('monthpicker is now deprecated. Use uib-monthpicker instead.'); + } + + var datepickerCtrl = ctrls[0], + monthpickerCtrl = ctrls[1]; + + monthpickerCtrl.init(datepickerCtrl); + } + }; +}]) + +.directive('yearpicker', ['$log', '$datepickerSuppressWarning', function($log, $datepickerSuppressWarning) { + return { + replace: true, + templateUrl: 'template/datepicker/year.html', + require: ['^datepicker', 'yearpicker'], + controller: 'UibYearpickerController', + link: function(scope, element, attrs, ctrls) { + if (!$datepickerSuppressWarning) { + $log.warn('yearpicker is now deprecated. Use uib-yearpicker instead.'); + } + + var ctrl = ctrls[0]; + angular.extend(ctrl, ctrls[1]); + ctrl.yearpickerInit(); + + ctrl.refreshView(); + } + }; +}]) + +.directive('datepickerPopup', ['$log', '$datepickerSuppressWarning', function($log, $datepickerSuppressWarning) { + return { + require: ['ngModel', 'datepickerPopup'], + controller: 'UibDatepickerPopupController', + scope: { + isOpen: '=?', + currentText: '@', + clearText: '@', + closeText: '@', + dateDisabled: '&', + customClass: '&' + }, + link: function(scope, element, attrs, ctrls) { + if (!$datepickerSuppressWarning) { + $log.warn('datepicker-popup is now deprecated. Use uib-datepicker-popup instead.'); + } + + var ngModel = ctrls[0], + ctrl = ctrls[1]; + + ctrl.init(ngModel); + } + }; +}]) + +.directive('datepickerPopupWrap', ['$log', '$datepickerSuppressWarning', function($log, $datepickerSuppressWarning) { + return { + replace: true, + transclude: true, + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/datepicker/popup.html'; + }, + link: function() { + if (!$datepickerSuppressWarning) { + $log.warn('datepicker-popup-wrap is now deprecated. Use uib-datepicker-popup-wrap instead.'); + } + } + }; +}]); + +angular.module('ui.bootstrap.dropdown', ['ui.bootstrap.position']) + +.constant('uibDropdownConfig', { + openClass: 'open' +}) + +.service('uibDropdownService', ['$document', '$rootScope', function($document, $rootScope) { + var openScope = null; + + this.open = function(dropdownScope) { + if (!openScope) { + $document.bind('click', closeDropdown); + $document.bind('keydown', keybindFilter); + } + + if (openScope && openScope !== dropdownScope) { + openScope.isOpen = false; + } + + openScope = dropdownScope; + }; + + this.close = function(dropdownScope) { + if (openScope === dropdownScope) { + openScope = null; + $document.unbind('click', closeDropdown); + $document.unbind('keydown', keybindFilter); + } + }; + + var closeDropdown = function(evt) { + // This method may still be called during the same mouse event that + // unbound this event handler. So check openScope before proceeding. + if (!openScope) { return; } + + if (evt && openScope.getAutoClose() === 'disabled') { return ; } + + var toggleElement = openScope.getToggleElement(); + if (evt && toggleElement && toggleElement[0].contains(evt.target)) { + return; + } + + var dropdownElement = openScope.getDropdownElement(); + if (evt && openScope.getAutoClose() === 'outsideClick' && + dropdownElement && dropdownElement[0].contains(evt.target)) { + return; + } + + openScope.isOpen = false; + + if (!$rootScope.$$phase) { + openScope.$apply(); + } + }; + + var keybindFilter = function(evt) { + if (evt.which === 27) { + openScope.focusToggleElement(); + closeDropdown(); + } else if (openScope.isKeynavEnabled() && /(38|40)/.test(evt.which) && openScope.isOpen) { + evt.preventDefault(); + evt.stopPropagation(); + openScope.focusDropdownEntry(evt.which); + } + }; +}]) + +.controller('UibDropdownController', ['$scope', '$element', '$attrs', '$parse', 'uibDropdownConfig', 'uibDropdownService', '$animate', '$uibPosition', '$document', '$compile', '$templateRequest', function($scope, $element, $attrs, $parse, dropdownConfig, uibDropdownService, $animate, $position, $document, $compile, $templateRequest) { + var self = this, + scope = $scope.$new(), // create a child scope so we are not polluting original one + templateScope, + openClass = dropdownConfig.openClass, + getIsOpen, + setIsOpen = angular.noop, + toggleInvoker = $attrs.onToggle ? $parse($attrs.onToggle) : angular.noop, + appendToBody = false, + keynavEnabled =false, + selectedOption = null; + + + $element.addClass('dropdown'); + + this.init = function() { + if ($attrs.isOpen) { + getIsOpen = $parse($attrs.isOpen); + setIsOpen = getIsOpen.assign; + + $scope.$watch(getIsOpen, function(value) { + scope.isOpen = !!value; + }); + } + + appendToBody = angular.isDefined($attrs.dropdownAppendToBody); + keynavEnabled = angular.isDefined($attrs.uibKeyboardNav); + + if (appendToBody && self.dropdownMenu) { + $document.find('body').append(self.dropdownMenu); + $element.on('$destroy', function handleDestroyEvent() { + self.dropdownMenu.remove(); + }); + } + }; + + this.toggle = function(open) { + return scope.isOpen = arguments.length ? !!open : !scope.isOpen; + }; + + // Allow other directives to watch status + this.isOpen = function() { + return scope.isOpen; + }; + + scope.getToggleElement = function() { + return self.toggleElement; + }; + + scope.getAutoClose = function() { + return $attrs.autoClose || 'always'; //or 'outsideClick' or 'disabled' + }; + + scope.getElement = function() { + return $element; + }; + + scope.isKeynavEnabled = function() { + return keynavEnabled; + }; + + scope.focusDropdownEntry = function(keyCode) { + var elems = self.dropdownMenu ? //If append to body is used. + (angular.element(self.dropdownMenu).find('a')) : + (angular.element($element).find('ul').eq(0).find('a')); + + switch (keyCode) { + case (40): { + if (!angular.isNumber(self.selectedOption)) { + self.selectedOption = 0; + } else { + self.selectedOption = (self.selectedOption === elems.length - 1 ? + self.selectedOption : + self.selectedOption + 1); + } + break; + } + case (38): { + if (!angular.isNumber(self.selectedOption)) { + self.selectedOption = elems.length - 1; + } else { + self.selectedOption = self.selectedOption === 0 ? + 0 : self.selectedOption - 1; + } + break; + } + } + elems[self.selectedOption].focus(); + }; + + scope.getDropdownElement = function() { + return self.dropdownMenu; + }; + + scope.focusToggleElement = function() { + if (self.toggleElement) { + self.toggleElement[0].focus(); + } + }; + + scope.$watch('isOpen', function(isOpen, wasOpen) { + if (appendToBody && self.dropdownMenu) { + var pos = $position.positionElements($element, self.dropdownMenu, 'bottom-left', true); + var css = { + top: pos.top + 'px', + display: isOpen ? 'block' : 'none' + }; + + var rightalign = self.dropdownMenu.hasClass('dropdown-menu-right'); + if (!rightalign) { + css.left = pos.left + 'px'; + css.right = 'auto'; + } else { + css.left = 'auto'; + css.right = (window.innerWidth - (pos.left + $element.prop('offsetWidth'))) + 'px'; + } + + self.dropdownMenu.css(css); + } + + $animate[isOpen ? 'addClass' : 'removeClass']($element, openClass).then(function() { + if (angular.isDefined(isOpen) && isOpen !== wasOpen) { + toggleInvoker($scope, { open: !!isOpen }); + } + }); + + if (isOpen) { + if (self.dropdownMenuTemplateUrl) { + $templateRequest(self.dropdownMenuTemplateUrl).then(function(tplContent) { + templateScope = scope.$new(); + $compile(tplContent.trim())(templateScope, function(dropdownElement) { + var newEl = dropdownElement; + self.dropdownMenu.replaceWith(newEl); + self.dropdownMenu = newEl; + }); + }); + } + + scope.focusToggleElement(); + uibDropdownService.open(scope); + } else { + if (self.dropdownMenuTemplateUrl) { + if (templateScope) { + templateScope.$destroy(); + } + var newEl = angular.element(''); + self.dropdownMenu.replaceWith(newEl); + self.dropdownMenu = newEl; + } + + uibDropdownService.close(scope); + self.selectedOption = null; + } + + if (angular.isFunction(setIsOpen)) { + setIsOpen($scope, isOpen); + } + }); + + $scope.$on('$locationChangeSuccess', function() { + if (scope.getAutoClose() !== 'disabled') { + scope.isOpen = false; + } + }); + + var offDestroy = $scope.$on('$destroy', function() { + scope.$destroy(); + }); + scope.$on('$destroy', offDestroy); +}]) + +.directive('uibDropdown', function() { + return { + controller: 'UibDropdownController', + link: function(scope, element, attrs, dropdownCtrl) { + dropdownCtrl.init(); + } + }; +}) + +.directive('uibDropdownMenu', function() { + return { + restrict: 'AC', + require: '?^uibDropdown', + link: function(scope, element, attrs, dropdownCtrl) { + if (!dropdownCtrl || angular.isDefined(attrs.dropdownNested)) { + return; + } + + element.addClass('dropdown-menu'); + + var tplUrl = attrs.templateUrl; + if (tplUrl) { + dropdownCtrl.dropdownMenuTemplateUrl = tplUrl; + } + + if (!dropdownCtrl.dropdownMenu) { + dropdownCtrl.dropdownMenu = element; + } + } + }; +}) + +.directive('uibKeyboardNav', function() { + return { + restrict: 'A', + require: '?^uibDropdown', + link: function(scope, element, attrs, dropdownCtrl) { + element.bind('keydown', function(e) { + if ([38, 40].indexOf(e.which) !== -1) { + e.preventDefault(); + e.stopPropagation(); + + var elems = dropdownCtrl.dropdownMenu.find('a'); + + switch (e.which) { + case (40): { // Down + if (!angular.isNumber(dropdownCtrl.selectedOption)) { + dropdownCtrl.selectedOption = 0; + } else { + dropdownCtrl.selectedOption = dropdownCtrl.selectedOption === elems.length -1 ? + dropdownCtrl.selectedOption : dropdownCtrl.selectedOption + 1; + } + break; + } + case (38): { // Up + if (!angular.isNumber(dropdownCtrl.selectedOption)) { + dropdownCtrl.selectedOption = elems.length - 1; + } else { + dropdownCtrl.selectedOption = dropdownCtrl.selectedOption === 0 ? + 0 : dropdownCtrl.selectedOption - 1; + } + break; + } + } + elems[dropdownCtrl.selectedOption].focus(); + } + }); + } + }; +}) + +.directive('uibDropdownToggle', function() { + return { + require: '?^uibDropdown', + link: function(scope, element, attrs, dropdownCtrl) { + if (!dropdownCtrl) { + return; + } + + element.addClass('dropdown-toggle'); + + dropdownCtrl.toggleElement = element; + + var toggleDropdown = function(event) { + event.preventDefault(); + + if (!element.hasClass('disabled') && !attrs.disabled) { + scope.$apply(function() { + dropdownCtrl.toggle(); + }); + } + }; + + element.bind('click', toggleDropdown); + + // WAI-ARIA + element.attr({ 'aria-haspopup': true, 'aria-expanded': false }); + scope.$watch(dropdownCtrl.isOpen, function(isOpen) { + element.attr('aria-expanded', !!isOpen); + }); + + scope.$on('$destroy', function() { + element.unbind('click', toggleDropdown); + }); + } + }; +}); + +/* Deprecated dropdown below */ + +angular.module('ui.bootstrap.dropdown') + +.value('$dropdownSuppressWarning', false) + +.service('dropdownService', ['$log', '$dropdownSuppressWarning', 'uibDropdownService', function($log, $dropdownSuppressWarning, uibDropdownService) { + if (!$dropdownSuppressWarning) { + $log.warn('dropdownService is now deprecated. Use uibDropdownService instead.'); + } + + angular.extend(this, uibDropdownService); +}]) + +.controller('DropdownController', ['$scope', '$element', '$attrs', '$parse', 'uibDropdownConfig', 'uibDropdownService', '$animate', '$uibPosition', '$document', '$compile', '$templateRequest', '$log', '$dropdownSuppressWarning', function($scope, $element, $attrs, $parse, dropdownConfig, uibDropdownService, $animate, $position, $document, $compile, $templateRequest, $log, $dropdownSuppressWarning) { + if (!$dropdownSuppressWarning) { + $log.warn('DropdownController is now deprecated. Use UibDropdownController instead.'); + } + + var self = this, + scope = $scope.$new(), // create a child scope so we are not polluting original one + templateScope, + openClass = dropdownConfig.openClass, + getIsOpen, + setIsOpen = angular.noop, + toggleInvoker = $attrs.onToggle ? $parse($attrs.onToggle) : angular.noop, + appendToBody = false, + keynavEnabled =false, + selectedOption = null; + + + $element.addClass('dropdown'); + + this.init = function() { + if ($attrs.isOpen) { + getIsOpen = $parse($attrs.isOpen); + setIsOpen = getIsOpen.assign; + + $scope.$watch(getIsOpen, function(value) { + scope.isOpen = !!value; + }); + } + + appendToBody = angular.isDefined($attrs.dropdownAppendToBody); + keynavEnabled = angular.isDefined($attrs.uibKeyboardNav); + + if (appendToBody && self.dropdownMenu) { + $document.find('body').append(self.dropdownMenu); + $element.on('$destroy', function handleDestroyEvent() { + self.dropdownMenu.remove(); + }); + } + }; + + this.toggle = function(open) { + return scope.isOpen = arguments.length ? !!open : !scope.isOpen; + }; + + // Allow other directives to watch status + this.isOpen = function() { + return scope.isOpen; + }; + + scope.getToggleElement = function() { + return self.toggleElement; + }; + + scope.getAutoClose = function() { + return $attrs.autoClose || 'always'; //or 'outsideClick' or 'disabled' + }; + + scope.getElement = function() { + return $element; + }; + + scope.isKeynavEnabled = function() { + return keynavEnabled; + }; + + scope.focusDropdownEntry = function(keyCode) { + var elems = self.dropdownMenu ? //If append to body is used. + (angular.element(self.dropdownMenu).find('a')) : + (angular.element($element).find('ul').eq(0).find('a')); + + switch (keyCode) { + case (40): { + if (!angular.isNumber(self.selectedOption)) { + self.selectedOption = 0; + } else { + self.selectedOption = (self.selectedOption === elems.length -1 ? + self.selectedOption : + self.selectedOption + 1); + } + break; + } + case (38): { + if (!angular.isNumber(self.selectedOption)) { + self.selectedOption = elems.length - 1; + } else { + self.selectedOption = self.selectedOption === 0 ? + 0 : self.selectedOption - 1; + } + break; + } + } + elems[self.selectedOption].focus(); + }; + + scope.getDropdownElement = function() { + return self.dropdownMenu; + }; + + scope.focusToggleElement = function() { + if (self.toggleElement) { + self.toggleElement[0].focus(); + } + }; + + scope.$watch('isOpen', function(isOpen, wasOpen) { + if (appendToBody && self.dropdownMenu) { + var pos = $position.positionElements($element, self.dropdownMenu, 'bottom-left', true); + var css = { + top: pos.top + 'px', + display: isOpen ? 'block' : 'none' + }; + + var rightalign = self.dropdownMenu.hasClass('dropdown-menu-right'); + if (!rightalign) { + css.left = pos.left + 'px'; + css.right = 'auto'; + } else { + css.left = 'auto'; + css.right = (window.innerWidth - (pos.left + $element.prop('offsetWidth'))) + 'px'; + } + + self.dropdownMenu.css(css); + } + + $animate[isOpen ? 'addClass' : 'removeClass']($element, openClass).then(function() { + if (angular.isDefined(isOpen) && isOpen !== wasOpen) { + toggleInvoker($scope, { open: !!isOpen }); + } + }); + + if (isOpen) { + if (self.dropdownMenuTemplateUrl) { + $templateRequest(self.dropdownMenuTemplateUrl).then(function(tplContent) { + templateScope = scope.$new(); + $compile(tplContent.trim())(templateScope, function(dropdownElement) { + var newEl = dropdownElement; + self.dropdownMenu.replaceWith(newEl); + self.dropdownMenu = newEl; + }); + }); + } + + scope.focusToggleElement(); + uibDropdownService.open(scope); + } else { + if (self.dropdownMenuTemplateUrl) { + if (templateScope) { + templateScope.$destroy(); + } + var newEl = angular.element(''); + self.dropdownMenu.replaceWith(newEl); + self.dropdownMenu = newEl; + } + + uibDropdownService.close(scope); + self.selectedOption = null; + } + + if (angular.isFunction(setIsOpen)) { + setIsOpen($scope, isOpen); + } + }); + + $scope.$on('$locationChangeSuccess', function() { + if (scope.getAutoClose() !== 'disabled') { + scope.isOpen = false; + } + }); + + var offDestroy = $scope.$on('$destroy', function() { + scope.$destroy(); + }); + scope.$on('$destroy', offDestroy); +}]) + +.directive('dropdown', ['$log', '$dropdownSuppressWarning', function($log, $dropdownSuppressWarning) { + return { + controller: 'DropdownController', + link: function(scope, element, attrs, dropdownCtrl) { + if (!$dropdownSuppressWarning) { + $log.warn('dropdown is now deprecated. Use uib-dropdown instead.'); + } + + dropdownCtrl.init(); + } + }; +}]) + +.directive('dropdownMenu', ['$log', '$dropdownSuppressWarning', function($log, $dropdownSuppressWarning) { + return { + restrict: 'AC', + require: '?^dropdown', + link: function(scope, element, attrs, dropdownCtrl) { + if (!dropdownCtrl || angular.isDefined(attrs.dropdownNested)) { + return; + } + + if (!$dropdownSuppressWarning) { + $log.warn('dropdown-menu is now deprecated. Use uib-dropdown-menu instead.'); + } + + element.addClass('dropdown-menu'); + + var tplUrl = attrs.templateUrl; + if (tplUrl) { + dropdownCtrl.dropdownMenuTemplateUrl = tplUrl; + } + + if (!dropdownCtrl.dropdownMenu) { + dropdownCtrl.dropdownMenu = element; + } + } + }; +}]) + +.directive('keyboardNav', ['$log', '$dropdownSuppressWarning', function($log, $dropdownSuppressWarning) { + return { + restrict: 'A', + require: '?^dropdown', + link: function(scope, element, attrs, dropdownCtrl) { + if (!$dropdownSuppressWarning) { + $log.warn('keyboard-nav is now deprecated. Use uib-keyboard-nav instead.'); + } + + element.bind('keydown', function(e) { + if ([38, 40].indexOf(e.which) !== -1) { + e.preventDefault(); + e.stopPropagation(); + + var elems = dropdownCtrl.dropdownMenu.find('a'); + + switch (e.which) { + case (40): { // Down + if (!angular.isNumber(dropdownCtrl.selectedOption)) { + dropdownCtrl.selectedOption = 0; + } else { + dropdownCtrl.selectedOption = dropdownCtrl.selectedOption === elems.length -1 ? + dropdownCtrl.selectedOption : dropdownCtrl.selectedOption + 1; + } + break; + } + case (38): { // Up + if (!angular.isNumber(dropdownCtrl.selectedOption)) { + dropdownCtrl.selectedOption = elems.length - 1; + } else { + dropdownCtrl.selectedOption = dropdownCtrl.selectedOption === 0 ? + 0 : dropdownCtrl.selectedOption - 1; + } + break; + } + } + elems[dropdownCtrl.selectedOption].focus(); + } + }); + } + }; +}]) + +.directive('dropdownToggle', ['$log', '$dropdownSuppressWarning', function($log, $dropdownSuppressWarning) { + return { + require: '?^dropdown', + link: function(scope, element, attrs, dropdownCtrl) { + if (!$dropdownSuppressWarning) { + $log.warn('dropdown-toggle is now deprecated. Use uib-dropdown-toggle instead.'); + } + + if (!dropdownCtrl) { + return; + } + + element.addClass('dropdown-toggle'); + + dropdownCtrl.toggleElement = element; + + var toggleDropdown = function(event) { + event.preventDefault(); + + if (!element.hasClass('disabled') && !attrs.disabled) { + scope.$apply(function() { + dropdownCtrl.toggle(); + }); + } + }; + + element.bind('click', toggleDropdown); + + // WAI-ARIA + element.attr({ 'aria-haspopup': true, 'aria-expanded': false }); + scope.$watch(dropdownCtrl.isOpen, function(isOpen) { + element.attr('aria-expanded', !!isOpen); + }); + + scope.$on('$destroy', function() { + element.unbind('click', toggleDropdown); + }); + } + }; +}]); + +angular.module('ui.bootstrap.stackedMap', []) +/** + * A helper, internal data structure that acts as a map but also allows getting / removing + * elements in the LIFO order + */ + .factory('$$stackedMap', function() { + return { + createNew: function() { + var stack = []; + + return { + add: function(key, value) { + stack.push({ + key: key, + value: value + }); + }, + get: function(key) { + for (var i = 0; i < stack.length; i++) { + if (key == stack[i].key) { + return stack[i]; + } + } + }, + keys: function() { + var keys = []; + for (var i = 0; i < stack.length; i++) { + keys.push(stack[i].key); + } + return keys; + }, + top: function() { + return stack[stack.length - 1]; + }, + remove: function(key) { + var idx = -1; + for (var i = 0; i < stack.length; i++) { + if (key == stack[i].key) { + idx = i; + break; + } + } + return stack.splice(idx, 1)[0]; + }, + removeTop: function() { + return stack.splice(stack.length - 1, 1)[0]; + }, + length: function() { + return stack.length; + } + }; + } + }; + }); +angular.module('ui.bootstrap.modal', ['ui.bootstrap.stackedMap']) +/** + * A helper, internal data structure that stores all references attached to key + */ + .factory('$$multiMap', function() { + return { + createNew: function() { + var map = {}; + + return { + entries: function() { + return Object.keys(map).map(function(key) { + return { + key: key, + value: map[key] + }; + }); + }, + get: function(key) { + return map[key]; + }, + hasKey: function(key) { + return !!map[key]; + }, + keys: function() { + return Object.keys(map); + }, + put: function(key, value) { + if (!map[key]) { + map[key] = []; + } + + map[key].push(value); + }, + remove: function(key, value) { + var values = map[key]; + + if (!values) { + return; + } + + var idx = values.indexOf(value); + + if (idx !== -1) { + values.splice(idx, 1); + } + + if (!values.length) { + delete map[key]; + } + } + }; + } + }; + }) + +/** + * A helper directive for the $modal service. It creates a backdrop element. + */ + .directive('uibModalBackdrop', [ + '$animate', '$injector', '$uibModalStack', + function($animate , $injector, $modalStack) { + var $animateCss = null; + + if ($injector.has('$animateCss')) { + $animateCss = $injector.get('$animateCss'); + } + + return { + replace: true, + templateUrl: 'template/modal/backdrop.html', + compile: function(tElement, tAttrs) { + tElement.addClass(tAttrs.backdropClass); + return linkFn; + } + }; + + function linkFn(scope, element, attrs) { + // Temporary fix for prefixing + element.addClass('modal-backdrop'); + + if (attrs.modalInClass) { + if ($animateCss) { + $animateCss(element, { + addClass: attrs.modalInClass + }).start(); + } else { + $animate.addClass(element, attrs.modalInClass); + } + + scope.$on($modalStack.NOW_CLOSING_EVENT, function(e, setIsAsync) { + var done = setIsAsync(); + if ($animateCss) { + $animateCss(element, { + removeClass: attrs.modalInClass + }).start().then(done); + } else { + $animate.removeClass(element, attrs.modalInClass).then(done); + } + }); + } + } + }]) + + .directive('uibModalWindow', [ + '$uibModalStack', '$q', '$animate', '$injector', + function($modalStack , $q , $animate, $injector) { + var $animateCss = null; + + if ($injector.has('$animateCss')) { + $animateCss = $injector.get('$animateCss'); + } + + return { + scope: { + index: '@' + }, + replace: true, + transclude: true, + templateUrl: function(tElement, tAttrs) { + return tAttrs.templateUrl || 'template/modal/window.html'; + }, + link: function(scope, element, attrs) { + element.addClass(attrs.windowClass || ''); + element.addClass(attrs.windowTopClass || ''); + scope.size = attrs.size; + + scope.close = function(evt) { + var modal = $modalStack.getTop(); + if (modal && modal.value.backdrop && modal.value.backdrop !== 'static' && (evt.target === evt.currentTarget)) { + evt.preventDefault(); + evt.stopPropagation(); + $modalStack.dismiss(modal.key, 'backdrop click'); + } + }; + + // moved from template to fix issue #2280 + element.on('click', scope.close); + + // This property is only added to the scope for the purpose of detecting when this directive is rendered. + // We can detect that by using this property in the template associated with this directive and then use + // {@link Attribute#$observe} on it. For more details please see {@link TableColumnResize}. + scope.$isRendered = true; + + // Deferred object that will be resolved when this modal is render. + var modalRenderDeferObj = $q.defer(); + // Observe function will be called on next digest cycle after compilation, ensuring that the DOM is ready. + // In order to use this way of finding whether DOM is ready, we need to observe a scope property used in modal's template. + attrs.$observe('modalRender', function(value) { + if (value == 'true') { + modalRenderDeferObj.resolve(); + } + }); + + modalRenderDeferObj.promise.then(function() { + var animationPromise = null; + + if (attrs.modalInClass) { + if ($animateCss) { + animationPromise = $animateCss(element, { + addClass: attrs.modalInClass + }).start(); + } else { + animationPromise = $animate.addClass(element, attrs.modalInClass); + } + + scope.$on($modalStack.NOW_CLOSING_EVENT, function(e, setIsAsync) { + var done = setIsAsync(); + if ($animateCss) { + $animateCss(element, { + removeClass: attrs.modalInClass + }).start().then(done); + } else { + $animate.removeClass(element, attrs.modalInClass).then(done); + } + }); + } + + + $q.when(animationPromise).then(function() { + var inputWithAutofocus = element[0].querySelector('[autofocus]'); + /** + * Auto-focusing of a freshly-opened modal element causes any child elements + * with the autofocus attribute to lose focus. This is an issue on touch + * based devices which will show and then hide the onscreen keyboard. + * Attempts to refocus the autofocus element via JavaScript will not reopen + * the onscreen keyboard. Fixed by updated the focusing logic to only autofocus + * the modal element if the modal does not contain an autofocus element. + */ + if (inputWithAutofocus) { + inputWithAutofocus.focus(); + } else { + element[0].focus(); + } + }); + + // Notify {@link $modalStack} that modal is rendered. + var modal = $modalStack.getTop(); + if (modal) { + $modalStack.modalRendered(modal.key); + } + }); + } + }; + }]) + + .directive('uibModalAnimationClass', function() { + return { + compile: function(tElement, tAttrs) { + if (tAttrs.modalAnimation) { + tElement.addClass(tAttrs.uibModalAnimationClass); + } + } + }; + }) + + .directive('uibModalTransclude', function() { + return { + link: function($scope, $element, $attrs, controller, $transclude) { + $transclude($scope.$parent, function(clone) { + $element.empty(); + $element.append(clone); + }); + } + }; + }) + + .factory('$uibModalStack', [ + '$animate', '$timeout', '$document', '$compile', '$rootScope', + '$q', + '$injector', + '$$multiMap', + '$$stackedMap', + function($animate , $timeout , $document , $compile , $rootScope , + $q, + $injector, + $$multiMap, + $$stackedMap) { + var $animateCss = null; + + if ($injector.has('$animateCss')) { + $animateCss = $injector.get('$animateCss'); + } + + var OPENED_MODAL_CLASS = 'modal-open'; + + var backdropDomEl, backdropScope; + var openedWindows = $$stackedMap.createNew(); + var openedClasses = $$multiMap.createNew(); + var $modalStack = { + NOW_CLOSING_EVENT: 'modal.stack.now-closing' + }; + + //Modal focus behavior + var focusableElementList; + var focusIndex = 0; + var tababbleSelector = 'a[href], area[href], input:not([disabled]), ' + + 'button:not([disabled]),select:not([disabled]), textarea:not([disabled]), ' + + 'iframe, object, embed, *[tabindex], *[contenteditable=true]'; + + function backdropIndex() { + var topBackdropIndex = -1; + var opened = openedWindows.keys(); + for (var i = 0; i < opened.length; i++) { + if (openedWindows.get(opened[i]).value.backdrop) { + topBackdropIndex = i; + } + } + return topBackdropIndex; + } + + $rootScope.$watch(backdropIndex, function(newBackdropIndex) { + if (backdropScope) { + backdropScope.index = newBackdropIndex; + } + }); + + function removeModalWindow(modalInstance, elementToReceiveFocus) { + var body = $document.find('body').eq(0); + var modalWindow = openedWindows.get(modalInstance).value; + + //clean up the stack + openedWindows.remove(modalInstance); + + removeAfterAnimate(modalWindow.modalDomEl, modalWindow.modalScope, function() { + var modalBodyClass = modalWindow.openedClass || OPENED_MODAL_CLASS; + openedClasses.remove(modalBodyClass, modalInstance); + body.toggleClass(modalBodyClass, openedClasses.hasKey(modalBodyClass)); + toggleTopWindowClass(true); + }); + checkRemoveBackdrop(); + + //move focus to specified element if available, or else to body + if (elementToReceiveFocus && elementToReceiveFocus.focus) { + elementToReceiveFocus.focus(); + } else { + body.focus(); + } + } + + // Add or remove "windowTopClass" from the top window in the stack + function toggleTopWindowClass(toggleSwitch) { + var modalWindow; + + if (openedWindows.length() > 0) { + modalWindow = openedWindows.top().value; + modalWindow.modalDomEl.toggleClass(modalWindow.windowTopClass || '', toggleSwitch); + } + } + + function checkRemoveBackdrop() { + //remove backdrop if no longer needed + if (backdropDomEl && backdropIndex() == -1) { + var backdropScopeRef = backdropScope; + removeAfterAnimate(backdropDomEl, backdropScope, function() { + backdropScopeRef = null; + }); + backdropDomEl = undefined; + backdropScope = undefined; + } + } + + function removeAfterAnimate(domEl, scope, done) { + var asyncDeferred; + var asyncPromise = null; + var setIsAsync = function() { + if (!asyncDeferred) { + asyncDeferred = $q.defer(); + asyncPromise = asyncDeferred.promise; + } + + return function asyncDone() { + asyncDeferred.resolve(); + }; + }; + scope.$broadcast($modalStack.NOW_CLOSING_EVENT, setIsAsync); + + // Note that it's intentional that asyncPromise might be null. + // That's when setIsAsync has not been called during the + // NOW_CLOSING_EVENT broadcast. + return $q.when(asyncPromise).then(afterAnimating); + + function afterAnimating() { + if (afterAnimating.done) { + return; + } + afterAnimating.done = true; + + if ($animateCss) { + $animateCss(domEl, { + event: 'leave' + }).start().then(function() { + domEl.remove(); + }); + } else { + $animate.leave(domEl); + } + scope.$destroy(); + if (done) { + done(); + } + } + } + + $document.bind('keydown', function(evt) { + if (evt.isDefaultPrevented()) { + return evt; + } + + var modal = openedWindows.top(); + if (modal && modal.value.keyboard) { + switch (evt.which) { + case 27: { + evt.preventDefault(); + $rootScope.$apply(function() { + $modalStack.dismiss(modal.key, 'escape key press'); + }); + break; + } + case 9: { + $modalStack.loadFocusElementList(modal); + var focusChanged = false; + if (evt.shiftKey) { + if ($modalStack.isFocusInFirstItem(evt)) { + focusChanged = $modalStack.focusLastFocusableElement(); + } + } else { + if ($modalStack.isFocusInLastItem(evt)) { + focusChanged = $modalStack.focusFirstFocusableElement(); + } + } + + if (focusChanged) { + evt.preventDefault(); + evt.stopPropagation(); + } + break; + } + } + } + }); + + $modalStack.open = function(modalInstance, modal) { + var modalOpener = $document[0].activeElement, + modalBodyClass = modal.openedClass || OPENED_MODAL_CLASS; + + toggleTopWindowClass(false); + + openedWindows.add(modalInstance, { + deferred: modal.deferred, + renderDeferred: modal.renderDeferred, + modalScope: modal.scope, + backdrop: modal.backdrop, + keyboard: modal.keyboard, + openedClass: modal.openedClass, + windowTopClass: modal.windowTopClass + }); + + openedClasses.put(modalBodyClass, modalInstance); + + var body = $document.find('body').eq(0), + currBackdropIndex = backdropIndex(); + + if (currBackdropIndex >= 0 && !backdropDomEl) { + backdropScope = $rootScope.$new(true); + backdropScope.index = currBackdropIndex; + var angularBackgroundDomEl = angular.element('
      '); + angularBackgroundDomEl.attr('backdrop-class', modal.backdropClass); + if (modal.animation) { + angularBackgroundDomEl.attr('modal-animation', 'true'); + } + backdropDomEl = $compile(angularBackgroundDomEl)(backdropScope); + body.append(backdropDomEl); + } + + var angularDomEl = angular.element('
      '); + angularDomEl.attr({ + 'template-url': modal.windowTemplateUrl, + 'window-class': modal.windowClass, + 'window-top-class': modal.windowTopClass, + 'size': modal.size, + 'index': openedWindows.length() - 1, + 'animate': 'animate' + }).html(modal.content); + if (modal.animation) { + angularDomEl.attr('modal-animation', 'true'); + } + + var modalDomEl = $compile(angularDomEl)(modal.scope); + openedWindows.top().value.modalDomEl = modalDomEl; + openedWindows.top().value.modalOpener = modalOpener; + body.append(modalDomEl); + body.addClass(modalBodyClass); + + $modalStack.clearFocusListCache(); + }; + + function broadcastClosing(modalWindow, resultOrReason, closing) { + return !modalWindow.value.modalScope.$broadcast('modal.closing', resultOrReason, closing).defaultPrevented; + } + + $modalStack.close = function(modalInstance, result) { + var modalWindow = openedWindows.get(modalInstance); + if (modalWindow && broadcastClosing(modalWindow, result, true)) { + modalWindow.value.modalScope.$$uibDestructionScheduled = true; + modalWindow.value.deferred.resolve(result); + removeModalWindow(modalInstance, modalWindow.value.modalOpener); + return true; + } + return !modalWindow; + }; + + $modalStack.dismiss = function(modalInstance, reason) { + var modalWindow = openedWindows.get(modalInstance); + if (modalWindow && broadcastClosing(modalWindow, reason, false)) { + modalWindow.value.modalScope.$$uibDestructionScheduled = true; + modalWindow.value.deferred.reject(reason); + removeModalWindow(modalInstance, modalWindow.value.modalOpener); + return true; + } + return !modalWindow; + }; + + $modalStack.dismissAll = function(reason) { + var topModal = this.getTop(); + while (topModal && this.dismiss(topModal.key, reason)) { + topModal = this.getTop(); + } + }; + + $modalStack.getTop = function() { + return openedWindows.top(); + }; + + $modalStack.modalRendered = function(modalInstance) { + var modalWindow = openedWindows.get(modalInstance); + if (modalWindow) { + modalWindow.value.renderDeferred.resolve(); + } + }; + + $modalStack.focusFirstFocusableElement = function() { + if (focusableElementList.length > 0) { + focusableElementList[0].focus(); + return true; + } + return false; + }; + $modalStack.focusLastFocusableElement = function() { + if (focusableElementList.length > 0) { + focusableElementList[focusableElementList.length - 1].focus(); + return true; + } + return false; + }; + + $modalStack.isFocusInFirstItem = function(evt) { + if (focusableElementList.length > 0) { + return (evt.target || evt.srcElement) == focusableElementList[0]; + } + return false; + }; + + $modalStack.isFocusInLastItem = function(evt) { + if (focusableElementList.length > 0) { + return (evt.target || evt.srcElement) == focusableElementList[focusableElementList.length - 1]; + } + return false; + }; + + $modalStack.clearFocusListCache = function() { + focusableElementList = []; + focusIndex = 0; + }; + + $modalStack.loadFocusElementList = function(modalWindow) { + if (focusableElementList === undefined || !focusableElementList.length) { + if (modalWindow) { + var modalDomE1 = modalWindow.value.modalDomEl; + if (modalDomE1 && modalDomE1.length) { + focusableElementList = modalDomE1[0].querySelectorAll(tababbleSelector); + } + } + } + }; + + return $modalStack; + }]) + + .provider('$uibModal', function() { + var $modalProvider = { + options: { + animation: true, + backdrop: true, //can also be false or 'static' + keyboard: true + }, + $get: ['$injector', '$rootScope', '$q', '$templateRequest', '$controller', '$uibModalStack', '$modalSuppressWarning', '$log', + function ($injector, $rootScope, $q, $templateRequest, $controller, $modalStack, $modalSuppressWarning, $log) { + var $modal = {}; + + function getTemplatePromise(options) { + return options.template ? $q.when(options.template) : + $templateRequest(angular.isFunction(options.templateUrl) ? (options.templateUrl)() : options.templateUrl); + } + + function getResolvePromises(resolves) { + var promisesArr = []; + angular.forEach(resolves, function(value) { + if (angular.isFunction(value) || angular.isArray(value)) { + promisesArr.push($q.when($injector.invoke(value))); + } else if (angular.isString(value)) { + promisesArr.push($q.when($injector.get(value))); + } else { + promisesArr.push($q.when(value)); + } + }); + return promisesArr; + } + + var promiseChain = null; + $modal.getPromiseChain = function() { + return promiseChain; + }; + + $modal.open = function(modalOptions) { + var modalResultDeferred = $q.defer(); + var modalOpenedDeferred = $q.defer(); + var modalRenderDeferred = $q.defer(); + + //prepare an instance of a modal to be injected into controllers and returned to a caller + var modalInstance = { + result: modalResultDeferred.promise, + opened: modalOpenedDeferred.promise, + rendered: modalRenderDeferred.promise, + close: function (result) { + return $modalStack.close(modalInstance, result); + }, + dismiss: function (reason) { + return $modalStack.dismiss(modalInstance, reason); + } + }; + + //merge and clean up options + modalOptions = angular.extend({}, $modalProvider.options, modalOptions); + modalOptions.resolve = modalOptions.resolve || {}; + + //verify options + if (!modalOptions.template && !modalOptions.templateUrl) { + throw new Error('One of template or templateUrl options is required.'); + } + + var templateAndResolvePromise = + $q.all([getTemplatePromise(modalOptions)].concat(getResolvePromises(modalOptions.resolve))); + + function resolveWithTemplate() { + return templateAndResolvePromise; + } + + // Wait for the resolution of the existing promise chain. + // Then switch to our own combined promise dependency (regardless of how the previous modal fared). + // Then add to $modalStack and resolve opened. + // Finally clean up the chain variable if no subsequent modal has overwritten it. + var samePromise; + samePromise = promiseChain = $q.all([promiseChain]) + .then(resolveWithTemplate, resolveWithTemplate) + .then(function resolveSuccess(tplAndVars) { + + var modalScope = (modalOptions.scope || $rootScope).$new(); + modalScope.$close = modalInstance.close; + modalScope.$dismiss = modalInstance.dismiss; + + modalScope.$on('$destroy', function() { + if (!modalScope.$$uibDestructionScheduled) { + modalScope.$dismiss('$uibUnscheduledDestruction'); + } + }); + + var ctrlInstance, ctrlLocals = {}; + var resolveIter = 1; + + //controllers + if (modalOptions.controller) { + ctrlLocals.$scope = modalScope; + ctrlLocals.$uibModalInstance = modalInstance; + Object.defineProperty(ctrlLocals, '$modalInstance', { + get: function() { + if (!$modalSuppressWarning) { + $log.warn('$modalInstance is now deprecated. Use $uibModalInstance instead.'); + } + + return modalInstance; + } + }); + angular.forEach(modalOptions.resolve, function(value, key) { + ctrlLocals[key] = tplAndVars[resolveIter++]; + }); + + ctrlInstance = $controller(modalOptions.controller, ctrlLocals); + if (modalOptions.controllerAs) { + if (modalOptions.bindToController) { + angular.extend(ctrlInstance, modalScope); + } + + modalScope[modalOptions.controllerAs] = ctrlInstance; + } + } + + $modalStack.open(modalInstance, { + scope: modalScope, + deferred: modalResultDeferred, + renderDeferred: modalRenderDeferred, + content: tplAndVars[0], + animation: modalOptions.animation, + backdrop: modalOptions.backdrop, + keyboard: modalOptions.keyboard, + backdropClass: modalOptions.backdropClass, + windowTopClass: modalOptions.windowTopClass, + windowClass: modalOptions.windowClass, + windowTemplateUrl: modalOptions.windowTemplateUrl, + size: modalOptions.size, + openedClass: modalOptions.openedClass + }); + modalOpenedDeferred.resolve(true); + + }, function resolveError(reason) { + modalOpenedDeferred.reject(reason); + modalResultDeferred.reject(reason); + }) + .finally(function() { + if (promiseChain === samePromise) { + promiseChain = null; + } + }); + + return modalInstance; + }; + + return $modal; + } + ] + }; + + return $modalProvider; + }); + +/* deprecated modal below */ + +angular.module('ui.bootstrap.modal') + + .value('$modalSuppressWarning', false) + + /** + * A helper directive for the $modal service. It creates a backdrop element. + */ + .directive('modalBackdrop', [ + '$animate', '$injector', '$modalStack', '$log', '$modalSuppressWarning', + function($animate , $injector, $modalStack, $log, $modalSuppressWarning) { + var $animateCss = null; + + if ($injector.has('$animateCss')) { + $animateCss = $injector.get('$animateCss'); + } + + return { + replace: true, + templateUrl: 'template/modal/backdrop.html', + compile: function(tElement, tAttrs) { + tElement.addClass(tAttrs.backdropClass); + return linkFn; + } + }; + + function linkFn(scope, element, attrs) { + if (!$modalSuppressWarning) { + $log.warn('modal-backdrop is now deprecated. Use uib-modal-backdrop instead.'); + } + element.addClass('modal-backdrop'); + + if (attrs.modalInClass) { + if ($animateCss) { + $animateCss(element, { + addClass: attrs.modalInClass + }).start(); + } else { + $animate.addClass(element, attrs.modalInClass); + } + + scope.$on($modalStack.NOW_CLOSING_EVENT, function(e, setIsAsync) { + var done = setIsAsync(); + if ($animateCss) { + $animateCss(element, { + removeClass: attrs.modalInClass + }).start().then(done); + } else { + $animate.removeClass(element, attrs.modalInClass).then(done); + } + }); + } + } + }]) + + .directive('modalWindow', [ + '$modalStack', '$q', '$animate', '$injector', '$log', '$modalSuppressWarning', + function($modalStack , $q , $animate, $injector, $log, $modalSuppressWarning) { + var $animateCss = null; + + if ($injector.has('$animateCss')) { + $animateCss = $injector.get('$animateCss'); + } + + return { + scope: { + index: '@' + }, + replace: true, + transclude: true, + templateUrl: function(tElement, tAttrs) { + return tAttrs.templateUrl || 'template/modal/window.html'; + }, + link: function(scope, element, attrs) { + if (!$modalSuppressWarning) { + $log.warn('modal-window is now deprecated. Use uib-modal-window instead.'); + } + element.addClass(attrs.windowClass || ''); + element.addClass(attrs.windowTopClass || ''); + scope.size = attrs.size; + + scope.close = function(evt) { + var modal = $modalStack.getTop(); + if (modal && modal.value.backdrop && modal.value.backdrop !== 'static' && (evt.target === evt.currentTarget)) { + evt.preventDefault(); + evt.stopPropagation(); + $modalStack.dismiss(modal.key, 'backdrop click'); + } + }; + + // moved from template to fix issue #2280 + element.on('click', scope.close); + + // This property is only added to the scope for the purpose of detecting when this directive is rendered. + // We can detect that by using this property in the template associated with this directive and then use + // {@link Attribute#$observe} on it. For more details please see {@link TableColumnResize}. + scope.$isRendered = true; + + // Deferred object that will be resolved when this modal is render. + var modalRenderDeferObj = $q.defer(); + // Observe function will be called on next digest cycle after compilation, ensuring that the DOM is ready. + // In order to use this way of finding whether DOM is ready, we need to observe a scope property used in modal's template. + attrs.$observe('modalRender', function(value) { + if (value == 'true') { + modalRenderDeferObj.resolve(); + } + }); + + modalRenderDeferObj.promise.then(function() { + var animationPromise = null; + + if (attrs.modalInClass) { + if ($animateCss) { + animationPromise = $animateCss(element, { + addClass: attrs.modalInClass + }).start(); + } else { + animationPromise = $animate.addClass(element, attrs.modalInClass); + } + + scope.$on($modalStack.NOW_CLOSING_EVENT, function(e, setIsAsync) { + var done = setIsAsync(); + if ($animateCss) { + $animateCss(element, { + removeClass: attrs.modalInClass + }).start().then(done); + } else { + $animate.removeClass(element, attrs.modalInClass).then(done); + } + }); + } + + + $q.when(animationPromise).then(function() { + var inputWithAutofocus = element[0].querySelector('[autofocus]'); + /** + * Auto-focusing of a freshly-opened modal element causes any child elements + * with the autofocus attribute to lose focus. This is an issue on touch + * based devices which will show and then hide the onscreen keyboard. + * Attempts to refocus the autofocus element via JavaScript will not reopen + * the onscreen keyboard. Fixed by updated the focusing logic to only autofocus + * the modal element if the modal does not contain an autofocus element. + */ + if (inputWithAutofocus) { + inputWithAutofocus.focus(); + } else { + element[0].focus(); + } + }); + + // Notify {@link $modalStack} that modal is rendered. + var modal = $modalStack.getTop(); + if (modal) { + $modalStack.modalRendered(modal.key); + } + }); + } + }; + }]) + + .directive('modalAnimationClass', [ + '$log', '$modalSuppressWarning', + function ($log, $modalSuppressWarning) { + return { + compile: function(tElement, tAttrs) { + if (!$modalSuppressWarning) { + $log.warn('modal-animation-class is now deprecated. Use uib-modal-animation-class instead.'); + } + if (tAttrs.modalAnimation) { + tElement.addClass(tAttrs.modalAnimationClass); + } + } + }; + }]) + + .directive('modalTransclude', [ + '$log', '$modalSuppressWarning', + function ($log, $modalSuppressWarning) { + return { + link: function($scope, $element, $attrs, controller, $transclude) { + if (!$modalSuppressWarning) { + $log.warn('modal-transclude is now deprecated. Use uib-modal-transclude instead.'); + } + $transclude($scope.$parent, function(clone) { + $element.empty(); + $element.append(clone); + }); + } + }; + }]) + + .service('$modalStack', [ + '$animate', '$timeout', '$document', '$compile', '$rootScope', + '$q', + '$injector', + '$$multiMap', + '$$stackedMap', + '$uibModalStack', + '$log', + '$modalSuppressWarning', + function($animate , $timeout , $document , $compile , $rootScope , + $q, + $injector, + $$multiMap, + $$stackedMap, + $uibModalStack, + $log, + $modalSuppressWarning) { + if (!$modalSuppressWarning) { + $log.warn('$modalStack is now deprecated. Use $uibModalStack instead.'); + } + + angular.extend(this, $uibModalStack); + }]) + + .provider('$modal', ['$uibModalProvider', function($uibModalProvider) { + angular.extend(this, $uibModalProvider); + + this.$get = ['$injector', '$log', '$modalSuppressWarning', + function ($injector, $log, $modalSuppressWarning) { + if (!$modalSuppressWarning) { + $log.warn('$modal is now deprecated. Use $uibModal instead.'); + } + + return $injector.invoke($uibModalProvider.$get); + }]; + }]); + +angular.module('ui.bootstrap.pagination', []) +.controller('UibPaginationController', ['$scope', '$attrs', '$parse', function($scope, $attrs, $parse) { + var self = this, + ngModelCtrl = { $setViewValue: angular.noop }, // nullModelCtrl + setNumPages = $attrs.numPages ? $parse($attrs.numPages).assign : angular.noop; + + this.init = function(ngModelCtrl_, config) { + ngModelCtrl = ngModelCtrl_; + this.config = config; + + ngModelCtrl.$render = function() { + self.render(); + }; + + if ($attrs.itemsPerPage) { + $scope.$parent.$watch($parse($attrs.itemsPerPage), function(value) { + self.itemsPerPage = parseInt(value, 10); + $scope.totalPages = self.calculateTotalPages(); + }); + } else { + this.itemsPerPage = config.itemsPerPage; + } + + $scope.$watch('totalItems', function() { + $scope.totalPages = self.calculateTotalPages(); + }); + + $scope.$watch('totalPages', function(value) { + setNumPages($scope.$parent, value); // Readonly variable + + if ( $scope.page > value ) { + $scope.selectPage(value); + } else { + ngModelCtrl.$render(); + } + }); + }; + + this.calculateTotalPages = function() { + var totalPages = this.itemsPerPage < 1 ? 1 : Math.ceil($scope.totalItems / this.itemsPerPage); + return Math.max(totalPages || 0, 1); + }; + + this.render = function() { + $scope.page = parseInt(ngModelCtrl.$viewValue, 10) || 1; + }; + + $scope.selectPage = function(page, evt) { + if (evt) { + evt.preventDefault(); + } + + var clickAllowed = !$scope.ngDisabled || !evt; + if (clickAllowed && $scope.page !== page && page > 0 && page <= $scope.totalPages) { + if (evt && evt.target) { + evt.target.blur(); + } + ngModelCtrl.$setViewValue(page); + ngModelCtrl.$render(); + } + }; + + $scope.getText = function(key) { + return $scope[key + 'Text'] || self.config[key + 'Text']; + }; + + $scope.noPrevious = function() { + return $scope.page === 1; + }; + + $scope.noNext = function() { + return $scope.page === $scope.totalPages; + }; +}]) + +.constant('uibPaginationConfig', { + itemsPerPage: 10, + boundaryLinks: false, + directionLinks: true, + firstText: 'First', + previousText: 'Previous', + nextText: 'Next', + lastText: 'Last', + rotate: true +}) + +.directive('uibPagination', ['$parse', 'uibPaginationConfig', function($parse, paginationConfig) { + return { + restrict: 'EA', + scope: { + totalItems: '=', + firstText: '@', + previousText: '@', + nextText: '@', + lastText: '@', + ngDisabled:'=' + }, + require: ['uibPagination', '?ngModel'], + controller: 'UibPaginationController', + controllerAs: 'pagination', + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/pagination/pagination.html'; + }, + replace: true, + link: function(scope, element, attrs, ctrls) { + var paginationCtrl = ctrls[0], ngModelCtrl = ctrls[1]; + + if (!ngModelCtrl) { + return; // do nothing if no ng-model + } + + // Setup configuration parameters + var maxSize = angular.isDefined(attrs.maxSize) ? scope.$parent.$eval(attrs.maxSize) : paginationConfig.maxSize, + rotate = angular.isDefined(attrs.rotate) ? scope.$parent.$eval(attrs.rotate) : paginationConfig.rotate; + scope.boundaryLinks = angular.isDefined(attrs.boundaryLinks) ? scope.$parent.$eval(attrs.boundaryLinks) : paginationConfig.boundaryLinks; + scope.directionLinks = angular.isDefined(attrs.directionLinks) ? scope.$parent.$eval(attrs.directionLinks) : paginationConfig.directionLinks; + + paginationCtrl.init(ngModelCtrl, paginationConfig); + + if (attrs.maxSize) { + scope.$parent.$watch($parse(attrs.maxSize), function(value) { + maxSize = parseInt(value, 10); + paginationCtrl.render(); + }); + } + + // Create page object used in template + function makePage(number, text, isActive) { + return { + number: number, + text: text, + active: isActive + }; + } + + function getPages(currentPage, totalPages) { + var pages = []; + + // Default page limits + var startPage = 1, endPage = totalPages; + var isMaxSized = angular.isDefined(maxSize) && maxSize < totalPages; + + // recompute if maxSize + if (isMaxSized) { + if (rotate) { + // Current page is displayed in the middle of the visible ones + startPage = Math.max(currentPage - Math.floor(maxSize/2), 1); + endPage = startPage + maxSize - 1; + + // Adjust if limit is exceeded + if (endPage > totalPages) { + endPage = totalPages; + startPage = endPage - maxSize + 1; + } + } else { + // Visible pages are paginated with maxSize + startPage = ((Math.ceil(currentPage / maxSize) - 1) * maxSize) + 1; + + // Adjust last page if limit is exceeded + endPage = Math.min(startPage + maxSize - 1, totalPages); + } + } + + // Add page number links + for (var number = startPage; number <= endPage; number++) { + var page = makePage(number, number, number === currentPage); + pages.push(page); + } + + // Add links to move between page sets + if (isMaxSized && ! rotate) { + if (startPage > 1) { + var previousPageSet = makePage(startPage - 1, '...', false); + pages.unshift(previousPageSet); + } + + if (endPage < totalPages) { + var nextPageSet = makePage(endPage + 1, '...', false); + pages.push(nextPageSet); + } + } + + return pages; + } + + var originalRender = paginationCtrl.render; + paginationCtrl.render = function() { + originalRender(); + if (scope.page > 0 && scope.page <= scope.totalPages) { + scope.pages = getPages(scope.page, scope.totalPages); + } + }; + } + }; +}]) + +.constant('uibPagerConfig', { + itemsPerPage: 10, + previousText: '« Previous', + nextText: 'Next »', + align: true +}) + +.directive('uibPager', ['uibPagerConfig', function(pagerConfig) { + return { + restrict: 'EA', + scope: { + totalItems: '=', + previousText: '@', + nextText: '@', + ngDisabled: '=' + }, + require: ['uibPager', '?ngModel'], + controller: 'UibPaginationController', + controllerAs: 'pagination', + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/pagination/pager.html'; + }, + replace: true, + link: function(scope, element, attrs, ctrls) { + var paginationCtrl = ctrls[0], ngModelCtrl = ctrls[1]; + + if (!ngModelCtrl) { + return; // do nothing if no ng-model + } + + scope.align = angular.isDefined(attrs.align) ? scope.$parent.$eval(attrs.align) : pagerConfig.align; + paginationCtrl.init(ngModelCtrl, pagerConfig); + } + }; +}]); + +/* Deprecated Pagination Below */ + +angular.module('ui.bootstrap.pagination') +.value('$paginationSuppressWarning', false) +.controller('PaginationController', ['$scope', '$attrs', '$parse', '$log', '$paginationSuppressWarning', function($scope, $attrs, $parse, $log, $paginationSuppressWarning) { + if (!$paginationSuppressWarning) { + $log.warn('PaginationController is now deprecated. Use UibPaginationController instead.'); + } + + var self = this, + ngModelCtrl = { $setViewValue: angular.noop }, // nullModelCtrl + setNumPages = $attrs.numPages ? $parse($attrs.numPages).assign : angular.noop; + + this.init = function(ngModelCtrl_, config) { + ngModelCtrl = ngModelCtrl_; + this.config = config; + + ngModelCtrl.$render = function() { + self.render(); + }; + + if ($attrs.itemsPerPage) { + $scope.$parent.$watch($parse($attrs.itemsPerPage), function(value) { + self.itemsPerPage = parseInt(value, 10); + $scope.totalPages = self.calculateTotalPages(); + }); + } else { + this.itemsPerPage = config.itemsPerPage; + } + + $scope.$watch('totalItems', function() { + $scope.totalPages = self.calculateTotalPages(); + }); + + $scope.$watch('totalPages', function(value) { + setNumPages($scope.$parent, value); // Readonly variable + + if ( $scope.page > value ) { + $scope.selectPage(value); + } else { + ngModelCtrl.$render(); + } + }); + }; + + this.calculateTotalPages = function() { + var totalPages = this.itemsPerPage < 1 ? 1 : Math.ceil($scope.totalItems / this.itemsPerPage); + return Math.max(totalPages || 0, 1); + }; + + this.render = function() { + $scope.page = parseInt(ngModelCtrl.$viewValue, 10) || 1; + }; + + $scope.selectPage = function(page, evt) { + if (evt) { + evt.preventDefault(); + } + + var clickAllowed = !$scope.ngDisabled || !evt; + if (clickAllowed && $scope.page !== page && page > 0 && page <= $scope.totalPages) { + if (evt && evt.target) { + evt.target.blur(); + } + ngModelCtrl.$setViewValue(page); + ngModelCtrl.$render(); + } + }; + + $scope.getText = function(key) { + return $scope[key + 'Text'] || self.config[key + 'Text']; + }; + + $scope.noPrevious = function() { + return $scope.page === 1; + }; + + $scope.noNext = function() { + return $scope.page === $scope.totalPages; + }; +}]) +.directive('pagination', ['$parse', 'uibPaginationConfig', '$log', '$paginationSuppressWarning', function($parse, paginationConfig, $log, $paginationSuppressWarning) { + return { + restrict: 'EA', + scope: { + totalItems: '=', + firstText: '@', + previousText: '@', + nextText: '@', + lastText: '@', + ngDisabled:'=' + }, + require: ['pagination', '?ngModel'], + controller: 'PaginationController', + controllerAs: 'pagination', + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/pagination/pagination.html'; + }, + replace: true, + link: function(scope, element, attrs, ctrls) { + if (!$paginationSuppressWarning) { + $log.warn('pagination is now deprecated. Use uib-pagination instead.'); + } + var paginationCtrl = ctrls[0], ngModelCtrl = ctrls[1]; + + if (!ngModelCtrl) { + return; // do nothing if no ng-model + } + + // Setup configuration parameters + var maxSize = angular.isDefined(attrs.maxSize) ? scope.$parent.$eval(attrs.maxSize) : paginationConfig.maxSize, + rotate = angular.isDefined(attrs.rotate) ? scope.$parent.$eval(attrs.rotate) : paginationConfig.rotate; + scope.boundaryLinks = angular.isDefined(attrs.boundaryLinks) ? scope.$parent.$eval(attrs.boundaryLinks) : paginationConfig.boundaryLinks; + scope.directionLinks = angular.isDefined(attrs.directionLinks) ? scope.$parent.$eval(attrs.directionLinks) : paginationConfig.directionLinks; + + paginationCtrl.init(ngModelCtrl, paginationConfig); + + if (attrs.maxSize) { + scope.$parent.$watch($parse(attrs.maxSize), function(value) { + maxSize = parseInt(value, 10); + paginationCtrl.render(); + }); + } + + // Create page object used in template + function makePage(number, text, isActive) { + return { + number: number, + text: text, + active: isActive + }; + } + + function getPages(currentPage, totalPages) { + var pages = []; + + // Default page limits + var startPage = 1, endPage = totalPages; + var isMaxSized = angular.isDefined(maxSize) && maxSize < totalPages; + + // recompute if maxSize + if (isMaxSized) { + if (rotate) { + // Current page is displayed in the middle of the visible ones + startPage = Math.max(currentPage - Math.floor(maxSize/2), 1); + endPage = startPage + maxSize - 1; + + // Adjust if limit is exceeded + if (endPage > totalPages) { + endPage = totalPages; + startPage = endPage - maxSize + 1; + } + } else { + // Visible pages are paginated with maxSize + startPage = ((Math.ceil(currentPage / maxSize) - 1) * maxSize) + 1; + + // Adjust last page if limit is exceeded + endPage = Math.min(startPage + maxSize - 1, totalPages); + } + } + + // Add page number links + for (var number = startPage; number <= endPage; number++) { + var page = makePage(number, number, number === currentPage); + pages.push(page); + } + + // Add links to move between page sets + if (isMaxSized && ! rotate) { + if (startPage > 1) { + var previousPageSet = makePage(startPage - 1, '...', false); + pages.unshift(previousPageSet); + } + + if (endPage < totalPages) { + var nextPageSet = makePage(endPage + 1, '...', false); + pages.push(nextPageSet); + } + } + + return pages; + } + + var originalRender = paginationCtrl.render; + paginationCtrl.render = function() { + originalRender(); + if (scope.page > 0 && scope.page <= scope.totalPages) { + scope.pages = getPages(scope.page, scope.totalPages); + } + }; + } + }; +}]) + +.directive('pager', ['uibPagerConfig', '$log', '$paginationSuppressWarning', function(pagerConfig, $log, $paginationSuppressWarning) { + return { + restrict: 'EA', + scope: { + totalItems: '=', + previousText: '@', + nextText: '@', + ngDisabled: '=' + }, + require: ['pager', '?ngModel'], + controller: 'PaginationController', + controllerAs: 'pagination', + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/pagination/pager.html'; + }, + replace: true, + link: function(scope, element, attrs, ctrls) { + if (!$paginationSuppressWarning) { + $log.warn('pager is now deprecated. Use uib-pager instead.'); + } + var paginationCtrl = ctrls[0], ngModelCtrl = ctrls[1]; + + if (!ngModelCtrl) { + return; // do nothing if no ng-model + } + + scope.align = angular.isDefined(attrs.align) ? scope.$parent.$eval(attrs.align) : pagerConfig.align; + paginationCtrl.init(ngModelCtrl, pagerConfig); + } + }; +}]); + +/** + * The following features are still outstanding: animation as a + * function, placement as a function, inside, support for more triggers than + * just mouse enter/leave, html tooltips, and selector delegation. + */ +angular.module('ui.bootstrap.tooltip', ['ui.bootstrap.position', 'ui.bootstrap.stackedMap']) + +/** + * The $tooltip service creates tooltip- and popover-like directives as well as + * houses global options for them. + */ +.provider('$uibTooltip', function() { + // The default options tooltip and popover. + var defaultOptions = { + placement: 'top', + animation: true, + popupDelay: 0, + popupCloseDelay: 0, + useContentExp: false + }; + + // Default hide triggers for each show trigger + var triggerMap = { + 'mouseenter': 'mouseleave', + 'click': 'click', + 'focus': 'blur', + 'none': '' + }; + + // The options specified to the provider globally. + var globalOptions = {}; + + /** + * `options({})` allows global configuration of all tooltips in the + * application. + * + * var app = angular.module( 'App', ['ui.bootstrap.tooltip'], function( $tooltipProvider ) { + * // place tooltips left instead of top by default + * $tooltipProvider.options( { placement: 'left' } ); + * }); + */ + this.options = function(value) { + angular.extend(globalOptions, value); + }; + + /** + * This allows you to extend the set of trigger mappings available. E.g.: + * + * $tooltipProvider.setTriggers( 'openTrigger': 'closeTrigger' ); + */ + this.setTriggers = function setTriggers(triggers) { + angular.extend(triggerMap, triggers); + }; + + /** + * This is a helper function for translating camel-case to snake-case. + */ + function snake_case(name) { + var regexp = /[A-Z]/g; + var separator = '-'; + return name.replace(regexp, function(letter, pos) { + return (pos ? separator : '') + letter.toLowerCase(); + }); + } + + /** + * Returns the actual instance of the $tooltip service. + * TODO support multiple triggers + */ + this.$get = ['$window', '$compile', '$timeout', '$document', '$uibPosition', '$interpolate', '$rootScope', '$parse', '$$stackedMap', function($window, $compile, $timeout, $document, $position, $interpolate, $rootScope, $parse, $$stackedMap) { + var openedTooltips = $$stackedMap.createNew(); + $document.on('keypress', function(e) { + if (e.which === 27) { + var last = openedTooltips.top(); + if (last) { + last.value.close(); + openedTooltips.removeTop(); + last = null; + } + } + }); + + return function $tooltip(ttType, prefix, defaultTriggerShow, options) { + options = angular.extend({}, defaultOptions, globalOptions, options); + + /** + * Returns an object of show and hide triggers. + * + * If a trigger is supplied, + * it is used to show the tooltip; otherwise, it will use the `trigger` + * option passed to the `$tooltipProvider.options` method; else it will + * default to the trigger supplied to this directive factory. + * + * The hide trigger is based on the show trigger. If the `trigger` option + * was passed to the `$tooltipProvider.options` method, it will use the + * mapped trigger from `triggerMap` or the passed trigger if the map is + * undefined; otherwise, it uses the `triggerMap` value of the show + * trigger; else it will just use the show trigger. + */ + function getTriggers(trigger) { + var show = (trigger || options.trigger || defaultTriggerShow).split(' '); + var hide = show.map(function(trigger) { + return triggerMap[trigger] || trigger; + }); + return { + show: show, + hide: hide + }; + } + + var directiveName = snake_case(ttType); + + var startSym = $interpolate.startSymbol(); + var endSym = $interpolate.endSymbol(); + var template = + '
      ' + + '
      '; + + return { + compile: function(tElem, tAttrs) { + var tooltipLinker = $compile(template); + + return function link(scope, element, attrs, tooltipCtrl) { + var tooltip; + var tooltipLinkedScope; + var transitionTimeout; + var showTimeout; + var hideTimeout; + var positionTimeout; + var appendToBody = angular.isDefined(options.appendToBody) ? options.appendToBody : false; + var triggers = getTriggers(undefined); + var hasEnableExp = angular.isDefined(attrs[prefix + 'Enable']); + var ttScope = scope.$new(true); + var repositionScheduled = false; + var isOpenParse = angular.isDefined(attrs[prefix + 'IsOpen']) ? $parse(attrs[prefix + 'IsOpen']) : false; + var contentParse = options.useContentExp ? $parse(attrs[ttType]) : false; + var observers = []; + + var positionTooltip = function() { + // check if tooltip exists and is not empty + if (!tooltip || !tooltip.html()) { return; } + + if (!positionTimeout) { + positionTimeout = $timeout(function() { + // Reset the positioning. + tooltip.css({ top: 0, left: 0 }); + + // Now set the calculated positioning. + var ttCss = $position.positionElements(element, tooltip, ttScope.placement, appendToBody); + ttCss.top += 'px'; + ttCss.left += 'px'; + ttCss.visibility = 'visible'; + tooltip.css(ttCss); + + positionTimeout = null; + }, 0, false); + } + }; + + // Set up the correct scope to allow transclusion later + ttScope.origScope = scope; + + // By default, the tooltip is not open. + // TODO add ability to start tooltip opened + ttScope.isOpen = false; + openedTooltips.add(ttScope, { + close: hide + }); + + function toggleTooltipBind() { + if (!ttScope.isOpen) { + showTooltipBind(); + } else { + hideTooltipBind(); + } + } + + // Show the tooltip with delay if specified, otherwise show it immediately + function showTooltipBind() { + if (hasEnableExp && !scope.$eval(attrs[prefix + 'Enable'])) { + return; + } + + cancelHide(); + prepareTooltip(); + + if (ttScope.popupDelay) { + // Do nothing if the tooltip was already scheduled to pop-up. + // This happens if show is triggered multiple times before any hide is triggered. + if (!showTimeout) { + showTimeout = $timeout(show, ttScope.popupDelay, false); + } + } else { + show(); + } + } + + function hideTooltipBind() { + cancelShow(); + + if (ttScope.popupCloseDelay) { + if (!hideTimeout) { + hideTimeout = $timeout(hide, ttScope.popupCloseDelay, false); + } + } else { + hide(); + } + } + + // Show the tooltip popup element. + function show() { + cancelShow(); + cancelHide(); + + // Don't show empty tooltips. + if (!ttScope.content) { + return angular.noop; + } + + createTooltip(); + + // And show the tooltip. + ttScope.$evalAsync(function() { + ttScope.isOpen = true; + assignIsOpen(true); + positionTooltip(); + }); + } + + function cancelShow() { + if (showTimeout) { + $timeout.cancel(showTimeout); + showTimeout = null; + } + + if (positionTimeout) { + $timeout.cancel(positionTimeout); + positionTimeout = null; + } + } + + // Hide the tooltip popup element. + function hide() { + cancelShow(); + cancelHide(); + + if (!ttScope) { + return; + } + + // First things first: we don't show it anymore. + ttScope.$evalAsync(function() { + ttScope.isOpen = false; + assignIsOpen(false); + // And now we remove it from the DOM. However, if we have animation, we + // need to wait for it to expire beforehand. + // FIXME: this is a placeholder for a port of the transitions library. + // The fade transition in TWBS is 150ms. + if (ttScope.animation) { + if (!transitionTimeout) { + transitionTimeout = $timeout(removeTooltip, 150, false); + } + } else { + removeTooltip(); + } + }); + } + + function cancelHide() { + if (hideTimeout) { + $timeout.cancel(hideTimeout); + hideTimeout = null; + } + if (transitionTimeout) { + $timeout.cancel(transitionTimeout); + transitionTimeout = null; + } + } + + function createTooltip() { + // There can only be one tooltip element per directive shown at once. + if (tooltip) { + return; + } + + tooltipLinkedScope = ttScope.$new(); + tooltip = tooltipLinker(tooltipLinkedScope, function(tooltip) { + if (appendToBody) { + $document.find('body').append(tooltip); + } else { + element.after(tooltip); + } + }); + + prepObservers(); + } + + function removeTooltip() { + unregisterObservers(); + + transitionTimeout = null; + if (tooltip) { + tooltip.remove(); + tooltip = null; + } + if (tooltipLinkedScope) { + tooltipLinkedScope.$destroy(); + tooltipLinkedScope = null; + } + } + + /** + * Set the inital scope values. Once + * the tooltip is created, the observers + * will be added to keep things in synch. + */ + function prepareTooltip() { + ttScope.title = attrs[prefix + 'Title']; + if (contentParse) { + ttScope.content = contentParse(scope); + } else { + ttScope.content = attrs[ttType]; + } + + ttScope.popupClass = attrs[prefix + 'Class']; + ttScope.placement = angular.isDefined(attrs[prefix + 'Placement']) ? attrs[prefix + 'Placement'] : options.placement; + + var delay = parseInt(attrs[prefix + 'PopupDelay'], 10); + var closeDelay = parseInt(attrs[prefix + 'PopupCloseDelay'], 10); + ttScope.popupDelay = !isNaN(delay) ? delay : options.popupDelay; + ttScope.popupCloseDelay = !isNaN(closeDelay) ? closeDelay : options.popupCloseDelay; + } + + function assignIsOpen(isOpen) { + if (isOpenParse && angular.isFunction(isOpenParse.assign)) { + isOpenParse.assign(scope, isOpen); + } + } + + ttScope.contentExp = function() { + return ttScope.content; + }; + + /** + * Observe the relevant attributes. + */ + attrs.$observe('disabled', function(val) { + if (val) { + cancelShow(); + } + + if (val && ttScope.isOpen) { + hide(); + } + }); + + if (isOpenParse) { + scope.$watch(isOpenParse, function(val) { + /*jshint -W018 */ + if (ttScope && !val === ttScope.isOpen) { + toggleTooltipBind(); + } + /*jshint +W018 */ + }); + } + + function prepObservers() { + observers.length = 0; + + if (contentParse) { + observers.push( + scope.$watch(contentParse, function(val) { + ttScope.content = val; + if (!val && ttScope.isOpen) { + hide(); + } + }) + ); + + observers.push( + tooltipLinkedScope.$watch(function() { + if (!repositionScheduled) { + repositionScheduled = true; + tooltipLinkedScope.$$postDigest(function() { + repositionScheduled = false; + if (ttScope && ttScope.isOpen) { + positionTooltip(); + } + }); + } + }) + ); + } else { + observers.push( + attrs.$observe(ttType, function(val) { + ttScope.content = val; + if (!val && ttScope.isOpen) { + hide(); + } else { + positionTooltip(); + } + }) + ); + } + + observers.push( + attrs.$observe(prefix + 'Title', function(val) { + ttScope.title = val; + if (ttScope.isOpen) { + positionTooltip(); + } + }) + ); + + observers.push( + attrs.$observe(prefix + 'Placement', function(val) { + ttScope.placement = val ? val : options.placement; + if (ttScope.isOpen) { + positionTooltip(); + } + }) + ); + } + + function unregisterObservers() { + if (observers.length) { + angular.forEach(observers, function(observer) { + observer(); + }); + observers.length = 0; + } + } + + var unregisterTriggers = function() { + triggers.show.forEach(function(trigger) { + element.unbind(trigger, showTooltipBind); + }); + triggers.hide.forEach(function(trigger) { + trigger.split(' ').forEach(function(hideTrigger) { + element[0].removeEventListener(hideTrigger, hideTooltipBind); + }); + }); + }; + + function prepTriggers() { + var val = attrs[prefix + 'Trigger']; + unregisterTriggers(); + + triggers = getTriggers(val); + + if (triggers.show !== 'none') { + triggers.show.forEach(function(trigger, idx) { + // Using raw addEventListener due to jqLite/jQuery bug - #4060 + if (trigger === triggers.hide[idx]) { + element[0].addEventListener(trigger, toggleTooltipBind); + } else if (trigger) { + element[0].addEventListener(trigger, showTooltipBind); + triggers.hide[idx].split(' ').forEach(function(trigger) { + element[0].addEventListener(trigger, hideTooltipBind); + }); + } + + element.on('keypress', function(e) { + if (e.which === 27) { + hideTooltipBind(); + } + }); + }); + } + } + + prepTriggers(); + + var animation = scope.$eval(attrs[prefix + 'Animation']); + ttScope.animation = angular.isDefined(animation) ? !!animation : options.animation; + + var appendToBodyVal = scope.$eval(attrs[prefix + 'AppendToBody']); + appendToBody = angular.isDefined(appendToBodyVal) ? appendToBodyVal : appendToBody; + + // if a tooltip is attached to we need to remove it on + // location change as its parent scope will probably not be destroyed + // by the change. + if (appendToBody) { + scope.$on('$locationChangeSuccess', function closeTooltipOnLocationChangeSuccess() { + if (ttScope.isOpen) { + hide(); + } + }); + } + + // Make sure tooltip is destroyed and removed. + scope.$on('$destroy', function onDestroyTooltip() { + cancelShow(); + cancelHide(); + unregisterTriggers(); + removeTooltip(); + openedTooltips.remove(ttScope); + ttScope = null; + }); + }; + } + }; + }; + }]; +}) + +// This is mostly ngInclude code but with a custom scope +.directive('uibTooltipTemplateTransclude', [ + '$animate', '$sce', '$compile', '$templateRequest', +function ($animate , $sce , $compile , $templateRequest) { + return { + link: function(scope, elem, attrs) { + var origScope = scope.$eval(attrs.tooltipTemplateTranscludeScope); + + var changeCounter = 0, + currentScope, + previousElement, + currentElement; + + var cleanupLastIncludeContent = function() { + if (previousElement) { + previousElement.remove(); + previousElement = null; + } + + if (currentScope) { + currentScope.$destroy(); + currentScope = null; + } + + if (currentElement) { + $animate.leave(currentElement).then(function() { + previousElement = null; + }); + previousElement = currentElement; + currentElement = null; + } + }; + + scope.$watch($sce.parseAsResourceUrl(attrs.uibTooltipTemplateTransclude), function(src) { + var thisChangeId = ++changeCounter; + + if (src) { + //set the 2nd param to true to ignore the template request error so that the inner + //contents and scope can be cleaned up. + $templateRequest(src, true).then(function(response) { + if (thisChangeId !== changeCounter) { return; } + var newScope = origScope.$new(); + var template = response; + + var clone = $compile(template)(newScope, function(clone) { + cleanupLastIncludeContent(); + $animate.enter(clone, elem); + }); + + currentScope = newScope; + currentElement = clone; + + currentScope.$emit('$includeContentLoaded', src); + }, function() { + if (thisChangeId === changeCounter) { + cleanupLastIncludeContent(); + scope.$emit('$includeContentError', src); + } + }); + scope.$emit('$includeContentRequested', src); + } else { + cleanupLastIncludeContent(); + } + }); + + scope.$on('$destroy', cleanupLastIncludeContent); + } + }; +}]) + +/** + * Note that it's intentional that these classes are *not* applied through $animate. + * They must not be animated as they're expected to be present on the tooltip on + * initialization. + */ +.directive('uibTooltipClasses', function() { + return { + restrict: 'A', + link: function(scope, element, attrs) { + if (scope.placement) { + element.addClass(scope.placement); + } + + if (scope.popupClass) { + element.addClass(scope.popupClass); + } + + if (scope.animation()) { + element.addClass(attrs.tooltipAnimationClass); + } + } + }; +}) + +.directive('uibTooltipPopup', function() { + return { + replace: true, + scope: { content: '@', placement: '@', popupClass: '@', animation: '&', isOpen: '&' }, + templateUrl: 'template/tooltip/tooltip-popup.html', + link: function(scope, element) { + element.addClass('tooltip'); + } + }; +}) + +.directive('uibTooltip', [ '$uibTooltip', function($uibTooltip) { + return $uibTooltip('uibTooltip', 'tooltip', 'mouseenter'); +}]) + +.directive('uibTooltipTemplatePopup', function() { + return { + replace: true, + scope: { contentExp: '&', placement: '@', popupClass: '@', animation: '&', isOpen: '&', + originScope: '&' }, + templateUrl: 'template/tooltip/tooltip-template-popup.html', + link: function(scope, element) { + element.addClass('tooltip'); + } + }; +}) + +.directive('uibTooltipTemplate', ['$uibTooltip', function($uibTooltip) { + return $uibTooltip('uibTooltipTemplate', 'tooltip', 'mouseenter', { + useContentExp: true + }); +}]) + +.directive('uibTooltipHtmlPopup', function() { + return { + replace: true, + scope: { contentExp: '&', placement: '@', popupClass: '@', animation: '&', isOpen: '&' }, + templateUrl: 'template/tooltip/tooltip-html-popup.html', + link: function(scope, element) { + element.addClass('tooltip'); + } + }; +}) + +.directive('uibTooltipHtml', ['$uibTooltip', function($uibTooltip) { + return $uibTooltip('uibTooltipHtml', 'tooltip', 'mouseenter', { + useContentExp: true + }); +}]); + +/* Deprecated tooltip below */ + +angular.module('ui.bootstrap.tooltip') + +.value('$tooltipSuppressWarning', false) + +.provider('$tooltip', ['$uibTooltipProvider', function($uibTooltipProvider) { + angular.extend(this, $uibTooltipProvider); + + this.$get = ['$log', '$tooltipSuppressWarning', '$injector', function($log, $tooltipSuppressWarning, $injector) { + if (!$tooltipSuppressWarning) { + $log.warn('$tooltip is now deprecated. Use $uibTooltip instead.'); + } + + return $injector.invoke($uibTooltipProvider.$get); + }]; +}]) + +// This is mostly ngInclude code but with a custom scope +.directive('tooltipTemplateTransclude', [ + '$animate', '$sce', '$compile', '$templateRequest', '$log', '$tooltipSuppressWarning', +function ($animate , $sce , $compile , $templateRequest, $log, $tooltipSuppressWarning) { + return { + link: function(scope, elem, attrs) { + if (!$tooltipSuppressWarning) { + $log.warn('tooltip-template-transclude is now deprecated. Use uib-tooltip-template-transclude instead.'); + } + + var origScope = scope.$eval(attrs.tooltipTemplateTranscludeScope); + + var changeCounter = 0, + currentScope, + previousElement, + currentElement; + + var cleanupLastIncludeContent = function() { + if (previousElement) { + previousElement.remove(); + previousElement = null; + } + if (currentScope) { + currentScope.$destroy(); + currentScope = null; + } + if (currentElement) { + $animate.leave(currentElement).then(function() { + previousElement = null; + }); + previousElement = currentElement; + currentElement = null; + } + }; + + scope.$watch($sce.parseAsResourceUrl(attrs.tooltipTemplateTransclude), function(src) { + var thisChangeId = ++changeCounter; + + if (src) { + //set the 2nd param to true to ignore the template request error so that the inner + //contents and scope can be cleaned up. + $templateRequest(src, true).then(function(response) { + if (thisChangeId !== changeCounter) { return; } + var newScope = origScope.$new(); + var template = response; + + var clone = $compile(template)(newScope, function(clone) { + cleanupLastIncludeContent(); + $animate.enter(clone, elem); + }); + + currentScope = newScope; + currentElement = clone; + + currentScope.$emit('$includeContentLoaded', src); + }, function() { + if (thisChangeId === changeCounter) { + cleanupLastIncludeContent(); + scope.$emit('$includeContentError', src); + } + }); + scope.$emit('$includeContentRequested', src); + } else { + cleanupLastIncludeContent(); + } + }); + + scope.$on('$destroy', cleanupLastIncludeContent); + } + }; +}]) + +.directive('tooltipClasses', ['$log', '$tooltipSuppressWarning', function($log, $tooltipSuppressWarning) { + return { + restrict: 'A', + link: function(scope, element, attrs) { + if (!$tooltipSuppressWarning) { + $log.warn('tooltip-classes is now deprecated. Use uib-tooltip-classes instead.'); + } + + if (scope.placement) { + element.addClass(scope.placement); + } + if (scope.popupClass) { + element.addClass(scope.popupClass); + } + if (scope.animation()) { + element.addClass(attrs.tooltipAnimationClass); + } + } + }; +}]) + +.directive('tooltipPopup', ['$log', '$tooltipSuppressWarning', function($log, $tooltipSuppressWarning) { + return { + replace: true, + scope: { content: '@', placement: '@', popupClass: '@', animation: '&', isOpen: '&' }, + templateUrl: 'template/tooltip/tooltip-popup.html', + link: function(scope, element) { + if (!$tooltipSuppressWarning) { + $log.warn('tooltip-popup is now deprecated. Use uib-tooltip-popup instead.'); + } + + element.addClass('tooltip'); + } + }; +}]) + +.directive('tooltip', ['$tooltip', function($tooltip) { + return $tooltip('tooltip', 'tooltip', 'mouseenter'); +}]) + +.directive('tooltipTemplatePopup', ['$log', '$tooltipSuppressWarning', function($log, $tooltipSuppressWarning) { + return { + replace: true, + scope: { contentExp: '&', placement: '@', popupClass: '@', animation: '&', isOpen: '&', + originScope: '&' }, + templateUrl: 'template/tooltip/tooltip-template-popup.html', + link: function(scope, element) { + if (!$tooltipSuppressWarning) { + $log.warn('tooltip-template-popup is now deprecated. Use uib-tooltip-template-popup instead.'); + } + + element.addClass('tooltip'); + } + }; +}]) + +.directive('tooltipTemplate', ['$tooltip', function($tooltip) { + return $tooltip('tooltipTemplate', 'tooltip', 'mouseenter', { + useContentExp: true + }); +}]) + +.directive('tooltipHtmlPopup', ['$log', '$tooltipSuppressWarning', function($log, $tooltipSuppressWarning) { + return { + replace: true, + scope: { contentExp: '&', placement: '@', popupClass: '@', animation: '&', isOpen: '&' }, + templateUrl: 'template/tooltip/tooltip-html-popup.html', + link: function(scope, element) { + if (!$tooltipSuppressWarning) { + $log.warn('tooltip-html-popup is now deprecated. Use uib-tooltip-html-popup instead.'); + } + + element.addClass('tooltip'); + } + }; +}]) + +.directive('tooltipHtml', ['$tooltip', function($tooltip) { + return $tooltip('tooltipHtml', 'tooltip', 'mouseenter', { + useContentExp: true + }); +}]); + +/** + * The following features are still outstanding: popup delay, animation as a + * function, placement as a function, inside, support for more triggers than + * just mouse enter/leave, and selector delegatation. + */ +angular.module('ui.bootstrap.popover', ['ui.bootstrap.tooltip']) + +.directive('uibPopoverTemplatePopup', function() { + return { + replace: true, + scope: { title: '@', contentExp: '&', placement: '@', popupClass: '@', animation: '&', isOpen: '&', + originScope: '&' }, + templateUrl: 'template/popover/popover-template.html', + link: function(scope, element) { + element.addClass('popover'); + } + }; +}) + +.directive('uibPopoverTemplate', ['$uibTooltip', function($uibTooltip) { + return $uibTooltip('uibPopoverTemplate', 'popover', 'click', { + useContentExp: true + }); +}]) + +.directive('uibPopoverHtmlPopup', function() { + return { + replace: true, + scope: { contentExp: '&', title: '@', placement: '@', popupClass: '@', animation: '&', isOpen: '&' }, + templateUrl: 'template/popover/popover-html.html', + link: function(scope, element) { + element.addClass('popover'); + } + }; +}) + +.directive('uibPopoverHtml', ['$uibTooltip', function($uibTooltip) { + return $uibTooltip('uibPopoverHtml', 'popover', 'click', { + useContentExp: true + }); +}]) + +.directive('uibPopoverPopup', function() { + return { + replace: true, + scope: { title: '@', content: '@', placement: '@', popupClass: '@', animation: '&', isOpen: '&' }, + templateUrl: 'template/popover/popover.html', + link: function(scope, element) { + element.addClass('popover'); + } + }; +}) + +.directive('uibPopover', ['$uibTooltip', function($uibTooltip) { + return $uibTooltip('uibPopover', 'popover', 'click'); +}]); + +/* Deprecated popover below */ + +angular.module('ui.bootstrap.popover') + +.value('$popoverSuppressWarning', false) + +.directive('popoverTemplatePopup', ['$log', '$popoverSuppressWarning', function($log, $popoverSuppressWarning) { + return { + replace: true, + scope: { title: '@', contentExp: '&', placement: '@', popupClass: '@', animation: '&', isOpen: '&', + originScope: '&' }, + templateUrl: 'template/popover/popover-template.html', + link: function(scope, element) { + if (!$popoverSuppressWarning) { + $log.warn('popover-template-popup is now deprecated. Use uib-popover-template-popup instead.'); + } + + element.addClass('popover'); + } + }; +}]) + +.directive('popoverTemplate', ['$tooltip', function($tooltip) { + return $tooltip('popoverTemplate', 'popover', 'click', { + useContentExp: true + }); +}]) + +.directive('popoverHtmlPopup', ['$log', '$popoverSuppressWarning', function($log, $popoverSuppressWarning) { + return { + replace: true, + scope: { contentExp: '&', title: '@', placement: '@', popupClass: '@', animation: '&', isOpen: '&' }, + templateUrl: 'template/popover/popover-html.html', + link: function(scope, element) { + if (!$popoverSuppressWarning) { + $log.warn('popover-html-popup is now deprecated. Use uib-popover-html-popup instead.'); + } + + element.addClass('popover'); + } + }; +}]) + +.directive('popoverHtml', ['$tooltip', function($tooltip) { + return $tooltip('popoverHtml', 'popover', 'click', { + useContentExp: true + }); +}]) + +.directive('popoverPopup', ['$log', '$popoverSuppressWarning', function($log, $popoverSuppressWarning) { + return { + replace: true, + scope: { title: '@', content: '@', placement: '@', popupClass: '@', animation: '&', isOpen: '&' }, + templateUrl: 'template/popover/popover.html', + link: function(scope, element) { + if (!$popoverSuppressWarning) { + $log.warn('popover-popup is now deprecated. Use uib-popover-popup instead.'); + } + + element.addClass('popover'); + } + }; +}]) + +.directive('popover', ['$tooltip', function($tooltip) { + + return $tooltip('popover', 'popover', 'click'); +}]); + +angular.module('ui.bootstrap.progressbar', []) + +.constant('uibProgressConfig', { + animate: true, + max: 100 +}) + +.controller('UibProgressController', ['$scope', '$attrs', 'uibProgressConfig', function($scope, $attrs, progressConfig) { + var self = this, + animate = angular.isDefined($attrs.animate) ? $scope.$parent.$eval($attrs.animate) : progressConfig.animate; + + this.bars = []; + $scope.max = angular.isDefined($scope.max) ? $scope.max : progressConfig.max; + + this.addBar = function(bar, element, attrs) { + if (!animate) { + element.css({'transition': 'none'}); + } + + this.bars.push(bar); + + bar.max = $scope.max; + bar.title = attrs && angular.isDefined(attrs.title) ? attrs.title : 'progressbar'; + + bar.$watch('value', function(value) { + bar.recalculatePercentage(); + }); + + bar.recalculatePercentage = function() { + var totalPercentage = self.bars.reduce(function(total, bar) { + bar.percent = +(100 * bar.value / bar.max).toFixed(2); + return total + bar.percent; + }, 0); + + if (totalPercentage > 100) { + bar.percent -= totalPercentage - 100; + } + }; + + bar.$on('$destroy', function() { + element = null; + self.removeBar(bar); + }); + }; + + this.removeBar = function(bar) { + this.bars.splice(this.bars.indexOf(bar), 1); + this.bars.forEach(function (bar) { + bar.recalculatePercentage(); + }); + }; + + $scope.$watch('max', function(max) { + self.bars.forEach(function(bar) { + bar.max = $scope.max; + bar.recalculatePercentage(); + }); + }); +}]) + +.directive('uibProgress', function() { + return { + replace: true, + transclude: true, + controller: 'UibProgressController', + require: 'uibProgress', + scope: { + max: '=?' + }, + templateUrl: 'template/progressbar/progress.html' + }; +}) + +.directive('uibBar', function() { + return { + replace: true, + transclude: true, + require: '^uibProgress', + scope: { + value: '=', + type: '@' + }, + templateUrl: 'template/progressbar/bar.html', + link: function(scope, element, attrs, progressCtrl) { + progressCtrl.addBar(scope, element, attrs); + } + }; +}) + +.directive('uibProgressbar', function() { + return { + replace: true, + transclude: true, + controller: 'UibProgressController', + scope: { + value: '=', + max: '=?', + type: '@' + }, + templateUrl: 'template/progressbar/progressbar.html', + link: function(scope, element, attrs, progressCtrl) { + progressCtrl.addBar(scope, angular.element(element.children()[0]), {title: attrs.title}); + } + }; +}); + +/* Deprecated progressbar below */ + +angular.module('ui.bootstrap.progressbar') + +.value('$progressSuppressWarning', false) + +.controller('ProgressController', ['$scope', '$attrs', 'uibProgressConfig', '$log', '$progressSuppressWarning', function($scope, $attrs, progressConfig, $log, $progressSuppressWarning) { + if (!$progressSuppressWarning) { + $log.warn('ProgressController is now deprecated. Use UibProgressController instead.'); + } + + var self = this, + animate = angular.isDefined($attrs.animate) ? $scope.$parent.$eval($attrs.animate) : progressConfig.animate; + + this.bars = []; + $scope.max = angular.isDefined($scope.max) ? $scope.max : progressConfig.max; + + this.addBar = function(bar, element, attrs) { + if (!animate) { + element.css({'transition': 'none'}); + } + + this.bars.push(bar); + + bar.max = $scope.max; + bar.title = attrs && angular.isDefined(attrs.title) ? attrs.title : 'progressbar'; + + bar.$watch('value', function(value) { + bar.recalculatePercentage(); + }); + + bar.recalculatePercentage = function() { + bar.percent = +(100 * bar.value / bar.max).toFixed(2); + + var totalPercentage = self.bars.reduce(function(total, bar) { + return total + bar.percent; + }, 0); + + if (totalPercentage > 100) { + bar.percent -= totalPercentage - 100; + } + }; + + bar.$on('$destroy', function() { + element = null; + self.removeBar(bar); + }); + }; + + this.removeBar = function(bar) { + this.bars.splice(this.bars.indexOf(bar), 1); + }; + + $scope.$watch('max', function(max) { + self.bars.forEach(function(bar) { + bar.max = $scope.max; + bar.recalculatePercentage(); + }); + }); +}]) + +.directive('progress', ['$log', '$progressSuppressWarning', function($log, $progressSuppressWarning) { + return { + replace: true, + transclude: true, + controller: 'ProgressController', + require: 'progress', + scope: { + max: '=?', + title: '@?' + }, + templateUrl: 'template/progressbar/progress.html', + link: function() { + if (!$progressSuppressWarning) { + $log.warn('progress is now deprecated. Use uib-progress instead.'); + } + } + }; +}]) + +.directive('bar', ['$log', '$progressSuppressWarning', function($log, $progressSuppressWarning) { + return { + replace: true, + transclude: true, + require: '^progress', + scope: { + value: '=', + type: '@' + }, + templateUrl: 'template/progressbar/bar.html', + link: function(scope, element, attrs, progressCtrl) { + if (!$progressSuppressWarning) { + $log.warn('bar is now deprecated. Use uib-bar instead.'); + } + progressCtrl.addBar(scope, element); + } + }; +}]) + +.directive('progressbar', ['$log', '$progressSuppressWarning', function($log, $progressSuppressWarning) { + return { + replace: true, + transclude: true, + controller: 'ProgressController', + scope: { + value: '=', + max: '=?', + type: '@' + }, + templateUrl: 'template/progressbar/progressbar.html', + link: function(scope, element, attrs, progressCtrl) { + if (!$progressSuppressWarning) { + $log.warn('progressbar is now deprecated. Use uib-progressbar instead.'); + } + progressCtrl.addBar(scope, angular.element(element.children()[0]), {title: attrs.title}); + } + }; +}]); + +angular.module('ui.bootstrap.rating', []) + +.constant('uibRatingConfig', { + max: 5, + stateOn: null, + stateOff: null, + titles : ['one', 'two', 'three', 'four', 'five'] +}) + +.controller('UibRatingController', ['$scope', '$attrs', 'uibRatingConfig', function($scope, $attrs, ratingConfig) { + var ngModelCtrl = { $setViewValue: angular.noop }; + + this.init = function(ngModelCtrl_) { + ngModelCtrl = ngModelCtrl_; + ngModelCtrl.$render = this.render; + + ngModelCtrl.$formatters.push(function(value) { + if (angular.isNumber(value) && value << 0 !== value) { + value = Math.round(value); + } + return value; + }); + + this.stateOn = angular.isDefined($attrs.stateOn) ? $scope.$parent.$eval($attrs.stateOn) : ratingConfig.stateOn; + this.stateOff = angular.isDefined($attrs.stateOff) ? $scope.$parent.$eval($attrs.stateOff) : ratingConfig.stateOff; + var tmpTitles = angular.isDefined($attrs.titles) ? $scope.$parent.$eval($attrs.titles) : ratingConfig.titles ; + this.titles = angular.isArray(tmpTitles) && tmpTitles.length > 0 ? + tmpTitles : ratingConfig.titles; + + var ratingStates = angular.isDefined($attrs.ratingStates) ? + $scope.$parent.$eval($attrs.ratingStates) : + new Array(angular.isDefined($attrs.max) ? $scope.$parent.$eval($attrs.max) : ratingConfig.max); + $scope.range = this.buildTemplateObjects(ratingStates); + }; + + this.buildTemplateObjects = function(states) { + for (var i = 0, n = states.length; i < n; i++) { + states[i] = angular.extend({ index: i }, { stateOn: this.stateOn, stateOff: this.stateOff, title: this.getTitle(i) }, states[i]); + } + return states; + }; + + this.getTitle = function(index) { + if (index >= this.titles.length) { + return index + 1; + } else { + return this.titles[index]; + } + }; + + $scope.rate = function(value) { + if (!$scope.readonly && value >= 0 && value <= $scope.range.length) { + ngModelCtrl.$setViewValue(ngModelCtrl.$viewValue === value ? 0 : value); + ngModelCtrl.$render(); + } + }; + + $scope.enter = function(value) { + if (!$scope.readonly) { + $scope.value = value; + } + $scope.onHover({value: value}); + }; + + $scope.reset = function() { + $scope.value = ngModelCtrl.$viewValue; + $scope.onLeave(); + }; + + $scope.onKeydown = function(evt) { + if (/(37|38|39|40)/.test(evt.which)) { + evt.preventDefault(); + evt.stopPropagation(); + $scope.rate($scope.value + (evt.which === 38 || evt.which === 39 ? 1 : -1)); + } + }; + + this.render = function() { + $scope.value = ngModelCtrl.$viewValue; + }; +}]) + +.directive('uibRating', function() { + return { + require: ['uibRating', 'ngModel'], + scope: { + readonly: '=?', + onHover: '&', + onLeave: '&' + }, + controller: 'UibRatingController', + templateUrl: 'template/rating/rating.html', + replace: true, + link: function(scope, element, attrs, ctrls) { + var ratingCtrl = ctrls[0], ngModelCtrl = ctrls[1]; + ratingCtrl.init(ngModelCtrl); + } + }; +}); + +/* Deprecated rating below */ + +angular.module('ui.bootstrap.rating') + +.value('$ratingSuppressWarning', false) + +.controller('RatingController', ['$scope', '$attrs', '$controller', '$log', '$ratingSuppressWarning', function($scope, $attrs, $controller, $log, $ratingSuppressWarning) { + if (!$ratingSuppressWarning) { + $log.warn('RatingController is now deprecated. Use UibRatingController instead.'); + } + + angular.extend(this, $controller('UibRatingController', { + $scope: $scope, + $attrs: $attrs + })); +}]) + +.directive('rating', ['$log', '$ratingSuppressWarning', function($log, $ratingSuppressWarning) { + return { + require: ['rating', 'ngModel'], + scope: { + readonly: '=?', + onHover: '&', + onLeave: '&' + }, + controller: 'RatingController', + templateUrl: 'template/rating/rating.html', + replace: true, + link: function(scope, element, attrs, ctrls) { + if (!$ratingSuppressWarning) { + $log.warn('rating is now deprecated. Use uib-rating instead.'); + } + var ratingCtrl = ctrls[0], ngModelCtrl = ctrls[1]; + ratingCtrl.init(ngModelCtrl); + } + }; +}]); + + +/** + * @ngdoc overview + * @name ui.bootstrap.tabs + * + * @description + * AngularJS version of the tabs directive. + */ + +angular.module('ui.bootstrap.tabs', []) + +.controller('UibTabsetController', ['$scope', function ($scope) { + var ctrl = this, + tabs = ctrl.tabs = $scope.tabs = []; + + ctrl.select = function(selectedTab) { + angular.forEach(tabs, function(tab) { + if (tab.active && tab !== selectedTab) { + tab.active = false; + tab.onDeselect(); + selectedTab.selectCalled = false; + } + }); + selectedTab.active = true; + // only call select if it has not already been called + if (!selectedTab.selectCalled) { + selectedTab.onSelect(); + selectedTab.selectCalled = true; + } + }; + + ctrl.addTab = function addTab(tab) { + tabs.push(tab); + // we can't run the select function on the first tab + // since that would select it twice + if (tabs.length === 1 && tab.active !== false) { + tab.active = true; + } else if (tab.active) { + ctrl.select(tab); + } else { + tab.active = false; + } + }; + + ctrl.removeTab = function removeTab(tab) { + var index = tabs.indexOf(tab); + //Select a new tab if the tab to be removed is selected and not destroyed + if (tab.active && tabs.length > 1 && !destroyed) { + //If this is the last tab, select the previous tab. else, the next tab. + var newActiveIndex = index == tabs.length - 1 ? index - 1 : index + 1; + ctrl.select(tabs[newActiveIndex]); + } + tabs.splice(index, 1); + }; + + var destroyed; + $scope.$on('$destroy', function() { + destroyed = true; + }); +}]) + +/** + * @ngdoc directive + * @name ui.bootstrap.tabs.directive:tabset + * @restrict EA + * + * @description + * Tabset is the outer container for the tabs directive + * + * @param {boolean=} vertical Whether or not to use vertical styling for the tabs. + * @param {boolean=} justified Whether or not to use justified styling for the tabs. + * + * @example + + + + First Content! + Second Content! + +
      + + First Vertical Content! + Second Vertical Content! + + + First Justified Content! + Second Justified Content! + +
      +
      + */ +.directive('uibTabset', function() { + return { + restrict: 'EA', + transclude: true, + replace: true, + scope: { + type: '@' + }, + controller: 'UibTabsetController', + templateUrl: 'template/tabs/tabset.html', + link: function(scope, element, attrs) { + scope.vertical = angular.isDefined(attrs.vertical) ? scope.$parent.$eval(attrs.vertical) : false; + scope.justified = angular.isDefined(attrs.justified) ? scope.$parent.$eval(attrs.justified) : false; + } + }; +}) + +/** + * @ngdoc directive + * @name ui.bootstrap.tabs.directive:tab + * @restrict EA + * + * @param {string=} heading The visible heading, or title, of the tab. Set HTML headings with {@link ui.bootstrap.tabs.directive:tabHeading tabHeading}. + * @param {string=} select An expression to evaluate when the tab is selected. + * @param {boolean=} active A binding, telling whether or not this tab is selected. + * @param {boolean=} disabled A binding, telling whether or not this tab is disabled. + * + * @description + * Creates a tab with a heading and content. Must be placed within a {@link ui.bootstrap.tabs.directive:tabset tabset}. + * + * @example + + +
      + + +
      + + First Tab + + Alert me! + Second Tab, with alert callback and html heading! + + + {{item.content}} + + +
      +
      + + function TabsDemoCtrl($scope) { + $scope.items = [ + { title:"Dynamic Title 1", content:"Dynamic Item 0" }, + { title:"Dynamic Title 2", content:"Dynamic Item 1", disabled: true } + ]; + + $scope.alertMe = function() { + setTimeout(function() { + alert("You've selected the alert tab!"); + }); + }; + }; + +
      + */ + +/** + * @ngdoc directive + * @name ui.bootstrap.tabs.directive:tabHeading + * @restrict EA + * + * @description + * Creates an HTML heading for a {@link ui.bootstrap.tabs.directive:tab tab}. Must be placed as a child of a tab element. + * + * @example + + + + + HTML in my titles?! + And some content, too! + + + Icon heading?!? + That's right. + + + + + */ +.directive('uibTab', ['$parse', function($parse) { + return { + require: '^uibTabset', + restrict: 'EA', + replace: true, + templateUrl: 'template/tabs/tab.html', + transclude: true, + scope: { + active: '=?', + heading: '@', + onSelect: '&select', //This callback is called in contentHeadingTransclude + //once it inserts the tab's content into the dom + onDeselect: '&deselect' + }, + controller: function() { + //Empty controller so other directives can require being 'under' a tab + }, + link: function(scope, elm, attrs, tabsetCtrl, transclude) { + scope.$watch('active', function(active) { + if (active) { + tabsetCtrl.select(scope); + } + }); + + scope.disabled = false; + if (attrs.disable) { + scope.$parent.$watch($parse(attrs.disable), function(value) { + scope.disabled = !! value; + }); + } + + scope.select = function() { + if (!scope.disabled) { + scope.active = true; + } + }; + + tabsetCtrl.addTab(scope); + scope.$on('$destroy', function() { + tabsetCtrl.removeTab(scope); + }); + + //We need to transclude later, once the content container is ready. + //when this link happens, we're inside a tab heading. + scope.$transcludeFn = transclude; + } + }; +}]) + +.directive('uibTabHeadingTransclude', function() { + return { + restrict: 'A', + require: ['?^uibTab', '?^tab'], // TODO: change to '^uibTab' after deprecation removal + link: function(scope, elm) { + scope.$watch('headingElement', function updateHeadingElement(heading) { + if (heading) { + elm.html(''); + elm.append(heading); + } + }); + } + }; +}) + +.directive('uibTabContentTransclude', function() { + return { + restrict: 'A', + require: ['?^uibTabset', '?^tabset'], // TODO: change to '^uibTabset' after deprecation removal + link: function(scope, elm, attrs) { + var tab = scope.$eval(attrs.uibTabContentTransclude); + + //Now our tab is ready to be transcluded: both the tab heading area + //and the tab content area are loaded. Transclude 'em both. + tab.$transcludeFn(tab.$parent, function(contents) { + angular.forEach(contents, function(node) { + if (isTabHeading(node)) { + //Let tabHeadingTransclude know. + tab.headingElement = node; + } else { + elm.append(node); + } + }); + }); + } + }; + + function isTabHeading(node) { + return node.tagName && ( + node.hasAttribute('tab-heading') || // TODO: remove after deprecation removal + node.hasAttribute('data-tab-heading') || // TODO: remove after deprecation removal + node.hasAttribute('x-tab-heading') || // TODO: remove after deprecation removal + node.hasAttribute('uib-tab-heading') || + node.hasAttribute('data-uib-tab-heading') || + node.hasAttribute('x-uib-tab-heading') || + node.tagName.toLowerCase() === 'tab-heading' || // TODO: remove after deprecation removal + node.tagName.toLowerCase() === 'data-tab-heading' || // TODO: remove after deprecation removal + node.tagName.toLowerCase() === 'x-tab-heading' || // TODO: remove after deprecation removal + node.tagName.toLowerCase() === 'uib-tab-heading' || + node.tagName.toLowerCase() === 'data-uib-tab-heading' || + node.tagName.toLowerCase() === 'x-uib-tab-heading' + ); + } +}); + +/* deprecated tabs below */ + +angular.module('ui.bootstrap.tabs') + + .value('$tabsSuppressWarning', false) + + .controller('TabsetController', ['$scope', '$controller', '$log', '$tabsSuppressWarning', function($scope, $controller, $log, $tabsSuppressWarning) { + if (!$tabsSuppressWarning) { + $log.warn('TabsetController is now deprecated. Use UibTabsetController instead.'); + } + + angular.extend(this, $controller('UibTabsetController', { + $scope: $scope + })); + }]) + + .directive('tabset', ['$log', '$tabsSuppressWarning', function($log, $tabsSuppressWarning) { + return { + restrict: 'EA', + transclude: true, + replace: true, + scope: { + type: '@' + }, + controller: 'TabsetController', + templateUrl: 'template/tabs/tabset.html', + link: function(scope, element, attrs) { + + if (!$tabsSuppressWarning) { + $log.warn('tabset is now deprecated. Use uib-tabset instead.'); + } + scope.vertical = angular.isDefined(attrs.vertical) ? scope.$parent.$eval(attrs.vertical) : false; + scope.justified = angular.isDefined(attrs.justified) ? scope.$parent.$eval(attrs.justified) : false; + } + }; + }]) + + .directive('tab', ['$parse', '$log', '$tabsSuppressWarning', function($parse, $log, $tabsSuppressWarning) { + return { + require: '^tabset', + restrict: 'EA', + replace: true, + templateUrl: 'template/tabs/tab.html', + transclude: true, + scope: { + active: '=?', + heading: '@', + onSelect: '&select', //This callback is called in contentHeadingTransclude + //once it inserts the tab's content into the dom + onDeselect: '&deselect' + }, + controller: function() { + //Empty controller so other directives can require being 'under' a tab + }, + link: function(scope, elm, attrs, tabsetCtrl, transclude) { + if (!$tabsSuppressWarning) { + $log.warn('tab is now deprecated. Use uib-tab instead.'); + } + + scope.$watch('active', function(active) { + if (active) { + tabsetCtrl.select(scope); + } + }); + + scope.disabled = false; + if (attrs.disable) { + scope.$parent.$watch($parse(attrs.disable), function(value) { + scope.disabled = !!value; + }); + } + + scope.select = function() { + if (!scope.disabled) { + scope.active = true; + } + }; + + tabsetCtrl.addTab(scope); + scope.$on('$destroy', function() { + tabsetCtrl.removeTab(scope); + }); + + //We need to transclude later, once the content container is ready. + //when this link happens, we're inside a tab heading. + scope.$transcludeFn = transclude; + } + }; + }]) + + .directive('tabHeadingTransclude', ['$log', '$tabsSuppressWarning', function($log, $tabsSuppressWarning) { + return { + restrict: 'A', + require: '^tab', + link: function(scope, elm) { + if (!$tabsSuppressWarning) { + $log.warn('tab-heading-transclude is now deprecated. Use uib-tab-heading-transclude instead.'); + } + + scope.$watch('headingElement', function updateHeadingElement(heading) { + if (heading) { + elm.html(''); + elm.append(heading); + } + }); + } + }; + }]) + + .directive('tabContentTransclude', ['$log', '$tabsSuppressWarning', function($log, $tabsSuppressWarning) { + return { + restrict: 'A', + require: '^tabset', + link: function(scope, elm, attrs) { + if (!$tabsSuppressWarning) { + $log.warn('tab-content-transclude is now deprecated. Use uib-tab-content-transclude instead.'); + } + + var tab = scope.$eval(attrs.tabContentTransclude); + + //Now our tab is ready to be transcluded: both the tab heading area + //and the tab content area are loaded. Transclude 'em both. + tab.$transcludeFn(tab.$parent, function(contents) { + angular.forEach(contents, function(node) { + if (isTabHeading(node)) { + //Let tabHeadingTransclude know. + tab.headingElement = node; + } + else { + elm.append(node); + } + }); + }); + } + }; + + function isTabHeading(node) { + return node.tagName && ( + node.hasAttribute('tab-heading') || + node.hasAttribute('data-tab-heading') || + node.hasAttribute('x-tab-heading') || + node.tagName.toLowerCase() === 'tab-heading' || + node.tagName.toLowerCase() === 'data-tab-heading' || + node.tagName.toLowerCase() === 'x-tab-heading' + ); + } + }]); + +angular.module('ui.bootstrap.timepicker', []) + +.constant('uibTimepickerConfig', { + hourStep: 1, + minuteStep: 1, + showMeridian: true, + meridians: null, + readonlyInput: false, + mousewheel: true, + arrowkeys: true, + showSpinners: true +}) + +.controller('UibTimepickerController', ['$scope', '$element', '$attrs', '$parse', '$log', '$locale', 'uibTimepickerConfig', function($scope, $element, $attrs, $parse, $log, $locale, timepickerConfig) { + var selected = new Date(), + ngModelCtrl = { $setViewValue: angular.noop }, // nullModelCtrl + meridians = angular.isDefined($attrs.meridians) ? $scope.$parent.$eval($attrs.meridians) : timepickerConfig.meridians || $locale.DATETIME_FORMATS.AMPMS; + + $scope.tabindex = angular.isDefined($attrs.tabindex) ? $attrs.tabindex : 0; + $element.removeAttr('tabindex'); + + this.init = function(ngModelCtrl_, inputs) { + ngModelCtrl = ngModelCtrl_; + ngModelCtrl.$render = this.render; + + ngModelCtrl.$formatters.unshift(function(modelValue) { + return modelValue ? new Date(modelValue) : null; + }); + + var hoursInputEl = inputs.eq(0), + minutesInputEl = inputs.eq(1); + + var mousewheel = angular.isDefined($attrs.mousewheel) ? $scope.$parent.$eval($attrs.mousewheel) : timepickerConfig.mousewheel; + if (mousewheel) { + this.setupMousewheelEvents(hoursInputEl, minutesInputEl); + } + + var arrowkeys = angular.isDefined($attrs.arrowkeys) ? $scope.$parent.$eval($attrs.arrowkeys) : timepickerConfig.arrowkeys; + if (arrowkeys) { + this.setupArrowkeyEvents(hoursInputEl, minutesInputEl); + } + + $scope.readonlyInput = angular.isDefined($attrs.readonlyInput) ? $scope.$parent.$eval($attrs.readonlyInput) : timepickerConfig.readonlyInput; + this.setupInputEvents(hoursInputEl, minutesInputEl); + }; + + var hourStep = timepickerConfig.hourStep; + if ($attrs.hourStep) { + $scope.$parent.$watch($parse($attrs.hourStep), function(value) { + hourStep = parseInt(value, 10); + }); + } + + var minuteStep = timepickerConfig.minuteStep; + if ($attrs.minuteStep) { + $scope.$parent.$watch($parse($attrs.minuteStep), function(value) { + minuteStep = parseInt(value, 10); + }); + } + + var min; + $scope.$parent.$watch($parse($attrs.min), function(value) { + var dt = new Date(value); + min = isNaN(dt) ? undefined : dt; + }); + + var max; + $scope.$parent.$watch($parse($attrs.max), function(value) { + var dt = new Date(value); + max = isNaN(dt) ? undefined : dt; + }); + + $scope.noIncrementHours = function() { + var incrementedSelected = addMinutes(selected, hourStep * 60); + return incrementedSelected > max || + (incrementedSelected < selected && incrementedSelected < min); + }; + + $scope.noDecrementHours = function() { + var decrementedSelected = addMinutes(selected, -hourStep * 60); + return decrementedSelected < min || + (decrementedSelected > selected && decrementedSelected > max); + }; + + $scope.noIncrementMinutes = function() { + var incrementedSelected = addMinutes(selected, minuteStep); + return incrementedSelected > max || + (incrementedSelected < selected && incrementedSelected < min); + }; + + $scope.noDecrementMinutes = function() { + var decrementedSelected = addMinutes(selected, -minuteStep); + return decrementedSelected < min || + (decrementedSelected > selected && decrementedSelected > max); + }; + + $scope.noToggleMeridian = function() { + if (selected.getHours() < 13) { + return addMinutes(selected, 12 * 60) > max; + } else { + return addMinutes(selected, -12 * 60) < min; + } + }; + + // 12H / 24H mode + $scope.showMeridian = timepickerConfig.showMeridian; + if ($attrs.showMeridian) { + $scope.$parent.$watch($parse($attrs.showMeridian), function(value) { + $scope.showMeridian = !!value; + + if (ngModelCtrl.$error.time) { + // Evaluate from template + var hours = getHoursFromTemplate(), minutes = getMinutesFromTemplate(); + if (angular.isDefined(hours) && angular.isDefined(minutes)) { + selected.setHours(hours); + refresh(); + } + } else { + updateTemplate(); + } + }); + } + + // Get $scope.hours in 24H mode if valid + function getHoursFromTemplate() { + var hours = parseInt($scope.hours, 10); + var valid = $scope.showMeridian ? (hours > 0 && hours < 13) : (hours >= 0 && hours < 24); + if (!valid) { + return undefined; + } + + if ($scope.showMeridian) { + if (hours === 12) { + hours = 0; + } + if ($scope.meridian === meridians[1]) { + hours = hours + 12; + } + } + return hours; + } + + function getMinutesFromTemplate() { + var minutes = parseInt($scope.minutes, 10); + return (minutes >= 0 && minutes < 60) ? minutes : undefined; + } + + function pad(value) { + return (angular.isDefined(value) && value.toString().length < 2) ? '0' + value : value.toString(); + } + + // Respond on mousewheel spin + this.setupMousewheelEvents = function(hoursInputEl, minutesInputEl) { + var isScrollingUp = function(e) { + if (e.originalEvent) { + e = e.originalEvent; + } + //pick correct delta variable depending on event + var delta = (e.wheelDelta) ? e.wheelDelta : -e.deltaY; + return (e.detail || delta > 0); + }; + + hoursInputEl.bind('mousewheel wheel', function(e) { + $scope.$apply(isScrollingUp(e) ? $scope.incrementHours() : $scope.decrementHours()); + e.preventDefault(); + }); + + minutesInputEl.bind('mousewheel wheel', function(e) { + $scope.$apply(isScrollingUp(e) ? $scope.incrementMinutes() : $scope.decrementMinutes()); + e.preventDefault(); + }); + + }; + + // Respond on up/down arrowkeys + this.setupArrowkeyEvents = function(hoursInputEl, minutesInputEl) { + hoursInputEl.bind('keydown', function(e) { + if (e.which === 38) { // up + e.preventDefault(); + $scope.incrementHours(); + $scope.$apply(); + } else if (e.which === 40) { // down + e.preventDefault(); + $scope.decrementHours(); + $scope.$apply(); + } + }); + + minutesInputEl.bind('keydown', function(e) { + if (e.which === 38) { // up + e.preventDefault(); + $scope.incrementMinutes(); + $scope.$apply(); + } else if (e.which === 40) { // down + e.preventDefault(); + $scope.decrementMinutes(); + $scope.$apply(); + } + }); + }; + + this.setupInputEvents = function(hoursInputEl, minutesInputEl) { + if ($scope.readonlyInput) { + $scope.updateHours = angular.noop; + $scope.updateMinutes = angular.noop; + return; + } + + var invalidate = function(invalidHours, invalidMinutes) { + ngModelCtrl.$setViewValue(null); + ngModelCtrl.$setValidity('time', false); + if (angular.isDefined(invalidHours)) { + $scope.invalidHours = invalidHours; + } + if (angular.isDefined(invalidMinutes)) { + $scope.invalidMinutes = invalidMinutes; + } + }; + + $scope.updateHours = function() { + var hours = getHoursFromTemplate(), + minutes = getMinutesFromTemplate(); + + if (angular.isDefined(hours) && angular.isDefined(minutes)) { + selected.setHours(hours); + if (selected < min || selected > max) { + invalidate(true); + } else { + refresh('h'); + } + } else { + invalidate(true); + } + }; + + hoursInputEl.bind('blur', function(e) { + if (!$scope.invalidHours && $scope.hours < 10) { + $scope.$apply(function() { + $scope.hours = pad($scope.hours); + }); + } + }); + + $scope.updateMinutes = function() { + var minutes = getMinutesFromTemplate(), + hours = getHoursFromTemplate(); + + if (angular.isDefined(minutes) && angular.isDefined(hours)) { + selected.setMinutes(minutes); + if (selected < min || selected > max) { + invalidate(undefined, true); + } else { + refresh('m'); + } + } else { + invalidate(undefined, true); + } + }; + + minutesInputEl.bind('blur', function(e) { + if (!$scope.invalidMinutes && $scope.minutes < 10) { + $scope.$apply(function() { + $scope.minutes = pad($scope.minutes); + }); + } + }); + + }; + + this.render = function() { + var date = ngModelCtrl.$viewValue; + + if (isNaN(date)) { + ngModelCtrl.$setValidity('time', false); + $log.error('Timepicker directive: "ng-model" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.'); + } else { + if (date) { + selected = date; + } + + if (selected < min || selected > max) { + ngModelCtrl.$setValidity('time', false); + $scope.invalidHours = true; + $scope.invalidMinutes = true; + } else { + makeValid(); + } + updateTemplate(); + } + }; + + // Call internally when we know that model is valid. + function refresh(keyboardChange) { + makeValid(); + ngModelCtrl.$setViewValue(new Date(selected)); + updateTemplate(keyboardChange); + } + + function makeValid() { + ngModelCtrl.$setValidity('time', true); + $scope.invalidHours = false; + $scope.invalidMinutes = false; + } + + function updateTemplate(keyboardChange) { + var hours = selected.getHours(), minutes = selected.getMinutes(); + + if ($scope.showMeridian) { + hours = (hours === 0 || hours === 12) ? 12 : hours % 12; // Convert 24 to 12 hour system + } + + $scope.hours = keyboardChange === 'h' ? hours : pad(hours); + if (keyboardChange !== 'm') { + $scope.minutes = pad(minutes); + } + $scope.meridian = selected.getHours() < 12 ? meridians[0] : meridians[1]; + } + + function addMinutes(date, minutes) { + var dt = new Date(date.getTime() + minutes * 60000); + var newDate = new Date(date); + newDate.setHours(dt.getHours(), dt.getMinutes()); + return newDate; + } + + function addMinutesToSelected(minutes) { + selected = addMinutes(selected, minutes); + refresh(); + } + + $scope.showSpinners = angular.isDefined($attrs.showSpinners) ? + $scope.$parent.$eval($attrs.showSpinners) : timepickerConfig.showSpinners; + + $scope.incrementHours = function() { + if (!$scope.noIncrementHours()) { + addMinutesToSelected(hourStep * 60); + } + }; + + $scope.decrementHours = function() { + if (!$scope.noDecrementHours()) { + addMinutesToSelected(-hourStep * 60); + } + }; + + $scope.incrementMinutes = function() { + if (!$scope.noIncrementMinutes()) { + addMinutesToSelected(minuteStep); + } + }; + + $scope.decrementMinutes = function() { + if (!$scope.noDecrementMinutes()) { + addMinutesToSelected(-minuteStep); + } + }; + + $scope.toggleMeridian = function() { + if (!$scope.noToggleMeridian()) { + addMinutesToSelected(12 * 60 * (selected.getHours() < 12 ? 1 : -1)); + } + }; +}]) + +.directive('uibTimepicker', function() { + return { + restrict: 'EA', + require: ['uibTimepicker', '?^ngModel'], + controller: 'UibTimepickerController', + controllerAs: 'timepicker', + replace: true, + scope: {}, + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/timepicker/timepicker.html'; + }, + link: function(scope, element, attrs, ctrls) { + var timepickerCtrl = ctrls[0], ngModelCtrl = ctrls[1]; + + if (ngModelCtrl) { + timepickerCtrl.init(ngModelCtrl, element.find('input')); + } + } + }; +}); + +/* Deprecated timepicker below */ + +angular.module('ui.bootstrap.timepicker') + +.value('$timepickerSuppressWarning', false) + +.controller('TimepickerController', ['$scope', '$element', '$attrs', '$controller', '$log', '$timepickerSuppressWarning', function($scope, $element, $attrs, $controller, $log, $timepickerSuppressWarning) { + if (!$timepickerSuppressWarning) { + $log.warn('TimepickerController is now deprecated. Use UibTimepickerController instead.'); + } + + angular.extend(this, $controller('UibTimepickerController', { + $scope: $scope, + $element: $element, + $attrs: $attrs + })); +}]) + +.directive('timepicker', ['$log', '$timepickerSuppressWarning', function($log, $timepickerSuppressWarning) { + return { + restrict: 'EA', + require: ['timepicker', '?^ngModel'], + controller: 'TimepickerController', + controllerAs: 'timepicker', + replace: true, + scope: {}, + templateUrl: function(element, attrs) { + return attrs.templateUrl || 'template/timepicker/timepicker.html'; + }, + link: function(scope, element, attrs, ctrls) { + if (!$timepickerSuppressWarning) { + $log.warn('timepicker is now deprecated. Use uib-timepicker instead.'); + } + var timepickerCtrl = ctrls[0], ngModelCtrl = ctrls[1]; + + if (ngModelCtrl) { + timepickerCtrl.init(ngModelCtrl, element.find('input')); + } + } + }; +}]); + +angular.module('ui.bootstrap.typeahead', ['ui.bootstrap.position']) + +/** + * A helper service that can parse typeahead's syntax (string provided by users) + * Extracted to a separate service for ease of unit testing + */ + .factory('uibTypeaheadParser', ['$parse', function($parse) { + // 00000111000000000000022200000000000000003333333333333330000000000044000 + var TYPEAHEAD_REGEXP = /^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w\d]*))\s+in\s+([\s\S]+?)$/; + return { + parse: function(input) { + var match = input.match(TYPEAHEAD_REGEXP); + if (!match) { + throw new Error( + 'Expected typeahead specification in form of "_modelValue_ (as _label_)? for _item_ in _collection_"' + + ' but got "' + input + '".'); + } + + return { + itemName: match[3], + source: $parse(match[4]), + viewMapper: $parse(match[2] || match[1]), + modelMapper: $parse(match[1]) + }; + } + }; + }]) + + .controller('UibTypeaheadController', ['$scope', '$element', '$attrs', '$compile', '$parse', '$q', '$timeout', '$document', '$window', '$rootScope', '$uibPosition', 'uibTypeaheadParser', + function(originalScope, element, attrs, $compile, $parse, $q, $timeout, $document, $window, $rootScope, $position, typeaheadParser) { + var HOT_KEYS = [9, 13, 27, 38, 40]; + var eventDebounceTime = 200; + var modelCtrl, ngModelOptions; + //SUPPORTED ATTRIBUTES (OPTIONS) + + //minimal no of characters that needs to be entered before typeahead kicks-in + var minLength = originalScope.$eval(attrs.typeaheadMinLength); + if (!minLength && minLength !== 0) { + minLength = 1; + } + + //minimal wait time after last character typed before typeahead kicks-in + var waitTime = originalScope.$eval(attrs.typeaheadWaitMs) || 0; + + //should it restrict model values to the ones selected from the popup only? + var isEditable = originalScope.$eval(attrs.typeaheadEditable) !== false; + + //binding to a variable that indicates if matches are being retrieved asynchronously + var isLoadingSetter = $parse(attrs.typeaheadLoading).assign || angular.noop; + + //a callback executed when a match is selected + var onSelectCallback = $parse(attrs.typeaheadOnSelect); + + //should it select highlighted popup value when losing focus? + var isSelectOnBlur = angular.isDefined(attrs.typeaheadSelectOnBlur) ? originalScope.$eval(attrs.typeaheadSelectOnBlur) : false; + + //binding to a variable that indicates if there were no results after the query is completed + var isNoResultsSetter = $parse(attrs.typeaheadNoResults).assign || angular.noop; + + var inputFormatter = attrs.typeaheadInputFormatter ? $parse(attrs.typeaheadInputFormatter) : undefined; + + var appendToBody = attrs.typeaheadAppendToBody ? originalScope.$eval(attrs.typeaheadAppendToBody) : false; + + var appendToElementId = attrs.typeaheadAppendToElementId || false; + + var focusFirst = originalScope.$eval(attrs.typeaheadFocusFirst) !== false; + + //If input matches an item of the list exactly, select it automatically + var selectOnExact = attrs.typeaheadSelectOnExact ? originalScope.$eval(attrs.typeaheadSelectOnExact) : false; + + //INTERNAL VARIABLES + + //model setter executed upon match selection + var parsedModel = $parse(attrs.ngModel); + var invokeModelSetter = $parse(attrs.ngModel + '($$$p)'); + var $setModelValue = function(scope, newValue) { + if (angular.isFunction(parsedModel(originalScope)) && + ngModelOptions && ngModelOptions.$options && ngModelOptions.$options.getterSetter) { + return invokeModelSetter(scope, {$$$p: newValue}); + } else { + return parsedModel.assign(scope, newValue); + } + }; + + //expressions used by typeahead + var parserResult = typeaheadParser.parse(attrs.uibTypeahead); + + var hasFocus; + + //Used to avoid bug in iOS webview where iOS keyboard does not fire + //mousedown & mouseup events + //Issue #3699 + var selected; + + //create a child scope for the typeahead directive so we are not polluting original scope + //with typeahead-specific data (matches, query etc.) + var scope = originalScope.$new(); + var offDestroy = originalScope.$on('$destroy', function() { + scope.$destroy(); + }); + scope.$on('$destroy', offDestroy); + + // WAI-ARIA + var popupId = 'typeahead-' + scope.$id + '-' + Math.floor(Math.random() * 10000); + element.attr({ + 'aria-autocomplete': 'list', + 'aria-expanded': false, + 'aria-owns': popupId + }); + + //pop-up element used to display matches + var popUpEl = angular.element('
      '); + popUpEl.attr({ + id: popupId, + matches: 'matches', + active: 'activeIdx', + select: 'select(activeIdx)', + 'move-in-progress': 'moveInProgress', + query: 'query', + position: 'position' + }); + //custom item template + if (angular.isDefined(attrs.typeaheadTemplateUrl)) { + popUpEl.attr('template-url', attrs.typeaheadTemplateUrl); + } + + if (angular.isDefined(attrs.typeaheadPopupTemplateUrl)) { + popUpEl.attr('popup-template-url', attrs.typeaheadPopupTemplateUrl); + } + + var resetMatches = function() { + scope.matches = []; + scope.activeIdx = -1; + element.attr('aria-expanded', false); + }; + + var getMatchId = function(index) { + return popupId + '-option-' + index; + }; + + // Indicate that the specified match is the active (pre-selected) item in the list owned by this typeahead. + // This attribute is added or removed automatically when the `activeIdx` changes. + scope.$watch('activeIdx', function(index) { + if (index < 0) { + element.removeAttr('aria-activedescendant'); + } else { + element.attr('aria-activedescendant', getMatchId(index)); + } + }); + + var inputIsExactMatch = function(inputValue, index) { + if (scope.matches.length > index && inputValue) { + return inputValue.toUpperCase() === scope.matches[index].label.toUpperCase(); + } + + return false; + }; + + var getMatchesAsync = function(inputValue) { + var locals = {$viewValue: inputValue}; + isLoadingSetter(originalScope, true); + isNoResultsSetter(originalScope, false); + $q.when(parserResult.source(originalScope, locals)).then(function(matches) { + //it might happen that several async queries were in progress if a user were typing fast + //but we are interested only in responses that correspond to the current view value + var onCurrentRequest = (inputValue === modelCtrl.$viewValue); + if (onCurrentRequest && hasFocus) { + if (matches && matches.length > 0) { + scope.activeIdx = focusFirst ? 0 : -1; + isNoResultsSetter(originalScope, false); + scope.matches.length = 0; + + //transform labels + for (var i = 0; i < matches.length; i++) { + locals[parserResult.itemName] = matches[i]; + scope.matches.push({ + id: getMatchId(i), + label: parserResult.viewMapper(scope, locals), + model: matches[i] + }); + } + + scope.query = inputValue; + //position pop-up with matches - we need to re-calculate its position each time we are opening a window + //with matches as a pop-up might be absolute-positioned and position of an input might have changed on a page + //due to other elements being rendered + recalculatePosition(); + + element.attr('aria-expanded', true); + + //Select the single remaining option if user input matches + if (selectOnExact && scope.matches.length === 1 && inputIsExactMatch(inputValue, 0)) { + scope.select(0); + } + } else { + resetMatches(); + isNoResultsSetter(originalScope, true); + } + } + if (onCurrentRequest) { + isLoadingSetter(originalScope, false); + } + }, function() { + resetMatches(); + isLoadingSetter(originalScope, false); + isNoResultsSetter(originalScope, true); + }); + }; + + // bind events only if appendToBody params exist - performance feature + if (appendToBody) { + angular.element($window).bind('resize', fireRecalculating); + $document.find('body').bind('scroll', fireRecalculating); + } + + // Declare the timeout promise var outside the function scope so that stacked calls can be cancelled later + var timeoutEventPromise; + + // Default progress type + scope.moveInProgress = false; + + function fireRecalculating() { + if (!scope.moveInProgress) { + scope.moveInProgress = true; + scope.$digest(); + } + + // Cancel previous timeout + if (timeoutEventPromise) { + $timeout.cancel(timeoutEventPromise); + } + + // Debounced executing recalculate after events fired + timeoutEventPromise = $timeout(function() { + // if popup is visible + if (scope.matches.length) { + recalculatePosition(); + } + + scope.moveInProgress = false; + }, eventDebounceTime); + } + + // recalculate actual position and set new values to scope + // after digest loop is popup in right position + function recalculatePosition() { + scope.position = appendToBody ? $position.offset(element) : $position.position(element); + scope.position.top += element.prop('offsetHeight'); + } + + //we need to propagate user's query so we can higlight matches + scope.query = undefined; + + //Declare the timeout promise var outside the function scope so that stacked calls can be cancelled later + var timeoutPromise; + + var scheduleSearchWithTimeout = function(inputValue) { + timeoutPromise = $timeout(function() { + getMatchesAsync(inputValue); + }, waitTime); + }; + + var cancelPreviousTimeout = function() { + if (timeoutPromise) { + $timeout.cancel(timeoutPromise); + } + }; + + resetMatches(); + + scope.select = function(activeIdx) { + //called from within the $digest() cycle + var locals = {}; + var model, item; + + selected = true; + locals[parserResult.itemName] = item = scope.matches[activeIdx].model; + model = parserResult.modelMapper(originalScope, locals); + $setModelValue(originalScope, model); + modelCtrl.$setValidity('editable', true); + modelCtrl.$setValidity('parse', true); + + onSelectCallback(originalScope, { + $item: item, + $model: model, + $label: parserResult.viewMapper(originalScope, locals) + }); + + resetMatches(); + + //return focus to the input element if a match was selected via a mouse click event + // use timeout to avoid $rootScope:inprog error + if (scope.$eval(attrs.typeaheadFocusOnSelect) !== false) { + $timeout(function() { element[0].focus(); }, 0, false); + } + }; + + //bind keyboard events: arrows up(38) / down(40), enter(13) and tab(9), esc(27) + element.bind('keydown', function(evt) { + //typeahead is open and an "interesting" key was pressed + if (scope.matches.length === 0 || HOT_KEYS.indexOf(evt.which) === -1) { + return; + } + + // if there's nothing selected (i.e. focusFirst) and enter or tab is hit, clear the results + if (scope.activeIdx === -1 && (evt.which === 9 || evt.which === 13)) { + resetMatches(); + scope.$digest(); + return; + } + + evt.preventDefault(); + + if (evt.which === 40) { + scope.activeIdx = (scope.activeIdx + 1) % scope.matches.length; + scope.$digest(); + } else if (evt.which === 38) { + scope.activeIdx = (scope.activeIdx > 0 ? scope.activeIdx : scope.matches.length) - 1; + scope.$digest(); + } else if (evt.which === 13 || evt.which === 9) { + scope.$apply(function () { + scope.select(scope.activeIdx); + }); + } else if (evt.which === 27) { + evt.stopPropagation(); + + resetMatches(); + scope.$digest(); + } + }); + + element.bind('blur', function() { + if (isSelectOnBlur && scope.matches.length && scope.activeIdx !== -1 && !selected) { + selected = true; + scope.$apply(function() { + scope.select(scope.activeIdx); + }); + } + hasFocus = false; + selected = false; + }); + + // Keep reference to click handler to unbind it. + var dismissClickHandler = function(evt) { + // Issue #3973 + // Firefox treats right click as a click on document + if (element[0] !== evt.target && evt.which !== 3 && scope.matches.length !== 0) { + resetMatches(); + if (!$rootScope.$$phase) { + scope.$digest(); + } + } + }; + + $document.bind('click', dismissClickHandler); + + originalScope.$on('$destroy', function() { + $document.unbind('click', dismissClickHandler); + if (appendToBody || appendToElementId) { + $popup.remove(); + } + + if (appendToBody) { + angular.element($window).unbind('resize', fireRecalculating); + $document.find('body').unbind('scroll', fireRecalculating); + } + // Prevent jQuery cache memory leak + popUpEl.remove(); + }); + + var $popup = $compile(popUpEl)(scope); + + if (appendToBody) { + $document.find('body').append($popup); + } else if (appendToElementId !== false) { + angular.element($document[0].getElementById(appendToElementId)).append($popup); + } else { + element.after($popup); + } + + this.init = function(_modelCtrl, _ngModelOptions) { + modelCtrl = _modelCtrl; + ngModelOptions = _ngModelOptions; + + //plug into $parsers pipeline to open a typeahead on view changes initiated from DOM + //$parsers kick-in on all the changes coming from the view as well as manually triggered by $setViewValue + modelCtrl.$parsers.unshift(function(inputValue) { + hasFocus = true; + + if (minLength === 0 || inputValue && inputValue.length >= minLength) { + if (waitTime > 0) { + cancelPreviousTimeout(); + scheduleSearchWithTimeout(inputValue); + } else { + getMatchesAsync(inputValue); + } + } else { + isLoadingSetter(originalScope, false); + cancelPreviousTimeout(); + resetMatches(); + } + + if (isEditable) { + return inputValue; + } else { + if (!inputValue) { + // Reset in case user had typed something previously. + modelCtrl.$setValidity('editable', true); + return null; + } else { + modelCtrl.$setValidity('editable', false); + return undefined; + } + } + }); + + modelCtrl.$formatters.push(function(modelValue) { + var candidateViewValue, emptyViewValue; + var locals = {}; + + // The validity may be set to false via $parsers (see above) if + // the model is restricted to selected values. If the model + // is set manually it is considered to be valid. + if (!isEditable) { + modelCtrl.$setValidity('editable', true); + } + + if (inputFormatter) { + locals.$model = modelValue; + return inputFormatter(originalScope, locals); + } else { + //it might happen that we don't have enough info to properly render input value + //we need to check for this situation and simply return model value if we can't apply custom formatting + locals[parserResult.itemName] = modelValue; + candidateViewValue = parserResult.viewMapper(originalScope, locals); + locals[parserResult.itemName] = undefined; + emptyViewValue = parserResult.viewMapper(originalScope, locals); + + return candidateViewValue !== emptyViewValue ? candidateViewValue : modelValue; + } + }); + }; + }]) + + .directive('uibTypeahead', function() { + return { + controller: 'UibTypeaheadController', + require: ['ngModel', '^?ngModelOptions', 'uibTypeahead'], + link: function(originalScope, element, attrs, ctrls) { + ctrls[2].init(ctrls[0], ctrls[1]); + } + }; + }) + + .directive('uibTypeaheadPopup', function() { + return { + scope: { + matches: '=', + query: '=', + active: '=', + position: '&', + moveInProgress: '=', + select: '&' + }, + replace: true, + templateUrl: function(element, attrs) { + return attrs.popupTemplateUrl || 'template/typeahead/typeahead-popup.html'; + }, + link: function(scope, element, attrs) { + scope.templateUrl = attrs.templateUrl; + + scope.isOpen = function() { + return scope.matches.length > 0; + }; + + scope.isActive = function(matchIdx) { + return scope.active == matchIdx; + }; + + scope.selectActive = function(matchIdx) { + scope.active = matchIdx; + }; + + scope.selectMatch = function(activeIdx) { + scope.select({activeIdx:activeIdx}); + }; + } + }; + }) + + .directive('uibTypeaheadMatch', ['$templateRequest', '$compile', '$parse', function($templateRequest, $compile, $parse) { + return { + scope: { + index: '=', + match: '=', + query: '=' + }, + link:function(scope, element, attrs) { + var tplUrl = $parse(attrs.templateUrl)(scope.$parent) || 'template/typeahead/typeahead-match.html'; + $templateRequest(tplUrl).then(function(tplContent) { + $compile(tplContent.trim())(scope, function(clonedElement) { + element.replaceWith(clonedElement); + }); + }); + } + }; + }]) + + .filter('uibTypeaheadHighlight', ['$sce', '$injector', '$log', function($sce, $injector, $log) { + var isSanitizePresent; + isSanitizePresent = $injector.has('$sanitize'); + + function escapeRegexp(queryToEscape) { + // Regex: capture the whole query string and replace it with the string that will be used to match + // the results, for example if the capture is "a" the result will be \a + return queryToEscape.replace(/([.?*+^$[\]\\(){}|-])/g, '\\$1'); + } + + function containsHtml(matchItem) { + return /<.*>/g.test(matchItem); + } + + return function(matchItem, query) { + if (!isSanitizePresent && containsHtml(matchItem)) { + $log.warn('Unsafe use of typeahead please use ngSanitize'); // Warn the user about the danger + } + matchItem = query? ('' + matchItem).replace(new RegExp(escapeRegexp(query), 'gi'), '$&') : matchItem; // Replaces the capture string with a the same string inside of a "strong" tag + if (!isSanitizePresent) { + matchItem = $sce.trustAsHtml(matchItem); // If $sanitize is not present we pack the string in a $sce object for the ng-bind-html directive + } + return matchItem; + }; + }]); + +/* Deprecated typeahead below */ + +angular.module('ui.bootstrap.typeahead') + .value('$typeaheadSuppressWarning', false) + .service('typeaheadParser', ['$parse', 'uibTypeaheadParser', '$log', '$typeaheadSuppressWarning', function($parse, uibTypeaheadParser, $log, $typeaheadSuppressWarning) { + if (!$typeaheadSuppressWarning) { + $log.warn('typeaheadParser is now deprecated. Use uibTypeaheadParser instead.'); + } + + return uibTypeaheadParser; + }]) + + .directive('typeahead', ['$compile', '$parse', '$q', '$timeout', '$document', '$window', '$rootScope', '$uibPosition', 'typeaheadParser', '$log', '$typeaheadSuppressWarning', + function($compile, $parse, $q, $timeout, $document, $window, $rootScope, $position, typeaheadParser, $log, $typeaheadSuppressWarning) { + var HOT_KEYS = [9, 13, 27, 38, 40]; + var eventDebounceTime = 200; + return { + require: ['ngModel', '^?ngModelOptions'], + link: function(originalScope, element, attrs, ctrls) { + if (!$typeaheadSuppressWarning) { + $log.warn('typeahead is now deprecated. Use uib-typeahead instead.'); + } + var modelCtrl = ctrls[0]; + var ngModelOptions = ctrls[1]; + //SUPPORTED ATTRIBUTES (OPTIONS) + + //minimal no of characters that needs to be entered before typeahead kicks-in + var minLength = originalScope.$eval(attrs.typeaheadMinLength); + if (!minLength && minLength !== 0) { + minLength = 1; + } + + //minimal wait time after last character typed before typeahead kicks-in + var waitTime = originalScope.$eval(attrs.typeaheadWaitMs) || 0; + + //should it restrict model values to the ones selected from the popup only? + var isEditable = originalScope.$eval(attrs.typeaheadEditable) !== false; + + //binding to a variable that indicates if matches are being retrieved asynchronously + var isLoadingSetter = $parse(attrs.typeaheadLoading).assign || angular.noop; + + //a callback executed when a match is selected + var onSelectCallback = $parse(attrs.typeaheadOnSelect); + + //should it select highlighted popup value when losing focus? + var isSelectOnBlur = angular.isDefined(attrs.typeaheadSelectOnBlur) ? originalScope.$eval(attrs.typeaheadSelectOnBlur) : false; + + //binding to a variable that indicates if there were no results after the query is completed + var isNoResultsSetter = $parse(attrs.typeaheadNoResults).assign || angular.noop; + + var inputFormatter = attrs.typeaheadInputFormatter ? $parse(attrs.typeaheadInputFormatter) : undefined; + + var appendToBody = attrs.typeaheadAppendToBody ? originalScope.$eval(attrs.typeaheadAppendToBody) : false; + + var appendToElementId = attrs.typeaheadAppendToElementId || false; + + var focusFirst = originalScope.$eval(attrs.typeaheadFocusFirst) !== false; + + //If input matches an item of the list exactly, select it automatically + var selectOnExact = attrs.typeaheadSelectOnExact ? originalScope.$eval(attrs.typeaheadSelectOnExact) : false; + + //INTERNAL VARIABLES + + //model setter executed upon match selection + var parsedModel = $parse(attrs.ngModel); + var invokeModelSetter = $parse(attrs.ngModel + '($$$p)'); + var $setModelValue = function(scope, newValue) { + if (angular.isFunction(parsedModel(originalScope)) && + ngModelOptions && ngModelOptions.$options && ngModelOptions.$options.getterSetter) { + return invokeModelSetter(scope, {$$$p: newValue}); + } else { + return parsedModel.assign(scope, newValue); + } + }; + + //expressions used by typeahead + var parserResult = typeaheadParser.parse(attrs.typeahead); + + var hasFocus; + + //Used to avoid bug in iOS webview where iOS keyboard does not fire + //mousedown & mouseup events + //Issue #3699 + var selected; + + //create a child scope for the typeahead directive so we are not polluting original scope + //with typeahead-specific data (matches, query etc.) + var scope = originalScope.$new(); + var offDestroy = originalScope.$on('$destroy', function() { + scope.$destroy(); + }); + scope.$on('$destroy', offDestroy); + + // WAI-ARIA + var popupId = 'typeahead-' + scope.$id + '-' + Math.floor(Math.random() * 10000); + element.attr({ + 'aria-autocomplete': 'list', + 'aria-expanded': false, + 'aria-owns': popupId + }); + + //pop-up element used to display matches + var popUpEl = angular.element('
      '); + popUpEl.attr({ + id: popupId, + matches: 'matches', + active: 'activeIdx', + select: 'select(activeIdx)', + 'move-in-progress': 'moveInProgress', + query: 'query', + position: 'position' + }); + //custom item template + if (angular.isDefined(attrs.typeaheadTemplateUrl)) { + popUpEl.attr('template-url', attrs.typeaheadTemplateUrl); + } + + if (angular.isDefined(attrs.typeaheadPopupTemplateUrl)) { + popUpEl.attr('popup-template-url', attrs.typeaheadPopupTemplateUrl); + } + + var resetMatches = function() { + scope.matches = []; + scope.activeIdx = -1; + element.attr('aria-expanded', false); + }; + + var getMatchId = function(index) { + return popupId + '-option-' + index; + }; + + // Indicate that the specified match is the active (pre-selected) item in the list owned by this typeahead. + // This attribute is added or removed automatically when the `activeIdx` changes. + scope.$watch('activeIdx', function(index) { + if (index < 0) { + element.removeAttr('aria-activedescendant'); + } else { + element.attr('aria-activedescendant', getMatchId(index)); + } + }); + + var inputIsExactMatch = function(inputValue, index) { + if (scope.matches.length > index && inputValue) { + return inputValue.toUpperCase() === scope.matches[index].label.toUpperCase(); + } + + return false; + }; + + var getMatchesAsync = function(inputValue) { + var locals = {$viewValue: inputValue}; + isLoadingSetter(originalScope, true); + isNoResultsSetter(originalScope, false); + $q.when(parserResult.source(originalScope, locals)).then(function(matches) { + //it might happen that several async queries were in progress if a user were typing fast + //but we are interested only in responses that correspond to the current view value + var onCurrentRequest = (inputValue === modelCtrl.$viewValue); + if (onCurrentRequest && hasFocus) { + if (matches && matches.length > 0) { + scope.activeIdx = focusFirst ? 0 : -1; + isNoResultsSetter(originalScope, false); + scope.matches.length = 0; + + //transform labels + for (var i = 0; i < matches.length; i++) { + locals[parserResult.itemName] = matches[i]; + scope.matches.push({ + id: getMatchId(i), + label: parserResult.viewMapper(scope, locals), + model: matches[i] + }); + } + + scope.query = inputValue; + //position pop-up with matches - we need to re-calculate its position each time we are opening a window + //with matches as a pop-up might be absolute-positioned and position of an input might have changed on a page + //due to other elements being rendered + recalculatePosition(); + + element.attr('aria-expanded', true); + + //Select the single remaining option if user input matches + if (selectOnExact && scope.matches.length === 1 && inputIsExactMatch(inputValue, 0)) { + scope.select(0); + } + } else { + resetMatches(); + isNoResultsSetter(originalScope, true); + } + } + if (onCurrentRequest) { + isLoadingSetter(originalScope, false); + } + }, function() { + resetMatches(); + isLoadingSetter(originalScope, false); + isNoResultsSetter(originalScope, true); + }); + }; + + // bind events only if appendToBody params exist - performance feature + if (appendToBody) { + angular.element($window).bind('resize', fireRecalculating); + $document.find('body').bind('scroll', fireRecalculating); + } + + // Declare the timeout promise var outside the function scope so that stacked calls can be cancelled later + var timeoutEventPromise; + + // Default progress type + scope.moveInProgress = false; + + function fireRecalculating() { + if (!scope.moveInProgress) { + scope.moveInProgress = true; + scope.$digest(); + } + + // Cancel previous timeout + if (timeoutEventPromise) { + $timeout.cancel(timeoutEventPromise); + } + + // Debounced executing recalculate after events fired + timeoutEventPromise = $timeout(function() { + // if popup is visible + if (scope.matches.length) { + recalculatePosition(); + } + + scope.moveInProgress = false; + }, eventDebounceTime); + } + + // recalculate actual position and set new values to scope + // after digest loop is popup in right position + function recalculatePosition() { + scope.position = appendToBody ? $position.offset(element) : $position.position(element); + scope.position.top += element.prop('offsetHeight'); + } + + resetMatches(); + + //we need to propagate user's query so we can higlight matches + scope.query = undefined; + + //Declare the timeout promise var outside the function scope so that stacked calls can be cancelled later + var timeoutPromise; + + var scheduleSearchWithTimeout = function(inputValue) { + timeoutPromise = $timeout(function() { + getMatchesAsync(inputValue); + }, waitTime); + }; + + var cancelPreviousTimeout = function() { + if (timeoutPromise) { + $timeout.cancel(timeoutPromise); + } + }; + + //plug into $parsers pipeline to open a typeahead on view changes initiated from DOM + //$parsers kick-in on all the changes coming from the view as well as manually triggered by $setViewValue + modelCtrl.$parsers.unshift(function(inputValue) { + hasFocus = true; + + if (minLength === 0 || inputValue && inputValue.length >= minLength) { + if (waitTime > 0) { + cancelPreviousTimeout(); + scheduleSearchWithTimeout(inputValue); + } else { + getMatchesAsync(inputValue); + } + } else { + isLoadingSetter(originalScope, false); + cancelPreviousTimeout(); + resetMatches(); + } + + if (isEditable) { + return inputValue; + } else { + if (!inputValue) { + // Reset in case user had typed something previously. + modelCtrl.$setValidity('editable', true); + return null; + } else { + modelCtrl.$setValidity('editable', false); + return undefined; + } + } + }); + + modelCtrl.$formatters.push(function(modelValue) { + var candidateViewValue, emptyViewValue; + var locals = {}; + + // The validity may be set to false via $parsers (see above) if + // the model is restricted to selected values. If the model + // is set manually it is considered to be valid. + if (!isEditable) { + modelCtrl.$setValidity('editable', true); + } + + if (inputFormatter) { + locals.$model = modelValue; + return inputFormatter(originalScope, locals); + } else { + //it might happen that we don't have enough info to properly render input value + //we need to check for this situation and simply return model value if we can't apply custom formatting + locals[parserResult.itemName] = modelValue; + candidateViewValue = parserResult.viewMapper(originalScope, locals); + locals[parserResult.itemName] = undefined; + emptyViewValue = parserResult.viewMapper(originalScope, locals); + + return candidateViewValue !== emptyViewValue ? candidateViewValue : modelValue; + } + }); + + scope.select = function(activeIdx) { + //called from within the $digest() cycle + var locals = {}; + var model, item; + + selected = true; + locals[parserResult.itemName] = item = scope.matches[activeIdx].model; + model = parserResult.modelMapper(originalScope, locals); + $setModelValue(originalScope, model); + modelCtrl.$setValidity('editable', true); + modelCtrl.$setValidity('parse', true); + + onSelectCallback(originalScope, { + $item: item, + $model: model, + $label: parserResult.viewMapper(originalScope, locals) + }); + + resetMatches(); + + //return focus to the input element if a match was selected via a mouse click event + // use timeout to avoid $rootScope:inprog error + if (scope.$eval(attrs.typeaheadFocusOnSelect) !== false) { + $timeout(function() { element[0].focus(); }, 0, false); + } + }; + + //bind keyboard events: arrows up(38) / down(40), enter(13) and tab(9), esc(27) + element.bind('keydown', function(evt) { + //typeahead is open and an "interesting" key was pressed + if (scope.matches.length === 0 || HOT_KEYS.indexOf(evt.which) === -1) { + return; + } + + // if there's nothing selected (i.e. focusFirst) and enter or tab is hit, clear the results + if (scope.activeIdx === -1 && (evt.which === 9 || evt.which === 13)) { + resetMatches(); + scope.$digest(); + return; + } + + evt.preventDefault(); + + if (evt.which === 40) { + scope.activeIdx = (scope.activeIdx + 1) % scope.matches.length; + scope.$digest(); + } else if (evt.which === 38) { + scope.activeIdx = (scope.activeIdx > 0 ? scope.activeIdx : scope.matches.length) - 1; + scope.$digest(); + } else if (evt.which === 13 || evt.which === 9) { + scope.$apply(function () { + scope.select(scope.activeIdx); + }); + } else if (evt.which === 27) { + evt.stopPropagation(); + + resetMatches(); + scope.$digest(); + } + }); + + element.bind('blur', function() { + if (isSelectOnBlur && scope.matches.length && scope.activeIdx !== -1 && !selected) { + selected = true; + scope.$apply(function() { + scope.select(scope.activeIdx); + }); + } + hasFocus = false; + selected = false; + }); + + // Keep reference to click handler to unbind it. + var dismissClickHandler = function(evt) { + // Issue #3973 + // Firefox treats right click as a click on document + if (element[0] !== evt.target && evt.which !== 3 && scope.matches.length !== 0) { + resetMatches(); + if (!$rootScope.$$phase) { + scope.$digest(); + } + } + }; + + $document.bind('click', dismissClickHandler); + + originalScope.$on('$destroy', function() { + $document.unbind('click', dismissClickHandler); + if (appendToBody || appendToElementId) { + $popup.remove(); + } + + if (appendToBody) { + angular.element($window).unbind('resize', fireRecalculating); + $document.find('body').unbind('scroll', fireRecalculating); + } + // Prevent jQuery cache memory leak + popUpEl.remove(); + }); + + var $popup = $compile(popUpEl)(scope); + + if (appendToBody) { + $document.find('body').append($popup); + } else if (appendToElementId !== false) { + angular.element($document[0].getElementById(appendToElementId)).append($popup); + } else { + element.after($popup); + } + } + }; + }]) + + .directive('typeaheadPopup', ['$typeaheadSuppressWarning', '$log', function($typeaheadSuppressWarning, $log) { + return { + scope: { + matches: '=', + query: '=', + active: '=', + position: '&', + moveInProgress: '=', + select: '&' + }, + replace: true, + templateUrl: function(element, attrs) { + return attrs.popupTemplateUrl || 'template/typeahead/typeahead-popup.html'; + }, + link: function(scope, element, attrs) { + + if (!$typeaheadSuppressWarning) { + $log.warn('typeahead-popup is now deprecated. Use uib-typeahead-popup instead.'); + } + scope.templateUrl = attrs.templateUrl; + + scope.isOpen = function() { + return scope.matches.length > 0; + }; + + scope.isActive = function(matchIdx) { + return scope.active == matchIdx; + }; + + scope.selectActive = function(matchIdx) { + scope.active = matchIdx; + }; + + scope.selectMatch = function(activeIdx) { + scope.select({activeIdx:activeIdx}); + }; + } + }; + }]) + + .directive('typeaheadMatch', ['$templateRequest', '$compile', '$parse', '$typeaheadSuppressWarning', '$log', function($templateRequest, $compile, $parse, $typeaheadSuppressWarning, $log) { + return { + restrict: 'EA', + scope: { + index: '=', + match: '=', + query: '=' + }, + link:function(scope, element, attrs) { + if (!$typeaheadSuppressWarning) { + $log.warn('typeahead-match is now deprecated. Use uib-typeahead-match instead.'); + } + + var tplUrl = $parse(attrs.templateUrl)(scope.$parent) || 'template/typeahead/typeahead-match.html'; + $templateRequest(tplUrl).then(function(tplContent) { + $compile(tplContent.trim())(scope, function(clonedElement) { + element.replaceWith(clonedElement); + }); + }); + } + }; + }]) + + .filter('typeaheadHighlight', ['$sce', '$injector', '$log', '$typeaheadSuppressWarning', function($sce, $injector, $log, $typeaheadSuppressWarning) { + var isSanitizePresent; + isSanitizePresent = $injector.has('$sanitize'); + + function escapeRegexp(queryToEscape) { + // Regex: capture the whole query string and replace it with the string that will be used to match + // the results, for example if the capture is "a" the result will be \a + return queryToEscape.replace(/([.?*+^$[\]\\(){}|-])/g, '\\$1'); + } + + function containsHtml(matchItem) { + return /<.*>/g.test(matchItem); + } + + return function(matchItem, query) { + if (!$typeaheadSuppressWarning) { + $log.warn('typeaheadHighlight is now deprecated. Use uibTypeaheadHighlight instead.'); + } + + if (!isSanitizePresent && containsHtml(matchItem)) { + $log.warn('Unsafe use of typeahead please use ngSanitize'); // Warn the user about the danger + } + + matchItem = query? ('' + matchItem).replace(new RegExp(escapeRegexp(query), 'gi'), '$&') : matchItem; // Replaces the capture string with a the same string inside of a "strong" tag + if (!isSanitizePresent) { + matchItem = $sce.trustAsHtml(matchItem); // If $sanitize is not present we pack the string in a $sce object for the ng-bind-html directive + } + + return matchItem; + }; + }]); +!angular.$$csp() && angular.element(document).find('head').prepend(''); \ No newline at end of file diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/ui-bootstrap.min.js b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/ui-bootstrap.min.js new file mode 100644 index 00000000..cbabc328 --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-bootstrap/ui-bootstrap.min.js @@ -0,0 +1,11 @@ +/* + * angular-ui-bootstrap + * http://angular-ui.github.io/bootstrap/ + + * Version: 0.14.3 - 2015-10-23 + * License: MIT + */ +angular.module("ui.bootstrap",["ui.bootstrap.collapse","ui.bootstrap.accordion","ui.bootstrap.alert","ui.bootstrap.buttons","ui.bootstrap.carousel","ui.bootstrap.dateparser","ui.bootstrap.position","ui.bootstrap.datepicker","ui.bootstrap.dropdown","ui.bootstrap.stackedMap","ui.bootstrap.modal","ui.bootstrap.pagination","ui.bootstrap.tooltip","ui.bootstrap.popover","ui.bootstrap.progressbar","ui.bootstrap.rating","ui.bootstrap.tabs","ui.bootstrap.timepicker","ui.bootstrap.typeahead"]),angular.module("ui.bootstrap.collapse",[]).directive("uibCollapse",["$animate","$injector",function(a,b){var c=b.has("$animateCss")?b.get("$animateCss"):null;return{link:function(b,d,e){function f(){d.removeClass("collapse").addClass("collapsing").attr("aria-expanded",!0).attr("aria-hidden",!1),c?c(d,{addClass:"in",easing:"ease",to:{height:d[0].scrollHeight+"px"}}).start()["finally"](g):a.addClass(d,"in",{to:{height:d[0].scrollHeight+"px"}}).then(g)}function g(){d.removeClass("collapsing").addClass("collapse").css({height:"auto"})}function h(){return d.hasClass("collapse")||d.hasClass("in")?(d.css({height:d[0].scrollHeight+"px"}).removeClass("collapse").addClass("collapsing").attr("aria-expanded",!1).attr("aria-hidden",!0),void(c?c(d,{removeClass:"in",to:{height:"0"}}).start()["finally"](i):a.removeClass(d,"in",{to:{height:"0"}}).then(i))):i()}function i(){d.css({height:"0"}),d.removeClass("collapsing").addClass("collapse")}b.$watch(e.uibCollapse,function(a){a?h():f()})}}}]),angular.module("ui.bootstrap.collapse").value("$collapseSuppressWarning",!1).directive("collapse",["$animate","$injector","$log","$collapseSuppressWarning",function(a,b,c,d){var e=b.has("$animateCss")?b.get("$animateCss"):null;return{link:function(b,f,g){function h(){f.removeClass("collapse").addClass("collapsing").attr("aria-expanded",!0).attr("aria-hidden",!1),e?e(f,{easing:"ease",to:{height:f[0].scrollHeight+"px"}}).start().done(i):a.animate(f,{},{height:f[0].scrollHeight+"px"}).then(i)}function i(){f.removeClass("collapsing").addClass("collapse in").css({height:"auto"})}function j(){return f.hasClass("collapse")||f.hasClass("in")?(f.css({height:f[0].scrollHeight+"px"}).removeClass("collapse in").addClass("collapsing").attr("aria-expanded",!1).attr("aria-hidden",!0),void(e?e(f,{to:{height:"0"}}).start().done(k):a.animate(f,{},{height:"0"}).then(k))):k()}function k(){f.css({height:"0"}),f.removeClass("collapsing").addClass("collapse")}d||c.warn("collapse is now deprecated. Use uib-collapse instead."),b.$watch(g.collapse,function(a){a?j():h()})}}}]),angular.module("ui.bootstrap.accordion",["ui.bootstrap.collapse"]).constant("uibAccordionConfig",{closeOthers:!0}).controller("UibAccordionController",["$scope","$attrs","uibAccordionConfig",function(a,b,c){this.groups=[],this.closeOthers=function(d){var e=angular.isDefined(b.closeOthers)?a.$eval(b.closeOthers):c.closeOthers;e&&angular.forEach(this.groups,function(a){a!==d&&(a.isOpen=!1)})},this.addGroup=function(a){var b=this;this.groups.push(a),a.$on("$destroy",function(c){b.removeGroup(a)})},this.removeGroup=function(a){var b=this.groups.indexOf(a);-1!==b&&this.groups.splice(b,1)}}]).directive("uibAccordion",function(){return{controller:"UibAccordionController",controllerAs:"accordion",transclude:!0,templateUrl:function(a,b){return b.templateUrl||"template/accordion/accordion.html"}}}).directive("uibAccordionGroup",function(){return{require:"^uibAccordion",transclude:!0,replace:!0,templateUrl:function(a,b){return b.templateUrl||"template/accordion/accordion-group.html"},scope:{heading:"@",isOpen:"=?",isDisabled:"=?"},controller:function(){this.setHeading=function(a){this.heading=a}},link:function(a,b,c,d){d.addGroup(a),a.openClass=c.openClass||"panel-open",a.panelClass=c.panelClass,a.$watch("isOpen",function(c){b.toggleClass(a.openClass,!!c),c&&d.closeOthers(a)}),a.toggleOpen=function(b){a.isDisabled||b&&32!==b.which||(a.isOpen=!a.isOpen)}}}}).directive("uibAccordionHeading",function(){return{transclude:!0,template:"",replace:!0,require:"^uibAccordionGroup",link:function(a,b,c,d,e){d.setHeading(e(a,angular.noop))}}}).directive("uibAccordionTransclude",function(){return{require:["?^uibAccordionGroup","?^accordionGroup"],link:function(a,b,c,d){d=d[0]?d[0]:d[1],a.$watch(function(){return d[c.uibAccordionTransclude]},function(a){a&&(b.find("span").html(""),b.find("span").append(a))})}}}),angular.module("ui.bootstrap.accordion").value("$accordionSuppressWarning",!1).controller("AccordionController",["$scope","$attrs","$controller","$log","$accordionSuppressWarning",function(a,b,c,d,e){e||d.warn("AccordionController is now deprecated. Use UibAccordionController instead."),angular.extend(this,c("UibAccordionController",{$scope:a,$attrs:b}))}]).directive("accordion",["$log","$accordionSuppressWarning",function(a,b){return{restrict:"EA",controller:"AccordionController",controllerAs:"accordion",transclude:!0,replace:!1,templateUrl:function(a,b){return b.templateUrl||"template/accordion/accordion.html"},link:function(){b||a.warn("accordion is now deprecated. Use uib-accordion instead.")}}}]).directive("accordionGroup",["$log","$accordionSuppressWarning",function(a,b){return{require:"^accordion",restrict:"EA",transclude:!0,replace:!0,templateUrl:function(a,b){return b.templateUrl||"template/accordion/accordion-group.html"},scope:{heading:"@",isOpen:"=?",isDisabled:"=?"},controller:function(){this.setHeading=function(a){this.heading=a}},link:function(c,d,e,f){b||a.warn("accordion-group is now deprecated. Use uib-accordion-group instead."),f.addGroup(c),c.openClass=e.openClass||"panel-open",c.panelClass=e.panelClass,c.$watch("isOpen",function(a){d.toggleClass(c.openClass,!!a),a&&f.closeOthers(c)}),c.toggleOpen=function(a){c.isDisabled||a&&32!==a.which||(c.isOpen=!c.isOpen)}}}}]).directive("accordionHeading",["$log","$accordionSuppressWarning",function(a,b){return{restrict:"EA",transclude:!0,template:"",replace:!0,require:"^accordionGroup",link:function(c,d,e,f,g){b||a.warn("accordion-heading is now deprecated. Use uib-accordion-heading instead."),f.setHeading(g(c,angular.noop))}}}]).directive("accordionTransclude",["$log","$accordionSuppressWarning",function(a,b){return{require:"^accordionGroup",link:function(c,d,e,f){b||a.warn("accordion-transclude is now deprecated. Use uib-accordion-transclude instead."),c.$watch(function(){return f[e.accordionTransclude]},function(a){a&&(d.find("span").html(""),d.find("span").append(a))})}}}]),angular.module("ui.bootstrap.alert",[]).controller("UibAlertController",["$scope","$attrs","$interpolate","$timeout",function(a,b,c,d){a.closeable=!!b.close;var e=angular.isDefined(b.dismissOnTimeout)?c(b.dismissOnTimeout)(a.$parent):null;e&&d(function(){a.close()},parseInt(e,10))}]).directive("uibAlert",function(){return{controller:"UibAlertController",controllerAs:"alert",templateUrl:function(a,b){return b.templateUrl||"template/alert/alert.html"},transclude:!0,replace:!0,scope:{type:"@",close:"&"}}}),angular.module("ui.bootstrap.alert").value("$alertSuppressWarning",!1).controller("AlertController",["$scope","$attrs","$controller","$log","$alertSuppressWarning",function(a,b,c,d,e){e||d.warn("AlertController is now deprecated. Use UibAlertController instead."),angular.extend(this,c("UibAlertController",{$scope:a,$attrs:b}))}]).directive("alert",["$log","$alertSuppressWarning",function(a,b){return{controller:"AlertController",controllerAs:"alert",templateUrl:function(a,b){return b.templateUrl||"template/alert/alert.html"},transclude:!0,replace:!0,scope:{type:"@",close:"&"},link:function(){b||a.warn("alert is now deprecated. Use uib-alert instead.")}}}]),angular.module("ui.bootstrap.buttons",[]).constant("uibButtonConfig",{activeClass:"active",toggleEvent:"click"}).controller("UibButtonsController",["uibButtonConfig",function(a){this.activeClass=a.activeClass||"active",this.toggleEvent=a.toggleEvent||"click"}]).directive("uibBtnRadio",function(){return{require:["uibBtnRadio","ngModel"],controller:"UibButtonsController",controllerAs:"buttons",link:function(a,b,c,d){var e=d[0],f=d[1];b.find("input").css({display:"none"}),f.$render=function(){b.toggleClass(e.activeClass,angular.equals(f.$modelValue,a.$eval(c.uibBtnRadio)))},b.on(e.toggleEvent,function(){if(!c.disabled){var d=b.hasClass(e.activeClass);(!d||angular.isDefined(c.uncheckable))&&a.$apply(function(){f.$setViewValue(d?null:a.$eval(c.uibBtnRadio)),f.$render()})}})}}}).directive("uibBtnCheckbox",function(){return{require:["uibBtnCheckbox","ngModel"],controller:"UibButtonsController",controllerAs:"button",link:function(a,b,c,d){function e(){return g(c.btnCheckboxTrue,!0)}function f(){return g(c.btnCheckboxFalse,!1)}function g(b,c){return angular.isDefined(b)?a.$eval(b):c}var h=d[0],i=d[1];b.find("input").css({display:"none"}),i.$render=function(){b.toggleClass(h.activeClass,angular.equals(i.$modelValue,e()))},b.on(h.toggleEvent,function(){c.disabled||a.$apply(function(){i.$setViewValue(b.hasClass(h.activeClass)?f():e()),i.$render()})})}}}),angular.module("ui.bootstrap.buttons").value("$buttonsSuppressWarning",!1).controller("ButtonsController",["$controller","$log","$buttonsSuppressWarning",function(a,b,c){c||b.warn("ButtonsController is now deprecated. Use UibButtonsController instead."),angular.extend(this,a("UibButtonsController"))}]).directive("btnRadio",["$log","$buttonsSuppressWarning",function(a,b){return{require:["btnRadio","ngModel"],controller:"ButtonsController",controllerAs:"buttons",link:function(c,d,e,f){b||a.warn("btn-radio is now deprecated. Use uib-btn-radio instead.");var g=f[0],h=f[1];d.find("input").css({display:"none"}),h.$render=function(){d.toggleClass(g.activeClass,angular.equals(h.$modelValue,c.$eval(e.btnRadio)))},d.bind(g.toggleEvent,function(){if(!e.disabled){var a=d.hasClass(g.activeClass);(!a||angular.isDefined(e.uncheckable))&&c.$apply(function(){h.$setViewValue(a?null:c.$eval(e.btnRadio)),h.$render()})}})}}}]).directive("btnCheckbox",["$document","$log","$buttonsSuppressWarning",function(a,b,c){return{require:["btnCheckbox","ngModel"],controller:"ButtonsController",controllerAs:"button",link:function(d,e,f,g){function h(){return j(f.btnCheckboxTrue,!0)}function i(){return j(f.btnCheckboxFalse,!1)}function j(a,b){var c=d.$eval(a);return angular.isDefined(c)?c:b}c||b.warn("btn-checkbox is now deprecated. Use uib-btn-checkbox instead.");var k=g[0],l=g[1];e.find("input").css({display:"none"}),l.$render=function(){e.toggleClass(k.activeClass,angular.equals(l.$modelValue,h()))},e.bind(k.toggleEvent,function(){f.disabled||d.$apply(function(){l.$setViewValue(e.hasClass(k.activeClass)?i():h()),l.$render()})}),e.on("keypress",function(b){f.disabled||32!==b.which||a[0].activeElement!==e[0]||d.$apply(function(){l.$setViewValue(e.hasClass(k.activeClass)?i():h()),l.$render()})})}}}]),angular.module("ui.bootstrap.carousel",[]).controller("UibCarouselController",["$scope","$element","$interval","$animate",function(a,b,c,d){function e(b,c,e){s||(angular.extend(b,{direction:e,active:!0}),angular.extend(m.currentSlide||{},{direction:e,active:!1}),d.enabled()&&!a.noTransition&&!a.$currentTransition&&b.$element&&m.slides.length>1&&(b.$element.data(q,b.direction),m.currentSlide&&m.currentSlide.$element&&m.currentSlide.$element.data(q,b.direction),a.$currentTransition=!0,o?d.on("addClass",b.$element,function(b,c){"close"===c&&(a.$currentTransition=null,d.off("addClass",b))}):b.$element.one("$animate:close",function(){a.$currentTransition=null})),m.currentSlide=b,r=c,g())}function f(a){if(angular.isUndefined(n[a].index))return n[a];var b;n.length;for(b=0;b0&&(k=c(i,b))}function h(){k&&(c.cancel(k),k=null)}function i(){var b=+a.interval;l&&!isNaN(b)&&b>0&&n.length?a.next():a.pause()}function j(b){b.length||(a.$currentTransition=null)}var k,l,m=this,n=m.slides=a.slides=[],o=angular.version.minor>=4,p="uib-noTransition",q="uib-slideDirection",r=-1;m.currentSlide=null;var s=!1;m.select=a.select=function(b,c){var d=a.indexOfSlide(b);void 0===c&&(c=d>m.getCurrentIndex()?"next":"prev"),b&&b!==m.currentSlide&&!a.$currentTransition&&e(b,d,c)},a.$on("$destroy",function(){s=!0}),m.getCurrentIndex=function(){return m.currentSlide&&angular.isDefined(m.currentSlide.index)?+m.currentSlide.index:r},a.indexOfSlide=function(a){return angular.isDefined(a.index)?+a.index:n.indexOf(a)},a.next=function(){var b=(m.getCurrentIndex()+1)%n.length;return 0===b&&a.noWrap()?void a.pause():m.select(f(b),"next")},a.prev=function(){var b=m.getCurrentIndex()-1<0?n.length-1:m.getCurrentIndex()-1;return a.noWrap()&&b===n.length-1?void a.pause():m.select(f(b),"prev")},a.isActive=function(a){return m.currentSlide===a},a.$watch("interval",g),a.$watchCollection("slides",j),a.$on("$destroy",h),a.play=function(){l||(l=!0,g())},a.pause=function(){a.noPause||(l=!1,h())},m.addSlide=function(b,c){b.$element=c,n.push(b),1===n.length||b.active?(m.select(n[n.length-1]),1===n.length&&a.play()):b.active=!1},m.removeSlide=function(a){angular.isDefined(a.index)&&n.sort(function(a,b){return+a.index>+b.index});var b=n.indexOf(a);n.splice(b,1),n.length>0&&a.active?b>=n.length?m.select(n[b-1]):m.select(n[b]):r>b&&r--,0===n.length&&(m.currentSlide=null)},a.$watch("noTransition",function(a){b.data(p,a)})}]).directive("uibCarousel",[function(){return{transclude:!0,replace:!0,controller:"UibCarouselController",controllerAs:"carousel",require:"carousel",templateUrl:function(a,b){return b.templateUrl||"template/carousel/carousel.html"},scope:{interval:"=",noTransition:"=",noPause:"=",noWrap:"&"}}}]).directive("uibSlide",function(){return{require:"^uibCarousel",restrict:"EA",transclude:!0,replace:!0,templateUrl:function(a,b){return b.templateUrl||"template/carousel/slide.html"},scope:{active:"=?",actual:"=?",index:"=?"},link:function(a,b,c,d){d.addSlide(a,b),a.$on("$destroy",function(){d.removeSlide(a)}),a.$watch("active",function(b){b&&d.select(a)})}}}).animation(".item",["$injector","$animate",function(a,b){function c(a,b,c){a.removeClass(b),c&&c()}var d="uib-noTransition",e="uib-slideDirection",f=null;return a.has("$animateCss")&&(f=a.get("$animateCss")),{beforeAddClass:function(a,g,h){if("active"==g&&a.parent()&&a.parent().parent()&&!a.parent().parent().data(d)){var i=!1,j=a.data(e),k="next"==j?"left":"right",l=c.bind(this,a,k+" "+j,h);return a.addClass(j),f?f(a,{addClass:k}).start().done(l):b.addClass(a,k).then(function(){i||l(),h()}),function(){i=!0}}h()},beforeRemoveClass:function(a,g,h){if("active"===g&&a.parent()&&a.parent().parent()&&!a.parent().parent().data(d)){var i=!1,j=a.data(e),k="next"==j?"left":"right",l=c.bind(this,a,k,h);return f?f(a,{addClass:k}).start().done(l):b.addClass(a,k).then(function(){i||l(),h()}),function(){i=!0}}h()}}}]),angular.module("ui.bootstrap.carousel").value("$carouselSuppressWarning",!1).controller("CarouselController",["$scope","$element","$controller","$log","$carouselSuppressWarning",function(a,b,c,d,e){e||d.warn("CarouselController is now deprecated. Use UibCarouselController instead."),angular.extend(this,c("UibCarouselController",{$scope:a,$element:b}))}]).directive("carousel",["$log","$carouselSuppressWarning",function(a,b){return{transclude:!0,replace:!0,controller:"CarouselController",controllerAs:"carousel",require:"carousel",templateUrl:function(a,b){return b.templateUrl||"template/carousel/carousel.html"},scope:{interval:"=",noTransition:"=",noPause:"=",noWrap:"&"},link:function(){b||a.warn("carousel is now deprecated. Use uib-carousel instead.")}}}]).directive("slide",["$log","$carouselSuppressWarning",function(a,b){return{require:"^carousel",transclude:!0,replace:!0,templateUrl:function(a,b){return b.templateUrl||"template/carousel/slide.html"},scope:{active:"=?",actual:"=?",index:"=?"},link:function(c,d,e,f){b||a.warn("slide is now deprecated. Use uib-slide instead."),f.addSlide(c,d),c.$on("$destroy",function(){f.removeSlide(c)}),c.$watch("active",function(a){a&&f.select(c)})}}}]),angular.module("ui.bootstrap.dateparser",[]).service("uibDateParser",["$log","$locale","orderByFilter",function(a,b,c){function d(a){var b=[],d=a.split("");return angular.forEach(g,function(c,e){var f=a.indexOf(e);if(f>-1){a=a.split(""),d[f]="("+c.regex+")",a[f]="$";for(var g=f+1,h=f+e.length;h>g;g++)d[g]="",a[g]="$";a=a.join(""),b.push({index:f,apply:c.apply})}}),{regex:new RegExp("^"+d.join("")+"$"),map:c(b,"index")}}function e(a,b,c){return 1>c?!1:1===b&&c>28?29===c&&(a%4===0&&a%100!==0||a%400===0):3===b||5===b||8===b||10===b?31>c:!0}var f,g,h=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g;this.init=function(){f=b.id,this.parsers={},g={yyyy:{regex:"\\d{4}",apply:function(a){this.year=+a}},yy:{regex:"\\d{2}",apply:function(a){this.year=+a+2e3}},y:{regex:"\\d{1,4}",apply:function(a){this.year=+a}},MMMM:{regex:b.DATETIME_FORMATS.MONTH.join("|"),apply:function(a){this.month=b.DATETIME_FORMATS.MONTH.indexOf(a)}},MMM:{regex:b.DATETIME_FORMATS.SHORTMONTH.join("|"),apply:function(a){this.month=b.DATETIME_FORMATS.SHORTMONTH.indexOf(a)}},MM:{regex:"0[1-9]|1[0-2]",apply:function(a){this.month=a-1}},M:{regex:"[1-9]|1[0-2]",apply:function(a){this.month=a-1}},dd:{regex:"[0-2][0-9]{1}|3[0-1]{1}",apply:function(a){this.date=+a}},d:{regex:"[1-2]?[0-9]{1}|3[0-1]{1}",apply:function(a){this.date=+a}},EEEE:{regex:b.DATETIME_FORMATS.DAY.join("|")},EEE:{regex:b.DATETIME_FORMATS.SHORTDAY.join("|")},HH:{regex:"(?:0|1)[0-9]|2[0-3]",apply:function(a){this.hours=+a}},hh:{regex:"0[0-9]|1[0-2]",apply:function(a){this.hours=+a}},H:{regex:"1?[0-9]|2[0-3]",apply:function(a){this.hours=+a}},h:{regex:"[0-9]|1[0-2]",apply:function(a){this.hours=+a}},mm:{regex:"[0-5][0-9]",apply:function(a){this.minutes=+a}},m:{regex:"[0-9]|[1-5][0-9]",apply:function(a){this.minutes=+a}},sss:{regex:"[0-9][0-9][0-9]",apply:function(a){this.milliseconds=+a}},ss:{regex:"[0-5][0-9]",apply:function(a){this.seconds=+a}},s:{regex:"[0-9]|[1-5][0-9]",apply:function(a){this.seconds=+a}},a:{regex:b.DATETIME_FORMATS.AMPMS.join("|"),apply:function(a){12===this.hours&&(this.hours=0),"PM"===a&&(this.hours+=12)}}}},this.init(),this.parse=function(c,g,i){if(!angular.isString(c)||!g)return c;g=b.DATETIME_FORMATS[g]||g,g=g.replace(h,"\\$&"),b.id!==f&&this.init(),this.parsers[g]||(this.parsers[g]=d(g));var j=this.parsers[g],k=j.regex,l=j.map,m=c.match(k);if(m&&m.length){var n,o;angular.isDate(i)&&!isNaN(i.getTime())?n={year:i.getFullYear(),month:i.getMonth(),date:i.getDate(),hours:i.getHours(),minutes:i.getMinutes(),seconds:i.getSeconds(),milliseconds:i.getMilliseconds()}:(i&&a.warn("dateparser:","baseDate is not a valid date"),n={year:1900,month:0,date:1,hours:0,minutes:0,seconds:0,milliseconds:0});for(var p=1,q=m.length;q>p;p++){var r=l[p-1];r.apply&&r.apply.call(n,m[p])}return e(n.year,n.month,n.date)&&(angular.isDate(i)&&!isNaN(i.getTime())?(o=new Date(i),o.setFullYear(n.year,n.month,n.date,n.hours,n.minutes,n.seconds,n.milliseconds||0)):o=new Date(n.year,n.month,n.date,n.hours,n.minutes,n.seconds,n.milliseconds||0)),o}}}]),angular.module("ui.bootstrap.dateparser").value("$dateParserSuppressWarning",!1).service("dateParser",["$log","$dateParserSuppressWarning","uibDateParser",function(a,b,c){b||a.warn("dateParser is now deprecated. Use uibDateParser instead."),angular.extend(this,c)}]),angular.module("ui.bootstrap.position",[]).factory("$uibPosition",["$document","$window",function(a,b){function c(a,c){return a.currentStyle?a.currentStyle[c]:b.getComputedStyle?b.getComputedStyle(a)[c]:a.style[c]}function d(a){return"static"===(c(a,"position")||"static")}var e=function(b){for(var c=a[0],e=b.offsetParent||c;e&&e!==c&&d(e);)e=e.offsetParent;return e||c};return{position:function(b){var c=this.offset(b),d={top:0,left:0},f=e(b[0]);f!=a[0]&&(d=this.offset(angular.element(f)),d.top+=f.clientTop-f.scrollTop,d.left+=f.clientLeft-f.scrollLeft);var g=b[0].getBoundingClientRect();return{width:g.width||b.prop("offsetWidth"),height:g.height||b.prop("offsetHeight"),top:c.top-d.top,left:c.left-d.left}},offset:function(c){var d=c[0].getBoundingClientRect();return{width:d.width||c.prop("offsetWidth"),height:d.height||c.prop("offsetHeight"),top:d.top+(b.pageYOffset||a[0].documentElement.scrollTop),left:d.left+(b.pageXOffset||a[0].documentElement.scrollLeft)}},positionElements:function(a,b,c,d){var e,f,g,h,i=c.split("-"),j=i[0],k=i[1]||"center";e=d?this.offset(a):this.position(a),f=b.prop("offsetWidth"),g=b.prop("offsetHeight");var l={center:function(){return e.left+e.width/2-f/2},left:function(){return e.left},right:function(){return e.left+e.width}},m={center:function(){return e.top+e.height/2-g/2},top:function(){return e.top},bottom:function(){return e.top+e.height}};switch(j){case"right":h={top:m[k](),left:l[j]()};break;case"left":h={top:m[k](),left:e.left-f};break;case"bottom":h={top:m[j](),left:l[k]()};break;default:h={top:e.top-g,left:l[k]()}}return h}}}]),angular.module("ui.bootstrap.position").value("$positionSuppressWarning",!1).service("$position",["$log","$positionSuppressWarning","$uibPosition",function(a,b,c){b||a.warn("$position is now deprecated. Use $uibPosition instead."),angular.extend(this,c)}]),angular.module("ui.bootstrap.datepicker",["ui.bootstrap.dateparser","ui.bootstrap.position"]).value("$datepickerSuppressError",!1).constant("uibDatepickerConfig",{formatDay:"dd",formatMonth:"MMMM",formatYear:"yyyy",formatDayHeader:"EEE",formatDayTitle:"MMMM yyyy",formatMonthTitle:"yyyy",datepickerMode:"day",minMode:"day",maxMode:"year",showWeeks:!0,startingDay:0,yearRange:20,minDate:null,maxDate:null,shortcutPropagation:!1}).controller("UibDatepickerController",["$scope","$attrs","$parse","$interpolate","$log","dateFilter","uibDatepickerConfig","$datepickerSuppressError",function(a,b,c,d,e,f,g,h){var i=this,j={$setViewValue:angular.noop};this.modes=["day","month","year"],angular.forEach(["formatDay","formatMonth","formatYear","formatDayHeader","formatDayTitle","formatMonthTitle","showWeeks","startingDay","yearRange","shortcutPropagation"],function(c,e){i[c]=angular.isDefined(b[c])?6>e?d(b[c])(a.$parent):a.$parent.$eval(b[c]):g[c]}),angular.forEach(["minDate","maxDate"],function(d){b[d]?a.$parent.$watch(c(b[d]),function(a){i[d]=a?new Date(a):null,i.refreshView()}):i[d]=g[d]?new Date(g[d]):null}),angular.forEach(["minMode","maxMode"],function(d){b[d]?a.$parent.$watch(c(b[d]),function(c){i[d]=angular.isDefined(c)?c:b[d],a[d]=i[d],("minMode"==d&&i.modes.indexOf(a.datepickerMode)i.modes.indexOf(i[d]))&&(a.datepickerMode=i[d])}):(i[d]=g[d]||null,a[d]=i[d])}),a.datepickerMode=a.datepickerMode||g.datepickerMode,a.uniqueId="datepicker-"+a.$id+"-"+Math.floor(1e4*Math.random()),angular.isDefined(b.initDate)?(this.activeDate=a.$parent.$eval(b.initDate)||new Date,a.$parent.$watch(b.initDate,function(a){a&&(j.$isEmpty(j.$modelValue)||j.$invalid)&&(i.activeDate=a,i.refreshView())})):this.activeDate=new Date,a.isActive=function(b){return 0===i.compare(b.date,i.activeDate)?(a.activeDateId=b.uid,!0):!1},this.init=function(a){j=a,j.$render=function(){i.render()}},this.render=function(){if(j.$viewValue){var a=new Date(j.$viewValue),b=!isNaN(a);b?this.activeDate=a:h||e.error('Datepicker directive: "ng-model" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.')}this.refreshView()},this.refreshView=function(){if(this.element){this._refreshView();var a=j.$viewValue?new Date(j.$viewValue):null;j.$setValidity("dateDisabled",!a||this.element&&!this.isDisabled(a))}},this.createDateObject=function(a,b){var c=j.$viewValue?new Date(j.$viewValue):null;return{date:a,label:f(a,b),selected:c&&0===this.compare(a,c),disabled:this.isDisabled(a),current:0===this.compare(a,new Date),customClass:this.customClass(a)}},this.isDisabled=function(c){return this.minDate&&this.compare(c,this.minDate)<0||this.maxDate&&this.compare(c,this.maxDate)>0||b.dateDisabled&&a.dateDisabled({date:c,mode:a.datepickerMode})},this.customClass=function(b){return a.customClass({date:b,mode:a.datepickerMode})},this.split=function(a,b){for(var c=[];a.length>0;)c.push(a.splice(0,b));return c},a.select=function(b){if(a.datepickerMode===i.minMode){var c=j.$viewValue?new Date(j.$viewValue):new Date(0,0,0,0,0,0,0);c.setFullYear(b.getFullYear(),b.getMonth(),b.getDate()),j.$setViewValue(c),j.$render()}else i.activeDate=b,a.datepickerMode=i.modes[i.modes.indexOf(a.datepickerMode)-1]},a.move=function(a){var b=i.activeDate.getFullYear()+a*(i.step.years||0),c=i.activeDate.getMonth()+a*(i.step.months||0);i.activeDate.setFullYear(b,c,1),i.refreshView()},a.toggleMode=function(b){b=b||1,a.datepickerMode===i.maxMode&&1===b||a.datepickerMode===i.minMode&&-1===b||(a.datepickerMode=i.modes[i.modes.indexOf(a.datepickerMode)+b])},a.keys={13:"enter",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down"};var k=function(){i.element[0].focus()};a.$on("uib:datepicker.focus",k),a.keydown=function(b){var c=a.keys[b.which];if(c&&!b.shiftKey&&!b.altKey)if(b.preventDefault(),i.shortcutPropagation||b.stopPropagation(),"enter"===c||"space"===c){if(i.isDisabled(i.activeDate))return;a.select(i.activeDate)}else!b.ctrlKey||"up"!==c&&"down"!==c?(i.handleKeyDown(c,b),i.refreshView()):a.toggleMode("up"===c?1:-1)}}]).controller("UibDaypickerController",["$scope","$element","dateFilter",function(a,b,c){function d(a,b){return 1!==b||a%4!==0||a%100===0&&a%400!==0?f[b]:29}function e(a){var b=new Date(a);b.setDate(b.getDate()+4-(b.getDay()||7));var c=b.getTime();return b.setMonth(0),b.setDate(1),Math.floor(Math.round((c-b)/864e5)/7)+1}var f=[31,28,31,30,31,30,31,31,30,31,30,31];this.step={months:1},this.element=b,this.init=function(b){angular.extend(b,this),a.showWeeks=b.showWeeks,b.refreshView()},this.getDates=function(a,b){for(var c,d=new Array(b),e=new Date(a),f=0;b>f;)c=new Date(e),d[f++]=c,e.setDate(e.getDate()+1);return d},this._refreshView=function(){var b=this.activeDate.getFullYear(),d=this.activeDate.getMonth(),f=new Date(this.activeDate);f.setFullYear(b,d,1);var g=this.startingDay-f.getDay(),h=g>0?7-g:-g,i=new Date(f);h>0&&i.setDate(-h+1);for(var j=this.getDates(i,42),k=0;42>k;k++)j[k]=angular.extend(this.createDateObject(j[k],this.formatDay),{secondary:j[k].getMonth()!==d,uid:a.uniqueId+"-"+k});a.labels=new Array(7);for(var l=0;7>l;l++)a.labels[l]={abbr:c(j[l].date,this.formatDayHeader),full:c(j[l].date,"EEEE")};if(a.title=c(this.activeDate,this.formatDayTitle),a.rows=this.split(j,7),a.showWeeks){a.weekNumbers=[];for(var m=(11-this.startingDay)%7,n=a.rows.length,o=0;n>o;o++)a.weekNumbers.push(e(a.rows[o][m].date))}},this.compare=function(a,b){return new Date(a.getFullYear(),a.getMonth(),a.getDate())-new Date(b.getFullYear(),b.getMonth(),b.getDate())},this.handleKeyDown=function(a,b){var c=this.activeDate.getDate();if("left"===a)c-=1;else if("up"===a)c-=7;else if("right"===a)c+=1;else if("down"===a)c+=7;else if("pageup"===a||"pagedown"===a){var e=this.activeDate.getMonth()+("pageup"===a?-1:1);this.activeDate.setMonth(e,1),c=Math.min(d(this.activeDate.getFullYear(),this.activeDate.getMonth()),c)}else"home"===a?c=1:"end"===a&&(c=d(this.activeDate.getFullYear(),this.activeDate.getMonth()));this.activeDate.setDate(c)}}]).controller("UibMonthpickerController",["$scope","$element","dateFilter",function(a,b,c){this.step={years:1},this.element=b,this.init=function(a){angular.extend(a,this),a.refreshView()},this._refreshView=function(){for(var b,d=new Array(12),e=this.activeDate.getFullYear(),f=0;12>f;f++)b=new Date(this.activeDate),b.setFullYear(e,f,1),d[f]=angular.extend(this.createDateObject(b,this.formatMonth),{uid:a.uniqueId+"-"+f});a.title=c(this.activeDate,this.formatMonthTitle),a.rows=this.split(d,3)},this.compare=function(a,b){return new Date(a.getFullYear(),a.getMonth())-new Date(b.getFullYear(),b.getMonth())},this.handleKeyDown=function(a,b){var c=this.activeDate.getMonth();if("left"===a)c-=1;else if("up"===a)c-=3;else if("right"===a)c+=1;else if("down"===a)c+=3;else if("pageup"===a||"pagedown"===a){var d=this.activeDate.getFullYear()+("pageup"===a?-1:1);this.activeDate.setFullYear(d)}else"home"===a?c=0:"end"===a&&(c=11);this.activeDate.setMonth(c)}}]).controller("UibYearpickerController",["$scope","$element","dateFilter",function(a,b,c){function d(a){return parseInt((a-1)/e,10)*e+1}var e;this.element=b,this.yearpickerInit=function(){e=this.yearRange,this.step={years:e}},this._refreshView=function(){for(var b,c=new Array(e),f=0,g=d(this.activeDate.getFullYear());e>f;f++)b=new Date(this.activeDate),b.setFullYear(g+f,0,1),c[f]=angular.extend(this.createDateObject(b,this.formatYear),{uid:a.uniqueId+"-"+f});a.title=[c[0].label,c[e-1].label].join(" - "),a.rows=this.split(c,5)},this.compare=function(a,b){return a.getFullYear()-b.getFullYear()},this.handleKeyDown=function(a,b){var c=this.activeDate.getFullYear();"left"===a?c-=1:"up"===a?c-=5:"right"===a?c+=1:"down"===a?c+=5:"pageup"===a||"pagedown"===a?c+=("pageup"===a?-1:1)*this.step.years:"home"===a?c=d(this.activeDate.getFullYear()):"end"===a&&(c=d(this.activeDate.getFullYear())+e-1),this.activeDate.setFullYear(c)}}]).directive("uibDatepicker",function(){return{replace:!0,templateUrl:function(a,b){return b.templateUrl||"template/datepicker/datepicker.html"},scope:{datepickerMode:"=?",dateDisabled:"&",customClass:"&",shortcutPropagation:"&?"},require:["uibDatepicker","^ngModel"],controller:"UibDatepickerController",controllerAs:"datepicker",link:function(a,b,c,d){var e=d[0],f=d[1];e.init(f)}}}).directive("uibDaypicker",function(){return{replace:!0,templateUrl:function(a,b){return b.templateUrl||"template/datepicker/day.html"},require:["^?uibDatepicker","uibDaypicker","^?datepicker"],controller:"UibDaypickerController",link:function(a,b,c,d){var e=d[0]||d[2],f=d[1];f.init(e)}}}).directive("uibMonthpicker",function(){return{replace:!0,templateUrl:function(a,b){return b.templateUrl||"template/datepicker/month.html"},require:["^?uibDatepicker","uibMonthpicker","^?datepicker"],controller:"UibMonthpickerController",link:function(a,b,c,d){var e=d[0]||d[2],f=d[1];f.init(e)}}}).directive("uibYearpicker",function(){return{replace:!0,templateUrl:function(a,b){return b.templateUrl||"template/datepicker/year.html"},require:["^?uibDatepicker","uibYearpicker","^?datepicker"],controller:"UibYearpickerController",link:function(a,b,c,d){var e=d[0]||d[2];angular.extend(e,d[1]),e.yearpickerInit(),e.refreshView()}}}).constant("uibDatepickerPopupConfig",{datepickerPopup:"yyyy-MM-dd",datepickerPopupTemplateUrl:"template/datepicker/popup.html",datepickerTemplateUrl:"template/datepicker/datepicker.html",html5Types:{date:"yyyy-MM-dd","datetime-local":"yyyy-MM-ddTHH:mm:ss.sss",month:"yyyy-MM"},currentText:"Today",clearText:"Clear",closeText:"Done",closeOnDateSelection:!0,appendToBody:!1,showButtonBar:!0,onOpenFocus:!0}).controller("UibDatepickerPopupController",["$scope","$element","$attrs","$compile","$parse","$document","$rootScope","$uibPosition","dateFilter","uibDateParser","uibDatepickerPopupConfig","$timeout",function(a,b,c,d,e,f,g,h,i,j,k,l){function m(a){return a.replace(/([A-Z])/g,function(a){return"-"+a.toLowerCase()})}function n(b){if(angular.isNumber(b)&&(b=new Date(b)),b){if(angular.isDate(b)&&!isNaN(b))return b;if(angular.isString(b)){var c=j.parse(b,r,a.date);return isNaN(c)?void 0:c}return void 0}return null}function o(a,b){var d=a||b;if(!c.ngRequired&&!d)return!0;if(angular.isNumber(d)&&(d=new Date(d)),d){if(angular.isDate(d)&&!isNaN(d))return!0;if(angular.isString(d)){var e=j.parse(d,r);return!isNaN(e)}return!1}return!0}function p(c){var d=A[0],e=b[0].contains(c.target),f=void 0!==d.contains&&d.contains(c.target);!a.isOpen||e||f||a.$apply(function(){a.isOpen=!1})}function q(c){27===c.which&&a.isOpen?(c.preventDefault(),c.stopPropagation(),a.$apply(function(){a.isOpen=!1}),b[0].focus()):40!==c.which||a.isOpen||(c.preventDefault(),c.stopPropagation(),a.$apply(function(){a.isOpen=!0}))}var r,s,t,u,v,w,x,y,z,A,B={},C=!1;a.watchData={},this.init=function(h){if(z=h,s=angular.isDefined(c.closeOnDateSelection)?a.$parent.$eval(c.closeOnDateSelection):k.closeOnDateSelection, +t=angular.isDefined(c.datepickerAppendToBody)?a.$parent.$eval(c.datepickerAppendToBody):k.appendToBody,u=angular.isDefined(c.onOpenFocus)?a.$parent.$eval(c.onOpenFocus):k.onOpenFocus,v=angular.isDefined(c.datepickerPopupTemplateUrl)?c.datepickerPopupTemplateUrl:k.datepickerPopupTemplateUrl,w=angular.isDefined(c.datepickerTemplateUrl)?c.datepickerTemplateUrl:k.datepickerTemplateUrl,a.showButtonBar=angular.isDefined(c.showButtonBar)?a.$parent.$eval(c.showButtonBar):k.showButtonBar,k.html5Types[c.type]?(r=k.html5Types[c.type],C=!0):(r=c.datepickerPopup||c.uibDatepickerPopup||k.datepickerPopup,c.$observe("uibDatepickerPopup",function(a,b){var c=a||k.datepickerPopup;if(c!==r&&(r=c,z.$modelValue=null,!r))throw new Error("uibDatepickerPopup must have a date format specified.")})),!r)throw new Error("uibDatepickerPopup must have a date format specified.");if(C&&c.datepickerPopup)throw new Error("HTML5 date input types do not support custom formats.");if(x=angular.element("
      "),x.attr({"ng-model":"date","ng-change":"dateSelection(date)","template-url":v}),y=angular.element(x.children()[0]),y.attr("template-url",w),C&&"month"===c.type&&(y.attr("datepicker-mode",'"month"'),y.attr("min-mode","month")),c.datepickerOptions){var l=a.$parent.$eval(c.datepickerOptions);l&&l.initDate&&(a.initDate=l.initDate,y.attr("init-date","initDate"),delete l.initDate),angular.forEach(l,function(a,b){y.attr(m(b),a)})}angular.forEach(["minMode","maxMode","minDate","maxDate","datepickerMode","initDate","shortcutPropagation"],function(b){if(c[b]){var d=e(c[b]);if(a.$parent.$watch(d,function(c){a.watchData[b]=c,("minDate"===b||"maxDate"===b)&&(B[b]=new Date(c))}),y.attr(m(b),"watchData."+b),"datepickerMode"===b){var f=d.assign;a.$watch("watchData."+b,function(b,c){angular.isFunction(f)&&b!==c&&f(a.$parent,b)})}}}),c.dateDisabled&&y.attr("date-disabled","dateDisabled({ date: date, mode: mode })"),c.showWeeks&&y.attr("show-weeks",c.showWeeks),c.customClass&&y.attr("custom-class","customClass({ date: date, mode: mode })"),C?z.$formatters.push(function(b){return a.date=b,b}):(z.$$parserName="date",z.$validators.date=o,z.$parsers.unshift(n),z.$formatters.push(function(b){return a.date=b,z.$isEmpty(b)?b:i(b,r)})),z.$viewChangeListeners.push(function(){a.date=j.parse(z.$viewValue,r,a.date)}),b.bind("keydown",q),A=d(x)(a),x.remove(),t?f.find("body").append(A):b.after(A),a.$on("$destroy",function(){a.isOpen===!0&&(g.$$phase||a.$apply(function(){a.isOpen=!1})),A.remove(),b.unbind("keydown",q),f.unbind("click",p)})},a.getText=function(b){return a[b+"Text"]||k[b+"Text"]},a.isDisabled=function(b){return"today"===b&&(b=new Date),a.watchData.minDate&&a.compare(b,B.minDate)<0||a.watchData.maxDate&&a.compare(b,B.maxDate)>0},a.compare=function(a,b){return new Date(a.getFullYear(),a.getMonth(),a.getDate())-new Date(b.getFullYear(),b.getMonth(),b.getDate())},a.dateSelection=function(c){angular.isDefined(c)&&(a.date=c);var d=a.date?i(a.date,r):null;b.val(d),z.$setViewValue(d),s&&(a.isOpen=!1,b[0].focus())},a.keydown=function(c){27===c.which&&(a.isOpen=!1,b[0].focus())},a.select=function(b){if("today"===b){var c=new Date;angular.isDate(a.date)?(b=new Date(a.date),b.setFullYear(c.getFullYear(),c.getMonth(),c.getDate())):b=new Date(c.setHours(0,0,0,0))}a.dateSelection(b)},a.close=function(){a.isOpen=!1,b[0].focus()},a.$watch("isOpen",function(c){c?(a.position=t?h.offset(b):h.position(b),a.position.top=a.position.top+b.prop("offsetHeight"),l(function(){u&&a.$broadcast("uib:datepicker.focus"),f.bind("click",p)},0,!1)):f.unbind("click",p)})}]).directive("uibDatepickerPopup",function(){return{require:["ngModel","uibDatepickerPopup"],controller:"UibDatepickerPopupController",scope:{isOpen:"=?",currentText:"@",clearText:"@",closeText:"@",dateDisabled:"&",customClass:"&"},link:function(a,b,c,d){var e=d[0],f=d[1];f.init(e)}}}).directive("uibDatepickerPopupWrap",function(){return{replace:!0,transclude:!0,templateUrl:function(a,b){return b.templateUrl||"template/datepicker/popup.html"}}}),angular.module("ui.bootstrap.datepicker").value("$datepickerSuppressWarning",!1).controller("DatepickerController",["$scope","$attrs","$parse","$interpolate","$log","dateFilter","uibDatepickerConfig","$datepickerSuppressError","$datepickerSuppressWarning",function(a,b,c,d,e,f,g,h,i){i||e.warn("DatepickerController is now deprecated. Use UibDatepickerController instead.");var j=this,k={$setViewValue:angular.noop};this.modes=["day","month","year"],angular.forEach(["formatDay","formatMonth","formatYear","formatDayHeader","formatDayTitle","formatMonthTitle","showWeeks","startingDay","yearRange","shortcutPropagation"],function(c,e){j[c]=angular.isDefined(b[c])?6>e?d(b[c])(a.$parent):a.$parent.$eval(b[c]):g[c]}),angular.forEach(["minDate","maxDate"],function(d){b[d]?a.$parent.$watch(c(b[d]),function(a){j[d]=a?new Date(a):null,j.refreshView()}):j[d]=g[d]?new Date(g[d]):null}),angular.forEach(["minMode","maxMode"],function(d){b[d]?a.$parent.$watch(c(b[d]),function(c){j[d]=angular.isDefined(c)?c:b[d],a[d]=j[d],("minMode"==d&&j.modes.indexOf(a.datepickerMode)j.modes.indexOf(j[d]))&&(a.datepickerMode=j[d])}):(j[d]=g[d]||null,a[d]=j[d])}),a.datepickerMode=a.datepickerMode||g.datepickerMode,a.uniqueId="datepicker-"+a.$id+"-"+Math.floor(1e4*Math.random()),angular.isDefined(b.initDate)?(this.activeDate=a.$parent.$eval(b.initDate)||new Date,a.$parent.$watch(b.initDate,function(a){a&&(k.$isEmpty(k.$modelValue)||k.$invalid)&&(j.activeDate=a,j.refreshView())})):this.activeDate=new Date,a.isActive=function(b){return 0===j.compare(b.date,j.activeDate)?(a.activeDateId=b.uid,!0):!1},this.init=function(a){k=a,k.$render=function(){j.render()}},this.render=function(){if(k.$viewValue){var a=new Date(k.$viewValue),b=!isNaN(a);b?this.activeDate=a:h||e.error('Datepicker directive: "ng-model" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.')}this.refreshView()},this.refreshView=function(){if(this.element){this._refreshView();var a=k.$viewValue?new Date(k.$viewValue):null;k.$setValidity("dateDisabled",!a||this.element&&!this.isDisabled(a))}},this.createDateObject=function(a,b){var c=k.$viewValue?new Date(k.$viewValue):null;return{date:a,label:f(a,b),selected:c&&0===this.compare(a,c),disabled:this.isDisabled(a),current:0===this.compare(a,new Date),customClass:this.customClass(a)}},this.isDisabled=function(c){return this.minDate&&this.compare(c,this.minDate)<0||this.maxDate&&this.compare(c,this.maxDate)>0||b.dateDisabled&&a.dateDisabled({date:c,mode:a.datepickerMode})},this.customClass=function(b){return a.customClass({date:b,mode:a.datepickerMode})},this.split=function(a,b){for(var c=[];a.length>0;)c.push(a.splice(0,b));return c},this.fixTimeZone=function(a){var b=a.getHours();a.setHours(23===b?b+2:0)},a.select=function(b){if(a.datepickerMode===j.minMode){var c=k.$viewValue?new Date(k.$viewValue):new Date(0,0,0,0,0,0,0);c.setFullYear(b.getFullYear(),b.getMonth(),b.getDate()),k.$setViewValue(c),k.$render()}else j.activeDate=b,a.datepickerMode=j.modes[j.modes.indexOf(a.datepickerMode)-1]},a.move=function(a){var b=j.activeDate.getFullYear()+a*(j.step.years||0),c=j.activeDate.getMonth()+a*(j.step.months||0);j.activeDate.setFullYear(b,c,1),j.refreshView()},a.toggleMode=function(b){b=b||1,a.datepickerMode===j.maxMode&&1===b||a.datepickerMode===j.minMode&&-1===b||(a.datepickerMode=j.modes[j.modes.indexOf(a.datepickerMode)+b])},a.keys={13:"enter",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down"};var l=function(){j.element[0].focus()};a.$on("uib:datepicker.focus",l),a.keydown=function(b){var c=a.keys[b.which];if(c&&!b.shiftKey&&!b.altKey)if(b.preventDefault(),j.shortcutPropagation||b.stopPropagation(),"enter"===c||"space"===c){if(j.isDisabled(j.activeDate))return;a.select(j.activeDate)}else!b.ctrlKey||"up"!==c&&"down"!==c?(j.handleKeyDown(c,b),j.refreshView()):a.toggleMode("up"===c?1:-1)}}]).directive("datepicker",["$log","$datepickerSuppressWarning",function(a,b){return{replace:!0,templateUrl:function(a,b){return b.templateUrl||"template/datepicker/datepicker.html"},scope:{datepickerMode:"=?",dateDisabled:"&",customClass:"&",shortcutPropagation:"&?"},require:["datepicker","^ngModel"],controller:"DatepickerController",controllerAs:"datepicker",link:function(c,d,e,f){b||a.warn("datepicker is now deprecated. Use uib-datepicker instead.");var g=f[0],h=f[1];g.init(h)}}}]).directive("daypicker",["$log","$datepickerSuppressWarning",function(a,b){return{replace:!0,templateUrl:"template/datepicker/day.html",require:["^datepicker","daypicker"],controller:"UibDaypickerController",link:function(c,d,e,f){b||a.warn("daypicker is now deprecated. Use uib-daypicker instead.");var g=f[0],h=f[1];h.init(g)}}}]).directive("monthpicker",["$log","$datepickerSuppressWarning",function(a,b){return{replace:!0,templateUrl:"template/datepicker/month.html",require:["^datepicker","monthpicker"],controller:"UibMonthpickerController",link:function(c,d,e,f){b||a.warn("monthpicker is now deprecated. Use uib-monthpicker instead.");var g=f[0],h=f[1];h.init(g)}}}]).directive("yearpicker",["$log","$datepickerSuppressWarning",function(a,b){return{replace:!0,templateUrl:"template/datepicker/year.html",require:["^datepicker","yearpicker"],controller:"UibYearpickerController",link:function(c,d,e,f){b||a.warn("yearpicker is now deprecated. Use uib-yearpicker instead.");var g=f[0];angular.extend(g,f[1]),g.yearpickerInit(),g.refreshView()}}}]).directive("datepickerPopup",["$log","$datepickerSuppressWarning",function(a,b){return{require:["ngModel","datepickerPopup"],controller:"UibDatepickerPopupController",scope:{isOpen:"=?",currentText:"@",clearText:"@",closeText:"@",dateDisabled:"&",customClass:"&"},link:function(c,d,e,f){b||a.warn("datepicker-popup is now deprecated. Use uib-datepicker-popup instead.");var g=f[0],h=f[1];h.init(g)}}}]).directive("datepickerPopupWrap",["$log","$datepickerSuppressWarning",function(a,b){return{replace:!0,transclude:!0,templateUrl:function(a,b){return b.templateUrl||"template/datepicker/popup.html"},link:function(){b||a.warn("datepicker-popup-wrap is now deprecated. Use uib-datepicker-popup-wrap instead.")}}}]),angular.module("ui.bootstrap.dropdown",["ui.bootstrap.position"]).constant("uibDropdownConfig",{openClass:"open"}).service("uibDropdownService",["$document","$rootScope",function(a,b){var c=null;this.open=function(b){c||(a.bind("click",d),a.bind("keydown",e)),c&&c!==b&&(c.isOpen=!1),c=b},this.close=function(b){c===b&&(c=null,a.unbind("click",d),a.unbind("keydown",e))};var d=function(a){if(c&&(!a||"disabled"!==c.getAutoClose())){var d=c.getToggleElement();if(!(a&&d&&d[0].contains(a.target))){var e=c.getDropdownElement();a&&"outsideClick"===c.getAutoClose()&&e&&e[0].contains(a.target)||(c.isOpen=!1,b.$$phase||c.$apply())}}},e=function(a){27===a.which?(c.focusToggleElement(),d()):c.isKeynavEnabled()&&/(38|40)/.test(a.which)&&c.isOpen&&(a.preventDefault(),a.stopPropagation(),c.focusDropdownEntry(a.which))}}]).controller("UibDropdownController",["$scope","$element","$attrs","$parse","uibDropdownConfig","uibDropdownService","$animate","$uibPosition","$document","$compile","$templateRequest",function(a,b,c,d,e,f,g,h,i,j,k){var l,m,n=this,o=a.$new(),p=e.openClass,q=angular.noop,r=c.onToggle?d(c.onToggle):angular.noop,s=!1,t=!1;b.addClass("dropdown"),this.init=function(){c.isOpen&&(m=d(c.isOpen),q=m.assign,a.$watch(m,function(a){o.isOpen=!!a})),s=angular.isDefined(c.dropdownAppendToBody),t=angular.isDefined(c.uibKeyboardNav),s&&n.dropdownMenu&&(i.find("body").append(n.dropdownMenu),b.on("$destroy",function(){n.dropdownMenu.remove()}))},this.toggle=function(a){return o.isOpen=arguments.length?!!a:!o.isOpen},this.isOpen=function(){return o.isOpen},o.getToggleElement=function(){return n.toggleElement},o.getAutoClose=function(){return c.autoClose||"always"},o.getElement=function(){return b},o.isKeynavEnabled=function(){return t},o.focusDropdownEntry=function(a){var c=n.dropdownMenu?angular.element(n.dropdownMenu).find("a"):angular.element(b).find("ul").eq(0).find("a");switch(a){case 40:angular.isNumber(n.selectedOption)?n.selectedOption=n.selectedOption===c.length-1?n.selectedOption:n.selectedOption+1:n.selectedOption=0;break;case 38:angular.isNumber(n.selectedOption)?n.selectedOption=0===n.selectedOption?0:n.selectedOption-1:n.selectedOption=c.length-1}c[n.selectedOption].focus()},o.getDropdownElement=function(){return n.dropdownMenu},o.focusToggleElement=function(){n.toggleElement&&n.toggleElement[0].focus()},o.$watch("isOpen",function(c,d){if(s&&n.dropdownMenu){var e=h.positionElements(b,n.dropdownMenu,"bottom-left",!0),i={top:e.top+"px",display:c?"block":"none"},m=n.dropdownMenu.hasClass("dropdown-menu-right");m?(i.left="auto",i.right=window.innerWidth-(e.left+b.prop("offsetWidth"))+"px"):(i.left=e.left+"px",i.right="auto"),n.dropdownMenu.css(i)}if(g[c?"addClass":"removeClass"](b,p).then(function(){angular.isDefined(c)&&c!==d&&r(a,{open:!!c})}),c)n.dropdownMenuTemplateUrl&&k(n.dropdownMenuTemplateUrl).then(function(a){l=o.$new(),j(a.trim())(l,function(a){var b=a;n.dropdownMenu.replaceWith(b),n.dropdownMenu=b})}),o.focusToggleElement(),f.open(o);else{if(n.dropdownMenuTemplateUrl){l&&l.$destroy();var t=angular.element('');n.dropdownMenu.replaceWith(t),n.dropdownMenu=t}f.close(o),n.selectedOption=null}angular.isFunction(q)&&q(a,c)}),a.$on("$locationChangeSuccess",function(){"disabled"!==o.getAutoClose()&&(o.isOpen=!1)});var u=a.$on("$destroy",function(){o.$destroy()});o.$on("$destroy",u)}]).directive("uibDropdown",function(){return{controller:"UibDropdownController",link:function(a,b,c,d){d.init()}}}).directive("uibDropdownMenu",function(){return{restrict:"AC",require:"?^uibDropdown",link:function(a,b,c,d){if(d&&!angular.isDefined(c.dropdownNested)){b.addClass("dropdown-menu");var e=c.templateUrl;e&&(d.dropdownMenuTemplateUrl=e),d.dropdownMenu||(d.dropdownMenu=b)}}}}).directive("uibKeyboardNav",function(){return{restrict:"A",require:"?^uibDropdown",link:function(a,b,c,d){b.bind("keydown",function(a){if(-1!==[38,40].indexOf(a.which)){a.preventDefault(),a.stopPropagation();var b=d.dropdownMenu.find("a");switch(a.which){case 40:angular.isNumber(d.selectedOption)?d.selectedOption=d.selectedOption===b.length-1?d.selectedOption:d.selectedOption+1:d.selectedOption=0;break;case 38:angular.isNumber(d.selectedOption)?d.selectedOption=0===d.selectedOption?0:d.selectedOption-1:d.selectedOption=b.length-1}b[d.selectedOption].focus()}})}}}).directive("uibDropdownToggle",function(){return{require:"?^uibDropdown",link:function(a,b,c,d){if(d){b.addClass("dropdown-toggle"),d.toggleElement=b;var e=function(e){e.preventDefault(),b.hasClass("disabled")||c.disabled||a.$apply(function(){d.toggle()})};b.bind("click",e),b.attr({"aria-haspopup":!0,"aria-expanded":!1}),a.$watch(d.isOpen,function(a){b.attr("aria-expanded",!!a)}),a.$on("$destroy",function(){b.unbind("click",e)})}}}}),angular.module("ui.bootstrap.dropdown").value("$dropdownSuppressWarning",!1).service("dropdownService",["$log","$dropdownSuppressWarning","uibDropdownService",function(a,b,c){b||a.warn("dropdownService is now deprecated. Use uibDropdownService instead."),angular.extend(this,c)}]).controller("DropdownController",["$scope","$element","$attrs","$parse","uibDropdownConfig","uibDropdownService","$animate","$uibPosition","$document","$compile","$templateRequest","$log","$dropdownSuppressWarning",function(a,b,c,d,e,f,g,h,i,j,k,l,m){m||l.warn("DropdownController is now deprecated. Use UibDropdownController instead.");var n,o,p=this,q=a.$new(),r=e.openClass,s=angular.noop,t=c.onToggle?d(c.onToggle):angular.noop,u=!1,v=!1;b.addClass("dropdown"),this.init=function(){c.isOpen&&(o=d(c.isOpen),s=o.assign,a.$watch(o,function(a){q.isOpen=!!a})),u=angular.isDefined(c.dropdownAppendToBody),v=angular.isDefined(c.uibKeyboardNav),u&&p.dropdownMenu&&(i.find("body").append(p.dropdownMenu),b.on("$destroy",function(){p.dropdownMenu.remove()}))},this.toggle=function(a){return q.isOpen=arguments.length?!!a:!q.isOpen},this.isOpen=function(){return q.isOpen},q.getToggleElement=function(){return p.toggleElement},q.getAutoClose=function(){return c.autoClose||"always"},q.getElement=function(){return b},q.isKeynavEnabled=function(){return v},q.focusDropdownEntry=function(a){var c=p.dropdownMenu?angular.element(p.dropdownMenu).find("a"):angular.element(b).find("ul").eq(0).find("a");switch(a){case 40:angular.isNumber(p.selectedOption)?p.selectedOption=p.selectedOption===c.length-1?p.selectedOption:p.selectedOption+1:p.selectedOption=0;break;case 38:angular.isNumber(p.selectedOption)?p.selectedOption=0===p.selectedOption?0:p.selectedOption-1:p.selectedOption=c.length-1}c[p.selectedOption].focus()},q.getDropdownElement=function(){return p.dropdownMenu},q.focusToggleElement=function(){p.toggleElement&&p.toggleElement[0].focus()},q.$watch("isOpen",function(c,d){if(u&&p.dropdownMenu){var e=h.positionElements(b,p.dropdownMenu,"bottom-left",!0),i={top:e.top+"px",display:c?"block":"none"},l=p.dropdownMenu.hasClass("dropdown-menu-right");l?(i.left="auto",i.right=window.innerWidth-(e.left+b.prop("offsetWidth"))+"px"):(i.left=e.left+"px",i.right="auto"),p.dropdownMenu.css(i)}if(g[c?"addClass":"removeClass"](b,r).then(function(){angular.isDefined(c)&&c!==d&&t(a,{open:!!c})}),c)p.dropdownMenuTemplateUrl&&k(p.dropdownMenuTemplateUrl).then(function(a){n=q.$new(),j(a.trim())(n,function(a){var b=a;p.dropdownMenu.replaceWith(b),p.dropdownMenu=b})}),q.focusToggleElement(),f.open(q);else{if(p.dropdownMenuTemplateUrl){n&&n.$destroy();var m=angular.element('');p.dropdownMenu.replaceWith(m),p.dropdownMenu=m}f.close(q),p.selectedOption=null}angular.isFunction(s)&&s(a,c)}),a.$on("$locationChangeSuccess",function(){"disabled"!==q.getAutoClose()&&(q.isOpen=!1)});var w=a.$on("$destroy",function(){q.$destroy()});q.$on("$destroy",w)}]).directive("dropdown",["$log","$dropdownSuppressWarning",function(a,b){return{controller:"DropdownController",link:function(c,d,e,f){b||a.warn("dropdown is now deprecated. Use uib-dropdown instead."),f.init()}}}]).directive("dropdownMenu",["$log","$dropdownSuppressWarning",function(a,b){return{restrict:"AC",require:"?^dropdown",link:function(c,d,e,f){if(f&&!angular.isDefined(e.dropdownNested)){b||a.warn("dropdown-menu is now deprecated. Use uib-dropdown-menu instead."),d.addClass("dropdown-menu");var g=e.templateUrl;g&&(f.dropdownMenuTemplateUrl=g),f.dropdownMenu||(f.dropdownMenu=d)}}}}]).directive("keyboardNav",["$log","$dropdownSuppressWarning",function(a,b){return{restrict:"A",require:"?^dropdown",link:function(c,d,e,f){b||a.warn("keyboard-nav is now deprecated. Use uib-keyboard-nav instead."),d.bind("keydown",function(a){if(-1!==[38,40].indexOf(a.which)){a.preventDefault(),a.stopPropagation();var b=f.dropdownMenu.find("a");switch(a.which){case 40:angular.isNumber(f.selectedOption)?f.selectedOption=f.selectedOption===b.length-1?f.selectedOption:f.selectedOption+1:f.selectedOption=0;break;case 38:angular.isNumber(f.selectedOption)?f.selectedOption=0===f.selectedOption?0:f.selectedOption-1:f.selectedOption=b.length-1}b[f.selectedOption].focus()}})}}}]).directive("dropdownToggle",["$log","$dropdownSuppressWarning",function(a,b){return{require:"?^dropdown",link:function(c,d,e,f){if(b||a.warn("dropdown-toggle is now deprecated. Use uib-dropdown-toggle instead."),f){d.addClass("dropdown-toggle"),f.toggleElement=d;var g=function(a){a.preventDefault(),d.hasClass("disabled")||e.disabled||c.$apply(function(){f.toggle()})};d.bind("click",g),d.attr({"aria-haspopup":!0,"aria-expanded":!1}),c.$watch(f.isOpen,function(a){d.attr("aria-expanded",!!a)}),c.$on("$destroy",function(){d.unbind("click",g)})}}}}]),angular.module("ui.bootstrap.stackedMap",[]).factory("$$stackedMap",function(){return{createNew:function(){var a=[];return{add:function(b,c){a.push({key:b,value:c})},get:function(b){for(var c=0;c0&&(b=u.top().value,b.modalDomEl.toggleClass(b.windowTopClass||"",a))}function m(){if(q&&-1==j()){var a=r;n(q,r,function(){a=null}),q=void 0,r=void 0}}function n(b,c,d){function e(){e.done||(e.done=!0,p?p(b,{event:"leave"}).start().then(function(){b.remove()}):a.leave(b),c.$destroy(),d&&d())}var g,h=null,i=function(){return g||(g=f.defer(),h=g.promise),function(){g.resolve()}};return c.$broadcast(w.NOW_CLOSING_EVENT,i),f.when(h).then(e)}function o(a,b,c){return!a.value.modalScope.$broadcast("modal.closing",b,c).defaultPrevented}var p=null;g.has("$animateCss")&&(p=g.get("$animateCss"));var q,r,s,t="modal-open",u=i.createNew(),v=h.createNew(),w={NOW_CLOSING_EVENT:"modal.stack.now-closing"},x=0,y="a[href], area[href], input:not([disabled]), button:not([disabled]),select:not([disabled]), textarea:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable=true]";return e.$watch(j,function(a){r&&(r.index=a)}),c.bind("keydown",function(a){if(a.isDefaultPrevented())return a;var b=u.top();if(b&&b.value.keyboard)switch(a.which){case 27:a.preventDefault(),e.$apply(function(){w.dismiss(b.key,"escape key press")});break;case 9:w.loadFocusElementList(b);var c=!1;a.shiftKey?w.isFocusInFirstItem(a)&&(c=w.focusLastFocusableElement()):w.isFocusInLastItem(a)&&(c=w.focusFirstFocusableElement()),c&&(a.preventDefault(),a.stopPropagation())}}),w.open=function(a,b){var f=c[0].activeElement,g=b.openedClass||t;l(!1),u.add(a,{deferred:b.deferred,renderDeferred:b.renderDeferred,modalScope:b.scope,backdrop:b.backdrop,keyboard:b.keyboard,openedClass:b.openedClass,windowTopClass:b.windowTopClass}),v.put(g,a);var h=c.find("body").eq(0),i=j();if(i>=0&&!q){r=e.$new(!0),r.index=i;var k=angular.element('
      ');k.attr("backdrop-class",b.backdropClass),b.animation&&k.attr("modal-animation","true"),q=d(k)(r),h.append(q)}var m=angular.element('
      ');m.attr({"template-url":b.windowTemplateUrl,"window-class":b.windowClass,"window-top-class":b.windowTopClass,size:b.size,index:u.length()-1,animate:"animate"}).html(b.content),b.animation&&m.attr("modal-animation","true");var n=d(m)(b.scope);u.top().value.modalDomEl=n,u.top().value.modalOpener=f,h.append(n),h.addClass(g),w.clearFocusListCache()},w.close=function(a,b){var c=u.get(a);return c&&o(c,b,!0)?(c.value.modalScope.$$uibDestructionScheduled=!0,c.value.deferred.resolve(b),k(a,c.value.modalOpener),!0):!c},w.dismiss=function(a,b){var c=u.get(a);return c&&o(c,b,!1)?(c.value.modalScope.$$uibDestructionScheduled=!0,c.value.deferred.reject(b),k(a,c.value.modalOpener),!0):!c},w.dismissAll=function(a){for(var b=this.getTop();b&&this.dismiss(b.key,a);)b=this.getTop()},w.getTop=function(){return u.top()},w.modalRendered=function(a){var b=u.get(a);b&&b.value.renderDeferred.resolve()},w.focusFirstFocusableElement=function(){return s.length>0?(s[0].focus(),!0):!1},w.focusLastFocusableElement=function(){return s.length>0?(s[s.length-1].focus(),!0):!1},w.isFocusInFirstItem=function(a){return s.length>0?(a.target||a.srcElement)==s[0]:!1},w.isFocusInLastItem=function(a){return s.length>0?(a.target||a.srcElement)==s[s.length-1]:!1},w.clearFocusListCache=function(){s=[],x=0},w.loadFocusElementList=function(a){if((void 0===s||!s.length)&&a){var b=a.value.modalDomEl;b&&b.length&&(s=b[0].querySelectorAll(y))}},w}]).provider("$uibModal",function(){var a={options:{animation:!0,backdrop:!0,keyboard:!0},$get:["$injector","$rootScope","$q","$templateRequest","$controller","$uibModalStack","$modalSuppressWarning","$log",function(b,c,d,e,f,g,h,i){function j(a){return a.template?d.when(a.template):e(angular.isFunction(a.templateUrl)?a.templateUrl():a.templateUrl)}function k(a){var c=[];return angular.forEach(a,function(a){angular.isFunction(a)||angular.isArray(a)?c.push(d.when(b.invoke(a))):angular.isString(a)?c.push(d.when(b.get(a))):c.push(d.when(a))}),c}var l={},m=null;return l.getPromiseChain=function(){return m},l.open=function(b){function e(){return r}var l=d.defer(),n=d.defer(),o=d.defer(),p={result:l.promise,opened:n.promise,rendered:o.promise,close:function(a){return g.close(p,a)},dismiss:function(a){return g.dismiss(p,a)}};if(b=angular.extend({},a.options,b),b.resolve=b.resolve||{},!b.template&&!b.templateUrl)throw new Error("One of template or templateUrl options is required.");var q,r=d.all([j(b)].concat(k(b.resolve)));return q=m=d.all([m]).then(e,e).then(function(a){var d=(b.scope||c).$new();d.$close=p.close,d.$dismiss=p.dismiss,d.$on("$destroy",function(){d.$$uibDestructionScheduled||d.$dismiss("$uibUnscheduledDestruction")});var e,j={},k=1;b.controller&&(j.$scope=d,j.$uibModalInstance=p,Object.defineProperty(j,"$modalInstance",{get:function(){return h||i.warn("$modalInstance is now deprecated. Use $uibModalInstance instead."),p}}),angular.forEach(b.resolve,function(b,c){j[c]=a[k++]}),e=f(b.controller,j),b.controllerAs&&(b.bindToController&&angular.extend(e,d),d[b.controllerAs]=e)),g.open(p,{scope:d,deferred:l,renderDeferred:o,content:a[0],animation:b.animation,backdrop:b.backdrop,keyboard:b.keyboard,backdropClass:b.backdropClass,windowTopClass:b.windowTopClass,windowClass:b.windowClass,windowTemplateUrl:b.windowTemplateUrl,size:b.size,openedClass:b.openedClass}),n.resolve(!0)},function(a){n.reject(a),l.reject(a)})["finally"](function(){m===q&&(m=null)}),p},l}]};return a}),angular.module("ui.bootstrap.modal").value("$modalSuppressWarning",!1).directive("modalBackdrop",["$animate","$injector","$modalStack","$log","$modalSuppressWarning",function(a,b,c,d,e){function f(b,f,h){e||d.warn("modal-backdrop is now deprecated. Use uib-modal-backdrop instead."),f.addClass("modal-backdrop"),h.modalInClass&&(g?g(f,{addClass:h.modalInClass}).start():a.addClass(f,h.modalInClass),b.$on(c.NOW_CLOSING_EVENT,function(b,c){var d=c();g?g(f,{removeClass:h.modalInClass}).start().then(d):a.removeClass(f,h.modalInClass).then(d)}))}var g=null;return b.has("$animateCss")&&(g=b.get("$animateCss")),{replace:!0,templateUrl:"template/modal/backdrop.html",compile:function(a,b){return a.addClass(b.backdropClass),f}}}]).directive("modalWindow",["$modalStack","$q","$animate","$injector","$log","$modalSuppressWarning",function(a,b,c,d,e,f){var g=null;return d.has("$animateCss")&&(g=d.get("$animateCss")),{scope:{index:"@"},replace:!0,transclude:!0,templateUrl:function(a,b){return b.templateUrl||"template/modal/window.html"},link:function(d,h,i){f||e.warn("modal-window is now deprecated. Use uib-modal-window instead."),h.addClass(i.windowClass||""),h.addClass(i.windowTopClass||""),d.size=i.size,d.close=function(b){var c=a.getTop();c&&c.value.backdrop&&"static"!==c.value.backdrop&&b.target===b.currentTarget&&(b.preventDefault(),b.stopPropagation(),a.dismiss(c.key,"backdrop click"))},h.on("click",d.close),d.$isRendered=!0;var j=b.defer();i.$observe("modalRender",function(a){"true"==a&&j.resolve()}),j.promise.then(function(){var e=null;i.modalInClass&&(e=g?g(h,{addClass:i.modalInClass}).start():c.addClass(h,i.modalInClass),d.$on(a.NOW_CLOSING_EVENT,function(a,b){var d=b();g?g(h,{removeClass:i.modalInClass}).start().then(d):c.removeClass(h,i.modalInClass).then(d)})),b.when(e).then(function(){var a=h[0].querySelector("[autofocus]");a?a.focus():h[0].focus()});var f=a.getTop();f&&a.modalRendered(f.key)})}}}]).directive("modalAnimationClass",["$log","$modalSuppressWarning",function(a,b){return{compile:function(c,d){b||a.warn("modal-animation-class is now deprecated. Use uib-modal-animation-class instead."),d.modalAnimation&&c.addClass(d.modalAnimationClass)}}}]).directive("modalTransclude",["$log","$modalSuppressWarning",function(a,b){return{link:function(c,d,e,f,g){b||a.warn("modal-transclude is now deprecated. Use uib-modal-transclude instead."),g(c.$parent,function(a){d.empty(),d.append(a)})}}}]).service("$modalStack",["$animate","$timeout","$document","$compile","$rootScope","$q","$injector","$$multiMap","$$stackedMap","$uibModalStack","$log","$modalSuppressWarning",function(a,b,c,d,e,f,g,h,i,j,k,l){l||k.warn("$modalStack is now deprecated. Use $uibModalStack instead."),angular.extend(this,j)}]).provider("$modal",["$uibModalProvider",function(a){angular.extend(this,a),this.$get=["$injector","$log","$modalSuppressWarning",function(b,c,d){return d||c.warn("$modal is now deprecated. Use $uibModal instead."),b.invoke(a.$get)}]}]),angular.module("ui.bootstrap.pagination",[]).controller("UibPaginationController",["$scope","$attrs","$parse",function(a,b,c){var d=this,e={$setViewValue:angular.noop},f=b.numPages?c(b.numPages).assign:angular.noop;this.init=function(g,h){e=g,this.config=h,e.$render=function(){d.render()},b.itemsPerPage?a.$parent.$watch(c(b.itemsPerPage),function(b){d.itemsPerPage=parseInt(b,10), +a.totalPages=d.calculateTotalPages()}):this.itemsPerPage=h.itemsPerPage,a.$watch("totalItems",function(){a.totalPages=d.calculateTotalPages()}),a.$watch("totalPages",function(b){f(a.$parent,b),a.page>b?a.selectPage(b):e.$render()})},this.calculateTotalPages=function(){var b=this.itemsPerPage<1?1:Math.ceil(a.totalItems/this.itemsPerPage);return Math.max(b||0,1)},this.render=function(){a.page=parseInt(e.$viewValue,10)||1},a.selectPage=function(b,c){c&&c.preventDefault();var d=!a.ngDisabled||!c;d&&a.page!==b&&b>0&&b<=a.totalPages&&(c&&c.target&&c.target.blur(),e.$setViewValue(b),e.$render())},a.getText=function(b){return a[b+"Text"]||d.config[b+"Text"]},a.noPrevious=function(){return 1===a.page},a.noNext=function(){return a.page===a.totalPages}}]).constant("uibPaginationConfig",{itemsPerPage:10,boundaryLinks:!1,directionLinks:!0,firstText:"First",previousText:"Previous",nextText:"Next",lastText:"Last",rotate:!0}).directive("uibPagination",["$parse","uibPaginationConfig",function(a,b){return{restrict:"EA",scope:{totalItems:"=",firstText:"@",previousText:"@",nextText:"@",lastText:"@",ngDisabled:"="},require:["uibPagination","?ngModel"],controller:"UibPaginationController",controllerAs:"pagination",templateUrl:function(a,b){return b.templateUrl||"template/pagination/pagination.html"},replace:!0,link:function(c,d,e,f){function g(a,b,c){return{number:a,text:b,active:c}}function h(a,b){var c=[],d=1,e=b,f=angular.isDefined(k)&&b>k;f&&(l?(d=Math.max(a-Math.floor(k/2),1),e=d+k-1,e>b&&(e=b,d=e-k+1)):(d=(Math.ceil(a/k)-1)*k+1,e=Math.min(d+k-1,b)));for(var h=d;e>=h;h++){var i=g(h,h,h===a);c.push(i)}if(f&&!l){if(d>1){var j=g(d-1,"...",!1);c.unshift(j)}if(b>e){var m=g(e+1,"...",!1);c.push(m)}}return c}var i=f[0],j=f[1];if(j){var k=angular.isDefined(e.maxSize)?c.$parent.$eval(e.maxSize):b.maxSize,l=angular.isDefined(e.rotate)?c.$parent.$eval(e.rotate):b.rotate;c.boundaryLinks=angular.isDefined(e.boundaryLinks)?c.$parent.$eval(e.boundaryLinks):b.boundaryLinks,c.directionLinks=angular.isDefined(e.directionLinks)?c.$parent.$eval(e.directionLinks):b.directionLinks,i.init(j,b),e.maxSize&&c.$parent.$watch(a(e.maxSize),function(a){k=parseInt(a,10),i.render()});var m=i.render;i.render=function(){m(),c.page>0&&c.page<=c.totalPages&&(c.pages=h(c.page,c.totalPages))}}}}}]).constant("uibPagerConfig",{itemsPerPage:10,previousText:"« Previous",nextText:"Next »",align:!0}).directive("uibPager",["uibPagerConfig",function(a){return{restrict:"EA",scope:{totalItems:"=",previousText:"@",nextText:"@",ngDisabled:"="},require:["uibPager","?ngModel"],controller:"UibPaginationController",controllerAs:"pagination",templateUrl:function(a,b){return b.templateUrl||"template/pagination/pager.html"},replace:!0,link:function(b,c,d,e){var f=e[0],g=e[1];g&&(b.align=angular.isDefined(d.align)?b.$parent.$eval(d.align):a.align,f.init(g,a))}}}]),angular.module("ui.bootstrap.pagination").value("$paginationSuppressWarning",!1).controller("PaginationController",["$scope","$attrs","$parse","$log","$paginationSuppressWarning",function(a,b,c,d,e){e||d.warn("PaginationController is now deprecated. Use UibPaginationController instead.");var f=this,g={$setViewValue:angular.noop},h=b.numPages?c(b.numPages).assign:angular.noop;this.init=function(d,e){g=d,this.config=e,g.$render=function(){f.render()},b.itemsPerPage?a.$parent.$watch(c(b.itemsPerPage),function(b){f.itemsPerPage=parseInt(b,10),a.totalPages=f.calculateTotalPages()}):this.itemsPerPage=e.itemsPerPage,a.$watch("totalItems",function(){a.totalPages=f.calculateTotalPages()}),a.$watch("totalPages",function(b){h(a.$parent,b),a.page>b?a.selectPage(b):g.$render()})},this.calculateTotalPages=function(){var b=this.itemsPerPage<1?1:Math.ceil(a.totalItems/this.itemsPerPage);return Math.max(b||0,1)},this.render=function(){a.page=parseInt(g.$viewValue,10)||1},a.selectPage=function(b,c){c&&c.preventDefault();var d=!a.ngDisabled||!c;d&&a.page!==b&&b>0&&b<=a.totalPages&&(c&&c.target&&c.target.blur(),g.$setViewValue(b),g.$render())},a.getText=function(b){return a[b+"Text"]||f.config[b+"Text"]},a.noPrevious=function(){return 1===a.page},a.noNext=function(){return a.page===a.totalPages}}]).directive("pagination",["$parse","uibPaginationConfig","$log","$paginationSuppressWarning",function(a,b,c,d){return{restrict:"EA",scope:{totalItems:"=",firstText:"@",previousText:"@",nextText:"@",lastText:"@",ngDisabled:"="},require:["pagination","?ngModel"],controller:"PaginationController",controllerAs:"pagination",templateUrl:function(a,b){return b.templateUrl||"template/pagination/pagination.html"},replace:!0,link:function(e,f,g,h){function i(a,b,c){return{number:a,text:b,active:c}}function j(a,b){var c=[],d=1,e=b,f=angular.isDefined(m)&&b>m;f&&(n?(d=Math.max(a-Math.floor(m/2),1),e=d+m-1,e>b&&(e=b,d=e-m+1)):(d=(Math.ceil(a/m)-1)*m+1,e=Math.min(d+m-1,b)));for(var g=d;e>=g;g++){var h=i(g,g,g===a);c.push(h)}if(f&&!n){if(d>1){var j=i(d-1,"...",!1);c.unshift(j)}if(b>e){var k=i(e+1,"...",!1);c.push(k)}}return c}d||c.warn("pagination is now deprecated. Use uib-pagination instead.");var k=h[0],l=h[1];if(l){var m=angular.isDefined(g.maxSize)?e.$parent.$eval(g.maxSize):b.maxSize,n=angular.isDefined(g.rotate)?e.$parent.$eval(g.rotate):b.rotate;e.boundaryLinks=angular.isDefined(g.boundaryLinks)?e.$parent.$eval(g.boundaryLinks):b.boundaryLinks,e.directionLinks=angular.isDefined(g.directionLinks)?e.$parent.$eval(g.directionLinks):b.directionLinks,k.init(l,b),g.maxSize&&e.$parent.$watch(a(g.maxSize),function(a){m=parseInt(a,10),k.render()});var o=k.render;k.render=function(){o(),e.page>0&&e.page<=e.totalPages&&(e.pages=j(e.page,e.totalPages))}}}}}]).directive("pager",["uibPagerConfig","$log","$paginationSuppressWarning",function(a,b,c){return{restrict:"EA",scope:{totalItems:"=",previousText:"@",nextText:"@",ngDisabled:"="},require:["pager","?ngModel"],controller:"PaginationController",controllerAs:"pagination",templateUrl:function(a,b){return b.templateUrl||"template/pagination/pager.html"},replace:!0,link:function(d,e,f,g){c||b.warn("pager is now deprecated. Use uib-pager instead.");var h=g[0],i=g[1];i&&(d.align=angular.isDefined(f.align)?d.$parent.$eval(f.align):a.align,h.init(i,a))}}}]),angular.module("ui.bootstrap.tooltip",["ui.bootstrap.position","ui.bootstrap.stackedMap"]).provider("$uibTooltip",function(){function a(a){var b=/[A-Z]/g,c="-";return a.replace(b,function(a,b){return(b?c:"")+a.toLowerCase()})}var b={placement:"top",animation:!0,popupDelay:0,popupCloseDelay:0,useContentExp:!1},c={mouseenter:"mouseleave",click:"click",focus:"blur",none:""},d={};this.options=function(a){angular.extend(d,a)},this.setTriggers=function(a){angular.extend(c,a)},this.$get=["$window","$compile","$timeout","$document","$uibPosition","$interpolate","$rootScope","$parse","$$stackedMap",function(e,f,g,h,i,j,k,l,m){var n=m.createNew();return h.on("keypress",function(a){if(27===a.which){var b=n.top();b&&(b.value.close(),n.removeTop(),b=null)}}),function(e,k,m,o){function p(a){var b=(a||o.trigger||m).split(" "),d=b.map(function(a){return c[a]||a});return{show:b,hide:d}}o=angular.extend({},b,d,o);var q=a(e),r=j.startSymbol(),s=j.endSymbol(),t="
      ';return{compile:function(a,b){var c=f(t);return function(a,b,d,f){function j(){L.isOpen?q():m()}function m(){(!K||a.$eval(d[k+"Enable"]))&&(u(),x(),L.popupDelay?F||(F=g(r,L.popupDelay,!1)):r())}function q(){s(),L.popupCloseDelay?G||(G=g(t,L.popupCloseDelay,!1)):t()}function r(){return s(),u(),L.content?(v(),void L.$evalAsync(function(){L.isOpen=!0,y(!0),Q()})):angular.noop}function s(){F&&(g.cancel(F),F=null),H&&(g.cancel(H),H=null)}function t(){s(),u(),L&&L.$evalAsync(function(){L.isOpen=!1,y(!1),L.animation?E||(E=g(w,150,!1)):w()})}function u(){G&&(g.cancel(G),G=null),E&&(g.cancel(E),E=null)}function v(){C||(D=L.$new(),C=c(D,function(a){I?h.find("body").append(a):b.after(a)}),z())}function w(){A(),E=null,C&&(C.remove(),C=null),D&&(D.$destroy(),D=null)}function x(){L.title=d[k+"Title"],O?L.content=O(a):L.content=d[e],L.popupClass=d[k+"Class"],L.placement=angular.isDefined(d[k+"Placement"])?d[k+"Placement"]:o.placement;var b=parseInt(d[k+"PopupDelay"],10),c=parseInt(d[k+"PopupCloseDelay"],10);L.popupDelay=isNaN(b)?o.popupDelay:b,L.popupCloseDelay=isNaN(c)?o.popupCloseDelay:c}function y(b){N&&angular.isFunction(N.assign)&&N.assign(a,b)}function z(){P.length=0,O?(P.push(a.$watch(O,function(a){L.content=a,!a&&L.isOpen&&t()})),P.push(D.$watch(function(){M||(M=!0,D.$$postDigest(function(){M=!1,L&&L.isOpen&&Q()}))}))):P.push(d.$observe(e,function(a){L.content=a,!a&&L.isOpen?t():Q()})),P.push(d.$observe(k+"Title",function(a){L.title=a,L.isOpen&&Q()})),P.push(d.$observe(k+"Placement",function(a){L.placement=a?a:o.placement,L.isOpen&&Q()}))}function A(){P.length&&(angular.forEach(P,function(a){a()}),P.length=0)}function B(){var a=d[k+"Trigger"];R(),J=p(a),"none"!==J.show&&J.show.forEach(function(a,c){a===J.hide[c]?b[0].addEventListener(a,j):a&&(b[0].addEventListener(a,m),J.hide[c].split(" ").forEach(function(a){b[0].addEventListener(a,q)})),b.on("keypress",function(a){27===a.which&&q()})})}var C,D,E,F,G,H,I=angular.isDefined(o.appendToBody)?o.appendToBody:!1,J=p(void 0),K=angular.isDefined(d[k+"Enable"]),L=a.$new(!0),M=!1,N=angular.isDefined(d[k+"IsOpen"])?l(d[k+"IsOpen"]):!1,O=o.useContentExp?l(d[e]):!1,P=[],Q=function(){C&&C.html()&&(H||(H=g(function(){C.css({top:0,left:0});var a=i.positionElements(b,C,L.placement,I);a.top+="px",a.left+="px",a.visibility="visible",C.css(a),H=null},0,!1)))};L.origScope=a,L.isOpen=!1,n.add(L,{close:t}),L.contentExp=function(){return L.content},d.$observe("disabled",function(a){a&&s(),a&&L.isOpen&&t()}),N&&a.$watch(N,function(a){L&&!a===L.isOpen&&j()});var R=function(){J.show.forEach(function(a){b.unbind(a,m)}),J.hide.forEach(function(a){a.split(" ").forEach(function(a){b[0].removeEventListener(a,q)})})};B();var S=a.$eval(d[k+"Animation"]);L.animation=angular.isDefined(S)?!!S:o.animation;var T=a.$eval(d[k+"AppendToBody"]);I=angular.isDefined(T)?T:I,I&&a.$on("$locationChangeSuccess",function(){L.isOpen&&t()}),a.$on("$destroy",function(){s(),u(),R(),w(),n.remove(L),L=null})}}}}}]}).directive("uibTooltipTemplateTransclude",["$animate","$sce","$compile","$templateRequest",function(a,b,c,d){return{link:function(e,f,g){var h,i,j,k=e.$eval(g.tooltipTemplateTranscludeScope),l=0,m=function(){i&&(i.remove(),i=null),h&&(h.$destroy(),h=null),j&&(a.leave(j).then(function(){i=null}),i=j,j=null)};e.$watch(b.parseAsResourceUrl(g.uibTooltipTemplateTransclude),function(b){var g=++l;b?(d(b,!0).then(function(d){if(g===l){var e=k.$new(),i=d,n=c(i)(e,function(b){m(),a.enter(b,f)});h=e,j=n,h.$emit("$includeContentLoaded",b)}},function(){g===l&&(m(),e.$emit("$includeContentError",b))}),e.$emit("$includeContentRequested",b)):m()}),e.$on("$destroy",m)}}}]).directive("uibTooltipClasses",function(){return{restrict:"A",link:function(a,b,c){a.placement&&b.addClass(a.placement),a.popupClass&&b.addClass(a.popupClass),a.animation()&&b.addClass(c.tooltipAnimationClass)}}}).directive("uibTooltipPopup",function(){return{replace:!0,scope:{content:"@",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"template/tooltip/tooltip-popup.html",link:function(a,b){b.addClass("tooltip")}}}).directive("uibTooltip",["$uibTooltip",function(a){return a("uibTooltip","tooltip","mouseenter")}]).directive("uibTooltipTemplatePopup",function(){return{replace:!0,scope:{contentExp:"&",placement:"@",popupClass:"@",animation:"&",isOpen:"&",originScope:"&"},templateUrl:"template/tooltip/tooltip-template-popup.html",link:function(a,b){b.addClass("tooltip")}}}).directive("uibTooltipTemplate",["$uibTooltip",function(a){return a("uibTooltipTemplate","tooltip","mouseenter",{useContentExp:!0})}]).directive("uibTooltipHtmlPopup",function(){return{replace:!0,scope:{contentExp:"&",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"template/tooltip/tooltip-html-popup.html",link:function(a,b){b.addClass("tooltip")}}}).directive("uibTooltipHtml",["$uibTooltip",function(a){return a("uibTooltipHtml","tooltip","mouseenter",{useContentExp:!0})}]),angular.module("ui.bootstrap.tooltip").value("$tooltipSuppressWarning",!1).provider("$tooltip",["$uibTooltipProvider",function(a){angular.extend(this,a),this.$get=["$log","$tooltipSuppressWarning","$injector",function(b,c,d){return c||b.warn("$tooltip is now deprecated. Use $uibTooltip instead."),d.invoke(a.$get)}]}]).directive("tooltipTemplateTransclude",["$animate","$sce","$compile","$templateRequest","$log","$tooltipSuppressWarning",function(a,b,c,d,e,f){return{link:function(g,h,i){f||e.warn("tooltip-template-transclude is now deprecated. Use uib-tooltip-template-transclude instead.");var j,k,l,m=g.$eval(i.tooltipTemplateTranscludeScope),n=0,o=function(){k&&(k.remove(),k=null),j&&(j.$destroy(),j=null),l&&(a.leave(l).then(function(){k=null}),k=l,l=null)};g.$watch(b.parseAsResourceUrl(i.tooltipTemplateTransclude),function(b){var e=++n;b?(d(b,!0).then(function(d){if(e===n){var f=m.$new(),g=d,i=c(g)(f,function(b){o(),a.enter(b,h)});j=f,l=i,j.$emit("$includeContentLoaded",b)}},function(){e===n&&(o(),g.$emit("$includeContentError",b))}),g.$emit("$includeContentRequested",b)):o()}),g.$on("$destroy",o)}}}]).directive("tooltipClasses",["$log","$tooltipSuppressWarning",function(a,b){return{restrict:"A",link:function(c,d,e){b||a.warn("tooltip-classes is now deprecated. Use uib-tooltip-classes instead."),c.placement&&d.addClass(c.placement),c.popupClass&&d.addClass(c.popupClass),c.animation()&&d.addClass(e.tooltipAnimationClass)}}}]).directive("tooltipPopup",["$log","$tooltipSuppressWarning",function(a,b){return{replace:!0,scope:{content:"@",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"template/tooltip/tooltip-popup.html",link:function(c,d){b||a.warn("tooltip-popup is now deprecated. Use uib-tooltip-popup instead."),d.addClass("tooltip")}}}]).directive("tooltip",["$tooltip",function(a){return a("tooltip","tooltip","mouseenter")}]).directive("tooltipTemplatePopup",["$log","$tooltipSuppressWarning",function(a,b){return{replace:!0,scope:{contentExp:"&",placement:"@",popupClass:"@",animation:"&",isOpen:"&",originScope:"&"},templateUrl:"template/tooltip/tooltip-template-popup.html",link:function(c,d){b||a.warn("tooltip-template-popup is now deprecated. Use uib-tooltip-template-popup instead."),d.addClass("tooltip")}}}]).directive("tooltipTemplate",["$tooltip",function(a){return a("tooltipTemplate","tooltip","mouseenter",{useContentExp:!0})}]).directive("tooltipHtmlPopup",["$log","$tooltipSuppressWarning",function(a,b){return{replace:!0,scope:{contentExp:"&",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"template/tooltip/tooltip-html-popup.html",link:function(c,d){b||a.warn("tooltip-html-popup is now deprecated. Use uib-tooltip-html-popup instead."),d.addClass("tooltip")}}}]).directive("tooltipHtml",["$tooltip",function(a){return a("tooltipHtml","tooltip","mouseenter",{useContentExp:!0})}]),angular.module("ui.bootstrap.popover",["ui.bootstrap.tooltip"]).directive("uibPopoverTemplatePopup",function(){return{replace:!0,scope:{title:"@",contentExp:"&",placement:"@",popupClass:"@",animation:"&",isOpen:"&",originScope:"&"},templateUrl:"template/popover/popover-template.html",link:function(a,b){b.addClass("popover")}}}).directive("uibPopoverTemplate",["$uibTooltip",function(a){return a("uibPopoverTemplate","popover","click",{useContentExp:!0})}]).directive("uibPopoverHtmlPopup",function(){return{replace:!0,scope:{contentExp:"&",title:"@",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"template/popover/popover-html.html",link:function(a,b){b.addClass("popover")}}}).directive("uibPopoverHtml",["$uibTooltip",function(a){return a("uibPopoverHtml","popover","click",{useContentExp:!0})}]).directive("uibPopoverPopup",function(){return{replace:!0,scope:{title:"@",content:"@",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"template/popover/popover.html",link:function(a,b){b.addClass("popover")}}}).directive("uibPopover",["$uibTooltip",function(a){return a("uibPopover","popover","click")}]),angular.module("ui.bootstrap.popover").value("$popoverSuppressWarning",!1).directive("popoverTemplatePopup",["$log","$popoverSuppressWarning",function(a,b){return{replace:!0,scope:{title:"@",contentExp:"&",placement:"@",popupClass:"@",animation:"&",isOpen:"&",originScope:"&"},templateUrl:"template/popover/popover-template.html",link:function(c,d){b||a.warn("popover-template-popup is now deprecated. Use uib-popover-template-popup instead."),d.addClass("popover")}}}]).directive("popoverTemplate",["$tooltip",function(a){return a("popoverTemplate","popover","click",{useContentExp:!0})}]).directive("popoverHtmlPopup",["$log","$popoverSuppressWarning",function(a,b){return{replace:!0,scope:{contentExp:"&",title:"@",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"template/popover/popover-html.html",link:function(c,d){b||a.warn("popover-html-popup is now deprecated. Use uib-popover-html-popup instead."),d.addClass("popover")}}}]).directive("popoverHtml",["$tooltip",function(a){return a("popoverHtml","popover","click",{useContentExp:!0})}]).directive("popoverPopup",["$log","$popoverSuppressWarning",function(a,b){return{replace:!0,scope:{title:"@",content:"@",placement:"@",popupClass:"@",animation:"&",isOpen:"&"},templateUrl:"template/popover/popover.html",link:function(c,d){b||a.warn("popover-popup is now deprecated. Use uib-popover-popup instead."),d.addClass("popover")}}}]).directive("popover",["$tooltip",function(a){return a("popover","popover","click")}]),angular.module("ui.bootstrap.progressbar",[]).constant("uibProgressConfig",{animate:!0,max:100}).controller("UibProgressController",["$scope","$attrs","uibProgressConfig",function(a,b,c){var d=this,e=angular.isDefined(b.animate)?a.$parent.$eval(b.animate):c.animate;this.bars=[],a.max=angular.isDefined(a.max)?a.max:c.max,this.addBar=function(b,c,f){e||c.css({transition:"none"}),this.bars.push(b),b.max=a.max,b.title=f&&angular.isDefined(f.title)?f.title:"progressbar",b.$watch("value",function(a){b.recalculatePercentage()}),b.recalculatePercentage=function(){var a=d.bars.reduce(function(a,b){return b.percent=+(100*b.value/b.max).toFixed(2),a+b.percent},0);a>100&&(b.percent-=a-100)},b.$on("$destroy",function(){c=null,d.removeBar(b)})},this.removeBar=function(a){this.bars.splice(this.bars.indexOf(a),1),this.bars.forEach(function(a){a.recalculatePercentage()})},a.$watch("max",function(b){d.bars.forEach(function(b){b.max=a.max,b.recalculatePercentage()})})}]).directive("uibProgress",function(){return{replace:!0,transclude:!0,controller:"UibProgressController",require:"uibProgress",scope:{max:"=?"},templateUrl:"template/progressbar/progress.html"}}).directive("uibBar",function(){return{replace:!0,transclude:!0,require:"^uibProgress",scope:{value:"=",type:"@"},templateUrl:"template/progressbar/bar.html",link:function(a,b,c,d){d.addBar(a,b,c)}}}).directive("uibProgressbar",function(){return{replace:!0,transclude:!0,controller:"UibProgressController",scope:{value:"=",max:"=?",type:"@"},templateUrl:"template/progressbar/progressbar.html",link:function(a,b,c,d){d.addBar(a,angular.element(b.children()[0]),{title:c.title})}}}),angular.module("ui.bootstrap.progressbar").value("$progressSuppressWarning",!1).controller("ProgressController",["$scope","$attrs","uibProgressConfig","$log","$progressSuppressWarning",function(a,b,c,d,e){e||d.warn("ProgressController is now deprecated. Use UibProgressController instead.");var f=this,g=angular.isDefined(b.animate)?a.$parent.$eval(b.animate):c.animate;this.bars=[],a.max=angular.isDefined(a.max)?a.max:c.max,this.addBar=function(b,c,d){g||c.css({transition:"none"}),this.bars.push(b),b.max=a.max,b.title=d&&angular.isDefined(d.title)?d.title:"progressbar",b.$watch("value",function(a){b.recalculatePercentage()}),b.recalculatePercentage=function(){b.percent=+(100*b.value/b.max).toFixed(2);var a=f.bars.reduce(function(a,b){return a+b.percent},0);a>100&&(b.percent-=a-100)},b.$on("$destroy",function(){c=null,f.removeBar(b)})},this.removeBar=function(a){this.bars.splice(this.bars.indexOf(a),1)},a.$watch("max",function(b){f.bars.forEach(function(b){b.max=a.max,b.recalculatePercentage()})})}]).directive("progress",["$log","$progressSuppressWarning",function(a,b){return{replace:!0,transclude:!0,controller:"ProgressController",require:"progress",scope:{max:"=?",title:"@?"},templateUrl:"template/progressbar/progress.html",link:function(){b||a.warn("progress is now deprecated. Use uib-progress instead.")}}}]).directive("bar",["$log","$progressSuppressWarning",function(a,b){return{replace:!0,transclude:!0,require:"^progress",scope:{value:"=",type:"@"},templateUrl:"template/progressbar/bar.html",link:function(c,d,e,f){b||a.warn("bar is now deprecated. Use uib-bar instead."),f.addBar(c,d)}}}]).directive("progressbar",["$log","$progressSuppressWarning",function(a,b){return{replace:!0,transclude:!0,controller:"ProgressController",scope:{value:"=",max:"=?",type:"@"},templateUrl:"template/progressbar/progressbar.html",link:function(c,d,e,f){b||a.warn("progressbar is now deprecated. Use uib-progressbar instead."),f.addBar(c,angular.element(d.children()[0]),{title:e.title})}}}]),angular.module("ui.bootstrap.rating",[]).constant("uibRatingConfig",{max:5,stateOn:null,stateOff:null,titles:["one","two","three","four","five"]}).controller("UibRatingController",["$scope","$attrs","uibRatingConfig",function(a,b,c){var d={$setViewValue:angular.noop};this.init=function(e){d=e,d.$render=this.render,d.$formatters.push(function(a){return angular.isNumber(a)&&a<<0!==a&&(a=Math.round(a)),a}),this.stateOn=angular.isDefined(b.stateOn)?a.$parent.$eval(b.stateOn):c.stateOn,this.stateOff=angular.isDefined(b.stateOff)?a.$parent.$eval(b.stateOff):c.stateOff;var f=angular.isDefined(b.titles)?a.$parent.$eval(b.titles):c.titles;this.titles=angular.isArray(f)&&f.length>0?f:c.titles;var g=angular.isDefined(b.ratingStates)?a.$parent.$eval(b.ratingStates):new Array(angular.isDefined(b.max)?a.$parent.$eval(b.max):c.max);a.range=this.buildTemplateObjects(g)},this.buildTemplateObjects=function(a){for(var b=0,c=a.length;c>b;b++)a[b]=angular.extend({index:b},{stateOn:this.stateOn,stateOff:this.stateOff,title:this.getTitle(b)},a[b]);return a},this.getTitle=function(a){return a>=this.titles.length?a+1:this.titles[a]},a.rate=function(b){!a.readonly&&b>=0&&b<=a.range.length&&(d.$setViewValue(d.$viewValue===b?0:b),d.$render())},a.enter=function(b){a.readonly||(a.value=b),a.onHover({value:b})},a.reset=function(){a.value=d.$viewValue,a.onLeave()},a.onKeydown=function(b){/(37|38|39|40)/.test(b.which)&&(b.preventDefault(),b.stopPropagation(),a.rate(a.value+(38===b.which||39===b.which?1:-1)))},this.render=function(){a.value=d.$viewValue}}]).directive("uibRating",function(){return{require:["uibRating","ngModel"],scope:{readonly:"=?",onHover:"&",onLeave:"&"},controller:"UibRatingController",templateUrl:"template/rating/rating.html",replace:!0,link:function(a,b,c,d){var e=d[0],f=d[1];e.init(f)}}}),angular.module("ui.bootstrap.rating").value("$ratingSuppressWarning",!1).controller("RatingController",["$scope","$attrs","$controller","$log","$ratingSuppressWarning",function(a,b,c,d,e){e||d.warn("RatingController is now deprecated. Use UibRatingController instead."),angular.extend(this,c("UibRatingController",{$scope:a,$attrs:b}))}]).directive("rating",["$log","$ratingSuppressWarning",function(a,b){return{require:["rating","ngModel"],scope:{readonly:"=?",onHover:"&",onLeave:"&"},controller:"RatingController",templateUrl:"template/rating/rating.html",replace:!0,link:function(c,d,e,f){b||a.warn("rating is now deprecated. Use uib-rating instead.");var g=f[0],h=f[1];g.init(h)}}}]),angular.module("ui.bootstrap.tabs",[]).controller("UibTabsetController",["$scope",function(a){var b=this,c=b.tabs=a.tabs=[];b.select=function(a){angular.forEach(c,function(b){b.active&&b!==a&&(b.active=!1,b.onDeselect(),a.selectCalled=!1)}),a.active=!0,a.selectCalled||(a.onSelect(),a.selectCalled=!0)},b.addTab=function(a){c.push(a),1===c.length&&a.active!==!1?a.active=!0:a.active?b.select(a):a.active=!1},b.removeTab=function(a){var e=c.indexOf(a);if(a.active&&c.length>1&&!d){var f=e==c.length-1?e-1:e+1;b.select(c[f])}c.splice(e,1)};var d;a.$on("$destroy",function(){d=!0})}]).directive("uibTabset",function(){return{restrict:"EA",transclude:!0,replace:!0,scope:{type:"@"},controller:"UibTabsetController",templateUrl:"template/tabs/tabset.html",link:function(a,b,c){a.vertical=angular.isDefined(c.vertical)?a.$parent.$eval(c.vertical):!1,a.justified=angular.isDefined(c.justified)?a.$parent.$eval(c.justified):!1}}}).directive("uibTab",["$parse",function(a){return{require:"^uibTabset",restrict:"EA",replace:!0,templateUrl:"template/tabs/tab.html",transclude:!0,scope:{active:"=?",heading:"@",onSelect:"&select",onDeselect:"&deselect"},controller:function(){},link:function(b,c,d,e,f){b.$watch("active",function(a){a&&e.select(b)}),b.disabled=!1,d.disable&&b.$parent.$watch(a(d.disable),function(a){b.disabled=!!a}),b.select=function(){b.disabled||(b.active=!0)},e.addTab(b),b.$on("$destroy",function(){e.removeTab(b)}),b.$transcludeFn=f}}}]).directive("uibTabHeadingTransclude",function(){return{restrict:"A",require:["?^uibTab","?^tab"],link:function(a,b){a.$watch("headingElement",function(a){a&&(b.html(""),b.append(a))})}}}).directive("uibTabContentTransclude",function(){function a(a){return a.tagName&&(a.hasAttribute("tab-heading")||a.hasAttribute("data-tab-heading")||a.hasAttribute("x-tab-heading")||a.hasAttribute("uib-tab-heading")||a.hasAttribute("data-uib-tab-heading")||a.hasAttribute("x-uib-tab-heading")||"tab-heading"===a.tagName.toLowerCase()||"data-tab-heading"===a.tagName.toLowerCase()||"x-tab-heading"===a.tagName.toLowerCase()||"uib-tab-heading"===a.tagName.toLowerCase()||"data-uib-tab-heading"===a.tagName.toLowerCase()||"x-uib-tab-heading"===a.tagName.toLowerCase())}return{restrict:"A",require:["?^uibTabset","?^tabset"],link:function(b,c,d){var e=b.$eval(d.uibTabContentTransclude);e.$transcludeFn(e.$parent,function(b){angular.forEach(b,function(b){a(b)?e.headingElement=b:c.append(b)})})}}}),angular.module("ui.bootstrap.tabs").value("$tabsSuppressWarning",!1).controller("TabsetController",["$scope","$controller","$log","$tabsSuppressWarning",function(a,b,c,d){d||c.warn("TabsetController is now deprecated. Use UibTabsetController instead."),angular.extend(this,b("UibTabsetController",{$scope:a}))}]).directive("tabset",["$log","$tabsSuppressWarning",function(a,b){return{restrict:"EA",transclude:!0,replace:!0,scope:{type:"@"},controller:"TabsetController",templateUrl:"template/tabs/tabset.html",link:function(c,d,e){b||a.warn("tabset is now deprecated. Use uib-tabset instead."),c.vertical=angular.isDefined(e.vertical)?c.$parent.$eval(e.vertical):!1,c.justified=angular.isDefined(e.justified)?c.$parent.$eval(e.justified):!1}}}]).directive("tab",["$parse","$log","$tabsSuppressWarning",function(a,b,c){return{require:"^tabset",restrict:"EA",replace:!0,templateUrl:"template/tabs/tab.html",transclude:!0,scope:{active:"=?",heading:"@",onSelect:"&select",onDeselect:"&deselect"},controller:function(){},link:function(d,e,f,g,h){c||b.warn("tab is now deprecated. Use uib-tab instead."),d.$watch("active",function(a){a&&g.select(d)}),d.disabled=!1,f.disable&&d.$parent.$watch(a(f.disable),function(a){d.disabled=!!a}),d.select=function(){d.disabled||(d.active=!0)},g.addTab(d),d.$on("$destroy",function(){g.removeTab(d)}),d.$transcludeFn=h}}}]).directive("tabHeadingTransclude",["$log","$tabsSuppressWarning",function(a,b){return{restrict:"A",require:"^tab",link:function(c,d){b||a.warn("tab-heading-transclude is now deprecated. Use uib-tab-heading-transclude instead."),c.$watch("headingElement",function(a){a&&(d.html(""),d.append(a))})}}}]).directive("tabContentTransclude",["$log","$tabsSuppressWarning",function(a,b){function c(a){return a.tagName&&(a.hasAttribute("tab-heading")||a.hasAttribute("data-tab-heading")||a.hasAttribute("x-tab-heading")||"tab-heading"===a.tagName.toLowerCase()||"data-tab-heading"===a.tagName.toLowerCase()||"x-tab-heading"===a.tagName.toLowerCase())}return{restrict:"A",require:"^tabset",link:function(d,e,f){b||a.warn("tab-content-transclude is now deprecated. Use uib-tab-content-transclude instead.");var g=d.$eval(f.tabContentTransclude);g.$transcludeFn(g.$parent,function(a){angular.forEach(a,function(a){c(a)?g.headingElement=a:e.append(a)})})}}}]),angular.module("ui.bootstrap.timepicker",[]).constant("uibTimepickerConfig",{hourStep:1,minuteStep:1,showMeridian:!0,meridians:null,readonlyInput:!1,mousewheel:!0,arrowkeys:!0,showSpinners:!0}).controller("UibTimepickerController",["$scope","$element","$attrs","$parse","$log","$locale","uibTimepickerConfig",function(a,b,c,d,e,f,g){function h(){var b=parseInt(a.hours,10),c=a.showMeridian?b>0&&13>b:b>=0&&24>b;return c?(a.showMeridian&&(12===b&&(b=0),a.meridian===r[1]&&(b+=12)),b):void 0}function i(){var b=parseInt(a.minutes,10);return b>=0&&60>b?b:void 0}function j(a){return angular.isDefined(a)&&a.toString().length<2?"0"+a:a.toString()}function k(a){l(),q.$setViewValue(new Date(p)),m(a)}function l(){q.$setValidity("time",!0),a.invalidHours=!1,a.invalidMinutes=!1}function m(b){var c=p.getHours(),d=p.getMinutes();a.showMeridian&&(c=0===c||12===c?12:c%12),a.hours="h"===b?c:j(c),"m"!==b&&(a.minutes=j(d)),a.meridian=p.getHours()<12?r[0]:r[1]}function n(a,b){var c=new Date(a.getTime()+6e4*b),d=new Date(a);return d.setHours(c.getHours(),c.getMinutes()),d}function o(a){p=n(p,a),k()}var p=new Date,q={$setViewValue:angular.noop},r=angular.isDefined(c.meridians)?a.$parent.$eval(c.meridians):g.meridians||f.DATETIME_FORMATS.AMPMS;a.tabindex=angular.isDefined(c.tabindex)?c.tabindex:0,b.removeAttr("tabindex"),this.init=function(b,d){q=b,q.$render=this.render,q.$formatters.unshift(function(a){return a?new Date(a):null});var e=d.eq(0),f=d.eq(1),h=angular.isDefined(c.mousewheel)?a.$parent.$eval(c.mousewheel):g.mousewheel;h&&this.setupMousewheelEvents(e,f);var i=angular.isDefined(c.arrowkeys)?a.$parent.$eval(c.arrowkeys):g.arrowkeys;i&&this.setupArrowkeyEvents(e,f),a.readonlyInput=angular.isDefined(c.readonlyInput)?a.$parent.$eval(c.readonlyInput):g.readonlyInput,this.setupInputEvents(e,f)};var s=g.hourStep;c.hourStep&&a.$parent.$watch(d(c.hourStep),function(a){s=parseInt(a,10)});var t=g.minuteStep;c.minuteStep&&a.$parent.$watch(d(c.minuteStep),function(a){t=parseInt(a,10)});var u;a.$parent.$watch(d(c.min),function(a){var b=new Date(a);u=isNaN(b)?void 0:b});var v;a.$parent.$watch(d(c.max),function(a){var b=new Date(a);v=isNaN(b)?void 0:b}),a.noIncrementHours=function(){var a=n(p,60*s);return a>v||p>a&&u>a},a.noDecrementHours=function(){var a=n(p,60*-s);return u>a||a>p&&a>v},a.noIncrementMinutes=function(){var a=n(p,t);return a>v||p>a&&u>a},a.noDecrementMinutes=function(){var a=n(p,-t);return u>a||a>p&&a>v},a.noToggleMeridian=function(){return p.getHours()<13?n(p,720)>v:n(p,-720)0};b.bind("mousewheel wheel",function(b){a.$apply(d(b)?a.incrementHours():a.decrementHours()),b.preventDefault()}),c.bind("mousewheel wheel",function(b){a.$apply(d(b)?a.incrementMinutes():a.decrementMinutes()),b.preventDefault()})},this.setupArrowkeyEvents=function(b,c){b.bind("keydown",function(b){38===b.which?(b.preventDefault(),a.incrementHours(),a.$apply()):40===b.which&&(b.preventDefault(), +a.decrementHours(),a.$apply())}),c.bind("keydown",function(b){38===b.which?(b.preventDefault(),a.incrementMinutes(),a.$apply()):40===b.which&&(b.preventDefault(),a.decrementMinutes(),a.$apply())})},this.setupInputEvents=function(b,c){if(a.readonlyInput)return a.updateHours=angular.noop,void(a.updateMinutes=angular.noop);var d=function(b,c){q.$setViewValue(null),q.$setValidity("time",!1),angular.isDefined(b)&&(a.invalidHours=b),angular.isDefined(c)&&(a.invalidMinutes=c)};a.updateHours=function(){var a=h(),b=i();angular.isDefined(a)&&angular.isDefined(b)?(p.setHours(a),u>p||p>v?d(!0):k("h")):d(!0)},b.bind("blur",function(b){!a.invalidHours&&a.hours<10&&a.$apply(function(){a.hours=j(a.hours)})}),a.updateMinutes=function(){var a=i(),b=h();angular.isDefined(a)&&angular.isDefined(b)?(p.setMinutes(a),u>p||p>v?d(void 0,!0):k("m")):d(void 0,!0)},c.bind("blur",function(b){!a.invalidMinutes&&a.minutes<10&&a.$apply(function(){a.minutes=j(a.minutes)})})},this.render=function(){var b=q.$viewValue;isNaN(b)?(q.$setValidity("time",!1),e.error('Timepicker directive: "ng-model" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.')):(b&&(p=b),u>p||p>v?(q.$setValidity("time",!1),a.invalidHours=!0,a.invalidMinutes=!0):l(),m())},a.showSpinners=angular.isDefined(c.showSpinners)?a.$parent.$eval(c.showSpinners):g.showSpinners,a.incrementHours=function(){a.noIncrementHours()||o(60*s)},a.decrementHours=function(){a.noDecrementHours()||o(60*-s)},a.incrementMinutes=function(){a.noIncrementMinutes()||o(t)},a.decrementMinutes=function(){a.noDecrementMinutes()||o(-t)},a.toggleMeridian=function(){a.noToggleMeridian()||o(720*(p.getHours()<12?1:-1))}}]).directive("uibTimepicker",function(){return{restrict:"EA",require:["uibTimepicker","?^ngModel"],controller:"UibTimepickerController",controllerAs:"timepicker",replace:!0,scope:{},templateUrl:function(a,b){return b.templateUrl||"template/timepicker/timepicker.html"},link:function(a,b,c,d){var e=d[0],f=d[1];f&&e.init(f,b.find("input"))}}}),angular.module("ui.bootstrap.timepicker").value("$timepickerSuppressWarning",!1).controller("TimepickerController",["$scope","$element","$attrs","$controller","$log","$timepickerSuppressWarning",function(a,b,c,d,e,f){f||e.warn("TimepickerController is now deprecated. Use UibTimepickerController instead."),angular.extend(this,d("UibTimepickerController",{$scope:a,$element:b,$attrs:c}))}]).directive("timepicker",["$log","$timepickerSuppressWarning",function(a,b){return{restrict:"EA",require:["timepicker","?^ngModel"],controller:"TimepickerController",controllerAs:"timepicker",replace:!0,scope:{},templateUrl:function(a,b){return b.templateUrl||"template/timepicker/timepicker.html"},link:function(c,d,e,f){b||a.warn("timepicker is now deprecated. Use uib-timepicker instead.");var g=f[0],h=f[1];h&&g.init(h,d.find("input"))}}}]),angular.module("ui.bootstrap.typeahead",["ui.bootstrap.position"]).factory("uibTypeaheadParser",["$parse",function(a){var b=/^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w\d]*))\s+in\s+([\s\S]+?)$/;return{parse:function(c){var d=c.match(b);if(!d)throw new Error('Expected typeahead specification in form of "_modelValue_ (as _label_)? for _item_ in _collection_" but got "'+c+'".');return{itemName:d[3],source:a(d[4]),viewMapper:a(d[2]||d[1]),modelMapper:a(d[1])}}}}]).controller("UibTypeaheadController",["$scope","$element","$attrs","$compile","$parse","$q","$timeout","$document","$window","$rootScope","$uibPosition","uibTypeaheadParser",function(a,b,c,d,e,f,g,h,i,j,k,l){function m(){K.moveInProgress||(K.moveInProgress=!0,K.$digest()),S&&g.cancel(S),S=g(function(){K.matches.length&&n(),K.moveInProgress=!1},r)}function n(){K.position=C?k.offset(b):k.position(b),K.position.top+=b.prop("offsetHeight")}var o,p,q=[9,13,27,38,40],r=200,s=a.$eval(c.typeaheadMinLength);s||0===s||(s=1);var t,u,v=a.$eval(c.typeaheadWaitMs)||0,w=a.$eval(c.typeaheadEditable)!==!1,x=e(c.typeaheadLoading).assign||angular.noop,y=e(c.typeaheadOnSelect),z=angular.isDefined(c.typeaheadSelectOnBlur)?a.$eval(c.typeaheadSelectOnBlur):!1,A=e(c.typeaheadNoResults).assign||angular.noop,B=c.typeaheadInputFormatter?e(c.typeaheadInputFormatter):void 0,C=c.typeaheadAppendToBody?a.$eval(c.typeaheadAppendToBody):!1,D=c.typeaheadAppendToElementId||!1,E=a.$eval(c.typeaheadFocusFirst)!==!1,F=c.typeaheadSelectOnExact?a.$eval(c.typeaheadSelectOnExact):!1,G=e(c.ngModel),H=e(c.ngModel+"($$$p)"),I=function(b,c){return angular.isFunction(G(a))&&p&&p.$options&&p.$options.getterSetter?H(b,{$$$p:c}):G.assign(b,c)},J=l.parse(c.uibTypeahead),K=a.$new(),L=a.$on("$destroy",function(){K.$destroy()});K.$on("$destroy",L);var M="typeahead-"+K.$id+"-"+Math.floor(1e4*Math.random());b.attr({"aria-autocomplete":"list","aria-expanded":!1,"aria-owns":M});var N=angular.element("
      ");N.attr({id:M,matches:"matches",active:"activeIdx",select:"select(activeIdx)","move-in-progress":"moveInProgress",query:"query",position:"position"}),angular.isDefined(c.typeaheadTemplateUrl)&&N.attr("template-url",c.typeaheadTemplateUrl),angular.isDefined(c.typeaheadPopupTemplateUrl)&&N.attr("popup-template-url",c.typeaheadPopupTemplateUrl);var O=function(){K.matches=[],K.activeIdx=-1,b.attr("aria-expanded",!1)},P=function(a){return M+"-option-"+a};K.$watch("activeIdx",function(a){0>a?b.removeAttr("aria-activedescendant"):b.attr("aria-activedescendant",P(a))});var Q=function(a,b){return K.matches.length>b&&a?a.toUpperCase()===K.matches[b].label.toUpperCase():!1},R=function(c){var d={$viewValue:c};x(a,!0),A(a,!1),f.when(J.source(a,d)).then(function(e){var f=c===o.$viewValue;if(f&&t)if(e&&e.length>0){K.activeIdx=E?0:-1,A(a,!1),K.matches.length=0;for(var g=0;g0?K.activeIdx:K.matches.length)-1,K.$digest()):13===a.which||9===a.which?K.$apply(function(){K.select(K.activeIdx)}):27===a.which&&(a.stopPropagation(),O(),K.$digest())}}),b.bind("blur",function(){z&&K.matches.length&&-1!==K.activeIdx&&!u&&(u=!0,K.$apply(function(){K.select(K.activeIdx)})),t=!1,u=!1});var W=function(a){b[0]!==a.target&&3!==a.which&&0!==K.matches.length&&(O(),j.$$phase||K.$digest())};h.bind("click",W),a.$on("$destroy",function(){h.unbind("click",W),(C||D)&&X.remove(),C&&(angular.element(i).unbind("resize",m),h.find("body").unbind("scroll",m)),N.remove()});var X=d(N)(K);C?h.find("body").append(X):D!==!1?angular.element(h[0].getElementById(D)).append(X):b.after(X),this.init=function(b,c){o=b,p=c,o.$parsers.unshift(function(b){return t=!0,0===s||b&&b.length>=s?v>0?(V(),U(b)):R(b):(x(a,!1),V(),O()),w?b:b?void o.$setValidity("editable",!1):(o.$setValidity("editable",!0),null)}),o.$formatters.push(function(b){var c,d,e={};return w||o.$setValidity("editable",!0),B?(e.$model=b,B(a,e)):(e[J.itemName]=b,c=J.viewMapper(a,e),e[J.itemName]=void 0,d=J.viewMapper(a,e),c!==d?c:b)})}}]).directive("uibTypeahead",function(){return{controller:"UibTypeaheadController",require:["ngModel","^?ngModelOptions","uibTypeahead"],link:function(a,b,c,d){d[2].init(d[0],d[1])}}}).directive("uibTypeaheadPopup",function(){return{scope:{matches:"=",query:"=",active:"=",position:"&",moveInProgress:"=",select:"&"},replace:!0,templateUrl:function(a,b){return b.popupTemplateUrl||"template/typeahead/typeahead-popup.html"},link:function(a,b,c){a.templateUrl=c.templateUrl,a.isOpen=function(){return a.matches.length>0},a.isActive=function(b){return a.active==b},a.selectActive=function(b){a.active=b},a.selectMatch=function(b){a.select({activeIdx:b})}}}}).directive("uibTypeaheadMatch",["$templateRequest","$compile","$parse",function(a,b,c){return{scope:{index:"=",match:"=",query:"="},link:function(d,e,f){var g=c(f.templateUrl)(d.$parent)||"template/typeahead/typeahead-match.html";a(g).then(function(a){b(a.trim())(d,function(a){e.replaceWith(a)})})}}}]).filter("uibTypeaheadHighlight",["$sce","$injector","$log",function(a,b,c){function d(a){return a.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}function e(a){return/<.*>/g.test(a)}var f;return f=b.has("$sanitize"),function(b,g){return!f&&e(b)&&c.warn("Unsafe use of typeahead please use ngSanitize"),b=g?(""+b).replace(new RegExp(d(g),"gi"),"$&"):b,f||(b=a.trustAsHtml(b)),b}}]),angular.module("ui.bootstrap.typeahead").value("$typeaheadSuppressWarning",!1).service("typeaheadParser",["$parse","uibTypeaheadParser","$log","$typeaheadSuppressWarning",function(a,b,c,d){return d||c.warn("typeaheadParser is now deprecated. Use uibTypeaheadParser instead."),b}]).directive("typeahead",["$compile","$parse","$q","$timeout","$document","$window","$rootScope","$uibPosition","typeaheadParser","$log","$typeaheadSuppressWarning",function(a,b,c,d,e,f,g,h,i,j,k){var l=[9,13,27,38,40],m=200;return{require:["ngModel","^?ngModelOptions"],link:function(n,o,p,q){function r(){N.moveInProgress||(N.moveInProgress=!0,N.$digest()),V&&d.cancel(V),V=d(function(){N.matches.length&&s(),N.moveInProgress=!1},m)}function s(){N.position=F?h.offset(o):h.position(o),N.position.top+=o.prop("offsetHeight")}k||j.warn("typeahead is now deprecated. Use uib-typeahead instead.");var t=q[0],u=q[1],v=n.$eval(p.typeaheadMinLength);v||0===v||(v=1);var w,x,y=n.$eval(p.typeaheadWaitMs)||0,z=n.$eval(p.typeaheadEditable)!==!1,A=b(p.typeaheadLoading).assign||angular.noop,B=b(p.typeaheadOnSelect),C=angular.isDefined(p.typeaheadSelectOnBlur)?n.$eval(p.typeaheadSelectOnBlur):!1,D=b(p.typeaheadNoResults).assign||angular.noop,E=p.typeaheadInputFormatter?b(p.typeaheadInputFormatter):void 0,F=p.typeaheadAppendToBody?n.$eval(p.typeaheadAppendToBody):!1,G=p.typeaheadAppendToElementId||!1,H=n.$eval(p.typeaheadFocusFirst)!==!1,I=p.typeaheadSelectOnExact?n.$eval(p.typeaheadSelectOnExact):!1,J=b(p.ngModel),K=b(p.ngModel+"($$$p)"),L=function(a,b){return angular.isFunction(J(n))&&u&&u.$options&&u.$options.getterSetter?K(a,{$$$p:b}):J.assign(a,b)},M=i.parse(p.typeahead),N=n.$new(),O=n.$on("$destroy",function(){N.$destroy()});N.$on("$destroy",O);var P="typeahead-"+N.$id+"-"+Math.floor(1e4*Math.random());o.attr({"aria-autocomplete":"list","aria-expanded":!1,"aria-owns":P});var Q=angular.element("
      ");Q.attr({id:P,matches:"matches",active:"activeIdx",select:"select(activeIdx)","move-in-progress":"moveInProgress",query:"query",position:"position"}),angular.isDefined(p.typeaheadTemplateUrl)&&Q.attr("template-url",p.typeaheadTemplateUrl),angular.isDefined(p.typeaheadPopupTemplateUrl)&&Q.attr("popup-template-url",p.typeaheadPopupTemplateUrl);var R=function(){N.matches=[],N.activeIdx=-1,o.attr("aria-expanded",!1)},S=function(a){return P+"-option-"+a};N.$watch("activeIdx",function(a){0>a?o.removeAttr("aria-activedescendant"):o.attr("aria-activedescendant",S(a))});var T=function(a,b){return N.matches.length>b&&a?a.toUpperCase()===N.matches[b].label.toUpperCase():!1},U=function(a){var b={$viewValue:a};A(n,!0),D(n,!1),c.when(M.source(n,b)).then(function(c){var d=a===t.$viewValue;if(d&&w)if(c&&c.length>0){N.activeIdx=H?0:-1,D(n,!1),N.matches.length=0;for(var e=0;e=v?y>0?(Y(),X(a)):U(a):(A(n,!1),Y(),R()),z?a:a?void t.$setValidity("editable",!1):(t.$setValidity("editable",!0),null)}),t.$formatters.push(function(a){var b,c,d={};return z||t.$setValidity("editable",!0),E?(d.$model=a,E(n,d)):(d[M.itemName]=a,b=M.viewMapper(n,d),d[M.itemName]=void 0,c=M.viewMapper(n,d),b!==c?b:a)}),N.select=function(a){var b,c,e={};x=!0,e[M.itemName]=c=N.matches[a].model,b=M.modelMapper(n,e),L(n,b),t.$setValidity("editable",!0),t.$setValidity("parse",!0),B(n,{$item:c,$model:b,$label:M.viewMapper(n,e)}),R(),N.$eval(p.typeaheadFocusOnSelect)!==!1&&d(function(){o[0].focus()},0,!1)},o.bind("keydown",function(a){if(0!==N.matches.length&&-1!==l.indexOf(a.which)){if(-1===N.activeIdx&&(9===a.which||13===a.which))return R(),void N.$digest();a.preventDefault(),40===a.which?(N.activeIdx=(N.activeIdx+1)%N.matches.length,N.$digest()):38===a.which?(N.activeIdx=(N.activeIdx>0?N.activeIdx:N.matches.length)-1,N.$digest()):13===a.which||9===a.which?N.$apply(function(){N.select(N.activeIdx)}):27===a.which&&(a.stopPropagation(),R(),N.$digest())}}),o.bind("blur",function(){C&&N.matches.length&&-1!==N.activeIdx&&!x&&(x=!0,N.$apply(function(){N.select(N.activeIdx)})),w=!1,x=!1});var Z=function(a){o[0]!==a.target&&3!==a.which&&0!==N.matches.length&&(R(),g.$$phase||N.$digest())};e.bind("click",Z),n.$on("$destroy",function(){e.unbind("click",Z),(F||G)&&$.remove(),F&&(angular.element(f).unbind("resize",r),e.find("body").unbind("scroll",r)),Q.remove()});var $=a(Q)(N);F?e.find("body").append($):G!==!1?angular.element(e[0].getElementById(G)).append($):o.after($)}}}]).directive("typeaheadPopup",["$typeaheadSuppressWarning","$log",function(a,b){return{scope:{matches:"=",query:"=",active:"=",position:"&",moveInProgress:"=",select:"&"},replace:!0,templateUrl:function(a,b){return b.popupTemplateUrl||"template/typeahead/typeahead-popup.html"},link:function(c,d,e){a||b.warn("typeahead-popup is now deprecated. Use uib-typeahead-popup instead."),c.templateUrl=e.templateUrl,c.isOpen=function(){return c.matches.length>0},c.isActive=function(a){return c.active==a},c.selectActive=function(a){c.active=a},c.selectMatch=function(a){c.select({activeIdx:a})}}}}]).directive("typeaheadMatch",["$templateRequest","$compile","$parse","$typeaheadSuppressWarning","$log",function(a,b,c,d,e){return{restrict:"EA",scope:{index:"=",match:"=",query:"="},link:function(f,g,h){d||e.warn("typeahead-match is now deprecated. Use uib-typeahead-match instead.");var i=c(h.templateUrl)(f.$parent)||"template/typeahead/typeahead-match.html";a(i).then(function(a){b(a.trim())(f,function(a){g.replaceWith(a)})})}}}]).filter("typeaheadHighlight",["$sce","$injector","$log","$typeaheadSuppressWarning",function(a,b,c,d){function e(a){return a.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}function f(a){return/<.*>/g.test(a)}var g;return g=b.has("$sanitize"),function(b,h){return d||c.warn("typeaheadHighlight is now deprecated. Use uibTypeaheadHighlight instead."),!g&&f(b)&&c.warn("Unsafe use of typeahead please use ngSanitize"),b=h?(""+b).replace(new RegExp(e(h),"gi"),"$&"):b,g||(b=a.trustAsHtml(b)),b}}]),!angular.$$csp()&&angular.element(document).find("head").prepend(''); \ No newline at end of file diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/.bower.json b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/.bower.json new file mode 100644 index 00000000..40b8d739 --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/.bower.json @@ -0,0 +1,61 @@ +{ + "name": "angular-patternfly", + "version": "3.18.1", + "authors": [ + "Red Hat" + ], + "description": "Angular extension of the PatternFly project.", + "keywords": [ + "angular", + "patternfly" + ], + "license": "Apache-2.0", + "ignore": [ + "node_modules", + "lib", + "Gruntfile.js", + "package.json", + ".bowerrc", + ".editorconfig", + ".gitignore", + ".jshintrc", + "karma.conf.js", + "server.js", + "misc", + "src", + "README.md", + "bower.json", + ".bower.json", + "grunt-ngdocs-index.tmpl" + ], + "main": [ + "dist/angular-patternfly.js", + "dist/styles/angular-patternfly.css" + ], + "repository": { + "type": "git", + "url": "git://github.com/patternfly/angular-patternfly.git" + }, + "dependencies": { + "angular": "1.3.0 - 1.5.*", + "angular-animate": "1.3.0 - 1.5.*", + "angular-sanitize": "1.3.0 - 1.5.*", + "angular-bootstrap": "0.14.x", + "lodash": "3.x", + "patternfly": "~3.18.1" + }, + "devDependencies": { + "angular-mocks": "1.3.0 - 1.5.*", + "angular-ui-router": "1.0.0-beta.3" + }, + "homepage": "https://github.com/patternfly/angular-patternfly", + "_release": "3.18.1", + "_resolution": { + "type": "version", + "tag": "v3.18.1", + "commit": "c8c8127a1be309d99e322163a76aaf3c304e3963" + }, + "_source": "https://github.com/patternfly/angular-patternfly.git", + "_target": "~3.18.0", + "_originalSource": "angular-patternfly" +} \ No newline at end of file diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/.gitattributes b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/.gitattributes new file mode 100644 index 00000000..fbf9358b --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/.gitattributes @@ -0,0 +1,14 @@ +# Set the default behavior, in case people don't have core.autocrlf set. +* text=auto + +# Explicitly declare text files you want to always be normalized and converted +# to native line endings on checkout. +*.c text +*.h text + +# Declare files that will always have CRLF line endings on checkout. +*.sln text eol=crlf + +# Denote all files that are truly binary and should not be modified. +*.png binary +*.jpg binary diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/.htmlhintrc b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/.htmlhintrc new file mode 100644 index 00000000..d97f3549 --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/.htmlhintrc @@ -0,0 +1,12 @@ +{ + "tagname-lowercase": true, + "attr-lowercase": true, + "attr-value-doublequotes": true, + "tag-pair": true, + "tag-self-close": true, + "id-unique": true, + "src-not-empty": true, + "style-disabled": true, + "img-alt-require": true, + "spec-char-escape": true +} diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/.npmignore b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/.npmignore new file mode 100644 index 00000000..efb08d73 --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/.npmignore @@ -0,0 +1,28 @@ +# generic (system) files/extensions we don't want +*.seed +*.log +*.csv +*.dat +*.out +*.pid +*.gz +.idea/* +*.iml +*.DS_Store +lib-cov +pids +logs +results +test-results.xml +dist/docs/components +dist/docs/font* +dist/docs/grunt-styles +dist/docs/img +dist/docs/index.html + + +/docs +node_modules +npm-debug.log +lib +.bower \ No newline at end of file diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/.openshift/cron/README.cron b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/.openshift/cron/README.cron new file mode 100644 index 00000000..ac77f787 --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/.openshift/cron/README.cron @@ -0,0 +1,27 @@ +Run scripts or jobs on a periodic basis +======================================= +Any scripts or jobs added to the minutely, hourly, daily, weekly or monthly +directories will be run on a scheduled basis (frequency is as indicated by the +name of the directory) using run-parts. + +run-parts ignores any files that are hidden or dotfiles (.*) or backup +files (*~ or *,) or named *.{rpmsave,rpmorig,rpmnew,swp,cfsaved} + +The presence of two specially named files jobs.deny and jobs.allow controls +how run-parts executes your scripts/jobs. + jobs.deny ===> Prevents specific scripts or jobs from being executed. + jobs.allow ===> Only execute the named scripts or jobs (all other/non-named + scripts that exist in this directory are ignored). + +The principles of jobs.deny and jobs.allow are the same as those of cron.deny +and cron.allow and are described in detail at: + http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/ch-Automating_System_Tasks.html#s2-autotasks-cron-access + +See: man crontab or above link for more details and see the the weekly/ + directory for an example. + +PLEASE NOTE: The Cron cartridge must be installed in order to run the configured jobs. + +For more information about cron, consult the documentation: +http://openshift.github.io/documentation/oo_cartridge_guide.html#cron +http://openshift.github.io/documentation/oo_user_guide.html#cron diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/.openshift/cron/weekly/README b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/.openshift/cron/weekly/README new file mode 100644 index 00000000..7c3e659f --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/.openshift/cron/weekly/README @@ -0,0 +1,16 @@ +Run scripts or jobs on a weekly basis +===================================== +Any scripts or jobs added to this directory will be run on a scheduled basis +(weekly) using run-parts. + +run-parts ignores any files that are hidden or dotfiles (.*) or backup +files (*~ or *,) or named *.{rpmsave,rpmorig,rpmnew,swp,cfsaved} and handles +the files named jobs.deny and jobs.allow specially. + +In this specific example, the chronograph script is the only script or job file +executed on a weekly basis (due to white-listing it in jobs.allow). And the +README and chrono.dat file are ignored either as a result of being black-listed +in jobs.deny or because they are NOT white-listed in the jobs.allow file. + +For more details, please see ../README.cron file. + diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/.openshift/cron/weekly/chronograph b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/.openshift/cron/weekly/chronograph new file mode 100755 index 00000000..61de949f --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/.openshift/cron/weekly/chronograph @@ -0,0 +1,3 @@ +#!/bin/bash + +echo "`date`: `cat $(dirname \"$0\")/chrono.dat`" diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/.openshift/cron/weekly/jobs.allow b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/.openshift/cron/weekly/jobs.allow new file mode 100644 index 00000000..8d32abc7 --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/.openshift/cron/weekly/jobs.allow @@ -0,0 +1,12 @@ +# +# Script or job files listed in here (one entry per line) will be +# executed on a weekly-basis. +# +# Example: The chronograph script will be executed weekly but the README +# and chrono.dat files in this directory will be ignored. +# +# The README file is actually ignored due to the entry in the +# jobs.deny which is checked before jobs.allow (this file). +# +chronograph + diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/.openshift/cron/weekly/jobs.deny b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/.openshift/cron/weekly/jobs.deny new file mode 100644 index 00000000..73c94500 --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/.openshift/cron/weekly/jobs.deny @@ -0,0 +1,7 @@ +# +# Any script or job files listed in here (one entry per line) will NOT be +# executed (read as ignored by run-parts). +# + +README + diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/.openshift/markers/hot_deploy b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/.openshift/markers/hot_deploy new file mode 100644 index 00000000..e69de29b diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/.travis.yml b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/.travis.yml new file mode 100644 index 00000000..395f56df --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/.travis.yml @@ -0,0 +1,36 @@ +language: node_js +node_js: + - '4' + +env: + global: + - ENCRYPTION_LABEL: "aa286ccd339e" + - COMMIT_AUTHOR_EMAIL: "patternfly-build@redhat.com" + - TRIGGER_REPO_SLUG: "patternfly/angular-patternfly" + - TRIGGER_REPO_BRANCH: "master" + +before_install: + - if [[ `npm -v` != 3* ]]; then npm i -g npm@3; fi + - npm install -g bower grunt-cli + - npm install git+https://github.com/patternfly/patternfly-eng-release.git + +install: true + +script: + - sh -x ./node_modules/patternfly-eng-release/scripts/_build.sh -a + +after_success: + - ./scripts/publish-ghpages.sh -t docs + +# OpenShift expects its deployment branch to be "master-dist". This can be changed using: +# rhc app-configure patternfly/angular --deployment-branch master-dist +deploy: + provider: openshift + user: "$OPENSHIFT_USER" + password: "$OPENSHIFT_PWD" + domain: "patternfly" + app: angular + skip_cleanup: true + on: # The branch and repo that triggered the build + branch: master + condition: $TRAVIS_REPO_SLUG = "patternfly/angular-patternfly" diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/LICENSE.txt b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/LICENSE.txt new file mode 100644 index 00000000..cc698cdf --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/LICENSE.txt @@ -0,0 +1,205 @@ +Modifications to Bootstrap are copyright 2013 Red Hat, Inc. and licensed +under the Apache License 2.0. + + + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/bower.json b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/bower.json new file mode 100644 index 00000000..83de10a1 --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/bower.json @@ -0,0 +1,51 @@ +{ + "name": "angular-patternfly", + "version": "3.18.1", + "authors": [ + "Red Hat" + ], + "description": "Angular extension of the PatternFly project.", + "keywords": [ + "angular", + "patternfly" + ], + "license": "Apache-2.0", + "ignore": [ + "node_modules", + "lib", + "Gruntfile.js", + "package.json", + ".bowerrc", + ".editorconfig", + ".gitignore", + ".jshintrc", + "karma.conf.js", + "server.js", + "misc", + "src", + "README.md", + "bower.json", + ".bower.json", + "grunt-ngdocs-index.tmpl" + ], + "main": [ + "dist/angular-patternfly.js", + "dist/styles/angular-patternfly.css" + ], + "repository": { + "type": "git", + "url": "git://github.com/patternfly/angular-patternfly.git" + }, + "dependencies": { + "angular": "1.3.0 - 1.5.*", + "angular-animate": "1.3.0 - 1.5.*", + "angular-sanitize": "1.3.0 - 1.5.*", + "angular-bootstrap": "0.14.x", + "lodash": "3.x", + "patternfly": "~3.18.1" + }, + "devDependencies": { + "angular-mocks": "1.3.0 - 1.5.*", + "angular-ui-router": "1.0.0-beta.3" + } +} diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/deploy_key.enc b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/deploy_key.enc new file mode 100644 index 0000000000000000000000000000000000000000..4af21eb2926631388e6139fbf08c6ef6a88d07a0 GIT binary patch literal 3248 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 literal 0 HcmV?d00001 diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/angular-patternfly.js b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/angular-patternfly.js new file mode 100644 index 00000000..82f52c99 --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/angular-patternfly.js @@ -0,0 +1,10378 @@ +/** + * @name patternfly card + * + * @description + * Card module for patternfly. + * + */ +angular.module('patternfly.card', []); +;/** + * @name patternfly + * + * @description + * Charts module for patternfly. Must Include d3.js and c3.js to use + * + */ +angular.module('patternfly.charts', ['patternfly.utils', 'ui.bootstrap', 'ngSanitize']); + +;/** + * @name patternfly card + * + * @description + * Filters module for patternfly. + * + */ +angular.module('patternfly.filters', ['patternfly.select', 'ui.bootstrap']); +;/** + * @name patternfly.form + * + * @description + * Module for formting related functionality, primarily filters. + */ +angular.module('patternfly.form', []); +;/** + * @name patternfly + * + * @description + * Modal module for patternfly. + * + */ +angular.module('patternfly.modals', ['ui.bootstrap.modal', 'ui.bootstrap.tpls']); +;/** + * @name patternfly navigation + * + * @description + * Navigation module for patternfly. + * + */ +angular.module('patternfly.navigation', ['ui.bootstrap']); +;/** + * @name patternfly notification + * + * @description + * Notification module for patternfly. + * + */ +angular.module('patternfly.notification', ['patternfly.utils']); +;/** + * @name patternfly + * + * @description + * Base module for patternfly. + */ +angular.module('patternfly', [ + 'patternfly.autofocus', + 'patternfly.card', + 'patternfly.filters', + 'patternfly.form', + 'patternfly.modals', + 'patternfly.navigation', + 'patternfly.notification', + 'patternfly.select', + 'patternfly.sort', + 'patternfly.toolbars', + 'patternfly.utils', + 'patternfly.validation', + 'patternfly.views', + 'patternfly.wizard' +]); + +;/** + * @name patternfly card + * + * @description + * Sort module for patternfly. + * + */ +angular.module('patternfly.sort', ['ui.bootstrap']); +;/** + * @name patternfly toolbars + * + * @description + * Filters module for patternfly. + * + */ +angular.module('patternfly.toolbars', [ + 'patternfly.utils', + 'patternfly.filters', + 'patternfly.sort', + 'patternfly.views']); +; +angular.module( 'patternfly.utils', ['ui.bootstrap'] ); +;/** + * @name patternfly + * + * @description + * Views module for patternfly. + * + */ +angular.module('patternfly.views', ['patternfly.utils', 'patternfly.filters', 'patternfly.sort', 'patternfly.charts']); +;/** + * @name PatternFly Wizard + * + * @description + * Wizard module. + * + */ +angular.module('patternfly.wizard', ['ui.bootstrap.modal', + 'ui.bootstrap.tpls', + 'patternfly.form']); + + +;/** + * @ngdoc directive + * @name patternfly.autofocus:pfFocused + * @restrict A + * @element ANY + * @param {expression=} pfFocused If the expression is true, the element is focused and selected (if possible). + * + * @description + * The focus on element is evaluated from given expression. If the expression provided as an attribute to this directive + * is evaluated as true, the element is selected (and focused). + * + * @example + + + +
      +
      + +
      + +
      + +
      +
      + +
      + +
      + +
      +
      + +
      +
      +
      + +
      + */ + +angular.module('patternfly.autofocus', []).directive('pfFocused', ["$timeout", function ($timeout) { + 'use strict'; + + return { + restrict: 'A', + link: function (scope, element, attrs) { + scope.$watch(attrs.pfFocused, function (newValue) { + $timeout(function () { + if (newValue) { + element[0].focus(); + if (element[0].select) { + element[0].select(); + } + } + }); + }); + } + }; +}]); +;/** + * @ngdoc directive + * @name patternfly.card.directive:pfAggregateStatusCard + * @restrict A + * @element ANY + * @param {object} status Status configuration information
      + *
        + *
      • .title - the main title of the aggregate status card + *
      • .count - the number count of the main statuses + *
      • .href - the href to navigate to if one clicks on the title or count + *
      • .iconClass - an icon to display to the left of the count + *
      • .iconImage - an image to display to the left of the count + *
      • .notifications - an array of status icons & counts + *
          + *
        • .iconClass - an icon to display to the right of the notification count + *
        • .iconImage - an image to display to the left of the notification count + *
        • .count - the number count of the notification status + *
        • .href - href to navigate to if one clicks on the notification status icon or count + *
        + *
      + * When layout='mini', only one notification can be specified:
      + *
        + *
      • ... + *
      • .notification - an object of containing a single notification icon & count + *
          + *
        • .iconClass - an icon to display to the right of the notification count + *
        • .iconImage - an image to display to the left of the notification count + *
        • .count - the number count of the notification status + *
        • .href - href to navigate to if one clicks on the notification status icon or count + *
        + *
      + * @param {boolean=} show-top-border Show/hide the top border, true shows top border, false (default) hides top border + * @param {string=} layout Various alternative layouts the aggregate status card may have:
      + *
        + *
      • 'mini' displays a mini aggregate status card. Note: when using 'mini' layout, only one notification can be specified in the status object + *
      • 'tall' displays a tall aggregate status card. This equals the depreciated 'alt-layout' param.
      • + *
      + * @deprecated {boolean=} alt-layout Display the aggregate status card in a 'alternate tall' layout. false (default) displays normal layout, true displays tall layout + * + * @description + * Directive for easily displaying status information + * + * @example + + + +
      +
      + +
      +
      + +
      +
      + +
      +
      +
      + +
      +
      + + (depreciated, use layout = 'tall' instead) +

      +
      +
      +
      +
      + + + angular.module( 'patternfly.card' ).controller( 'CardDemoCtrl', function( $scope ) { + $scope.status = { + "title":"Nodes", + "count":793, + "href":"#", + "iconClass": "fa fa-shield", + "notifications":[ + { + "iconClass":"pficon pficon-error-circle-o", + "count":4, + "href":"#" + }, + { + "iconClass":"pficon pficon-warning-triangle-o", + "count":1 + } + ] + }; + + $scope.aggStatusAlt = { + "title":"Providers", + "count":3, + "notifications":[ + { + "iconImage":"img/kubernetes.svg", + "count":1, + "href":"#" + }, + { + "iconImage":"img/OpenShift-logo.svg", + "count":2, + "href":"#" + } + ] + }; + + $scope.miniAggStatus = { + "iconClass":"pficon pficon-container-node", + "title":"Nodes", + "count":52, + "href":"#", + "notification": { + "iconClass":"pficon pficon-error-circle-o", + "count":3 + } + }; + + $scope.miniAggStatus2 = { + "iconClass":"pficon pficon-cluster", + "title":"Adipiscing", + "count":9, + "href":"#", + "notification":{ + "iconClass":"pficon pficon-ok" + } + }; + }); + + +
      + */ + +angular.module( 'patternfly.card' ).directive('pfAggregateStatusCard', function () { + 'use strict'; + return { + restrict: 'A', + scope: { + status: '=', + showTopBorder: '@?', + altLayout: '@?', + layout: '@?' + }, + templateUrl: 'card/aggregate-status/aggregate-status-card.html', + link: function (scope) { + scope.shouldShowTopBorder = (scope.showTopBorder === 'true'); + scope.isAltLayout = (scope.altLayout === 'true' || scope.layout === 'tall'); + scope.isMiniLayout = (scope.layout === 'mini'); + } + }; +}); +;/** + * @ngdoc directive + * @name patternfly.card.directive:pfCard - Utilization + * @restrict A + * @element ANY + * @param {string} headTitle Title for the card + * @param {string=} subTitle Sub-Title for the card + * @param {boolean=} showTopBorder Show/Hide the blue top border. True shows top border, false (default) hides top border + * @param {boolean=} showTitlesSeparator Show/Hide the grey line between the title and sub-title. + * True (default) shows the line, false hides the line + * @param {object=} footer footer configuration properties:
      + *
        + *
      • .iconClass - (optional) the icon to show on the bottom left of the footer panel + *
      • .text - (optional) the text to show on the bottom left of the footer panel, to the right of the icon + *
      • .href - (optional) the href link to navigate to when the footer href is clicked + *
      • .callBackFn - (optional) user defined function to call when the footer href is clicked + *
      + * *Note: If a href link and a callBackFn are specified, the href link will be called + * @param {object=} filter filter configuration properties:
      + *
        + *
      • .filters - drop down items for the filter. + *
        + *  Ex:  'filters' : [{label:'Last 30 Days', value:'30'},
        + *                    {label:'Last 15 Days', value:'15'},
        + *                    {label:'Today', value:'today'}]
        + *
      • .defaultFilter - integer, 0 based index into the filters array + *
      • .callBackFn - user defined function to call when a filter is selected + *
      + * @description + * Directive for easily displaying a card with html content + * + * @example + + + +
      + +
      +
      +
      +
      +
      +
      +
      +
      + + angular.module( 'demo', ['patternfly.charts', 'patternfly.card'] ).controller( 'ChartCtrl', function( $scope ) { + + $scope.title2 = 'Memory'; + $scope.units2 = 'GB'; + + $scope.data2 = { + 'used': '25', + 'total': '100' + }; + + $scope.title3 = 'CPU Usage'; + $scope.units3 = 'MHz'; + + $scope.data3 = { + 'used': '420', + 'total': '500', + }; + + $scope.title4 = 'Disk Usage'; + $scope.units4 = 'TB'; + $scope.data4 = { + 'used': '350', + 'total': '500', + }; + + $scope.title5 = 'Disk I/O'; + $scope.units5 = 'I/Ops'; + $scope.data5 = { + 'used': '450', + 'total': '500', + }; + + $scope.layoutInline = { + 'type': 'inline' + }; + }); + +
      + */ +angular.module('patternfly.card').directive('pfCard', function () { + 'use strict'; + + return { + restrict: 'A', + transclude: true, + templateUrl: 'card/basic/card.html', + scope: { + headTitle: '@', + subTitle: '@?', + showTopBorder: '@?', + showTitlesSeparator: '@?', + footer: '=?', + filter: '=?' + }, + controller: ["$scope", function ($scope) { + if ($scope.filter && !$scope.currentFilter) { + if ($scope.filter.defaultFilter) { + $scope.currentFilter = $scope.filter.filters[$scope.filter.defaultFilter]; + } else { + $scope.currentFilter = $scope.filter.filters[0]; + } + } + + $scope.footerCallBackFn = function () { + $scope.footerCallBackResult = $scope.footer.callBackFn(); + }; + + $scope.filterCallBackFn = function (f) { + $scope.currentFilter = f; + if ($scope.filter.callBackFn) { + $scope.filterCallBackResult = $scope.filter.callBackFn(f); + } + }; + + $scope.showHeader = function () { + return ($scope.headTitle || $scope.showFilterInHeader()); + }; + + $scope.showFilterInHeader = function () { + return ($scope.filter && $scope.filter.filters && $scope.filter.position && $scope.filter.position === 'header'); + }; + + $scope.showFilterInFooter = function () { + return ($scope.filter && $scope.filter.filters && (!$scope.filter.position || $scope.filter.position === 'footer')); + }; + }], + link: function (scope) { + scope.shouldShowTitlesSeparator = (!scope.showTitlesSeparator || scope.showTitlesSeparator === 'true'); + } + }; +}); +;/** + * @ngdoc directive + * @name patternfly.card.directive:pfCard - Timeframe Filters + * @restrict A + * @element ANY + * @param {string} headTitle Title for the card + * @param {string=} subTitle Sub-Title for the card + * @param {boolean=} showTopBorder Show/Hide the blue top border. True shows top border, false (default) hides top border + * @param {boolean=} showTitlesSeparator Show/Hide the grey line between the title and sub-title. + * True (default) shows the line, false hides the line + * @param {object=} footer footer configuration properties:
      + *
        + *
      • .iconClass - (optional) the icon to show on the bottom left of the footer panel + *
      • .text - (optional) the text to show on the bottom left of the footer panel, to the right of the icon + *
      • .href - (optional) the href link to navigate to when the footer href is clicked + *
      • .callBackFn - (optional) user defined function to call when the footer href is clicked + *
      + * *Note: If a href link and a callBackFn are specified, the href link will be called + * @param {object=} filter filter configuration properties:
      + *
        + *
      • .filters - drop down items for the filter. + *
        + *  Ex:  'filters' : [{label:'Last 30 Days', value:'30'},
        + *                    {label:'Last 15 Days', value:'15'},
        + *                    {label:'Today', value:'today'}]
        + *
      • .defaultFilter - integer, 0 based index into the filters array + *
      • .callBackFn - user defined function to call when a filter is selected + *
      + * @description + * Directive for easily displaying a card with html content + * + * @example + + + +
      + +
      + Card Contents +
      + +
      + Card Contents +
      +
      +
      + + angular.module( 'demo', ['patternfly.charts', 'patternfly.card'] ).controller( 'ChartCtrl', function( $scope ) { + + $scope.footerConfig = { + 'iconClass' : 'fa fa-flag', + 'text' : 'View All Events', + 'callBackFn': function () { + alert("Footer Callback Fn Called"); + } + } + + $scope.filterConfigHeader = { + 'filters' : [{label:'Last 30 Days', value:'30'}, + {label:'Last 15 Days', value:'15'}, + {label:'Today', value:'today'}], + 'callBackFn': function (f) { + alert("Header Filter Callback Fn Called for '" + f.label + "' value = " + f.value); + }, + 'position' : 'header' + } + + $scope.filterConfig = { + 'filters' : [{label:'Last 30 Days', value:'30'}, + {label:'Last 15 Days', value:'15'}, + {label:'Today', value:'today'}], + 'callBackFn': function (f) { + alert("Filter Callback Fn Called for '" + f.label + "' value = " + f.value); + }, + 'defaultFilter' : '1' + } + }); + +
      + */ +;/** + * @ngdoc directive + * @name patternfly.card.directive:pfCard - Trends + * @restrict A + * @element ANY + * @param {string} headTitle Title for the card + * @param {string=} subTitle Sub-Title for the card + * @param {boolean=} showTopBorder Show/Hide the blue top border. True shows top border, false (default) hides top border + * @param {boolean=} showTitlesSeparator Show/Hide the grey line between the title and sub-title. + * True (default) shows the line, false hides the line + * @param {object=} footer footer configuration properties:
      + *
        + *
      • .iconClass - (optional) the icon to show on the bottom left of the footer panel + *
      • .text - (optional) the text to show on the bottom left of the footer panel, to the right of the icon + *
      • .href - (optional) the href link to navigate to when the footer href is clicked + *
      • .callBackFn - (optional) user defined function to call when the footer href is clicked + *
      + * *Note: If a href link and a callBackFn are specified, the href link will be called + * @param {object=} filter filter configuration properties:
      + *
        + *
      • .filters - drop down items for the filter. + *
        + *  Ex:  'filters' : [{label:'Last 30 Days', value:'30'},
        + *                    {label:'Last 15 Days', value:'15'},
        + *                    {label:'Today', value:'today'}]
        + *
      • .defaultFilter - integer, 0 based index into the filters array + *
      • .callBackFn - user defined function to call when a filter is selected + *
      + * @description + * Directive for easily displaying a card with html content + * + * @example + + + +
      + +
      +
      +
      + +
      +
      +
      +
      +
      +
      + +
      + + angular.module( 'demo', ['patternfly.charts', 'patternfly.card'] ).controller( 'ChartCtrl', function( $scope ) { + + $scope.footerConfig = { + 'iconClass' : 'fa fa-flag', + 'text' : 'View All Events', + 'callBackFn': function () { + alert("Footer Callback Fn Called"); + } + } + + $scope.filterConfig = { + 'filters' : [{label:'Last 30 Days', value:'30'}, + {label:'Last 15 Days', value:'15'}, + {label:'Today', value:'today'}], + 'callBackFn': function (f) { + alert("Filter Callback Fn Called for '" + f.label + "' value = " + f.value); + }, + 'defaultFilter' : '1' + } + + var today = new Date(); + var dates = ['dates']; + for (var d = 20 - 1; d >= 0; d--) { + dates.push(new Date(today.getTime() - (d * 24 * 60 * 60 * 1000))); + } + + $scope.configSingle = { + 'chartId' : 'example2TrendsChart', + 'title' : 'Storage Capacity', + 'layout' : 'compact', + 'valueType' : 'actual', + 'units' : 'TB', + 'tooltipType' : 'percentage' + }; + + $scope.dataSingle = { + 'total': '250', + 'xData': dates, + 'yData': ['used', '90', '20', '30', '20', '20', '10', '14', '20', '25', '68', '44', '56', '78', '56', '67', '88', '76', '65', '87', '76'] + }; + + $scope.configVirtual = { + 'chartId' : 'virtualTrendsChart', + 'layout' : 'inline', + 'trendLabel' : 'Virtual Disk I/O', + 'units' : 'GB', + 'tooltipType' : 'percentage' + }; + + $scope.dataVirtual = { + 'total': '250', + 'xData': dates, + 'yData': ['used', '90', '20', '30', '20', '20', '10', '14', '20', '25', '68', '44', '56', '78', '56', '67', '88', '76', '65', '87', '76'] + }; + + $scope.configPhysical = { + 'chartId' : 'physicalTrendsChart', + 'layout' : 'inline', + 'trendLabel' : 'Physical Disk I/O', + 'units' : 'MHz', + 'tooltipType' : 'percentage' + }; + + $scope.dataPhysical = { + 'total': '250', + 'xData': dates, + 'yData': ['used', '20', '20', '35', '20', '20', '87', '14', '20', '25', '28', '44', '56', '78', '56', '67', '88', '76', '65', '87', '16'] + }; + + $scope.configMemory = { + 'chartId' : 'memoryTrendsChart', + 'layout' : 'inline', + 'trendLabel' : 'Memory Utilization', + 'units' : 'GB', + 'tooltipType' : 'percentage' + }; + + $scope.dataMemory = { + 'total': '250', + 'xData': dates, + 'yData': ['used', '20', '20', '35', '70', '20', '87', '14', '95', '25', '28', '44', '56', '66', '16', '67', '88', '76', '65', '87', '56'] + }; + + $scope.actionBarConfig = { + 'iconClass' : 'fa fa-plus-circle', + 'text' : 'Add New Cluster', + 'callBackFn': function () { + alert("Footer Callback Fn Called"); + } + } + }); + +
      + */ +;(function () { + 'use strict'; + + var patternflyDefaults = $().c3ChartDefaults(); + + angular.module('patternfly.charts').constant('c3ChartDefaults', { + getDefaultColors: patternflyDefaults.getDefaultColors, + getDefaultDonut: patternflyDefaults.getDefaultDonut, + getDefaultDonutSize: patternflyDefaults.getDefaultDonutSize, + getDefaultDonutColor: patternflyDefaults.getDefaultDonutColors, + getDefaultDonutLegend: patternflyDefaults.getDefaultDonutLegend, + getDefaultDonutConfig: patternflyDefaults.getDefaultDonutConfig, + getDefaultSparklineArea: patternflyDefaults.getDefaultSparklineArea, + getDefaultSparklineSize: patternflyDefaults.getDefaultSparklineSize, + getDefaultSparklineAxis: patternflyDefaults.getDefaultSparklineAxis, + getDefaultSparklineColor: patternflyDefaults.getDefaultColors, + getDefaultSparklineLegend: patternflyDefaults.getDefaultSparklineLegend, + getDefaultSparklinePoint: patternflyDefaults.getDefaultSparklinePoint, + getDefaultSparklineTooltip: patternflyDefaults.getDefaultSparklineTooltip, + getDefaultSparklineConfig: patternflyDefaults.getDefaultSparklineConfig, + getDefaultLineConfig: patternflyDefaults.getDefaultLineConfig + }); +})(); +;/** + * @ngdoc directive + * @name patternfly.charts.directive:pfC3Chart + * + * @description + * Directive for wrapping c3 library + * + * Note: The 'patternfly.charts' module is not a dependency in the default angular 'patternfly' module. + * In order to use patternfly charts you must add 'patternfly.charts' as a dependency in your application. + * + * + * @param {string} id the ID of the container that the chart should bind to + * @param {expression} config the c3 configuration options for the chart + * @param {function (chart))=} getChartCallback the callback user function to be called once the chart is generated, containing the c3 chart object + * + * @example + + + +
      +
      + +
      + Total = {{total}}, Used = {{used}}, Available = {{available}} +
      + + +
      + + +
      +
      +
      + + + angular.module( 'patternfly.charts' ).controller( 'ChartCtrl', function( $scope ) { + $scope.used = 950; + $scope.total = 1000; + $scope.available = $scope.total - $scope.used; + + $scope.chartConfig = $().c3ChartDefaults().getDefaultDonutConfig('MHz Used'); + $scope.chartConfig.data = { + type: "donut", + columns: [ + ["Used", $scope.used], + ["Available", $scope.total - $scope.used] + ], + groups: [ + ["used", "available"] + ], + order: null + }; + + $scope.getChart = function (chart) { + $scope.chart = chart; + } + + $scope.focusUsed = function () { + $scope.chart.focus("Used"); + } + + $scope.updateAvailable = function (val) { + $scope.available = $scope.total - $scope.used; + } + + $scope.submitform = function (val) { + $scope.used = val; + $scope.updateAvailable(); + $scope.chartConfig.data.columns = [["Used",$scope.used],["Available",$scope.available]]; + }; + }); + +
      + */ +(function () { + 'use strict'; + + angular.module('patternfly.charts').directive('pfC3Chart', ["$timeout", function ($timeout) { + return { + restrict: 'A', + scope: { + config: '=', + getChartCallback: '=' + }, + template: '
      ', + replace: true, + link: function (scope, element, attrs) { + scope.$watch('config', function () { + $timeout(function () { + // store the chart object + var chart; + //generate c3 chart data + var chartData = scope.config; + if (chartData) { + chartData.bindto = '#' + attrs.id; + chart = c3.generate(chartData); + if (scope.getChartCallback) { + scope.getChartCallback(chart); + } + } + }); + }, true); + } + }; + }]); +}()); +;/** + * @ngdoc directive + * @name patternfly.charts.directive:pfDonutPctChart + * + * @description + * Directive for rendering a percentage used donut/radial chart. The Used Percentage fill starts at 12 o’clock and + * moves clockwise. Whatever portion of the donut not Used, will be represented as Available, and rendered as a + * gray fill. + * There are three possible fill colors for Used Percentage, dependent on whether or not there are thresholds:
      + *
        + *
      • When no thresholds exist, or if the used percentage has not surpassed any thresholds, the indicator is blue. + *
      • When the used percentage has surpassed the warning threshold, but not the error threshold, the indicator is orange. + *
      • When the used percentage has surpassed the error threshold, the indicator is is red. + *
      + * The directive will calculate the Available Percentage (Total - Used), and display it as a grey radial fill. + * + *

      + * See http://c3js.org/reference.html for a full list of C3 chart options. + * + * @param {object} config configuration properties for the donut chart:
      + *
        + *
      • .chartId - the unique id of the donut chart + *
      • .units - unit label for values, ex: 'MHz','GB', etc.. + *
      • .thresholds - warning and error percentage thresholds used to determine the Usage Percentage fill color (optional) + *
      • .tooltipFn(d) - user defined function to customize the tool tip (optional) + *
      • .centerLabelFn - user defined function to customize the text of the center label (optional) + *
      • .onClickFn(d,i) - user defined function to handle when donut arc is clicked upon. + *
      + * + * @param {object} data the Total and Used values for the donut chart. Available is calculated as Total - Used.
      + *
        + *
      • .used - number representing the amount used + *
      • .total - number representing the total amount + *
      • .dataAvailable - Flag if there is data available - default: true + *
      + * + * @param {string=} center-label specifies the contents of the donut's center label.
      + * Values: + *
        + *
      • 'used' - displays the Used amount in the center label (default) + *
      • 'available' - displays the Available amount in the center label + *
      • 'percent' - displays the Usage Percent of the Total amount in the center label + *
      • 'none' - does not display the center label + *
      + * + * @param {int=} chartHeight height of the donut chart + + * @example + + +
      +
      +
      +
      + +
      +
      +
      + +
      +
      +
      + +
      +
      +
      + +
      +
      +
      + +
      +
      +
      +
      +
      + +
      +
      +
      + +
      +
      +
      + +
      +
      +
      + +
      +
      +
      + +
      +
      + +
      +
      +
      +
      +
      + +
      +
      +
      + +
      +
      +
      +
      +
      +
      +
      + +
      +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +
      +
      +
      +
      + + + angular.module( 'patternfly.charts' ).controller( 'ChartCtrl', function( $scope ) { + $scope.configErr = { + 'chartId': 'chartErr', + 'units': 'GB', + 'thresholds':{'warning':'60','error':'90'} + }; + + $scope.dataErr = { + 'used': '950', + 'total': '1000' + }; + + $scope.configWarn = { + 'chartId': 'chartWarn', + 'units': 'GB', + 'thresholds':{'warning':'60','error':'90'} + }; + + $scope.dataWarn = { + 'used': '650', + 'total': '1000' + }; + + $scope.configOk = { + 'chartId': 'chartOk', + 'units': 'GB', + 'thresholds':{'warning':'60','error':'90'} + }; + + $scope.dataOk = { + 'used': '550', + 'total': '1000' + }; + + $scope.configNoThresh = { + 'chartId': 'chartNoThresh', + 'units': 'GB', + }; + + $scope.dataNoThresh = { + 'used': '750', + 'total': '1000' + }; + + $scope.usedConfig = { + 'chartId': 'usedChart', + 'units': 'GB', + 'thresholds':{'warning':'60','error':'90'} + }; + + $scope.usedData = { + 'used': '350', + 'total': '1000' + }; + + $scope.usedLabel = "used"; + + $scope.availConfig = { + 'chartId': 'availChart', + 'units': 'GB', + 'thresholds':{'warning':'60','error':'90'} + }; + + $scope.availData = { + 'used': '350', + 'total': '1000' + }; + + $scope.availLabel = "available"; + + $scope.pctConfig = { + 'chartId': 'pctChart', + 'units': 'GB', + 'thresholds':{'warning':'60','error':'90'} + }; + + $scope.pctData = { + 'used': '350', + 'total': '1000' + }; + + $scope.pctLabel = "percent"; + + $scope.noneConfig = { + 'chartId': 'noneChart', + 'units': 'GB', + 'thresholds':{'warning':'60','error':'90'} + }; + + $scope.noneData = { + 'used': '350', + 'total': '1000' + }; + + $scope.noLabel = "none"; + + $scope.custConfig = { + 'chartId': 'custChart', + 'units': 'MHz', + 'thresholds':{'warning':'60','error':'90'}, + "legend":{"show":true}, + 'tooltipFn': function (d) { + return '' + + d[0].value + ' ' + d[0].name + + ''; + }, + 'centerLabelFn': function () { + return $scope.custData.available + " GB"; + }, + 'onClickFn': function (d, i) { + alert("You Clicked On The Donut!"); + } + }; + + $scope.custData = { + 'dataAvailable': true, + 'used': '670', + 'total': '1000' + }; + + $scope.custChartHeight = 200; + }); + +
      + */ +angular.module('patternfly.charts').directive('pfDonutPctChart', ["pfUtils", "$timeout", function (pfUtils, $timeout) { + 'use strict'; + + return { + restrict: 'A', + scope: { + config: '=', + data: '=', + chartHeight: '=?', + centerLabel: '=?' + }, + replace: true, + templateUrl: 'charts/donut/donut-pct-chart.html', + controller: ['$scope', + function ($scope) { + var donutTooltip; + + $scope.donutChartId = 'donutChart'; + if ($scope.config.chartId) { + $scope.donutChartId = $scope.config.chartId + $scope.donutChartId; + } + + $scope.updateAvailable = function () { + $scope.data.available = $scope.data.total - $scope.data.used; + }; + + if ($scope.data.available === undefined) { + $scope.updateAvailable(); + } + + $scope.getStatusColor = function (used, thresholds) { + var color = pfUtils.colorPalette.blue; + + if (thresholds) { + color = pfUtils.colorPalette.green; + if (used >= thresholds.error) { + color = pfUtils.colorPalette.red; + } else if (used >= thresholds.warning) { + color = pfUtils.colorPalette.orange; + } + } + + return color; + }; + + $scope.statusDonutColor = function (scope) { + var color, percentUsed; + + color = { pattern: [] }; + percentUsed = scope.data.used / scope.data.total * 100.0; + color.pattern[0] = $scope.getStatusColor(percentUsed, scope.config.thresholds); + color.pattern[1] = pfUtils.colorPalette.black300; + return color; + }; + + donutTooltip = function (scope) { + return { + contents: function (d) { + var tooltipHtml; + + if (scope.config.tooltipFn) { + tooltipHtml = '' + + scope.config.tooltipFn(d) + + ''; + } else { + tooltipHtml = '' + + Math.round(d[0].ratio * 100) + '%' + ' ' + $scope.config.units + ' ' + d[0].name + + ''; + } + + return tooltipHtml; + } + }; + }; + + $scope.getDonutData = function (scope) { + return { + columns: [ + ['Used', scope.data.used], + ['Available', scope.data.available] + ], + type: 'donut', + donut: { + label: { + show: false + } + }, + groups: [ + ['used', 'available'] + ], + order: null + }; + }; + + $scope.getCenterLabelText = function () { + var centerLabelText; + + // default to 'used' info. + centerLabelText = { bigText: $scope.data.used, + smText: $scope.config.units + ' Used' }; + + if ($scope.config.centerLabelFn) { + centerLabelText.bigText = $scope.config.centerLabelFn(); + centerLabelText.smText = ''; + } else if ($scope.centerLabel === 'none') { + centerLabelText.bigText = ''; + centerLabelText.smText = ''; + } else if ($scope.centerLabel === 'available') { + centerLabelText.bigText = $scope.data.available; + centerLabelText.smText = $scope.config.units + ' Available'; + } else if ($scope.centerLabel === 'percent') { + centerLabelText.bigText = Math.round($scope.data.used / $scope.data.total * 100.0) + '%'; + centerLabelText.smText = 'of ' + $scope.data.total + ' ' + $scope.config.units; + } + + return centerLabelText; + }; + + + $scope.updateAll = function (scope) { + $scope.updateAvailable(); + $scope.config.data = pfUtils.merge($scope.config.data, $scope.getDonutData($scope)); + $scope.config.color = $scope.statusDonutColor($scope); + $scope.config.tooltip = donutTooltip(scope); + $scope.config.data.onclick = $scope.config.onClickFn; + }; + + $scope.config = pfUtils.merge($().c3ChartDefaults().getDefaultDonutConfig(), $scope.config); + $scope.updateAll($scope); + + + } + ], + link: function (scope, element) { + var setupDonutChartTitle = function () { + $timeout(function () { + var donutChartTitle, centerLabelText; + + donutChartTitle = d3.select(element[0]).select('text.c3-chart-arcs-title'); + if (!donutChartTitle) { + return; + } + + centerLabelText = scope.getCenterLabelText(); + + // Remove any existing title. + donutChartTitle.selectAll('*').remove(); + if (centerLabelText.bigText && !centerLabelText.smText) { + donutChartTitle.text(centerLabelText.bigText); + } else { + donutChartTitle.insert('tspan').text(centerLabelText.bigText).classed('donut-title-big-pf', true).attr('dy', 0).attr('x', 0); + donutChartTitle.insert('tspan').text(centerLabelText.smText).classed('donut-title-small-pf', true).attr('dy', 20).attr('x', 0); + } + }, 300); + }; + + scope.$watch('config', function () { + scope.updateAll(scope); + setupDonutChartTitle(); + }, true); + scope.$watch('chartHeight', function () { + if (scope.chartHeight) { + scope.config.size.height = scope.chartHeight; + } + }); + scope.$watch('data', function () { + scope.updateAll(scope); + setupDonutChartTitle(); + }, true); + + scope.$watch('centerLabel', function () { + setupDonutChartTitle(); + }); + } + }; +}]); +;/** + * + * @description + * Directive for rendering an empty chart. This is used by chart directives when the data + * available flag is set to false. + * + * @param {string=} chartHeight height of the chart (no units) - default: 40 + */ +angular.module('patternfly.charts').directive('pfEmptyChart', function () { + 'use strict'; + return { + restrict: 'A', + scope: { + chartHeight: '=?' + }, + replace: true, + templateUrl: 'charts/empty-chart.html', + controller: ["$scope", function ($scope) { + $scope.setSizeStyles = function () { + var height = $scope.chartHeight || 40; + var topPadding = Math.min(Math.round((height - 40) / 2), 20); + $scope.sizeStyles = { + height: height + 'px', + 'padding-top': topPadding + 'px' + }; + }; + $scope.setSizeStyles(); + }], + link: function (scope) { + scope.$watch('chartHeight', function () { + scope.setSizeStyles(); + }); + } + }; +}); +;angular.module('patternfly.charts').directive('pfHeatmapLegend', + function () { + 'use strict'; + return { + restrict: 'A', + scope: { + legend: '=?', + legendColors: '=?' + }, + templateUrl: 'charts/heatmap/heatmap-legend.html', + controller: ["$scope", function ($scope) { + var heatmapColorPatternDefaults = ['#d4f0fa', '#F9D67A', '#EC7A08', '#CE0000']; + var legendLabelDefaults = ['< 70%', '70-80%' ,'80-90%', '> 90%']; + + //Allow overriding of defaults + if (!$scope.legendColors) { + $scope.legendColors = heatmapColorPatternDefaults; + } + if (!$scope.legend) { + $scope.legend = legendLabelDefaults; + } + }], + link: function ($scope) { + var items = []; + var index; + for (index = $scope.legend.length - 1; index >= 0; index--) { + items.push({ + text: $scope.legend[index], + color: $scope.legendColors[index] + }); + } + $scope.legendItems = items; + } + }; + } +); +;/** + * @ngdoc directive + * @name patternfly.charts.directive:pfHeatMap + * + * @description + * Directive for rendering a heatmap chart. + * + * @param {object} data data for the chart:
      + *
        + *
      • .id - the id of the measurement + *
      • .value - the value of the measurement + *
      • .tooltip - message to be displayed on hover + *
      + * + * @param {boolean=} chartDataAvailable flag if the chart data is available - default: true + * @param {number=} height height of the chart (no units) - default: 200 + * @param {string=} chartTitle title of the chart + * @param {boolean=} showLegend flag to show the legend, defaults to true + * @param {array=} legendLabels the labels for the legend - defaults: ['< 70%', '70-80%' ,'80-90%', '> 90%'] + * @param {number=} maxBlockSize the maximum size for blocks in the heatmap. Default: 50, Range: 5 - 50 + * @param {number=} minBlockSize the minimum size for blocks in the heatmap. Default: 2 + * @param {number=} blockPadding the padding in pixels between blocks (default: 2) + * @param {array=} thresholds the threshold values for the heapmap - defaults: [0.7, 0.8, 0.9] + * @param {array=} heatmapColorPattern the colors that correspond to the various threshold values (lowest to hightest value ex: <70& to >90%) - defaults: ['#d4f0fa', '#F9D67A', '#EC7A08', '#CE0000'] + * @param {function=} clickAction function(block) function to call when a block is clicked on + * @param {number=} rangeHoverSize the maximum size for highlighting blocks in the same range. Default: 15 + * @param {boolean=} rangeOnHover flag to highlight blocks in the same range on hover, defaults to true + * @param {array=} rangeTooltips the tooltips for blocks in the same range - defaults: ['< 70%', '70-80%' ,'80-90%', '> 90%'] + * @example + + +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      + +
      +
      +
      +
      +
      +
      + +
      +
      +
      +
      +
      +
      + + angular.module( 'patternfly.charts' ).controller( 'ChartCtrl', function( $scope) { + $scope.data = [ + {'id': 9,'value': 0.96,'tooltip': 'Node 8 : My OpenShift Provider96% : 96 Used of 100 Total4 Available'}, + {'id': 44, 'value': 0.94, 'tooltip': 'Node 19 : My Kubernetes Provider94% : 94 Used of 100 Total6 Available'}, + {'id': 0, 'value': 0.91, 'tooltip': 'Node 9 : My OpenShift Provider91% : 91 Used of 100 Total9 Available'}, + {'id': 43, 'value': 0.9, 'tooltip': 'Node 18 : My Kubernetes Provider90% : 90 Used of 100 Total10 Available'}, + {'id': 7, 'value': 0.89, 'tooltip': 'Node 12 : My OpenShift Provider89% : 89 Used of 100 Total11 Available'}, + {'id': 41, 'value': 0.82, 'tooltip': 'Node 16 : My Kubernetes Provider82% : 82 Used of 100 Total18 Available'}, + {'id': 21, 'value': 0.81, 'tooltip': 'Node 21 : My OpenShift Provider81% : 81 Used of 100 Total19 Available'}, + {'id': 26, 'value': 0.8, 'tooltip': 'Node 1 : My Kubernetes Provider80% : 80 Used of 100 Total20 Available'}, + {'id': 48, 'value': 0.74, 'tooltip': 'Node 23 : My Kubernetes Provider74% : 74 Used of 100 Total26 Available'}, + {'id': 27, 'value': 0.72, 'tooltip': 'Node 2 : My Kubernetes Provider72% : 72 Used of 100 Total28 Available'}, + {'id': 42, 'value': 0.71, 'tooltip': 'Node 17 : My Kubernetes Provider71% : 71 Used of 100 Total29 Available'}, + {'id': 23, 'value': 0.71, 'tooltip': 'Node 23 : My OpenShift Provider71% : 71 Used of 100 Total29 Available'}, + {'id': 22, 'value': 0.69, 'tooltip': 'Node 22 : My OpenShift Provider69% : 69 Used of 100 Total31 Available'}, + {'id': 2, 'value': 0.66, 'tooltip': 'Node 2 : M8y OpenShift Provider66% : 66 Used of 100 Total34 Available'}, + {'id': 39, 'value': 0.66, 'tooltip': 'Node 14 : My Kubernetes Provider66% : 66 Used of 100 Total34 Available'}, + {'id': 3, 'value': 0.65, 'tooltip': 'Node 39 : My OpenShift Provider65% : 65 Used of 100 Total35 Available'}, + {'id': 29, 'value': 0.65, 'tooltip': 'Node 4 : My Kubernetes Provider65% : 65 Used of 100 Total35 Available'}, + {'id': 32, 'value': 0.56, 'tooltip': 'Node 7 : My Kubernetes Provider56% : 56 Used of 100 Total44 Available'}, + {'id': 13, 'value': 0.56, 'tooltip': 'Node 13 : My OpenShift Provider56% : 56 Used of 100 Total44 Available'}, + {'id': 49, 'value': 0.52, 'tooltip': 'Node 24 : My Kubernetes Provider52% : 52 Used of 100 Total48 Available'}, + {'id': 36, 'value': 0.5, 'tooltip': 'Node 11 : My Kubernetes Provider50% : 50 Used of 100 Total50 Available'}, + {'id': 6, 'value': 0.5, 'tooltip': 'Node 5 : My OpenShift Provider50% : 50 Used of 100 Total50 Available'}, + {'id': 38, 'value': 0.49, 'tooltip': 'Node 13 : My Kubernetes Provider49% : 49 Used of 100 Total51 Available'}, + {'id': 15, 'value': 0.48, 'tooltip': 'Node 15 : My OpenShift Provider48% : 48 Used of 100 Total52 Available'}, + {'id': 30, 'value': 0.48, 'tooltip': 'Node 5 : My Kubernetes Provider48% : 48 Used of 100 Total52 Available'}, + {'id': 11, 'value': 0.47, 'tooltip': 'Node 11 : My OpenShift Provider47% : 47 Used of 100 Total53 Available'}, + {'id': 17, 'value': 0.46, 'tooltip': 'Node 17 : My OpenShift Provider46% : 46 Used of 100 Total54 Available'}, + {'id': 25, 'value': 0.45, 'tooltip': 'Node 0 : My Kubernetes Provider45% : 45 Used of 100 Total55 Available'}, + {'id': 50, 'value': 0.45, 'tooltip': 'Node 25 : My Kubernetes Provider45% : 45 Used of 100 Total55 Available'}, + {'id': 46, 'value': 0.45, 'tooltip': 'Node 21 : My Kubernetes Provider45% : 45 Used of 100 Total55 Available'}, + {'id': 47, 'value': 0.45, 'tooltip': 'Node 22 : My Kubernetes Provider45% : 45 Used of 100 Total55 Available'}, + {'id': 1, 'value': 0.44, 'tooltip': 'Node 1 : My OpenShift Provider44% : 44 Used of 100 Total56 Available'}, + {'id': 31, 'value': 0.44, 'tooltip': 'Node 6 : My Kubernetes Provider44% : 44 Used of 100 Total56 Available'}, + {'id': 37, 'value': 0.44, 'tooltip': 'Node 12 : My Kubernetes Provider44% : 44 Used of 100 Total56 Available'}, + {'id': 24, 'value': 0.44, 'tooltip': 'Node 24 : My OpenShift Provider44% : 44 Used of 100 Total56 Available'}, + {'id': 40, 'value': 0.43, 'tooltip': 'Node 40 : My Kubernetes Provider43% : 43 Used of 100 Total57 Available'}, + {'id': 20, 'value': 0.39, 'tooltip': 'Node 20 : My OpenShift Provider39% : 39 Used of 100 Total61 Available'}, + {'id': 8, 'value': 0.39, 'tooltip': 'Node 8 : My OpenShift Provider39% : 39 Used of 100 Total61 Available'}, + {'id': 5, 'value': 0.38, 'tooltip': 'Node 5 : My OpenShift Provider38% : 38 Used of 100 Total62 Available'}, + {'id': 45, 'value': 0.37, 'tooltip': 'Node 20 : My Kubernetes Provider37% : 37 Used of 100 Total63 Available'}, + {'id': 12, 'value': 0.37, 'tooltip': 'Node 12 : My OpenShift Provider37% : 37 Used of 100 Total63 Available'}, + {'id': 34, 'value': 0.37, 'tooltip': 'Node 9 : My Kubernetes Provider37% : 37 Used of 100 Total63 Available'}, + {'id': 33, 'value': 0.33, 'tooltip': 'Node 8 : My Kubernetes Provider33% : 33 Used of 100 Total67 Available'}, + {'id': 16, 'value': 0.32, 'tooltip': 'Node 16 : My OpenShift Provider32% : 32 Used of 100 Total68 Available'}, + {'id': 10, 'value': 0.29, 'tooltip': 'Node 10 : My OpenShift Provider28% : 29 Used of 100 Total71 Available'}, + {'id': 35, 'value': 0.28, 'tooltip': 'Node 35 : My Kubernetes Provider28% : 28 Used of 100 Total72 Available'}, + {'id': 18, 'value': 0.27, 'tooltip': 'Node 18 : My OpenShift Provider27% : 27 Used of 100 Total73 Available'}, + {'id': 4, 'value': 0.26, 'tooltip': 'Node 4 : My OpenShift Provider26% : 26 Used of 100 Total74 Available'}, + {'id': 19, 'value': 0.25, 'tooltip': 'Node 19 : My OpenShift Provider25% : 25 Used of 100 Total75 Available'}, + {'id': 28, 'value': 0.25, 'tooltip': 'Node 3 : My Kubernetes Provider25% : 25 Used of 100 Total75 Available'}, + {'id': 51, 'value': 0.22, 'tooltip': 'Node 26 : My Kubernetes Provider22% : 22 Used of 100 Total78 Available'}, + {'id': 14, 'value': 0.2, 'tooltip': 'Node 14 : My OpenShift Provider20% : 20 Used of 100 Total80 Available'}]; + + $scope.dataAvailable = true; + $scope.title = 'Utilization - Using Defaults'; + $scope.titleAlt = 'Utilization - Overriding Defaults'; + $scope.titleSmall = 'Utilization - Small Blocks'; + $scope.legendLabels = ['< 60%','70%', '70-80%' ,'80-90%', '> 90%']; + $scope.rangeTooltips = ['Memory Utilization < 70%40 Nodes', 'Memory Utilization 70-80%4 Nodes', 'Memory Utilization 80-90%4 Nodes', 'Memory Utilization > 90%4 Nodes']; + $scope.thresholds = [0.6, 0.7, 0.8, 0.9]; + $scope.heatmapColorPattern = ['#d4f0fa', '#F9D67A', '#EC7A08', '#CE0000', '#f00']; + + $scope.showLegends = true; + var clickAction = function (block) { + console.log(block); + }; + $scope.clickAction = clickAction; + }); + +
      + */ +angular.module('patternfly.charts').directive('pfHeatmap', ["$compile", "$window", function ($compile, $window) { + 'use strict'; + return { + restrict: 'A', + scope: { + data: '=', + chartDataAvailable: '=?', + height: '=?', + chartTitle: '=?', + showLegend: '=?', + legendLabels: '=?', + maxBlockSize: '@', + minBlockSize: '@', + blockPadding: '@', + thresholds: '=?', + heatmapColorPattern: '=?', + clickAction: '=?', + rangeOnHover: '=?', + rangeHoverSize: '@', + rangeTooltips: '=?' + }, + templateUrl: 'charts/heatmap/heatmap.html', + controller: ["$scope", function ($scope) { + var thresholdDefaults = [0.7, 0.8, 0.9]; + var heatmapColorPatternDefaults = ['#d4f0fa', '#F9D67A', '#EC7A08', '#CE0000']; + var legendLabelDefaults = ['< 70%', '70-80%' ,'80-90%', '> 90%']; + var rangeTooltipDefaults = ['< 70%', '70-80%' ,'80-90%', '> 90%']; + var heightDefault = 200; + + //Allow overriding of defaults + if ($scope.maxBlockSize === undefined || isNaN($scope.maxBlockSize)) { + $scope.maxSize = 64; + } else { + $scope.maxSize = parseInt($scope.maxBlockSize); + if ($scope.maxSize < 5) { + $scope.maxSize = 5; + } else if ($scope.maxSize > 50) { + $scope.maxSize = 50; + } + } + + if ($scope.minBlockSize === undefined || isNaN($scope.minBlockSize)) { + $scope.minSize = 2; + } else { + $scope.minSize = parseInt($scope.minBlockSize); + } + + if ($scope.blockPadding === undefined || isNaN($scope.blockPadding)) { + $scope.padding = 2; + } else { + $scope.padding = parseInt($scope.blockPadding); + } + + if ($scope.rangeHoverSize === undefined || isNaN($scope.rangeHoverSize)) { + $scope.rangeHoverSize = 15; + } else { + $scope.rangeHoverSize = parseInt($scope.rangeHoverSize); + } + + $scope.rangeOnHover = ($scope.rangeOnHover === undefined || $scope.rangeOnHover) ? true : false; + + if (!$scope.rangeTooltips) { + $scope.rangeTooltips = rangeTooltipDefaults; + } + + if (!$scope.thresholds) { + $scope.thresholds = thresholdDefaults; + } + + if (!$scope.heatmapColorPattern) { + $scope.heatmapColorPattern = heatmapColorPatternDefaults; + } + + if (!$scope.legendLabels) { + $scope.legendLabels = legendLabelDefaults; + } + $scope.height = $scope.height || heightDefault; + $scope.showLegend = $scope.showLegend || ($scope.showLegend === undefined); + $scope.loadingDone = false; + }], + link: function (scope, element, attrs) { + var thisComponent = element[0].querySelector('.heatmap-pf-svg'); + var containerWidth, containerHeight, blockSize, numberOfRows; + + var setStyles = function () { + scope.containerStyles = { + height: scope.height + 'px', + display: scope.chartDataAvailable === false ? 'none' : 'block' + }; + }; + + var setSizes = function () { + var parentContainer = element[0].querySelector('.heatmap-container'); + containerWidth = parentContainer.clientWidth; + containerHeight = parentContainer.clientHeight; + blockSize = determineBlockSize(); + + if ((blockSize - scope.padding) > scope.maxSize) { + blockSize = scope.padding + scope.maxSize; + + // Attempt to square off the area, check if square fits + numberOfRows = Math.ceil(Math.sqrt(scope.data.length)); + if (blockSize * numberOfRows > containerWidth || + blockSize * numberOfRows > containerHeight) { + numberOfRows = (blockSize === 0) ? 0 : Math.floor(containerHeight / blockSize); + } + } else if ((blockSize - scope.padding) < scope.minSize) { + blockSize = scope.padding + scope.minSize; + + // Attempt to square off the area, check if square fits + numberOfRows = Math.ceil(Math.sqrt(scope.data.length)); + if (blockSize * numberOfRows > containerWidth || + blockSize * numberOfRows > containerHeight) { + numberOfRows = (blockSize === 0) ? 0 : Math.floor(containerHeight / blockSize); + } + } else { + numberOfRows = (blockSize === 0) ? 0 : Math.floor(containerHeight / blockSize); + } + }; + + var determineBlockSize = function () { + var x = containerWidth; + var y = containerHeight; + var n = scope.data ? scope.data.length : 0; + var px = Math.ceil(Math.sqrt(n * x / y)); + var py = Math.ceil(Math.sqrt(n * y / x)); + var sx, sy; + + if (Math.floor(px * y / x) * px < n) { + sx = y / Math.ceil(px * y / x); + } else { + sx = x / px; + } + + if (Math.floor(py * x / y) * py < n) { + sy = x / Math.ceil(x * py / y); + } else { + sy = y / py; + } + return Math.max(sx, sy); + }; + + var redraw = function () { + var data = scope.data; + var color = d3.scale.threshold().domain(scope.thresholds).range(scope.heatmapColorPattern); + var rangeTooltip = d3.scale.threshold().domain(scope.thresholds).range(scope.rangeTooltips); + var blocks; + var fillSize = blockSize - scope.padding; + var highlightBlock = function (block, active) { + block.style('fill-opacity', active ? 1 : 0.4); + }; + var highlightBlockColor = function (block, fillColor) { + // Get fill color from given block + var blockColor = color(block.map(function (d) { + return d[0].__data__.value; + })); + // If given color matches, apply highlight + if (blockColor === fillColor) { + block.style('fill-opacity', 1); + } + }; + + var svg = window.d3.select(thisComponent); + svg.selectAll('*').remove(); + blocks = svg.selectAll('rect').data(data).enter().append('rect'); + blocks.attr('x', function (d, i) { + return Math.floor(i / numberOfRows) * blockSize; + }).attr('y', function (d, i) { + return i % numberOfRows * blockSize; + }).attr('width', fillSize).attr('height', fillSize).style('fill', function (d) { + return color(d.value); + }).attr('uib-tooltip-html', function (d, i) { //tooltip-html is throwing an exception + if (scope.rangeOnHover && fillSize <= scope.rangeHoverSize) { + return '"' + rangeTooltip(d.value) + '"'; + } + return "'" + d.tooltip + "'"; + }).attr('tooltip-append-to-body', function (d, i) { + return true; + }).attr('tooltip-animation', function (d, i) { + return false; + }); + + //Adding events + blocks.on('mouseover', function () { + var fillColor; + blocks.call(highlightBlock, false); + if (scope.rangeOnHover && fillSize <= scope.rangeHoverSize) { + // Get fill color for current block + fillColor = color(d3.select(this).map(function (d) { + return d[0].__data__.value; + })); + // Highlight all blocks matching fill color + blocks[0].forEach(function (block) { + highlightBlockColor(d3.select(block), fillColor); + }); + } else { + d3.select(this).call(highlightBlock, true); + } + }); + blocks.on('click', function (d) { + if (scope.clickAction) { + scope.clickAction(d); + } + }); + + //Compiles the tooltips + angular.forEach(angular.element(blocks), function (block) { + var el = angular.element(block); + $compile(el)(scope); + }); + + svg.on('mouseleave', function () { + blocks.call(highlightBlock, true); + }); + }; + + scope.$watch('data', function (newVal, oldVal) { + if (typeof(newVal) !== 'undefined') { + scope.loadingDone = true; + setStyles(); + if (scope.chartDataAvailable !== false) { + setSizes(); + redraw(); + } + } + }); + scope.$watch('chartDataAvailable', function () { + if (scope.chartDataAvailable === false) { + scope.loadingDone = true; + } + setStyles(); + }); + + angular.element($window).bind('resize', function () { + setSizes(); + redraw(); + }); + + scope.$watch( + function () { + return [element[0].offsetWidth, element[0].offsetHeight].join('x'); + }, + function (value) { + setSizes(); + redraw(); + } + ); + } + }; +}]); +;/** + * @ngdoc directive + * @name patternfly.charts.directive:pfLineChart + * + * @description + * Directive for rendering a line chart. + *

      + * See http://c3js.org/reference.html for a full list of C3 chart options. + * + * @param {object} config configuration settings for the line chart:
      + *
        + *
      • .chartId - the ID of the container that the chart should bind to + *
      • .units - unit label for values, ex: 'MHz','GB', etc.. + *
      • .tooltipFn - (optional) override the tooltip contents generation functions. Should take a data point and + * return HTML markup for the tooltip contents. Setting this overrides the tooltipType value. + *
      • .area - (optional) overrides the default Area properties of the C3 chart + *
      • .size - (optional) overrides the default Size properties of the C3 chart + *
      • .axis - (optional) overrides the default Axis properties of the C3 chart + *
      • .color - (optional) overrides the default Color properties of the C3 chart + *
      • .legend - (optional) overrides the default Legend properties of the C3 chart + *
      • .point - (optional) overrides the default Point properties of the C3 chart + *
      + * + * @param {object} chartData the data to be shown as an area chart
      + * First and second Array elements, xData and yData, must exist, next data arrays are optional.
      + *
        + *
      • .xData - Array, X values for the data points, first element must be the name of the data + *
      • .yData - Array, Y Values for the data points, first element must be the name of the data + *
      • .yData1 - Array, Y Values for the data points, first element must be the name of the data + *
      • .[...] - Array, Y Values for the data points, first element must be the name of the data + *
      + * + * @param {boolean=} showXAxis override config settings for showing the X Axis + * @param {boolean=} showYAxis override config settings for showing the Y Axis + * @param {boolean=} setAreaChart override config settings for showing area type chart + + * @example + + +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      + + + +
      +
      +
      +
      + +
      +
      +
      +
      +
      +
      +
      +
      + +
      +
      +
      +
      +
      +
      +
      + + + angular.module( 'patternfly.charts' ).controller( 'ChartCtrl', function( $scope, pfUtils ) { + + $scope.config = { + chartId: 'exampleLine', + grid: {y: {show: false}}, + point: {r: 1}, + color: {pattern: [pfUtils.colorPalette.blue, pfUtils.colorPalette.green]} + }; + + var today = new Date(); + var dates = ['dates']; + for (var d = 20 - 1; d >= 0; d--) { + dates.push(new Date(today.getTime() - (d * 24 * 60 * 60 * 1000))); + } + + $scope.data = { + dataAvailable: true, + xData: dates, + yData0: ['Created', 12, 10,10, 62, 17, 10, 15, 13, 17, 10, 12, 10, 10, 12, 17, 16, 15, 13, 17, 10], + yData1: ['Deleted', 10, 17, 76,14, 10, 10, 10, 10, 10, 10, 10, 17, 17, 14, 10, 10, 10, 10, 10, 10] + }; + + $scope.custShowXAxis = false; + $scope.custShowYAxis = false; + $scope.custAreaChart = false; + + $scope.addDataPoint = function () { + $scope.data.xData.push(new Date($scope.data.xData[$scope.data.xData.length - 1].getTime() + (24 * 60 * 60 * 1000))); + $scope.data.yData0.push(Math.round(Math.random() * 100)); + $scope.data.yData1.push(Math.round(Math.random() * 100)); + }; + }); + +
      + */ +angular.module('patternfly.charts').directive('pfLineChart', ["pfUtils", function (pfUtils) { + 'use strict'; + return { + restrict: 'A', + scope: { + config: '=', + chartData: '=', + showXAxis: '=?', + showYAxis: '=?', + setAreaChart: '=?' + }, + replace: true, + templateUrl: 'charts/line/line-chart.html', + controller: ['$scope', + function ($scope) { + + // Create an ID for the chart based on the chartId in the config if given + $scope.lineChartId = 'lineChart'; + if ($scope.config.chartId) { + $scope.lineChartId = $scope.config.chartId + $scope.lineChartId; + } + + /* + * Convert the config data to C3 Data + */ + $scope.getLineData = function (chartData) { + var lineData = { + type: $scope.setAreaChart ? "area" : "line" + }; + + if (chartData && chartData.dataAvailable !== false && chartData.xData) { + lineData.x = chartData.xData[0]; + // Convert the chartData dictionary into a C3 columns data arrays + lineData.columns = Object.keys (chartData).map (function (key) { + return chartData[key]; + }); + } + + return lineData; + }; + + /* + * Setup Axis options. Default is to not show either axis. This can be overridden in two ways: + * 1) in the config, setting showAxis to true will show both axes + * 2) in the attributes showXAxis and showYAxis will override the config if set + * + * By default only line and the tick marks are shown, no labels. This is a line and should be used + * only to show a brief idea of trending. This can be overridden by setting the config.axis options per C3 + */ + + if ($scope.showXAxis === undefined) { + $scope.showXAxis = ($scope.config.showAxis !== undefined) && $scope.config.showAxis; + } + + if ($scope.showYAxis === undefined) { + $scope.showYAxis = ($scope.config.showAxis !== undefined) && $scope.config.showAxis; + } + + $scope.defaultConfig = $().c3ChartDefaults().getDefaultLineConfig(); + $scope.defaultConfig.axis = { + x: { + show: $scope.showXAxis === true, + type: 'timeseries', + tick: { + format: function () { + return ''; + } + } + }, + y: { + show: $scope.showYAxis === true, + tick: { + format: function () { + return ''; + } + } + } + }; + + /* + * Setup Chart type option. Default is Line Chart. + */ + if ($scope.setAreaChart === undefined) { + $scope.setAreaChart = ($scope.config.setAreaChart !== undefined) && $scope.config.setAreaChart; + } + + // Convert the given data to C3 chart format + $scope.config.data = pfUtils.merge($scope.config.data, $scope.getLineData($scope.chartData)); + + // Override defaults with callers specifications + $scope.defaultConfig = pfUtils.merge($scope.defaultConfig, $scope.config); + } + ], + + link: function (scope) { + scope.$watch('config', function () { + scope.config.data = pfUtils.merge(scope.config.data, scope.getLineData(scope.chartData)); + scope.chartConfig = pfUtils.merge(scope.defaultConfig, scope.config); + }, true); + scope.$watch('showXAxis', function () { + scope.chartConfig.axis.x.show = scope.showXAxis === true; + }); + scope.$watch('showYAxis', function () { + scope.chartConfig.axis.y.show = scope.showYAxis === true; + }); + scope.$watch('setAreaChart', function () { + scope.chartConfig.data.type = scope.setAreaChart ? "area" : "line"; + }); + scope.$watch('chartData', function () { + scope.chartConfig.data = pfUtils.merge(scope.chartConfig.data, scope.getLineData(scope.chartData)); + }, true); + } + }; +}] +); +;/** + * @ngdoc directive + * @name patternfly.charts.directive:pfSparklineChart + * + * @description + * Directive for rendering a sparkline chart. + *

      + * See http://c3js.org/reference.html for a full list of C3 chart options. + * + * @param {object} config configuration settings for the sparkline chart:
      + *
        + *
      • .chartId - the ID of the container that the chart should bind to + *
      • .units - unit label for values, ex: 'MHz','GB', etc.. + *
      • .tooltipType - (optional) set the type of tooltip, valid values: + *
          + *
        • 'default' - show the data point value and the data point name. + *
        • 'usagePerDay' - show the date, percent used, and used value for the data point. + *
        • 'valuePerDay' - show the date and value for the data point. + *
        • 'percentage' - show the current data point as a percentage. + *
        + *
      • .tooltipFn - (optional) override the tooltip contents generation functions. Should take a data point and + * return HTML markup for the tooltip contents. Setting this overrides the tooltipType value. + *
      • .area - (optional) overrides the default Area properties of the C3 chart + *
      • .size - (optional) overrides the default Size properties of the C3 chart + *
      • .axis - (optional) overrides the default Axis properties of the C3 chart + *
      • .color - (optional) overrides the default Color properties of the C3 chart + *
      • .legend - (optional) overrides the default Legend properties of the C3 chart + *
      • .point - (optional) overrides the default Point properties of the C3 chart + *
      + * + * @param {object} chartData the data to be shown as an area chart
      + *
        + *
      • .xData - Array, X values for the data points, first element must be the name of the data + *
      • .yData - Array, Y Values for the data points, first element must be the name of the data + *
      • .total - (optional) The Total amount, used when determining percentages + *
      • .dataAvailable - Flag if there is data available - default: true + *
      + * + * @param {int=} chartHeight height of the sparkline chart + * @param {boolean=} showXAxis override config settings for showing the X Axis + * @param {boolean=} showYAxis override config settings for showing the Y Axis + + * @example + + +
      +
      +
      +
      +
      +
      +
      +
      + +
      + + + + +
      +
      +
      +
      +
      +
      + +
      + + +
      +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +
      + +
      +
      +
      +
      +
      +
      + +
      +
      +
      +
      +
      +
      +
      + + + angular.module( 'patternfly.charts' ).controller( 'ChartCtrl', function( $scope ) { + + $scope.config = { + chartId: 'exampleSparkline', + tooltipType: 'default' + }; + + var today = new Date(); + var dates = ['dates']; + for (var d = 20 - 1; d >= 0; d--) { + dates.push(new Date(today.getTime() - (d * 24 * 60 * 60 * 1000))); + } + + $scope.data = { + dataAvailable: true, + total: 100, + xData: dates, + yData: ['used', 10, 20, 30, 20, 30, 10, 14, 20, 25, 68, 54, 56, 78, 56, 67, 88, 76, 65, 87, 76] + }; + + $scope.custShowXAxis = false; + $scope.custShowYAxis = false; + $scope.custChartHeight = 60; + + $scope.addDataPoint = function () { + $scope.data.xData.push(new Date($scope.data.xData[$scope.data.xData.length - 1].getTime() + (24 * 60 * 60 * 1000))); + $scope.data.yData.push(Math.round(Math.random() * 100)); + }; + }); + +
      + */ +angular.module('patternfly.charts').directive('pfSparklineChart', ["pfUtils", function (pfUtils) { + 'use strict'; + return { + restrict: 'A', + scope: { + config: '=', + chartData: '=', + chartHeight: '=?', + showXAxis: '=?', + showYAxis: '=?' + }, + replace: true, + templateUrl: 'charts/sparkline/sparkline-chart.html', + controller: ['$scope', + function ($scope) { + + // Create an ID for the chart based on the chartId in the config if given + $scope.sparklineChartId = 'sparklineChart'; + if ($scope.config.chartId) { + $scope.sparklineChartId = $scope.config.chartId + $scope.sparklineChartId; + } + + /* + * Convert the config data to C3 Data + */ + $scope.getSparklineData = function (chartData) { + var sparklineData = { + type: 'area' + }; + + if (chartData && chartData.dataAvailable !== false && chartData.xData && chartData.yData) { + sparklineData.x = chartData.xData[0]; + sparklineData.columns = [ + chartData.xData, + chartData.yData + ]; + } + + return sparklineData; + }; + + $scope.getTooltipTableHTML = function (tipRows) { + return '
      ' + + ' ' + + ' ' + + tipRows + + ' ' + + '
      ' + + '
      '; + }; + + $scope.sparklineTooltip = function () { + return { + contents: function (d) { + var tipRows; + var percentUsed = 0; + + if ($scope.config.tooltipFn) { + tipRows = $scope.config.tooltipFn(d); + } else { + switch ($scope.config.tooltipType) { + case 'usagePerDay': + if ($scope.chartData.dataAvailable !== false && $scope.chartData.total > 0) { + percentUsed = Math.round(d[0].value / $scope.chartData.total * 100.0); + } + tipRows = + '' + + ' ' + d[0].x.toLocaleDateString() + '' + + '' + + '' + + ' ' + percentUsed + '%:' + '' + + ' ' + d[0].value + ' ' + ($scope.config.units ? $scope.config.units + ' ' : '') + d[0].name + '' + + ''; + break; + case 'valuePerDay': + tipRows = + '' + + ' ' + d[0].x.toLocaleDateString() + '' + + ' ' + d[0].value + ' ' + d[0].name + '' + + ''; + break; + case 'percentage': + percentUsed = Math.round(d[0].value / $scope.chartData.total * 100.0); + tipRows = + '' + + ' ' + percentUsed + '%' + '' + + ''; + break; + default: + tipRows = $().c3ChartDefaults().getDefaultSparklineTooltip().contents(d); + } + } + return $scope.getTooltipTableHTML(tipRows); + }, + position: function (data, width, height, element) { + var center; + var top; + var chartBox; + var graphOffsetX; + var x; + + try { + center = parseInt(element.getAttribute('x')); + top = parseInt(element.getAttribute('y')); + chartBox = document.querySelector('#' + $scope.sparklineChartId).getBoundingClientRect(); + graphOffsetX = document.querySelector('#' + $scope.sparklineChartId + ' g.c3-axis-y').getBoundingClientRect().right; + x = Math.max(0, center + graphOffsetX - chartBox.left - Math.floor(width / 2)); + + return { + top: top - height, + left: Math.min(x, chartBox.width - width) + }; + } catch (e) { + } + } + }; + }; + + /* + * Setup Axis options. Default is to not show either axis. This can be overridden in two ways: + * 1) in the config, setting showAxis to true will show both axes + * 2) in the attributes showXAxis and showYAxis will override the config if set + * + * By default only line and the tick marks are shown, no labels. This is a sparkline and should be used + * only to show a brief idea of trending. This can be overridden by setting the config.axis options per C3 + */ + + if ($scope.showXAxis === undefined) { + $scope.showXAxis = ($scope.config.showAxis !== undefined) && $scope.config.showAxis; + } + + if ($scope.showYAxis === undefined) { + $scope.showYAxis = ($scope.config.showAxis !== undefined) && $scope.config.showAxis; + } + + $scope.defaultConfig = $().c3ChartDefaults().getDefaultSparklineConfig(); + $scope.defaultConfig.axis = { + x: { + show: $scope.showXAxis === true, + type: 'timeseries', + tick: { + format: function () { + return ''; + } + } + }, + y: { + show: $scope.showYAxis === true, + tick: { + format: function () { + return ''; + } + } + } + }; + + // Setup the default configuration + $scope.defaultConfig.tooltip = $scope.sparklineTooltip(); + if ($scope.chartHeight) { + $scope.defaultConfig.size.height = $scope.chartHeight; + } + $scope.defaultConfig.units = ''; + + // Convert the given data to C3 chart format + $scope.config.data = pfUtils.merge($scope.config.data, $scope.getSparklineData($scope.chartData)); + + // Override defaults with callers specifications + $scope.chartConfig = pfUtils.merge($scope.defaultConfig, $scope.config); + } + ], + + link: function (scope) { + scope.$watch('config', function () { + scope.config.data = pfUtils.merge(scope.config.data, scope.getSparklineData(scope.chartData)); + scope.chartConfig = pfUtils.merge(scope.defaultConfig, scope.config); + }, true); + scope.$watch('chartHeight', function () { + if (scope.chartHeight) { + scope.chartConfig.size.height = scope.chartHeight; + } + }); + scope.$watch('showXAxis', function () { + scope.chartConfig.axis.x.show = scope.showXAxis === true; + }); + scope.$watch('showYAxis', function () { + scope.chartConfig.axis.y.show = scope.showYAxis === true; + }); + scope.$watch('chartData', function () { + scope.chartConfig.data = pfUtils.merge(scope.chartConfig.data, scope.getSparklineData(scope.chartData)); + }, true); + } + }; +}] +); +;/** + * @ngdoc directive + * @name patternfly.charts.directive:pfTrendsChart + * + * @description + * Directive for rendering a trend chart. The trend chart combines overall data with a + * pfSparklineChart. + *

      + * See http://c3js.org/reference.html for a full list of C3 chart options.
      + * See also: {@link patternfly.charts.directive:pfSparklineChart} + * + * @param {object} config configuration settings for the trends chart:
      + *
        + *
      • .chartId - the unique id of this trends chart + *
      • .title - (optional) title of the Trends chart + *
      • .layout - (optional) the layout and sizes of titles and chart. Values are 'large' (default), 'small', 'compact', and 'inline' + *
      • .trendLabel - (optional) the trend label used in the 'inline' layout + *
      • .timeFrame - (optional) the time frame for the data in the pfSparklineChart, ex: 'Last 30 Days' + *
      • .units - unit label for values, ex: 'MHz','GB', etc.. + *
      • .valueType - (optional) the format of the latest data point which is shown in the title. Values are 'actual'(default) or 'percentage' + *
      + * + * @param {object} chartData the data to be shown in the sparkline charts
      + *
        + *
      • .total - number representing the total amount + *
      • .xData - Array, X values for the data points, first element must be the name of the data + *
      • .yData - Array, Y Values for the data points, first element must be the name of the data + *
      • .dataAvailable - Flag if there is data available - default: true + *
      + * + * @param {int=} chartHeight height of the sparkline chart + * @param {boolean=} showXAxis override sparkline config settings for showing the X Axis + * @param {boolean=} showYAxis override sparkline config settings for showing the Y Axis + * @example + + +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      + + +
      +
      +
      +
      +
      +
      +
      + +
      +
      +
      +
      +
      +
      +
      + +
      +
      +
      +
      + +
      +
      +
      +
      +
      +
      + +
      +
      +
      +
      +
      +
      +
      + + angular.module( 'demo', ['patternfly.charts', 'patternfly.card'] ).controller( 'ChartCtrl', function( $scope ) { + + $scope.config = { + chartId : 'exampleTrendsChart', + title : 'Network Utilization Trends', + layout : 'large', + trendLabel : 'Virtual Disk I/O', + valueType : 'actual', + timeFrame : 'Last 15 Minutes', + units : 'MHz', + tooltipType : 'percentage' + }; + + $scope.footerConfig = { + iconClass : 'fa fa-plus-circle', + text : 'Add New Cluster', + callBackFn: function () { + alert("Footer Callback Fn Called"); + } + } + + $scope.filterConfig = { + filters : [{label:'Last 30 Days', value:'30'}, + {label:'Last 15 Days', value:'15'}, + {label:'Today', value:'today'}], + callBackFn: function (f) { + alert("Filter Callback Fn Called for '" + f.label + "' value = " + f.value); + } + } + + var today = new Date(); + var dates = ['dates']; + for (var d = 20 - 1; d >= 0; d--) { + dates.push(new Date(today.getTime() - (d * 24 * 60 * 60 * 1000))); + } + + $scope.data = { + dataAvailable: true, + total: 250, + xData: dates, + yData: ['used', 10, 20, 30, 20, 30, 10, 14, 20, 25, 68, 54, 56, 78, 56, 67, 88, 76, 65, 87, 76] + }; + + $scope.custShowXAxis = false; + $scope.custShowYAxis = false; + + $scope.addDataPoint = function () { + $scope.data.xData.push(new Date($scope.data.xData[$scope.data.xData.length - 1].getTime() + (24 * 60 * 60 * 1000))); + $scope.data.yData.push(Math.round(Math.random() * 100)); + }; + + $scope.$watch('valueType', function (newValue) { + $scope.config.valueType = newValue; + }); + + $scope.$watch('layout', function (newValue) { + $scope.config.layout = newValue; + }); + + }); + +
      + */ +angular.module('patternfly.charts').directive('pfTrendsChart', function () { + 'use strict'; + return { + restrict: 'A', + scope: { + config: '=', + chartData: '=', + chartHeight: '=?', + showXAxis: '=?', + showYAxis: '=?' + }, + replace: true, + templateUrl: 'charts/trends/trends-chart.html', + controller: ["$scope", function ($scope) { + var SMALL = 30, LARGE = 60; + + $scope.getPercentageValue = function () { + var pctValue = 0; + + if ($scope.chartData.dataAvailable !== false && $scope.chartData.total > 0) { + pctValue = Math.round($scope.getLatestValue() / $scope.chartData.total * 100.0); + } + return pctValue; + }; + $scope.getLatestValue = function () { + var latestValue = 0; + if ($scope.chartData.yData && $scope.chartData.yData.length > 0) { + latestValue = $scope.chartData.yData[$scope.chartData.yData.length - 1]; + } + return latestValue; + }; + $scope.getChartHeight = function () { + var retValue = LARGE; + if ($scope.chartHeight) { + retValue = $scope.chartHeight; + } else if ($scope.config.layout === 'small') { + retValue = SMALL; + } + return retValue; + }; + }], + link: function (scope) { + scope.$watch('config', function () { + scope.showLargeCardLayout = (!scope.config.layout || scope.config.layout === 'large'); + scope.showSmallCardLayout = (scope.config.layout === 'small'); + scope.showActualValue = (!scope.config.valueType || scope.config.valueType === 'actual'); + scope.showPercentageValue = (scope.config.valueType === 'percentage'); + }, true); + } + }; +}); +;/** + * @ngdoc directive + * @name patternfly.charts.directive:pfUtilizationBarChart + * + * @description + * Directive for rendering a utilization bar chart + * There are three possible fill colors for Used Percentage, dependent on whether or not there are thresholds:
      + *
        + *
      • When no thresholds exist, or if the used percentage has not surpassed any thresholds, the indicator is blue. + *
      • When the used percentage has surpassed the warning threshold, but not the error threshold, the indicator is orange. + *
      • When the used percentage has surpassed the error threshold, the indicator is is red. + *
      + * + * @param {object} chartData the data to be shown in the utilization bar chart
      + *
        + *
      • .used - number representing the amount used + *
      • .total - number representing the total amount + *
      • .dataAvailable - Flag if there is data available - default: true + *
      + * + * @param {object=} chart-title The title displayed on the left-hand side of the chart + * @param {object=} chart-footer The label displayed on the right-hand side of the chart. If chart-footer is not + * specified, the automatic footer-label-format will be used. + * @param {object=} layout Various alternative layouts the utilization bar chart may have:
      + *
        + *
      • .type - The type of layout to use. Valid values are 'regular' (default) displays the standard chart layout, + * and 'inline' displays a smaller, inline layout.
      • + *
      • .titleLabelWidth - Width of the left-hand title label when using 'inline' layout. Example values are "120px", "20%", "10em", etc..
      • + *
      • .footerLabelWidth - Width of the right-hand used label when using 'inline' layout. Example values are "120px", "20%", "10em", etc..
      • + *
      + * @param {string=} footer-label-format The auto-format of the label on the right side of the bar chart when chart-footer + * has not been specified. Values may be:
      + *
        + *
      • 'actual' - (default) displays the standard label of '(n) of (m) (units) Used'. + *
      • 'percent' - displays a percentage label of '(n)% Used'.
      • + *
      + * @param {object=} units to be displayed on the chart. Examples: "GB", "MHz", "I/Ops", etc... + * @param {string=} threshold-error The percentage used, when reached, denotes an error. Valid values are 1-100. When the error threshold + * has been reached, the used donut arc will be red. + * @param {string=} threshold-warning The percentage usage, when reached, denotes a warning. Valid values are 1-100. When the warning threshold + * has been reached, the used donut arc will be orange. + * + * @example + + +
      + + +
      +
      + +
      ../utilization-trend/utilization-trend-chart-directive.js
      +
      +
      +
      + +
      +
      +
      +
      +
      +
      +
      +
      + +
      +
      +
      +
      +
      +
      + + + angular.module( 'patternfly.example', ['patternfly.charts', 'patternfly.card']); + + angular.module( 'patternfly.example' ).controller( 'ChartCtrl', function( $scope ) { + + $scope.title1 = 'RAM Usage'; + $scope.units1 = 'MB'; + + $scope.data1 = { + 'dataAvailable': true, + 'used': '8', + 'total': '24' + }; + + $scope.title2 = 'Memory'; + $scope.units2 = 'GB'; + + $scope.data2 = { + 'used': '25', + 'total': '100' + }; + + $scope.title3 = 'CPU Usage'; + $scope.units3 = 'MHz'; + + $scope.data3 = { + 'used': '420', + 'total': '500', + }; + + $scope.title4 = 'Disk Usage'; + $scope.units4 = 'TB'; + $scope.data4 = { + 'used': '350', + 'total': '500', + }; + + $scope.title5 = 'Disk I/O'; + $scope.units5 = 'I/Ops'; + $scope.data5 = { + 'used': '450', + 'total': '500', + }; + + $scope.layoutInline = { + 'type': 'inline' + }; + + $scope.footer1 = '500 TB Total'; + $scope.footer2 = '450 of 500 Total'; + + }); + +
      +*/ + +angular.module('patternfly.charts').directive('pfUtilizationBarChart', ["$timeout", function ($timeout) { + 'use strict'; + return { + restrict: 'A', + scope: { + chartData: '=', + chartTitle: '=', + chartFooter: '=', + units: '=', + thresholdError: '=?', + thresholdWarning: '=?', + footerLabelFormat: '@?', + layout: '=?' + }, + + templateUrl: 'charts/utilization-bar/utilization-bar-chart.html', + link: function (scope) { + scope.$watch('chartData', function (newVal, oldVal) { + if (typeof(newVal) !== 'undefined') { + //Calculate the percentage used + scope.chartData.percentageUsed = Math.round(100 * (scope.chartData.used / scope.chartData.total)); + + if (scope.thresholdError || scope.thresholdWarning) { + scope.isError = (scope.chartData.percentageUsed >= scope.thresholdError); + scope.isWarn = (scope.chartData.percentageUsed >= scope.thresholdWarning && + scope.chartData.percentageUsed < scope.thresholdError); + scope.isOk = (scope.chartData.percentageUsed < scope.thresholdWarning); + } + + //Animate in the chart load. + scope.animate = true; + $timeout(function () { + scope.animate = false; + }, 0); + } + }); + + + } + }; +}]); +;/** + * @ngdoc directive + * @name patternfly.charts.directive:pfUtilizationTrendChart + * + * @description + * Directive for rendering a utilization trend chart. The utilization trend chart combines overall + * data with a pfDonutPctChart and a pfSparklineChart. Add the options for the pfDonutChart via + * the donutConfig parameter. Add the options for the pfSparklineChart via the sparklineConfig + * parameter. + *

      + * See http://c3js.org/reference.html for a full list of C3 chart options. + * + * @param {object} config configuration settings for the utilization trend chart:
      + *
        + *
      • .title - title of the Utilization chart + *
      • .units - unit label for values, ex: 'MHz','GB', etc.. + *
      + * + * @param {object} donutConfig configuration settings for the donut pct chart, see pfDonutPctChart for specifics
      + * @param {object} sparklineConfig configuration settings for the sparkline chart, see pfSparklineChart for specifics
      + * + * @param {object} chartData the data to be shown in the donut and sparkline charts
      + *
        + *
      • .used - number representing the amount used + *
      • .total - number representing the total amount + *
      • .xData - Array, X values for the data points, first element must be the name of the data + *
      • .yData - Array, Y Values for the data points, first element must be the name of the data + *
      • .dataAvailable - Flag if there is data available - default: true + *
      + * + * @param {string=} donutCenterLabel specifies the contents of the donut's center label.
      + * Values: + *
        + *
      • 'used' - displays the Used amount in the center label (default) + *
      • 'available' - displays the Available amount in the center label + *
      • 'percent' - displays the Usage Percent of the Total amount in the center label + *
      • 'none' - does not display the center label + *
      + * @param {int=} sparklineChartHeight height of the sparkline chart + * @param {boolean=} showSparklineXAxis override sparkline config settings for showing the X Axis + * @param {boolean=} showSparklineYAxis override sparkline config settings for showing the Y Axis + + * @example + + +
      +
      +
      +
      +
      +
      +
      +
      +
      + +
      + + + + +
      +
      +
      +
      + +
      + + + + +
      +
      +
      +
      +
      +
      + +
      + + +
      +
      +
      +
      +
      +
      + +
      + +
      +
      +
      +
      + +
      +
      +
      +
      +
      +
      + +
      +
      +
      +
      +
      + + + + angular.module( 'patternfly.charts' ).controller( 'ChartCtrl', function( $scope ) { + $scope.config = { + title: 'Memory', + units: 'GB' + }; + $scope.donutConfig = { + chartId: 'chartA', + thresholds: {'warning':'60','error':'90'} + }; + $scope.sparklineConfig = { + 'chartId': 'exampleSparkline', + 'tooltipType': 'default', + 'units': 'GB' + }; + + var today = new Date(); + var dates = ['dates']; + for (var d = 20 - 1; d >= 0; d--) { + dates.push(new Date(today.getTime() - (d * 24 * 60 * 60 * 1000))); + } + + $scope.data = { + dataAvailable: true, + used: 76, + total: 100, + xData: dates, + yData: ['used', '10', '20', '30', '20', '30', '10', '14', '20', '25', '68', '54', '56', '78', '56', '67', '88', '76', '65', '87', '76'] + }; + + $scope.centerLabel = 'used'; + + $scope.custShowXAxis = false; + $scope.custShowYAxis = false; + $scope.custChartHeight = 60; + + $scope.addDataPoint = function () { + var newData = Math.round(Math.random() * 100); + var newDate = new Date($scope.data.xData[$scope.data.xData.length - 1].getTime() + (24 * 60 * 60 * 1000)); + + $scope.data.used = newData; + $scope.data.xData.push(newDate); + $scope.data.yData.push(newData); + }; + }); + + + */ +angular.module('patternfly.charts').directive('pfUtilizationTrendChart', function () { + 'use strict'; + return { + restrict: 'A', + scope: { + chartData: '=', + config: '=', + centerLabel: '=?', + donutConfig: '=', + sparklineConfig: '=', + sparklineChartHeight: '=?', + showSparklineXAxis: '=?', + showSparklineYAxis: '=?' + }, + replace: true, + templateUrl: 'charts/utilization-trend/utilization-trend-chart.html', + controller: ['$scope', + function ($scope) { + if ($scope.centerLabel === undefined) { + $scope.centerLabel = 'used'; + + } + if ($scope.donutConfig.units === undefined) { + $scope.donutConfig.units = $scope.config.units; + } + if ($scope.chartData.available === undefined) { + $scope.chartData.available = $scope.chartData.total - $scope.chartData.used; + } + $scope.config.units = $scope.config.units || $scope.units; + } + ], + link: function (scope, element) { + var setupCurrentValues = function () { + if (scope.centerLabel === 'available') { + scope.currentValue = scope.chartData.used; + scope.currentText = 'Used'; + } else { + scope.currentValue = scope.chartData.total - scope.chartData.used; + scope.currentText = 'Available'; + } + }; + scope.$watchGroup(['centerLabel', 'chartData.used', 'chartData.available', 'chartData.total'], function () { + setupCurrentValues(); + }); + } + }; +}); +;/** + * @ngdoc directive + * @name patternfly.filters.directive:pfFilter + * + * @description + * Directive for a filter bar + *

      + * + * @param {object} config configuration settings for the filters:
      + *
        + *
      • .fields - (Array) List of filterable fields containing: + *
          + *
        • .id - (String) Optional unique Id for the filter field, useful for comparisons + *
        • .title - (String) The title to display for the filter field + *
        • .placeholder - (String) Text to display when no filter value has been entered + *
        • .filterType - (String) The filter input field type (any html input type, or 'select' for a single select box) + *
        • .filterValues - (Array) List of valid select values used when filterType is 'select' + *
        + *
      • .appliedFilters - (Array) List of the currently applied filters + *
      • .resultsCount - (int) The number of results returned after the current applied filters have been applied + *
      • .onFilterChange - ( function(array of filters) ) Function to call when the applied filters list changes + *
      + * + * @example + + +
      +
      +
      +
      +
      +
      + +
      +
      +
      +
      +
      + {{item.name}} +
      +
      + {{item.address}} +
      +
      + {{item.birthMonth}} +
      +
      +
      +
      +

      +
      + +
      +
      + +
      +
      +
      + + + angular.module('patternfly.filters').controller('ViewCtrl', ['$scope', + function ($scope) { + $scope.filtersText = ''; + + $scope.allItems = [ + { + name: "Fred Flintstone", + address: "20 Dinosaur Way, Bedrock, Washingstone", + birthMonth: 'February' + }, + { + name: "John Smith", + address: "415 East Main Street, Norfolk, Virginia", + birthMonth: 'October' + }, + { + name: "Frank Livingston", + address: "234 Elm Street, Pittsburgh, Pennsylvania", + birthMonth: 'March' + }, + { + name: "Judy Green", + address: "2 Apple Boulevard, Cincinatti, Ohio", + birthMonth: 'December' + }, + { + name: "Pat Thomas", + address: "50 Second Street, New York, New York", + birthMonth: 'February' + } + ]; + $scope.items = $scope.allItems; + + var matchesFilter = function (item, filter) { + var match = true; + + if (filter.id === 'name') { + match = item.name.match(filter.value) !== null; + } else if (filter.id === 'address') { + match = item.address.match(filter.value) !== null; + } else if (filter.id === 'birthMonth') { + match = item.birthMonth === filter.value; + } + return match; + }; + + var matchesFilters = function (item, filters) { + var matches = true; + + filters.forEach(function(filter) { + if (!matchesFilter(item, filter)) { + matches = false; + return false; + } + }); + return matches; + }; + + var applyFilters = function (filters) { + $scope.items = []; + if (filters && filters.length > 0) { + $scope.allItems.forEach(function (item) { + if (matchesFilters(item, filters)) { + $scope.items.push(item); + } + }); + } else { + $scope.items = $scope.allItems; + } + $scope.filterConfig.resultsCount = $scope.items.length; + }; + + var filterChange = function (filters) { + $scope.filtersText = ""; + filters.forEach(function (filter) { + $scope.filtersText += filter.title + " : " + filter.value + "\n"; + }); + applyFilters(filters); + }; + + $scope.filterConfig = { + fields: [ + { + id: 'name', + title: 'Name', + placeholder: 'Filter by Name', + filterType: 'text' + }, + { + id: 'address', + title: 'Address', + placeholder: 'Filter by Address', + filterType: 'text' + }, + { + id: 'birthMonth', + title: 'Birth Month', + placeholder: 'Filter by Birth Month', + filterType: 'select', + filterValues: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] + } + ], + resultsCount: $scope.items.length, + appliedFilters: [], + onFilterChange: filterChange + }; + } + ]); + +
      + */ +angular.module('patternfly.filters').directive('pfFilter', function () { + 'use strict'; + return { + restrict: 'A', + scope: { + config: '=' + }, + templateUrl: 'filters/filter.html', + controller: ["$scope", function ($scope) { + $scope.filterExists = function (filter) { + var foundFilter = _.findWhere($scope.config.appliedFilters, {title: filter.title, value: filter.value}); + return foundFilter !== undefined; + }; + + $scope.enforceSingleSelect = function (filter) { + _.remove($scope.config.appliedFilters, {title: filter.title}); + }; + + $scope.addFilter = function (field, value) { + var newFilter = { + id: field.id, + title: field.title, + type: field.filterType, + value: value + }; + if (!$scope.filterExists(newFilter)) { + + if (newFilter.type === 'select') { + $scope.enforceSingleSelect(newFilter); + } + + $scope.config.appliedFilters.push(newFilter); + + if ($scope.config.onFilterChange) { + $scope.config.onFilterChange($scope.config.appliedFilters); + } + } + }; + }] + }; +}); +;/** + * @ngdoc directive + * @name patternfly.filters.directive:pfFilterFields + * + * @description + * Directive for the filter bar's filter entry components + *

      + * + * @param {object} config configuration settings for the filters:
      + *
        + *
      • .fields - (Array) List of filterable fields containing: + *
          + *
        • .id - (String) Optional unique Id for the filter field, useful for comparisons + *
        • .title - (String) The title to display for the filter field + *
        • .placeholder - (String) Text to display when no filter value has been entered + *
        • .filterType - (String) The filter input field type (any html input type, or 'select' for a select box) + *
        • .filterValues - (Array) List of valid select values used when filterType is 'select' + *
        + *
      • .appliedFilters - (Array) List of the currently applied filters + *
      + * + */ +angular.module('patternfly.filters').directive('pfFilterFields', function () { + 'use strict'; + return { + restrict: 'A', + scope: { + config: '=', + addFilterFn: '=' + }, + templateUrl: 'filters/filter-fields.html', + controller: ["$scope", function ($scope) { + $scope.setupConfig = function () { + if ($scope.fields === undefined) { + $scope.fields = []; + } + if (!$scope.currentField) { + $scope.currentField = $scope.config.fields[0]; + $scope.config.currentValue = null; + } + + if ($scope.config.currentValue === undefined) { + $scope.config.currentValue = null; + } + }; + + $scope.$watch('config', function () { + $scope.setupConfig(); + }, true); + }], + + link: function (scope, element, attrs) { + scope.selectField = function (item) { + scope.currentField = item; + scope.config.currentValue = null; + }; + + scope.selectValue = function (filterValue) { + scope.addFilterFn(scope.currentField, filterValue); + scope.config.currentValue = null; + }; + + scope.onValueKeyPress = function (keyEvent) { + if (keyEvent.which === 13) { + scope.addFilterFn(scope.currentField, scope.config.currentValue); + scope.config.currentValue = undefined; + } + }; + } + }; +}); +;/** + * @ngdoc directive + * @name patternfly.filters.directive:pfFilterResults + * + * @description + * Directive for the filter results components + *

      + * + * @param {object} config configuration settings for the filter results:
      + *
        + *
      • .fields - (Array) List of filterable fields containing: + *
          + *
        • .id - (String) Optional unique Id for the filter field, useful for comparisons + *
        • .title - (String) The title to display for the filter field + *
        • .placeholder - (String) Text to display when no filter value has been entered + *
        • .filterType - (String) The filter input field type (any html input type, or 'select' for a select box) + *
        • .filterValues - (Array) List of valid select values used when filterType is 'select' + *
        + *
      • .appliedFilters - (Array) List of the currently applied filters + *
      • .resultsCount - (int) The number of results returned after the current applied filters have been applied + *
      • .onFilterChange - ( function(array of filters) ) Function to call when the applied filters list changes + *
      + * + */ +angular.module('patternfly.filters').directive('pfFilterResults', function () { + 'use strict'; + return { + restrict: 'A', + scope: { + config: '=' + }, + templateUrl: 'filters/filter-results.html', + controller: ["$scope", function ($scope) { + $scope.setupConfig = function () { + if (!$scope.config.appliedFilters) { + $scope.config.appliedFilters = []; + } + if ($scope.config.resultsCount === undefined) { + $scope.config.resultsCount = 0; + } + }; + + $scope.$watch('config', function () { + $scope.setupConfig(); + }, true); + }], + link: function (scope, element, attrs) { + scope.clearFilter = function (item) { + var newFilters = []; + scope.config.appliedFilters.forEach(function (filter) { + if (item.title !== filter.title || item.value !== filter.value) { + newFilters.push(filter); + } + }); + scope.config.appliedFilters = newFilters; + + if (scope.config.onFilterChange) { + scope.config.onFilterChange(scope.config.appliedFilters); + } + }; + + scope.clearAllFilters = function () { + scope.config.appliedFilters = []; + + if (scope.config.onFilterChange) { + scope.config.onFilterChange(scope.config.appliedFilters); + } + }; + } + }; +}); +;/** + * @ngdoc directive + * @name patternfly.form.directive:pfDatepicker + * + * @description + * Angular directive to wrap the bootstrap datepicker http://bootstrap-datepicker.readthedocs.org/en/latest/ + * + * @param {string} date the date model + * @param {string} options the configuration options for the date picker + * + * @example + + +
      +
      + +
      + Date: +
      +
      +
      + + + angular.module( 'patternfly.form' ).controller( 'FormDemoCtrl', function( $scope ) { + $scope.setToday = function () { + $scope.date = new Date(); + } + + $scope.options = { + autoclose: true, + todayBtn: 'linked', + todayHighlight: true + }; + }); + +
      + */ +angular.module('patternfly.form').directive('pfDatepicker', function () { + 'use strict'; + + return { + replace: true, + restrict: 'A', + require: '^form', + templateUrl: 'form/datepicker/datepicker.html', + scope: { + options: '=', + date: '=' + }, + link: function ($scope, element) { + + //Make sure the date picker is set with the correct options + element.datepicker($scope.options); + + //Set the initial value of the date picker + element.datepicker('update', $scope.date); + + //Change happened on the date picker side. Update the underlying date model + element.datepicker($scope.date).on('changeDate clearDate', function (elem) { + $scope.$apply(function () { + $scope.date = elem.date; + }); + }); + + //Update the date picker if there is a change on the date model + $scope.$watch('date', function (newValue, oldValue) { + var elemDate; + if (oldValue !== newValue) { + elemDate = element.datepicker('getDate'); + if (!elemDate || !newValue || elemDate.getTime() !== newValue.getTime()) { + //Update date picker value only when there is a change + //to avoid resetting when a wrong date is typed + //into input. + element.datepicker('update', newValue); + } + } + }); + } + }; +}); +;/** + * @ngdoc directive + * @name patternfly.form.directive:pfDateTimepicker + * + * @description + * Angular directive to wrap the bootstrap datetimepicker http://eonasdan.github.io/bootstrap-datetimepicker/ + * + * @param {object} date date and time moment object + * @param {string} options the configuration options for the date picker + * + * @example + + +
      + Date and Time: +
      +
      +
      + + + angular.module( 'patternfly.form' ).controller( 'FormDemoCtrl', function( $scope ) { + $scope.options = { + format: 'HH:mm' + }; + $scope.date = moment(); + }); + +
      + */ +angular.module('patternfly.form').directive('pfDateTimepicker', function () { + 'use strict'; + + return { + replace: true, + restrict: 'A', + require: '^form', + templateUrl: 'form/datetimepicker/datetimepicker.html', + scope: { + options: '=', + date: '=' + }, + link: function ($scope, element) { + //Make sure the date picker is set with the correct options + element.datetimepicker($scope.options); + + //Set the initial value of the date picker + element.datetimepicker('date', $scope.date || null); + + //Change happened on the date picker side. Update the underlying date model + element.on('dp.change', function (elem) { + $scope.$apply(function () { + $scope.date = elem.date; + }); + }); + } + }; +}); +;/** + * @ngdoc directive + * @name patternfly.form.directive:pfFormButtons + * + * @description + * Encapsulates the standard structure and styling for create and cancel buttons + * when used with a form. + * + * This directive creates new scope. + * + * @param {function} pfHandleCancel function to call when the user clicks cancel. + * @param {function} pfHandleSave function to call when the user clicks save. + * @param {expression} pfWorking the model to store the working status in. + * @param {string} pfButtonClass the class of the button container. + * + * @example + + + +
      +

      Saved?

      +

      {{ status }}

      +
      +
      Input + +
      +
      +
      +
      +
      + + + angular.module( 'patternfly.form' ).controller( 'FormButtonCtrl', function( $scope, $timeout ) { + $scope.status = 'Not yet Saved' + $scope.working = false; + + $scope.save = function (item) { + $scope.status = 'saved'; + $scope.working = true; + + $timeout(function () { + $scope.working = false; + }, 1000); + }; + + $scope.cancel = function () { + $scope.status = 'cancelled'; + $scope.input = null; + }; + }); + +
      + */ +angular.module('patternfly.form').directive('pfFormButtons', function () { + 'use strict'; + + return { + replace: true, + require: '^form', + templateUrl: 'form/form-buttons/form-buttons.html', + scope: { + pfHandleCancel: '&pfOnCancel', + pfHandleSave: '&pfOnSave', + pfWorking: '=', + pfButtonContainerClass: '@' + }, + link: function (scope, iElement, iAttrs, controller) { + if (scope.pfWorking === undefined) { + scope.pfWorking = false; + } + + scope.isInvalid = function () { + var invalid = controller.$invalid; + + angular.forEach(controller, function (value) { + if (value && value.$error) { + if (value.$error.server) { + invalid = false; + } + } + }); + + return invalid; + }; + } + }; +}); +;/** + * @ngdoc directive + * @name patternfly.form.directive:pfFormGroup + * + * @description + * Encapsulates the structure and styling for a label + input used within a + * Bootstrap3 based form. + * + * This directive creates new scope. + * + * @param {string} pfLabel the text for the
      + +
      + +
      + +
      +
      + +
      + +
      + +
      +
      + + + +

      Your preferred pet is {{pet}}.

      + + +
      + + + angular.module( 'patternfly.select' ).controller( 'SelectDemoCtrl', function( $scope ) { + $scope.drinks = ['tea', 'coffee', 'water']; + $scope.pets = ['Dog', 'Cat', 'Chicken']; + $scope.pet = $scope.pets[0]; + $scope.fruit = 'orange'; + }); + + +
      + */ +angular.module('patternfly.select', []).directive('pfSelect', ["$timeout", function ($timeout) { + 'use strict'; + + return { + restrict: 'A', + require: '?ngModel', + scope: { + selectPickerOptions: '=pfSelect' + }, + link: function (scope, element, attrs, ngModel) { + var optionCollectionList, optionCollectionExpr, optionCollection, $render = ngModel.$render; + + var selectpickerRefresh = function (argument) { + scope.$applyAsync(function () { + element.selectpicker('refresh'); + }); + }; + + var selectpickerDestroy = function () { + element.selectpicker('destroy'); + }; + + element.selectpicker(scope.selectPickerOptions); + + ngModel.$render = function () { + $render.apply(this, arguments); + selectpickerRefresh(); + }; + + if (attrs.ngOptions) { + optionCollectionList = attrs.ngOptions.split('in '); + optionCollectionExpr = optionCollectionList[optionCollectionList.length - 1].split(/track by|\|/); + optionCollection = optionCollectionExpr[0]; + + scope.$parent.$watchCollection(optionCollection, selectpickerRefresh); + } + + if (attrs.ngModel) { + scope.$parent.$watch(attrs.ngModel, selectpickerRefresh); + } + + attrs.$observe('disabled', selectpickerRefresh); + + scope.$on('$destroy', selectpickerDestroy); + } + }; +}]); +;/** + * @ngdoc directive + * @name patternfly.sort.directive:pfSort + * + * @description + * Directive for a sort component + *

      + * + * @param {object} config configuration settings for the sort:
      + *
        + *
      • .fields - (Array) List of sortable fields containing: + *
          + *
        • .id - (String) Unique Id for the sort field + *
        • .title - (String) The title to display for the sort field + *
        • .sortType - (String) The sort type, 'alpha' or 'numeric' + *
        + *
      • .currentField - (Object) Currently selected field + *
      • .isAscending - (boolean) Current sort direction is ascending. True for ascending, False for descending + *
      • .onSortChange - ( function(sortId, sortDirection ) Function to call when the current sort params change + *
      + * + * @example + + +
      +
      +
      +
      +
      +
      + +
      +
      +
      +
      +
      + {{item.name}} +
      +
      + {{item.count}} +
      +
      + {{item.description}} +
      +
      +
      +
      +
      +
      + + + angular.module('patternfly.sort').controller('ViewCtrl', ['$scope', + function ($scope) { + $scope.items = [ + { + name: "Item 7", + count: 432, + description: 'Very nice item' + }, + { + name: "Item 6", + count: 22, + description: 'It lasts forever' + }, + { + name: "Item 3", + count: 632, + description: 'Good stuff cheap' + }, + { + name: "Item 2", + count: 12, + description: 'Fantastic' + }, + { + name: "Item 9", + count: 99, + description: 'It does alright' + }, + { + name: "Item 4", + count: 442, + description: 'Horrible' + }, + { + name: "Item 1", + count: 42, + description: 'Most excellent' + }, + { + name: "Item 8", + count: 2, + description: 'Get it while it lasts' + }, + { + name: "Item 5", + count: 321, + description: 'Beautiful style' + } + ]; + + var compareFn = function(item1, item2) { + var compValue = 0; + if ($scope.sortConfig.currentField.id === 'name') { + compValue = item1.name.localeCompare(item2.name); + } else if ($scope.sortConfig.currentField.id === 'count') { + compValue = item1.count - item2.count; + } else if ($scope.sortConfig.currentField.id === 'description') { + compValue = item1.description.localeCompare(item2.description); + } + + if (!$scope.sortConfig.isAscending) { + compValue = compValue * -1; + } + + return compValue; + }; + + var sortChange = function (sortId, isAscending) { + $scope.items.sort(compareFn); + }; + + $scope.sortConfig = { + fields: [ + { + id: 'name', + title: 'Name', + sortType: 'alpha' + }, + { + id: 'count', + title: 'Count', + sortType: 'numeric' + }, + { + id: 'description', + title: 'Description', + sortType: 'alpha' + } + ], + onSortChange: sortChange + }; + } + ]); + +
      + */ +angular.module('patternfly.sort').directive('pfSort', function () { + 'use strict'; + return { + restrict: 'A', + scope: { + config: '=' + }, + templateUrl: 'sort/sort.html', + controller: ["$scope", function ($scope) { + + $scope.setupConfig = function () { + var updated = false; + + if ($scope.config.fields === undefined) { + $scope.config.fields = []; + } + + if ($scope.config.fields.length > 0) { + if ($scope.config.currentField === undefined) { + $scope.config.currentField = $scope.config.fields[0]; + updated = true; + } + if ($scope.config.isAscending === undefined) { + $scope.config.isAscending = true; + updated = true; + } + } + + if (updated === true && $scope.config.onSortChange) { + $scope.config.onSortChange($scope.config.currentField, $scope.config.isAscending); + } + }; + + $scope.selectField = function (field) { + $scope.config.currentField = field; + + if ($scope.config.onSortChange) { + $scope.config.onSortChange($scope.config.currentField, $scope.config.isAscending); + } + }; + + $scope.changeDirection = function () { + $scope.config.isAscending = !$scope.config.isAscending; + + if ($scope.config.onSortChange) { + $scope.config.onSortChange($scope.config.currentField, $scope.config.isAscending); + } + }; + + $scope.getSortIconClass = function () { + var iconClass; + + if ($scope.config.currentField.sortType === 'numeric') { + if ($scope.config.isAscending) { + iconClass = 'fa fa-sort-numeric-asc'; + } else { + iconClass = 'fa fa-sort-numeric-desc'; + } + } else { + if ($scope.config.isAscending) { + iconClass = 'fa fa-sort-alpha-asc'; + } else { + iconClass = 'fa fa-sort-alpha-desc'; + } + } + + return iconClass; + }; + + $scope.setupConfig(); + }], + + link: function (scope, element, attrs) { + scope.$watch('config', function () { + scope.setupConfig(); + }, true); + } + }; +}); +;/** + * @ngdoc directive + * @name patternfly.toolbars.directive:pfToolbar + * + * @description + * Directive for standard toolbar. Includes filtering and view selection capabilities + *

      + * + * @param {object} config configuration settings for the toolbar:
      + *
        + *
      • .filterConfig - (Object) Optional filter config. If undefined, no filtering capabilities are shown. + * See pfSimpleFilter for filter config options. + *
      • .sortConfig - (Object) Optional sort config. If undefined, no sort capabilities are shown. + * See pfSort for sort config options. + *
      • .viewsConfig - (Object) Optional configuration settings for view type selection + *
          + *
        • .views - (Array) List of available views for selection. See pfViewUtils for standard available views + *
            + *
          • .id - (String) Unique id for the view, used for comparisons + *
          • .title - (String) Optional title, uses as a tooltip for the view selector + *
          • .iconClass - (String) Icon class to use for the view selector + *
          + *
        • .onViewSelect - ( function(view) ) Function to call when a view is selected + *
        • .currentView - the id of the currently selected view + *
        + *
      • .actionsConfig - (Object) Optional configuration settings for toolbar actions + *
          + *
        • .primaryActions - (Array) List of primary actions to display on the toolbar + *
            + *
          • .name - (String) The name of the action, displayed on the button + *
          • .title - (String) Optional title, used for the tooltip + *
          • .actionFn - (function(action)) Function to invoke when the action selected + *
          • .isDisabled - (Boolean) set to true to disable the action + *
          + *
        • .moreActions - (Array) List of secondary actions to display on the toolbar action pulldown menu + *
            + *
          • .name - (String) The name of the action, displayed on the button + *
          • .title - (String) Optional title, used for the tooltip + *
          • .actionFn - (function(action)) Function to invoke when the action selected + *
          • .isDisabled - (Boolean) set to true to disable the action + *
          • .isSeparator - (Boolean) set to true if this is a placehodler for a separator rather than an action + *
          + *
        • .actionsInclude - (Boolean) set to true if using the actions transclude to add custom action buttons (only available if using Angular 1.5 or later) + *
        + *
      + * + * @example + + +
      +
      +
      + + + + + + + +
      +
      +
      +
      + +
      +
      +
      +
      +
      + {{item.name}} +
      +
      + {{item.address}} +
      +
      +
      +
      + {{item.age}} +
      +
      + {{item.birthMonth}} +
      +
      +
      +
      +
      +
      +
      + {{item.name}} +
      +
      + {{item.address}} +
      +
      + {{item.birthMonth}} +
      +
      +
      +
      + +
      +
      + +
      +
      + +
      +
      + +
      +
      +
      + + + angular.module('patternfly.toolbars').controller('ViewCtrl', ['$scope', 'pfViewUtils', + function ($scope, pfViewUtils) { + $scope.filtersText = ''; + + $scope.allItems = [ + { + name: "Fred Flintstone", + age: 57, + address: "20 Dinosaur Way, Bedrock, Washingstone", + birthMonth: 'February' + }, + { + name: "John Smith", + age: 23, + address: "415 East Main Street, Norfolk, Virginia", + birthMonth: 'October' + }, + { + name: "Frank Livingston", + age: 71, + address: "234 Elm Street, Pittsburgh, Pennsylvania", + birthMonth: 'March' + }, + { + name: "Judy Green", + age: 21, + address: "2 Apple Boulevard, Cincinatti, Ohio", + birthMonth: 'December' + }, + { + name: "Pat Thomas", + age: 19, + address: "50 Second Street, New York, New York", + birthMonth: 'February' + } + ]; + $scope.items = $scope.allItems; + + var matchesFilter = function (item, filter) { + var match = true; + + if (filter.id === 'name') { + match = item.name.match(filter.value) !== null; + } else if (filter.id === 'age') { + match = item.age === parseInt(filter.value); + } else if (filter.id === 'address') { + match = item.address.match(filter.value) !== null; + } else if (filter.id === 'birthMonth') { + match = item.birthMonth === filter.value; + } + return match; + }; + + var matchesFilters = function (item, filters) { + var matches = true; + + filters.forEach(function(filter) { + if (!matchesFilter(item, filter)) { + matches = false; + return false; + } + }); + return matches; + }; + + var applyFilters = function (filters) { + $scope.items = []; + if (filters && filters.length > 0) { + $scope.allItems.forEach(function (item) { + if (matchesFilters(item, filters)) { + $scope.items.push(item); + } + }); + } else { + $scope.items = $scope.allItems; + } + }; + + var filterChange = function (filters) { + $scope.filtersText = ""; + filters.forEach(function (filter) { + $scope.filtersText += filter.title + " : " + filter.value + "\n"; + }); + applyFilters(filters); + $scope.toolbarConfig.filterConfig.resultsCount = $scope.items.length; + }; + + $scope.filterConfig = { + fields: [ + { + id: 'name', + title: 'Name', + placeholder: 'Filter by Name...', + filterType: 'text' + }, + { + id: 'age', + title: 'Age', + placeholder: 'Filter by Age...', + filterType: 'text' + }, + { + id: 'address', + title: 'Address', + placeholder: 'Filter by Address...', + filterType: 'text' + }, + { + id: 'birthMonth', + title: 'Birth Month', + placeholder: 'Filter by Birth Month...', + filterType: 'select', + filterValues: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] + } + ], + resultsCount: $scope.items.length, + appliedFilters: [], + onFilterChange: filterChange + }; + + var viewSelected = function(viewId) { + $scope.viewType = viewId + }; + + $scope.viewsConfig = { + views: [pfViewUtils.getListView(), pfViewUtils.getCardView()], + onViewSelect: viewSelected + }; + $scope.viewsConfig.currentView = $scope.viewsConfig.views[0].id; + $scope.viewType = $scope.viewsConfig.currentView; + + var monthVals = { + 'January': 1, + 'February': 2, + 'March': 3, + 'April': 4, + 'May': 5, + 'June': 6, + 'July': 7, + 'August': 8, + 'September': 9, + 'October': 10, + 'November': 11, + 'December': 12 + }; + var compareFn = function(item1, item2) { + var compValue = 0; + if ($scope.sortConfig.currentField.id === 'name') { + compValue = item1.name.localeCompare(item2.name); + } else if ($scope.sortConfig.currentField.id === 'age') { + compValue = item1.age - item2.age; + } else if ($scope.sortConfig.currentField.id === 'address') { + compValue = item1.address.localeCompare(item2.address); + } else if ($scope.sortConfig.currentField.id === 'birthMonth') { + compValue = monthVals[item1.birthMonth] - monthVals[item2.birthMonth]; + } + + if (!$scope.sortConfig.isAscending) { + compValue = compValue * -1; + } + + return compValue; + }; + + var sortChange = function (sortId, isAscending) { + $scope.items.sort(compareFn); + }; + + $scope.sortConfig = { + fields: [ + { + id: 'name', + title: 'Name', + sortType: 'alpha' + }, + { + id: 'age', + title: 'Age', + sortType: 'numeric' + }, + { + id: 'address', + title: 'Address', + sortType: 'alpha' + }, + { + id: 'birthMonth', + title: 'Birth Month', + sortType: 'alpha' + } + ], + onSortChange: sortChange + }; + + $scope.actionsText = ""; + var performAction = function (action) { + $scope.actionsText = action.name + "\n" + $scope.actionsText; + }; + + $scope.actionsConfig = { + primaryActions: [ + { + name: 'Action 1', + title: 'Do the first thing', + actionFn: performAction + }, + { + name: 'Action 2', + title: 'Do something else', + actionFn: performAction + } + ], + moreActions: [ + { + name: 'Action', + title: 'Perform an action', + actionFn: performAction + }, + { + name: 'Another Action', + title: 'Do something else', + actionFn: performAction + }, + { + name: 'Disabled Action', + title: 'Unavailable action', + actionFn: performAction, + isDisabled: true + }, + { + name: 'Something Else', + title: '', + actionFn: performAction + }, + { + isSeparator: true + }, + { + name: 'Grouped Action 1', + title: 'Do something', + actionFn: performAction + }, + { + name: 'Grouped Action 2', + title: 'Do something similar', + actionFn: performAction + } + ], + actionsInclude: true + }; + + $scope.toolbarConfig = { + viewsConfig: $scope.viewsConfig, + filterConfig: $scope.filterConfig, + sortConfig: $scope.sortConfig, + actionsConfig: $scope.actionsConfig + }; + + $scope.listConfig = { + selectionMatchProp: 'name', + checkDisabled: false + }; + + $scope.doAdd = function () { + $scope.actionsText = "Add Action\n" + $scope.actionsText; + }; + $scope.optionSelected = function (option) { + $scope.actionsText = "Option " + option + " selected\n" + $scope.actionsText; + }; + } + ]); + +
      + */ +angular.module('patternfly.toolbars').directive('pfToolbar', function () { + 'use strict'; + return { + restrict: 'A', + scope: { + config: '=' + }, + replace: true, + transclude: { + 'actions': '?' + }, + templateUrl: 'toolbars/toolbar.html', + controller: ["$scope", function ($scope) { + $scope.viewSelected = function (viewId) { + $scope.config.viewsConfig.currentView = viewId; + if ($scope.config.viewsConfig.onViewSelect && !$scope.checkViewDisabled(viewId)) { + $scope.config.viewsConfig.onViewSelect(viewId); + } + }; + + $scope.isViewSelected = function (viewId) { + return $scope.config.viewsConfig && ($scope.config.viewsConfig.currentView === viewId); + }; + + $scope.checkViewDisabled = function (view) { + return $scope.config.viewsConfig.checkViewDisabled && $scope.config.viewsConfig.checkViewDisabled(view); + }; + + $scope.filterExists = function (filter) { + var foundFilter = _.findWhere($scope.config.filterConfig.appliedFilters, {title: filter.title, value: filter.value}); + return foundFilter !== undefined; + }; + + $scope.addFilter = function (field, value) { + var newFilter = { + id: field.id, + title: field.title, + value: value + }; + if (!$scope.filterExists(newFilter)) { + $scope.config.filterConfig.appliedFilters.push(newFilter); + + if ($scope.config.filterConfig.onFilterChange) { + $scope.config.filterConfig.onFilterChange($scope.config.filterConfig.appliedFilters); + } + } + }; + + $scope.handleAction = function (action) { + if (action && action.actionFn && (action.isDisabled !== true)) { + action.actionFn(action); + } + }; + }], + + link: function (scope, element, attrs) { + scope.$watch('config', function () { + if (scope.config && scope.config.viewsConfig && scope.config.viewsConfig.views) { + scope.config.viewsConfig.viewsList = angular.copy(scope.config.viewsConfig.views); + + if (!scope.config.viewsConfig.currentView) { + scope.config.viewsConfig.currentView = scope.config.viewsConfig.viewsList[0]; + } + } + }, true); + } + }; +}); +;/** + * @ngdoc directive + * @name patternfly.utils:pfFixedAccordion + * @restrict A + * @element ANY + * @param {string} scrollSelector specifies the selector to be used to find the element that should scroll (optional, the entire collapse area scrolls by default) + * @param {string} groupHeight Height to set for uib-accordion group (optional) + * @param {string} groupClass Class to set for uib-accordion group (optional) + * + * @description + * Directive for setting a ui-bootstrap uib-accordion to use a fixed height (collapse elements scroll when necessary) + * + * @example + + +
      +
      + + + Praesent sagittis est et arcu fringilla placerat. Cras erat ante, dapibus non mauris ac, volutpat sollicitudin ligula. Morbi gravida nisl vel risus tempor, sit amet luctus erat tempus. Curabitur blandit sem non pretium bibendum. Donec eleifend non turpis vitae vestibulum. Vestibulum ut sem ac nunc posuere blandit sed porta lorem. Cras rutrum velit vel leo iaculis imperdiet. + + + Donec consequat dignissim neque, sed suscipit quam egestas in. Fusce bibendum laoreet lectus commodo interdum. Vestibulum odio ipsum, tristique et ante vel, iaculis placerat nulla. Suspendisse iaculis urna feugiat lorem semper, ut iaculis risus tempus. + + + Curabitur nisl quam, interdum a venenatis a, consequat a ligula. Nunc nec lorem in erat rhoncus lacinia at ac orci. Sed nec augue congue, vehicula justo quis, venenatis turpis. Nunc quis consectetur purus. Nam vitae viverra lacus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum eu augue felis. Maecenas in dignissim purus, quis pulvinar lectus. Vivamus euismod ultrices diam, in mattis nibh. + + + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + + + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est eleifend mi, non fermentum diam nisl sit amet erat. Duis semper. Duis arcu massa, scelerisque vitae, consequat in, pretium a, enim. Pellentesque congue. Ut in risus volutpat libero pharetra tempor. Cras vestibulum bibendum augue. Praesent egestas leo in pede. Praesent blandit odio eu enim. Pellentesque sed dui ut augue blandit sodales. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aliquam nibh. Mauris ac mauris sed pede pellentesque fermentum. Maecenas adipiscing ante non diam sodales hendrerit. + + + Ut velit mauris, egestas sed, gravida nec, ornare ut, mi. Aenean ut orci vel massa suscipit pulvinar. Nulla sollicitudin. Fusce varius, ligula non tempus aliquam, nunc turpis ullamcorper nibh, in tempus sapien eros vitae ligula. Pellentesque rhoncus nunc et augue. Integer id felis. Curabitur aliquet pellentesque diam. Integer quis metus vitae elit lobortis egestas. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi vel erat non mauris convallis vehicula. Nulla et sapien. Integer tortor tellus, aliquam faucibus, convallis id, congue eu, quam. Mauris ullamcorper felis vitae erat. Proin feugiat, augue non elementum posuere, metus purus iaculis lectus, et tristique ligula justo vitae magna. + + + Aliquam convallis sollicitudin purus. Praesent aliquam, enim at fermentum mollis, ligula massa adipiscing nisl, ac euismod nibh nisl eu lectus. Fusce vulputate sem at sapien. Vivamus leo. Aliquam euismod libero eu enim. Nulla nec felis sed leo placerat imperdiet. Aenean suscipit nulla in justo. Suspendisse cursus rutrum augue. Nulla tincidunt tincidunt mi. Curabitur iaculis, lorem vel rhoncus faucibus, felis magna fermentum augue, et ultricies lacus lorem varius purus. Curabitur eu amet. + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed at ante. Mauris eleifend, quam a vulputate dictum, massa quam dapibus leo, eget vulputate orci purus ut lorem. In fringilla mi in ligula. Pellentesque aliquam quam vel dolor. Nunc adipiscing. Sed quam odio, tempus ac, aliquam molestie, varius ac, tellus. Vestibulum ut nulla aliquam risus rutrum interdum. Pellentesque lorem. Curabitur sit amet erat quis risus feugiat viverra. Pellentesque augue justo, sagittis et, lacinia at, venenatis non, arcu. Nunc nec libero. In cursus dictum risus. Etiam tristique nisl a nulla. Ut a orci. Curabitur dolor nunc, egestas at, accumsan at, malesuada nec, magna. + + +
      +
      +
      + + + angular.module('patternfly.utils').controller( 'AccordionCntrl', function($scope) { + }); + +
      + */ +angular.module('patternfly.utils').directive('pfFixedAccordion', ["$window", "$timeout", function ($window, $timeout) { + 'use strict'; + return { + restrict: 'A', + scope: { + scrollSelector: '@', + groupHeight: '@', + groupClass: '@' + }, + link: function ($scope, $element, $attrs) { + var setCollapseHeights = function () { + var componentSelector, height, openPanel, contentHeight, bodyHeight, overflowY = 'hidden', parentElement = $element.find('.panel-group'); + + height = parentElement.height(); + + // Close any open panel + openPanel = parentElement.find('.collapse.in'); + if (openPanel && openPanel.length > 0) { + openPanel.removeClass('in'); + } + + // Determine the necessary height for the closed content + contentHeight = 0; + parentElement.children().each(function (index, groupHeading) { + var headingElement = angular.element(groupHeading); + contentHeight += headingElement.prop('offsetHeight'); + contentHeight += parseInt(headingElement.css('margin-top')); + contentHeight += parseInt(headingElement.css('margin-bottom')); + }); + + // Determine the height remaining for opened collapse panels + bodyHeight = height - contentHeight; + + // Make sure we have enough height to be able to scroll the contents if necessary + if (bodyHeight < 25) { + bodyHeight = 25; + + // Allow the parent to scroll so the child elements are accessible + overflowY = 'auto'; + } + + // Reopen the initially opened panel + if (openPanel && openPanel.length > 0) { + openPanel.addClass("in"); + } + + $timeout(function () { + // Set the max-height for the fixed height components + parentElement.find('.panel-collapse').each(function (index, collapsePanel) { + var $panel = angular.element(collapsePanel); + var scrollElement = $panel; + var innerHeight = 0; + var selected; + var $sibling; + + if (angular.isDefined($scope.scrollSelector)) { + selected = angular.element($panel.find($scope.scrollSelector)); + if (selected.length === 1) { + scrollElement = angular.element(selected[0]); + $panel.children().each(function (j, sibling) { + if (sibling !== scrollElement[0]) { + $sibling = angular.element(sibling); + innerHeight += $sibling.prop('offsetHeight'); + innerHeight += parseInt($sibling.css('margin-top')); + innerHeight += parseInt($sibling.css('margin-bottom')); + } + }); + } + } + + // set the max-height + angular.element(scrollElement).css('max-height', (bodyHeight - innerHeight) + 'px'); + angular.element(scrollElement).css('overflow-y', 'auto'); + }); + }); + + angular.element(parentElement).css('overflow-y', overflowY); + }; + + if ($scope.groupHeight) { + $element.find('.panel-group').css("height", $scope.groupHeight); + } + if ($scope.groupClass) { + $element.find('.panel-group').addClass($scope.groupClass); + } + + $timeout(function () { + setCollapseHeights(); + }, 100); + + // Update on window resizing + angular.element($window).bind('resize', function () { + setCollapseHeights(); + }); + } + }; +}]); +; +/** + * @ngdoc directive + * @name patternfly.utils.directive:pfTransclude + * @restrict A + * @element ANY + * @param {string} pfTransclude specifies the type of transclusion to use.
      + * Values: + *
        + *
      • 'sibling' - The transcluded contents scope is a sibling one to the element where transclusion happens (default) + *
      • 'parent' - The transcluded contents scope is that of the element where transclusion happens. + *
      • 'child' - The transcluded contents scope is child scope to the scope of the element where transclusion happens. + *
      + * + * @description + * Directive for transcluding in directives and setting up scope of children of parent directives. This is a workaround + * for https://github.com/angular/angular.js/issues/5489 + * + * @example + + +
      + Here the scope id is: {{$id}} + + +
      This content was transcluded using pf-transclude or pf-transclude="sibling".
      Its scope is: {{$id}} the parent of which is {{$parent.$id}}
      +
      + + +
      This content was transcluded using pf-transclude="parent".
      Its scope is: {{$id}} the parent of which is {{$parent.$id}}
      +
      + + +
      This content was transcluded using pf-transclude="child".
      Its scope is: {{$id}} the parent of which is {{$parent.$id}}
      +
      +
      +
      + + + angular.module('patternfly.utils') + .controller( 'UtilCtrl', function($scope) { + + }) + + .config(function($provide){ + $provide.decorator('ngTranscludeDirective', ['$delegate', function($delegate) { + // Remove the original directive + $delegate.shift(); + return $delegate; + }]); + }) + + .directive( 'transcludeSibling', function() { + return { + restrict: 'E', + transclude: true, + scope: {}, + template: + '
      ' + + '

      I am a directive with scope {{$id}}

      ' + + '' + + '
      ' + } + }) + + .directive( 'transcludeParent', function() { + return { + restrict: 'E', + transclude: true, + scope: {}, + template: + '
      ' + + '

      I am a directive with scope {{$id}}

      ' + + '' + + '
      ' + } + }) + + .directive( 'transcludeChild', function() { + return { + restrict: 'E', + transclude: true, + scope: {}, + template: + '
      ' + + '

      I am a directive with scope {{$id}}

      ' + + '' + + '
      ' + } + }) + ; +
      +
      + */ +angular + .module('patternfly.utils').directive('pfTransclude', function () { + 'use strict'; + return { + restrict: 'A', + link: function ($scope, $element, $attrs, controller, $transclude) { + var iChildScope; + var iScopeType; + + if (!$transclude) { + throw new Error('pfTransclude - ' + + 'Illegal use of pfTransclude directive in the template! ' + + 'No parent directive that requires a transclusion found. ' + + 'Element: {0}'); + } + + iScopeType = $attrs.pfTransclude || 'sibling'; + + switch (iScopeType) { + case 'sibling': + $transclude(function (clone) { + $element.empty(); + $element.append(clone); + }); + break; + case 'parent': + $transclude($scope, function (clone) { + $element.empty(); + $element.append( clone ); + }); + break; + case 'child': + iChildScope = $scope.$new(); + $transclude( iChildScope, function (clone) { + $element.empty(); + $element.append( clone ); + $element.on( '$destroy', function () { + iChildScope.$destroy(); + }); + }); + break; + } + } + }; + }); +;(function () { + 'use strict'; + + angular.module('patternfly.utils').constant('pfUtils', { + merge: function (source1, source2) { + var retValue; + + if (typeof angular.merge === 'function') { + retValue = this.angularMerge(source1, source2); + } else if (typeof _.merge === 'function') { + retValue = this._merge(source1, source2); + } else if (typeof $.extend === 'function') { + retValue = this.$extend(source1, source2); + } else { + retValue = this.mergeDeep(source1, source2); + } + + return retValue; + }, + angularMerge: function (source1, source2) { + return angular.merge({}, source1, source2); + }, + _merge: function (source1, source2) { + return _.merge({}, source1, source2); + }, + $extend: function (source1, source2) { + return $.extend(true, angular.copy(source1), source2); + }, + mergeDeep: function (source1, source2) { + return mergeDeep({}, angular.copy(source1), angular.copy(source2)); + }, + + colorPalette: $.pfPaletteColors + }); +})(); + +/* This function does not merge/concat Arrays. + * It replaces the earlier Array with any latter Array. + */ +function mergeDeep (dst) { + 'use strict'; + angular.forEach(arguments, function (obj) { + if (obj !== dst) { + angular.forEach(obj, function (value, key) { + if (dst[key] && dst[key].constructor && dst[key].constructor === Object) { + mergeDeep(dst[key], value); + } else { + dst[key] = value; + } + }); + } + }); + return dst; +} +;/** + * @ngdoc directive + * @name patternfly.validation:pfValidation + * @restrict E + * @element INPUT + * @scope + * + * @description + * Directive used for input validation based on custom function. + * + * @param {expression=} pfValidationDisabled If true, the validation is disabled, it is enabled otherwise. + * + * @example + + + +
      +
      + +
      + +
      + + The value you typed is not a number. +
      +
      + +
      + +
      + + The value you typed is not a number. +
      +
      + +
      + +
      + + The value you typed is not a number. +
      +
      + +
      + +
      + +
      +
      +
      +
      +
      + + + angular.module( 'patternfly.validation' ).controller( 'ValidationDemoCtrl', function( $scope ) { + $scope.myValue = "Change this value to be a number"; + $scope.myValueValid = 42; + $scope.isValidationDisabled = false; + + $scope.isNumber = function (value) { + if (isNaN(value)) { + return false; + } + + return true; + } + }); + + +
      + */ +angular.module('patternfly.validation', []).directive('pfValidation', ["$timeout", function ($timeout) { + 'use strict'; + + return { + restrict: 'A', + require: 'ngModel', + scope: { + pfValidation: '&', + pfValidationDisabled: '=' + }, + link: function (scope, element, attrs, ctrl) { + + scope.inputCtrl = ctrl; + scope.valEnabled = !attrs.pfValidationDisabled; + + scope.$watch('pfValidationDisabled', function (newVal) { + scope.valEnabled = !newVal; + if (newVal) { + scope.inputCtrl.$setValidity('pfValidation', true); + toggleErrorClass(false); + } else { + validate(); + } + }); + + // If validation function is set + if (attrs.pfValidation) { + // using $timeout(0) to get the actual $modelValue + $timeout(function () { + validate(); + }, 0); + } else if (!scope.inputCtrl.$valid && scope.inputCtrl.$dirty) { + toggleErrorClass(true); + } + + scope.$watch('inputCtrl.$valid', function (isValid) { + if (isValid) { + toggleErrorClass(false); + } else { + toggleErrorClass(true); + } + }); + + scope.$watch('inputCtrl.$modelValue', function () { + validate(); + }); + + function validate () { + var valid; + + var val = scope.inputCtrl.$modelValue; + + var valFunc = scope.pfValidation({'input': val}); + + if (!attrs.pfValidation) { + valFunc = true; + } + + valid = !val || valFunc || val === ''; + + if (scope.valEnabled && !valid) { + toggleErrorClass(true); + } else { + toggleErrorClass(false); + } + } + + function toggleErrorClass (add) { + var messageElement = element.next(); + var parentElement = element.parent(); + var hasErrorM = parentElement.hasClass('has-error'); + var wasHidden = messageElement.hasClass('ng-hide'); + + scope.inputCtrl.$setValidity('pf-validation', !add); + + if (add) { + if (!hasErrorM) { + parentElement.addClass('has-error'); + } + if (wasHidden) { + messageElement.removeClass('ng-hide'); + } + } + + if (!add) { + if (hasErrorM) { + parentElement.removeClass('has-error'); + } + if (!wasHidden) { + messageElement.addClass('ng-hide'); + } + } + } + } + }; +}]); +;/** + * @ngdoc directive + * @name patternfly.views.directive:pfCardView + * + * @description + * Directive for rendering cards in a view + *

      + * + * @param {object} config configuration settings for the cards:
      + *
        + *
      • .showSelectBox - (boolean) Show item selection boxes for each item, default is true + *
      • .selectItems - (boolean) Allow card selection, default is false + *
      • .dlbClick - (boolean) Handle double clicking (item remains selected on a double click). Default is false. + *
      • .multiSelect - (boolean) Allow multiple card selections, selectItems must also be set, not applicable when dblClick is true. Default is false + *
      • .selectionMatchProp - (string) Property of the items to use for determining matching, default is 'uuid' + *
      • .selectedItems - (array) Current set of selected items + *
      • .checkDisabled - ( function(item) ) Function to call to determine if an item is disabled, default is none + *
      • .onCheckBoxChange - ( function(item) ) Called to notify when a checkbox selection changes, default is none + *
      • .onSelect - ( function(item, event) ) Called to notify of item selection, default is none + *
      • .onSelectionChange - ( function(items) ) Called to notify when item selections change, default is none + *
      • .onClick - ( function(item, event) ) Called to notify when an item is clicked, default is none + *
      • .onDblClick - ( function(item, event) ) Called to notify when an item is double clicked, default is none + *
      + * + * @param {Array} items the data to be shown in the cards
      + * + * @example + + + +
      +
      +
      +
      + {{item.name}} +
      +
      + {{item.address}} +
      +
      + {{item.city}}, {{item.state}} +
      +
      +
      +
      +
      +
      +
      + +
      + + + +
      +
      +
      +
      +
      +
      + + +
      +
      +
      +
      +
      +
      + +
      +
      +
      +
      + +
      +
      + +
      +
      +
      + + + angular.module('patternfly.views').controller('ViewCtrl', ['$scope', + function ($scope) { + $scope.eventText = ''; + var handleSelect = function (item, e) { + $scope.eventText = item.name + ' selected\n' + $scope.eventText; + }; + var handleSelectionChange = function (selectedItems, e) { + $scope.eventText = selectedItems.length + ' items selected\n' + $scope.eventText; + }; + var handleClick = function (item, e) { + $scope.eventText = item.name + ' clicked\n' + $scope.eventText; + }; + var handleDblClick = function (item, e) { + $scope.eventText = item.name + ' double clicked\n' + $scope.eventText; + }; + var handleCheckBoxChange = function (item, selected, e) { + $scope.eventText = item.name + ' checked: ' + item.selected + '\n' + $scope.eventText; + }; + + var checkDisabledItem = function(item) { + return $scope.showDisabled && (item.name === "John Smith"); + }; + + $scope.selectType = 'checkbox'; + $scope.updateSelectionType = function() { + if ($scope.selectType === 'checkbox') { + $scope.config.selectItems = false; + $scope.config.showSelectBox = true; + } else if ($scope.selectType === 'card') { + $scope.config.selectItems = true; + $scope.config.showSelectBox = false; + } else { + $scope.config.selectItems = false + $scope.config.showSelectBox = false; + } + }; + + $scope.showDisabled = false; + + $scope.config = { + selectItems: false, + multiSelect: false, + dblClick: false, + selectionMatchProp: 'name', + selectedItems: [], + checkDisabled: checkDisabledItem, + showSelectBox: true, + onSelect: handleSelect, + onSelectionChange: handleSelectionChange, + onCheckBoxChange: handleCheckBoxChange, + onClick: handleClick, + onDblClick: handleDblClick + }; + + $scope.items = [ + { + name: "Fred Flintstone", + address: "20 Dinosaur Way", + city: "Bedrock", + state: "Washingstone" + }, + { + name: "John Smith", + address: "415 East Main Street", + city: "Norfolk", + state: "Virginia" + }, + { + name: "Frank Livingston", + address: "234 Elm Street", + city: "Pittsburgh", + state: "Pennsylvania" + }, + { + name: "Judy Green", + address: "2 Apple Boulevard", + city: "Cincinatti", + state: "Ohio" + }, + { + name: "Pat Thomas", + address: "50 Second Street", + city: "New York", + state: "New York" + }, + ] + } + ]); + +
      + */ +angular.module('patternfly.views').directive('pfCardView', ["pfUtils", function (pfUtils) { + 'use strict'; + return { + restrict: 'A', + scope: { + config: '=?', + items: '=', + eventId: '@id' + }, + transclude: true, + templateUrl: 'views/cardview/card-view.html', + controller: ["$scope", function ($scope) { + $scope.defaultConfig = { + selectItems: false, + multiSelect: false, + dblClick: false, + selectionMatchProp: 'uuid', + selectedItems: [], + checkDisabled: false, + showSelectBox: true, + onSelect: null, + onSelectionChange: null, + onCheckBoxChange: null, + onClick: null, + onDblClick: null + }; + + $scope.config = pfUtils.merge($scope.defaultConfig, $scope.config); + if ($scope.config.selectItems && $scope.config.showSelectBox) { + throw new Error('pfCardView - ' + + 'Illegal use of pfCardView directive! ' + + 'Cannot allow both select box and click selection in the same card view.'); + } + }], + link: function (scope, element, attrs) { + attrs.$observe('config', function () { + scope.config = pfUtils.merge(scope.defaultConfig, scope.config); + if (!scope.config.selectItems) { + scope.config.selectedItems = []; + } + if (!scope.config.multiSelect && scope.config.selectedItems && scope.config.selectedItems.length > 0) { + scope.config.selectedItems = [scope.config.selectedItems[0]]; + } + }); + + scope.itemClick = function (e, item) { + var alreadySelected; + var selectionChanged = false; + var continueEvent = true; + + // Ignore disabled item clicks completely + if (scope.checkDisabled(item)) { + return continueEvent; + } + + if (scope.config && scope.config.selectItems && item) { + if (scope.config.multiSelect && !scope.config.dblClick) { + + alreadySelected = _.find(scope.config.selectedItems, function (itemObj) { + return itemObj === item; + }); + + if (alreadySelected) { + // already selected so deselect + scope.config.selectedItems = _.without(scope.config.selectedItems, item); + } else { + // add the item to the selected items + scope.config.selectedItems.push(item); + selectionChanged = true; + } + } else { + if (scope.config.selectedItems[0] === item) { + if (!scope.config.dblClick) { + scope.config.selectedItems = []; + selectionChanged = true; + } + continueEvent = false; + } else { + scope.config.selectedItems = [item]; + selectionChanged = true; + } + } + + if (selectionChanged && scope.config.onSelect) { + scope.config.onSelect(item, e); + } + if (selectionChanged && scope.config.onSelectionChange) { + scope.config.onSelectionChange(scope.config.selectedItems, e); + } + } + if (scope.config.onClick) { + scope.config.onClick(item, e); + } + + return continueEvent; + }; + + scope.dblClick = function (e, item) { + if (scope.config.onDblClick) { + scope.config.onDblClick(item, e); + } + }; + + scope.checkBoxChange = function (item) { + if (scope.config.onCheckBoxChange) { + scope.config.onCheckBoxChange(item); + } + }; + + scope.isSelected = function (item) { + var matchProp = scope.config.selectionMatchProp; + var selected = false; + + if (scope.config.showSelectBox) { + selected = item.selected; + } else { + if (scope.config.selectedItems.length) { + return _.find(scope.config.selectedItems, function (itemObj) { + return itemObj[matchProp] === item[matchProp]; + }); + } + } + return selected; + }; + + scope.checkDisabled = function (item) { + return scope.config.checkDisabled && scope.config.checkDisabled(item); + }; + } + }; +}]); +;/** + * @ngdoc directive + * @name patternfly.views.directive:pfListView + * + * @description + * Directive for rendering a list view. + * Pass a customScope object containing any scope variables/functions you need to access from the transcluded source, access these + * via 'customScope' in your transcluded hmtl. + *

      + * If using expanding rows, use a list-expanded-content element containing expandable content for each row. Item data can be accessed inside list-expanded-content by using $parent.item.property. For each item in the items array, the expansion can be disabled by setting disableRowExpansion to true on the item. + * + * @param {array} items Array of items to display in the list view. If an item in the array has a 'rowClass' field, the value of this field will be used as a class specified on the row (list-group-item). + * @param {object} config Configuration settings for the list view: + *
        + *
      • .showSelectBox - (boolean) Show item selection boxes for each item, default is true + *
      • .selectItems - (boolean) Allow row selection, default is false + *
      • .dlbClick - (boolean) Handle double clicking (item remains selected on a double click). Default is false. + *
      • .multiSelect - (boolean) Allow multiple row selections, selectItems must also be set, not applicable when dblClick is true. Default is false + *
      • .useExpandingRows - (boolean) Allow row expansion for each list item. + *
      • .selectionMatchProp - (string) Property of the items to use for determining matching, default is 'uuid' + *
      • .selectedItems - (array) Current set of selected items + *
      • .checkDisabled - ( function(item) ) Function to call to determine if an item is disabled, default is none + *
      • .onCheckBoxChange - ( function(item) ) Called to notify when a checkbox selection changes, default is none + *
      • .onSelect - ( function(item, event) ) Called to notify of item selection, default is none + *
      • .onSelectionChange - ( function(items) ) Called to notify when item selections change, default is none + *
      • .onClick - ( function(item, event) ) Called to notify when an item is clicked, default is none + *
      • .onDblClick - ( function(item, event) ) Called to notify when an item is double clicked, default is none + *
      + * @param {array} actionButtons List of action buttons in each row + *
        + *
      • .name - (String) The name of the action, displayed on the button + *
      • .title - (String) Optional title, used for the tooltip + *
      • .class - (String) Optional class to add to the action button + *
      • .include - (String) Optional include src for the button. Used for custom button layouts (icons, dropdowns, etc) + *
      • .includeClass - (String) Optional class to set on the include src div (only relevant when include is set). + *
      • .actionFn - (function(action)) Function to invoke when the action selected + *
      + * @param {function (action, item))} enableButtonForItemFn function(action, item) Used to enabled/disable an action button based on the current item + * @param {array} menuActions List of actions for dropdown menu in each row + *
        + *
      • .name - (String) The name of the action, displayed on the button + *
      • .title - (String) Optional title, used for the tooltip + *
      • .actionFn - (function(action)) Function to invoke when the action selected + *
      • .isVisible - (Boolean) set to false to hide the action + *
      • .isDisabled - (Boolean) set to true to disable the action + *
      • .isSeparator - (Boolean) set to true if this is a placeholder for a separator rather than an action + *
      + * @param {function (item))} hideMenuForItemFn function(item) Used to hide all menu actions for a particular item + * @param {function (item))} menuClassForItemFn function(item) Used to specify a class for an item's dropdown kebab + * @param {function (action, item))} updateMenuActionForItemFn function(action, item) Used to update a menu action based on the current item + * @param {object} customScope Object containing any variables/functions used by the transcluded html, access via customScope. + * @example + + +
      +
      +
      +
      +
      + {{item.name}} +
      +
      + {{item.address}} +
      +
      +
      +
      + {{item.city}} +
      +
      + {{item.state}} +
      +
      + +
      +
      +
      +
      +
      +
      +
      Host
      +
      {{$parent.item.city}}
      +
      Admin
      +
      {{$parent.item.name}}
      +
      Time
      +
      January 15, 2016 10:45:11 AM
      +
      Severity
      +
      Warning
      +
      Cluster
      +
      Cluster 1
      +
      +

      + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non + proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +

      +
      +
      +
      +
      +
      +
      +
      +
      +
      + +
      + + + +
      +
      +
      +
      +
      +
      + + +
      +
      +
      +
      +
      +
      + + +
      +
      +
      +
      + +
      +
      + +
      +
      +
      + + + angular.module('patternfly.views').controller('ViewCtrl', ['$scope', '$templateCache', + function ($scope, $templateCache) { + $scope.eventText = ''; + var handleSelect = function (item, e) { + $scope.eventText = item.name + ' selected\r\n' + $scope.eventText; + }; + var handleSelectionChange = function (selectedItems, e) { + $scope.eventText = selectedItems.length + ' items selected\r\n' + $scope.eventText; + }; + var handleClick = function (item, e) { + $scope.eventText = item.name + ' clicked\r\n' + $scope.eventText; + }; + var handleDblClick = function (item, e) { + $scope.eventText = item.name + ' double clicked\r\n' + $scope.eventText; + }; + var handleCheckBoxChange = function (item, selected, e) { + $scope.eventText = item.name + ' checked: ' + item.selected + '\r\n' + $scope.eventText; + }; + + var checkDisabledItem = function(item) { + return $scope.showDisabled && (item.name === "John Smith"); + }; + + $scope.enableButtonForItemFn = function(action, item) { + return !((action.name ==='Action 2') && (item.name === "Frank Livingston")) && + !(action.name === 'Start' && item.started); + }; + + $scope.updateMenuActionForItemFn = function(action, item) { + if (action.name === 'Another Action') { + action.isVisible = (item.name !== "John Smith"); + } + }; + + $scope.exampleChartConfig = { + 'chartId': 'pctChart', + 'units': 'GB', + 'thresholds': { + 'warning':'60', + 'error':'90' + } + }; + + $scope.selectType = 'checkbox'; + $scope.updateSelectionType = function() { + if ($scope.selectType === 'checkbox') { + $scope.config.selectItems = false; + $scope.config.showSelectBox = true; + } else if ($scope.selectType === 'row') { + $scope.config.selectItems = true; + $scope.config.showSelectBox = false; + } else { + $scope.config.selectItems = false + $scope.config.showSelectBox = false; + } + }; + + $scope.showDisabled = false; + + $scope.config = { + selectItems: false, + multiSelect: false, + dblClick: false, + selectionMatchProp: 'name', + selectedItems: [], + checkDisabled: checkDisabledItem, + showSelectBox: true, + useExpandingRows: false, + onSelect: handleSelect, + onSelectionChange: handleSelectionChange, + onCheckBoxChange: handleCheckBoxChange, + onClick: handleClick, + onDblClick: handleDblClick + }; + + $scope.items = [ + { + name: "Fred Flintstone", + address: "20 Dinosaur Way", + city: "Bedrock", + state: "Washingstone" + }, + { + name: "John Smith", + address: "415 East Main Street", + city: "Norfolk", + state: "Virginia", + disableRowExpansion: true + }, + { + name: "Frank Livingston", + address: "234 Elm Street", + city: "Pittsburgh", + state: "Pennsylvania" + }, + { + name: "Linda McGovern", + address: "22 Oak Street", + city: "Denver", + state: "Colorado" + }, + { + name: "Jim Brown", + address: "72 Bourbon Way", + city: "Nashville", + state: "Tennessee" + }, + { + name: "Holly Nichols", + address: "21 Jump Street", + city: "Hollywood", + state: "California" + }, + { + name: "Marie Edwards", + address: "17 Cross Street", + city: "Boston", + state: "Massachusetts" + }, + { + name: "Pat Thomas", + address: "50 Second Street", + city: "New York", + state: "New York" + }, + ]; + + $scope.getMenuClass = function (item) { + var menuClass = ""; + if (item.name === "Jim Brown") { + menuClass = 'red'; + } + return menuClass; + }; + + $scope.hideMenuActions = function (item) { + return (item.name === "Marie Edwards"); + }; + + var performAction = function (action, item) { + $scope.eventText = item.name + " : " + action.name + "\r\n" + $scope.eventText; + }; + + var startServer = function (action, item) { + $scope.eventText = item.name + " : " + action.name + "\r\n" + $scope.eventText; + item.started = true; + }; + + var buttonInclude = '{{actionButton.name}}'; + $templateCache.put('my-button-template', buttonInclude); + + var startButtonInclude = '{{item.started ? "Starting" : "Start"}}'; + $templateCache.put('start-button-template', startButtonInclude); + + $scope.actionButtons = [ + { + name: 'Start', + class: 'btn-primary', + include: 'start-button-template', + title: 'Start the server', + actionFn: startServer + }, + { + name: 'Action 1', + title: 'Perform an action', + actionFn: performAction + }, + { + name: 'Action 2', + title: 'Do something else', + actionFn: performAction + }, + { + name: 'Action 3', + include: 'my-button-template', + title: 'Do something special', + actionFn: performAction + } + ]; + $scope.menuActions = [ + { + name: 'Action', + title: 'Perform an action', + actionFn: performAction + }, + { + name: 'Another Action', + title: 'Do something else', + actionFn: performAction + }, + { + name: 'Disabled Action', + title: 'Unavailable action', + actionFn: performAction, + isDisabled: true + }, + { + name: 'Something Else', + title: '', + actionFn: performAction + }, + { + isSeparator: true + }, + { + name: 'Grouped Action 1', + title: 'Do something', + actionFn: performAction + }, + { + name: 'Grouped Action 2', + title: 'Do something similar', + actionFn: performAction + } + ]; + } + ]); + +
      + */ +angular.module('patternfly.views').directive('pfListView', ["$timeout", "$window", "pfUtils", function ($timeout, $window, pfUtils) { + 'use strict'; + return { + restrict: 'A', + scope: { + config: '=?', + items: '=', + actionButtons: '=?', + enableButtonForItemFn: '=?', + menuActions: '=?', + hideMenuForItemFn: '=?', + menuClassForItemFn: '=?', + updateMenuActionForItemFn: '=?', + actions: '=?', + updateActionForItemFn: '=?', + customScope: '=?' + }, + transclude: { + expandedContent: '?listExpandedContent' + }, + templateUrl: 'views/listview/list-view.html', + controller: + ["$scope", "$element", function ($scope, $element) { + var setDropMenuLocation = function (parentDiv) { + var dropButton = parentDiv.querySelector('.dropdown-toggle'); + var dropMenu = parentDiv.querySelector('.dropdown-menu'); + var parentRect = $element[0].getBoundingClientRect(); + var buttonRect = dropButton.getBoundingClientRect(); + var menuRect = dropMenu.getBoundingClientRect(); + var menuTop = buttonRect.top - menuRect.height; + var menuBottom = buttonRect.top + buttonRect.height + menuRect.height; + + if ((menuBottom <= parentRect.top + parentRect.height) || (menuTop < parentRect.top)) { + $scope.dropdownClass = 'dropdown'; + } else { + $scope.dropdownClass = 'dropup'; + } + }; + + $scope.defaultConfig = { + selectItems: false, + multiSelect: false, + dblClick: false, + selectionMatchProp: 'uuid', + selectedItems: [], + checkDisabled: false, + useExpandingRows: false, + showSelectBox: true, + onSelect: null, + onSelectionChange: null, + onCheckBoxChange: null, + onClick: null, + onDblClick: null + }; + + $scope.config = pfUtils.merge($scope.defaultConfig, $scope.config); + if ($scope.config.selectItems && $scope.config.showSelectBox) { + throw new Error('pfListView - ' + + 'Illegal use of pListView directive! ' + + 'Cannot allow both select box and click selection in the same list view.'); + } + $scope.dropdownClass = 'dropdown'; + + $scope.handleButtonAction = function (action, item) { + if (!$scope.checkDisabled(item) && action && action.actionFn && $scope.enableButtonForItem(action, item)) { + action.actionFn(action, item); + } + }; + + $scope.handleMenuAction = function (action, item) { + if (!$scope.checkDisabled(item) && action && action.actionFn && (action.isDisabled !== true)) { + action.actionFn(action, item); + } + }; + + $scope.enableButtonForItem = function (action, item) { + var enable = true; + if (typeof $scope.enableButtonForItemFn === 'function') { + return $scope.enableButtonForItemFn(action, item); + } + return enable; + }; + + $scope.updateActions = function (item) { + if (typeof $scope.updateMenuActionForItemFn === 'function') { + $scope.menuActions.forEach(function (action) { + $scope.updateMenuActionForItemFn(action, item); + }); + } + }; + + $scope.getMenuClassForItem = function (item) { + var menuClass = ''; + if (angular.isFunction($scope.menuClassForItemFn)) { + menuClass = $scope.menuClassForItemFn(item); + } + + return menuClass; + }; + + $scope.hideMenuForItem = function (item) { + var hideMenu = false; + if (angular.isFunction($scope.hideMenuForItemFn)) { + hideMenu = $scope.hideMenuForItemFn(item); + } + + return hideMenu; + }; + + $scope.toggleItemExpansion = function (item) { + item.isExpanded = !item.isExpanded; + }; + + $scope.setupActions = function (item, event) { + // Ignore disabled items completely + if ($scope.checkDisabled(item)) { + return; + } + + // update the actions based on the current item + $scope.updateActions(item); + + $timeout(function () { + var parentDiv = undefined; + var nextElement; + + nextElement = event.target; + while (nextElement && !parentDiv) { + if (nextElement.className.indexOf('dropdown-kebab-pf') !== -1) { + parentDiv = nextElement; + if (nextElement.className.indexOf('open') !== -1) { + setDropMenuLocation (parentDiv); + } + } + nextElement = nextElement.parentElement; + } + }); + }; + }], + + link: function (scope, element, attrs) { + attrs.$observe('config', function () { + scope.config = pfUtils.merge(scope.defaultConfig, scope.config); + if (!scope.config.selectItems) { + scope.config.selectedItems = []; + } + if (!scope.config.multiSelect && scope.config.selectedItems && scope.config.selectedItems.length > 0) { + scope.config.selectedItems = [scope.config.selectedItems[0]]; + } + }); + + scope.itemClick = function (e, item) { + var alreadySelected; + var selectionChanged = false; + var continueEvent = true; + + // Ignore disabled item clicks completely + if (scope.checkDisabled(item)) { + return continueEvent; + } + + if (scope.config && scope.config.selectItems && item) { + if (scope.config.multiSelect && !scope.config.dblClick) { + + alreadySelected = _.find(scope.config.selectedItems, function (itemObj) { + return itemObj === item; + }); + + if (alreadySelected) { + // already selected so deselect + scope.config.selectedItems = _.without(scope.config.selectedItems, item); + } else { + // add the item to the selected items + scope.config.selectedItems.push(item); + selectionChanged = true; + } + } else { + if (scope.config.selectedItems[0] === item) { + if (!scope.config.dblClick) { + scope.config.selectedItems = []; + selectionChanged = true; + } + continueEvent = false; + } else { + scope.config.selectedItems = [item]; + selectionChanged = true; + } + } + + if (selectionChanged && scope.config.onSelect) { + scope.config.onSelect(item, e); + } + if (selectionChanged && scope.config.onSelectionChange) { + scope.config.onSelectionChange(scope.config.selectedItems, e); + } + } + if (scope.config.onClick) { + scope.config.onClick(item, e); + } + + return continueEvent; + }; + + scope.dblClick = function (e, item) { + // Ignore disabled item clicks completely + if (scope.checkDisabled(item)) { + return continueEvent; + } + + if (scope.config.onDblClick) { + scope.config.onDblClick(item, e); + } + }; + + scope.checkBoxChange = function (item) { + if (scope.config.onCheckBoxChange) { + scope.config.onCheckBoxChange(item); + } + }; + + scope.isSelected = function (item) { + var matchProp = scope.config.selectionMatchProp; + var selected = false; + + if (scope.config.showSelectBox) { + selected = item.selected; + } else if (scope.config.selectItems && scope.config.selectedItems.length) { + selected = _.find(scope.config.selectedItems, function (itemObj) { + return itemObj[matchProp] === item[matchProp]; + }); + } + return selected; + }; + + scope.checkDisabled = function (item) { + return scope.config.checkDisabled && scope.config.checkDisabled(item); + }; + } + }; +}]); +;(function () { + 'use strict'; + + angular.module('patternfly.views').constant('pfViewUtils', { + getDashboardView: function (title) { + return { + id: 'dashboardView', + title: title || 'Dashboard View', + iconClass: 'fa fa-dashboard' + }; + }, + getCardView: function (title) { + return { + id: 'cardView', + title: title || 'Card View', + iconClass: 'fa fa-th' + }; + }, + getListView: function (title) { + return { + id: 'listView', + title: title || 'List View', + iconClass: 'fa fa-th-list' + }; + }, + getTableView: function (title) { + return { + id: 'tableView', + title: title || 'Table View', + iconClass: 'fa fa-table' + }; + }, + getTopologyView: function (title) { + return { + id: 'topologyView', + title: title || 'Topology View', + iconClass: 'fa fa-sitemap' + }; + } + }); +})(); +;(function () { + 'use strict'; + function pfWizardButtonDirective (action) { + angular.module('patternfly.wizard') + .directive(action, function () { + return { + restrict: 'A', + require: '^pf-wizard', + scope: { + callback: "=?" + }, + link: function ($scope, $element, $attrs, wizard) { + $element.on("click", function (e) { + e.preventDefault(); + $scope.$apply(function () { + // scope apply in button module + $scope.$eval($attrs[action]); + wizard[action.replace("pfWiz", "").toLowerCase()]($scope.callback); + }); + }); + } + }; + }); + } + + pfWizardButtonDirective('pfWizNext'); + pfWizardButtonDirective('pfWizPrevious'); + pfWizardButtonDirective('pfWizFinish'); + pfWizardButtonDirective('pfWizCancel'); + pfWizardButtonDirective('pfWizReset'); +})(); +;/** + * @ngdoc directive + * @name patternfly.wizard.directive:pfWizard + * + * @description + * Directive for rendering a Wizard modal. Each wizard dynamically creates the step navigation both in the header and the left-hand side based on nested steps. + * Use the pf-wizardstep to define individual steps within a wizard and pf-wizardsubstep to define portions of pf-wizardsteps if so desired. For instance, Step one can have two substeps - 1A and 1B when it is logical to group those together. + *

      + * The basic structure should be: + *
      +  * 
      + *
      + *
      + *
      + *
      + *
      + *
      + *
      + *
      + * + * @param {string} title The wizard title displayed in the header + * @param {boolean=} hideIndicators Hides the step indicators in the header of the wizard + * @param {string=} currentStep The current step can be changed externally - this is the title of the step to switch the wizard to + * @param {string=} cancelTitle The text to display on the cancel button + * @param {string=} backTitle The text to display on the back button + * @param {string=} nextTitle The text to display on the next button + * @param {function(step)=} backCallback Called to notify when the back button is clicked + * @param {function(step)=} nextCallback Called to notify when the next button is clicked + * @param {function()=} onFinish Called to notify when when the wizard is complete. Returns a boolean value to indicate if the finish operation is complete + * @param {function()=} onCancel Called when the wizard is canceled, returns a boolean value to indicate if cancel is successful + * @param {boolean} wizardReady Value that is set when the wizard is ready + * @param {boolean=} wizardDone Value that is set when the wizard is done + * @param {string} loadingWizardTitle The text displayed when the wizard is loading + * @param {string=} loadingSecondaryInformation Secondary descriptive information to display when the wizard is loading + * @param {string=} contentHeight The height the wizard content should be set to. This defaults to 300px if the property is not supplied. + * @param {boolean=} embedInPage Value that indicates wizard is embedded in a page (not a modal). This moves the navigation buttons to the left hand side of the footer and removes the close button. + * + * @example + + +
      + +
      +
      + +
      +
      +
      +
      +
      +
      +
      + +
      +
      + +
      +
      +
      +
      +
      +
      +

      Wizards should make use of substeps consistently throughout (either using them or not using them). This is an example only.

      +
      + +
      +
      + +
      +
      +
      +
      +
      +
      +
      +
      +
      + +
      +
      +
      +
      + +
      +
      + +
      +
      +
      +
      +
      + +
      +
      +
      + Name: + {{data.name}} +
      +
      + Description: + {{data.description}} +
      +
      +
      +
      + +
      +
      +
      + Lorem: + {{data.lorem}} +
      +
      + Ipsum: + {{data.ipsum}} +
      +
      +
      +
      + +
      +
      +
      +
      +
      +
      + +
      +
      +
      +
      +
      +

      Deployment in progress

      +

      Lorem ipsum dolor sit amet, porta at suspendisse ac, ut wisi vivamus, lorem sociosqu eget nunc amet.

      +
      +
      +
      +

      Deployment was successful

      +

      Lorem ipsum dolor sit amet, porta at suspendisse ac, ut wisi vivamus, lorem sociosqu eget nunc amet.

      + +
      +
      +
      +
      +
      + + angular.module('patternfly.wizard').controller('WizardModalController', ['$scope', '$timeout', '$uibModal', '$rootScope', + function ($scope, $timeout, $uibModal, $rootScope) { + $scope.openWizardModel = function () { + var wizardDoneListener, + modalInstance = $uibModal.open({ + animation: true, + backdrop: 'static', + templateUrl: 'wizard-container.html', + controller: 'WizardController', + size: 'lg' + }); + + var closeWizard = function (e, reason) { + modalInstance.dismiss(reason); + wizardDoneListener(); + }; + + modalInstance.result.then(function () { }, function () { }); + + wizardDoneListener = $rootScope.$on('wizard.done', closeWizard); + }; + } + ]); + angular.module('patternfly.wizard').controller('WizardController', ['$scope', '$timeout', '$rootScope', + function ($scope, $timeout, $rootScope) { + + + var initializeWizard = function () { + $scope.data = { + name: '', + description: '', + lorem: 'default setting', + ipsum: '' + }; + $scope.secondaryLoadInformation = 'ipsum dolor sit amet, porta at suspendisse ac, ut wisi vivamus, lorem sociosqu eget nunc amet.'; + $timeout(function () { + $scope.deployReady = true; + }, 1000); + $scope.nextButtonTitle = "Next >"; + }; + + var startDeploy = function () { + $timeout(function() { }, 2000); + $scope.deployInProgress = true; + }; + + $scope.data = {}; + + $scope.nextCallback = function (step) { + // call startdeploy after deploy button is clicked on review-summary tab + if (step.stepId === 'review-summary') { + startDeploy(); + } + return true; + }; + $scope.backCallback = function (step) { + return true; + }; + + $scope.$on("wizard:stepChanged", function (e, parameters) { + if (parameters.step.stepId === 'review-summary') { + $scope.nextButtonTitle = "Deploy"; + } else if (parameters.step.stepId === 'review-progress') { + $scope.nextButtonTitle = "Close"; + } else { + $scope.nextButtonTitle = "Next >"; + } + }); + + $scope.cancelDeploymentWizard = function () { + $rootScope.$emit('wizard.done', 'cancel'); + }; + + $scope.finishedWizard = function () { + $rootScope.$emit('wizard.done', 'done'); + return true; + }; + + initializeWizard(); + } + ]); + + angular.module('patternfly.wizard').controller('DetailsGeneralController', ['$rootScope', '$scope', + function ($rootScope, $scope) { + 'use strict'; + + $scope.reviewTemplate = "review-template.html"; + $scope.detailsGeneralComplete = false; + + $scope.onShow = function() { }; + + $scope.updateName = function() { + $scope.detailsGeneralComplete = angular.isDefined($scope.data.name) && $scope.data.name.length > 0; + }; + } + ]); + + angular.module('patternfly.wizard').controller('DetailsReviewController', ['$rootScope', '$scope', + function ($rootScope, $scope) { + 'use strict'; + + // Find the data! + var next = $scope; + while (angular.isUndefined($scope.data)) { + next = next.$parent; + if (angular.isUndefined(next)) { + $scope.data = {}; + } else { + $scope.data = next.wizardData; + } + } + } + ]); + + angular.module('patternfly.wizard').controller('SummaryController', ['$rootScope', '$scope', '$timeout', + function ($rootScope, $scope, $timeout) { + 'use strict'; + $scope.pageShown = false; + + $scope.onShow = function () { + $scope.pageShown = true; + $timeout(function () { + $scope.pageShown = false; // done so the next time the page is shown it updates + }); + } + } + ]); + + angular.module('patternfly.wizard').controller('DeploymentController', ['$rootScope', '$scope', '$timeout', + function ($rootScope, $scope, $timeout) { + 'use strict'; + + $scope.onShow = function() { + $scope.deploymentComplete = false; + $timeout(function() { + $scope.deploymentComplete = true; + }, 2500); + }; + } + ]); + +
      +*/ + +angular.module('patternfly.wizard').directive('pfWizard', ["$window", function ($window) { + 'use strict'; + return { + restrict: 'A', + transclude: true, + scope: { + title: '@', + hideIndicators: '=?', + currentStep: '=?', + cancelTitle: '=?', + backTitle: '=?', + nextTitle: '=?', + backCallback: '=?', + nextCallback: '=?', + onFinish: '&', + onCancel: '&', + wizardReady: '=?', + wizardDone: '=?', + loadingWizardTitle: '=?', + loadingSecondaryInformation: '=?', + contentHeight: '=?', + embedInPage: '=?' + }, + templateUrl: 'wizard/wizard.html', + controller: ["$scope", "$timeout", function ($scope, $timeout) { + var firstRun = true; + + var stepIdx = function (step) { + var idx = 0; + var res = -1; + angular.forEach($scope.getEnabledSteps(), function (currStep) { + if (currStep === step) { + res = idx; + } + idx++; + }); + return res; + }; + + var unselectAll = function () { + //traverse steps array and set each "selected" property to false + angular.forEach($scope.getEnabledSteps(), function (step) { + step.selected = false; + }); + //set selectedStep variable to null + $scope.selectedStep = null; + }; + + var watchSelectedStep = function () { + // Remove any previous watchers + if ($scope.nextStepEnabledWatcher) { + $scope.nextStepEnabledWatcher(); + } + if ($scope.nextStepTooltipWatcher) { + $scope.nextStepTooltipWatcher(); + } + if ($scope.prevStepEnabledWatcher) { + $scope.prevStepEnabledWatcher(); + } + if ($scope.prevStepTooltipWatcher) { + $scope.prevStepTooltipWatcher(); + } + + // Add watchers for the selected step + $scope.nextStepEnabledWatcher = $scope.$watch('selectedStep.nextEnabled', function (value) { + $scope.nextEnabled = value; + }); + $scope.nextStepTooltipWatcher = $scope.$watch('selectedStep.nextTooltip', function (value) { + $scope.nextTooltip = value; + }); + $scope.prevStepEnabledWatcher = $scope.$watch('selectedStep.prevEnabled', function (value) { + $scope.prevEnabled = value; + }); + $scope.prevStepTooltipWatcher = $scope.$watch('selectedStep.prevTooltip', function (value) { + $scope.prevTooltip = value; + }); + }; + + var stepByTitle = function (titleToFind) { + var foundStep = null; + angular.forEach($scope.getEnabledSteps(), function (step) { + if (step.title === titleToFind) { + foundStep = step; + } + }); + return foundStep; + }; + + $scope.steps = []; + $scope.context = {}; + this.context = $scope.context; + + if (angular.isUndefined($scope.wizardReady)) { + $scope.wizardReady = true; + } + + if (angular.isUndefined($scope.contentHeight)) { + $scope.contentHeight = '300px'; + } + this.contentHeight = $scope.contentHeight; + $scope.contentStyle = { + 'height': $scope.contentHeight, + 'max-height': $scope.contentHeight, + 'overflow-y': 'auto' + }; + this.contentStyle = $scope.contentStyle; + + $scope.nextEnabled = false; + $scope.prevEnabled = false; + + if (!$scope.cancelTitle) { + $scope.cancelTitle = "Cancel"; + } + if (!$scope.backTitle) { + $scope.backTitle = "< Back"; + } + if (!$scope.nextTitle) { + $scope.nextTitle = "Next >"; + } + + $scope.getEnabledSteps = function () { + return $scope.steps.filter(function (step) { + return step.disabled !== 'true'; + }); + }; + + this.getReviewSteps = function () { + return $scope.steps.filter(function (step) { + return !step.disabled && + (!angular.isUndefined(step.reviewTemplate) || step.getReviewSteps().length > 0); + }); + }; + + $scope.currentStepNumber = function () { + //retrieve current step number + return stepIdx($scope.selectedStep) + 1; + }; + + $scope.getStepNumber = function (step) { + return stepIdx(step) + 1; + }; + + //watching changes to currentStep + $scope.$watch('currentStep', function (step) { + //checking to make sure currentStep is truthy value + if (!step) { + return; + } + + //setting stepTitle equal to current step title or default title + if ($scope.selectedStep && $scope.selectedStep.title !== $scope.currentStep) { + $scope.goTo(stepByTitle($scope.currentStep)); + } + }); + + //watching steps array length and editMode value, if edit module is undefined or null the nothing is done + //if edit mode is truthy, then all steps are marked as completed + $scope.$watch('[editMode, steps.length]', function () { + var editMode = $scope.editMode; + if (angular.isUndefined(editMode) || (editMode === null)) { + return; + } + + if (editMode) { + angular.forEach($scope.getEnabledSteps(), function (step) { + step.completed = true; + }); + } else { + angular.forEach($scope.getEnabledSteps(), function (step, stepIndex) { + if (stepIndex >= ($scope.currentStepNumber() - 1)) { + step.completed = false; + } + }); + } + }, true); + + $scope.goTo = function (step, resetStepNav) { + if ($scope.wizardDone || ($scope.selectedStep && !$scope.selectedStep.okToNavAway) || step === $scope.selectedStep) { + return; + } + + if (firstRun || ($scope.getStepNumber(step) < $scope.currentStepNumber() && $scope.selectedStep.isPrevEnabled()) || $scope.selectedStep.isNextEnabled()) { + unselectAll(); + + if (!firstRun && resetStepNav && step.substeps) { + step.resetNav(); + } + + $scope.selectedStep = step; + step.selected = true; + + $timeout(function () { + if (angular.isFunction(step.onShow)) { + step.onShow(); + } + }, 100); + + watchSelectedStep(); + + // Make sure current step is not undefined + $scope.currentStep = step.title; + + //emit event upwards with data on goTo() invocation + if (!step.substeps) { + $scope.$emit('wizard:stepChanged', {step: step, index: stepIdx(step)}); + } + firstRun = false; + } + + if (!$scope.selectedStep.substeps) { + $scope.firstStep = stepIdx($scope.selectedStep) === 0; + } else { + $scope.firstStep = stepIdx($scope.selectedStep) === 0 && $scope.selectedStep.currentStepNumber() === 1; + } + }; + + $scope.stepClick = function (step) { + if (step.allowClickNav) { + $scope.goTo(step, true); + } + }; + + this.addStep = function (step) { + // Insert the step into step array + var insertBefore = _.find($scope.steps, function (nextStep) { + return nextStep.stepPriority > step.stepPriority; + }); + if (insertBefore) { + $scope.steps.splice($scope.steps.indexOf(insertBefore), 0, step); + } else { + $scope.steps.push(step); + } + + if ($scope.wizardReady && ($scope.getEnabledSteps().length > 0) && (step === $scope.getEnabledSteps()[0])) { + $scope.goTo($scope.getEnabledSteps()[0]); + } + }; + + this.isWizardDone = function () { + return $scope.wizardDone; + }; + + this.updateSubStepNumber = function (value) { + $scope.firstStep = stepIdx($scope.selectedStep) === 0 && value === 0; + }; + + this.currentStepTitle = function () { + return $scope.selectedStep.title; + }; + + this.currentStepDescription = function () { + return $scope.selectedStep.description; + }; + + this.currentStep = function () { + return $scope.selectedStep; + }; + + this.totalStepCount = function () { + return $scope.getEnabledSteps().length; + }; + + this.getEnabledSteps = function () { + return $scope.getEnabledSteps(); + }; + + //Access to current step number from outside + this.currentStepNumber = function () { + return $scope.currentStepNumber(); + }; + + this.getStepNumber = function (step) { + return $scope.getStepNumber(step); + }; + + // Allow access to any step + this.goTo = function (step, resetStepNav) { + var enabledSteps = $scope.getEnabledSteps(); + var stepTo; + + if (angular.isNumber(step)) { + stepTo = enabledSteps[step]; + } else { + stepTo = stepByTitle(step); + } + + $scope.goTo(stepTo, resetStepNav); + }; + + // Method used for next button within step + this.next = function (callback) { + var enabledSteps = $scope.getEnabledSteps(); + + // Save the step you were on when next() was invoked + var index = stepIdx($scope.selectedStep); + + if ($scope.selectedStep.substeps) { + if ($scope.selectedStep.next(callback)) { + return; + } + } + + // Check if callback is a function + if (angular.isFunction(callback)) { + if (callback($scope.selectedStep)) { + if (index === enabledSteps.length - 1) { + this.finish(); + } else { + // Go to the next step + if (enabledSteps[index + 1].substeps) { + enabledSteps[index + 1].resetNav(); + } + } + } else { + return; + } + } + + // Completed property set on scope which is used to add class/remove class from progress bar + $scope.selectedStep.completed = true; + + // Check to see if this is the last step. If it is next behaves the same as finish() + if (index === enabledSteps.length - 1) { + this.finish(); + } else { + // Go to the next step + $scope.goTo(enabledSteps[index + 1]); + } + }; + + this.previous = function (callback) { + var index = stepIdx($scope.selectedStep); + + if ($scope.selectedStep.substeps) { + if ($scope.selectedStep.previous(callback)) { + return; + } + } + + // Check if callback is a function + if (angular.isFunction(callback)) { + if (callback($scope.selectedStep)) { + if (index === 0) { + throw new Error("Can't go back. It's already in step 0"); + } else { + $scope.goTo($scope.getEnabledSteps()[index - 1]); + } + } + } + }; + + this.finish = function () { + if ($scope.onFinish) { + if ($scope.onFinish() !== false) { + this.reset(); + } + } + }; + + this.cancel = function () { + if ($scope.onCancel) { + if ($scope.onCancel() !== false) { + this.reset(); + } + } + }; + + //reset + this.reset = function () { + //traverse steps array and set each "completed" property to false + angular.forEach($scope.getEnabledSteps(), function (step) { + step.completed = false; + }); + //go to first step + this.goTo(0); + }; + }], + link: function ($scope) { + $scope.$watch('wizardReady', function () { + if ($scope.wizardReady) { + $scope.goTo($scope.getEnabledSteps()[0]); + } + }); + } + }; +}]); +;/** + * @ngdoc directive + * @name patternfly.wizard.directive:pfWizardReviewPage + * + * @description + * Directive for rendering a Wizard Review Page - should only be used within a wizard. + * + * @param {boolean} shown Value watched internally by the wizard review page to know when it is visible. + * @param {object} wizardData Sets the internal content of the review page to apply wizard data to the review templates. + * + */ +angular.module('patternfly.wizard').directive('pfWizardReviewPage', function () { + 'use strict'; + return { + restrict: 'A', + scope: { + shown: '=', + wizardData: "=" + }, + require: '^pf-wizard', + templateUrl: 'wizard/wizard-review-page.html', + controller: ["$scope", function ($scope) { + $scope.toggleShowReviewDetails = function (step) { + if (step.showReviewDetails === true) { + step.showReviewDetails = false; + } else { + step.showReviewDetails = true; + } + }; + $scope.getSubStepNumber = function (step, substep) { + return step.getStepDisplayNumber(substep); + }; + $scope.getReviewSubSteps = function (reviewStep) { + return reviewStep.getReviewSteps(); + }; + $scope.reviewSteps = []; + $scope.updateReviewSteps = function (wizard) { + $scope.reviewSteps = wizard.getReviewSteps(); + }; + }], + link: function ($scope, $element, $attrs, wizard) { + $scope.$watch('shown', function (value) { + if (value) { + $scope.updateReviewSteps(wizard); + } + }); + } + }; +}); +;/** + * @ngdoc directive + * @name patternfly.wizard.directive:pfWizardStep + * + * @description + * Directive for rendering a Wizard step. Each step can stand alone or have substeps. This directive can only be used as a child of pf-wizard. + * + * @param {string} stepTitle The step title displayed in the header and used for the review screen when displayed + * @param {string} stepId Sets the text identifier of the step + * @param {number} stepPriority This sets the priority of this wizard step relative to other wizard steps. They should be numbered sequentially in the order they should be viewed. + * @param {boolean} substeps Sets whether this step has substeps + * @param {boolean=} nextEnabled Sets whether the next button should be enabled when this step is first displayed + * @param {boolean=} prevEnabled Sets whether the back button should be enabled when this step is first displayed + * @param {string=} nextTooltip The text to display as a tooltip on the next button + * @param {string=} prevTooltip The text to display as a tooltip on the back button + * @param {boolean=} wzDisabled Disables the wizard when this page is shown + * @param {boolean} okToNavAway Sets whether or not it's ok for the user to leave this page + * @param {boolean} allowClickNav Sets whether the user can click on the numeric step indicators to navigate directly to this step + * @param {string=} description The step description (optional) + * @param {object} wizardData Data passed to the step that is shared by the entire wizard + * @param {function()=} onShow The function called when the wizard shows this step + * @param {boolean=} showReview Indicates whether review information should be displayed for this step when the review step is reached + * @param {boolean=} showReviewDetails Indicators whether the review information should be expanded by default when the review step is reached + * @param {string=} reviewTemplate The template that should be used for the review details screen + */ +angular.module('patternfly.wizard').directive('pfWizardStep', function () { + 'use strict'; + return { + restrict: 'A', + transclude: true, + scope: { + stepTitle: '@', + stepId: '@', + stepPriority: '@', + substeps: '=?', + nextEnabled: '=?', + prevEnabled: '=?', + nextTooltip: '=?', + prevTooltip: '=?', + disabled: '@?wzDisabled', + okToNavAway: '=?', + allowClickNav: '=?', + description: '@', + wizardData: '=', + onShow: '=?', + showReview: '@?', + showReviewDetails: '@?', + reviewTemplate: '@?' + }, + require: '^pf-wizard', + templateUrl: 'wizard/wizard-step.html', + controller: ["$scope", "$timeout", function ($scope, $timeout) { + var firstRun = true; + + var stepIdx = function (step) { + var idx = 0; + var res = -1; + angular.forEach($scope.getEnabledSteps(), function (currStep) { + if (currStep === step) { + res = idx; + } + idx++; + }); + return res; + }; + + var unselectAll = function () { + //traverse steps array and set each "selected" property to false + angular.forEach($scope.getEnabledSteps(), function (step) { + step.selected = false; + }); + //set selectedStep variable to null + $scope.selectedStep = null; + }; + + var watchSelectedStep = function () { + // Remove any previous watchers + if ($scope.nextStepEnabledWatcher) { + $scope.nextStepEnabledWatcher(); + } + if ($scope.nextStepTooltipWatcher) { + $scope.nextStepTooltipWatcher(); + } + if ($scope.prevStepEnabledWatcher) { + $scope.prevStepEnabledWatcher(); + } + if ($scope.prevStepTooltipWatcher) { + $scope.prevStepTooltipWatcher(); + } + + // Add watchers for the selected step + $scope.nextStepEnabledWatcher = $scope.$watch('selectedStep.nextEnabled', function (value) { + $scope.nextEnabled = value; + }); + $scope.nextStepTooltipWatcher = $scope.$watch('selectedStep.nextTooltip', function (value) { + $scope.nextTooltip = value; + }); + $scope.prevStepEnabledWatcher = $scope.$watch('selectedStep.prevEnabled', function (value) { + $scope.prevEnabled = value; + }); + $scope.prevStepTooltipWatcher = $scope.$watch('selectedStep.prevTooltip', function (value) { + $scope.prevTooltip = value; + }); + }; + + var stepByTitle = function (titleToFind) { + var foundStep = null; + angular.forEach($scope.getEnabledSteps(), function (step) { + if (step.stepTitle === titleToFind) { + foundStep = step; + } + }); + return foundStep; + }; + + $scope.steps = []; + $scope.context = {}; + this.context = $scope.context; + + if (angular.isUndefined($scope.nextEnabled)) { + $scope.nextEnabled = true; + } + if (angular.isUndefined($scope.prevEnabled)) { + $scope.prevEnabled = true; + } + if (angular.isUndefined($scope.showReview)) { + $scope.showReview = false; + } + if (angular.isUndefined($scope.showReviewDetails)) { + $scope.showReviewDetails = false; + } + if (angular.isUndefined($scope.stepPriority)) { + $scope.stepPriority = 999; + } else { + $scope.stepPriority = parseInt($scope.stepPriority); + } + if (angular.isUndefined($scope.okToNavAway)) { + $scope.okToNavAway = true; + } + if (angular.isUndefined($scope.allowClickNav)) { + $scope.allowClickNav = true; + } + + $scope.getEnabledSteps = function () { + return $scope.steps.filter(function (step) { + return step.disabled !== 'true'; + }); + }; + + $scope.getReviewSteps = function () { + var reviewSteps = $scope.getEnabledSteps().filter(function (step) { + return !angular.isUndefined(step.reviewTemplate); + }); + return reviewSteps; + }; + + $scope.resetNav = function () { + $scope.goTo($scope.getEnabledSteps()[0]); + }; + + $scope.currentStepNumber = function () { + //retreive current step number + return stepIdx($scope.selectedStep) + 1; + }; + + $scope.getStepNumber = function (step) { + return stepIdx(step) + 1; + }; + + $scope.isNextEnabled = function () { + var enabled = angular.isUndefined($scope.nextEnabled) || $scope.nextEnabled; + if ($scope.substeps) { + angular.forEach($scope.getEnabledSteps(), function (step) { + enabled = enabled && step.nextEnabled; + }); + } + return enabled; + }; + + $scope.isPrevEnabled = function () { + var enabled = angular.isUndefined($scope.prevEnabled) || $scope.prevEnabled; + if ($scope.substeps) { + angular.forEach($scope.getEnabledSteps(), function (step) { + enabled = enabled && step.prevEnabled; + }); + } + return enabled; + }; + + $scope.getStepDisplayNumber = function (step) { + return $scope.pageNumber + String.fromCharCode(65 + stepIdx(step)) + "."; + }; + + //watching changes to currentStep + $scope.$watch('currentStep', function (step) { + //checking to make sure currentStep is truthy value + if (!step) { + return; + } + + //setting stepTitle equal to current step title or default title + if ($scope.selectedStep && $scope.selectedStep.stepTitle !== $scope.currentStep) { + $scope.goTo(stepByTitle($scope.currentStep)); + } + }); + + //watching steps array length and editMode value, if edit module is undefined or null the nothing is done + //if edit mode is truthy, then all steps are marked as completed + $scope.$watch('[editMode, steps.length]', function () { + var editMode = $scope.editMode; + if (angular.isUndefined(editMode) || (editMode === null)) { + return; + } + + if (editMode) { + angular.forEach($scope.getEnabledSteps(), function (step) { + step.completed = true; + }); + } else { + angular.forEach($scope.getEnabledSteps(), function (step, stepIndex) { + if (stepIndex >= $scope.currentStepNumber() - 1) { + step.completed = false; + } + }); + } + }, true); + + $scope.prevStepsComplete = function (nextStep) { + var nextIdx = stepIdx(nextStep); + var complete = true; + angular.forEach($scope.getEnabledSteps(), function (step, stepIndex) { + if (stepIndex < nextIdx) { + complete = complete && step.nextEnabled; + } + }); + return complete; + }; + + $scope.goTo = function (step) { + if ($scope.wizard.isWizardDone() || !step.okToNavAway || step === $scope.selectedStep) { + return; + } + + if (firstRun || ($scope.getStepNumber(step) < $scope.currentStepNumber() && $scope.selectedStep.prevEnabled) || $scope.prevStepsComplete(step)) { + unselectAll(); + + $scope.selectedStep = step; + if (step) { + step.selected = true; + + if (angular.isFunction ($scope.selectedStep.onShow)) { + $scope.selectedStep.onShow(); + } + + watchSelectedStep(); + $scope.currentStep = step.stepTitle; + + //emit event upwards with data on goTo() invocation + if ($scope.selected) { + $scope.$emit('wizard:stepChanged', {step: step, index: stepIdx(step)}); + firstRun = false; + } + } + $scope.wizard.updateSubStepNumber (stepIdx($scope.selectedStep)); + } + }; + + $scope.stepClick = function (step) { + if (step.allowClickNav) { + $scope.goTo(step); + } + }; + + $scope.$watch('selected', function () { + if ($scope.selected && $scope.selectedStep) { + $scope.$emit('wizard:stepChanged', {step: $scope.selectedStep, index: stepIdx( $scope.selectedStep)}); + } + }); + + this.addStep = function (step) { + // Insert the step into step array + var insertBefore = _.find($scope.steps, function (nextStep) { + return nextStep.stepPriority > step.stepPriority; + }); + if (insertBefore) { + $scope.steps.splice($scope.steps.indexOf(insertBefore), 0, step); + } else { + $scope.steps.push(step); + } + }; + + this.currentStepTitle = function () { + return $scope.selectedStep.stepTitle; + }; + + this.currentStepDescription = function () { + return $scope.selectedStep.description; + }; + + this.currentStep = function () { + return $scope.selectedStep; + }; + + this.totalStepCount = function () { + return $scope.getEnabledSteps().length; + }; + + this.getEnabledSteps = function () { + return $scope.getEnabledSteps(); + }; + + //Access to current step number from outside + this.currentStepNumber = function () { + return $scope.currentStepNumber(); + }; + + // Allow access to any step + this.goTo = function (step) { + var enabledSteps = $scope.getEnabledSteps(); + var stepTo; + + if (angular.isNumber(step)) { + stepTo = enabledSteps[step]; + } else { + stepTo = stepByTitle(step); + } + + $scope.goTo(stepTo); + }; + + // Method used for next button within step + $scope.next = function (callback) { + var enabledSteps = $scope.getEnabledSteps(); + + // Save the step you were on when next() was invoked + var index = stepIdx($scope.selectedStep); + + // Check if callback is a function + if (angular.isFunction (callback)) { + if (callback($scope.selectedStep)) { + if (index === enabledSteps.length - 1) { + return false; + } + // Go to the next step + $scope.goTo(enabledSteps[index + 1]); + return true; + } + return true; + } + + // Completed property set on scope which is used to add class/remove class from progress bar + $scope.selectedStep.completed = true; + + // Check to see if this is the last step. If it is next behaves the same as finish() + if (index === enabledSteps.length - 1) { + return false; + } + // Go to the next step + $scope.goTo(enabledSteps[index + 1]); + return true; + }; + + $scope.previous = function (callback) { + var index = stepIdx($scope.selectedStep); + var goPrev = false; + + // Check if callback is a function + if (angular.isFunction (callback)) { + if (callback($scope.selectedStep)) { + if (index !== 0) { + $scope.goTo($scope.getEnabledSteps()[index - 1]); + goPrev = true; + } + } + } + + return goPrev; + }; + + if ($scope.substeps && !$scope.onShow) { + $scope.onShow = function () { + $timeout(function () { + if (!$scope.selectedStep) { + $scope.goTo($scope.getEnabledSteps()[0]); + } + }, 10); + }; + } + }], + link: function ($scope, $element, $attrs, wizard) { + $scope.$watch($attrs.ngShow, function (value) { + $scope.pageNumber = wizard.getStepNumber($scope); + }); + $scope.title = $scope.stepTitle; + $scope.contentStyle = wizard.contentStyle; + wizard.addStep($scope); + $scope.wizard = wizard; + } + }; +}); +;/** @ngdoc directive +* @name patternfly.wizard.directive:pfWizardSubstep +* +* @description +* Directive for rendering a Wizard substep. Each substep must be a child of a pf-wizardstep in a pf-wizard directive. +* +* @param {string} stepTitle The step title displayed in the header and used for the review screen when displayed +* @param {string} stepId Sets the text identifier of the step +* @param {number} stepPriority This sets the priority of this wizard step relative to other wizard steps. They should be numbered sequentially in the order they should be viewed. +* @param {boolean=} nextEnabled Sets whether the next button should be enabled when this step is first displayed +* @param {boolean=} prevEnabled Sets whether the back button should be enabled when this step is first displayed +* @param {boolean=} wzDisabled Disables the wizard when this page is shown +* @param {boolean} okToNavAway Sets whether or not it's ok for the user to leave this page +* @param {boolean=} allowClickNav Sets whether the user can click on the numeric step indicators to navigate directly to this step +* @param {string=} description The step description +* @param {object} wizardData Data passed to the step that is shared by the entire wizard +* @param {function()=} onShow The function called when the wizard shows this step +* @param {boolean=} showReviewDetails Indicators whether the review information should be expanded by default when the review step is reached +* @param {string=} reviewTemplate The template that should be used for the review details screen +*/ +angular.module('patternfly.wizard').directive('pfWizardSubstep', function () { + 'use strict'; + + return { + restrict: 'A', + transclude: true, + scope: { + stepTitle: '@', + stepId: '@', + stepPriority: '@', + nextEnabled: '=?', + prevEnabled: '=?', + okToNavAway: '=?', + allowClickNav: '=?', + disabled: '@?wzDisabled', + description: '@', + wizardData: '=', + onShow: '=?', + showReviewDetails: '@?', + reviewTemplate: '@?' + }, + require: '^pf-wizard-step', + templateUrl: 'wizard/wizard-substep.html', + controller: ["$scope", function ($scope) { + if (angular.isUndefined($scope.nextEnabled)) { + $scope.nextEnabled = true; + } + if (angular.isUndefined($scope.prevEnabled)) { + $scope.prevEnabled = true; + } + if (angular.isUndefined($scope.showReviewDetails)) { + $scope.showReviewDetails = false; + } + if (angular.isUndefined($scope.stepPriority)) { + $scope.stepPriority = 999; + } else { + $scope.stepPriority = parseInt($scope.stepPriority); + } + if (angular.isUndefined($scope.okToNavAway)) { + $scope.okToNavAway = true; + } + if (angular.isUndefined($scope.allowClickNav)) { + $scope.allowClickNav = true; + } + + $scope.isPrevEnabled = function () { + var enabled = angular.isUndefined($scope.prevEnabled) || $scope.prevEnabled; + if ($scope.substeps) { + angular.forEach($scope.getEnabledSteps(), function (step) { + enabled = enabled && step.prevEnabled; + }); + } + return enabled; + }; + + }], + link: function ($scope, $element, $attrs, step) { + $scope.title = $scope.stepTitle; + step.addStep($scope); + } + }; +}); +;angular.module('patternfly.card').run(['$templateCache', function($templateCache) { + 'use strict'; + + $templateCache.put('card/aggregate-status/aggregate-status-card.html', + "

      \"\" {{status.count}} {{status.title}} \"\" {{status.count}} {{status.title}}

      \"\"{{ notification.count }} \"\"{{ notification.count }}

      \"\" {{status.count}} {{status.title}} {{status.count}} {{status.title}}

      \"\"{{status.notification.count}} \"\"{{status.notification.count}}

      " + ); + + + $templateCache.put('card/basic/card-filter.html', + "
      " + ); + + + $templateCache.put('card/basic/card.html', + "

      {{headTitle}}

      {{subTitle}}
      " + ); + +}]); +;angular.module('patternfly.charts').run(['$templateCache', function($templateCache) { + 'use strict'; + + $templateCache.put('charts/donut/donut-pct-chart.html', + "
      " + ); + + + $templateCache.put('charts/empty-chart.html', + "
      No data available
      " + ); + + + $templateCache.put('charts/heatmap/heatmap-legend.html', + "
      • {{item.text}}
      " + ); + + + $templateCache.put('charts/heatmap/heatmap.html', + "

      {{chartTitle}}

      " + ); + + + $templateCache.put('charts/line/line-chart.html', + "
      " + ); + + + $templateCache.put('charts/sparkline/sparkline-chart.html', + "
      " + ); + + + $templateCache.put('charts/trends/trends-chart.html', + "
      {{config.title}} {{getLatestValue()}} {{config.units}} {{getPercentageValue() + '%'}} of {{chartData.total + ' ' + config.units}}
      {{config.timeFrame}}
      {{getLatestValue()}} {{config.units}} {{getPercentageValue() + '%'}} of {{chartData.total + ' ' + config.units}} {{config.title}}
      {{getPercentageValue() + '%'}}
      {{config.trendLabel}} {{getLatestValue()}} of {{chartData.total + ' ' + config.units}}
      " + ); + + + $templateCache.put('charts/utilization-bar/utilization-bar-chart.html', + "
      {{chartTitle}}
      {{chartData.used}} of {{chartData.total}} {{units}} Used {{chartData.percentageUsed}}% Used
      {{chartTitle}}
      {{chartData.used}} {{units}} Used {{chartData.percentageUsed}}% Used
      " + ); + + + $templateCache.put('charts/utilization-trend/utilization-trend-chart.html', + "

      {{config.title}}

      {{currentValue}}

      {{currentText}}
      of {{chartData.total}} {{config.units}}
      {{legendLeftText}} {{legendRightText}}
      " + ); + +}]); +;angular.module('patternfly.filters').run(['$templateCache', function($templateCache) { + 'use strict'; + + $templateCache.put('filters/filter-fields.html', + "
      " + ); + + + $templateCache.put('filters/filter-results.html', + "
      {{config.resultsCount}} Results

      0\">Active filters:

      • {{filter.title}}: {{filter.value}}

      0\">Clear All Filters

      " + ); + + + $templateCache.put('filters/filter.html', + "
      " + ); + +}]); +;angular.module('patternfly.form').run(['$templateCache', function($templateCache) { + 'use strict'; + + $templateCache.put('form/datepicker/datepicker.html', + "
      " + ); + + + $templateCache.put('form/datetimepicker/datetimepicker.html', + "
      " + ); + + + $templateCache.put('form/form-buttons/form-buttons.html', + "
      " + ); + + + $templateCache.put('form/form-group/form-group.html', + "
      • {{ message }}
      " + ); + +}]); +;angular.module('patternfly.modals').run(['$templateCache', function($templateCache) { + 'use strict'; + + $templateCache.put('modals/about-modal.html', + "" + ); + +}]); +;angular.module('patternfly.navigation').run(['$templateCache', function($templateCache) { + 'use strict'; + + $templateCache.put('navigation/vertical-navigation.html', + "
      " + ); + +}]); +;angular.module('patternfly.notification').run(['$templateCache', function($templateCache) { + 'use strict'; + + $templateCache.put('notification/inline-notification.html', + "
      {{pfNotificationHeader}} {{pfNotificationMessage}}
      " + ); + + + $templateCache.put('notification/notification-drawer.html', + "

      {{drawerTitle}}

      " + ); + + + $templateCache.put('notification/notification-list.html', + "
      0\">
      " + ); + + + $templateCache.put('notification/notification.html', + "
      {{pfNotificationHeader}} {{pfNotificationMessage}}
      " + ); + + + $templateCache.put('notification/toast-notification-list.html', + "
      0\">
      0)}}\" close-callback=handleClose action-title={{notification.actionTitle}} action-callback=notification.actionCallback menu-actions=notification.menuActions update-viewing=handleViewingChange data=notification>
      " + ); + + + $templateCache.put('notification/toast-notification.html', + "
      {{header}} {{message}} {{message}}
      " + ); + +}]); +;angular.module('patternfly.sort').run(['$templateCache', function($templateCache) { + 'use strict'; + + $templateCache.put('sort/sort.html', + "
      " + ); + +}]); +;angular.module('patternfly.toolbars').run(['$templateCache', function($templateCache) { + 'use strict'; + + $templateCache.put('toolbars/toolbar.html', + "
      0) ||\n" + + " (config.actionsConfig.moreActions && config.actionsConfig.moreActions.length > 0) ||\n" + + " config.actionsConfig.actionsInclude)\">
      " + ); + +}]); +;angular.module('patternfly.views').run(['$templateCache', function($templateCache) { + 'use strict'; + + $templateCache.put('views/cardview/card-view.html', + "
      " + ); + + + $templateCache.put('views/listview/list-view.html', + "
      0) || (menuActions && menuActions.length > 0)\">
      " + ); + +}]); +;angular.module('patternfly.wizard').run(['$templateCache', function($templateCache) { + 'use strict'; + + $templateCache.put('wizard/wizard-review-page.html', + "" + ); + + + $templateCache.put('wizard/wizard-step.html', + "
      " + ); + + + $templateCache.put('wizard/wizard-substep.html', + "" + ); + + + $templateCache.put('wizard/wizard.html', + "

      {{loadingWizardTitle}}

      {{loadingSecondaryInformation}}

      " + ); + +}]); diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/angular-patternfly.min.js b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/angular-patternfly.min.js new file mode 100644 index 00000000..fd366237 --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/angular-patternfly.min.js @@ -0,0 +1,4 @@ +function mergeDeep(dst){"use strict";return angular.forEach(arguments,function(obj){obj!==dst&&angular.forEach(obj,function(value,key){dst[key]&&dst[key].constructor&&dst[key].constructor===Object?mergeDeep(dst[key],value):dst[key]=value})}),dst}angular.module("patternfly.card",[]),angular.module("patternfly.charts",["patternfly.utils","ui.bootstrap","ngSanitize"]),angular.module("patternfly.filters",["patternfly.select","ui.bootstrap"]),angular.module("patternfly.form",[]),angular.module("patternfly.modals",["ui.bootstrap.modal","ui.bootstrap.tpls"]),angular.module("patternfly.navigation",["ui.bootstrap"]),angular.module("patternfly.notification",["patternfly.utils"]),angular.module("patternfly",["patternfly.autofocus","patternfly.card","patternfly.filters","patternfly.form","patternfly.modals","patternfly.navigation","patternfly.notification","patternfly.select","patternfly.sort","patternfly.toolbars","patternfly.utils","patternfly.validation","patternfly.views","patternfly.wizard"]),angular.module("patternfly.sort",["ui.bootstrap"]),angular.module("patternfly.toolbars",["patternfly.utils","patternfly.filters","patternfly.sort","patternfly.views"]),angular.module("patternfly.utils",["ui.bootstrap"]),angular.module("patternfly.views",["patternfly.utils","patternfly.filters","patternfly.sort","patternfly.charts"]),angular.module("patternfly.wizard",["ui.bootstrap.modal","ui.bootstrap.tpls","patternfly.form"]),angular.module("patternfly.autofocus",[]).directive("pfFocused",["$timeout",function($timeout){"use strict";return{restrict:"A",link:function(scope,element,attrs){scope.$watch(attrs.pfFocused,function(newValue){$timeout(function(){newValue&&(element[0].focus(),element[0].select&&element[0].select())})})}}}]),angular.module("patternfly.card").directive("pfAggregateStatusCard",function(){"use strict";return{restrict:"A",scope:{status:"=",showTopBorder:"@?",altLayout:"@?",layout:"@?"},templateUrl:"card/aggregate-status/aggregate-status-card.html",link:function(scope){scope.shouldShowTopBorder="true"===scope.showTopBorder,scope.isAltLayout="true"===scope.altLayout||"tall"===scope.layout,scope.isMiniLayout="mini"===scope.layout}}}),angular.module("patternfly.card").directive("pfCard",function(){"use strict";return{restrict:"A",transclude:!0,templateUrl:"card/basic/card.html",scope:{headTitle:"@",subTitle:"@?",showTopBorder:"@?",showTitlesSeparator:"@?",footer:"=?",filter:"=?"},controller:["$scope",function($scope){$scope.filter&&!$scope.currentFilter&&($scope.filter.defaultFilter?$scope.currentFilter=$scope.filter.filters[$scope.filter.defaultFilter]:$scope.currentFilter=$scope.filter.filters[0]),$scope.footerCallBackFn=function(){$scope.footerCallBackResult=$scope.footer.callBackFn()},$scope.filterCallBackFn=function(f){$scope.currentFilter=f,$scope.filter.callBackFn&&($scope.filterCallBackResult=$scope.filter.callBackFn(f))},$scope.showHeader=function(){return $scope.headTitle||$scope.showFilterInHeader()},$scope.showFilterInHeader=function(){return $scope.filter&&$scope.filter.filters&&$scope.filter.position&&"header"===$scope.filter.position},$scope.showFilterInFooter=function(){return $scope.filter&&$scope.filter.filters&&(!$scope.filter.position||"footer"===$scope.filter.position)}}],link:function(scope){scope.shouldShowTitlesSeparator=!scope.showTitlesSeparator||"true"===scope.showTitlesSeparator}}}),function(){"use strict";var patternflyDefaults=$().c3ChartDefaults();angular.module("patternfly.charts").constant("c3ChartDefaults",{getDefaultColors:patternflyDefaults.getDefaultColors,getDefaultDonut:patternflyDefaults.getDefaultDonut,getDefaultDonutSize:patternflyDefaults.getDefaultDonutSize,getDefaultDonutColor:patternflyDefaults.getDefaultDonutColors,getDefaultDonutLegend:patternflyDefaults.getDefaultDonutLegend,getDefaultDonutConfig:patternflyDefaults.getDefaultDonutConfig,getDefaultSparklineArea:patternflyDefaults.getDefaultSparklineArea,getDefaultSparklineSize:patternflyDefaults.getDefaultSparklineSize,getDefaultSparklineAxis:patternflyDefaults.getDefaultSparklineAxis,getDefaultSparklineColor:patternflyDefaults.getDefaultColors,getDefaultSparklineLegend:patternflyDefaults.getDefaultSparklineLegend,getDefaultSparklinePoint:patternflyDefaults.getDefaultSparklinePoint,getDefaultSparklineTooltip:patternflyDefaults.getDefaultSparklineTooltip,getDefaultSparklineConfig:patternflyDefaults.getDefaultSparklineConfig,getDefaultLineConfig:patternflyDefaults.getDefaultLineConfig})}(),function(){"use strict";angular.module("patternfly.charts").directive("pfC3Chart",["$timeout",function($timeout){return{restrict:"A",scope:{config:"=",getChartCallback:"="},template:'
      ',replace:!0,link:function(scope,element,attrs){scope.$watch("config",function(){$timeout(function(){var chart,chartData=scope.config;chartData&&(chartData.bindto="#"+attrs.id,chart=c3.generate(chartData),scope.getChartCallback&&scope.getChartCallback(chart))})},!0)}}}])}(),angular.module("patternfly.charts").directive("pfDonutPctChart",["pfUtils","$timeout",function(pfUtils,$timeout){"use strict";return{restrict:"A",scope:{config:"=",data:"=",chartHeight:"=?",centerLabel:"=?"},replace:!0,templateUrl:"charts/donut/donut-pct-chart.html",controller:["$scope",function($scope){var donutTooltip;$scope.donutChartId="donutChart",$scope.config.chartId&&($scope.donutChartId=$scope.config.chartId+$scope.donutChartId),$scope.updateAvailable=function(){$scope.data.available=$scope.data.total-$scope.data.used},void 0===$scope.data.available&&$scope.updateAvailable(),$scope.getStatusColor=function(used,thresholds){var color=pfUtils.colorPalette.blue;return thresholds&&(color=pfUtils.colorPalette.green,used>=thresholds.error?color=pfUtils.colorPalette.red:used>=thresholds.warning&&(color=pfUtils.colorPalette.orange)),color},$scope.statusDonutColor=function(scope){var color,percentUsed;return color={pattern:[]},percentUsed=scope.data.used/scope.data.total*100,color.pattern[0]=$scope.getStatusColor(percentUsed,scope.config.thresholds),color.pattern[1]=pfUtils.colorPalette.black300,color},donutTooltip=function(scope){return{contents:function(d){var tooltipHtml;return tooltipHtml=scope.config.tooltipFn?''+scope.config.tooltipFn(d)+"":''+Math.round(100*d[0].ratio)+"% "+$scope.config.units+" "+d[0].name+""}}},$scope.getDonutData=function(scope){return{columns:[["Used",scope.data.used],["Available",scope.data.available]],type:"donut",donut:{label:{show:!1}},groups:[["used","available"]],order:null}},$scope.getCenterLabelText=function(){var centerLabelText;return centerLabelText={bigText:$scope.data.used,smText:$scope.config.units+" Used"},$scope.config.centerLabelFn?(centerLabelText.bigText=$scope.config.centerLabelFn(),centerLabelText.smText=""):"none"===$scope.centerLabel?(centerLabelText.bigText="",centerLabelText.smText=""):"available"===$scope.centerLabel?(centerLabelText.bigText=$scope.data.available,centerLabelText.smText=$scope.config.units+" Available"):"percent"===$scope.centerLabel&&(centerLabelText.bigText=Math.round($scope.data.used/$scope.data.total*100)+"%",centerLabelText.smText="of "+$scope.data.total+" "+$scope.config.units),centerLabelText},$scope.updateAll=function(scope){$scope.updateAvailable(),$scope.config.data=pfUtils.merge($scope.config.data,$scope.getDonutData($scope)),$scope.config.color=$scope.statusDonutColor($scope),$scope.config.tooltip=donutTooltip(scope),$scope.config.data.onclick=$scope.config.onClickFn},$scope.config=pfUtils.merge($().c3ChartDefaults().getDefaultDonutConfig(),$scope.config),$scope.updateAll($scope)}],link:function(scope,element){var setupDonutChartTitle=function(){$timeout(function(){var donutChartTitle,centerLabelText;donutChartTitle=d3.select(element[0]).select("text.c3-chart-arcs-title"),donutChartTitle&&(centerLabelText=scope.getCenterLabelText(),donutChartTitle.selectAll("*").remove(),centerLabelText.bigText&&!centerLabelText.smText?donutChartTitle.text(centerLabelText.bigText):(donutChartTitle.insert("tspan").text(centerLabelText.bigText).classed("donut-title-big-pf",!0).attr("dy",0).attr("x",0),donutChartTitle.insert("tspan").text(centerLabelText.smText).classed("donut-title-small-pf",!0).attr("dy",20).attr("x",0)))},300)};scope.$watch("config",function(){scope.updateAll(scope),setupDonutChartTitle()},!0),scope.$watch("chartHeight",function(){scope.chartHeight&&(scope.config.size.height=scope.chartHeight)}),scope.$watch("data",function(){scope.updateAll(scope),setupDonutChartTitle()},!0),scope.$watch("centerLabel",function(){setupDonutChartTitle()})}}}]),angular.module("patternfly.charts").directive("pfEmptyChart",function(){"use strict";return{restrict:"A",scope:{chartHeight:"=?"},replace:!0,templateUrl:"charts/empty-chart.html",controller:["$scope",function($scope){$scope.setSizeStyles=function(){var height=$scope.chartHeight||40,topPadding=Math.min(Math.round((height-40)/2),20);$scope.sizeStyles={height:height+"px","padding-top":topPadding+"px"}},$scope.setSizeStyles()}],link:function(scope){scope.$watch("chartHeight",function(){scope.setSizeStyles()})}}}),angular.module("patternfly.charts").directive("pfHeatmapLegend",function(){"use strict";return{restrict:"A",scope:{legend:"=?",legendColors:"=?"},templateUrl:"charts/heatmap/heatmap-legend.html",controller:["$scope",function($scope){var heatmapColorPatternDefaults=["#d4f0fa","#F9D67A","#EC7A08","#CE0000"],legendLabelDefaults=["< 70%","70-80%","80-90%","> 90%"];$scope.legendColors||($scope.legendColors=heatmapColorPatternDefaults),$scope.legend||($scope.legend=legendLabelDefaults)}],link:function($scope){var index,items=[];for(index=$scope.legend.length-1;index>=0;index--)items.push({text:$scope.legend[index],color:$scope.legendColors[index]});$scope.legendItems=items}}}),angular.module("patternfly.charts").directive("pfHeatmap",["$compile","$window",function($compile,$window){"use strict";return{restrict:"A",scope:{data:"=",chartDataAvailable:"=?",height:"=?",chartTitle:"=?",showLegend:"=?",legendLabels:"=?",maxBlockSize:"@",minBlockSize:"@",blockPadding:"@",thresholds:"=?",heatmapColorPattern:"=?",clickAction:"=?",rangeOnHover:"=?",rangeHoverSize:"@",rangeTooltips:"=?"},templateUrl:"charts/heatmap/heatmap.html",controller:["$scope",function($scope){var thresholdDefaults=[.7,.8,.9],heatmapColorPatternDefaults=["#d4f0fa","#F9D67A","#EC7A08","#CE0000"],legendLabelDefaults=["< 70%","70-80%","80-90%","> 90%"],rangeTooltipDefaults=["< 70%","70-80%","80-90%","> 90%"],heightDefault=200;void 0===$scope.maxBlockSize||isNaN($scope.maxBlockSize)?$scope.maxSize=64:($scope.maxSize=parseInt($scope.maxBlockSize),$scope.maxSize<5?$scope.maxSize=5:$scope.maxSize>50&&($scope.maxSize=50)),void 0===$scope.minBlockSize||isNaN($scope.minBlockSize)?$scope.minSize=2:$scope.minSize=parseInt($scope.minBlockSize),void 0===$scope.blockPadding||isNaN($scope.blockPadding)?$scope.padding=2:$scope.padding=parseInt($scope.blockPadding),void 0===$scope.rangeHoverSize||isNaN($scope.rangeHoverSize)?$scope.rangeHoverSize=15:$scope.rangeHoverSize=parseInt($scope.rangeHoverSize),$scope.rangeOnHover=void 0===$scope.rangeOnHover||$scope.rangeOnHover?!0:!1,$scope.rangeTooltips||($scope.rangeTooltips=rangeTooltipDefaults),$scope.thresholds||($scope.thresholds=thresholdDefaults),$scope.heatmapColorPattern||($scope.heatmapColorPattern=heatmapColorPatternDefaults),$scope.legendLabels||($scope.legendLabels=legendLabelDefaults),$scope.height=$scope.height||heightDefault,$scope.showLegend=$scope.showLegend||void 0===$scope.showLegend,$scope.loadingDone=!1}],link:function(scope,element,attrs){var containerWidth,containerHeight,blockSize,numberOfRows,thisComponent=element[0].querySelector(".heatmap-pf-svg"),setStyles=function(){scope.containerStyles={height:scope.height+"px",display:scope.chartDataAvailable===!1?"none":"block"}},setSizes=function(){var parentContainer=element[0].querySelector(".heatmap-container");containerWidth=parentContainer.clientWidth,containerHeight=parentContainer.clientHeight,blockSize=determineBlockSize(),blockSize-scope.padding>scope.maxSize?(blockSize=scope.padding+scope.maxSize,numberOfRows=Math.ceil(Math.sqrt(scope.data.length)),(blockSize*numberOfRows>containerWidth||blockSize*numberOfRows>containerHeight)&&(numberOfRows=0===blockSize?0:Math.floor(containerHeight/blockSize))):blockSize-scope.paddingcontainerWidth||blockSize*numberOfRows>containerHeight)&&(numberOfRows=0===blockSize?0:Math.floor(containerHeight/blockSize))):numberOfRows=0===blockSize?0:Math.floor(containerHeight/blockSize)},determineBlockSize=function(){var sx,sy,x=containerWidth,y=containerHeight,n=scope.data?scope.data.length:0,px=Math.ceil(Math.sqrt(n*x/y)),py=Math.ceil(Math.sqrt(n*y/x));return sx=Math.floor(px*y/x)*px '+tipRows+"
      "},$scope.sparklineTooltip=function(){return{contents:function(d){var tipRows,percentUsed=0;if($scope.config.tooltipFn)tipRows=$scope.config.tooltipFn(d);else switch($scope.config.tooltipType){case"usagePerDay":$scope.chartData.dataAvailable!==!1&&$scope.chartData.total>0&&(percentUsed=Math.round(d[0].value/$scope.chartData.total*100)),tipRows=' '+d[0].x.toLocaleDateString()+' '+percentUsed+'%: '+d[0].value+" "+($scope.config.units?$scope.config.units+" ":"")+d[0].name+"";break;case"valuePerDay":tipRows=' '+d[0].x.toLocaleDateString()+' '+d[0].value+" "+d[0].name+"";break;case"percentage":percentUsed=Math.round(d[0].value/$scope.chartData.total*100),tipRows=' '+percentUsed+"%";break;default:tipRows=$().c3ChartDefaults().getDefaultSparklineTooltip().contents(d)}return $scope.getTooltipTableHTML(tipRows)},position:function(data,width,height,element){var center,top,chartBox,graphOffsetX,x;try{return center=parseInt(element.getAttribute("x")),top=parseInt(element.getAttribute("y")),chartBox=document.querySelector("#"+$scope.sparklineChartId).getBoundingClientRect(),graphOffsetX=document.querySelector("#"+$scope.sparklineChartId+" g.c3-axis-y").getBoundingClientRect().right,x=Math.max(0,center+graphOffsetX-chartBox.left-Math.floor(width/2)),{top:top-height,left:Math.min(x,chartBox.width-width)}}catch(e){}}}},void 0===$scope.showXAxis&&($scope.showXAxis=void 0!==$scope.config.showAxis&&$scope.config.showAxis),void 0===$scope.showYAxis&&($scope.showYAxis=void 0!==$scope.config.showAxis&&$scope.config.showAxis),$scope.defaultConfig=$().c3ChartDefaults().getDefaultSparklineConfig(),$scope.defaultConfig.axis={x:{show:$scope.showXAxis===!0,type:"timeseries",tick:{format:function(){return""}}},y:{show:$scope.showYAxis===!0,tick:{format:function(){return""}}}},$scope.defaultConfig.tooltip=$scope.sparklineTooltip(),$scope.chartHeight&&($scope.defaultConfig.size.height=$scope.chartHeight),$scope.defaultConfig.units="",$scope.config.data=pfUtils.merge($scope.config.data,$scope.getSparklineData($scope.chartData)),$scope.chartConfig=pfUtils.merge($scope.defaultConfig,$scope.config)}],link:function(scope){scope.$watch("config",function(){scope.config.data=pfUtils.merge(scope.config.data,scope.getSparklineData(scope.chartData)),scope.chartConfig=pfUtils.merge(scope.defaultConfig,scope.config)},!0),scope.$watch("chartHeight",function(){scope.chartHeight&&(scope.chartConfig.size.height=scope.chartHeight)}),scope.$watch("showXAxis",function(){scope.chartConfig.axis.x.show=scope.showXAxis===!0}),scope.$watch("showYAxis",function(){scope.chartConfig.axis.y.show=scope.showYAxis===!0}),scope.$watch("chartData",function(){scope.chartConfig.data=pfUtils.merge(scope.chartConfig.data,scope.getSparklineData(scope.chartData))},!0)}}}]),angular.module("patternfly.charts").directive("pfTrendsChart",function(){"use strict";return{restrict:"A",scope:{config:"=",chartData:"=",chartHeight:"=?",showXAxis:"=?",showYAxis:"=?"},replace:!0,templateUrl:"charts/trends/trends-chart.html",controller:["$scope",function($scope){var SMALL=30,LARGE=60;$scope.getPercentageValue=function(){var pctValue=0;return $scope.chartData.dataAvailable!==!1&&$scope.chartData.total>0&&(pctValue=Math.round($scope.getLatestValue()/$scope.chartData.total*100)),pctValue},$scope.getLatestValue=function(){var latestValue=0;return $scope.chartData.yData&&$scope.chartData.yData.length>0&&(latestValue=$scope.chartData.yData[$scope.chartData.yData.length-1]),latestValue},$scope.getChartHeight=function(){var retValue=LARGE;return $scope.chartHeight?retValue=$scope.chartHeight:"small"===$scope.config.layout&&(retValue=SMALL),retValue}}],link:function(scope){scope.$watch("config",function(){scope.showLargeCardLayout=!scope.config.layout||"large"===scope.config.layout,scope.showSmallCardLayout="small"===scope.config.layout,scope.showActualValue=!scope.config.valueType||"actual"===scope.config.valueType,scope.showPercentageValue="percentage"===scope.config.valueType},!0)}}}),angular.module("patternfly.charts").directive("pfUtilizationBarChart",["$timeout",function($timeout){"use strict";return{restrict:"A",scope:{chartData:"=",chartTitle:"=",chartFooter:"=",units:"=",thresholdError:"=?",thresholdWarning:"=?",footerLabelFormat:"@?",layout:"=?"},templateUrl:"charts/utilization-bar/utilization-bar-chart.html",link:function(scope){scope.$watch("chartData",function(newVal,oldVal){"undefined"!=typeof newVal&&(scope.chartData.percentageUsed=Math.round(100*(scope.chartData.used/scope.chartData.total)),(scope.thresholdError||scope.thresholdWarning)&&(scope.isError=scope.chartData.percentageUsed>=scope.thresholdError,scope.isWarn=scope.chartData.percentageUsed>=scope.thresholdWarning&&scope.chartData.percentageUsedcharsMaxLimit&&($scope.ngModel=$scope.ngModel.substring(0,charsMaxLimit),charsLength=$scope.ngModel.length,remainingChars=charsMaxLimit-charsLength),$scope.remainingChars=remainingChars,$scope.remainingCharsWarning=charsWarnRemaining>=remainingChars?!0:!1,countRemainingFld.text(remainingChars),countRemainingFld.toggleClass("chars-warn-remaining-pf",charsWarnRemaining>=remainingChars),0>remainingChars?$scope.$emit("overCharsMaxLimit",$attributes.id):$scope.$emit("underCharsMaxLimit",$attributes.id)};$scope.$watch("ngModel",function(){checkCharactersRemaining()}),$element.bind("keypress",function(event){blockInputAtMaxLimit&&$element.val().length>=charsMaxLimit&&8!==event.keyCode&&event.preventDefault()})}}}]),angular.module("patternfly.modals").directive("pfAboutModalTransclude",["$parse",function($parse){"use strict";return{link:function(scope,element,attrs){element.append($parse(attrs.pfAboutModalTransclude)(scope))}}}]).directive("pfAboutModal",function(){"use strict";return{restrict:"A",scope:{additionalInfo:"=?",copyright:"=?",close:"&onClose",imgAlt:"=?",imgSrc:"=?",isOpen:"=?",productInfo:"=",title:"=?"},templateUrl:"modals/about-modal.html",transclude:!0,controller:["$scope","$uibModal","$transclude",function($scope,$uibModal,$transclude){void 0===$scope.isOpen&&($scope.isOpen=!1),$scope.openModal=function(){$uibModal.open({controller:["$scope","$uibModalInstance","content",function($scope,$uibModalInstance,content){$scope.template=content,$scope.close=function(){$uibModalInstance.close()},$scope.$watch(function(){return $scope.isOpen},function(newValue){newValue===!1&&$uibModalInstance.close()})}],resolve:{content:function(){var transcludedContent;return $transclude(function(clone){transcludedContent=clone; +}),transcludedContent}},scope:$scope,templateUrl:"about-modal-template.html"}).result.then(function(){$scope.close()},function(){$scope.close()})}}],link:function(scope,element,attrs){var isOpenListener=scope.$watch("isOpen",function(newVal,oldVal){newVal===!0&&scope.openModal()});scope.$on("$destroy",isOpenListener)}}}),angular.module("patternfly.navigation").directive("pfVerticalNavigation",["$location","$rootScope","$window","$document","$timeout","$injector",function(location,rootScope,$window,$document,$timeout,$injector){"use strict";var $state;return $injector.has("$state")&&($state=$injector.get("$state")),{restrict:"A",scope:{brandSrc:"@",brandAlt:"@",showBadges:"@",persistentSecondary:"@",pinnableMenus:"@",hiddenIcons:"@",items:"=",navigateCallback:"=?",itemClickCallback:"=?",updateActiveItemsOnClick:"@",ignoreMobile:"@"},replace:!0,templateUrl:"navigation/vertical-navigation.html",transclude:!0,controller:["$scope",function($scope){var routeChangeListener;$scope.showBadges="true"===$scope.showBadges,$scope.persistentSecondary="true"===$scope.persistentSecondary,$scope.pinnableMenus="true"===$scope.pinnableMenus,$scope.hiddenIcons="true"===$scope.hiddenIcons,$scope.updateActiveItemsOnClick="true"===$scope.updateActiveItemsOnClick,$scope.ignoreMobile="true"===$scope.ignoreMobile,$scope.activeSecondary=!1,$scope.clearActiveItems=function(){$scope.items.forEach(function(item){item.isActive=!1,item.children&&item.children.forEach(function(secondary){secondary.isActive=!1,secondary.children&&secondary.children.forEach(function(tertiary){tertiary.isActive=!1})})})},$scope.setActiveItems=function(){var updatedRoute="#"+location.path();$scope.items.forEach(function(topLevel){updatedRoute.indexOf(topLevel.href)>-1&&(topLevel.isActive=!0),topLevel.children&&topLevel.children.forEach(function(secondLevel){updatedRoute.indexOf(secondLevel.href)>-1&&(secondLevel.isActive=!0,topLevel.isActive=!0),secondLevel.children&&secondLevel.children.forEach(function(thirdLevel){updatedRoute.indexOf(thirdLevel.href)>-1&&(thirdLevel.isActive=!0,secondLevel.isActive=!0,topLevel.isActive=!0)})})})},$scope.updateActiveItemsOnClick||(routeChangeListener=rootScope.$on("$routeChangeSuccess",function(event,next,current){$scope.clearActiveItems(),$scope.setActiveItems()}),$scope.$on("$destroy",routeChangeListener))}],link:function($scope){var breakpoints={tablet:768,desktop:1200},getBodyContentElement=function(){return angular.element(document.querySelector(".container-pf-nav-pf-vertical"))},explicitCollapse=!1,hoverDelay=500,hideDelay=hoverDelay+200,initBodyElement=function(){var bodyContentElement=getBodyContentElement();$scope.showBadges&&bodyContentElement.addClass("nav-pf-vertical-with-badges"),$scope.persistentSecondary&&bodyContentElement.addClass("nav-pf-persistent-secondary"),$scope.hiddenIcons&&bodyContentElement.addClass("hidden-icons-pf")},updateMobileMenu=function(selected,secondaryItem){$scope.items.forEach(function(item){item.isMobileItem=!1,item.children&&item.children.forEach(function(nextSecondary){nextSecondary.isMobileItem=!1})}),selected?(selected.isMobileItem=!0,secondaryItem?(secondaryItem.isMobileItem=!0,$scope.showMobileSecondary=!1,$scope.showMobileTertiary=!0):($scope.showMobileSecondary=!0,$scope.showMobileTertiary=!1)):($scope.showMobileSecondary=!1,$scope.showMobileTertiary=!1)},checkNavState=function(){var width=$window.innerWidth,bodyContentElement=getBodyContentElement();!$scope.ignoreMobile&&width0&&item.children.forEach(function(secondaryItem){secondaryItem.isHover&&(hover=!0)})}),hover},updateSecondaryCollapsedState=function(setCollapsed,collapsedItem){var bodyContentElement=getBodyContentElement();collapsedItem&&(collapsedItem.secondaryCollapsed=setCollapsed),setCollapsed?($scope.collapsedSecondaryNav=!0,bodyContentElement.addClass("collapsed-secondary-nav-pf")):($scope.items&&$scope.items.forEach(function(item){item.secondaryCollasped=!1}),$scope.collapsedSecondaryNav=!1,bodyContentElement.removeClass("collapsed-secondary-nav-pf"))},updateTertiaryCollapsedState=function(setCollapsed,collapsedItem){var bodyContentElement=getBodyContentElement();collapsedItem&&(collapsedItem.tertiaryCollapsed=setCollapsed),setCollapsed?($scope.collapsedTertiaryNav=!0,bodyContentElement.addClass("collapsed-tertiary-nav-pf"),updateSecondaryCollapsedState(!1)):($scope.items&&$scope.items.forEach(function(item){item.children&&item.children.length>0&&item.children.forEach(function(secondaryItem){secondaryItem.tertiaryCollasped=!1})}),$scope.collapsedTertiaryNav=!1,bodyContentElement.removeClass("collapsed-tertiary-nav-pf"))};$scope.showMobileNav=!1,$scope.showMobileSecondary=!1,$scope.showMobileTertiary=!1,$scope.hoverSecondaryNav=!1,$scope.hoverTertiaryNav=!1,$scope.collapsedSecondaryNav=!1,$scope.collapsedTertiaryNav=!1,$scope.navCollapsed=!1,$scope.forceHidden=!1,$scope.handleNavBarToggleClick=function(){$scope.inMobileState?$scope.showMobileNav?$scope.showMobileNav=!1:(updateMobileMenu(),$scope.showMobileNav=!0):$scope.navCollapsed?expandMenu():collapseMenu()},$scope.handlePrimaryClick=function(item,event){$scope.inMobileState?item.children&&item.children.length>0?updateMobileMenu(item):(updateMobileMenu(),navigateToItem(item)):navigateToItem(item)},$scope.handleSecondaryClick=function(primary,secondary,event){$scope.inMobileState?secondary.children&&secondary.children.length>0?updateMobileMenu(primary,secondary):(updateMobileMenu(),navigateToItem(secondary)):navigateToItem(secondary)},$scope.handleTertiaryClick=function(primary,secondary,tertiary,event){$scope.inMobileState&&updateMobileMenu(),navigateToItem(tertiary)},$scope.handlePrimaryHover=function(item){item.children&&item.children.length>0&&($scope.inMobileState||(void 0!==item.navUnHoverTimeout?($timeout.cancel(item.navUnHoverTimeout),item.navUnHoverTimeout=void 0):void 0!==$scope.navHoverTimeout||item.isHover||(item.navHoverTimeout=$timeout(function(){$scope.hoverSecondaryNav=!0,item.isHover=!0,item.navHoverTimeout=void 0},hoverDelay))))},$scope.handlePrimaryUnHover=function(item){item.children&&item.children.length>0&&(void 0!==item.navHoverTimeout?($timeout.cancel(item.navHoverTimeout),item.navHoverTimeout=void 0):void 0===item.navUnHoverTimeout&&item.isHover&&(item.navUnHoverTimeout=$timeout(function(){item.isHover=!1,primaryHover()||($scope.hoverSecondaryNav=!1),item.navUnHoverTimeout=void 0},hideDelay)))},$scope.handleSecondaryHover=function(item){item.children&&item.children.length>0&&($scope.inMobileState||(void 0!==item.navUnHoverTimeout?($timeout.cancel(item.navUnHoverTimeout),item.navUnHoverTimeout=void 0):void 0===$scope.navHoverTimeout&&(item.navHoverTimeout=$timeout(function(){$scope.hoverTertiaryNav=!0,item.isHover=!0,item.navHoverTimeout=void 0},hoverDelay))))},$scope.handleSecondaryUnHover=function(item){item.children&&item.children.length>0&&(void 0!==item.navHoverTimeout?($timeout.cancel(item.navHoverTimeout),item.navHoverTimeout=void 0):void 0===item.navUnHoverTimeout&&(item.navUnHoverTimeout=$timeout(function(){item.isHover=!1,secondaryHover()||($scope.hoverTertiaryNav=!1),item.navUnHoverTimeout=void 0},hideDelay)))},$scope.collapseSecondaryNav=function(item,event){$scope.inMobileState?updateMobileMenu():item.secondaryCollapsed?(updateSecondaryCollapsedState(!1,item),forceHideSecondaryMenu()):updateSecondaryCollapsedState(!0,item),$scope.hoverSecondaryNav=!1,event.stopImmediatePropagation()},$scope.collapseTertiaryNav=function(item,event){$scope.inMobileState?$scope.items.forEach(function(primaryItem){primaryItem.children&&primaryItem.children.forEach(function(secondaryItem){secondaryItem===item&&updateMobileMenu(primaryItem)})}):item.tertiaryCollapsed?(updateTertiaryCollapsedState(!1,item),forceHideSecondaryMenu()):updateTertiaryCollapsedState(!0,item),$scope.hoverSecondaryNav=!1,$scope.hoverTertiaryNav=!1,event.stopImmediatePropagation()},initBodyElement(),checkNavState(),angular.element($window).bind("resize",function(){checkNavState(),$timeout(function(){try{$scope.$apply()}catch(e){}})})}}}]),angular.module("patternfly.notification").directive("pfInlineNotification",function(){"use strict";return{scope:{pfNotificationType:"=",pfNotificationMessage:"=",pfNotificationHeader:"=",pfNotificationPersistent:"=",pfNotificationIndex:"="},restrict:"E",templateUrl:"notification/inline-notification.html"}}),angular.module("patternfly.notification").directive("pfNotificationDrawer",["$window","$timeout",function($window,$timeout){"use strict";return{restrict:"A",scope:{drawerHidden:"=?",allowExpand:"=?",drawerExpanded:"=?",drawerTitle:"@",notificationGroups:"=",actionButtonTitle:"@",actionButtonCallback:"=?",titleInclude:"@",headingInclude:"@",subheadingInclude:"@",notificationBodyInclude:"@",notificationFooterInclude:"@",customScope:"=?"},templateUrl:"notification/notification-drawer.html",controller:["$scope",function($scope){(!$scope.allowExpand||angular.isUndefined($scope.drawerExpanded))&&($scope.drawerExpanded=!1)}],link:function(scope,element){scope.$watch("notificationGroups",function(){var openFound=!1;scope.notificationGroups.forEach(function(group){group.open&&(openFound?group.open=!1:openFound=!0)})}),scope.$watch("drawerHidden",function(){$timeout(function(){angular.element($window).triggerHandler("resize")},100)}),scope.toggleCollapse=function(selectedGroup){selectedGroup.open?selectedGroup.open=!1:(scope.notificationGroups.forEach(function(group){group.open=!1}),selectedGroup.open=!0)},scope.toggleExpandDrawer=function(){scope.drawerExpanded=!scope.drawerExpanded},scope.groupHeight&&element.find(".panel-group").css("height",scope.groupHeight),scope.groupClass&&element.find(".panel-group").addClass(scope.groupClass)}}}]),angular.module("patternfly.notification").provider("Notifications",function(){"use strict";this.delay=8e3,this.verbose=!0,this.notifications={},this.persist={error:!0,httpError:!0},this.setDelay=function(delay){return this.delay=delay,this},this.setVerbose=function(verbose){return this.verbose=verbose,this},this.setPersist=function(persist){this.persist=persist},this.$get=["$rootScope","$timeout","$log",function($rootScope,$timeout,$log){function createNotifyMethod(mode){return function(message,header,persistent,closeCallback,actionTitle,actionCallback,menuActions){angular.isUndefined(header)&&(header=modes[mode].header),angular.isUndefined(persistent)&&(persistent=persist[mode]),notifications.message(modes[mode].type,header,message,persistent,closeCallback,actionTitle,actionCallback,menuActions),verbose&&$log[modes[mode].log](message)}}var delay=this.delay,notifications=this.notifications,verbose=this.verbose,persist=this.persist,modes={info:{type:"info",header:"Info!",log:"info"},success:{type:"success",header:"Success!",log:"info"},error:{type:"danger",header:"Error!",log:"error"},warn:{type:"warning",header:"Warning!",log:"warn"}};return $rootScope.notifications={},$rootScope.notifications.data=[],$rootScope.notifications.remove=function(index){$rootScope.notifications.data.splice(index,1)},$rootScope.notifications||($rootScope.notifications.data=[]),notifications.message=function(type,header,message,isPersistent,closeCallback,actionTitle,actionCallback,menuActions){var notification={type:type,header:header,message:message,isPersistent:isPersistent,closeCallback:closeCallback,actionTitle:actionTitle,actionCallback:actionCallback,menuActions:menuActions};notification.show=!0,$rootScope.notifications.data.push(notification),notification.isPersistent||(notification.viewing=!1,$timeout(function(){notification.show=!1,notification.viewing||notifications.remove(notification)},delay))},angular.forEach(modes,function(mode,index){notifications[index]=createNotifyMethod(index)}),notifications.httpError=function(message,httpResponse){message+=" ("+(httpResponse.data.message||httpResponse.data.cause||httpResponse.data.cause||httpResponse.data.errorMessage)+")",notifications.message("danger","Error!",message,persist.httpError),verbose&&$log.error(message)},notifications.remove=function(notification){var index=$rootScope.notifications.data.indexOf(notification);-1!==index&¬ifications.removeIndex(index)},notifications.removeIndex=function(index){$rootScope.notifications.remove(index)},notifications.setViewing=function(notification,viewing){notification.viewing=viewing,viewing||notification.show||notifications.remove(notification)},notifications.data=$rootScope.notifications.data,notifications}]}),angular.module("patternfly.notification").directive("pfNotificationList",function(){"use strict";function NotificationListController($scope,$rootScope){$scope.notifications=$rootScope.notifications}return NotificationListController.$inject=["$scope","$rootScope"],{restrict:"E",controller:NotificationListController,templateUrl:"notification/notification-list.html"}}),angular.module("patternfly.notification").directive("pfToastNotificationList",function(){"use strict";return{restrict:"A",scope:{notifications:"=",showClose:"=?",closeCallback:"=?",updateViewing:"=?"},templateUrl:"notification/toast-notification-list.html",controller:["$scope",function($scope){$scope.handleClose=function(notification){angular.isFunction($scope.closeCallback)&&$scope.closeCallback(notification)},$scope.handleViewingChange=function(isViewing,notification){angular.isFunction($scope.updateViewing)&&$scope.updateViewing(isViewing,notification)}}]}}),angular.module("patternfly.notification").directive("pfToastNotification",function(){"use strict";return{scope:{notificationType:"@",message:"@",header:"@",showClose:"@",closeCallback:"=?",actionTitle:"@",actionCallback:"=?",menuActions:"=?",updateViewing:"=?",data:"=?"},restrict:"A",templateUrl:"notification/toast-notification.html",controller:["$scope",function($scope){$scope.notificationType=$scope.notificationType||"info",$scope.updateShowClose=function(){$scope.showCloseButton="true"===$scope.showClose&&(angular.isUndefined($scope.menuActions)||$scope.menuActions.length<1)},$scope.handleClose=function(){angular.isFunction($scope.closeCallback)&&$scope.closeCallback($scope.data)},$scope.handleAction=function(){angular.isFunction($scope.actionCallback)&&$scope.actionCallback($scope.data)},$scope.handleMenuAction=function(menuAction){menuAction&&angular.isFunction(menuAction.actionFn)&&menuAction.isDisabled!==!0&&menuAction.actionFn(menuAction,$scope.data)},$scope.handleEnter=function(){angular.isFunction($scope.updateViewing)&&$scope.updateViewing(!0,$scope.data)},$scope.handleLeave=function(){angular.isFunction($scope.updateViewing)&&$scope.updateViewing(!1,$scope.data)},$scope.updateShowClose()}],link:function(scope){scope.$watch("showClose",function(){scope.updateShowClose()}),scope.$watch("menuActions",function(){scope.updateShowClose()})}}}),angular.module("patternfly.select",[]).directive("pfSelect",["$timeout",function($timeout){"use strict";return{restrict:"A",require:"?ngModel",scope:{selectPickerOptions:"=pfSelect"},link:function(scope,element,attrs,ngModel){var optionCollectionList,optionCollectionExpr,optionCollection,$render=ngModel.$render,selectpickerRefresh=function(argument){scope.$applyAsync(function(){element.selectpicker("refresh")})},selectpickerDestroy=function(){element.selectpicker("destroy")};element.selectpicker(scope.selectPickerOptions),ngModel.$render=function(){$render.apply(this,arguments),selectpickerRefresh()},attrs.ngOptions&&(optionCollectionList=attrs.ngOptions.split("in "),optionCollectionExpr=optionCollectionList[optionCollectionList.length-1].split(/track by|\|/),optionCollection=optionCollectionExpr[0],scope.$parent.$watchCollection(optionCollection,selectpickerRefresh)),attrs.ngModel&&scope.$parent.$watch(attrs.ngModel,selectpickerRefresh),attrs.$observe("disabled",selectpickerRefresh),scope.$on("$destroy",selectpickerDestroy)}}}]),angular.module("patternfly.sort").directive("pfSort",function(){"use strict";return{restrict:"A",scope:{config:"="},templateUrl:"sort/sort.html",controller:["$scope",function($scope){$scope.setupConfig=function(){var updated=!1;void 0===$scope.config.fields&&($scope.config.fields=[]),$scope.config.fields.length>0&&(void 0===$scope.config.currentField&&($scope.config.currentField=$scope.config.fields[0],updated=!0),void 0===$scope.config.isAscending&&($scope.config.isAscending=!0,updated=!0)),updated===!0&&$scope.config.onSortChange&&$scope.config.onSortChange($scope.config.currentField,$scope.config.isAscending)},$scope.selectField=function(field){$scope.config.currentField=field,$scope.config.onSortChange&&$scope.config.onSortChange($scope.config.currentField,$scope.config.isAscending)},$scope.changeDirection=function(){$scope.config.isAscending=!$scope.config.isAscending,$scope.config.onSortChange&&$scope.config.onSortChange($scope.config.currentField,$scope.config.isAscending)},$scope.getSortIconClass=function(){var iconClass;return iconClass="numeric"===$scope.config.currentField.sortType?$scope.config.isAscending?"fa fa-sort-numeric-asc":"fa fa-sort-numeric-desc":$scope.config.isAscending?"fa fa-sort-alpha-asc":"fa fa-sort-alpha-desc"},$scope.setupConfig()}],link:function(scope,element,attrs){scope.$watch("config",function(){scope.setupConfig()},!0)}}}),angular.module("patternfly.toolbars").directive("pfToolbar",function(){"use strict";return{restrict:"A",scope:{config:"="},replace:!0,transclude:{actions:"?"},templateUrl:"toolbars/toolbar.html",controller:["$scope",function($scope){$scope.viewSelected=function(viewId){$scope.config.viewsConfig.currentView=viewId,$scope.config.viewsConfig.onViewSelect&&!$scope.checkViewDisabled(viewId)&&$scope.config.viewsConfig.onViewSelect(viewId)},$scope.isViewSelected=function(viewId){return $scope.config.viewsConfig&&$scope.config.viewsConfig.currentView===viewId},$scope.checkViewDisabled=function(view){return $scope.config.viewsConfig.checkViewDisabled&&$scope.config.viewsConfig.checkViewDisabled(view)},$scope.filterExists=function(filter){var foundFilter=_.findWhere($scope.config.filterConfig.appliedFilters,{title:filter.title,value:filter.value});return void 0!==foundFilter},$scope.addFilter=function(field,value){var newFilter={id:field.id,title:field.title,value:value};$scope.filterExists(newFilter)||($scope.config.filterConfig.appliedFilters.push(newFilter),$scope.config.filterConfig.onFilterChange&&$scope.config.filterConfig.onFilterChange($scope.config.filterConfig.appliedFilters))},$scope.handleAction=function(action){action&&action.actionFn&&action.isDisabled!==!0&&action.actionFn(action)}}],link:function(scope,element,attrs){scope.$watch("config",function(){scope.config&&scope.config.viewsConfig&&scope.config.viewsConfig.views&&(scope.config.viewsConfig.viewsList=angular.copy(scope.config.viewsConfig.views),scope.config.viewsConfig.currentView||(scope.config.viewsConfig.currentView=scope.config.viewsConfig.viewsList[0]))},!0)}}}),angular.module("patternfly.utils").directive("pfFixedAccordion",["$window","$timeout",function($window,$timeout){"use strict";return{restrict:"A",scope:{scrollSelector:"@",groupHeight:"@",groupClass:"@"},link:function($scope,$element,$attrs){var setCollapseHeights=function(){var height,openPanel,contentHeight,bodyHeight,overflowY="hidden",parentElement=$element.find(".panel-group");height=parentElement.height(),openPanel=parentElement.find(".collapse.in"),openPanel&&openPanel.length>0&&openPanel.removeClass("in"),contentHeight=0,parentElement.children().each(function(index,groupHeading){var headingElement=angular.element(groupHeading);contentHeight+=headingElement.prop("offsetHeight"),contentHeight+=parseInt(headingElement.css("margin-top")),contentHeight+=parseInt(headingElement.css("margin-bottom"))}),bodyHeight=height-contentHeight,25>bodyHeight&&(bodyHeight=25,overflowY="auto"),openPanel&&openPanel.length>0&&openPanel.addClass("in"),$timeout(function(){parentElement.find(".panel-collapse").each(function(index,collapsePanel){var selected,$sibling,$panel=angular.element(collapsePanel),scrollElement=$panel,innerHeight=0;angular.isDefined($scope.scrollSelector)&&(selected=angular.element($panel.find($scope.scrollSelector)),1===selected.length&&(scrollElement=angular.element(selected[0]),$panel.children().each(function(j,sibling){sibling!==scrollElement[0]&&($sibling=angular.element(sibling),innerHeight+=$sibling.prop("offsetHeight"),innerHeight+=parseInt($sibling.css("margin-top")),innerHeight+=parseInt($sibling.css("margin-bottom")))}))),angular.element(scrollElement).css("max-height",bodyHeight-innerHeight+"px"),angular.element(scrollElement).css("overflow-y","auto")})}),angular.element(parentElement).css("overflow-y",overflowY)};$scope.groupHeight&&$element.find(".panel-group").css("height",$scope.groupHeight),$scope.groupClass&&$element.find(".panel-group").addClass($scope.groupClass),$timeout(function(){setCollapseHeights()},100),angular.element($window).bind("resize",function(){setCollapseHeights()})}}}]),angular.module("patternfly.utils").directive("pfTransclude",function(){"use strict";return{restrict:"A",link:function($scope,$element,$attrs,controller,$transclude){var iChildScope,iScopeType;if(!$transclude)throw new Error("pfTransclude - Illegal use of pfTransclude directive in the template! No parent directive that requires a transclusion found. Element: {0}");switch(iScopeType=$attrs.pfTransclude||"sibling"){case"sibling":$transclude(function(clone){$element.empty(),$element.append(clone)});break;case"parent":$transclude($scope,function(clone){$element.empty(),$element.append(clone)});break;case"child":iChildScope=$scope.$new(),$transclude(iChildScope,function(clone){$element.empty(),$element.append(clone),$element.on("$destroy",function(){iChildScope.$destroy()})})}}}}),function(){"use strict";angular.module("patternfly.utils").constant("pfUtils",{merge:function(source1,source2){var retValue;return retValue="function"==typeof angular.merge?this.angularMerge(source1,source2):"function"==typeof _.merge?this._merge(source1,source2):"function"==typeof $.extend?this.$extend(source1,source2):this.mergeDeep(source1,source2)},angularMerge:function(source1,source2){return angular.merge({},source1,source2)},_merge:function(source1,source2){return _.merge({},source1,source2)},$extend:function(source1,source2){return $.extend(!0,angular.copy(source1),source2)},mergeDeep:function(source1,source2){return mergeDeep({},angular.copy(source1),angular.copy(source2))},colorPalette:$.pfPaletteColors})}(),angular.module("patternfly.validation",[]).directive("pfValidation",["$timeout",function($timeout){"use strict";return{restrict:"A",require:"ngModel",scope:{pfValidation:"&",pfValidationDisabled:"="},link:function(scope,element,attrs,ctrl){function validate(){var valid,val=scope.inputCtrl.$modelValue,valFunc=scope.pfValidation({input:val});attrs.pfValidation||(valFunc=!0),valid=!val||valFunc||""===val,toggleErrorClass(scope.valEnabled&&!valid?!0:!1)}function toggleErrorClass(add){var messageElement=element.next(),parentElement=element.parent(),hasErrorM=parentElement.hasClass("has-error"),wasHidden=messageElement.hasClass("ng-hide");scope.inputCtrl.$setValidity("pf-validation",!add),add&&(hasErrorM||parentElement.addClass("has-error"),wasHidden&&messageElement.removeClass("ng-hide")),add||(hasErrorM&&parentElement.removeClass("has-error"),wasHidden||messageElement.addClass("ng-hide"))}scope.inputCtrl=ctrl,scope.valEnabled=!attrs.pfValidationDisabled,scope.$watch("pfValidationDisabled",function(newVal){scope.valEnabled=!newVal,newVal?(scope.inputCtrl.$setValidity("pfValidation",!0),toggleErrorClass(!1)):validate()}),attrs.pfValidation?$timeout(function(){validate()},0):!scope.inputCtrl.$valid&&scope.inputCtrl.$dirty&&toggleErrorClass(!0),scope.$watch("inputCtrl.$valid",function(isValid){toggleErrorClass(isValid?!1:!0)}),scope.$watch("inputCtrl.$modelValue",function(){validate()})}}}]),angular.module("patternfly.views").directive("pfCardView",["pfUtils",function(pfUtils){"use strict";return{restrict:"A",scope:{config:"=?",items:"=",eventId:"@id"},transclude:!0,templateUrl:"views/cardview/card-view.html",controller:["$scope",function($scope){if($scope.defaultConfig={selectItems:!1,multiSelect:!1,dblClick:!1,selectionMatchProp:"uuid",selectedItems:[],checkDisabled:!1,showSelectBox:!0,onSelect:null,onSelectionChange:null,onCheckBoxChange:null,onClick:null,onDblClick:null},$scope.config=pfUtils.merge($scope.defaultConfig,$scope.config),$scope.config.selectItems&&$scope.config.showSelectBox)throw new Error("pfCardView - Illegal use of pfCardView directive! Cannot allow both select box and click selection in the same card view.")}],link:function(scope,element,attrs){attrs.$observe("config",function(){scope.config=pfUtils.merge(scope.defaultConfig,scope.config),scope.config.selectItems||(scope.config.selectedItems=[]),!scope.config.multiSelect&&scope.config.selectedItems&&scope.config.selectedItems.length>0&&(scope.config.selectedItems=[scope.config.selectedItems[0]])}),scope.itemClick=function(e,item){var alreadySelected,selectionChanged=!1,continueEvent=!0;return scope.checkDisabled(item)?continueEvent:(scope.config&&scope.config.selectItems&&item&&(scope.config.multiSelect&&!scope.config.dblClick?(alreadySelected=_.find(scope.config.selectedItems,function(itemObj){return itemObj===item}),alreadySelected?scope.config.selectedItems=_.without(scope.config.selectedItems,item):(scope.config.selectedItems.push(item),selectionChanged=!0)):scope.config.selectedItems[0]===item?(scope.config.dblClick||(scope.config.selectedItems=[],selectionChanged=!0),continueEvent=!1):(scope.config.selectedItems=[item],selectionChanged=!0),selectionChanged&&scope.config.onSelect&&scope.config.onSelect(item,e),selectionChanged&&scope.config.onSelectionChange&&scope.config.onSelectionChange(scope.config.selectedItems,e)),scope.config.onClick&&scope.config.onClick(item,e),continueEvent)},scope.dblClick=function(e,item){scope.config.onDblClick&&scope.config.onDblClick(item,e)},scope.checkBoxChange=function(item){scope.config.onCheckBoxChange&&scope.config.onCheckBoxChange(item)},scope.isSelected=function(item){var matchProp=scope.config.selectionMatchProp,selected=!1;if(scope.config.showSelectBox)selected=item.selected;else if(scope.config.selectedItems.length)return _.find(scope.config.selectedItems,function(itemObj){return itemObj[matchProp]===item[matchProp]});return selected},scope.checkDisabled=function(item){return scope.config.checkDisabled&&scope.config.checkDisabled(item)}}}}]),angular.module("patternfly.views").directive("pfListView",["$timeout","$window","pfUtils",function($timeout,$window,pfUtils){"use strict";return{restrict:"A",scope:{config:"=?",items:"=",actionButtons:"=?",enableButtonForItemFn:"=?",menuActions:"=?",hideMenuForItemFn:"=?",menuClassForItemFn:"=?",updateMenuActionForItemFn:"=?",actions:"=?",updateActionForItemFn:"=?",customScope:"=?"},transclude:{expandedContent:"?listExpandedContent"},templateUrl:"views/listview/list-view.html",controller:["$scope","$element",function($scope,$element){var setDropMenuLocation=function(parentDiv){var dropButton=parentDiv.querySelector(".dropdown-toggle"),dropMenu=parentDiv.querySelector(".dropdown-menu"),parentRect=$element[0].getBoundingClientRect(),buttonRect=dropButton.getBoundingClientRect(),menuRect=dropMenu.getBoundingClientRect(),menuTop=buttonRect.top-menuRect.height,menuBottom=buttonRect.top+buttonRect.height+menuRect.height;menuBottom<=parentRect.top+parentRect.height||menuTop0&&(scope.config.selectedItems=[scope.config.selectedItems[0]])}),scope.itemClick=function(e,item){var alreadySelected,selectionChanged=!1,continueEvent=!0;return scope.checkDisabled(item)?continueEvent:(scope.config&&scope.config.selectItems&&item&&(scope.config.multiSelect&&!scope.config.dblClick?(alreadySelected=_.find(scope.config.selectedItems,function(itemObj){return itemObj===item}),alreadySelected?scope.config.selectedItems=_.without(scope.config.selectedItems,item):(scope.config.selectedItems.push(item),selectionChanged=!0)):scope.config.selectedItems[0]===item?(scope.config.dblClick||(scope.config.selectedItems=[],selectionChanged=!0),continueEvent=!1):(scope.config.selectedItems=[item],selectionChanged=!0),selectionChanged&&scope.config.onSelect&&scope.config.onSelect(item,e),selectionChanged&&scope.config.onSelectionChange&&scope.config.onSelectionChange(scope.config.selectedItems,e)),scope.config.onClick&&scope.config.onClick(item,e),continueEvent)},scope.dblClick=function(e,item){return scope.checkDisabled(item)?continueEvent:void(scope.config.onDblClick&&scope.config.onDblClick(item,e))},scope.checkBoxChange=function(item){scope.config.onCheckBoxChange&&scope.config.onCheckBoxChange(item)},scope.isSelected=function(item){var matchProp=scope.config.selectionMatchProp,selected=!1;return scope.config.showSelectBox?selected=item.selected:scope.config.selectItems&&scope.config.selectedItems.length&&(selected=_.find(scope.config.selectedItems,function(itemObj){return itemObj[matchProp]===item[matchProp]})),selected},scope.checkDisabled=function(item){return scope.config.checkDisabled&&scope.config.checkDisabled(item)}}}}]),function(){"use strict";angular.module("patternfly.views").constant("pfViewUtils",{getDashboardView:function(title){return{id:"dashboardView",title:title||"Dashboard View",iconClass:"fa fa-dashboard"}},getCardView:function(title){return{id:"cardView",title:title||"Card View",iconClass:"fa fa-th"}},getListView:function(title){return{id:"listView",title:title||"List View",iconClass:"fa fa-th-list"}},getTableView:function(title){return{id:"tableView",title:title||"Table View",iconClass:"fa fa-table"}},getTopologyView:function(title){return{id:"topologyView",title:title||"Topology View",iconClass:"fa fa-sitemap"}}})}(),function(){"use strict";function pfWizardButtonDirective(action){angular.module("patternfly.wizard").directive(action,function(){return{restrict:"A",require:"^pf-wizard",scope:{callback:"=?"},link:function($scope,$element,$attrs,wizard){$element.on("click",function(e){e.preventDefault(),$scope.$apply(function(){$scope.$eval($attrs[action]),wizard[action.replace("pfWiz","").toLowerCase()]($scope.callback)})})}}})}pfWizardButtonDirective("pfWizNext"),pfWizardButtonDirective("pfWizPrevious"),pfWizardButtonDirective("pfWizFinish"),pfWizardButtonDirective("pfWizCancel"),pfWizardButtonDirective("pfWizReset")}(),angular.module("patternfly.wizard").directive("pfWizard",["$window",function($window){"use strict";return{restrict:"A",transclude:!0,scope:{title:"@",hideIndicators:"=?",currentStep:"=?",cancelTitle:"=?",backTitle:"=?",nextTitle:"=?",backCallback:"=?",nextCallback:"=?",onFinish:"&",onCancel:"&",wizardReady:"=?",wizardDone:"=?",loadingWizardTitle:"=?",loadingSecondaryInformation:"=?",contentHeight:"=?",embedInPage:"=?"},templateUrl:"wizard/wizard.html",controller:["$scope","$timeout",function($scope,$timeout){var firstRun=!0,stepIdx=function(step){var idx=0,res=-1;return angular.forEach($scope.getEnabledSteps(),function(currStep){currStep===step&&(res=idx),idx++}),res},unselectAll=function(){angular.forEach($scope.getEnabledSteps(),function(step){step.selected=!1}),$scope.selectedStep=null},watchSelectedStep=function(){$scope.nextStepEnabledWatcher&&$scope.nextStepEnabledWatcher(),$scope.nextStepTooltipWatcher&&$scope.nextStepTooltipWatcher(),$scope.prevStepEnabledWatcher&&$scope.prevStepEnabledWatcher(),$scope.prevStepTooltipWatcher&&$scope.prevStepTooltipWatcher(),$scope.nextStepEnabledWatcher=$scope.$watch("selectedStep.nextEnabled",function(value){$scope.nextEnabled=value}),$scope.nextStepTooltipWatcher=$scope.$watch("selectedStep.nextTooltip",function(value){$scope.nextTooltip=value}),$scope.prevStepEnabledWatcher=$scope.$watch("selectedStep.prevEnabled",function(value){$scope.prevEnabled=value}),$scope.prevStepTooltipWatcher=$scope.$watch("selectedStep.prevTooltip",function(value){$scope.prevTooltip=value})},stepByTitle=function(titleToFind){var foundStep=null;return angular.forEach($scope.getEnabledSteps(),function(step){step.title===titleToFind&&(foundStep=step)}),foundStep};$scope.steps=[],$scope.context={},this.context=$scope.context,angular.isUndefined($scope.wizardReady)&&($scope.wizardReady=!0),angular.isUndefined($scope.contentHeight)&&($scope.contentHeight="300px"),this.contentHeight=$scope.contentHeight,$scope.contentStyle={height:$scope.contentHeight,"max-height":$scope.contentHeight,"overflow-y":"auto"},this.contentStyle=$scope.contentStyle,$scope.nextEnabled=!1,$scope.prevEnabled=!1,$scope.cancelTitle||($scope.cancelTitle="Cancel"),$scope.backTitle||($scope.backTitle="< Back"),$scope.nextTitle||($scope.nextTitle="Next >"),$scope.getEnabledSteps=function(){return $scope.steps.filter(function(step){return"true"!==step.disabled})},this.getReviewSteps=function(){return $scope.steps.filter(function(step){return!step.disabled&&(!angular.isUndefined(step.reviewTemplate)||step.getReviewSteps().length>0)})},$scope.currentStepNumber=function(){return stepIdx($scope.selectedStep)+1},$scope.getStepNumber=function(step){return stepIdx(step)+1},$scope.$watch("currentStep",function(step){step&&$scope.selectedStep&&$scope.selectedStep.title!==$scope.currentStep&&$scope.goTo(stepByTitle($scope.currentStep))}),$scope.$watch("[editMode, steps.length]",function(){var editMode=$scope.editMode;angular.isUndefined(editMode)||null===editMode||(editMode?angular.forEach($scope.getEnabledSteps(),function(step){step.completed=!0}):angular.forEach($scope.getEnabledSteps(),function(step,stepIndex){stepIndex>=$scope.currentStepNumber()-1&&(step.completed=!1)}))},!0),$scope.goTo=function(step,resetStepNav){$scope.wizardDone||$scope.selectedStep&&!$scope.selectedStep.okToNavAway||step===$scope.selectedStep||((firstRun||$scope.getStepNumber(step)<$scope.currentStepNumber()&&$scope.selectedStep.isPrevEnabled()||$scope.selectedStep.isNextEnabled())&&(unselectAll(),!firstRun&&resetStepNav&&step.substeps&&step.resetNav(),$scope.selectedStep=step,step.selected=!0,$timeout(function(){angular.isFunction(step.onShow)&&step.onShow()},100),watchSelectedStep(),$scope.currentStep=step.title,step.substeps||$scope.$emit("wizard:stepChanged",{step:step,index:stepIdx(step)}),firstRun=!1),$scope.selectedStep.substeps?$scope.firstStep=0===stepIdx($scope.selectedStep)&&1===$scope.selectedStep.currentStepNumber():$scope.firstStep=0===stepIdx($scope.selectedStep))},$scope.stepClick=function(step){step.allowClickNav&&$scope.goTo(step,!0)},this.addStep=function(step){var insertBefore=_.find($scope.steps,function(nextStep){return nextStep.stepPriority>step.stepPriority});insertBefore?$scope.steps.splice($scope.steps.indexOf(insertBefore),0,step):$scope.steps.push(step),$scope.wizardReady&&$scope.getEnabledSteps().length>0&&step===$scope.getEnabledSteps()[0]&&$scope.goTo($scope.getEnabledSteps()[0])},this.isWizardDone=function(){return $scope.wizardDone},this.updateSubStepNumber=function(value){$scope.firstStep=0===stepIdx($scope.selectedStep)&&0===value},this.currentStepTitle=function(){return $scope.selectedStep.title},this.currentStepDescription=function(){return $scope.selectedStep.description},this.currentStep=function(){return $scope.selectedStep},this.totalStepCount=function(){return $scope.getEnabledSteps().length},this.getEnabledSteps=function(){return $scope.getEnabledSteps()},this.currentStepNumber=function(){return $scope.currentStepNumber()},this.getStepNumber=function(step){return $scope.getStepNumber(step)},this.goTo=function(step,resetStepNav){var stepTo,enabledSteps=$scope.getEnabledSteps();stepTo=angular.isNumber(step)?enabledSteps[step]:stepByTitle(step),$scope.goTo(stepTo,resetStepNav)},this.next=function(callback){var enabledSteps=$scope.getEnabledSteps(),index=stepIdx($scope.selectedStep);if(!$scope.selectedStep.substeps||!$scope.selectedStep.next(callback)){if(angular.isFunction(callback)){if(!callback($scope.selectedStep))return;index===enabledSteps.length-1?this.finish():enabledSteps[index+1].substeps&&enabledSteps[index+1].resetNav()}$scope.selectedStep.completed=!0,index===enabledSteps.length-1?this.finish():$scope.goTo(enabledSteps[index+1])}},this.previous=function(callback){var index=stepIdx($scope.selectedStep);if((!$scope.selectedStep.substeps||!$scope.selectedStep.previous(callback))&&angular.isFunction(callback)&&callback($scope.selectedStep)){if(0===index)throw new Error("Can't go back. It's already in step 0");$scope.goTo($scope.getEnabledSteps()[index-1])}},this.finish=function(){$scope.onFinish&&$scope.onFinish()!==!1&&this.reset()},this.cancel=function(){$scope.onCancel&&$scope.onCancel()!==!1&&this.reset()},this.reset=function(){angular.forEach($scope.getEnabledSteps(),function(step){step.completed=!1}),this.goTo(0)}}],link:function($scope){$scope.$watch("wizardReady",function(){$scope.wizardReady&&$scope.goTo($scope.getEnabledSteps()[0])})}}}]),angular.module("patternfly.wizard").directive("pfWizardReviewPage",function(){"use strict";return{restrict:"A",scope:{shown:"=",wizardData:"="},require:"^pf-wizard",templateUrl:"wizard/wizard-review-page.html",controller:["$scope",function($scope){$scope.toggleShowReviewDetails=function(step){step.showReviewDetails===!0?step.showReviewDetails=!1:step.showReviewDetails=!0},$scope.getSubStepNumber=function(step,substep){return step.getStepDisplayNumber(substep)},$scope.getReviewSubSteps=function(reviewStep){return reviewStep.getReviewSteps()},$scope.reviewSteps=[],$scope.updateReviewSteps=function(wizard){$scope.reviewSteps=wizard.getReviewSteps()}}],link:function($scope,$element,$attrs,wizard){$scope.$watch("shown",function(value){value&&$scope.updateReviewSteps(wizard)})}}}),angular.module("patternfly.wizard").directive("pfWizardStep",function(){"use strict";return{restrict:"A",transclude:!0,scope:{stepTitle:"@",stepId:"@",stepPriority:"@",substeps:"=?",nextEnabled:"=?",prevEnabled:"=?",nextTooltip:"=?",prevTooltip:"=?",disabled:"@?wzDisabled",okToNavAway:"=?",allowClickNav:"=?",description:"@",wizardData:"=",onShow:"=?",showReview:"@?",showReviewDetails:"@?",reviewTemplate:"@?"},require:"^pf-wizard",templateUrl:"wizard/wizard-step.html",controller:["$scope","$timeout",function($scope,$timeout){var firstRun=!0,stepIdx=function(step){var idx=0,res=-1;return angular.forEach($scope.getEnabledSteps(),function(currStep){currStep===step&&(res=idx),idx++}),res},unselectAll=function(){angular.forEach($scope.getEnabledSteps(),function(step){step.selected=!1}),$scope.selectedStep=null},watchSelectedStep=function(){$scope.nextStepEnabledWatcher&&$scope.nextStepEnabledWatcher(),$scope.nextStepTooltipWatcher&&$scope.nextStepTooltipWatcher(),$scope.prevStepEnabledWatcher&&$scope.prevStepEnabledWatcher(),$scope.prevStepTooltipWatcher&&$scope.prevStepTooltipWatcher(),$scope.nextStepEnabledWatcher=$scope.$watch("selectedStep.nextEnabled",function(value){$scope.nextEnabled=value}),$scope.nextStepTooltipWatcher=$scope.$watch("selectedStep.nextTooltip",function(value){$scope.nextTooltip=value}),$scope.prevStepEnabledWatcher=$scope.$watch("selectedStep.prevEnabled",function(value){$scope.prevEnabled=value}),$scope.prevStepTooltipWatcher=$scope.$watch("selectedStep.prevTooltip",function(value){$scope.prevTooltip=value})},stepByTitle=function(titleToFind){var foundStep=null;return angular.forEach($scope.getEnabledSteps(),function(step){step.stepTitle===titleToFind&&(foundStep=step)}),foundStep};$scope.steps=[],$scope.context={},this.context=$scope.context,angular.isUndefined($scope.nextEnabled)&&($scope.nextEnabled=!0),angular.isUndefined($scope.prevEnabled)&&($scope.prevEnabled=!0),angular.isUndefined($scope.showReview)&&($scope.showReview=!1),angular.isUndefined($scope.showReviewDetails)&&($scope.showReviewDetails=!1),angular.isUndefined($scope.stepPriority)?$scope.stepPriority=999:$scope.stepPriority=parseInt($scope.stepPriority),angular.isUndefined($scope.okToNavAway)&&($scope.okToNavAway=!0),angular.isUndefined($scope.allowClickNav)&&($scope.allowClickNav=!0),$scope.getEnabledSteps=function(){return $scope.steps.filter(function(step){return"true"!==step.disabled})},$scope.getReviewSteps=function(){var reviewSteps=$scope.getEnabledSteps().filter(function(step){return!angular.isUndefined(step.reviewTemplate)});return reviewSteps},$scope.resetNav=function(){$scope.goTo($scope.getEnabledSteps()[0])},$scope.currentStepNumber=function(){return stepIdx($scope.selectedStep)+1},$scope.getStepNumber=function(step){return stepIdx(step)+1},$scope.isNextEnabled=function(){var enabled=angular.isUndefined($scope.nextEnabled)||$scope.nextEnabled;return $scope.substeps&&angular.forEach($scope.getEnabledSteps(),function(step){enabled=enabled&&step.nextEnabled}),enabled},$scope.isPrevEnabled=function(){var enabled=angular.isUndefined($scope.prevEnabled)||$scope.prevEnabled;return $scope.substeps&&angular.forEach($scope.getEnabledSteps(),function(step){enabled=enabled&&step.prevEnabled}),enabled},$scope.getStepDisplayNumber=function(step){return $scope.pageNumber+String.fromCharCode(65+stepIdx(step))+"."},$scope.$watch("currentStep",function(step){step&&$scope.selectedStep&&$scope.selectedStep.stepTitle!==$scope.currentStep&&$scope.goTo(stepByTitle($scope.currentStep))}),$scope.$watch("[editMode, steps.length]",function(){var editMode=$scope.editMode;angular.isUndefined(editMode)||null===editMode||(editMode?angular.forEach($scope.getEnabledSteps(),function(step){step.completed=!0}):angular.forEach($scope.getEnabledSteps(),function(step,stepIndex){stepIndex>=$scope.currentStepNumber()-1&&(step.completed=!1)}))},!0),$scope.prevStepsComplete=function(nextStep){var nextIdx=stepIdx(nextStep),complete=!0;return angular.forEach($scope.getEnabledSteps(),function(step,stepIndex){nextIdx>stepIndex&&(complete=complete&&step.nextEnabled)}),complete},$scope.goTo=function(step){!$scope.wizard.isWizardDone()&&step.okToNavAway&&step!==$scope.selectedStep&&(firstRun||$scope.getStepNumber(step)<$scope.currentStepNumber()&&$scope.selectedStep.prevEnabled||$scope.prevStepsComplete(step))&&(unselectAll(),$scope.selectedStep=step,step&&(step.selected=!0,angular.isFunction($scope.selectedStep.onShow)&&$scope.selectedStep.onShow(),watchSelectedStep(),$scope.currentStep=step.stepTitle,$scope.selected&&($scope.$emit("wizard:stepChanged",{step:step,index:stepIdx(step)}),firstRun=!1)),$scope.wizard.updateSubStepNumber(stepIdx($scope.selectedStep)))},$scope.stepClick=function(step){step.allowClickNav&&$scope.goTo(step)},$scope.$watch("selected",function(){$scope.selected&&$scope.selectedStep&&$scope.$emit("wizard:stepChanged",{step:$scope.selectedStep,index:stepIdx($scope.selectedStep)})}),this.addStep=function(step){var insertBefore=_.find($scope.steps,function(nextStep){return nextStep.stepPriority>step.stepPriority});insertBefore?$scope.steps.splice($scope.steps.indexOf(insertBefore),0,step):$scope.steps.push(step)},this.currentStepTitle=function(){return $scope.selectedStep.stepTitle},this.currentStepDescription=function(){return $scope.selectedStep.description},this.currentStep=function(){return $scope.selectedStep},this.totalStepCount=function(){return $scope.getEnabledSteps().length},this.getEnabledSteps=function(){return $scope.getEnabledSteps()},this.currentStepNumber=function(){return $scope.currentStepNumber()},this.goTo=function(step){var stepTo,enabledSteps=$scope.getEnabledSteps();stepTo=angular.isNumber(step)?enabledSteps[step]:stepByTitle(step),$scope.goTo(stepTo)},$scope.next=function(callback){var enabledSteps=$scope.getEnabledSteps(),index=stepIdx($scope.selectedStep);return angular.isFunction(callback)?callback($scope.selectedStep)?index===enabledSteps.length-1?!1:($scope.goTo(enabledSteps[index+1]),!0):!0:($scope.selectedStep.completed=!0,index===enabledSteps.length-1?!1:($scope.goTo(enabledSteps[index+1]),!0))},$scope.previous=function(callback){var index=stepIdx($scope.selectedStep),goPrev=!1;return angular.isFunction(callback)&&callback($scope.selectedStep)&&0!==index&&($scope.goTo($scope.getEnabledSteps()[index-1]),goPrev=!0),goPrev},$scope.substeps&&!$scope.onShow&&($scope.onShow=function(){$timeout(function(){$scope.selectedStep||$scope.goTo($scope.getEnabledSteps()[0])},10)})}],link:function($scope,$element,$attrs,wizard){$scope.$watch($attrs.ngShow,function(value){$scope.pageNumber=wizard.getStepNumber($scope)}),$scope.title=$scope.stepTitle,$scope.contentStyle=wizard.contentStyle,wizard.addStep($scope),$scope.wizard=wizard}}}),angular.module("patternfly.wizard").directive("pfWizardSubstep",function(){"use strict";return{restrict:"A",transclude:!0,scope:{stepTitle:"@",stepId:"@",stepPriority:"@",nextEnabled:"=?",prevEnabled:"=?",okToNavAway:"=?",allowClickNav:"=?",disabled:"@?wzDisabled",description:"@",wizardData:"=",onShow:"=?",showReviewDetails:"@?",reviewTemplate:"@?"},require:"^pf-wizard-step",templateUrl:"wizard/wizard-substep.html",controller:["$scope",function($scope){angular.isUndefined($scope.nextEnabled)&&($scope.nextEnabled=!0),angular.isUndefined($scope.prevEnabled)&&($scope.prevEnabled=!0),angular.isUndefined($scope.showReviewDetails)&&($scope.showReviewDetails=!1),angular.isUndefined($scope.stepPriority)?$scope.stepPriority=999:$scope.stepPriority=parseInt($scope.stepPriority),angular.isUndefined($scope.okToNavAway)&&($scope.okToNavAway=!0),angular.isUndefined($scope.allowClickNav)&&($scope.allowClickNav=!0),$scope.isPrevEnabled=function(){var enabled=angular.isUndefined($scope.prevEnabled)||$scope.prevEnabled;return $scope.substeps&&angular.forEach($scope.getEnabledSteps(),function(step){enabled=enabled&&step.prevEnabled}),enabled}}],link:function($scope,$element,$attrs,step){$scope.title=$scope.stepTitle,step.addStep($scope)}}}),angular.module("patternfly.card").run(["$templateCache",function($templateCache){"use strict";$templateCache.put("card/aggregate-status/aggregate-status-card.html",'

      {{status.count}} {{status.title}} {{status.count}} {{status.title}}

      {{ notification.count }} {{ notification.count }}

      {{status.count}} {{status.title}} {{status.count}} {{status.title}}

      {{status.notification.count}} {{status.notification.count}}

      '),$templateCache.put("card/basic/card-filter.html",'
      '),$templateCache.put("card/basic/card.html","

      {{headTitle}}

      {{subTitle}}
      ")}]),angular.module("patternfly.charts").run(["$templateCache",function($templateCache){"use strict";$templateCache.put("charts/donut/donut-pct-chart.html",'
      '),$templateCache.put("charts/empty-chart.html",'
      No data available
      '),$templateCache.put("charts/heatmap/heatmap-legend.html",'
      • {{item.text}}
      '),$templateCache.put("charts/heatmap/heatmap.html",'

      {{chartTitle}}

      '),$templateCache.put("charts/line/line-chart.html",'
      '),$templateCache.put("charts/sparkline/sparkline-chart.html",'
      '),$templateCache.put("charts/trends/trends-chart.html",'
      {{config.title}} {{getLatestValue()}} {{config.units}} {{getPercentageValue() + \'%\'}} of {{chartData.total + \' \' + config.units}}
      {{config.timeFrame}}
      {{getLatestValue()}} {{config.units}} {{getPercentageValue() + \'%\'}} of {{chartData.total + \' \' + config.units}} {{config.title}}
      {{getPercentageValue() + \'%\'}}
      {{config.trendLabel}} {{getLatestValue()}} of {{chartData.total + \' \' + config.units}}
      '),$templateCache.put("charts/utilization-bar/utilization-bar-chart.html",'
      {{chartTitle}}
      {{chartData.used}} of {{chartData.total}} {{units}} Used {{chartData.percentageUsed}}% Used
      {{chartTitle}}
      {{chartData.used}} {{units}} Used {{chartData.percentageUsed}}% Used
      '),$templateCache.put("charts/utilization-trend/utilization-trend-chart.html",'

      {{config.title}}

      {{currentValue}}

      {{currentText}}
      of {{chartData.total}} {{config.units}}
      {{legendLeftText}} {{legendRightText}}
      '); +}]),angular.module("patternfly.filters").run(["$templateCache",function($templateCache){"use strict";$templateCache.put("filters/filter-fields.html",'
      '),$templateCache.put("filters/filter-results.html",'
      {{config.resultsCount}} Results

      Active filters:

      • {{filter.title}}: {{filter.value}}

      Clear All Filters

      '),$templateCache.put("filters/filter.html","
      ")}]),angular.module("patternfly.form").run(["$templateCache",function($templateCache){"use strict";$templateCache.put("form/datepicker/datepicker.html",'
      '),$templateCache.put("form/datetimepicker/datetimepicker.html",'
      '),$templateCache.put("form/form-buttons/form-buttons.html",'
      '),$templateCache.put("form/form-group/form-group.html",'
      • {{ message }}
      ')}]),angular.module("patternfly.modals").run(["$templateCache",function($templateCache){"use strict";$templateCache.put("modals/about-modal.html",'')}]),angular.module("patternfly.navigation").run(["$templateCache",function($templateCache){"use strict";$templateCache.put("navigation/vertical-navigation.html","
      ')}]),angular.module("patternfly.notification").run(["$templateCache",function($templateCache){"use strict";$templateCache.put("notification/inline-notification.html",'
      {{pfNotificationHeader}} {{pfNotificationMessage}}
      '),$templateCache.put("notification/notification-drawer.html",'

      {{drawerTitle}}

      '),$templateCache.put("notification/notification-list.html",'
      '),$templateCache.put("notification/notification.html",'
      {{pfNotificationHeader}} {{pfNotificationMessage}}
      '),$templateCache.put("notification/toast-notification-list.html",'
      '),$templateCache.put("notification/toast-notification.html",'
      {{header}} {{message}} {{message}}
      ')}]),angular.module("patternfly.sort").run(["$templateCache",function($templateCache){"use strict";$templateCache.put("sort/sort.html",'
      ')}]),angular.module("patternfly.toolbars").run(["$templateCache",function($templateCache){"use strict";$templateCache.put("toolbars/toolbar.html",'
      ')}]),angular.module("patternfly.views").run(["$templateCache",function($templateCache){"use strict";$templateCache.put("views/cardview/card-view.html",'
      '),$templateCache.put("views/listview/list-view.html",'
      ')}]),angular.module("patternfly.wizard").run(["$templateCache",function($templateCache){"use strict";$templateCache.put("wizard/wizard-review-page.html",''),$templateCache.put("wizard/wizard-step.html",'
      '),$templateCache.put("wizard/wizard-substep.html",''),$templateCache.put("wizard/wizard.html",'
      ')}]); diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/angular-patternfly.css b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/angular-patternfly.css new file mode 100644 index 00000000..40bcd9da --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/angular-patternfly.css @@ -0,0 +1,472 @@ +.card-pf-aggregate-status-alt .card-pf-body { + padding-bottom: 20px; +} + +.card-pf-aggregate-status-alt .card-pf-title { + line-height: 22px; + margin: 20px 0 10px 0; + font-weight: 300; +} + +.card-pf-aggregate-status-alt .card-pf-aggregate-status-count { + font-size: 24px; +} + +.card-pf-aggregate-status-alt .card-pf-aggregate-status-title { + display: block; + font-size: 12px; +} + +.card-pf-aggregate-status-alt .card-pf-aggregate-status-notifications .card-pf-aggregate-status-notification { + border-left: none; +} + +.card-pf-aggregate-status-alt .card-pf-aggregate-status-notifications .fa, .card-pf-aggregate-status-alt .card-pf-aggregate-status-notifications .pficon { + position: relative; + top: -1px; +} + +.card-pf-heading-no-bottom { + margin: 0 -20px 0px; + padding: 0 20px 0; +} + +.card-pf-icon-image { + height: 18px; + margin: 0 5px 5px; +} + +.empty-chart-content { + text-align: center; +} + +.empty-chart-content .pficon { + font-size: 24px; +} +.empty-chart-content span { + vertical-align: middle; + width: 100%; +} + + +.utilization-trend-chart-pf .donut-chart-pf { + width: 100%; + float: left; + padding-top: 15px; +} + +.utilization-trend-chart-pf h3 { + font-weight: 400; +} + +.utilization-trend-chart-pf .current-values { + border-bottom: 1px solid #d1d1d1; + float: left; + padding: 0 5px 10px 0; + width: 100%; +} + +.utilization-trend-chart-pf .available-count { + margin: 3px 0; + padding-left: 0; + padding-right: 5px; +} + +.utilization-trend-chart-pf .available-text { + font-size: 12px; + font-weight: 400; + line-height: 14px; + margin: 2px 0; + padding: 0 5px; +} + +.utilization-trend-chart-pf .radial-chart { + float: left; + padding-top: 10px; + width: 100%; +} + +.utilization-trend-chart-pf .sparkline-chart { + float: left; + margin-left: -5px; + margin-right: -5px; + width: 100%; +} + +.utilization-trend-chart-pf .legend-text { + color: inherit; + display: block; + font-size: 12px; + font-weight: 400; + margin-left: 0; +} + +.utilization-trend-chart-pf.data-unavailable-pf .current-values { + color: transparent; +} + +.card-view-pf { + overflow: auto; + padding-top: 20px; + padding-left: 2px; +} + +.card-view-pf .card { + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .175); + background: #fff; + border-top: 2px solid transparent; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.175); + display: block; + float: left; + height: 290px; + margin-right: 20px; + margin-bottom: 20px; + padding: 10px; + position: relative; + text-align: center; + width: 260px; +} + +.card-view-pf .card .card-check-box { + left: 10px; + position: absolute; + top: 8px; + width: 20px; + z-index: 3; + visibility: hidden; +} + +.card-view-pf .card-content { + height: 100%; + margin: 2px 0 10px 0; + overflow: auto; + width: 100%; +} + +.card-view-pf .card-title { + color: #1186C1; + font-weight: 500; + font-size: 16px; + line-height: 1.1; + margin-top: 0px; +} + +.card-view-pf .card.active, +.card-view-pf .card.active:hover, +.card-view-pf .card.active:focus { + border: solid 3px #00a8e1; +} + +.card-view-pf .card:hover, +.card-view-pf .card:focus { + -webkit-box-shadow: 0px 3px 10px -2px rgba(0,0,0,0.24); + -moz-box-shadow: 0px 3px 10px -2px rgba(0,0,0,0.24); + box-shadow: 0px 3px 10px -2px rgba(0,0,0,0.24); + border: 1px solid #d1d1d1 +} + +.card-view-pf .card.active .pficon, +.card-view-pf .card.active:hover .pficon, +.card-view-pf .card.active:focus .pficon { + color: #ffffff; +} +.card-view-pf .card:hover .card-check-box, +.card-view-pf .card.active .card-check-box { + visibility: visible; +} + +.card-view-pf .card.disabled, .card.disabled:hover, .card.disabled:focus { + border: 1px solid #eee; + color: #999999; + cursor: not-allowed; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.trend-card-large-pf .trend-header-pf { + font-size: 16px; + font-weight: 400; + display: block; + margin-left: 10px; +} + +.trend-card-small-pf .trend-header-pf { + font-size: 12px; + font-weight: 400; + display: block; + margin-left: 10px; +} + +.trend-card-large-pf .trend-title-big-pf { + font-size: 26px; + font-weight: 300; + margin-left: 10px; +} + +.trend-card-small-pf .trend-title-big-pf { + font-size: 17px; + font-weight: 400; + margin-left: 10px; +} + +.trend-card-large-pf .trend-title-small-pf { + font-size: 12px; + font-weight: 400; +} + +.trend-card-small-pf .trend-title-small-pf { + font-size: 10px; + font-weight: 400; +} + +.trend-flat-details { + display: table; + margin-top: 5px; +} + +@media (min-width: 768px) { +.trend-flat-details { + margin-top: 25px; + } +} + +.trend-flat-details-cell { + display: table-cell; + vertical-align: bottom; + min-width: 70px; +} + +.trend-header-compact-pf { + display: block; + font-size: 12px; + font-weight: 400; +} + +.trend-title-compact-big-pf { + font-size: 36px; + font-weight: 300; + line-height: 1; +} + +.trend-title-compact-small-pf { + font-size: 12px; + font-weight: 400; +} + +.trend-title-flat-big-pf { + font-size: 26px; + font-weight: 300; + line-height: 1; + margin-right: 15px; +} + +.trend-label-flat-pf { + font-size: 12px; + font-weight: 400; + line-height: 1; +} + +.trend-label-flat-strong-pf { + display: block; + font-size: 12px; + font-weight: 700; + line-height: 1; +} + +.trend-footer-pf { + font-size: 10px; + font-weight: 400; + color: #333; + margin-left: 10px; +} + +.data-unavailable-pf [class*="trend-title-"], .data-unavailable-pf [class*="trend-label-"] { + color: transparent; +} + +.data-unavailable-pf .trend-footer-pf { + color: transparent; +} + +.filter-pf a { + cursor: pointer; +} + +.filter-pf.filter-fields .form-group { + padding-left: 0; + width: 275px; +} + +.filter-select .btn-default { + font-size: 12px; + font-style: italic; + font-weight: 400; + background-color: #ffffff; + background-image: none; + color: #999999; +} + +.sort-pf .btn-link { + color: #252525; + font-size: 16px; + line-height: 1; + padding: 4px 0; + margin-left: 10px; +} + +.sort-pf .btn-link:hover { + color: #0099d3; +} + +.input-group .input-group-btn .dropdown-menu > .selected > a { + background-color: #0099d3 !important; + border-color: #0076b7 !important; + color: #fff !important; +} + +@media (min-width: 768px) { + .toolbar-pf-actions .toolbar-apf-filter { + padding-left: 0; + } +} + +.toolbar-pf-actions .toolbar-pf-view-selector a { + cursor: pointer; +} + +.toolbar-pf-actions .dropdown-menu a { + cursor: pointer; +} + +.toolbar-pf-actions .dropdown-kebab-pf { + float: right; +} + +.toolbar-pf-include-actions { + display: inline-block; + margin: 0 5px; +} + +.dropdown-kebab-pf.invisible { + opacity: 0; + pointer-events: none; +} + +/* Utilization bar chart - Animate load */ +.utilization-bar-chart-pf .progress-bar { + -webkit-transition: width .75s ease-in-out; + -moz-transition: width .75s ease-in-out; + -o-transition: width .75s ease-in-out; + transition: width .75s ease-in-out; +} + +.utilization-bar-chart-pf .progress-bar.animate { + width: 0% !important; +} + +/* Heap map */ +.heatmap-pf-container { + position: relative; +} + +.heatmap-pf-container-pf .loading { + position: absolute; + top: 100px; + right: 50%; + z-index: 10; +} + +.heatmap-pf-container .heatmap-container { + margin-left: -1px; +} + +.heatmap-pf-svg { + width: 100%; + height: 100%; +} + +.heatmap-pf-legend-container{ + list-style-type: none; + margin-top: 5px; + padding: 0; + overflow: auto; +} + +.heatmap-pf-legend-items { + float: left; +} + +.legend-pf-color-box { + width: 11px; + height: 11px; + margin-left: 5px; + margin-right: 5px; + display: inline-block; +} +.legend-pf-color-box:first-of-type { + margin-left: 0px; +} + +.legend-pf-text { + font-size: 11px; + font-weight: 400; + line-height: 11px; + padding-right: 5px; +} + +.toolbar-pf-actions.no-filter-results { + margin-bottom: 10px; +} + +/* Angular bootstrap classes differ when opneed rather than when collapsed */ +accordion > .panel-group .panel-default .panel-title > a:before { + content: "\f105"; +} +accordion > .panel-group .panel-open .panel-title > a:before { + content: "\f107"; +} + +.navbar-brand-txt { + line-height: 34px; +} + +.toast-pf-action > a { + cursor: pointer; +} +.toast-pf .dropdown-menu > li > a { + cursor: pointer; +} + +.wizard-pf-footer .tooltip-wrapper { + border: none; + box-shadow: none; + display: inline-block; + margin-left: 5px; + padding: 0; + text-align: center; +} + +.wizard-pf-footer .tooltip-wrapper .btn[disabled] { + pointer-events: none; +} + +.wizard-pf-singlestep { + margin-left: 0; +} + +.wizard-pf-position-override { + position: relative; +} + +.wizard-pf-footer-inline { + text-align: left; +} + +.wizard-pf-cancel-inline { + margin-left: 25px; +} + +.pf-expand-placeholder { + margin-right: 15px; +} diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/animations.css b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/animations.css new file mode 100644 index 00000000..678d9ff7 --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/animations.css @@ -0,0 +1,45 @@ +.slide-reveal.ng-enter { + -webkit-transition:0.5s linear all; + -moz-transition:0.5s linear all; + -o-transition:0.5s linear all; + transition:0.5s linear all; + + opacity:0.5; + position:relative; + opacity:0; + top:10px; +} +.slide-reveal.ng-enter-active { + top:0; + opacity:1; +} + +.expand.ng-enter { + -webkit-transition:0.3s cubic-bezier(0.250, 0.460, 0.450, 0.940) all; + -moz-transition:0.3s cubic-bezier(0.250, 0.460, 0.450, 0.940) all; + -o-transition:0.3s cubic-bezier(0.250, 0.460, 0.450, 0.940) all; + transition:0.3s cubic-bezier(0.250, 0.460, 0.450, 0.940) all; + + opacity:0; + max-height:0; + overflow:hidden; +} +.expand.ng-enter-active { + opacity:1; + max-height:40px; +} + +.expand.ng-leave { + -webkit-transition:0.3s cubic-bezier(0.250, 0.460, 0.450, 0.940) all; + -moz-transition:0.3s cubic-bezier(0.250, 0.460, 0.450, 0.940) all; + -o-transition:0.3s cubic-bezier(0.250, 0.460, 0.450, 0.940) all; + transition:0.3s cubic-bezier(0.250, 0.460, 0.450, 0.940) all; + + opacity:1; + max-height:40px; + overflow:hidden; +} +.expand.ng-leave-active { + opacity:0; + max-height:0; +} diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/bootstrap.min.css b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/bootstrap.min.css new file mode 100644 index 00000000..b725064a --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/bootstrap.min.css @@ -0,0 +1,6167 @@ +/*! + * Bootstrap v2.3.2 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */ + +.clearfix { + *zoom: 1; +} + +.clearfix:before, +.clearfix:after { + display: table; + line-height: 0; + content: ""; +} + +.clearfix:after { + clear: both; +} + +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +nav, +section { + display: block; +} + +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; +} + +audio:not([controls]) { + display: none; +} + +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +a:hover, +a:active { + outline: 0; +} + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +img { + width: auto\9; + height: auto; + max-width: 100%; + vertical-align: middle; + border: 0; + -ms-interpolation-mode: bicubic; +} + +#map_canvas img, +.google-maps img { + max-width: none; +} + +button, +input, +select, +textarea { + margin: 0; + font-size: 100%; + vertical-align: middle; +} + +button, +input { + *overflow: visible; + line-height: normal; +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} + +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; + -webkit-appearance: button; +} + +label, +select, +button, +input[type="button"], +input[type="reset"], +input[type="submit"], +input[type="radio"], +input[type="checkbox"] { + cursor: pointer; +} + +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-decoration, +input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; +} + +textarea { + overflow: auto; + vertical-align: top; +} + +@media print { + * { + color: #000 !important; + text-shadow: none !important; + background: transparent !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + .ir a:after, + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + @page { + margin: 0.5cm; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } +} + +body { + margin: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 20px; + color: #333333; + background-color: #ffffff; +} + +a { + color: #0088cc; + text-decoration: none; +} + +a:hover, +a:focus { + color: #005580; + text-decoration: underline; +} + +.img-rounded { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.img-polaroid { + padding: 4px; + background-color: #fff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} + +.img-circle { + -webkit-border-radius: 500px; + -moz-border-radius: 500px; + border-radius: 500px; +} + +.row { + margin-left: -20px; + *zoom: 1; +} + +.row:before, +.row:after { + display: table; + line-height: 0; + content: ""; +} + +.row:after { + clear: both; +} + +[class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; +} + +.container, +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} + +.span12 { + width: 940px; +} + +.span11 { + width: 860px; +} + +.span10 { + width: 780px; +} + +.span9 { + width: 700px; +} + +.span8 { + width: 620px; +} + +.span7 { + width: 540px; +} + +.span6 { + width: 460px; +} + +.span5 { + width: 380px; +} + +.span4 { + width: 300px; +} + +.span3 { + width: 220px; +} + +.span2 { + width: 140px; +} + +.span1 { + width: 60px; +} + +.offset12 { + margin-left: 980px; +} + +.offset11 { + margin-left: 900px; +} + +.offset10 { + margin-left: 820px; +} + +.offset9 { + margin-left: 740px; +} + +.offset8 { + margin-left: 660px; +} + +.offset7 { + margin-left: 580px; +} + +.offset6 { + margin-left: 500px; +} + +.offset5 { + margin-left: 420px; +} + +.offset4 { + margin-left: 340px; +} + +.offset3 { + margin-left: 260px; +} + +.offset2 { + margin-left: 180px; +} + +.offset1 { + margin-left: 100px; +} + +.row-fluid { + width: 100%; + *zoom: 1; +} + +.row-fluid:before, +.row-fluid:after { + display: table; + line-height: 0; + content: ""; +} + +.row-fluid:after { + clear: both; +} + +.row-fluid [class*="span"] { + display: block; + float: left; + width: 100%; + min-height: 30px; + margin-left: 2.127659574468085%; + *margin-left: 2.074468085106383%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.row-fluid [class*="span"]:first-child { + margin-left: 0; +} + +.row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.127659574468085%; +} + +.row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; +} + +.row-fluid .span11 { + width: 91.48936170212765%; + *width: 91.43617021276594%; +} + +.row-fluid .span10 { + width: 82.97872340425532%; + *width: 82.92553191489361%; +} + +.row-fluid .span9 { + width: 74.46808510638297%; + *width: 74.41489361702126%; +} + +.row-fluid .span8 { + width: 65.95744680851064%; + *width: 65.90425531914893%; +} + +.row-fluid .span7 { + width: 57.44680851063829%; + *width: 57.39361702127659%; +} + +.row-fluid .span6 { + width: 48.93617021276595%; + *width: 48.88297872340425%; +} + +.row-fluid .span5 { + width: 40.42553191489362%; + *width: 40.37234042553192%; +} + +.row-fluid .span4 { + width: 31.914893617021278%; + *width: 31.861702127659576%; +} + +.row-fluid .span3 { + width: 23.404255319148934%; + *width: 23.351063829787233%; +} + +.row-fluid .span2 { + width: 14.893617021276595%; + *width: 14.840425531914894%; +} + +.row-fluid .span1 { + width: 6.382978723404255%; + *width: 6.329787234042553%; +} + +.row-fluid .offset12 { + margin-left: 104.25531914893617%; + *margin-left: 104.14893617021275%; +} + +.row-fluid .offset12:first-child { + margin-left: 102.12765957446808%; + *margin-left: 102.02127659574467%; +} + +.row-fluid .offset11 { + margin-left: 95.74468085106382%; + *margin-left: 95.6382978723404%; +} + +.row-fluid .offset11:first-child { + margin-left: 93.61702127659574%; + *margin-left: 93.51063829787232%; +} + +.row-fluid .offset10 { + margin-left: 87.23404255319149%; + *margin-left: 87.12765957446807%; +} + +.row-fluid .offset10:first-child { + margin-left: 85.1063829787234%; + *margin-left: 84.99999999999999%; +} + +.row-fluid .offset9 { + margin-left: 78.72340425531914%; + *margin-left: 78.61702127659572%; +} + +.row-fluid .offset9:first-child { + margin-left: 76.59574468085106%; + *margin-left: 76.48936170212764%; +} + +.row-fluid .offset8 { + margin-left: 70.2127659574468%; + *margin-left: 70.10638297872339%; +} + +.row-fluid .offset8:first-child { + margin-left: 68.08510638297872%; + *margin-left: 67.9787234042553%; +} + +.row-fluid .offset7 { + margin-left: 61.70212765957446%; + *margin-left: 61.59574468085106%; +} + +.row-fluid .offset7:first-child { + margin-left: 59.574468085106375%; + *margin-left: 59.46808510638297%; +} + +.row-fluid .offset6 { + margin-left: 53.191489361702125%; + *margin-left: 53.085106382978715%; +} + +.row-fluid .offset6:first-child { + margin-left: 51.063829787234035%; + *margin-left: 50.95744680851063%; +} + +.row-fluid .offset5 { + margin-left: 44.68085106382979%; + *margin-left: 44.57446808510638%; +} + +.row-fluid .offset5:first-child { + margin-left: 42.5531914893617%; + *margin-left: 42.4468085106383%; +} + +.row-fluid .offset4 { + margin-left: 36.170212765957444%; + *margin-left: 36.06382978723405%; +} + +.row-fluid .offset4:first-child { + margin-left: 34.04255319148936%; + *margin-left: 33.93617021276596%; +} + +.row-fluid .offset3 { + margin-left: 27.659574468085104%; + *margin-left: 27.5531914893617%; +} + +.row-fluid .offset3:first-child { + margin-left: 25.53191489361702%; + *margin-left: 25.425531914893618%; +} + +.row-fluid .offset2 { + margin-left: 19.148936170212764%; + *margin-left: 19.04255319148936%; +} + +.row-fluid .offset2:first-child { + margin-left: 17.02127659574468%; + *margin-left: 16.914893617021278%; +} + +.row-fluid .offset1 { + margin-left: 10.638297872340425%; + *margin-left: 10.53191489361702%; +} + +.row-fluid .offset1:first-child { + margin-left: 8.51063829787234%; + *margin-left: 8.404255319148938%; +} + +[class*="span"].hide, +.row-fluid [class*="span"].hide { + display: none; +} + +[class*="span"].pull-right, +.row-fluid [class*="span"].pull-right { + float: right; +} + +.container { + margin-right: auto; + margin-left: auto; + *zoom: 1; +} + +.container:before, +.container:after { + display: table; + line-height: 0; + content: ""; +} + +.container:after { + clear: both; +} + +.container-fluid { + padding-right: 20px; + padding-left: 20px; + *zoom: 1; +} + +.container-fluid:before, +.container-fluid:after { + display: table; + line-height: 0; + content: ""; +} + +.container-fluid:after { + clear: both; +} + +p { + margin: 0 0 10px; +} + +.lead { + margin-bottom: 20px; + font-size: 21px; + font-weight: 200; + line-height: 30px; +} + +small { + font-size: 85%; +} + +strong { + font-weight: bold; +} + +em { + font-style: italic; +} + +cite { + font-style: normal; +} + +.muted { + color: #999999; +} + +a.muted:hover, +a.muted:focus { + color: #808080; +} + +.text-warning { + color: #c09853; +} + +a.text-warning:hover, +a.text-warning:focus { + color: #a47e3c; +} + +.text-error { + color: #b94a48; +} + +a.text-error:hover, +a.text-error:focus { + color: #953b39; +} + +.text-info { + color: #3a87ad; +} + +a.text-info:hover, +a.text-info:focus { + color: #2d6987; +} + +.text-success { + color: #468847; +} + +a.text-success:hover, +a.text-success:focus { + color: #356635; +} + +.text-left { + text-align: left; +} + +.text-right { + text-align: right; +} + +.text-center { + text-align: center; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 10px 0; + font-family: inherit; + font-weight: bold; + line-height: 20px; + color: inherit; + text-rendering: optimizelegibility; +} + +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small { + font-weight: normal; + line-height: 1; + color: #999999; +} + +h1, +h2, +h3 { + line-height: 40px; +} + +h1 { + font-size: 38.5px; +} + +h2 { + font-size: 31.5px; +} + +h3 { + font-size: 24.5px; +} + +h4 { + font-size: 17.5px; +} + +h5 { + font-size: 14px; +} + +h6 { + font-size: 11.9px; +} + +h1 small { + font-size: 24.5px; +} + +h2 small { + font-size: 17.5px; +} + +h3 small { + font-size: 14px; +} + +h4 small { + font-size: 14px; +} + +.page-header { + padding-bottom: 9px; + margin: 20px 0 30px; + border-bottom: 1px solid #eeeeee; +} + +ul, +ol { + padding: 0; + margin: 0 0 10px 25px; +} + +ul ul, +ul ol, +ol ol, +ol ul { + margin-bottom: 0; +} + +li { + line-height: 20px; +} + +ul.unstyled, +ol.unstyled { + margin-left: 0; + list-style: none; +} + +ul.inline, +ol.inline { + margin-left: 0; + list-style: none; +} + +ul.inline > li, +ol.inline > li { + display: inline-block; + *display: inline; + padding-right: 5px; + padding-left: 5px; + *zoom: 1; +} + +dl { + margin-bottom: 20px; +} + +dt, +dd { + line-height: 20px; +} + +dt { + font-weight: bold; +} + +dd { + margin-left: 10px; +} + +.dl-horizontal { + *zoom: 1; +} + +.dl-horizontal:before, +.dl-horizontal:after { + display: table; + line-height: 0; + content: ""; +} + +.dl-horizontal:after { + clear: both; +} + +.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; +} + +hr { + margin: 20px 0; + border: 0; + border-top: 1px solid #eeeeee; + border-bottom: 1px solid #ffffff; +} + +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #999999; +} + +abbr.initialism { + font-size: 90%; + text-transform: uppercase; +} + +blockquote { + padding: 0 0 0 15px; + margin: 0 0 20px; + border-left: 5px solid #eeeeee; +} + +blockquote p { + margin-bottom: 0; + font-size: 17.5px; + font-weight: 300; + line-height: 1.25; +} + +blockquote small { + display: block; + line-height: 20px; + color: #999999; +} + +blockquote small:before { + content: '\2014 \00A0'; +} + +blockquote.pull-right { + float: right; + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #eeeeee; + border-left: 0; +} + +blockquote.pull-right p, +blockquote.pull-right small { + text-align: right; +} + +blockquote.pull-right small:before { + content: ''; +} + +blockquote.pull-right small:after { + content: '\00A0 \2014'; +} + +q:before, +q:after, +blockquote:before, +blockquote:after { + content: ""; +} + +address { + display: block; + margin-bottom: 20px; + font-style: normal; + line-height: 20px; +} + +code, +pre { + padding: 0 3px 2px; + font-family: Monaco, Menlo, Consolas, "Courier New", monospace; + font-size: 12px; + color: #333333; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +code { + padding: 2px 4px; + color: #d14; + white-space: nowrap; + background-color: #f7f7f9; + border: 1px solid #e1e1e8; +} + +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 20px; + word-break: break-all; + word-wrap: break-word; + white-space: pre; + white-space: pre-wrap; + background-color: #f5f5f5; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.15); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +pre.prettyprint { + margin-bottom: 20px; +} + +pre code { + padding: 0; + color: inherit; + white-space: pre; + white-space: pre-wrap; + background-color: transparent; + border: 0; +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} + +form { + margin: 0 0 20px; +} + +fieldset { + padding: 0; + margin: 0; + border: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: 40px; + color: #333333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} + +legend small { + font-size: 15px; + color: #999999; +} + +label, +input, +button, +select, +textarea { + font-size: 14px; + font-weight: normal; + line-height: 20px; +} + +input, +button, +select, +textarea { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +label { + display: block; + margin-bottom: 5px; +} + +select, +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + display: inline-block; + height: 20px; + padding: 4px 6px; + margin-bottom: 10px; + font-size: 14px; + line-height: 20px; + color: #555555; + vertical-align: middle; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +input, +textarea, +.uneditable-input { + width: 206px; +} + +textarea { + height: auto; +} + +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + background-color: #ffffff; + border: 1px solid #cccccc; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; + -moz-transition: border linear 0.2s, box-shadow linear 0.2s; + -o-transition: border linear 0.2s, box-shadow linear 0.2s; + transition: border linear 0.2s, box-shadow linear 0.2s; +} + +textarea:focus, +input[type="text"]:focus, +input[type="password"]:focus, +input[type="datetime"]:focus, +input[type="datetime-local"]:focus, +input[type="date"]:focus, +input[type="month"]:focus, +input[type="time"]:focus, +input[type="week"]:focus, +input[type="number"]:focus, +input[type="email"]:focus, +input[type="url"]:focus, +input[type="search"]:focus, +input[type="tel"]:focus, +input[type="color"]:focus, +.uneditable-input:focus { + border-color: rgba(82, 168, 236, 0.8); + outline: 0; + outline: thin dotted \9; + /* IE6-9 */ + + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); +} + +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + *margin-top: 0; + line-height: normal; +} + +input[type="file"], +input[type="image"], +input[type="submit"], +input[type="reset"], +input[type="button"], +input[type="radio"], +input[type="checkbox"] { + width: auto; +} + +select, +input[type="file"] { + height: 30px; + /* In IE7, the height of the select element cannot be changed by height, only font-size */ + + *margin-top: 4px; + /* For IE7, add top margin to align select with labels */ + + line-height: 30px; +} + +select { + width: 220px; + background-color: #ffffff; + border: 1px solid #cccccc; +} + +select[multiple], +select[size] { + height: auto; +} + +select:focus, +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.uneditable-input, +.uneditable-textarea { + color: #999999; + cursor: not-allowed; + background-color: #fcfcfc; + border-color: #cccccc; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); +} + +.uneditable-input { + overflow: hidden; + white-space: nowrap; +} + +.uneditable-textarea { + width: auto; + height: auto; +} + +input:-moz-placeholder, +textarea:-moz-placeholder { + color: #999999; +} + +input:-ms-input-placeholder, +textarea:-ms-input-placeholder { + color: #999999; +} + +input::-webkit-input-placeholder, +textarea::-webkit-input-placeholder { + color: #999999; +} + +.radio, +.checkbox { + min-height: 20px; + padding-left: 20px; +} + +.radio input[type="radio"], +.checkbox input[type="checkbox"] { + float: left; + margin-left: -20px; +} + +.controls > .radio:first-child, +.controls > .checkbox:first-child { + padding-top: 5px; +} + +.radio.inline, +.checkbox.inline { + display: inline-block; + padding-top: 5px; + margin-bottom: 0; + vertical-align: middle; +} + +.radio.inline + .radio.inline, +.checkbox.inline + .checkbox.inline { + margin-left: 10px; +} + +.input-mini { + width: 60px; +} + +.input-small { + width: 90px; +} + +.input-medium { + width: 150px; +} + +.input-large { + width: 210px; +} + +.input-xlarge { + width: 270px; +} + +.input-xxlarge { + width: 530px; +} + +input[class*="span"], +select[class*="span"], +textarea[class*="span"], +.uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"] { + float: none; + margin-left: 0; +} + +.input-append input[class*="span"], +.input-append .uneditable-input[class*="span"], +.input-prepend input[class*="span"], +.input-prepend .uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"], +.row-fluid .input-prepend [class*="span"], +.row-fluid .input-append [class*="span"] { + display: inline-block; +} + +input, +textarea, +.uneditable-input { + margin-left: 0; +} + +.controls-row [class*="span"] + [class*="span"] { + margin-left: 20px; +} + +input.span12, +textarea.span12, +.uneditable-input.span12 { + width: 926px; +} + +input.span11, +textarea.span11, +.uneditable-input.span11 { + width: 846px; +} + +input.span10, +textarea.span10, +.uneditable-input.span10 { + width: 766px; +} + +input.span9, +textarea.span9, +.uneditable-input.span9 { + width: 686px; +} + +input.span8, +textarea.span8, +.uneditable-input.span8 { + width: 606px; +} + +input.span7, +textarea.span7, +.uneditable-input.span7 { + width: 526px; +} + +input.span6, +textarea.span6, +.uneditable-input.span6 { + width: 446px; +} + +input.span5, +textarea.span5, +.uneditable-input.span5 { + width: 366px; +} + +input.span4, +textarea.span4, +.uneditable-input.span4 { + width: 286px; +} + +input.span3, +textarea.span3, +.uneditable-input.span3 { + width: 206px; +} + +input.span2, +textarea.span2, +.uneditable-input.span2 { + width: 126px; +} + +input.span1, +textarea.span1, +.uneditable-input.span1 { + width: 46px; +} + +.controls-row { + *zoom: 1; +} + +.controls-row:before, +.controls-row:after { + display: table; + line-height: 0; + content: ""; +} + +.controls-row:after { + clear: both; +} + +.controls-row [class*="span"], +.row-fluid .controls-row [class*="span"] { + float: left; +} + +.controls-row .checkbox[class*="span"], +.controls-row .radio[class*="span"] { + padding-top: 5px; +} + +input[disabled], +select[disabled], +textarea[disabled], +input[readonly], +select[readonly], +textarea[readonly] { + cursor: not-allowed; + background-color: #eeeeee; +} + +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"][readonly], +input[type="checkbox"][readonly] { + background-color: transparent; +} + +.control-group.warning .control-label, +.control-group.warning .help-block, +.control-group.warning .help-inline { + color: #c09853; +} + +.control-group.warning .checkbox, +.control-group.warning .radio, +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + color: #c09853; +} + +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + border-color: #c09853; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.warning input:focus, +.control-group.warning select:focus, +.control-group.warning textarea:focus { + border-color: #a47e3c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; +} + +.control-group.warning .input-prepend .add-on, +.control-group.warning .input-append .add-on { + color: #c09853; + background-color: #fcf8e3; + border-color: #c09853; +} + +.control-group.error .control-label, +.control-group.error .help-block, +.control-group.error .help-inline { + color: #b94a48; +} + +.control-group.error .checkbox, +.control-group.error .radio, +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + color: #b94a48; +} + +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + border-color: #b94a48; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.error input:focus, +.control-group.error select:focus, +.control-group.error textarea:focus { + border-color: #953b39; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; +} + +.control-group.error .input-prepend .add-on, +.control-group.error .input-append .add-on { + color: #b94a48; + background-color: #f2dede; + border-color: #b94a48; +} + +.control-group.success .control-label, +.control-group.success .help-block, +.control-group.success .help-inline { + color: #468847; +} + +.control-group.success .checkbox, +.control-group.success .radio, +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + color: #468847; +} + +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + border-color: #468847; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.success input:focus, +.control-group.success select:focus, +.control-group.success textarea:focus { + border-color: #356635; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; +} + +.control-group.success .input-prepend .add-on, +.control-group.success .input-append .add-on { + color: #468847; + background-color: #dff0d8; + border-color: #468847; +} + +.control-group.info .control-label, +.control-group.info .help-block, +.control-group.info .help-inline { + color: #3a87ad; +} + +.control-group.info .checkbox, +.control-group.info .radio, +.control-group.info input, +.control-group.info select, +.control-group.info textarea { + color: #3a87ad; +} + +.control-group.info input, +.control-group.info select, +.control-group.info textarea { + border-color: #3a87ad; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.info input:focus, +.control-group.info select:focus, +.control-group.info textarea:focus { + border-color: #2d6987; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; +} + +.control-group.info .input-prepend .add-on, +.control-group.info .input-append .add-on { + color: #3a87ad; + background-color: #d9edf7; + border-color: #3a87ad; +} + +input:focus:invalid, +textarea:focus:invalid, +select:focus:invalid { + color: #b94a48; + border-color: #ee5f5b; +} + +input:focus:invalid:focus, +textarea:focus:invalid:focus, +select:focus:invalid:focus { + border-color: #e9322d; + -webkit-box-shadow: 0 0 6px #f8b9b7; + -moz-box-shadow: 0 0 6px #f8b9b7; + box-shadow: 0 0 6px #f8b9b7; +} + +.form-actions { + padding: 19px 20px 20px; + margin-top: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-top: 1px solid #e5e5e5; + *zoom: 1; +} + +.form-actions:before, +.form-actions:after { + display: table; + line-height: 0; + content: ""; +} + +.form-actions:after { + clear: both; +} + +.help-block, +.help-inline { + color: #595959; +} + +.help-block { + display: block; + margin-bottom: 10px; +} + +.help-inline { + display: inline-block; + *display: inline; + padding-left: 5px; + vertical-align: middle; + *zoom: 1; +} + +.input-append, +.input-prepend { + display: inline-block; + margin-bottom: 10px; + font-size: 0; + white-space: nowrap; + vertical-align: middle; +} + +.input-append input, +.input-prepend input, +.input-append select, +.input-prepend select, +.input-append .uneditable-input, +.input-prepend .uneditable-input, +.input-append .dropdown-menu, +.input-prepend .dropdown-menu, +.input-append .popover, +.input-prepend .popover { + font-size: 14px; +} + +.input-append input, +.input-prepend input, +.input-append select, +.input-prepend select, +.input-append .uneditable-input, +.input-prepend .uneditable-input { + position: relative; + margin-bottom: 0; + *margin-left: 0; + vertical-align: top; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-append input:focus, +.input-prepend input:focus, +.input-append select:focus, +.input-prepend select:focus, +.input-append .uneditable-input:focus, +.input-prepend .uneditable-input:focus { + z-index: 2; +} + +.input-append .add-on, +.input-prepend .add-on { + display: inline-block; + width: auto; + height: 20px; + min-width: 16px; + padding: 4px 5px; + font-size: 14px; + font-weight: normal; + line-height: 20px; + text-align: center; + text-shadow: 0 1px 0 #ffffff; + background-color: #eeeeee; + border: 1px solid #ccc; +} + +.input-append .add-on, +.input-prepend .add-on, +.input-append .btn, +.input-prepend .btn, +.input-append .btn-group > .dropdown-toggle, +.input-prepend .btn-group > .dropdown-toggle { + vertical-align: top; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-append .active, +.input-prepend .active { + background-color: #a9dba9; + border-color: #46a546; +} + +.input-prepend .add-on, +.input-prepend .btn { + margin-right: -1px; +} + +.input-prepend .add-on:first-child, +.input-prepend .btn:first-child { + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-append input, +.input-append select, +.input-append .uneditable-input { + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-append input + .btn-group .btn:last-child, +.input-append select + .btn-group .btn:last-child, +.input-append .uneditable-input + .btn-group .btn:last-child { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-append .add-on, +.input-append .btn, +.input-append .btn-group { + margin-left: -1px; +} + +.input-append .add-on:last-child, +.input-append .btn:last-child, +.input-append .btn-group:last-child > .dropdown-toggle { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append input, +.input-prepend.input-append select, +.input-prepend.input-append .uneditable-input { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-prepend.input-append input + .btn-group .btn, +.input-prepend.input-append select + .btn-group .btn, +.input-prepend.input-append .uneditable-input + .btn-group .btn { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append .add-on:first-child, +.input-prepend.input-append .btn:first-child { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-prepend.input-append .add-on:last-child, +.input-prepend.input-append .btn:last-child { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append .btn-group:first-child { + margin-left: 0; +} + +input.search-query { + padding-right: 14px; + padding-right: 4px \9; + padding-left: 14px; + padding-left: 4px \9; + /* IE7-8 doesn't have border-radius, so don't indent the padding */ + + margin-bottom: 0; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +/* Allow for input prepend/append in search forms */ + +.form-search .input-append .search-query, +.form-search .input-prepend .search-query { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.form-search .input-append .search-query { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} + +.form-search .input-append .btn { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .search-query { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .btn { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} + +.form-search input, +.form-inline input, +.form-horizontal input, +.form-search textarea, +.form-inline textarea, +.form-horizontal textarea, +.form-search select, +.form-inline select, +.form-horizontal select, +.form-search .help-inline, +.form-inline .help-inline, +.form-horizontal .help-inline, +.form-search .uneditable-input, +.form-inline .uneditable-input, +.form-horizontal .uneditable-input, +.form-search .input-prepend, +.form-inline .input-prepend, +.form-horizontal .input-prepend, +.form-search .input-append, +.form-inline .input-append, +.form-horizontal .input-append { + display: inline-block; + *display: inline; + margin-bottom: 0; + vertical-align: middle; + *zoom: 1; +} + +.form-search .hide, +.form-inline .hide, +.form-horizontal .hide { + display: none; +} + +.form-search label, +.form-inline label, +.form-search .btn-group, +.form-inline .btn-group { + display: inline-block; +} + +.form-search .input-append, +.form-inline .input-append, +.form-search .input-prepend, +.form-inline .input-prepend { + margin-bottom: 0; +} + +.form-search .radio, +.form-search .checkbox, +.form-inline .radio, +.form-inline .checkbox { + padding-left: 0; + margin-bottom: 0; + vertical-align: middle; +} + +.form-search .radio input[type="radio"], +.form-search .checkbox input[type="checkbox"], +.form-inline .radio input[type="radio"], +.form-inline .checkbox input[type="checkbox"] { + float: left; + margin-right: 3px; + margin-left: 0; +} + +.control-group { + margin-bottom: 10px; +} + +legend + .control-group { + margin-top: 20px; + -webkit-margin-top-collapse: separate; +} + +.form-horizontal .control-group { + margin-bottom: 20px; + *zoom: 1; +} + +.form-horizontal .control-group:before, +.form-horizontal .control-group:after { + display: table; + line-height: 0; + content: ""; +} + +.form-horizontal .control-group:after { + clear: both; +} + +.form-horizontal .control-label { + float: left; + width: 160px; + padding-top: 5px; + text-align: right; +} + +.form-horizontal .controls { + *display: inline-block; + *padding-left: 20px; + margin-left: 180px; + *margin-left: 0; +} + +.form-horizontal .controls:first-child { + *padding-left: 180px; +} + +.form-horizontal .help-block { + margin-bottom: 0; +} + +.form-horizontal input + .help-block, +.form-horizontal select + .help-block, +.form-horizontal textarea + .help-block, +.form-horizontal .uneditable-input + .help-block, +.form-horizontal .input-prepend + .help-block, +.form-horizontal .input-append + .help-block { + margin-top: 10px; +} + +.form-horizontal .form-actions { + padding-left: 180px; +} + +table { + max-width: 100%; + background-color: transparent; + border-collapse: collapse; + border-spacing: 0; +} + +.table { + width: 100%; + margin-bottom: 20px; +} + +.table th, +.table td { + padding: 8px; + line-height: 20px; + text-align: left; + vertical-align: top; + border-top: 1px solid #dddddd; +} + +.table th { + font-weight: bold; +} + +.table thead th { + vertical-align: bottom; +} + +.table caption + thead tr:first-child th, +.table caption + thead tr:first-child td, +.table colgroup + thead tr:first-child th, +.table colgroup + thead tr:first-child td, +.table thead:first-child tr:first-child th, +.table thead:first-child tr:first-child td { + border-top: 0; +} + +.table tbody + tbody { + border-top: 2px solid #dddddd; +} + +.table .table { + background-color: #ffffff; +} + +.table-condensed th, +.table-condensed td { + padding: 4px 5px; +} + +.table-bordered { + border: 1px solid #dddddd; + border-collapse: separate; + *border-collapse: collapse; + border-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.table-bordered th, +.table-bordered td { + border-left: 1px solid #dddddd; +} + +.table-bordered caption + thead tr:first-child th, +.table-bordered caption + tbody tr:first-child th, +.table-bordered caption + tbody tr:first-child td, +.table-bordered colgroup + thead tr:first-child th, +.table-bordered colgroup + tbody tr:first-child th, +.table-bordered colgroup + tbody tr:first-child td, +.table-bordered thead:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child td { + border-top: 0; +} + +.table-bordered thead:first-child tr:first-child > th:first-child, +.table-bordered tbody:first-child tr:first-child > td:first-child, +.table-bordered tbody:first-child tr:first-child > th:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered thead:first-child tr:first-child > th:last-child, +.table-bordered tbody:first-child tr:first-child > td:last-child, +.table-bordered tbody:first-child tr:first-child > th:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; +} + +.table-bordered thead:last-child tr:last-child > th:first-child, +.table-bordered tbody:last-child tr:last-child > td:first-child, +.table-bordered tbody:last-child tr:last-child > th:first-child, +.table-bordered tfoot:last-child tr:last-child > td:first-child, +.table-bordered tfoot:last-child tr:last-child > th:first-child { + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; +} + +.table-bordered thead:last-child tr:last-child > th:last-child, +.table-bordered tbody:last-child tr:last-child > td:last-child, +.table-bordered tbody:last-child tr:last-child > th:last-child, +.table-bordered tfoot:last-child tr:last-child > td:last-child, +.table-bordered tfoot:last-child tr:last-child > th:last-child { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; +} + +.table-bordered tfoot + tbody:last-child tr:last-child td:first-child { + -webkit-border-bottom-left-radius: 0; + border-bottom-left-radius: 0; + -moz-border-radius-bottomleft: 0; +} + +.table-bordered tfoot + tbody:last-child tr:last-child td:last-child { + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; + -moz-border-radius-bottomright: 0; +} + +.table-bordered caption + thead tr:first-child th:first-child, +.table-bordered caption + tbody tr:first-child td:first-child, +.table-bordered colgroup + thead tr:first-child th:first-child, +.table-bordered colgroup + tbody tr:first-child td:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered caption + thead tr:first-child th:last-child, +.table-bordered caption + tbody tr:first-child td:last-child, +.table-bordered colgroup + thead tr:first-child th:last-child, +.table-bordered colgroup + tbody tr:first-child td:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; +} + +.table-striped tbody > tr:nth-child(odd) > td, +.table-striped tbody > tr:nth-child(odd) > th { + background-color: #f9f9f9; +} + +.table-hover tbody tr:hover > td, +.table-hover tbody tr:hover > th { + background-color: #f5f5f5; +} + +table td[class*="span"], +table th[class*="span"], +.row-fluid table td[class*="span"], +.row-fluid table th[class*="span"] { + display: table-cell; + float: none; + margin-left: 0; +} + +.table td.span1, +.table th.span1 { + float: none; + width: 44px; + margin-left: 0; +} + +.table td.span2, +.table th.span2 { + float: none; + width: 124px; + margin-left: 0; +} + +.table td.span3, +.table th.span3 { + float: none; + width: 204px; + margin-left: 0; +} + +.table td.span4, +.table th.span4 { + float: none; + width: 284px; + margin-left: 0; +} + +.table td.span5, +.table th.span5 { + float: none; + width: 364px; + margin-left: 0; +} + +.table td.span6, +.table th.span6 { + float: none; + width: 444px; + margin-left: 0; +} + +.table td.span7, +.table th.span7 { + float: none; + width: 524px; + margin-left: 0; +} + +.table td.span8, +.table th.span8 { + float: none; + width: 604px; + margin-left: 0; +} + +.table td.span9, +.table th.span9 { + float: none; + width: 684px; + margin-left: 0; +} + +.table td.span10, +.table th.span10 { + float: none; + width: 764px; + margin-left: 0; +} + +.table td.span11, +.table th.span11 { + float: none; + width: 844px; + margin-left: 0; +} + +.table td.span12, +.table th.span12 { + float: none; + width: 924px; + margin-left: 0; +} + +.table tbody tr.success > td { + background-color: #dff0d8; +} + +.table tbody tr.error > td { + background-color: #f2dede; +} + +.table tbody tr.warning > td { + background-color: #fcf8e3; +} + +.table tbody tr.info > td { + background-color: #d9edf7; +} + +.table-hover tbody tr.success:hover > td { + background-color: #d0e9c6; +} + +.table-hover tbody tr.error:hover > td { + background-color: #ebcccc; +} + +.table-hover tbody tr.warning:hover > td { + background-color: #faf2cc; +} + +.table-hover tbody tr.info:hover > td { + background-color: #c4e3f3; +} + +[class^="icon-"], +[class*=" icon-"] { + display: inline-block; + width: 14px; + height: 14px; + margin-top: 1px; + *margin-right: .3em; + line-height: 14px; + vertical-align: text-top; + background-image: url("../img/glyphicons-halflings.png"); + background-position: 14px 14px; + background-repeat: no-repeat; +} + +/* White icons with optional class, or on hover/focus/active states of certain elements */ + +.icon-white, +.nav-pills > .active > a > [class^="icon-"], +.nav-pills > .active > a > [class*=" icon-"], +.nav-list > .active > a > [class^="icon-"], +.nav-list > .active > a > [class*=" icon-"], +.navbar-inverse .nav > .active > a > [class^="icon-"], +.navbar-inverse .nav > .active > a > [class*=" icon-"], +.dropdown-menu > li > a:hover > [class^="icon-"], +.dropdown-menu > li > a:focus > [class^="icon-"], +.dropdown-menu > li > a:hover > [class*=" icon-"], +.dropdown-menu > li > a:focus > [class*=" icon-"], +.dropdown-menu > .active > a > [class^="icon-"], +.dropdown-menu > .active > a > [class*=" icon-"], +.dropdown-submenu:hover > a > [class^="icon-"], +.dropdown-submenu:focus > a > [class^="icon-"], +.dropdown-submenu:hover > a > [class*=" icon-"], +.dropdown-submenu:focus > a > [class*=" icon-"] { + background-image: url("../img/glyphicons-halflings-white.png"); +} + +.icon-glass { + background-position: 0 0; +} + +.icon-music { + background-position: -24px 0; +} + +.icon-search { + background-position: -48px 0; +} + +.icon-envelope { + background-position: -72px 0; +} + +.icon-heart { + background-position: -96px 0; +} + +.icon-star { + background-position: -120px 0; +} + +.icon-star-empty { + background-position: -144px 0; +} + +.icon-user { + background-position: -168px 0; +} + +.icon-film { + background-position: -192px 0; +} + +.icon-th-large { + background-position: -216px 0; +} + +.icon-th { + background-position: -240px 0; +} + +.icon-th-list { + background-position: -264px 0; +} + +.icon-ok { + background-position: -288px 0; +} + +.icon-remove { + background-position: -312px 0; +} + +.icon-zoom-in { + background-position: -336px 0; +} + +.icon-zoom-out { + background-position: -360px 0; +} + +.icon-off { + background-position: -384px 0; +} + +.icon-signal { + background-position: -408px 0; +} + +.icon-cog { + background-position: -432px 0; +} + +.icon-trash { + background-position: -456px 0; +} + +.icon-home { + background-position: 0 -24px; +} + +.icon-file { + background-position: -24px -24px; +} + +.icon-time { + background-position: -48px -24px; +} + +.icon-road { + background-position: -72px -24px; +} + +.icon-download-alt { + background-position: -96px -24px; +} + +.icon-download { + background-position: -120px -24px; +} + +.icon-upload { + background-position: -144px -24px; +} + +.icon-inbox { + background-position: -168px -24px; +} + +.icon-play-circle { + background-position: -192px -24px; +} + +.icon-repeat { + background-position: -216px -24px; +} + +.icon-refresh { + background-position: -240px -24px; +} + +.icon-list-alt { + background-position: -264px -24px; +} + +.icon-lock { + background-position: -287px -24px; +} + +.icon-flag { + background-position: -312px -24px; +} + +.icon-headphones { + background-position: -336px -24px; +} + +.icon-volume-off { + background-position: -360px -24px; +} + +.icon-volume-down { + background-position: -384px -24px; +} + +.icon-volume-up { + background-position: -408px -24px; +} + +.icon-qrcode { + background-position: -432px -24px; +} + +.icon-barcode { + background-position: -456px -24px; +} + +.icon-tag { + background-position: 0 -48px; +} + +.icon-tags { + background-position: -25px -48px; +} + +.icon-book { + background-position: -48px -48px; +} + +.icon-bookmark { + background-position: -72px -48px; +} + +.icon-print { + background-position: -96px -48px; +} + +.icon-camera { + background-position: -120px -48px; +} + +.icon-font { + background-position: -144px -48px; +} + +.icon-bold { + background-position: -167px -48px; +} + +.icon-italic { + background-position: -192px -48px; +} + +.icon-text-height { + background-position: -216px -48px; +} + +.icon-text-width { + background-position: -240px -48px; +} + +.icon-align-left { + background-position: -264px -48px; +} + +.icon-align-center { + background-position: -288px -48px; +} + +.icon-align-right { + background-position: -312px -48px; +} + +.icon-align-justify { + background-position: -336px -48px; +} + +.icon-list { + background-position: -360px -48px; +} + +.icon-indent-left { + background-position: -384px -48px; +} + +.icon-indent-right { + background-position: -408px -48px; +} + +.icon-facetime-video { + background-position: -432px -48px; +} + +.icon-picture { + background-position: -456px -48px; +} + +.icon-pencil { + background-position: 0 -72px; +} + +.icon-map-marker { + background-position: -24px -72px; +} + +.icon-adjust { + background-position: -48px -72px; +} + +.icon-tint { + background-position: -72px -72px; +} + +.icon-edit { + background-position: -96px -72px; +} + +.icon-share { + background-position: -120px -72px; +} + +.icon-check { + background-position: -144px -72px; +} + +.icon-move { + background-position: -168px -72px; +} + +.icon-step-backward { + background-position: -192px -72px; +} + +.icon-fast-backward { + background-position: -216px -72px; +} + +.icon-backward { + background-position: -240px -72px; +} + +.icon-play { + background-position: -264px -72px; +} + +.icon-pause { + background-position: -288px -72px; +} + +.icon-stop { + background-position: -312px -72px; +} + +.icon-forward { + background-position: -336px -72px; +} + +.icon-fast-forward { + background-position: -360px -72px; +} + +.icon-step-forward { + background-position: -384px -72px; +} + +.icon-eject { + background-position: -408px -72px; +} + +.icon-chevron-left { + background-position: -432px -72px; +} + +.icon-chevron-right { + background-position: -456px -72px; +} + +.icon-plus-sign { + background-position: 0 -96px; +} + +.icon-minus-sign { + background-position: -24px -96px; +} + +.icon-remove-sign { + background-position: -48px -96px; +} + +.icon-ok-sign { + background-position: -72px -96px; +} + +.icon-question-sign { + background-position: -96px -96px; +} + +.icon-info-sign { + background-position: -120px -96px; +} + +.icon-screenshot { + background-position: -144px -96px; +} + +.icon-remove-circle { + background-position: -168px -96px; +} + +.icon-ok-circle { + background-position: -192px -96px; +} + +.icon-ban-circle { + background-position: -216px -96px; +} + +.icon-arrow-left { + background-position: -240px -96px; +} + +.icon-arrow-right { + background-position: -264px -96px; +} + +.icon-arrow-up { + background-position: -289px -96px; +} + +.icon-arrow-down { + background-position: -312px -96px; +} + +.icon-share-alt { + background-position: -336px -96px; +} + +.icon-resize-full { + background-position: -360px -96px; +} + +.icon-resize-small { + background-position: -384px -96px; +} + +.icon-plus { + background-position: -408px -96px; +} + +.icon-minus { + background-position: -433px -96px; +} + +.icon-asterisk { + background-position: -456px -96px; +} + +.icon-exclamation-sign { + background-position: 0 -120px; +} + +.icon-gift { + background-position: -24px -120px; +} + +.icon-leaf { + background-position: -48px -120px; +} + +.icon-fire { + background-position: -72px -120px; +} + +.icon-eye-open { + background-position: -96px -120px; +} + +.icon-eye-close { + background-position: -120px -120px; +} + +.icon-warning-sign { + background-position: -144px -120px; +} + +.icon-plane { + background-position: -168px -120px; +} + +.icon-calendar { + background-position: -192px -120px; +} + +.icon-random { + width: 16px; + background-position: -216px -120px; +} + +.icon-comment { + background-position: -240px -120px; +} + +.icon-magnet { + background-position: -264px -120px; +} + +.icon-chevron-up { + background-position: -288px -120px; +} + +.icon-chevron-down { + background-position: -313px -119px; +} + +.icon-retweet { + background-position: -336px -120px; +} + +.icon-shopping-cart { + background-position: -360px -120px; +} + +.icon-folder-close { + width: 16px; + background-position: -384px -120px; +} + +.icon-folder-open { + width: 16px; + background-position: -408px -120px; +} + +.icon-resize-vertical { + background-position: -432px -119px; +} + +.icon-resize-horizontal { + background-position: -456px -118px; +} + +.icon-hdd { + background-position: 0 -144px; +} + +.icon-bullhorn { + background-position: -24px -144px; +} + +.icon-bell { + background-position: -48px -144px; +} + +.icon-certificate { + background-position: -72px -144px; +} + +.icon-thumbs-up { + background-position: -96px -144px; +} + +.icon-thumbs-down { + background-position: -120px -144px; +} + +.icon-hand-right { + background-position: -144px -144px; +} + +.icon-hand-left { + background-position: -168px -144px; +} + +.icon-hand-up { + background-position: -192px -144px; +} + +.icon-hand-down { + background-position: -216px -144px; +} + +.icon-circle-arrow-right { + background-position: -240px -144px; +} + +.icon-circle-arrow-left { + background-position: -264px -144px; +} + +.icon-circle-arrow-up { + background-position: -288px -144px; +} + +.icon-circle-arrow-down { + background-position: -312px -144px; +} + +.icon-globe { + background-position: -336px -144px; +} + +.icon-wrench { + background-position: -360px -144px; +} + +.icon-tasks { + background-position: -384px -144px; +} + +.icon-filter { + background-position: -408px -144px; +} + +.icon-briefcase { + background-position: -432px -144px; +} + +.icon-fullscreen { + background-position: -456px -144px; +} + +.dropup, +.dropdown { + position: relative; +} + +.dropdown-toggle { + *margin-bottom: -3px; +} + +.dropdown-toggle:active, +.open .dropdown-toggle { + outline: 0; +} + +.caret { + display: inline-block; + width: 0; + height: 0; + vertical-align: top; + border-top: 4px solid #000000; + border-right: 4px solid transparent; + border-left: 4px solid transparent; + content: ""; +} + +.dropdown .caret { + margin-top: 8px; + margin-left: 2px; +} + +.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; + list-style: none; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + *border-right-width: 2px; + *border-bottom-width: 2px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.dropdown-menu .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 20px; + color: #333333; + white-space: nowrap; +} + +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus, +.dropdown-submenu:hover > a, +.dropdown-submenu:focus > a { + color: #ffffff; + text-decoration: none; + background-color: #0081c2; + background-image: -moz-linear-gradient(top, #0088cc, #0077b3); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); + background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); + background-image: -o-linear-gradient(top, #0088cc, #0077b3); + background-image: linear-gradient(to bottom, #0088cc, #0077b3); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); +} + +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #ffffff; + text-decoration: none; + background-color: #0081c2; + background-image: -moz-linear-gradient(top, #0088cc, #0077b3); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); + background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); + background-image: -o-linear-gradient(top, #0088cc, #0077b3); + background-image: linear-gradient(to bottom, #0088cc, #0077b3); + background-repeat: repeat-x; + outline: 0; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); +} + +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #999999; +} + +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + cursor: default; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.open { + *z-index: 1000; +} + +.open > .dropdown-menu { + display: block; +} + +.dropdown-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 990; +} + +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} + +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + border-top: 0; + border-bottom: 4px solid #000000; + content: ""; +} + +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; +} + +.dropdown-submenu { + position: relative; +} + +.dropdown-submenu > .dropdown-menu { + top: 0; + left: 100%; + margin-top: -6px; + margin-left: -1px; + -webkit-border-radius: 0 6px 6px 6px; + -moz-border-radius: 0 6px 6px 6px; + border-radius: 0 6px 6px 6px; +} + +.dropdown-submenu:hover > .dropdown-menu { + display: block; +} + +.dropup .dropdown-submenu > .dropdown-menu { + top: auto; + bottom: 0; + margin-top: 0; + margin-bottom: -2px; + -webkit-border-radius: 5px 5px 5px 0; + -moz-border-radius: 5px 5px 5px 0; + border-radius: 5px 5px 5px 0; +} + +.dropdown-submenu > a:after { + display: block; + float: right; + width: 0; + height: 0; + margin-top: 5px; + margin-right: -10px; + border-color: transparent; + border-left-color: #cccccc; + border-style: solid; + border-width: 5px 0 5px 5px; + content: " "; +} + +.dropdown-submenu:hover > a:after { + border-left-color: #ffffff; +} + +.dropdown-submenu.pull-left { + float: none; +} + +.dropdown-submenu.pull-left > .dropdown-menu { + left: -100%; + margin-left: 10px; + -webkit-border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; +} + +.dropdown .dropdown-menu .nav-header { + padding-right: 20px; + padding-left: 20px; +} + +.typeahead { + z-index: 1051; + margin-top: 2px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} + +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} + +.well-large { + padding: 24px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.well-small { + padding: 9px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + -moz-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} + +.fade.in { + opacity: 1; +} + +.collapse { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height 0.35s ease; + -moz-transition: height 0.35s ease; + -o-transition: height 0.35s ease; + transition: height 0.35s ease; +} + +.collapse.in { + height: auto; +} + +.close { + float: right; + font-size: 20px; + font-weight: bold; + line-height: 20px; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} + +.close:hover, +.close:focus { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.4; + filter: alpha(opacity=40); +} + +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} + +.btn { + display: inline-block; + *display: inline; + padding: 4px 12px; + margin-bottom: 0; + *margin-left: .3em; + font-size: 14px; + line-height: 20px; + color: #333333; + text-align: center; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + vertical-align: middle; + cursor: pointer; + background-color: #f5f5f5; + *background-color: #e6e6e6; + background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); + background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); + background-repeat: repeat-x; + border: 1px solid #cccccc; + *border: 0; + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + border-bottom-color: #b3b3b3; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + *zoom: 1; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn:hover, +.btn:focus, +.btn:active, +.btn.active, +.btn.disabled, +.btn[disabled] { + color: #333333; + background-color: #e6e6e6; + *background-color: #d9d9d9; +} + +.btn:active, +.btn.active { + background-color: #cccccc \9; +} + +.btn:first-child { + *margin-left: 0; +} + +.btn:hover, +.btn:focus { + color: #333333; + text-decoration: none; + background-position: 0 -15px; + -webkit-transition: background-position 0.1s linear; + -moz-transition: background-position 0.1s linear; + -o-transition: background-position 0.1s linear; + transition: background-position 0.1s linear; +} + +.btn:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.btn.active, +.btn:active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn.disabled, +.btn[disabled] { + cursor: default; + background-image: none; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-large { + padding: 11px 19px; + font-size: 17.5px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.btn-large [class^="icon-"], +.btn-large [class*=" icon-"] { + margin-top: 4px; +} + +.btn-small { + padding: 2px 10px; + font-size: 11.9px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.btn-small [class^="icon-"], +.btn-small [class*=" icon-"] { + margin-top: 0; +} + +.btn-mini [class^="icon-"], +.btn-mini [class*=" icon-"] { + margin-top: -1px; +} + +.btn-mini { + padding: 0 6px; + font-size: 10.5px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.btn-block { + display: block; + width: 100%; + padding-right: 0; + padding-left: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.btn-block + .btn-block { + margin-top: 5px; +} + +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} + +.btn-primary.active, +.btn-warning.active, +.btn-danger.active, +.btn-success.active, +.btn-info.active, +.btn-inverse.active { + color: rgba(255, 255, 255, 0.75); +} + +.btn-primary { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #006dcc; + *background-color: #0044cc; + background-image: -moz-linear-gradient(top, #0088cc, #0044cc); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); + background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); + background-image: -o-linear-gradient(top, #0088cc, #0044cc); + background-image: linear-gradient(to bottom, #0088cc, #0044cc); + background-repeat: repeat-x; + border-color: #0044cc #0044cc #002a80; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.btn-primary.disabled, +.btn-primary[disabled] { + color: #ffffff; + background-color: #0044cc; + *background-color: #003bb3; +} + +.btn-primary:active, +.btn-primary.active { + background-color: #003399 \9; +} + +.btn-warning { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #faa732; + *background-color: #f89406; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + border-color: #f89406 #f89406 #ad6704; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.btn-warning.disabled, +.btn-warning[disabled] { + color: #ffffff; + background-color: #f89406; + *background-color: #df8505; +} + +.btn-warning:active, +.btn-warning.active { + background-color: #c67605 \9; +} + +.btn-danger { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #da4f49; + *background-color: #bd362f; + background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); + background-image: linear-gradient(to bottom, #ee5f5b, #bd362f); + background-repeat: repeat-x; + border-color: #bd362f #bd362f #802420; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.btn-danger.disabled, +.btn-danger[disabled] { + color: #ffffff; + background-color: #bd362f; + *background-color: #a9302a; +} + +.btn-danger:active, +.btn-danger.active { + background-color: #942a25 \9; +} + +.btn-success { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #5bb75b; + *background-color: #51a351; + background-image: -moz-linear-gradient(top, #62c462, #51a351); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351)); + background-image: -webkit-linear-gradient(top, #62c462, #51a351); + background-image: -o-linear-gradient(top, #62c462, #51a351); + background-image: linear-gradient(to bottom, #62c462, #51a351); + background-repeat: repeat-x; + border-color: #51a351 #51a351 #387038; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.btn-success.disabled, +.btn-success[disabled] { + color: #ffffff; + background-color: #51a351; + *background-color: #499249; +} + +.btn-success:active, +.btn-success.active { + background-color: #408140 \9; +} + +.btn-info { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #49afcd; + *background-color: #2f96b4; + background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4)); + background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); + background-image: linear-gradient(to bottom, #5bc0de, #2f96b4); + background-repeat: repeat-x; + border-color: #2f96b4 #2f96b4 #1f6377; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.btn-info.disabled, +.btn-info[disabled] { + color: #ffffff; + background-color: #2f96b4; + *background-color: #2a85a0; +} + +.btn-info:active, +.btn-info.active { + background-color: #24748c \9; +} + +.btn-inverse { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #363636; + *background-color: #222222; + background-image: -moz-linear-gradient(top, #444444, #222222); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222)); + background-image: -webkit-linear-gradient(top, #444444, #222222); + background-image: -o-linear-gradient(top, #444444, #222222); + background-image: linear-gradient(to bottom, #444444, #222222); + background-repeat: repeat-x; + border-color: #222222 #222222 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-inverse:hover, +.btn-inverse:focus, +.btn-inverse:active, +.btn-inverse.active, +.btn-inverse.disabled, +.btn-inverse[disabled] { + color: #ffffff; + background-color: #222222; + *background-color: #151515; +} + +.btn-inverse:active, +.btn-inverse.active { + background-color: #080808 \9; +} + +button.btn, +input[type="submit"].btn { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn::-moz-focus-inner, +input[type="submit"].btn::-moz-focus-inner { + padding: 0; + border: 0; +} + +button.btn.btn-large, +input[type="submit"].btn.btn-large { + *padding-top: 7px; + *padding-bottom: 7px; +} + +button.btn.btn-small, +input[type="submit"].btn.btn-small { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn.btn-mini, +input[type="submit"].btn.btn-mini { + *padding-top: 1px; + *padding-bottom: 1px; +} + +.btn-link, +.btn-link:active, +.btn-link[disabled] { + background-color: transparent; + background-image: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-link { + color: #0088cc; + cursor: pointer; + border-color: transparent; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-link:hover, +.btn-link:focus { + color: #005580; + text-decoration: underline; + background-color: transparent; +} + +.btn-link[disabled]:hover, +.btn-link[disabled]:focus { + color: #333333; + text-decoration: none; +} + +.btn-group { + position: relative; + display: inline-block; + *display: inline; + *margin-left: .3em; + font-size: 0; + white-space: nowrap; + vertical-align: middle; + *zoom: 1; +} + +.btn-group:first-child { + *margin-left: 0; +} + +.btn-group + .btn-group { + margin-left: 5px; +} + +.btn-toolbar { + margin-top: 10px; + margin-bottom: 10px; + font-size: 0; +} + +.btn-toolbar > .btn + .btn, +.btn-toolbar > .btn-group + .btn, +.btn-toolbar > .btn + .btn-group { + margin-left: 5px; +} + +.btn-group > .btn { + position: relative; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group > .btn + .btn { + margin-left: -1px; +} + +.btn-group > .btn, +.btn-group > .dropdown-menu, +.btn-group > .popover { + font-size: 14px; +} + +.btn-group > .btn-mini { + font-size: 10.5px; +} + +.btn-group > .btn-small { + font-size: 11.9px; +} + +.btn-group > .btn-large { + font-size: 17.5px; +} + +.btn-group > .btn:first-child { + margin-left: 0; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-topleft: 4px; +} + +.btn-group > .btn:last-child, +.btn-group > .dropdown-toggle { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; +} + +.btn-group > .btn.large:first-child { + margin-left: 0; + -webkit-border-bottom-left-radius: 6px; + border-bottom-left-radius: 6px; + -webkit-border-top-left-radius: 6px; + border-top-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + -moz-border-radius-topleft: 6px; +} + +.btn-group > .btn.large:last-child, +.btn-group > .large.dropdown-toggle { + -webkit-border-top-right-radius: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + border-bottom-right-radius: 6px; + -moz-border-radius-topright: 6px; + -moz-border-radius-bottomright: 6px; +} + +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group > .btn:active, +.btn-group > .btn.active { + z-index: 2; +} + +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + +.btn-group > .btn + .dropdown-toggle { + *padding-top: 5px; + padding-right: 8px; + *padding-bottom: 5px; + padding-left: 8px; + -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group > .btn-mini + .dropdown-toggle { + *padding-top: 2px; + padding-right: 5px; + *padding-bottom: 2px; + padding-left: 5px; +} + +.btn-group > .btn-small + .dropdown-toggle { + *padding-top: 5px; + *padding-bottom: 4px; +} + +.btn-group > .btn-large + .dropdown-toggle { + *padding-top: 7px; + padding-right: 12px; + *padding-bottom: 7px; + padding-left: 12px; +} + +.btn-group.open .dropdown-toggle { + background-image: none; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group.open .btn.dropdown-toggle { + background-color: #e6e6e6; +} + +.btn-group.open .btn-primary.dropdown-toggle { + background-color: #0044cc; +} + +.btn-group.open .btn-warning.dropdown-toggle { + background-color: #f89406; +} + +.btn-group.open .btn-danger.dropdown-toggle { + background-color: #bd362f; +} + +.btn-group.open .btn-success.dropdown-toggle { + background-color: #51a351; +} + +.btn-group.open .btn-info.dropdown-toggle { + background-color: #2f96b4; +} + +.btn-group.open .btn-inverse.dropdown-toggle { + background-color: #222222; +} + +.btn .caret { + margin-top: 8px; + margin-left: 0; +} + +.btn-large .caret { + margin-top: 6px; +} + +.btn-large .caret { + border-top-width: 5px; + border-right-width: 5px; + border-left-width: 5px; +} + +.btn-mini .caret, +.btn-small .caret { + margin-top: 8px; +} + +.dropup .btn-large .caret { + border-bottom-width: 5px; +} + +.btn-primary .caret, +.btn-warning .caret, +.btn-danger .caret, +.btn-info .caret, +.btn-success .caret, +.btn-inverse .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.btn-group-vertical { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; +} + +.btn-group-vertical > .btn { + display: block; + float: none; + max-width: 100%; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group-vertical > .btn + .btn { + margin-top: -1px; + margin-left: 0; +} + +.btn-group-vertical > .btn:first-child { + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.btn-group-vertical > .btn:last-child { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.btn-group-vertical > .btn-large:first-child { + -webkit-border-radius: 6px 6px 0 0; + -moz-border-radius: 6px 6px 0 0; + border-radius: 6px 6px 0 0; +} + +.btn-group-vertical > .btn-large:last-child { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} + +.alert { + padding: 8px 35px 8px 14px; + margin-bottom: 20px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + background-color: #fcf8e3; + border: 1px solid #fbeed5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.alert, +.alert h4 { + color: #c09853; +} + +.alert h4 { + margin: 0; +} + +.alert .close { + position: relative; + top: -2px; + right: -21px; + line-height: 20px; +} + +.alert-success { + color: #468847; + background-color: #dff0d8; + border-color: #d6e9c6; +} + +.alert-success h4 { + color: #468847; +} + +.alert-danger, +.alert-error { + color: #b94a48; + background-color: #f2dede; + border-color: #eed3d7; +} + +.alert-danger h4, +.alert-error h4 { + color: #b94a48; +} + +.alert-info { + color: #3a87ad; + background-color: #d9edf7; + border-color: #bce8f1; +} + +.alert-info h4 { + color: #3a87ad; +} + +.alert-block { + padding-top: 14px; + padding-bottom: 14px; +} + +.alert-block > p, +.alert-block > ul { + margin-bottom: 0; +} + +.alert-block p + p { + margin-top: 5px; +} + +.nav { + margin-bottom: 20px; + margin-left: 0; + list-style: none; +} + +.nav > li > a { + display: block; +} + +.nav > li > a:hover, +.nav > li > a:focus { + text-decoration: none; + background-color: #eeeeee; +} + +.nav > li > a > img { + max-width: none; +} + +.nav > .pull-right { + float: right; +} + +.nav-header { + display: block; + padding: 3px 15px; + font-size: 11px; + font-weight: bold; + line-height: 20px; + color: #999999; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + text-transform: uppercase; +} + +.nav li + .nav-header { + margin-top: 9px; +} + +.nav-list { + padding-right: 15px; + padding-left: 15px; + margin-bottom: 0; +} + +.nav-list > li > a, +.nav-list .nav-header { + margin-right: -15px; + margin-left: -15px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} + +.nav-list > li > a { + padding: 3px 15px; +} + +.nav-list > .active > a, +.nav-list > .active > a:hover, +.nav-list > .active > a:focus { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); + background-color: #0088cc; +} + +.nav-list [class^="icon-"], +.nav-list [class*=" icon-"] { + margin-right: 2px; +} + +.nav-list .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.nav-tabs, +.nav-pills { + *zoom: 1; +} + +.nav-tabs:before, +.nav-pills:before, +.nav-tabs:after, +.nav-pills:after { + display: table; + line-height: 0; + content: ""; +} + +.nav-tabs:after, +.nav-pills:after { + clear: both; +} + +.nav-tabs > li, +.nav-pills > li { + float: left; +} + +.nav-tabs > li > a, +.nav-pills > li > a { + padding-right: 12px; + padding-left: 12px; + margin-right: 2px; + line-height: 14px; +} + +.nav-tabs { + border-bottom: 1px solid #ddd; +} + +.nav-tabs > li { + margin-bottom: -1px; +} + +.nav-tabs > li > a { + padding-top: 8px; + padding-bottom: 8px; + line-height: 20px; + border: 1px solid transparent; + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.nav-tabs > li > a:hover, +.nav-tabs > li > a:focus { + border-color: #eeeeee #eeeeee #dddddd; +} + +.nav-tabs > .active > a, +.nav-tabs > .active > a:hover, +.nav-tabs > .active > a:focus { + color: #555555; + cursor: default; + background-color: #ffffff; + border: 1px solid #ddd; + border-bottom-color: transparent; +} + +.nav-pills > li > a { + padding-top: 8px; + padding-bottom: 8px; + margin-top: 2px; + margin-bottom: 2px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +.nav-pills > .active > a, +.nav-pills > .active > a:hover, +.nav-pills > .active > a:focus { + color: #ffffff; + background-color: #0088cc; +} + +.nav-stacked > li { + float: none; +} + +.nav-stacked > li > a { + margin-right: 0; +} + +.nav-tabs.nav-stacked { + border-bottom: 0; +} + +.nav-tabs.nav-stacked > li > a { + border: 1px solid #ddd; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.nav-tabs.nav-stacked > li:first-child > a { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-topleft: 4px; +} + +.nav-tabs.nav-stacked > li:last-child > a { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; +} + +.nav-tabs.nav-stacked > li > a:hover, +.nav-tabs.nav-stacked > li > a:focus { + z-index: 2; + border-color: #ddd; +} + +.nav-pills.nav-stacked > li > a { + margin-bottom: 3px; +} + +.nav-pills.nav-stacked > li:last-child > a { + margin-bottom: 1px; +} + +.nav-tabs .dropdown-menu { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} + +.nav-pills .dropdown-menu { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.nav .dropdown-toggle .caret { + margin-top: 6px; + border-top-color: #0088cc; + border-bottom-color: #0088cc; +} + +.nav .dropdown-toggle:hover .caret, +.nav .dropdown-toggle:focus .caret { + border-top-color: #005580; + border-bottom-color: #005580; +} + +/* move down carets for tabs */ + +.nav-tabs .dropdown-toggle .caret { + margin-top: 8px; +} + +.nav .active .dropdown-toggle .caret { + border-top-color: #fff; + border-bottom-color: #fff; +} + +.nav-tabs .active .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.nav > .dropdown.active > a:hover, +.nav > .dropdown.active > a:focus { + cursor: pointer; +} + +.nav-tabs .open .dropdown-toggle, +.nav-pills .open .dropdown-toggle, +.nav > li.dropdown.open.active > a:hover, +.nav > li.dropdown.open.active > a:focus { + color: #ffffff; + background-color: #999999; + border-color: #999999; +} + +.nav li.dropdown.open .caret, +.nav li.dropdown.open.active .caret, +.nav li.dropdown.open a:hover .caret, +.nav li.dropdown.open a:focus .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; + opacity: 1; + filter: alpha(opacity=100); +} + +.tabs-stacked .open > a:hover, +.tabs-stacked .open > a:focus { + border-color: #999999; +} + +.tabbable { + *zoom: 1; +} + +.tabbable:before, +.tabbable:after { + display: table; + line-height: 0; + content: ""; +} + +.tabbable:after { + clear: both; +} + +.tab-content { + overflow: auto; +} + +.tabs-below > .nav-tabs, +.tabs-right > .nav-tabs, +.tabs-left > .nav-tabs { + border-bottom: 0; +} + +.tab-content > .tab-pane, +.pill-content > .pill-pane { + display: none; +} + +.tab-content > .active, +.pill-content > .active { + display: block; +} + +.tabs-below > .nav-tabs { + border-top: 1px solid #ddd; +} + +.tabs-below > .nav-tabs > li { + margin-top: -1px; + margin-bottom: 0; +} + +.tabs-below > .nav-tabs > li > a { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.tabs-below > .nav-tabs > li > a:hover, +.tabs-below > .nav-tabs > li > a:focus { + border-top-color: #ddd; + border-bottom-color: transparent; +} + +.tabs-below > .nav-tabs > .active > a, +.tabs-below > .nav-tabs > .active > a:hover, +.tabs-below > .nav-tabs > .active > a:focus { + border-color: transparent #ddd #ddd #ddd; +} + +.tabs-left > .nav-tabs > li, +.tabs-right > .nav-tabs > li { + float: none; +} + +.tabs-left > .nav-tabs > li > a, +.tabs-right > .nav-tabs > li > a { + min-width: 74px; + margin-right: 0; + margin-bottom: 3px; +} + +.tabs-left > .nav-tabs { + float: left; + margin-right: 19px; + border-right: 1px solid #ddd; +} + +.tabs-left > .nav-tabs > li > a { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.tabs-left > .nav-tabs > li > a:hover, +.tabs-left > .nav-tabs > li > a:focus { + border-color: #eeeeee #dddddd #eeeeee #eeeeee; +} + +.tabs-left > .nav-tabs .active > a, +.tabs-left > .nav-tabs .active > a:hover, +.tabs-left > .nav-tabs .active > a:focus { + border-color: #ddd transparent #ddd #ddd; + *border-right-color: #ffffff; +} + +.tabs-right > .nav-tabs { + float: right; + margin-left: 19px; + border-left: 1px solid #ddd; +} + +.tabs-right > .nav-tabs > li > a { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.tabs-right > .nav-tabs > li > a:hover, +.tabs-right > .nav-tabs > li > a:focus { + border-color: #eeeeee #eeeeee #eeeeee #dddddd; +} + +.tabs-right > .nav-tabs .active > a, +.tabs-right > .nav-tabs .active > a:hover, +.tabs-right > .nav-tabs .active > a:focus { + border-color: #ddd #ddd #ddd transparent; + *border-left-color: #ffffff; +} + +.nav > .disabled > a { + color: #999999; +} + +.nav > .disabled > a:hover, +.nav > .disabled > a:focus { + text-decoration: none; + cursor: default; + background-color: transparent; +} + +.navbar { + *position: relative; + *z-index: 2; + margin-bottom: 20px; + overflow: visible; +} + +.navbar-inner { + min-height: 40px; + padding-right: 20px; + padding-left: 20px; + background-color: #fafafa; + background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2)); + background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2); + background-image: -o-linear-gradient(top, #ffffff, #f2f2f2); + background-image: linear-gradient(to bottom, #ffffff, #f2f2f2); + background-repeat: repeat-x; + border: 1px solid #d4d4d4; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0); + *zoom: 1; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); +} + +.navbar-inner:before, +.navbar-inner:after { + display: table; + line-height: 0; + content: ""; +} + +.navbar-inner:after { + clear: both; +} + +.navbar .container { + width: auto; +} + +.nav-collapse.collapse { + height: auto; + overflow: visible; +} + +.navbar .brand { + display: block; + float: left; + padding: 10px 20px 10px; + margin-left: -20px; + font-size: 20px; + font-weight: 200; + color: #777777; + text-shadow: 0 1px 0 #ffffff; +} + +.navbar .brand:hover, +.navbar .brand:focus { + text-decoration: none; +} + +.navbar-text { + margin-bottom: 0; + line-height: 40px; + color: #777777; +} + +.navbar-link { + color: #777777; +} + +.navbar-link:hover, +.navbar-link:focus { + color: #333333; +} + +.navbar .divider-vertical { + height: 40px; + margin: 0 9px; + border-right: 1px solid #ffffff; + border-left: 1px solid #f2f2f2; +} + +.navbar .btn, +.navbar .btn-group { + margin-top: 5px; +} + +.navbar .btn-group .btn, +.navbar .input-prepend .btn, +.navbar .input-append .btn, +.navbar .input-prepend .btn-group, +.navbar .input-append .btn-group { + margin-top: 0; +} + +.navbar-form { + margin-bottom: 0; + *zoom: 1; +} + +.navbar-form:before, +.navbar-form:after { + display: table; + line-height: 0; + content: ""; +} + +.navbar-form:after { + clear: both; +} + +.navbar-form input, +.navbar-form select, +.navbar-form .radio, +.navbar-form .checkbox { + margin-top: 5px; +} + +.navbar-form input, +.navbar-form select, +.navbar-form .btn { + display: inline-block; + margin-bottom: 0; +} + +.navbar-form input[type="image"], +.navbar-form input[type="checkbox"], +.navbar-form input[type="radio"] { + margin-top: 3px; +} + +.navbar-form .input-append, +.navbar-form .input-prepend { + margin-top: 5px; + white-space: nowrap; +} + +.navbar-form .input-append input, +.navbar-form .input-prepend input { + margin-top: 0; +} + +.navbar-search { + position: relative; + float: left; + margin-top: 5px; + margin-bottom: 0; +} + +.navbar-search .search-query { + padding: 4px 14px; + margin-bottom: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + font-weight: normal; + line-height: 1; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.navbar-static-top { + position: static; + margin-bottom: 0; +} + +.navbar-static-top .navbar-inner { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; + margin-bottom: 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + border-width: 0 0 1px; +} + +.navbar-fixed-bottom .navbar-inner { + border-width: 1px 0 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-fixed-bottom .navbar-inner { + padding-right: 0; + padding-left: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} + +.navbar-fixed-top { + top: 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + -webkit-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); +} + +.navbar-fixed-bottom { + bottom: 0; +} + +.navbar-fixed-bottom .navbar-inner { + -webkit-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); + box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); +} + +.navbar .nav { + position: relative; + left: 0; + display: block; + float: left; + margin: 0 10px 0 0; +} + +.navbar .nav.pull-right { + float: right; + margin-right: 0; +} + +.navbar .nav > li { + float: left; +} + +.navbar .nav > li > a { + float: none; + padding: 10px 15px 10px; + color: #777777; + text-decoration: none; + text-shadow: 0 1px 0 #ffffff; +} + +.navbar .nav .dropdown-toggle .caret { + margin-top: 8px; +} + +.navbar .nav > li > a:focus, +.navbar .nav > li > a:hover { + color: #333333; + text-decoration: none; + background-color: transparent; +} + +.navbar .nav > .active > a, +.navbar .nav > .active > a:hover, +.navbar .nav > .active > a:focus { + color: #555555; + text-decoration: none; + background-color: #e5e5e5; + -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); +} + +.navbar .btn-navbar { + display: none; + float: right; + padding: 7px 10px; + margin-right: 5px; + margin-left: 5px; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #ededed; + *background-color: #e5e5e5; + background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5)); + background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5); + background-repeat: repeat-x; + border-color: #e5e5e5 #e5e5e5 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); +} + +.navbar .btn-navbar:hover, +.navbar .btn-navbar:focus, +.navbar .btn-navbar:active, +.navbar .btn-navbar.active, +.navbar .btn-navbar.disabled, +.navbar .btn-navbar[disabled] { + color: #ffffff; + background-color: #e5e5e5; + *background-color: #d9d9d9; +} + +.navbar .btn-navbar:active, +.navbar .btn-navbar.active { + background-color: #cccccc \9; +} + +.navbar .btn-navbar .icon-bar { + display: block; + width: 18px; + height: 2px; + background-color: #f5f5f5; + -webkit-border-radius: 1px; + -moz-border-radius: 1px; + border-radius: 1px; + -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); +} + +.btn-navbar .icon-bar + .icon-bar { + margin-top: 3px; +} + +.navbar .nav > li > .dropdown-menu:before { + position: absolute; + top: -7px; + left: 9px; + display: inline-block; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-left: 7px solid transparent; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; +} + +.navbar .nav > li > .dropdown-menu:after { + position: absolute; + top: -6px; + left: 10px; + display: inline-block; + border-right: 6px solid transparent; + border-bottom: 6px solid #ffffff; + border-left: 6px solid transparent; + content: ''; +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:before { + top: auto; + bottom: -7px; + border-top: 7px solid #ccc; + border-bottom: 0; + border-top-color: rgba(0, 0, 0, 0.2); +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:after { + top: auto; + bottom: -6px; + border-top: 6px solid #ffffff; + border-bottom: 0; +} + +.navbar .nav li.dropdown > a:hover .caret, +.navbar .nav li.dropdown > a:focus .caret { + border-top-color: #333333; + border-bottom-color: #333333; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle, +.navbar .nav li.dropdown.active > .dropdown-toggle, +.navbar .nav li.dropdown.open.active > .dropdown-toggle { + color: #555555; + background-color: #e5e5e5; +} + +.navbar .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #777777; + border-bottom-color: #777777; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.navbar .pull-right > li > .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu:before, +.navbar .nav > li > .dropdown-menu.pull-right:before { + right: 12px; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu:after, +.navbar .nav > li > .dropdown-menu.pull-right:after { + right: 13px; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu { + right: 100%; + left: auto; + margin-right: -1px; + margin-left: 0; + -webkit-border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; +} + +.navbar-inverse .navbar-inner { + background-color: #1b1b1b; + background-image: -moz-linear-gradient(top, #222222, #111111); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111)); + background-image: -webkit-linear-gradient(top, #222222, #111111); + background-image: -o-linear-gradient(top, #222222, #111111); + background-image: linear-gradient(to bottom, #222222, #111111); + background-repeat: repeat-x; + border-color: #252525; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0); +} + +.navbar-inverse .brand, +.navbar-inverse .nav > li > a { + color: #999999; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.navbar-inverse .brand:hover, +.navbar-inverse .nav > li > a:hover, +.navbar-inverse .brand:focus, +.navbar-inverse .nav > li > a:focus { + color: #ffffff; +} + +.navbar-inverse .brand { + color: #999999; +} + +.navbar-inverse .navbar-text { + color: #999999; +} + +.navbar-inverse .nav > li > a:focus, +.navbar-inverse .nav > li > a:hover { + color: #ffffff; + background-color: transparent; +} + +.navbar-inverse .nav .active > a, +.navbar-inverse .nav .active > a:hover, +.navbar-inverse .nav .active > a:focus { + color: #ffffff; + background-color: #111111; +} + +.navbar-inverse .navbar-link { + color: #999999; +} + +.navbar-inverse .navbar-link:hover, +.navbar-inverse .navbar-link:focus { + color: #ffffff; +} + +.navbar-inverse .divider-vertical { + border-right-color: #222222; + border-left-color: #111111; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle { + color: #ffffff; + background-color: #111111; +} + +.navbar-inverse .nav li.dropdown > a:hover .caret, +.navbar-inverse .nav li.dropdown > a:focus .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #999999; + border-bottom-color: #999999; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .navbar-search .search-query { + color: #ffffff; + background-color: #515151; + border-color: #111111; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; +} + +.navbar-inverse .navbar-search .search-query:-moz-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:-ms-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:focus, +.navbar-inverse .navbar-search .search-query.focused { + padding: 5px 15px; + color: #333333; + text-shadow: 0 1px 0 #ffffff; + background-color: #ffffff; + border: 0; + outline: 0; + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); +} + +.navbar-inverse .btn-navbar { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e0e0e; + *background-color: #040404; + background-image: -moz-linear-gradient(top, #151515, #040404); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404)); + background-image: -webkit-linear-gradient(top, #151515, #040404); + background-image: -o-linear-gradient(top, #151515, #040404); + background-image: linear-gradient(to bottom, #151515, #040404); + background-repeat: repeat-x; + border-color: #040404 #040404 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.navbar-inverse .btn-navbar:hover, +.navbar-inverse .btn-navbar:focus, +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active, +.navbar-inverse .btn-navbar.disabled, +.navbar-inverse .btn-navbar[disabled] { + color: #ffffff; + background-color: #040404; + *background-color: #000000; +} + +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active { + background-color: #000000 \9; +} + +.breadcrumb { + padding: 8px 15px; + margin: 0 0 20px; + list-style: none; + background-color: #f5f5f5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.breadcrumb > li { + display: inline-block; + *display: inline; + text-shadow: 0 1px 0 #ffffff; + *zoom: 1; +} + +.breadcrumb > li > .divider { + padding: 0 5px; + color: #ccc; +} + +.breadcrumb > .active { + color: #999999; +} + +.pagination { + margin: 20px 0; +} + +.pagination ul { + display: inline-block; + *display: inline; + margin-bottom: 0; + margin-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + *zoom: 1; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.pagination ul > li { + display: inline; +} + +.pagination ul > li > a, +.pagination ul > li > span { + float: left; + padding: 4px 12px; + line-height: 20px; + text-decoration: none; + background-color: #ffffff; + border: 1px solid #dddddd; + border-left-width: 0; +} + +.pagination ul > li > a:hover, +.pagination ul > li > a:focus, +.pagination ul > .active > a, +.pagination ul > .active > span { + background-color: #f5f5f5; +} + +.pagination ul > .active > a, +.pagination ul > .active > span { + color: #999999; + cursor: default; +} + +.pagination ul > .disabled > span, +.pagination ul > .disabled > a, +.pagination ul > .disabled > a:hover, +.pagination ul > .disabled > a:focus { + color: #999999; + cursor: default; + background-color: transparent; +} + +.pagination ul > li:first-child > a, +.pagination ul > li:first-child > span { + border-left-width: 1px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-topleft: 4px; +} + +.pagination ul > li:last-child > a, +.pagination ul > li:last-child > span { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; +} + +.pagination-centered { + text-align: center; +} + +.pagination-right { + text-align: right; +} + +.pagination-large ul > li > a, +.pagination-large ul > li > span { + padding: 11px 19px; + font-size: 17.5px; +} + +.pagination-large ul > li:first-child > a, +.pagination-large ul > li:first-child > span { + -webkit-border-bottom-left-radius: 6px; + border-bottom-left-radius: 6px; + -webkit-border-top-left-radius: 6px; + border-top-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + -moz-border-radius-topleft: 6px; +} + +.pagination-large ul > li:last-child > a, +.pagination-large ul > li:last-child > span { + -webkit-border-top-right-radius: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + border-bottom-right-radius: 6px; + -moz-border-radius-topright: 6px; + -moz-border-radius-bottomright: 6px; +} + +.pagination-mini ul > li:first-child > a, +.pagination-small ul > li:first-child > a, +.pagination-mini ul > li:first-child > span, +.pagination-small ul > li:first-child > span { + -webkit-border-bottom-left-radius: 3px; + border-bottom-left-radius: 3px; + -webkit-border-top-left-radius: 3px; + border-top-left-radius: 3px; + -moz-border-radius-bottomleft: 3px; + -moz-border-radius-topleft: 3px; +} + +.pagination-mini ul > li:last-child > a, +.pagination-small ul > li:last-child > a, +.pagination-mini ul > li:last-child > span, +.pagination-small ul > li:last-child > span { + -webkit-border-top-right-radius: 3px; + border-top-right-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + border-bottom-right-radius: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomright: 3px; +} + +.pagination-small ul > li > a, +.pagination-small ul > li > span { + padding: 2px 10px; + font-size: 11.9px; +} + +.pagination-mini ul > li > a, +.pagination-mini ul > li > span { + padding: 0 6px; + font-size: 10.5px; +} + +.pager { + margin: 20px 0; + text-align: center; + list-style: none; + *zoom: 1; +} + +.pager:before, +.pager:after { + display: table; + line-height: 0; + content: ""; +} + +.pager:after { + clear: both; +} + +.pager li { + display: inline; +} + +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #f5f5f5; +} + +.pager .next > a, +.pager .next > span { + float: right; +} + +.pager .previous > a, +.pager .previous > span { + float: left; +} + +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #999999; + cursor: default; + background-color: #fff; +} + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000000; +} + +.modal-backdrop.fade { + opacity: 0; +} + +.modal-backdrop, +.modal-backdrop.fade.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.modal { + position: fixed; + top: 10%; + left: 50%; + z-index: 1050; + width: 560px; + margin-left: -280px; + background-color: #ffffff; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, 0.3); + *border: 1px solid #999; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + outline: none; + -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; +} + +.modal.fade { + top: -25%; + -webkit-transition: opacity 0.3s linear, top 0.3s ease-out; + -moz-transition: opacity 0.3s linear, top 0.3s ease-out; + -o-transition: opacity 0.3s linear, top 0.3s ease-out; + transition: opacity 0.3s linear, top 0.3s ease-out; +} + +.modal.fade.in { + top: 10%; +} + +.modal-header { + padding: 9px 15px; + border-bottom: 1px solid #eee; +} + +.modal-header .close { + margin-top: 2px; +} + +.modal-header h3 { + margin: 0; + line-height: 30px; +} + +.modal-body { + position: relative; + max-height: 400px; + padding: 15px; + overflow-y: auto; +} + +.modal-form { + margin-bottom: 0; +} + +.modal-footer { + padding: 14px 15px 15px; + margin-bottom: 0; + text-align: right; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; + *zoom: 1; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; +} + +.modal-footer:before, +.modal-footer:after { + display: table; + line-height: 0; + content: ""; +} + +.modal-footer:after { + clear: both; +} + +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; +} + +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} + +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} + +.tooltip { + position: absolute; + z-index: 1030; + display: block; + font-size: 11px; + line-height: 1.4; + opacity: 0; + filter: alpha(opacity=0); + visibility: visible; +} + +.tooltip.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.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: 8px; + color: #ffffff; + text-align: center; + text-decoration: none; + background-color: #000000; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-top-color: #000000; + border-width: 5px 5px 0; +} + +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-right-color: #000000; + border-width: 5px 5px 5px 0; +} + +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-left-color: #000000; + border-width: 5px 0 5px 5px; +} + +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-bottom-color: #000000; + border-width: 0 5px 5px; +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + max-width: 276px; + padding: 1px; + text-align: left; + white-space: normal; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.popover.top { + margin-top: -10px; +} + +.popover.right { + margin-left: 10px; +} + +.popover.bottom { + margin-top: 10px; +} + +.popover.left { + margin-left: -10px; +} + +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + font-weight: normal; + line-height: 18px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} + +.popover-title:empty { + display: none; +} + +.popover-content { + padding: 9px 14px; +} + +.popover .arrow, +.popover .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.popover .arrow { + border-width: 11px; +} + +.popover .arrow:after { + border-width: 10px; + content: ""; +} + +.popover.top .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999; + border-top-color: rgba(0, 0, 0, 0.25); + border-bottom-width: 0; +} + +.popover.top .arrow:after { + bottom: 1px; + margin-left: -10px; + border-top-color: #ffffff; + 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, 0.25); + border-left-width: 0; +} + +.popover.right .arrow:after { + bottom: -10px; + left: 1px; + border-right-color: #ffffff; + border-left-width: 0; +} + +.popover.bottom .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-bottom-color: #999; + border-bottom-color: rgba(0, 0, 0, 0.25); + border-top-width: 0; +} + +.popover.bottom .arrow:after { + top: 1px; + margin-left: -10px; + border-bottom-color: #ffffff; + border-top-width: 0; +} + +.popover.left .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-left-color: #999; + border-left-color: rgba(0, 0, 0, 0.25); + border-right-width: 0; +} + +.popover.left .arrow:after { + right: 1px; + bottom: -10px; + border-left-color: #ffffff; + border-right-width: 0; +} + +.thumbnails { + margin-left: -20px; + list-style: none; + *zoom: 1; +} + +.thumbnails:before, +.thumbnails:after { + display: table; + line-height: 0; + content: ""; +} + +.thumbnails:after { + clear: both; +} + +.row-fluid .thumbnails { + margin-left: 0; +} + +.thumbnails > li { + float: left; + margin-bottom: 20px; + margin-left: 20px; +} + +.thumbnail { + display: block; + padding: 4px; + line-height: 20px; + border: 1px solid #ddd; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} + +a.thumbnail:hover, +a.thumbnail:focus { + border-color: #0088cc; + -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); +} + +.thumbnail > img { + display: block; + max-width: 100%; + margin-right: auto; + margin-left: auto; +} + +.thumbnail .caption { + padding: 9px; + color: #555555; +} + +.media, +.media-body { + overflow: hidden; + *overflow: visible; + zoom: 1; +} + +.media, +.media .media { + margin-top: 15px; +} + +.media:first-child { + margin-top: 0; +} + +.media-object { + display: block; +} + +.media-heading { + margin: 0 0 5px; +} + +.media > .pull-left { + margin-right: 10px; +} + +.media > .pull-right { + margin-left: 10px; +} + +.media-list { + margin-left: 0; + list-style: none; +} + +.label, +.badge { + display: inline-block; + padding: 2px 4px; + font-size: 11.844px; + font-weight: bold; + line-height: 14px; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + white-space: nowrap; + vertical-align: baseline; + background-color: #999999; +} + +.label { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.badge { + padding-right: 9px; + padding-left: 9px; + -webkit-border-radius: 9px; + -moz-border-radius: 9px; + border-radius: 9px; +} + +.label:empty, +.badge:empty { + display: none; +} + +a.label:hover, +a.label:focus, +a.badge:hover, +a.badge:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} + +.label-important, +.badge-important { + background-color: #b94a48; +} + +.label-important[href], +.badge-important[href] { + background-color: #953b39; +} + +.label-warning, +.badge-warning { + background-color: #f89406; +} + +.label-warning[href], +.badge-warning[href] { + background-color: #c67605; +} + +.label-success, +.badge-success { + background-color: #468847; +} + +.label-success[href], +.badge-success[href] { + background-color: #356635; +} + +.label-info, +.badge-info { + background-color: #3a87ad; +} + +.label-info[href], +.badge-info[href] { + background-color: #2d6987; +} + +.label-inverse, +.badge-inverse { + background-color: #333333; +} + +.label-inverse[href], +.badge-inverse[href] { + background-color: #1a1a1a; +} + +.btn .label, +.btn .badge { + position: relative; + top: -1px; +} + +.btn-mini .label, +.btn-mini .badge { + top: 0; +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-ms-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +.progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.progress .bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + color: #ffffff; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e90d2; + background-image: -moz-linear-gradient(top, #149bdf, #0480be); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); + background-image: -webkit-linear-gradient(top, #149bdf, #0480be); + background-image: -o-linear-gradient(top, #149bdf, #0480be); + background-image: linear-gradient(to bottom, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: width 0.6s ease; + -moz-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} + +.progress .bar + .bar { + -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); +} + +.progress-striped .bar { + background-color: #149bdf; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + -moz-background-size: 40px 40px; + -o-background-size: 40px 40px; + background-size: 40px 40px; +} + +.progress.active .bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} + +.progress-danger .bar, +.progress .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); +} + +.progress-danger.progress-striped .bar, +.progress-striped .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-success .bar, +.progress .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(to bottom, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); +} + +.progress-success.progress-striped .bar, +.progress-striped .bar-success { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-info .bar, +.progress .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(to bottom, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); +} + +.progress-info.progress-striped .bar, +.progress-striped .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-warning .bar, +.progress .bar-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); +} + +.progress-warning.progress-striped .bar, +.progress-striped .bar-warning { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.accordion { + margin-bottom: 20px; +} + +.accordion-group { + margin-bottom: 2px; + border: 1px solid #e5e5e5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.accordion-heading { + border-bottom: 0; +} + +.accordion-heading .accordion-toggle { + display: block; + padding: 8px 15px; +} + +.accordion-toggle { + cursor: pointer; +} + +.accordion-inner { + padding: 9px 15px; + border-top: 1px solid #e5e5e5; +} + +.carousel { + position: relative; + margin-bottom: 20px; + line-height: 1; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} + +.carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: 0.6s ease-in-out left; + -moz-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} + +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + line-height: 1; +} + +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} + +.carousel-inner > .active { + left: 0; +} + +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} + +.carousel-inner > .next { + left: 100%; +} + +.carousel-inner > .prev { + left: -100%; +} + +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} + +.carousel-inner > .active.left { + left: -100%; +} + +.carousel-inner > .active.right { + left: 100%; +} + +.carousel-control { + position: absolute; + top: 40%; + left: 15px; + width: 40px; + height: 40px; + margin-top: -20px; + font-size: 60px; + font-weight: 100; + line-height: 30px; + color: #ffffff; + text-align: center; + background: #222222; + border: 3px solid #ffffff; + -webkit-border-radius: 23px; + -moz-border-radius: 23px; + border-radius: 23px; + opacity: 0.5; + filter: alpha(opacity=50); +} + +.carousel-control.right { + right: 15px; + left: auto; +} + +.carousel-control:hover, +.carousel-control:focus { + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} + +.carousel-indicators { + position: absolute; + top: 15px; + right: 15px; + z-index: 5; + margin: 0; + list-style: none; +} + +.carousel-indicators li { + display: block; + float: left; + width: 10px; + height: 10px; + margin-left: 5px; + text-indent: -999px; + background-color: #ccc; + background-color: rgba(255, 255, 255, 0.25); + border-radius: 5px; +} + +.carousel-indicators .active { + background-color: #fff; +} + +.carousel-caption { + position: absolute; + right: 0; + bottom: 0; + left: 0; + padding: 15px; + background: #333333; + background: rgba(0, 0, 0, 0.75); +} + +.carousel-caption h4, +.carousel-caption p { + line-height: 20px; + color: #ffffff; +} + +.carousel-caption h4 { + margin: 0 0 5px; +} + +.carousel-caption p { + margin-bottom: 0; +} + +.hero-unit { + padding: 60px; + margin-bottom: 30px; + font-size: 18px; + font-weight: 200; + line-height: 30px; + color: inherit; + background-color: #eeeeee; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.hero-unit h1 { + margin-bottom: 0; + font-size: 60px; + line-height: 1; + letter-spacing: -1px; + color: inherit; +} + +.hero-unit li { + line-height: 30px; +} + +.pull-right { + float: right; +} + +.pull-left { + float: left; +} + +.hide { + display: none; +} + +.show { + display: block; +} + +.invisible { + visibility: hidden; +} + +.affix { + position: fixed; +} diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/doc_widgets.css b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/doc_widgets.css new file mode 100644 index 00000000..587d5a7e --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/doc_widgets.css @@ -0,0 +1,150 @@ +ul.doc-example { + list-style-type: none; + position: relative; + font-size: 14px; +} + +ul.doc-example > li { + border: 2px solid gray; + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + background-color: white; + margin-bottom: 20px; +} + +ul.doc-example > li.doc-example-heading { + border: none; + border-radius: 0; + margin-bottom: -10px; +} + +span.nojsfiddle { + float: right; + font-size: 14px; + margin-right:10px; + margin-top: 10px; +} + +form.jsfiddle { + position: absolute; + right: 0; + z-index: 1; + height: 14px; +} + +form.jsfiddle button { + cursor: pointer; + padding: 4px 10px; + margin: 10px; + background-color: #FFF; + font-weight: bold; + color: #7989D6; + border-color: #7989D6; + -moz-border-radius: 8px; + -webkit-border-radius:8px; + border-radius: 8px; +} + +form.jsfiddle textarea, form.jsfiddle input { + display: none; +} + +li.doc-example-live { + padding: 10px; + font-size: 1.2em; +} + +div.syntaxhighlighter { + padding-bottom: 1px !important; /* fix to remove unnecessary scrollbars http://is.gd/gSMgC */ +} + +/* TABS - tutorial environment navigation */ + +div.tabs-nav { + height: 25px; + position: relative; +} + +div.tabs-nav ul li { + list-style: none; + display: inline-block; + padding: 5px 10px; +} + +div.tabs-nav ul li.current a { + color: white; + text-decoration: none; +} + +div.tabs-nav ul li.current { + background: #7989D6; + -moz-box-shadow: 4px 4px 6px #48577D; + -moz-border-radius-topright: 8px; + -moz-border-radius-topleft: 8px; + box-shadow: 4px 4px 6px #48577D; + border-radius-topright: 8px; + border-radius-topleft: 8px; + -webkit-box-shadow: 4px 4px 6px #48577D; + -webkit-border-top-right-radius: 8px; + -webkit-border-top-left-radius: 8px; + border-top-right-radius: 8px; + border-top-left-radius: 8px; +} + +div.tabs-content { + padding: 4px; + position: relative; + background: #7989D6; + -moz-border-radius: 8px; + border-radius: 8px; + -webkit-border-radius: 8px; +} + +div.tabs-content-inner { + margin: 1px; + padding: 10px; + background: white; + border-radius: 6px; + -moz-border-radius: 6px; + -webkit-border-radius: 6px; +} + + +/* Tutorial Nav Bar */ + +#tutorial-nav { + margin: 0.5em 0 1em 0; + padding: 0; + list-style-type: none; + background: #7989D6; + + -moz-border-radius: 15px; + -webkit-border-radius: 15px; + border-radius: 15px; + + -moz-box-shadow: 4px 4px 6px #48577D; + -webkit-box-shadow: 4px 4px 6px #48577D; + box-shadow: 4px 4px 6px #48577D; +} + + +#tutorial-nav li { + display: inline; +} + + +#tutorial-nav a:link, #tutorial-nav a:visited { + font-size: 1.2em; + color: #FFF; + text-decoration: none; + text-align: center; + display: inline-block; + width: 11em; + padding: 0.2em 0; +} + + +#tutorial-nav a:hover { + color: #000; +} diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/docs.css b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/docs.css new file mode 100644 index 00000000..77f2a276 --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/docs.css @@ -0,0 +1,322 @@ +img.AngularJS-small { + width: 95px; + height: 25px; +} + +/* this is here to avoid the display=block shuffling of ngShow */ +.breadcrumb li > * { + float:left; + margin:0 2px 0 0; +} + +.breadcrumb { + padding-top: 6px; + padding-bottom: 0; + line-height: 18px +} + +.navbar img { + max-height: 40px; + padding-right: 20px; +} + +.navbar img+.brand { + padding: 10px 20px 10px 10px; +} + +.clear-navbar { + margin-top: 60px; +} + +.footer { + padding-top: 2em; + background-color: #333; + color: white; + padding-bottom: 2em; +} + +.spacer { + height: 1em; +} + + +.icon-cog { + line-height: 13px; +} + +/* =============================== */ + +.form-search { + margin-right: 10px; +} + +.form-search .search-query { + width: 180px; + width: 200px \9; +} + +.form-search .dropdown-menu { + margin-left: 10px; +} + +.form-search .code { + font-family: monospace; + font-weight: bold; + font-size: 13px; + color: black; + overflow: hidden; + text-overflow: ellipsis; +} + +.form-search > ul.nav > li > a { + margin: 0; +} + +.form-search > ul.nav > li.module { + background-color: #d3d3d3; +} + +.form-search > ul.nav > li.section { + background-color: #ebebeb; + min-height: 14px; +} + +.form-search > ul.nav > li.first { + padding-top: 6px; +} + +.form-search > ul.nav > li.last { + padding-bottom: 6px; +} + +.form-search > ul.nav > li.last + li.api-list-item { + margin-top: -6px; + padding-bottom: 6px; +} + +.form-search .well { + border-color: #d3d3d3; + padding: 0; + margin-bottom: 15px; +} + +.form-search .well .nav-header { + text-transform: none; + padding: 3px 1px; + margin: 0; +} + +.form-search .well .nav-header a { + text-transform: none; + color: black; +} +.form-search .well .nav-header a:hover { + background-color: inherit; +} + +.form-search .well li { + line-height: 14px; +} + +.form-search .well li a:focus { + outline: none; +} + +.form-search .well .guide { + float: right; + padding-top: 0; + color: gray; +} + +.form-search .module .guide { + line-height: 20px; +} + +.match > a, .nav > .match > a:hover { + background-color: #dbeaf4; +} + +/* =============================== */ +/* Content */ +/* =============================== */ + +.edit-example { + margin-top: 9px; +} + +.improve-docs, .view-source, .edit-example { + float: right; + margin-left: 35px; + position: relative; +} + +.improve-docs i, .view-source i, .edit-example i { + position: absolute; + left: -20px; + top: 50%; + margin-top: -.5em; + text-decoration: none !important; +} + +.methods .view-source { + margin: -0.5em 0 0 0; + text-decoration: none !important; +} + +.hint { + font-size: .6em; + color: #c0c0c0; + display: block; +} + +.content code { + background-color: inherit; + color: inherit; + border: none; + padding: 0; + font-size: inherit; + font-family: monospace; +} + +.content h2, +.content h3, +.content h4, +.content h5 { + margin: 1em 0 5px; +} + +.content h1 { + font-size: 30px; + line-height: 36px; +} + +.content h2 { + font-size: 24px; + line-height: 36px; +} + +.content h3 { + line-height: 27px; + font-size: 18px; +} + +.content h4 { + font-size: 15px; +} + +ul.parameters > li > p, +.returns > p { + display: inline; +} + +ul.methods > li, +ul.properties > li, +ul.events > li { + list-style: none; + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #eee; + border: 1px solid rgba(0, 0, 0, 0.05); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} + +.member.method > h2, +.member.property > h2, +.member.event > h2 { + margin-bottom: .5em; +} + +ul.methods > li > h3, +ul.properties > li > h3, +ul.events > li > h3 { + margin: -19px -19px 1em -19px; + padding: .25em 39px .25em 19px; + background-color: #d3d3d3; + font-family: monospace; +} + +.center { + display: block; + margin: 2em auto; +} + +.diagram { + display: block; + margin: 2em auto; + padding: 1em; + border: 1px solid black; + + -moz-box-shadow: 4px 4px 6px #48577D; + -webkit-box-shadow: 4px 4px 6px #48577D; + box-shadow: 4px 4px 6px #48577D; + + -moz-border-radius: 15px; + -webkit-border-radius: 15px; + border-radius: 15px; +} + +.tutorial-nav { + margin-left: 175px; + color: black; + margin-top: 2em; + margin-bottom: 2em; +} + +.tutorial-nav a { + color: white; +} + +.tutorial-nav a:hover { + color: white; + text-decoration: none; +} + +.clear { + clear: both; +} + +.variables-matrix td { + vertical-align:top; + padding:5px; +} + +.type-hint { + display:inline-block; +} + +.variables-matrix .type-hint { + text-align:center; + display:block; + min-width:60px; +} + +.type-hint + .type-hint { + margin-top:5px; +} + +.type-hint-string { + background:#3a87ad; +} + +.type-hint-object { + background:#999; +} + +.type-hint-array { + background:#F90;; +} + +.type-hint-boolean { + background:rgb(18, 131, 39); +} + +.type-hint-number { + background:rgb(189, 63, 66); +} diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/examples.css b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/examples.css new file mode 100644 index 00000000..b5683ad4 --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/examples.css @@ -0,0 +1,132 @@ +/* Demo CSS */ +.pf-transclude-example div { + border: 1px solid #337ab7; + margin-bottom: 20px; + margin-left: 20px; +} + +.pf-transclude-example p { + background-color: #337ab7; + margin: 0; + padding: 5px 10px; +} + +.pf-transclude-example id { + display: inline-block; + background-color: #def3ff; + color: #000; + border-radius: 10px; + width: 20px; + height: 20px; + text-align: center; + line-height: 20px; + margin-left: 5px; +} + +.pf-transclude-example pre { + padding: 5px; + border-width: 0px; +} + +hr { + display: block; + height: 10px; + border: 0; + border-top: 1px solid #525252; + margin: 1em 0; + padding: 0; +} + +.example-container { + display:inline-block; + width: 100%; +} + +.example-list-view { + height: 100%; + width: 100%; + overflow-y: auto; +} + +.list-view-container { + border: 1px solid #000000; + height: 460px; + min-height: 25px; + margin: 10px; + padding: 0; +} + +.list-view-container .list-row { + padding-top: 2px; +} + +.card-view-container { + border: 1px solid #000000; + margin: 10px; + min-height: 25px; + padding: 5px; +} + +.card-view-container .card-view-pf .card { + height: 110px; + width: 300px; +} + +.dropdown-menu > li > a:hover { + background-image: none; +} + +.pf-select-sm { + height :25px; + width :120px; +} + +.actions-label { + margin-top: 5px; +} + +.pre-demo-text { + margin-top: -20px; +} + +.label-title { + font-size: 16px; + font-weight: 600; + padding-bottom: 10px; +} + +.example-heatmap-container { + border: solid 1px #d1d1d1; + margin: 0 10px; +} + +.example-page-container.container-fluid { + position: fixed; + top: 37px; + bottom: 0; + left: 0; + right: 0; + background-color: #f5f5f5; + padding-top: 15px; +} +.hide-vertical-nav { + margin-top: 15px; + margin-left: 30px; +} +.example-info-text { + width: 100%; +} +.example-info-text:first-of-type { + margin-top: 10px; +} + +.example-error-background { + background-color: #cc0000 !important; +} +.example-warning-background { + background-color: #ec7a08 !important; +} + +.dropdown-kebab-pf.red .btn-link { + color: red; +} diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/font-awesome.css b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/font-awesome.css new file mode 100644 index 00000000..db4fd90d --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/font-awesome.css @@ -0,0 +1,1268 @@ +/*! + * Font Awesome 3.1.0 + * the iconic font designed for Bootstrap + * ------------------------------------------------------- + * The full suite of pictographic icons, examples, and documentation + * can be found at: http://fontawesome.io + * + * License + * ------------------------------------------------------- + * - The Font Awesome font is licensed under the SIL Open Font License v1.1 - + * http://scripts.sil.org/OFL + * - Font Awesome CSS, LESS, and SASS files are licensed under the MIT License - + * http://opensource.org/licenses/mit-license.html + * - Font Awesome documentation licensed under CC BY 3.0 License - + * http://creativecommons.org/licenses/by/3.0/ + * - Attribution is no longer required in Font Awesome 3.0, but much appreciated: + * "Font Awesome by Dave Gandy - http://fontawesome.io" + + * Contact + * ------------------------------------------------------- + * Email: dave@fontawesome.io + * Twitter: http://twitter.com/fortaweso_me + * Work: Lead Product Designer @ http://kyruus.com + */ +/* FONT PATH + * -------------------------- */ +@font-face { + font-family: 'FontAwesome'; + src: url('../font/fontawesome-webfont.eot?v=3.1.0'); + src: url('../font/fontawesome-webfont.eot?#iefix&v=3.1.0') format('embedded-opentype'), url('../font/fontawesome-webfont.woff?v=3.1.0') format('woff'), url('../font/fontawesome-webfont.ttf?v=3.1.0') format('truetype'), url('../font/fontawesome-webfont.svg#fontawesomeregular?v=3.1.0') format('svg'); + font-weight: normal; + font-style: normal; +} +/* FONT AWESOME CORE + * -------------------------- */ +[class^="icon-"], +[class*=" icon-"] { + font-family: FontAwesome; + font-weight: normal; + font-style: normal; + text-decoration: inherit; + -webkit-font-smoothing: antialiased; + *margin-right: .3em; +} +[class^="icon-"]:before, +[class*=" icon-"]:before { + text-decoration: inherit; + display: inline-block; + speak: none; +} +/* makes the font 33% larger relative to the icon container */ +.icon-large:before { + vertical-align: -10%; + font-size: 1.3333333333333333em; +} +/* makes sure icons active on rollover in links */ +a [class^="icon-"], +a [class*=" icon-"], +a [class^="icon-"]:before, +a [class*=" icon-"]:before { + display: inline; +} +/* increased font size for icon-large */ +[class^="icon-"].icon-fixed-width, +[class*=" icon-"].icon-fixed-width { + display: inline-block; + width: 1.2857142857142858em; + text-align: center; +} +[class^="icon-"].icon-fixed-width.icon-large, +[class*=" icon-"].icon-fixed-width.icon-large { + width: 1.5714285714285714em; +} +ul.icons-ul { + list-style-type: none; + text-indent: -0.7142857142857143em; + margin-left: 2.142857142857143em; +} +ul.icons-ul > li .icon-li { + width: 0.7142857142857143em; + display: inline-block; + text-align: center; +} +[class^="icon-"].hide, +[class*=" icon-"].hide { + display: none; +} +.icon-muted { + color: #eeeeee; +} +.icon-light { + color: #ffffff; +} +.icon-dark { + color: #333333; +} +.icon-border { + border: solid 1px #eeeeee; + padding: .2em .25em .15em; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +.icon-2x { + font-size: 2em; +} +.icon-2x.icon-border { + border-width: 2px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.icon-3x { + font-size: 3em; +} +.icon-3x.icon-border { + border-width: 3px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} +.icon-4x { + font-size: 4em; +} +.icon-4x.icon-border { + border-width: 4px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} +.icon-5x { + font-size: 5em; +} +.icon-5x.icon-border { + border-width: 5px; + -webkit-border-radius: 7px; + -moz-border-radius: 7px; + border-radius: 7px; +} +.pull-right { + float: right; +} +.pull-left { + float: left; +} +[class^="icon-"].pull-left, +[class*=" icon-"].pull-left { + margin-right: .3em; +} +[class^="icon-"].pull-right, +[class*=" icon-"].pull-right { + margin-left: .3em; +} +/* BOOTSTRAP SPECIFIC CLASSES + * -------------------------- */ +/* Bootstrap 2.0 sprites.less reset */ +[class^="icon-"], +[class*=" icon-"] { + display: inline; + width: auto; + height: auto; + line-height: normal; + vertical-align: baseline; + background-image: none; + background-position: 0% 0%; + background-repeat: repeat; + margin-top: 0; +} +/* more sprites.less reset */ +.icon-white, +.nav-pills > .active > a > [class^="icon-"], +.nav-pills > .active > a > [class*=" icon-"], +.nav-list > .active > a > [class^="icon-"], +.nav-list > .active > a > [class*=" icon-"], +.navbar-inverse .nav > .active > a > [class^="icon-"], +.navbar-inverse .nav > .active > a > [class*=" icon-"], +.dropdown-menu > li > a:hover > [class^="icon-"], +.dropdown-menu > li > a:hover > [class*=" icon-"], +.dropdown-menu > .active > a > [class^="icon-"], +.dropdown-menu > .active > a > [class*=" icon-"], +.dropdown-submenu:hover > a > [class^="icon-"], +.dropdown-submenu:hover > a > [class*=" icon-"] { + background-image: none; +} +/* keeps Bootstrap styles with and without icons the same */ +.btn [class^="icon-"].icon-large, +.nav [class^="icon-"].icon-large, +.btn [class*=" icon-"].icon-large, +.nav [class*=" icon-"].icon-large { + line-height: .9em; +} +.btn [class^="icon-"].icon-spin, +.nav [class^="icon-"].icon-spin, +.btn [class*=" icon-"].icon-spin, +.nav [class*=" icon-"].icon-spin { + display: inline-block; +} +.nav-tabs [class^="icon-"], +.nav-pills [class^="icon-"], +.nav-tabs [class*=" icon-"], +.nav-pills [class*=" icon-"], +.nav-tabs [class^="icon-"].icon-large, +.nav-pills [class^="icon-"].icon-large, +.nav-tabs [class*=" icon-"].icon-large, +.nav-pills [class*=" icon-"].icon-large { + line-height: .9em; +} +.btn [class^="icon-"].pull-left.icon-2x, +.btn [class*=" icon-"].pull-left.icon-2x, +.btn [class^="icon-"].pull-right.icon-2x, +.btn [class*=" icon-"].pull-right.icon-2x { + margin-top: .18em; +} +.btn [class^="icon-"].icon-spin.icon-large, +.btn [class*=" icon-"].icon-spin.icon-large { + line-height: .8em; +} +.btn.btn-small [class^="icon-"].pull-left.icon-2x, +.btn.btn-small [class*=" icon-"].pull-left.icon-2x, +.btn.btn-small [class^="icon-"].pull-right.icon-2x, +.btn.btn-small [class*=" icon-"].pull-right.icon-2x { + margin-top: .25em; +} +.btn.btn-large [class^="icon-"], +.btn.btn-large [class*=" icon-"] { + margin-top: 0; +} +.btn.btn-large [class^="icon-"].pull-left.icon-2x, +.btn.btn-large [class*=" icon-"].pull-left.icon-2x, +.btn.btn-large [class^="icon-"].pull-right.icon-2x, +.btn.btn-large [class*=" icon-"].pull-right.icon-2x { + margin-top: .05em; +} +.btn.btn-large [class^="icon-"].pull-left.icon-2x, +.btn.btn-large [class*=" icon-"].pull-left.icon-2x { + margin-right: .2em; +} +.btn.btn-large [class^="icon-"].pull-right.icon-2x, +.btn.btn-large [class*=" icon-"].pull-right.icon-2x { + margin-left: .2em; +} +/* EXTRAS + * -------------------------- */ +/* Stacked and layered icon */ +.icon-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: -35%; +} +.icon-stack [class^="icon-"], +.icon-stack [class*=" icon-"] { + display: block; + text-align: center; + position: absolute; + width: 100%; + height: 100%; + font-size: 1em; + line-height: inherit; + *line-height: 2em; +} +.icon-stack .icon-stack-base { + font-size: 2em; + *line-height: 1em; +} +/* Animated rotating icon */ +.icon-spin { + display: inline-block; + -moz-animation: spin 2s infinite linear; + -o-animation: spin 2s infinite linear; + -webkit-animation: spin 2s infinite linear; + animation: spin 2s infinite linear; +} +@-moz-keyframes spin { + 0% { + -moz-transform: rotate(0deg); + } + 100% { + -moz-transform: rotate(359deg); + } +} +@-webkit-keyframes spin { + 0% { + -webkit-transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + } +} +@-o-keyframes spin { + 0% { + -o-transform: rotate(0deg); + } + 100% { + -o-transform: rotate(359deg); + } +} +@-ms-keyframes spin { + 0% { + -ms-transform: rotate(0deg); + } + 100% { + -ms-transform: rotate(359deg); + } +} +@keyframes spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(359deg); + } +} +/* Icon rotations and mirroring */ +.icon-rotate-90:before { + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -ms-transform: rotate(90deg); + -o-transform: rotate(90deg); + transform: rotate(90deg); + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); +} +.icon-rotate-180:before { + -webkit-transform: rotate(180deg); + -moz-transform: rotate(180deg); + -ms-transform: rotate(180deg); + -o-transform: rotate(180deg); + transform: rotate(180deg); + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); +} +.icon-rotate-270:before { + -webkit-transform: rotate(270deg); + -moz-transform: rotate(270deg); + -ms-transform: rotate(270deg); + -o-transform: rotate(270deg); + transform: rotate(270deg); + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); +} +.icon-flip-horizontal:before { + -webkit-transform: scale(-1, 1); + -moz-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + -o-transform: scale(-1, 1); + transform: scale(-1, 1); +} +.icon-flip-vertical:before { + -webkit-transform: scale(1, -1); + -moz-transform: scale(1, -1); + -ms-transform: scale(1, -1); + -o-transform: scale(1, -1); + transform: scale(1, -1); +} +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +.icon-glass:before { + content: "\f000"; +} +.icon-music:before { + content: "\f001"; +} +.icon-search:before { + content: "\f002"; +} +.icon-envelope:before { + content: "\f003"; +} +.icon-heart:before { + content: "\f004"; +} +.icon-star:before { + content: "\f005"; +} +.icon-star-empty:before { + content: "\f006"; +} +.icon-user:before { + content: "\f007"; +} +.icon-film:before { + content: "\f008"; +} +.icon-th-large:before { + content: "\f009"; +} +.icon-th:before { + content: "\f00a"; +} +.icon-th-list:before { + content: "\f00b"; +} +.icon-ok:before { + content: "\f00c"; +} +.icon-remove:before { + content: "\f00d"; +} +.icon-zoom-in:before { + content: "\f00e"; +} +.icon-zoom-out:before { + content: "\f010"; +} +.icon-off:before { + content: "\f011"; +} +.icon-signal:before { + content: "\f012"; +} +.icon-cog:before { + content: "\f013"; +} +.icon-trash:before { + content: "\f014"; +} +.icon-home:before { + content: "\f015"; +} +.icon-file:before { + content: "\f016"; +} +.icon-time:before { + content: "\f017"; +} +.icon-road:before { + content: "\f018"; +} +.icon-download-alt:before { + content: "\f019"; +} +.icon-download:before { + content: "\f01a"; +} +.icon-upload:before { + content: "\f01b"; +} +.icon-inbox:before { + content: "\f01c"; +} +.icon-play-circle:before { + content: "\f01d"; +} +.icon-repeat:before, +.icon-rotate-right:before { + content: "\f01e"; +} +/* F020 doesn't work in Safari. all shifted one down */ +.icon-refresh:before { + content: "\f021"; +} +.icon-list-alt:before { + content: "\f022"; +} +.icon-lock:before { + content: "\f023"; +} +.icon-flag:before { + content: "\f024"; +} +.icon-headphones:before { + content: "\f025"; +} +.icon-volume-off:before { + content: "\f026"; +} +.icon-volume-down:before { + content: "\f027"; +} +.icon-volume-up:before { + content: "\f028"; +} +.icon-qrcode:before { + content: "\f029"; +} +.icon-barcode:before { + content: "\f02a"; +} +.icon-tag:before { + content: "\f02b"; +} +.icon-tags:before { + content: "\f02c"; +} +.icon-book:before { + content: "\f02d"; +} +.icon-bookmark:before { + content: "\f02e"; +} +.icon-print:before { + content: "\f02f"; +} +.icon-camera:before { + content: "\f030"; +} +.icon-font:before { + content: "\f031"; +} +.icon-bold:before { + content: "\f032"; +} +.icon-italic:before { + content: "\f033"; +} +.icon-text-height:before { + content: "\f034"; +} +.icon-text-width:before { + content: "\f035"; +} +.icon-align-left:before { + content: "\f036"; +} +.icon-align-center:before { + content: "\f037"; +} +.icon-align-right:before { + content: "\f038"; +} +.icon-align-justify:before { + content: "\f039"; +} +.icon-list:before { + content: "\f03a"; +} +.icon-indent-left:before { + content: "\f03b"; +} +.icon-indent-right:before { + content: "\f03c"; +} +.icon-facetime-video:before { + content: "\f03d"; +} +.icon-picture:before { + content: "\f03e"; +} +.icon-pencil:before { + content: "\f040"; +} +.icon-map-marker:before { + content: "\f041"; +} +.icon-adjust:before { + content: "\f042"; +} +.icon-tint:before { + content: "\f043"; +} +.icon-edit:before { + content: "\f044"; +} +.icon-share:before { + content: "\f045"; +} +.icon-check:before { + content: "\f046"; +} +.icon-move:before { + content: "\f047"; +} +.icon-step-backward:before { + content: "\f048"; +} +.icon-fast-backward:before { + content: "\f049"; +} +.icon-backward:before { + content: "\f04a"; +} +.icon-play:before { + content: "\f04b"; +} +.icon-pause:before { + content: "\f04c"; +} +.icon-stop:before { + content: "\f04d"; +} +.icon-forward:before { + content: "\f04e"; +} +.icon-fast-forward:before { + content: "\f050"; +} +.icon-step-forward:before { + content: "\f051"; +} +.icon-eject:before { + content: "\f052"; +} +.icon-chevron-left:before { + content: "\f053"; +} +.icon-chevron-right:before { + content: "\f054"; +} +.icon-plus-sign:before { + content: "\f055"; +} +.icon-minus-sign:before { + content: "\f056"; +} +.icon-remove-sign:before { + content: "\f057"; +} +.icon-ok-sign:before { + content: "\f058"; +} +.icon-question-sign:before { + content: "\f059"; +} +.icon-info-sign:before { + content: "\f05a"; +} +.icon-screenshot:before { + content: "\f05b"; +} +.icon-remove-circle:before { + content: "\f05c"; +} +.icon-ok-circle:before { + content: "\f05d"; +} +.icon-ban-circle:before { + content: "\f05e"; +} +.icon-arrow-left:before { + content: "\f060"; +} +.icon-arrow-right:before { + content: "\f061"; +} +.icon-arrow-up:before { + content: "\f062"; +} +.icon-arrow-down:before { + content: "\f063"; +} +.icon-share-alt:before, +.icon-mail-forward:before { + content: "\f064"; +} +.icon-resize-full:before { + content: "\f065"; +} +.icon-resize-small:before { + content: "\f066"; +} +.icon-plus:before { + content: "\f067"; +} +.icon-minus:before { + content: "\f068"; +} +.icon-asterisk:before { + content: "\f069"; +} +.icon-exclamation-sign:before { + content: "\f06a"; +} +.icon-gift:before { + content: "\f06b"; +} +.icon-leaf:before { + content: "\f06c"; +} +.icon-fire:before { + content: "\f06d"; +} +.icon-eye-open:before { + content: "\f06e"; +} +.icon-eye-close:before { + content: "\f070"; +} +.icon-warning-sign:before { + content: "\f071"; +} +.icon-plane:before { + content: "\f072"; +} +.icon-calendar:before { + content: "\f073"; +} +.icon-random:before { + content: "\f074"; +} +.icon-comment:before { + content: "\f075"; +} +.icon-magnet:before { + content: "\f076"; +} +.icon-chevron-up:before { + content: "\f077"; +} +.icon-chevron-down:before { + content: "\f078"; +} +.icon-retweet:before { + content: "\f079"; +} +.icon-shopping-cart:before { + content: "\f07a"; +} +.icon-folder-close:before { + content: "\f07b"; +} +.icon-folder-open:before { + content: "\f07c"; +} +.icon-resize-vertical:before { + content: "\f07d"; +} +.icon-resize-horizontal:before { + content: "\f07e"; +} +.icon-bar-chart:before { + content: "\f080"; +} +.icon-twitter-sign:before { + content: "\f081"; +} +.icon-facebook-sign:before { + content: "\f082"; +} +.icon-camera-retro:before { + content: "\f083"; +} +.icon-key:before { + content: "\f084"; +} +.icon-cogs:before { + content: "\f085"; +} +.icon-comments:before { + content: "\f086"; +} +.icon-thumbs-up:before { + content: "\f087"; +} +.icon-thumbs-down:before { + content: "\f088"; +} +.icon-star-half:before { + content: "\f089"; +} +.icon-heart-empty:before { + content: "\f08a"; +} +.icon-signout:before { + content: "\f08b"; +} +.icon-linkedin-sign:before { + content: "\f08c"; +} +.icon-pushpin:before { + content: "\f08d"; +} +.icon-external-link:before { + content: "\f08e"; +} +.icon-signin:before { + content: "\f090"; +} +.icon-trophy:before { + content: "\f091"; +} +.icon-github-sign:before { + content: "\f092"; +} +.icon-upload-alt:before { + content: "\f093"; +} +.icon-lemon:before { + content: "\f094"; +} +.icon-phone:before { + content: "\f095"; +} +.icon-check-empty:before { + content: "\f096"; +} +.icon-bookmark-empty:before { + content: "\f097"; +} +.icon-phone-sign:before { + content: "\f098"; +} +.icon-twitter:before { + content: "\f099"; +} +.icon-facebook:before { + content: "\f09a"; +} +.icon-github:before { + content: "\f09b"; +} +.icon-unlock:before { + content: "\f09c"; +} +.icon-credit-card:before { + content: "\f09d"; +} +.icon-rss:before { + content: "\f09e"; +} +.icon-hdd:before { + content: "\f0a0"; +} +.icon-bullhorn:before { + content: "\f0a1"; +} +.icon-bell:before { + content: "\f0a2"; +} +.icon-certificate:before { + content: "\f0a3"; +} +.icon-hand-right:before { + content: "\f0a4"; +} +.icon-hand-left:before { + content: "\f0a5"; +} +.icon-hand-up:before { + content: "\f0a6"; +} +.icon-hand-down:before { + content: "\f0a7"; +} +.icon-circle-arrow-left:before { + content: "\f0a8"; +} +.icon-circle-arrow-right:before { + content: "\f0a9"; +} +.icon-circle-arrow-up:before { + content: "\f0aa"; +} +.icon-circle-arrow-down:before { + content: "\f0ab"; +} +.icon-globe:before { + content: "\f0ac"; +} +.icon-wrench:before { + content: "\f0ad"; +} +.icon-tasks:before { + content: "\f0ae"; +} +.icon-filter:before { + content: "\f0b0"; +} +.icon-briefcase:before { + content: "\f0b1"; +} +.icon-fullscreen:before { + content: "\f0b2"; +} +.icon-group:before { + content: "\f0c0"; +} +.icon-link:before { + content: "\f0c1"; +} +.icon-cloud:before { + content: "\f0c2"; +} +.icon-beaker:before { + content: "\f0c3"; +} +.icon-cut:before { + content: "\f0c4"; +} +.icon-copy:before { + content: "\f0c5"; +} +.icon-paper-clip:before { + content: "\f0c6"; +} +.icon-save:before { + content: "\f0c7"; +} +.icon-sign-blank:before { + content: "\f0c8"; +} +.icon-reorder:before { + content: "\f0c9"; +} +.icon-list-ul:before { + content: "\f0ca"; +} +.icon-list-ol:before { + content: "\f0cb"; +} +.icon-strikethrough:before { + content: "\f0cc"; +} +.icon-underline:before { + content: "\f0cd"; +} +.icon-table:before { + content: "\f0ce"; +} +.icon-magic:before { + content: "\f0d0"; +} +.icon-truck:before { + content: "\f0d1"; +} +.icon-pinterest:before { + content: "\f0d2"; +} +.icon-pinterest-sign:before { + content: "\f0d3"; +} +.icon-google-plus-sign:before { + content: "\f0d4"; +} +.icon-google-plus:before { + content: "\f0d5"; +} +.icon-money:before { + content: "\f0d6"; +} +.icon-caret-down:before { + content: "\f0d7"; +} +.icon-caret-up:before { + content: "\f0d8"; +} +.icon-caret-left:before { + content: "\f0d9"; +} +.icon-caret-right:before { + content: "\f0da"; +} +.icon-columns:before { + content: "\f0db"; +} +.icon-sort:before { + content: "\f0dc"; +} +.icon-sort-down:before { + content: "\f0dd"; +} +.icon-sort-up:before { + content: "\f0de"; +} +.icon-envelope-alt:before { + content: "\f0e0"; +} +.icon-linkedin:before { + content: "\f0e1"; +} +.icon-undo:before, +.icon-rotate-left:before { + content: "\f0e2"; +} +.icon-legal:before { + content: "\f0e3"; +} +.icon-dashboard:before { + content: "\f0e4"; +} +.icon-comment-alt:before { + content: "\f0e5"; +} +.icon-comments-alt:before { + content: "\f0e6"; +} +.icon-bolt:before { + content: "\f0e7"; +} +.icon-sitemap:before { + content: "\f0e8"; +} +.icon-umbrella:before { + content: "\f0e9"; +} +.icon-paste:before { + content: "\f0ea"; +} +.icon-lightbulb:before { + content: "\f0eb"; +} +.icon-exchange:before { + content: "\f0ec"; +} +.icon-cloud-download:before { + content: "\f0ed"; +} +.icon-cloud-upload:before { + content: "\f0ee"; +} +.icon-user-md:before { + content: "\f0f0"; +} +.icon-stethoscope:before { + content: "\f0f1"; +} +.icon-suitcase:before { + content: "\f0f2"; +} +.icon-bell-alt:before { + content: "\f0f3"; +} +.icon-coffee:before { + content: "\f0f4"; +} +.icon-food:before { + content: "\f0f5"; +} +.icon-file-alt:before { + content: "\f0f6"; +} +.icon-building:before { + content: "\f0f7"; +} +.icon-hospital:before { + content: "\f0f8"; +} +.icon-ambulance:before { + content: "\f0f9"; +} +.icon-medkit:before { + content: "\f0fa"; +} +.icon-fighter-jet:before { + content: "\f0fb"; +} +.icon-beer:before { + content: "\f0fc"; +} +.icon-h-sign:before { + content: "\f0fd"; +} +.icon-plus-sign-alt:before { + content: "\f0fe"; +} +.icon-double-angle-left:before { + content: "\f100"; +} +.icon-double-angle-right:before { + content: "\f101"; +} +.icon-double-angle-up:before { + content: "\f102"; +} +.icon-double-angle-down:before { + content: "\f103"; +} +.icon-angle-left:before { + content: "\f104"; +} +.icon-angle-right:before { + content: "\f105"; +} +.icon-angle-up:before { + content: "\f106"; +} +.icon-angle-down:before { + content: "\f107"; +} +.icon-desktop:before { + content: "\f108"; +} +.icon-laptop:before { + content: "\f109"; +} +.icon-tablet:before { + content: "\f10a"; +} +.icon-mobile-phone:before { + content: "\f10b"; +} +.icon-circle-blank:before { + content: "\f10c"; +} +.icon-quote-left:before { + content: "\f10d"; +} +.icon-quote-right:before { + content: "\f10e"; +} +.icon-spinner:before { + content: "\f110"; +} +.icon-circle:before { + content: "\f111"; +} +.icon-reply:before, +.icon-mail-reply:before { + content: "\f112"; +} +.icon-folder-close-alt:before { + content: "\f114"; +} +.icon-folder-open-alt:before { + content: "\f115"; +} +.icon-expand-alt:before { + content: "\f116"; +} +.icon-collapse-alt:before { + content: "\f117"; +} +.icon-smile:before { + content: "\f118"; +} +.icon-frown:before { + content: "\f119"; +} +.icon-meh:before { + content: "\f11a"; +} +.icon-gamepad:before { + content: "\f11b"; +} +.icon-keyboard:before { + content: "\f11c"; +} +.icon-flag-alt:before { + content: "\f11d"; +} +.icon-flag-checkered:before { + content: "\f11e"; +} +.icon-terminal:before { + content: "\f120"; +} +.icon-code:before { + content: "\f121"; +} +.icon-reply-all:before { + content: "\f122"; +} +.icon-mail-reply-all:before { + content: "\f122"; +} +.icon-star-half-full:before, +.icon-star-half-empty:before { + content: "\f123"; +} +.icon-location-arrow:before { + content: "\f124"; +} +.icon-crop:before { + content: "\f125"; +} +.icon-code-fork:before { + content: "\f126"; +} +.icon-unlink:before { + content: "\f127"; +} +.icon-question:before { + content: "\f128"; +} +.icon-info:before { + content: "\f129"; +} +.icon-exclamation:before { + content: "\f12a"; +} +.icon-superscript:before { + content: "\f12b"; +} +.icon-subscript:before { + content: "\f12c"; +} +.icon-eraser:before { + content: "\f12d"; +} +.icon-puzzle-piece:before { + content: "\f12e"; +} +.icon-microphone:before { + content: "\f130"; +} +.icon-microphone-off:before { + content: "\f131"; +} +.icon-shield:before { + content: "\f132"; +} +.icon-calendar-empty:before { + content: "\f133"; +} +.icon-fire-extinguisher:before { + content: "\f134"; +} +.icon-rocket:before { + content: "\f135"; +} +.icon-maxcdn:before { + content: "\f136"; +} +.icon-chevron-sign-left:before { + content: "\f137"; +} +.icon-chevron-sign-right:before { + content: "\f138"; +} +.icon-chevron-sign-up:before { + content: "\f139"; +} +.icon-chevron-sign-down:before { + content: "\f13a"; +} +.icon-html5:before { + content: "\f13b"; +} +.icon-css3:before { + content: "\f13c"; +} +.icon-anchor:before { + content: "\f13d"; +} +.icon-unlock-alt:before { + content: "\f13e"; +} +.icon-bullseye:before { + content: "\f140"; +} +.icon-ellipsis-horizontal:before { + content: "\f141"; +} +.icon-ellipsis-vertical:before { + content: "\f142"; +} +.icon-rss-sign:before { + content: "\f143"; +} +.icon-play-sign:before { + content: "\f144"; +} +.icon-ticket:before { + content: "\f145"; +} +.icon-minus-sign-alt:before { + content: "\f146"; +} +.icon-check-minus:before { + content: "\f147"; +} +.icon-level-up:before { + content: "\f148"; +} +.icon-level-down:before { + content: "\f149"; +} +.icon-check-sign:before { + content: "\f14a"; +} +.icon-edit-sign:before { + content: "\f14b"; +} +.icon-external-link-sign:before { + content: "\f14c"; +} +.icon-share-sign:before { + content: "\f14d"; +} diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/ng-docs.css b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/ng-docs.css new file mode 100644 index 00000000..721cc818 --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/ng-docs.css @@ -0,0 +1,372 @@ +/* Home Page Styles */ +.home { + text-align: center; +} + +.home h1 { + font-size: 30px; + font-weight: 300; + padding-top: 20px; + margin: 22px 0 0; +} + +.home img { + width: 320px; + border: 1px solid #3bb1dc; + border-radius: 200px; +} + +.home h3 { + margin-top: 40px; + margin-bottom: 40px; + line-height: 35px; +} + +.home ul { + margin-top: 20px; + list-style: none; +} + +.home ul li{ + display: inline-block; + padding: 0 10px; +} + +.home ul li + li{ + border-left: 1px solid #bbb; +} + +.navbar img { + padding-right: 20px; + height: 35px; + width: 57px; + margin-top: 8px; + margin-right: 0px; +} + +.navbar img+.brand { + padding: 10px 20px 10px 10px; +} + +.navbar-inverse .navbar-brand { + color: #fff; + padding: 15px 20px 15px 0; + text-transform: uppercase; +} + +.clear-navbar { + margin-top: 60px; +} + +.footer { + padding-top: 2em; + background-color: #333; + color: white; + padding-bottom: 2em; +} + +.spacer { + height: 1em; +} + +.icon-cog { + line-height: 13px; +} + +/* this is here to avoid the display=block shuffling of ngShow */ +.breadcrumb li > * { + float: none; + margin: 0; +} + +.breadcrumb { + padding-top: 6px; + padding-bottom: 0; + line-height: 18px +} + +/* =============================== */ + +.form-search { + margin-right: 10px; +} + +.form-search .search-query { + width: 180px; + width: 200px \9; +} + +.form-search .dropdown-menu { + margin-left: 10px; +} + +.form-search .code { + font-family: monospace; + font-weight: bold; + font-size: 13px; + color: black; + overflow: hidden; + text-overflow: ellipsis; +} + +.form-search > ul.nav > li > a { + margin: 0; +} + +.form-search > ul.nav > li.module { + background-color: #d3d3d3; +} + +.form-search > ul.nav > li.section { + background-color: #ebebeb; + min-height: 23px; +} + +.form-search > ul.nav > li.first { + padding-top: 6px; +} + +.form-search > ul.nav > li.last { + padding-bottom: 6px; +} + +.form-search > ul.nav > li.last + li.api-list-item { + margin-top: -6px; + padding-bottom: 6px; +} + +.form-search .well { + border-color: #d3d3d3; + padding: 0; + margin-bottom: 15px; +} + +.form-search .well .nav-header { + text-transform: none; + padding: 3px 1px; + margin: 0; +} + +.form-search .well .nav-header a { + text-transform: none; + color: black; +} +.form-search .well .nav-header a:hover { + background-color: inherit; +} + +.form-search .well li { + line-height: 14px; +} + +.form-search .well li a:focus { + outline: none; +} + +.form-search .well .guide { + float: right; + padding-top: 0; + color: gray; +} + +.form-search .module .guide { + line-height: 20px; + padding-top: 6px; +} + +.docs-search { + margin: 10px 0; + padding: 4px 0 4px 20px; + background: #fff; + border: 1px solid #bbb; + vertical-align: middle; +} + +.docs-search > .search-query { + font-size: 14px; + border: 0; + width: 80%; + color: #555; +} + +.docs-search > .search-icon { + font-size: 15px; + margin-right: 10px; +} + +.docs-search > .search-query:focus { + outline:0; +} + +.match > a, .nav > .match > a:hover { + background-color: #dbeaf4; +} + +/* =============================== */ +/* Content */ +/* =============================== */ + +.edit-example { + margin-top: 9px; +} + +.improve-docs, .view-source, .edit-example { + float: right; + margin-left: 35px; + position: relative; +} + +.improve-docs i, .view-source i, .edit-example i { + position: absolute; + left: -20px; + top: 50%; + margin-top: -.5em; + text-decoration: none !important; +} + +.methods .view-source { + margin: -0.5em 0 0 0; + text-decoration: none !important; +} + +.hint { + font-size: .6em; + color: #c0c0c0; + display: block; +} + +.content code { + background-color: inherit; + color: inherit; + border: none; + padding: 0; + font-size: inherit; + font-family: monospace; +} + +ul.parameters > li > p, +.returns > p { + display: inline; +} + +ul.methods > li, +ul.properties > li, +ul.events > li { + list-style: none; + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #eee; + border: 1px solid rgba(0, 0, 0, 0.05); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} + +.member.method > h2, +.member.property > h2, +.member.event > h2 { + margin-bottom: .5em; +} + +ul.methods > li > h3, +ul.properties > li > h3, +ul.events > li > h3 { + margin: -19px -19px 1em -19px; + padding: .25em 39px .25em 19px; + background-color: #d3d3d3; + font-family: monospace; +} + +.center { + display: block; + margin: 2em auto; +} + +.diagram { + display: block; + margin: 2em auto; + padding: 1em; + border: 1px solid black; + + -moz-box-shadow: 4px 4px 6px #48577D; + -webkit-box-shadow: 4px 4px 6px #48577D; + box-shadow: 4px 4px 6px #48577D; + + -moz-border-radius: 15px; + -webkit-border-radius: 15px; + border-radius: 15px; +} + +.tutorial-nav { + margin-left: 175px; + color: black; + margin-top: 2em; + margin-bottom: 2em; +} + +.tutorial-nav a { + color: white; +} + +.tutorial-nav a:hover { + color: white; + text-decoration: none; +} + +.clear { + clear: both; +} + +.variables-matrix td { + vertical-align:top; + padding:5px; +} + +.type-hint { + display:inline-block; +} + +.variables-matrix .type-hint { + text-align:center; + display:block; + min-width:60px; +} + +.type-hint + .type-hint { + margin-top:5px; +} + +.type-hint-string { + background:#3a87ad; +} + +.type-hint-object { + background:#999; +} + +.type-hint-array { + background:#F90;; +} + +.type-hint-boolean { + background:rgb(18, 131, 39); +} + +.type-hint-number { + background:rgb(189, 63, 66); +} + +.type-hint-function { + background-color: #003399; +} + +.type-hint-deprecated { + background-color: #cc0000; +} + + diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/patternfly-additions.css b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/patternfly-additions.css new file mode 100644 index 00000000..4d63d5df --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/patternfly-additions.css @@ -0,0 +1,6901 @@ +/* PatternFly additions to Bootstrap */ +@media (min-width: 768px) { + .form-search .combobox-container, + .form-inline .combobox-container { + display: inline-block; + margin-bottom: 0; + vertical-align: top; + } + .form-search .combobox-container .input-group-addon, + .form-inline .combobox-container .input-group-addon { + width: auto; + } +} +.combobox-selected .caret { + display: none; +} +/* :not doesn't work in IE8 */ +.combobox-container:not(.combobox-selected) .glyphicon-remove { + display: none; +} +.typeahead-long { + max-height: 300px; + overflow-y: auto; +} +.control-group.error .combobox-container .add-on { + color: #B94A48; + border-color: #B94A48; +} +.control-group.error .combobox-container .caret { + border-top-color: #B94A48; +} +.control-group.warning .combobox-container .add-on { + color: #C09853; + border-color: #C09853; +} +.control-group.warning .combobox-container .caret { + border-top-color: #C09853; +} +.control-group.success .combobox-container .add-on { + color: #468847; + border-color: #468847; +} +.control-group.success .combobox-container .caret { + border-top-color: #468847; +} +.datepicker { + border-radius: 1px; + direction: ltr; +} +.datepicker-inline { + width: 220px; +} +.datepicker.datepicker-rtl { + direction: rtl; +} +.datepicker.datepicker-rtl table tr td span { + float: right; +} +.datepicker-dropdown { + top: 0; + left: 0; + padding: 4px; +} +.datepicker-dropdown:before { + content: ''; + display: inline-block; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid #bbb; + border-top: 0; + border-bottom-color: rgba(0, 0, 0, 0.2); + position: absolute; +} +.datepicker-dropdown:after { + content: ''; + display: inline-block; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid #fff; + border-top: 0; + position: absolute; +} +.datepicker-dropdown.datepicker-orient-left:before { + left: 6px; +} +.datepicker-dropdown.datepicker-orient-left:after { + left: 7px; +} +.datepicker-dropdown.datepicker-orient-right:before { + right: 6px; +} +.datepicker-dropdown.datepicker-orient-right:after { + right: 7px; +} +.datepicker-dropdown.datepicker-orient-bottom:before { + top: -7px; +} +.datepicker-dropdown.datepicker-orient-bottom:after { + top: -6px; +} +.datepicker-dropdown.datepicker-orient-top:before { + bottom: -7px; + border-bottom: 0; + border-top: 7px solid #bbb; +} +.datepicker-dropdown.datepicker-orient-top:after { + bottom: -6px; + border-bottom: 0; + border-top: 6px solid #fff; +} +.datepicker table { + margin: 0; + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.datepicker table tr td, +.datepicker table tr th { + text-align: center; + width: 30px; + height: 30px; + border-radius: 4px; + border: none; +} +.table-striped .datepicker table tr td, +.table-striped .datepicker table tr th { + background-color: transparent; +} +.datepicker table tr td.old, +.datepicker table tr td.new { + color: #9c9c9c; +} +.datepicker table tr td.day:hover, +.datepicker table tr td.focused { + background: #f1f1f1; + cursor: pointer; +} +.datepicker table tr td.disabled, +.datepicker table tr td.disabled:hover { + background: none; + color: #9c9c9c; + cursor: default; +} +.datepicker table tr td.highlighted { + color: #000; + background-color: #d9edf7; + border-color: #85c5e5; + border-radius: 0; +} +.datepicker table tr td.highlighted:focus, +.datepicker table tr td.highlighted.focus { + color: #000; + background-color: #afd9ee; + border-color: #298fc2; +} +.datepicker table tr td.highlighted:hover { + color: #000; + background-color: #afd9ee; + border-color: #52addb; +} +.datepicker table tr td.highlighted:active, +.datepicker table tr td.highlighted.active, +.open > .dropdown-toggle.datepicker table tr td.highlighted { + color: #000; + background-color: #afd9ee; + border-color: #52addb; +} +.datepicker table tr td.highlighted:active:hover, +.datepicker table tr td.highlighted.active:hover, +.open > .dropdown-toggle.datepicker table tr td.highlighted:hover, +.datepicker table tr td.highlighted:active:focus, +.datepicker table tr td.highlighted.active:focus, +.open > .dropdown-toggle.datepicker table tr td.highlighted:focus, +.datepicker table tr td.highlighted:active.focus, +.datepicker table tr td.highlighted.active.focus, +.open > .dropdown-toggle.datepicker table tr td.highlighted.focus { + color: #000; + background-color: #91cbe8; + border-color: #298fc2; +} +.datepicker table tr td.highlighted:active, +.datepicker table tr td.highlighted.active, +.open > .dropdown-toggle.datepicker table tr td.highlighted { + background-image: none; +} +.datepicker table tr td.highlighted.disabled:hover, +.datepicker table tr td.highlighted[disabled]:hover, +fieldset[disabled] .datepicker table tr td.highlighted:hover, +.datepicker table tr td.highlighted.disabled:focus, +.datepicker table tr td.highlighted[disabled]:focus, +fieldset[disabled] .datepicker table tr td.highlighted:focus, +.datepicker table tr td.highlighted.disabled.focus, +.datepicker table tr td.highlighted[disabled].focus, +fieldset[disabled] .datepicker table tr td.highlighted.focus { + background-color: #d9edf7; + border-color: #85c5e5; +} +.datepicker table tr td.highlighted .badge { + color: #d9edf7; + background-color: #000; +} +.datepicker table tr td.highlighted.focused { + background: #afd9ee; +} +.datepicker table tr td.highlighted.disabled, +.datepicker table tr td.highlighted.disabled:active { + background: #d9edf7; + color: #9c9c9c; +} +.datepicker table tr td.today { + color: #000; + background-color: #ffdb99; + border-color: #ffb733; +} +.datepicker table tr td.today:focus, +.datepicker table tr td.today.focus { + color: #000; + background-color: #ffc966; + border-color: #b37400; +} +.datepicker table tr td.today:hover { + color: #000; + background-color: #ffc966; + border-color: #f59e00; +} +.datepicker table tr td.today:active, +.datepicker table tr td.today.active, +.open > .dropdown-toggle.datepicker table tr td.today { + color: #000; + background-color: #ffc966; + border-color: #f59e00; +} +.datepicker table tr td.today:active:hover, +.datepicker table tr td.today.active:hover, +.open > .dropdown-toggle.datepicker table tr td.today:hover, +.datepicker table tr td.today:active:focus, +.datepicker table tr td.today.active:focus, +.open > .dropdown-toggle.datepicker table tr td.today:focus, +.datepicker table tr td.today:active.focus, +.datepicker table tr td.today.active.focus, +.open > .dropdown-toggle.datepicker table tr td.today.focus { + color: #000; + background-color: #ffbc42; + border-color: #b37400; +} +.datepicker table tr td.today:active, +.datepicker table tr td.today.active, +.open > .dropdown-toggle.datepicker table tr td.today { + background-image: none; +} +.datepicker table tr td.today.disabled:hover, +.datepicker table tr td.today[disabled]:hover, +fieldset[disabled] .datepicker table tr td.today:hover, +.datepicker table tr td.today.disabled:focus, +.datepicker table tr td.today[disabled]:focus, +fieldset[disabled] .datepicker table tr td.today:focus, +.datepicker table tr td.today.disabled.focus, +.datepicker table tr td.today[disabled].focus, +fieldset[disabled] .datepicker table tr td.today.focus { + background-color: #ffdb99; + border-color: #ffb733; +} +.datepicker table tr td.today .badge { + color: #ffdb99; + background-color: #000; +} +.datepicker table tr td.today.focused { + background: #ffc966; +} +.datepicker table tr td.today.disabled, +.datepicker table tr td.today.disabled:active { + background: #ffdb99; + color: #9c9c9c; +} +.datepicker table tr td.range { + color: #000; + background-color: #f1f1f1; + border-color: #bebebe; + border-radius: 0; +} +.datepicker table tr td.range:focus, +.datepicker table tr td.range.focus { + color: #000; + background-color: #d8d8d8; + border-color: #7f7f7f; +} +.datepicker table tr td.range:hover { + color: #000; + background-color: #d8d8d8; + border-color: #a0a0a0; +} +.datepicker table tr td.range:active, +.datepicker table tr td.range.active, +.open > .dropdown-toggle.datepicker table tr td.range { + color: #000; + background-color: #d8d8d8; + border-color: #a0a0a0; +} +.datepicker table tr td.range:active:hover, +.datepicker table tr td.range.active:hover, +.open > .dropdown-toggle.datepicker table tr td.range:hover, +.datepicker table tr td.range:active:focus, +.datepicker table tr td.range.active:focus, +.open > .dropdown-toggle.datepicker table tr td.range:focus, +.datepicker table tr td.range:active.focus, +.datepicker table tr td.range.active.focus, +.open > .dropdown-toggle.datepicker table tr td.range.focus { + color: #000; + background-color: #c6c6c6; + border-color: #7f7f7f; +} +.datepicker table tr td.range:active, +.datepicker table tr td.range.active, +.open > .dropdown-toggle.datepicker table tr td.range { + background-image: none; +} +.datepicker table tr td.range.disabled:hover, +.datepicker table tr td.range[disabled]:hover, +fieldset[disabled] .datepicker table tr td.range:hover, +.datepicker table tr td.range.disabled:focus, +.datepicker table tr td.range[disabled]:focus, +fieldset[disabled] .datepicker table tr td.range:focus, +.datepicker table tr td.range.disabled.focus, +.datepicker table tr td.range[disabled].focus, +fieldset[disabled] .datepicker table tr td.range.focus { + background-color: #f1f1f1; + border-color: #bebebe; +} +.datepicker table tr td.range .badge { + color: #f1f1f1; + background-color: #000; +} +.datepicker table tr td.range.focused { + background: #d8d8d8; +} +.datepicker table tr td.range.disabled, +.datepicker table tr td.range.disabled:active { + background: #f1f1f1; + color: #9c9c9c; +} +.datepicker table tr td.range.highlighted { + color: #000; + background-color: #e5eff4; + border-color: #9dc3d6; +} +.datepicker table tr td.range.highlighted:focus, +.datepicker table tr td.range.highlighted.focus { + color: #000; + background-color: #c1d9e5; + border-color: #488bac; +} +.datepicker table tr td.range.highlighted:hover { + color: #000; + background-color: #c1d9e5; + border-color: #72a9c4; +} +.datepicker table tr td.range.highlighted:active, +.datepicker table tr td.range.highlighted.active, +.open > .dropdown-toggle.datepicker table tr td.range.highlighted { + color: #000; + background-color: #c1d9e5; + border-color: #72a9c4; +} +.datepicker table tr td.range.highlighted:active:hover, +.datepicker table tr td.range.highlighted.active:hover, +.open > .dropdown-toggle.datepicker table tr td.range.highlighted:hover, +.datepicker table tr td.range.highlighted:active:focus, +.datepicker table tr td.range.highlighted.active:focus, +.open > .dropdown-toggle.datepicker table tr td.range.highlighted:focus, +.datepicker table tr td.range.highlighted:active.focus, +.datepicker table tr td.range.highlighted.active.focus, +.open > .dropdown-toggle.datepicker table tr td.range.highlighted.focus { + color: #000; + background-color: #a8cadb; + border-color: #488bac; +} +.datepicker table tr td.range.highlighted:active, +.datepicker table tr td.range.highlighted.active, +.open > .dropdown-toggle.datepicker table tr td.range.highlighted { + background-image: none; +} +.datepicker table tr td.range.highlighted.disabled:hover, +.datepicker table tr td.range.highlighted[disabled]:hover, +fieldset[disabled] .datepicker table tr td.range.highlighted:hover, +.datepicker table tr td.range.highlighted.disabled:focus, +.datepicker table tr td.range.highlighted[disabled]:focus, +fieldset[disabled] .datepicker table tr td.range.highlighted:focus, +.datepicker table tr td.range.highlighted.disabled.focus, +.datepicker table tr td.range.highlighted[disabled].focus, +fieldset[disabled] .datepicker table tr td.range.highlighted.focus { + background-color: #e5eff4; + border-color: #9dc3d6; +} +.datepicker table tr td.range.highlighted .badge { + color: #e5eff4; + background-color: #000; +} +.datepicker table tr td.range.highlighted.focused { + background: #c1d9e5; +} +.datepicker table tr td.range.highlighted.disabled, +.datepicker table tr td.range.highlighted.disabled:active { + background: #e5eff4; + color: #9c9c9c; +} +.datepicker table tr td.range.today { + color: #000; + background-color: #f8cb79; + border-color: #f3a618; +} +.datepicker table tr td.range.today:focus, +.datepicker table tr td.range.today.focus { + color: #000; + background-color: #f6b848; + border-color: #855807; +} +.datepicker table tr td.range.today:hover { + color: #000; + background-color: #f6b848; + border-color: #c4820a; +} +.datepicker table tr td.range.today:active, +.datepicker table tr td.range.today.active, +.open > .dropdown-toggle.datepicker table tr td.range.today { + color: #000; + background-color: #f6b848; + border-color: #c4820a; +} +.datepicker table tr td.range.today:active:hover, +.datepicker table tr td.range.today.active:hover, +.open > .dropdown-toggle.datepicker table tr td.range.today:hover, +.datepicker table tr td.range.today:active:focus, +.datepicker table tr td.range.today.active:focus, +.open > .dropdown-toggle.datepicker table tr td.range.today:focus, +.datepicker table tr td.range.today:active.focus, +.datepicker table tr td.range.today.active.focus, +.open > .dropdown-toggle.datepicker table tr td.range.today.focus { + color: #000; + background-color: #f4ab26; + border-color: #855807; +} +.datepicker table tr td.range.today:active, +.datepicker table tr td.range.today.active, +.open > .dropdown-toggle.datepicker table tr td.range.today { + background-image: none; +} +.datepicker table tr td.range.today.disabled:hover, +.datepicker table tr td.range.today[disabled]:hover, +fieldset[disabled] .datepicker table tr td.range.today:hover, +.datepicker table tr td.range.today.disabled:focus, +.datepicker table tr td.range.today[disabled]:focus, +fieldset[disabled] .datepicker table tr td.range.today:focus, +.datepicker table tr td.range.today.disabled.focus, +.datepicker table tr td.range.today[disabled].focus, +fieldset[disabled] .datepicker table tr td.range.today.focus { + background-color: #f8cb79; + border-color: #f3a618; +} +.datepicker table tr td.range.today .badge { + color: #f8cb79; + background-color: #000; +} +.datepicker table tr td.range.today.disabled, +.datepicker table tr td.range.today.disabled:active { + background: #f8cb79; + color: #9c9c9c; +} +.datepicker table tr td.selected, +.datepicker table tr td.selected.highlighted { + color: #fff; + background-color: #9c9c9c; + border-color: #555555; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.datepicker table tr td.selected:focus, +.datepicker table tr td.selected.highlighted:focus, +.datepicker table tr td.selected.focus, +.datepicker table tr td.selected.highlighted.focus { + color: #fff; + background-color: #838383; + border-color: #161616; +} +.datepicker table tr td.selected:hover, +.datepicker table tr td.selected.highlighted:hover { + color: #fff; + background-color: #838383; + border-color: #373737; +} +.datepicker table tr td.selected:active, +.datepicker table tr td.selected.highlighted:active, +.datepicker table tr td.selected.active, +.datepicker table tr td.selected.highlighted.active, +.open > .dropdown-toggle.datepicker table tr td.selected, +.open > .dropdown-toggle.datepicker table tr td.selected.highlighted { + color: #fff; + background-color: #838383; + border-color: #373737; +} +.datepicker table tr td.selected:active:hover, +.datepicker table tr td.selected.highlighted:active:hover, +.datepicker table tr td.selected.active:hover, +.datepicker table tr td.selected.highlighted.active:hover, +.open > .dropdown-toggle.datepicker table tr td.selected:hover, +.open > .dropdown-toggle.datepicker table tr td.selected.highlighted:hover, +.datepicker table tr td.selected:active:focus, +.datepicker table tr td.selected.highlighted:active:focus, +.datepicker table tr td.selected.active:focus, +.datepicker table tr td.selected.highlighted.active:focus, +.open > .dropdown-toggle.datepicker table tr td.selected:focus, +.open > .dropdown-toggle.datepicker table tr td.selected.highlighted:focus, +.datepicker table tr td.selected:active.focus, +.datepicker table tr td.selected.highlighted:active.focus, +.datepicker table tr td.selected.active.focus, +.datepicker table tr td.selected.highlighted.active.focus, +.open > .dropdown-toggle.datepicker table tr td.selected.focus, +.open > .dropdown-toggle.datepicker table tr td.selected.highlighted.focus { + color: #fff; + background-color: #717171; + border-color: #161616; +} +.datepicker table tr td.selected:active, +.datepicker table tr td.selected.highlighted:active, +.datepicker table tr td.selected.active, +.datepicker table tr td.selected.highlighted.active, +.open > .dropdown-toggle.datepicker table tr td.selected, +.open > .dropdown-toggle.datepicker table tr td.selected.highlighted { + background-image: none; +} +.datepicker table tr td.selected.disabled:hover, +.datepicker table tr td.selected.highlighted.disabled:hover, +.datepicker table tr td.selected[disabled]:hover, +.datepicker table tr td.selected.highlighted[disabled]:hover, +fieldset[disabled] .datepicker table tr td.selected:hover, +fieldset[disabled] .datepicker table tr td.selected.highlighted:hover, +.datepicker table tr td.selected.disabled:focus, +.datepicker table tr td.selected.highlighted.disabled:focus, +.datepicker table tr td.selected[disabled]:focus, +.datepicker table tr td.selected.highlighted[disabled]:focus, +fieldset[disabled] .datepicker table tr td.selected:focus, +fieldset[disabled] .datepicker table tr td.selected.highlighted:focus, +.datepicker table tr td.selected.disabled.focus, +.datepicker table tr td.selected.highlighted.disabled.focus, +.datepicker table tr td.selected[disabled].focus, +.datepicker table tr td.selected.highlighted[disabled].focus, +fieldset[disabled] .datepicker table tr td.selected.focus, +fieldset[disabled] .datepicker table tr td.selected.highlighted.focus { + background-color: #9c9c9c; + border-color: #555555; +} +.datepicker table tr td.selected .badge, +.datepicker table tr td.selected.highlighted .badge { + color: #9c9c9c; + background-color: #fff; +} +.datepicker table tr td.active, +.datepicker table tr td.active.highlighted { + color: #fff; + background-color: #0088ce; + border-color: #00659c; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.datepicker table tr td.active:focus, +.datepicker table tr td.active.highlighted:focus, +.datepicker table tr td.active.focus, +.datepicker table tr td.active.highlighted.focus { + color: #fff; + background-color: #00669b; + border-color: #00121d; +} +.datepicker table tr td.active:hover, +.datepicker table tr td.active.highlighted:hover { + color: #fff; + background-color: #00669b; + border-color: #003d5f; +} +.datepicker table tr td.active:active, +.datepicker table tr td.active.highlighted:active, +.datepicker table tr td.active.active, +.datepicker table tr td.active.highlighted.active, +.open > .dropdown-toggle.datepicker table tr td.active, +.open > .dropdown-toggle.datepicker table tr td.active.highlighted { + color: #fff; + background-color: #00669b; + border-color: #003d5f; +} +.datepicker table tr td.active:active:hover, +.datepicker table tr td.active.highlighted:active:hover, +.datepicker table tr td.active.active:hover, +.datepicker table tr td.active.highlighted.active:hover, +.open > .dropdown-toggle.datepicker table tr td.active:hover, +.open > .dropdown-toggle.datepicker table tr td.active.highlighted:hover, +.datepicker table tr td.active:active:focus, +.datepicker table tr td.active.highlighted:active:focus, +.datepicker table tr td.active.active:focus, +.datepicker table tr td.active.highlighted.active:focus, +.open > .dropdown-toggle.datepicker table tr td.active:focus, +.open > .dropdown-toggle.datepicker table tr td.active.highlighted:focus, +.datepicker table tr td.active:active.focus, +.datepicker table tr td.active.highlighted:active.focus, +.datepicker table tr td.active.active.focus, +.datepicker table tr td.active.highlighted.active.focus, +.open > .dropdown-toggle.datepicker table tr td.active.focus, +.open > .dropdown-toggle.datepicker table tr td.active.highlighted.focus { + color: #fff; + background-color: #004f77; + border-color: #00121d; +} +.datepicker table tr td.active:active, +.datepicker table tr td.active.highlighted:active, +.datepicker table tr td.active.active, +.datepicker table tr td.active.highlighted.active, +.open > .dropdown-toggle.datepicker table tr td.active, +.open > .dropdown-toggle.datepicker table tr td.active.highlighted { + background-image: none; +} +.datepicker table tr td.active.disabled:hover, +.datepicker table tr td.active.highlighted.disabled:hover, +.datepicker table tr td.active[disabled]:hover, +.datepicker table tr td.active.highlighted[disabled]:hover, +fieldset[disabled] .datepicker table tr td.active:hover, +fieldset[disabled] .datepicker table tr td.active.highlighted:hover, +.datepicker table tr td.active.disabled:focus, +.datepicker table tr td.active.highlighted.disabled:focus, +.datepicker table tr td.active[disabled]:focus, +.datepicker table tr td.active.highlighted[disabled]:focus, +fieldset[disabled] .datepicker table tr td.active:focus, +fieldset[disabled] .datepicker table tr td.active.highlighted:focus, +.datepicker table tr td.active.disabled.focus, +.datepicker table tr td.active.highlighted.disabled.focus, +.datepicker table tr td.active[disabled].focus, +.datepicker table tr td.active.highlighted[disabled].focus, +fieldset[disabled] .datepicker table tr td.active.focus, +fieldset[disabled] .datepicker table tr td.active.highlighted.focus { + background-color: #0088ce; + border-color: #00659c; +} +.datepicker table tr td.active .badge, +.datepicker table tr td.active.highlighted .badge { + color: #0088ce; + background-color: #fff; +} +.datepicker table tr td span { + display: block; + width: 23%; + height: 54px; + line-height: 54px; + float: left; + margin: 1%; + cursor: pointer; + border-radius: 4px; +} +.datepicker table tr td span:hover, +.datepicker table tr td span.focused { + background: #f1f1f1; +} +.datepicker table tr td span.disabled, +.datepicker table tr td span.disabled:hover { + background: none; + color: #9c9c9c; + cursor: default; +} +.datepicker table tr td span.active, +.datepicker table tr td span.active:hover, +.datepicker table tr td span.active.disabled, +.datepicker table tr td span.active.disabled:hover { + color: #fff; + background-color: #0088ce; + border-color: #00659c; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.datepicker table tr td span.active:focus, +.datepicker table tr td span.active:hover:focus, +.datepicker table tr td span.active.disabled:focus, +.datepicker table tr td span.active.disabled:hover:focus, +.datepicker table tr td span.active.focus, +.datepicker table tr td span.active:hover.focus, +.datepicker table tr td span.active.disabled.focus, +.datepicker table tr td span.active.disabled:hover.focus { + color: #fff; + background-color: #00669b; + border-color: #00121d; +} +.datepicker table tr td span.active:hover, +.datepicker table tr td span.active:hover:hover, +.datepicker table tr td span.active.disabled:hover, +.datepicker table tr td span.active.disabled:hover:hover { + color: #fff; + background-color: #00669b; + border-color: #003d5f; +} +.datepicker table tr td span.active:active, +.datepicker table tr td span.active:hover:active, +.datepicker table tr td span.active.disabled:active, +.datepicker table tr td span.active.disabled:hover:active, +.datepicker table tr td span.active.active, +.datepicker table tr td span.active:hover.active, +.datepicker table tr td span.active.disabled.active, +.datepicker table tr td span.active.disabled:hover.active, +.open > .dropdown-toggle.datepicker table tr td span.active, +.open > .dropdown-toggle.datepicker table tr td span.active:hover, +.open > .dropdown-toggle.datepicker table tr td span.active.disabled, +.open > .dropdown-toggle.datepicker table tr td span.active.disabled:hover { + color: #fff; + background-color: #00669b; + border-color: #003d5f; +} +.datepicker table tr td span.active:active:hover, +.datepicker table tr td span.active:hover:active:hover, +.datepicker table tr td span.active.disabled:active:hover, +.datepicker table tr td span.active.disabled:hover:active:hover, +.datepicker table tr td span.active.active:hover, +.datepicker table tr td span.active:hover.active:hover, +.datepicker table tr td span.active.disabled.active:hover, +.datepicker table tr td span.active.disabled:hover.active:hover, +.open > .dropdown-toggle.datepicker table tr td span.active:hover, +.open > .dropdown-toggle.datepicker table tr td span.active:hover:hover, +.open > .dropdown-toggle.datepicker table tr td span.active.disabled:hover, +.open > .dropdown-toggle.datepicker table tr td span.active.disabled:hover:hover, +.datepicker table tr td span.active:active:focus, +.datepicker table tr td span.active:hover:active:focus, +.datepicker table tr td span.active.disabled:active:focus, +.datepicker table tr td span.active.disabled:hover:active:focus, +.datepicker table tr td span.active.active:focus, +.datepicker table tr td span.active:hover.active:focus, +.datepicker table tr td span.active.disabled.active:focus, +.datepicker table tr td span.active.disabled:hover.active:focus, +.open > .dropdown-toggle.datepicker table tr td span.active:focus, +.open > .dropdown-toggle.datepicker table tr td span.active:hover:focus, +.open > .dropdown-toggle.datepicker table tr td span.active.disabled:focus, +.open > .dropdown-toggle.datepicker table tr td span.active.disabled:hover:focus, +.datepicker table tr td span.active:active.focus, +.datepicker table tr td span.active:hover:active.focus, +.datepicker table tr td span.active.disabled:active.focus, +.datepicker table tr td span.active.disabled:hover:active.focus, +.datepicker table tr td span.active.active.focus, +.datepicker table tr td span.active:hover.active.focus, +.datepicker table tr td span.active.disabled.active.focus, +.datepicker table tr td span.active.disabled:hover.active.focus, +.open > .dropdown-toggle.datepicker table tr td span.active.focus, +.open > .dropdown-toggle.datepicker table tr td span.active:hover.focus, +.open > .dropdown-toggle.datepicker table tr td span.active.disabled.focus, +.open > .dropdown-toggle.datepicker table tr td span.active.disabled:hover.focus { + color: #fff; + background-color: #004f77; + border-color: #00121d; +} +.datepicker table tr td span.active:active, +.datepicker table tr td span.active:hover:active, +.datepicker table tr td span.active.disabled:active, +.datepicker table tr td span.active.disabled:hover:active, +.datepicker table tr td span.active.active, +.datepicker table tr td span.active:hover.active, +.datepicker table tr td span.active.disabled.active, +.datepicker table tr td span.active.disabled:hover.active, +.open > .dropdown-toggle.datepicker table tr td span.active, +.open > .dropdown-toggle.datepicker table tr td span.active:hover, +.open > .dropdown-toggle.datepicker table tr td span.active.disabled, +.open > .dropdown-toggle.datepicker table tr td span.active.disabled:hover { + background-image: none; +} +.datepicker table tr td span.active.disabled:hover, +.datepicker table tr td span.active:hover.disabled:hover, +.datepicker table tr td span.active.disabled.disabled:hover, +.datepicker table tr td span.active.disabled:hover.disabled:hover, +.datepicker table tr td span.active[disabled]:hover, +.datepicker table tr td span.active:hover[disabled]:hover, +.datepicker table tr td span.active.disabled[disabled]:hover, +.datepicker table tr td span.active.disabled:hover[disabled]:hover, +fieldset[disabled] .datepicker table tr td span.active:hover, +fieldset[disabled] .datepicker table tr td span.active:hover:hover, +fieldset[disabled] .datepicker table tr td span.active.disabled:hover, +fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover, +.datepicker table tr td span.active.disabled:focus, +.datepicker table tr td span.active:hover.disabled:focus, +.datepicker table tr td span.active.disabled.disabled:focus, +.datepicker table tr td span.active.disabled:hover.disabled:focus, +.datepicker table tr td span.active[disabled]:focus, +.datepicker table tr td span.active:hover[disabled]:focus, +.datepicker table tr td span.active.disabled[disabled]:focus, +.datepicker table tr td span.active.disabled:hover[disabled]:focus, +fieldset[disabled] .datepicker table tr td span.active:focus, +fieldset[disabled] .datepicker table tr td span.active:hover:focus, +fieldset[disabled] .datepicker table tr td span.active.disabled:focus, +fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus, +.datepicker table tr td span.active.disabled.focus, +.datepicker table tr td span.active:hover.disabled.focus, +.datepicker table tr td span.active.disabled.disabled.focus, +.datepicker table tr td span.active.disabled:hover.disabled.focus, +.datepicker table tr td span.active[disabled].focus, +.datepicker table tr td span.active:hover[disabled].focus, +.datepicker table tr td span.active.disabled[disabled].focus, +.datepicker table tr td span.active.disabled:hover[disabled].focus, +fieldset[disabled] .datepicker table tr td span.active.focus, +fieldset[disabled] .datepicker table tr td span.active:hover.focus, +fieldset[disabled] .datepicker table tr td span.active.disabled.focus, +fieldset[disabled] .datepicker table tr td span.active.disabled:hover.focus { + background-color: #0088ce; + border-color: #00659c; +} +.datepicker table tr td span.active .badge, +.datepicker table tr td span.active:hover .badge, +.datepicker table tr td span.active.disabled .badge, +.datepicker table tr td span.active.disabled:hover .badge { + color: #0088ce; + background-color: #fff; +} +.datepicker table tr td span.old, +.datepicker table tr td span.new { + color: #9c9c9c; +} +.datepicker .datepicker-switch { + width: 145px; +} +.datepicker .datepicker-switch, +.datepicker .prev, +.datepicker .next, +.datepicker tfoot tr th { + cursor: pointer; +} +.datepicker .datepicker-switch:hover, +.datepicker .prev:hover, +.datepicker .next:hover, +.datepicker tfoot tr th:hover { + background: #f1f1f1; +} +.datepicker .cw { + font-size: 10px; + width: 12px; + padding: 0 2px 0 5px; + vertical-align: middle; +} +.input-group.date .input-group-addon { + cursor: pointer; +} +.input-daterange { + width: 100%; +} +.input-daterange input { + text-align: center; +} +.input-daterange input:first-child { + border-radius: 3px 0 0 3px; +} +.input-daterange input:last-child { + border-radius: 0 3px 3px 0; +} +.input-daterange .input-group-addon { + width: auto; + min-width: 16px; + padding: 4px 5px; + line-height: 1.66666667; + text-shadow: 0 1px 0 #fff; + border-width: 1px 0; + margin-left: -5px; + margin-right: -5px; +} +select.bs-select-hidden, +select.selectpicker { + display: none !important; +} +.bootstrap-select { + width: 220px \0; + /*IE9 and below*/ +} +.bootstrap-select > .dropdown-toggle { + width: 100%; + padding-right: 25px; + z-index: 1; +} +.bootstrap-select > select { + position: absolute !important; + bottom: 0; + left: 50%; + display: block !important; + width: 0.5px !important; + height: 100% !important; + padding: 0 !important; + opacity: 0 !important; + border: none; +} +.bootstrap-select > select.mobile-device { + top: 0; + left: 0; + display: block !important; + width: 100% !important; + z-index: 2; +} +.has-error .bootstrap-select .dropdown-toggle, +.error .bootstrap-select .dropdown-toggle { + border-color: #b94a48; +} +.bootstrap-select.fit-width { + width: auto !important; +} +.bootstrap-select:not([class*="col-"]):not([class*="form-control"]):not(.input-group-btn) { + width: 220px; +} +.bootstrap-select .dropdown-toggle:focus { + outline: thin dotted #333333 !important; + outline: 5px auto -webkit-focus-ring-color !important; + outline-offset: -2px; +} +.bootstrap-select.form-control { + margin-bottom: 0; + padding: 0; + border: none; +} +.bootstrap-select.form-control:not([class*="col-"]) { + width: 100%; +} +.bootstrap-select.form-control.input-group-btn { + z-index: auto; +} +.bootstrap-select.btn-group:not(.input-group-btn), +.bootstrap-select.btn-group[class*="col-"] { + float: none; + display: inline-block; + margin-left: 0; +} +.bootstrap-select.btn-group.dropdown-menu-right, +.bootstrap-select.btn-group[class*="col-"].dropdown-menu-right, +.row .bootstrap-select.btn-group[class*="col-"].dropdown-menu-right { + float: right; +} +.form-inline .bootstrap-select.btn-group, +.form-horizontal .bootstrap-select.btn-group, +.form-group .bootstrap-select.btn-group { + margin-bottom: 0; +} +.form-group-lg .bootstrap-select.btn-group.form-control, +.form-group-sm .bootstrap-select.btn-group.form-control { + padding: 0; +} +.form-inline .bootstrap-select.btn-group .form-control { + width: 100%; +} +.bootstrap-select.btn-group.disabled, +.bootstrap-select.btn-group > .disabled { + cursor: not-allowed; +} +.bootstrap-select.btn-group.disabled:focus, +.bootstrap-select.btn-group > .disabled:focus { + outline: none !important; +} +.bootstrap-select.btn-group.bs-container { + position: absolute; +} +.bootstrap-select.btn-group.bs-container .dropdown-menu { + z-index: 1060; +} +.bootstrap-select.btn-group .dropdown-toggle .filter-option { + display: inline-block; + overflow: hidden; + width: 100%; + text-align: left; +} +.bootstrap-select.btn-group .dropdown-toggle .caret { + position: absolute; + top: 50%; + right: 12px; + margin-top: -2px; + vertical-align: middle; +} +.bootstrap-select.btn-group[class*="col-"] .dropdown-toggle { + width: 100%; +} +.bootstrap-select.btn-group .dropdown-menu { + min-width: 100%; + box-sizing: border-box; +} +.bootstrap-select.btn-group .dropdown-menu.inner { + position: static; + float: none; + border: 0; + padding: 0; + margin: 0; + border-radius: 0; + box-shadow: none; +} +.bootstrap-select.btn-group .dropdown-menu li { + position: relative; +} +.bootstrap-select.btn-group .dropdown-menu li.active small { + color: #fff; +} +.bootstrap-select.btn-group .dropdown-menu li.disabled a { + cursor: not-allowed; +} +.bootstrap-select.btn-group .dropdown-menu li a { + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.bootstrap-select.btn-group .dropdown-menu li a.opt { + position: relative; + padding-left: 2.25em; +} +.bootstrap-select.btn-group .dropdown-menu li a span.check-mark { + display: none; +} +.bootstrap-select.btn-group .dropdown-menu li a span.text { + display: inline-block; +} +.bootstrap-select.btn-group .dropdown-menu li small { + padding-left: 0.5em; +} +.bootstrap-select.btn-group .dropdown-menu .notify { + position: absolute; + bottom: 5px; + width: 96%; + margin: 0 2%; + min-height: 26px; + padding: 3px 5px; + background: #f5f5f5; + border: 1px solid #e3e3e3; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + pointer-events: none; + opacity: 0.9; + box-sizing: border-box; +} +.bootstrap-select.btn-group .no-results { + padding: 3px; + background: #f5f5f5; + margin: 0 5px; + white-space: nowrap; +} +.bootstrap-select.btn-group.fit-width .dropdown-toggle .filter-option { + position: static; +} +.bootstrap-select.btn-group.fit-width .dropdown-toggle .caret { + position: static; + top: auto; + margin-top: -1px; +} +.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a span.check-mark { + position: absolute; + display: inline-block; + right: 15px; + margin-top: 5px; +} +.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text { + margin-right: 34px; +} +.bootstrap-select.show-menu-arrow.open > .dropdown-toggle { + z-index: 1061; +} +.bootstrap-select.show-menu-arrow .dropdown-toggle:before { + content: ''; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid rgba(204, 204, 204, 0.2); + position: absolute; + bottom: -4px; + left: 9px; + display: none; +} +.bootstrap-select.show-menu-arrow .dropdown-toggle:after { + content: ''; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid white; + position: absolute; + bottom: -4px; + left: 10px; + display: none; +} +.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before { + bottom: auto; + top: -3px; + border-top: 7px solid rgba(204, 204, 204, 0.2); + border-bottom: 0; +} +.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after { + bottom: auto; + top: -3px; + border-top: 6px solid white; + border-bottom: 0; +} +.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before { + right: 12px; + left: auto; +} +.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after { + right: 13px; + left: auto; +} +.bootstrap-select.show-menu-arrow.open > .dropdown-toggle:before, +.bootstrap-select.show-menu-arrow.open > .dropdown-toggle:after { + display: block; +} +.bs-searchbox, +.bs-actionsbox, +.bs-donebutton { + padding: 4px 8px; +} +.bs-actionsbox { + width: 100%; + box-sizing: border-box; +} +.bs-actionsbox .btn-group button { + width: 50%; +} +.bs-donebutton { + float: left; + width: 100%; + box-sizing: border-box; +} +.bs-donebutton .btn-group button { + width: 100%; +} +.bs-searchbox + .bs-actionsbox { + padding: 0 8px 4px; +} +.bs-searchbox .form-control { + margin-bottom: 0; + width: 100%; + float: none; +} +.bootstrap-switch { + display: inline-block; + direction: ltr; + cursor: pointer; + border-radius: 1px; + border: 1px solid; + border-color: #bbb; + position: relative; + text-align: left; + overflow: hidden; + line-height: 8px; + z-index: 0; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + vertical-align: middle; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; +} +.bootstrap-switch .bootstrap-switch-container { + display: inline-block; + top: 0; + border-radius: 1px; + transform: translate3d(0, 0, 0); +} +.bootstrap-switch .bootstrap-switch-handle-on, +.bootstrap-switch .bootstrap-switch-handle-off, +.bootstrap-switch .bootstrap-switch-label { + box-sizing: border-box; + cursor: pointer; + display: inline-block !important; + height: 100%; + padding: 2px 6px; + font-size: 12px; + line-height: 20px; +} +.bootstrap-switch .bootstrap-switch-handle-on, +.bootstrap-switch .bootstrap-switch-handle-off { + text-align: center; + z-index: 1; +} +.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary, +.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary { + color: #fff; + background: #0088ce; +} +.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info, +.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info { + color: #fff; + background: #00659c; +} +.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success, +.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success { + color: #fff; + background: #3f9c35; +} +.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning, +.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning { + background: #ec7a08; + color: #fff; +} +.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger, +.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger { + color: #fff; + background: #a30000; +} +.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default, +.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default { + color: #000; + background: #f1f1f1; +} +.bootstrap-switch .bootstrap-switch-label { + text-align: center; + margin-top: -1px; + margin-bottom: -1px; + z-index: 100; + color: #4d5258; + background: #f1f1f1; +} +.bootstrap-switch .bootstrap-switch-handle-on { + border-bottom-left-radius: 1px - 1; + border-top-left-radius: 1px - 1; +} +.bootstrap-switch .bootstrap-switch-handle-off { + border-bottom-right-radius: 1px - 1; + border-top-right-radius: 1px - 1; +} +.bootstrap-switch input[type='radio'], +.bootstrap-switch input[type='checkbox'] { + position: absolute !important; + top: 0; + left: 0; + opacity: 0; + filter: alpha(opacity=0); + z-index: -1; +} +.bootstrap-switch input[type='radio'].form-control, +.bootstrap-switch input[type='checkbox'].form-control { + height: auto; +} +.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-on, +.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-off, +.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-label { + padding: 1px 5px; + font-size: 11px; + line-height: 1.5; +} +.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-on, +.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-off, +.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-label { + padding: 2px 6px; + font-size: 11px; + line-height: 1.5; +} +.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-on, +.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-off, +.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-label { + padding: 2px 10px; + font-size: 14px; + line-height: 1.3333333; +} +.bootstrap-switch.bootstrap-switch-disabled, +.bootstrap-switch.bootstrap-switch-readonly, +.bootstrap-switch.bootstrap-switch-indeterminate { + cursor: default !important; +} +.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-on, +.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-on, +.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-on, +.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-off, +.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-off, +.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-off, +.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-label, +.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-label, +.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-label { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: default !important; +} +.bootstrap-switch.bootstrap-switch-animate .bootstrap-switch-container { + transition: margin-left 0.5s; +} +.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-on { + border-bottom-left-radius: 0; + border-top-left-radius: 0; + border-bottom-right-radius: 1px - 1; + border-top-right-radius: 1px - 1; +} +.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-off { + border-bottom-right-radius: 0; + border-top-right-radius: 0; + border-bottom-left-radius: 1px - 1; + border-top-left-radius: 1px - 1; +} +.bootstrap-switch.bootstrap-switch-focused { + border-color: #0088ce; + outline: 0; + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(0, 136, 206, 0.6); +} +.bootstrap-switch.bootstrap-switch-on .bootstrap-switch-label, +.bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-off .bootstrap-switch-label { + border-bottom-right-radius: 1px - 1; + border-top-right-radius: 1px - 1; +} +.bootstrap-switch.bootstrap-switch-off .bootstrap-switch-label, +.bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-on .bootstrap-switch-label { + border-bottom-left-radius: 1px - 1; + border-top-left-radius: 1px - 1; +} +/* + * Bootstrap TouchSpin - v3.1.1 + * A mobile and touch friendly input spinner component for Bootstrap 3. + * http://www.virtuosoft.eu/code/bootstrap-touchspin/ + * + * Made by István Ujj-Mészáros + * Under Apache License v2.0 License + */ +.bootstrap-touchspin .input-group-btn-vertical { + position: relative; + white-space: nowrap; + width: 1%; + vertical-align: middle; + display: table-cell; +} +.bootstrap-touchspin .input-group-btn-vertical > .btn { + display: block; + float: none; + width: 100%; + max-width: 100%; + padding: 8px 10px; + margin-left: -1px; + position: relative; +} +.bootstrap-touchspin .input-group-btn-vertical .bootstrap-touchspin-up { + border-radius: 0; + border-top-right-radius: 4px; +} +.bootstrap-touchspin .input-group-btn-vertical .bootstrap-touchspin-down { + margin-top: -2px; + border-radius: 0; + border-bottom-right-radius: 4px; +} +.bootstrap-touchspin .input-group-btn-vertical i { + position: absolute; + top: 3px; + left: 5px; + font-size: 9px; + font-weight: normal; +} +/*-- Chart --*/ +.c3 svg { + font: 10px sans-serif; + -webkit-tap-highlight-color: transparent; +} +.c3 path, +.c3 line { + fill: none; + stroke: #000; +} +.c3 text { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.c3-legend-item-tile, +.c3-xgrid-focus, +.c3-ygrid, +.c3-event-rect, +.c3-bars path { + shape-rendering: crispEdges; +} +.c3-chart-arc path { + stroke: #fff; +} +.c3-chart-arc text { + fill: #fff; + font-size: 13px; +} +/*-- Axis --*/ +/*-- Grid --*/ +.c3-grid line { + stroke: #aaa; +} +.c3-grid text { + fill: #aaa; +} +.c3-xgrid, +.c3-ygrid { + stroke-dasharray: 3 3; +} +/*-- Text on Chart --*/ +.c3-text.c3-empty { + fill: #808080; + font-size: 2em; +} +/*-- Line --*/ +.c3-line { + stroke-width: 1px; +} +/*-- Point --*/ +.c3-circle._expanded_ { + stroke-width: 1px; + stroke: white; +} +.c3-selected-circle { + fill: white; + stroke-width: 2px; +} +/*-- Bar --*/ +.c3-bar { + stroke-width: 0; +} +.c3-bar._expanded_ { + fill-opacity: 0.75; +} +/*-- Focus --*/ +.c3-target.c3-focused { + opacity: 1; +} +.c3-target.c3-focused path.c3-line, +.c3-target.c3-focused path.c3-step { + stroke-width: 2px; +} +.c3-target.c3-defocused { + opacity: 0.3 !important; +} +/*-- Region --*/ +.c3-region { + fill: steelblue; + fill-opacity: .1; +} +/*-- Brush --*/ +.c3-brush .extent { + fill-opacity: .1; +} +/*-- Select - Drag --*/ +/*-- Legend --*/ +.c3-legend-item { + font-size: 12px; +} +.c3-legend-item-hidden { + opacity: 0.15; +} +.c3-legend-background { + opacity: 0.75; + fill: white; + stroke: lightgray; + stroke-width: 1; +} +/*-- Title --*/ +.c3-title { + font: 14px sans-serif; +} +/*-- Tooltip --*/ +.c3-tooltip-container { + z-index: 10; +} +.c3-tooltip { + border-collapse: collapse; + border-spacing: 0; + background-color: #fff; + empty-cells: show; + box-shadow: 7px 7px 12px -9px #777777; + opacity: 0.9; +} +.c3-tooltip tr { + border: 1px solid #CCC; +} +.c3-tooltip th { + background-color: #aaa; + font-size: 14px; + padding: 2px 5px; + text-align: left; + color: #FFF; +} +.c3-tooltip td { + font-size: 13px; + padding: 3px 6px; + background-color: #fff; + border-left: 1px dotted #999; +} +.c3-tooltip td > span { + display: inline-block; + width: 10px; + height: 10px; + margin-right: 6px; +} +.c3-tooltip td.value { + text-align: right; +} +/*-- Area --*/ +.c3-area { + stroke-width: 0; + opacity: 0.2; +} +/*-- Arc --*/ +.c3-chart-arcs-title { + dominant-baseline: middle; + font-size: 1.3em; +} +.c3-chart-arcs .c3-chart-arcs-background { + fill: #e0e0e0; + stroke: none; +} +.c3-chart-arcs .c3-chart-arcs-gauge-unit { + fill: #000; + font-size: 16px; +} +.c3-chart-arcs .c3-chart-arcs-gauge-max { + fill: #777; +} +.c3-chart-arcs .c3-chart-arcs-gauge-min { + fill: #777; +} +.c3-chart-arc .c3-gauge-value { + fill: #000; + /* font-size: 28px !important;*/ +} +/*! + * Datetimepicker for Bootstrap 3 + * version : 4.15.35 + * https://github.com/Eonasdan/bootstrap-datetimepicker/ + */ +.bootstrap-datetimepicker-widget { + list-style: none; +} +.bootstrap-datetimepicker-widget.dropdown-menu { + margin: 2px 0; + padding: 4px; + width: 19em; +} +@media (min-width: 768px) { + .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs { + width: 38em; + } +} +@media (min-width: 992px) { + .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs { + width: 38em; + } +} +@media (min-width: 1200px) { + .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs { + width: 38em; + } +} +.bootstrap-datetimepicker-widget.dropdown-menu:before, +.bootstrap-datetimepicker-widget.dropdown-menu:after { + content: ''; + display: inline-block; + position: absolute; +} +.bootstrap-datetimepicker-widget.dropdown-menu.bottom:before { + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-bottom-color: rgba(0, 0, 0, 0.2); + top: -7px; + left: 7px; +} +.bootstrap-datetimepicker-widget.dropdown-menu.bottom:after { + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid white; + top: -6px; + left: 8px; +} +.bootstrap-datetimepicker-widget.dropdown-menu.top:before { + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-top: 7px solid #ccc; + border-top-color: rgba(0, 0, 0, 0.2); + bottom: -7px; + left: 6px; +} +.bootstrap-datetimepicker-widget.dropdown-menu.top:after { + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-top: 6px solid white; + bottom: -6px; + left: 7px; +} +.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:before { + left: auto; + right: 6px; +} +.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:after { + left: auto; + right: 7px; +} +.bootstrap-datetimepicker-widget .list-unstyled { + margin: 0; +} +.bootstrap-datetimepicker-widget a[data-action] { + padding: 6px 0; +} +.bootstrap-datetimepicker-widget a[data-action]:active { + box-shadow: none; +} +.bootstrap-datetimepicker-widget .timepicker-hour, +.bootstrap-datetimepicker-widget .timepicker-minute, +.bootstrap-datetimepicker-widget .timepicker-second { + width: 54px; + font-weight: bold; + font-size: 1em; + margin: 0; +} +.bootstrap-datetimepicker-widget button[data-action] { + padding: 6px; +} +.bootstrap-datetimepicker-widget .btn[data-action="incrementHours"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Increment Hours"; + content: "Increment Hours"; +} +.bootstrap-datetimepicker-widget .btn[data-action="incrementMinutes"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Increment Minutes"; + content: "Increment Minutes"; +} +.bootstrap-datetimepicker-widget .btn[data-action="decrementHours"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Decrement Hours"; + content: "Decrement Hours"; +} +.bootstrap-datetimepicker-widget .btn[data-action="decrementMinutes"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Decrement Minutes"; + content: "Decrement Minutes"; +} +.bootstrap-datetimepicker-widget .btn[data-action="showHours"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Show Hours"; +} +.bootstrap-datetimepicker-widget .btn[data-action="showMinutes"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Show Minutes"; +} +.bootstrap-datetimepicker-widget .btn[data-action="togglePeriod"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Toggle AM/PM"; +} +.bootstrap-datetimepicker-widget .btn[data-action="clear"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Clear the picker"; +} +.bootstrap-datetimepicker-widget .btn[data-action="today"]::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Set the date to today"; +} +.bootstrap-datetimepicker-widget .picker-switch { + text-align: center; +} +.bootstrap-datetimepicker-widget .picker-switch::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Toggle Date and Time Screens"; +} +.bootstrap-datetimepicker-widget .picker-switch td { + padding: 0; + margin: 0; + height: auto; + width: auto; + line-height: inherit; +} +.bootstrap-datetimepicker-widget .picker-switch td span { + line-height: 2.5; + height: 2.5em; + width: 100%; +} +.bootstrap-datetimepicker-widget table { + width: 100%; + margin: 0; +} +.bootstrap-datetimepicker-widget table td, +.bootstrap-datetimepicker-widget table th { + text-align: center; + border-radius: 1px; +} +.bootstrap-datetimepicker-widget table th { + height: 20px; + line-height: 20px; + width: 20px; +} +.bootstrap-datetimepicker-widget table th.picker-switch { + width: 145px; +} +.bootstrap-datetimepicker-widget table th.disabled, +.bootstrap-datetimepicker-widget table th.disabled:hover { + background: none; + color: #9c9c9c; + cursor: not-allowed; +} +.bootstrap-datetimepicker-widget table th.prev::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Previous Month"; +} +.bootstrap-datetimepicker-widget table th.next::after { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; + content: "Next Month"; +} +.bootstrap-datetimepicker-widget table thead tr:first-child th { + cursor: pointer; +} +.bootstrap-datetimepicker-widget table thead tr:first-child th:hover { + background: transparent; +} +.bootstrap-datetimepicker-widget table td { + height: 54px; + line-height: 54px; + width: 54px; +} +.bootstrap-datetimepicker-widget table td.cw { + font-size: .8em; + height: 20px; + line-height: 20px; + color: #9c9c9c; +} +.bootstrap-datetimepicker-widget table td.day { + height: 20px; + line-height: 20px; + width: 20px; +} +.bootstrap-datetimepicker-widget table td.day:hover, +.bootstrap-datetimepicker-widget table td.hour:hover, +.bootstrap-datetimepicker-widget table td.minute:hover, +.bootstrap-datetimepicker-widget table td.second:hover { + background: transparent; + cursor: pointer; +} +.bootstrap-datetimepicker-widget table td.old, +.bootstrap-datetimepicker-widget table td.new { + color: #9c9c9c; +} +.bootstrap-datetimepicker-widget table td.today { + position: relative; +} +.bootstrap-datetimepicker-widget table td.today:before { + content: ''; + display: inline-block; + border: solid transparent; + border-width: 0 0 7px 7px; + border-bottom-color: #0088ce; + border-top-color: rgba(0, 0, 0, 0.2); + position: absolute; + bottom: 4px; + right: 4px; +} +.bootstrap-datetimepicker-widget table td.active, +.bootstrap-datetimepicker-widget table td.active:hover { + background-color: #0088ce; + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.bootstrap-datetimepicker-widget table td.active.today:before { + border-bottom-color: #fff; +} +.bootstrap-datetimepicker-widget table td.disabled, +.bootstrap-datetimepicker-widget table td.disabled:hover { + background: none; + color: #9c9c9c; + cursor: not-allowed; +} +.bootstrap-datetimepicker-widget table td span { + display: inline-block; + width: 54px; + height: 54px; + line-height: 54px; + margin: 2px 1.5px; + cursor: pointer; + border-radius: 1px; +} +.bootstrap-datetimepicker-widget table td span:hover { + background: transparent; +} +.bootstrap-datetimepicker-widget table td span.active { + background-color: #0088ce; + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.bootstrap-datetimepicker-widget table td span.old { + color: #9c9c9c; +} +.bootstrap-datetimepicker-widget table td span.disabled, +.bootstrap-datetimepicker-widget table td span.disabled:hover { + background: none; + color: #9c9c9c; + cursor: not-allowed; +} +.bootstrap-datetimepicker-widget.usetwentyfour td.hour { + height: 27px; + line-height: 27px; +} +.bootstrap-datetimepicker-widget.wider { + width: 21em; +} +.bootstrap-datetimepicker-widget .datepicker-decades .decade { + line-height: 1.8em !important; +} +.input-group.date .input-group-addon { + cursor: pointer; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.about-modal-pf { + background-color: #292e34; + background-image: url("../img/bg-modal-about-pf.png"); + background-position: right bottom; + background-repeat: no-repeat; + background-size: 216px auto; +} +@media (min-width: 768px) { + .about-modal-pf { + background-size: auto; + } +} +.about-modal-pf .modal-body { + color: #fff; + padding-bottom: 16px; + padding-left: 40px; + padding-right: 40px; +} +@media (min-width: 768px) { + .about-modal-pf .modal-body { + padding-left: 80px; + padding-right: 80px; + } +} +.about-modal-pf .modal-header { + background-color: transparent; +} +.about-modal-pf .pficon-close { + color: #fff; +} +.product-versions-pf { + margin-bottom: 30px; + margin-top: 30px; +} +.product-versions-pf li strong { + margin-right: 10px; +} +.trademark-pf { + font-size: 11px; +} +.blank-slate-pf { + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: 1px; + margin-bottom: 20px; + padding: 30px; + text-align: center; +} +@media (min-width: 768px) { + .blank-slate-pf { + padding: 60px 60px; + } +} +@media (min-width: 992px) { + .blank-slate-pf { + padding: 90px 120px; + } +} +.blank-slate-pf .blank-slate-pf-icon { + color: #9c9c9c; + font-size: 57.6px; + line-height: 57.6px; +} +.blank-slate-pf .blank-slate-pf-main-action { + margin-top: 20px; +} +.blank-slate-pf .blank-slate-pf-secondary-action { + margin-top: 20px; +} +.combobox-container.combobox-selected .glyphicon-remove { + display: inline-block; +} +.combobox-container .caret { + margin-left: 0; +} +.combobox-container .combobox::-ms-clear { + display: none; +} +.combobox-container .dropdown-menu { + margin-top: -1px; + width: 100%; +} +.combobox-container .glyphicon-remove { + display: none; + top: auto; + width: 12px; +} +.combobox-container .glyphicon-remove:before { + content: "\e60b"; + font-family: "PatternFlyIcons-webfont"; +} +.combobox-container .input-group-addon { + background-color: #f1f1f1; + background-image: linear-gradient(to bottom, #fafafa 0%, #ededed 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0); + border-color: #bbb; + color: #4d5258; + position: relative; +} +.combobox-container .input-group-addon:hover, +.combobox-container .input-group-addon:focus, +.combobox-container .input-group-addon:active, +.combobox-container .input-group-addon.active, +.open .dropdown-toggle.combobox-container .input-group-addon { + background-color: #f1f1f1; + background-image: none; + border-color: #bbb; + color: #4d5258; +} +.combobox-container .input-group-addon:active, +.combobox-container .input-group-addon.active, +.open .dropdown-toggle.combobox-container .input-group-addon { + background-image: none; +} +.combobox-container .input-group-addon:active:hover, +.combobox-container .input-group-addon.active:hover, +.open .dropdown-toggle.combobox-container .input-group-addon:hover, +.combobox-container .input-group-addon:active:focus, +.combobox-container .input-group-addon.active:focus, +.open .dropdown-toggle.combobox-container .input-group-addon:focus, +.combobox-container .input-group-addon:active.focus, +.combobox-container .input-group-addon.active.focus, +.open .dropdown-toggle.combobox-container .input-group-addon.focus { + background-color: #e5e5e5; + border-color: #a9a9a9; +} +.combobox-container .input-group-addon.disabled, +.combobox-container .input-group-addon[disabled], +fieldset[disabled] .combobox-container .input-group-addon, +.combobox-container .input-group-addon.disabled:hover, +.combobox-container .input-group-addon[disabled]:hover, +fieldset[disabled] .combobox-container .input-group-addon:hover, +.combobox-container .input-group-addon.disabled:focus, +.combobox-container .input-group-addon[disabled]:focus, +fieldset[disabled] .combobox-container .input-group-addon:focus, +.combobox-container .input-group-addon.disabled:active, +.combobox-container .input-group-addon[disabled]:active, +fieldset[disabled] .combobox-container .input-group-addon:active, +.combobox-container .input-group-addon.disabled.active, +.combobox-container .input-group-addon[disabled].active, +fieldset[disabled] .combobox-container .input-group-addon.active { + background-color: #f1f1f1; + border-color: #bbb; +} +.combobox-container .input-group-addon:active { + box-shadow: inset 0 2px 8px rgba(3, 3, 3, 0.2); +} +.bootstrap-datepicker.form-control[readonly] { + background-color: #fff; + border-color: #bbb !important; + color: #363636; + box-shadow: inset 0 1px 1px rgba(3, 3, 3, 0.075); +} +.bootstrap-datepicker.form-control[readonly]:focus { + border-color: #0088ce; + outline: 0; + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(0, 136, 206, 0.6); +} +.bootstrap-datepicker.form-control[readonly]:focus { + border-color: #0088ce !important; +} +.has-error .bootstrap-datepicker.form-control[readonly]:focus { + border-color: #990000; + box-shadow: inset 0 1px 1px rgba(3, 3, 3, 0.075), 0 0 6px #ff3333; +} +.has-success .bootstrap-datepicker.form-control[readonly]:focus { + border-color: #2b542c; + box-shadow: inset 0 1px 1px rgba(3, 3, 3, 0.075), 0 0 6px #67b168; +} +.has-warning .bootstrap-datepicker.form-control[readonly]:focus { + border-color: #bb6106; + box-shadow: inset 0 1px 1px rgba(3, 3, 3, 0.075), 0 0 6px #faad60; +} +.bootstrap-datepicker.form-control[readonly]:hover { + border-color: #7dc3e8 !important; +} +.has-error .bootstrap-datepicker.form-control[readonly]:hover { + border-color: #990000 !important; +} +.has-success .bootstrap-datepicker.form-control[readonly]:hover { + border-color: #2b542c !important; +} +.has-warning .bootstrap-datepicker.form-control[readonly]:hover { + border-color: #bb6106 !important; +} +.has-error .bootstrap-datepicker.form-control[readonly] { + border-color: #cc0000 !important; +} +.has-success .bootstrap-datepicker.form-control[readonly] { + border-color: #3c763d !important; +} +.has-warning .bootstrap-datepicker.form-control[readonly] { + border-color: #ec7a08 !important; +} +.datepicker { + border-radius: 1px; +} +.datepicker .datepicker-switch, +.datepicker tfoot .clear, +.datepicker tfoot .today { + font-size: 14px; + font-weight: 500; +} +.datepicker .next, +.datepicker .prev { + font-weight: 500; +} +.datepicker table tr td, +.datepicker table tr th { + border-radius: 1px; +} +.datepicker table tr td.active, +.datepicker table tr td.active:hover, +.datepicker table tr td.active.disabled, +.datepicker table tr td.active.disabled:hover { + background: #0088ce !important; + color: #fff !important; + text-shadow: none; +} +.datepicker table tr td.day:hover, +.datepicker table tr td.day.focused { + background: #def3ff; +} +.datepicker table tr td.selected, +.datepicker table tr td.selected:hover, +.datepicker table tr td.selected.disabled, +.datepicker table tr td.selected.disabled:hover { + text-shadow: none; +} +.datepicker table tr td span { + border-radius: 1px; +} +.datepicker table tr td span.active, +.datepicker table tr td span.active:hover, +.datepicker table tr td span.active.disabled, +.datepicker table tr td span.active.disabled:hover { + background: #0088ce; + text-shadow: none; +} +.datepicker table tr td span:hover { + background: #def3ff; +} +.datepicker thead tr:first-child th:hover, +.datepicker tfoot tr th:hover { + background: #def3ff; +} +.input-daterange input:first-child { + border-radius: 1px 0 0 1px; +} +.input-daterange input:last-child { + border-radius: 0 1px 1px 0; +} +.input-daterange .input-group-addon { + background-color: #f1f1f1; + border-color: #bbb; + line-height: 1.66666667; + padding: 2px 6px; +} +.bootstrap-select.btn-group.form-control { + margin-bottom: 0; +} +.bootstrap-select.btn-group .btn { + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; +} +.bootstrap-select.btn-group .btn:hover { + border-color: #7dc3e8; +} +.bootstrap-select.btn-group .btn .caret { + margin-top: -4px; +} +.bootstrap-select.btn-group .btn:focus { + border-color: #0088ce; + outline: 0 !important; + box-shadow: inset 0 1px 1px rgba(3, 3, 3, 0.075), 0 0 8px rgba(0, 136, 206, 0.6); +} +.has-error .bootstrap-select.btn-group .btn { + border-color: #cc0000; +} +.has-error .bootstrap-select.btn-group .btn:focus { + border-color: #990000; + box-shadow: inset 0 1px 1px rgba(3, 3, 3, 0.075), 0 0 6px #ff3333; +} +.has-success .bootstrap-select.btn-group .btn { + border-color: #3c763d; +} +.has-success .bootstrap-select.btn-group .btn:focus { + border-color: #2b542c; + box-shadow: inset 0 1px 1px rgba(3, 3, 3, 0.075), 0 0 6px #67b168; +} +.has-warning .bootstrap-select.btn-group .btn { + border-color: #ec7a08; +} +.has-warning .bootstrap-select.btn-group .btn:focus { + border-color: #bb6106; + box-shadow: inset 0 1px 1px rgba(3, 3, 3, 0.075), 0 0 6px #faad60; +} +.bootstrap-select.btn-group .dropdown-menu > .active > a, +.bootstrap-select.btn-group .dropdown-menu > .active > a:active { + background-color: #def3ff !important; + border-color: #bee1f4 !important; + color: #363636 !important; +} +.bootstrap-select.btn-group .dropdown-menu > .active > a small, +.bootstrap-select.btn-group .dropdown-menu > .active > a:active small { + color: #9c9c9c !important; +} +.bootstrap-select.btn-group .dropdown-menu > .disabled > a { + color: #9c9c9c !important; +} +.bootstrap-select.btn-group .dropdown-menu > .selected > a { + background-color: #0088ce !important; + border-color: #0088ce !important; + color: #fff !important; +} +.bootstrap-select.btn-group .dropdown-menu > .selected > a small { + color: rgba(255, 255, 255, 0.5) !important; +} +.bootstrap-select.btn-group .dropdown-menu .divider { + background: #ededed !important; + margin: 4px 1px !important; +} +.bootstrap-select.btn-group .dropdown-menu dt { + color: #8b8d8f; + font-weight: normal; + padding: 1px 10px; +} +.bootstrap-select.btn-group .dropdown-menu li > a.opt { + padding: 1px 10px; +} +.bootstrap-select.btn-group .dropdown-menu li a:active small { + color: rgba(255, 255, 255, 0.5) !important; +} +.bootstrap-select.btn-group .dropdown-menu li a:hover small, +.bootstrap-select.btn-group .dropdown-menu li a:focus small { + color: #9c9c9c; +} +.bootstrap-select.btn-group .dropdown-menu li:not(.disabled) a:hover small, +.bootstrap-select.btn-group .dropdown-menu li:not(.disabled) a:focus small { + color: #9c9c9c; +} +.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default, +.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default { + background: #fafafa; +} +.bootstrap-switch .bootstrap-switch-label { + background: #f1f1f1; + box-shadow: 0 0 2px rgba(3, 3, 3, 0.4); + background-image: linear-gradient(to bottom, #fafafa 0%, #ededed 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0); + position: relative; + z-index: 9; +} +.bootstrap-touchspin .input-group-btn-vertical > .btn { + padding-bottom: 6px; + padding-top: 6px; +} +.bootstrap-touchspin .input-group-btn-vertical .bootstrap-touchspin-down { + border-bottom-right-radius: 1px; +} +.bootstrap-touchspin .input-group-btn-vertical .bootstrap-touchspin-up { + border-top-right-radius: 1px; +} +.bootstrap-touchspin .input-group-btn-vertical i { + font-size: 8px; + left: 6px; + top: 2px; +} +.bootstrap-touchspin .input-group-btn-vertical i.fa-angle-down, +.bootstrap-touchspin .input-group-btn-vertical i.fa-angle-up { + font-size: 12px; + line-height: 12px; + top: 0; +} +.bootstrap-touchspin .input-group-btn-vertical i.fa-angle-down, +.bootstrap-touchspin .input-group-btn-vertical i.fa-angle-up { + left: 7px; +} +.treeview .list-group { + border-top: 0; +} +.treeview .list-group-item { + background: transparent; + border-bottom: 1px solid transparent !important; + border-top: 1px solid transparent !important; + cursor: default !important; + margin-bottom: 0; + overflow: hidden; + padding: 0 10px; + text-overflow: ellipsis; + white-space: nowrap; +} +.treeview .list-group-item:hover { + background: none !important; +} +.treeview .list-group-item.node-selected { + background: none !important; + border-color: transparent !important; + color: inherit !important; +} +.treeview .list-group-item.node-check-changed span.node-icon, +.treeview .list-group-item.node-check-changed span.text { + color: #39a5dc; +} +.treeview span.icon { + display: inline-block; + font-size: 13px; + min-width: 10px; + text-align: center; +} +.treeview span.icon > [class*="fa-angle"] { + font-size: 15px; +} +.treeview span.icon.check-icon { + margin-right: 10px; +} +.treeview span.icon.expand-icon { + cursor: pointer !important; +} +.treeview span.image { + background-repeat: no-repeat; + background-size: contain; + display: inline-block; + height: 1.19em; + line-height: 1em; + margin-right: 5px; + vertical-align: middle; + width: 12px; +} +.treeview span.indent { + margin-right: 5px; +} +.treeview .node-disabled { + color: #d1d1d1; + cursor: not-allowed; +} +.treeview .node-disabled span.expand-icon { + cursor: default !important; +} +.treeview .node-hidden { + display: none; +} +.treeview-pf-hover .list-group-item { + cursor: pointer !important; +} +.treeview-pf-hover .list-group-item:hover { + background-color: #def3ff !important; + border-color: #bee1f4 !important; +} +.treeview-pf-select .list-group-item { + cursor: pointer !important; +} +.treeview-pf-select .list-group-item.node-selected { + background: #0088ce !important; + border-color: #0088ce !important; + color: #fff !important; +} +.card-pf { + background: #fff; + border-top: 2px solid transparent; + box-shadow: 0 1px 1px rgba(3, 3, 3, 0.175); + margin: 0 -10px 20px; + padding: 0 20px; +} +.card-pf.card-pf-accented { + border-top-color: #39a5dc; +} +.card-pf.card-pf-aggregate-status .card-pf-aggregate-status-notifications a, +.card-pf.card-pf-aggregate-status .card-pf-title a { + color: #363636; +} +.card-pf.card-pf-aggregate-status .card-pf-aggregate-status-notifications a.add, +.card-pf.card-pf-aggregate-status .card-pf-title a.add { + color: #0088ce; +} +.card-pf.card-pf-aggregate-status .card-pf-aggregate-status-notifications a.add:hover, +.card-pf.card-pf-aggregate-status .card-pf-title a.add:hover { + color: #00659c; +} +.card-pf.card-pf-aggregate-status .card-pf-aggregate-status-notifications a:hover, +.card-pf.card-pf-aggregate-status .card-pf-title a:hover { + color: #00659c; +} +.card-pf.card-pf-aggregate-status { + padding: 0 10px; + text-align: center; +} +.card-pf.card-pf-aggregate-status-mini { + padding-bottom: 10px; + position: relative; +} +@media (min-width: 768px) { + .card-pf.card-pf-bleed-left { + margin-left: -20px; + } + .card-pf.card-pf-bleed-right { + border-right: 1px solid #d1d1d1; + margin-right: -20px; + } +} +.card-pf-aggregate-status-notifications { + font-size: 24px; + font-weight: 300; +} +.card-pf-aggregate-status-mini .card-pf-aggregate-status-notifications { + line-height: 1; +} +.card-pf-aggregate-status-notifications .card-pf-aggregate-status-notification + .card-pf-aggregate-status-notification { + border-left: 1px solid #d1d1d1; + margin-left: 3px; + padding-left: 10px; +} +.card-pf-aggregate-status-notifications .fa, +.card-pf-aggregate-status-notifications .pficon { + font-size: 18px; + margin-right: 7px; +} +.card-pf-body { + margin: 20px 0 0; + padding: 0 0 20px; +} +.card-pf-aggregate-status .card-pf-body { + margin-top: 10px; + padding-bottom: 10px; +} +.card-pf-aggregate-status-mini .card-pf-body { + margin-bottom: 0; + margin-top: 0; + padding-bottom: 0; + position: absolute; + right: 20px; + top: 15px; +} +.card-pf-utilization .card-pf-title + .card-pf-body { + margin-top: -8px; +} +.card-pf-body > *:last-child { + margin-bottom: 0; +} +.card-pf-footer { + background-color: #fafafa; + border-top: 1px solid #d1d1d1; + margin: 0 -20px !important; + padding: 20px 20px 10px; +} +.card-pf-footer a .fa, +.card-pf-footer a .pficon { + margin-right: 5px; +} +.card-pf-footer .card-pf-time-frame-filter { + margin-top: -2px; +} +.card-pf-link-with-icon { + padding-left: 21px; + position: relative; +} +.card-pf-link-with-icon .fa, +.card-pf-link-with-icon .pficon { + font-size: 16px; + left: 0; + position: absolute; + top: 0; +} +.card-pf-heading .card-pf-time-frame-filter, +.card-pf-footer .card-pf-time-frame-filter { + float: right; + margin-left: 20px; +} +.card-pf-heading { + border-bottom: 1px solid #d1d1d1; + margin: 0 -20px 20px; + padding: 0 20px 0; +} +.card-pf-heading .card-pf-time-frame-filter { + margin-top: -5px; +} +.card-pf-heading-details { + float: right; + font-size: 10px; +} +.card-pf-subtitle { + font-size: 16px; + margin-top: 20px; + margin-bottom: 10px; +} +[class^="col"] .card-pf-subtitle { + margin-top: 0; +} +@media (max-width: 767px) { + .card-pf-body [class^="col"] + [class^="col"] > .card-pf-subtitle { + margin-top: 40px; + } +} +.card-pf-title { + font-size: 16px; + font-weight: 400; + margin: 20px 0; + padding: 0; +} +.card-pf-aggregate-status .card-pf-title { + font-size: 14px; + margin: 10px 0 0; +} +.card-pf-aggregate-status .card-pf-title .fa, +.card-pf-aggregate-status .card-pf-title .pficon { + color: #292e34; + font-size: 16px; + margin-right: 7px; +} +.card-pf-title .card-pf-aggregate-status-count { + font-size: 16px; +} +.card-pf-aggregate-status-mini .card-pf-title .card-pf-aggregate-status-count { + display: block; + font-size: 24px; + font-weight: 300; + margin-bottom: 3px; +} +.card-pf-aggregate-status-mini .card-pf-title { + font-size: 12px; + margin-top: 5px; +} +.card-pf-aggregate-status-mini .card-pf-title a { + display: inline-block; +} +.card-pf-aggregate-status-mini .card-pf-title .fa, +.card-pf-aggregate-status-mini .card-pf-title .pficon { + font-size: 26px; + margin-right: 0; + min-width: 26px; + position: absolute; + left: 20px; + text-align: center; + top: 15px; +} +.card-pf-utilization-details { + border-bottom: 1px solid #d1d1d1; + display: table; + margin: 12px 0 15px; + padding: 0 0 15px; + width: 100%; +} +.card-pf-utilization-details .card-pf-utilization-card-details-count, +.card-pf-utilization-details .card-pf-utilization-card-details-description { + float: left; + line-height: 1; +} +.card-pf-utilization-details .card-pf-utilization-card-details-count { + font-size: 26px; + font-weight: 300; + margin-right: 10px; +} +.card-pf-utilization-details .card-pf-utilization-card-details-line-1, +.card-pf-utilization-details .card-pf-utilization-card-details-line-2 { + display: block; +} +.card-pf-utilization-details .card-pf-utilization-card-details-line-1 { + font-size: 10px; + margin-bottom: 2px; +} +.cards-pf { + background: #f5f5f5; +} +.cards-pf .row-cards-pf { + padding: 0 20px; +} +.cards-pf .row-cards-pf:first-child { + padding-top: 20px; +} +.container-cards-pf { + margin-top: 20px; +} +.row-cards-pf { + margin-left: -10px; + margin-right: -10px; +} +.card-pf-view { + border: 2px solid transparent; +} +.card-pf-view .card-pf-heading-kebab .dropdown-kebab-pf { + margin-top: -3px; +} +.card-pf-view .card-pf-heading-kebab + .progress-pf-legend p { + margin-bottom: 0; +} +.card-pf-view .card-pf-heading-kebab + .progress-pf-legend .progress { + margin-bottom: 7px; + margin-top: 16px; +} +.card-pf-view .card-pf-info { + margin-top: 15px; +} +.card-pf-view .card-pf-info strong { + font-size: 13px; + margin-right: 10px; +} +.card-pf-view .card-pf-item { + display: inline-block; + font-size: 16px; + padding: 0 13px 0 15px; +} +.card-pf-view .card-pf-item:first-child { + padding-left: 0; +} +.card-pf-view .card-pf-item:last-child { + padding-right: 0; +} +.card-pf-view .card-pf-item + .card-pf-item { + border-left: 1px solid #d1d1d1; +} +.card-pf-view .card-pf-item .fa-check { + color: #3f9c35; +} +.card-pf-view .card-pf-item .fa + .card-pf-item-text, +.card-pf-view .card-pf-item .pficon + .card-pf-item-text { + margin-left: 10px; +} +.card-pf-view .card-pf-items { + margin-top: 15px; +} +.card-pf-view .card-pf-title { + font-size: 20px; + font-weight: 300; + margin-bottom: 0; + margin-top: 15px; +} +.card-pf-view .card-pf-title .fa, +.card-pf-view .card-pf-title .pficon { + font-size: 18px; + margin-right: 2px; +} +.col-lg-2 .card-pf-view .card-pf-title { + font-size: 16px; +} +.card-pf-view .card-pf-top-element .card-pf-icon-circle { + border: 2px solid #39a5dc; + border-radius: 50%; + display: block; + font-size: 46px; + height: 106px; + line-height: 102px; + margin: 0 auto; + text-align: center; + width: 106px; +} +.col-lg-2 .card-pf-view .card-pf-top-element .card-pf-icon-circle { + font-size: 23px; + height: 54px; + line-height: 50px; + width: 54px; +} +.card-pf-view .card-pf-view-checkbox { + position: absolute; + top: 11px; + left: 15px; +} +.card-pf-view .card-pf-view-checkbox input[type=checkbox] { + display: none; +} +.card-pf-view.card-pf-view-multi-select .card-pf-view-checkbox input[type=checkbox] { + display: block; +} +@media (min-width: 768px) { + .card-pf-view.card-pf-view-multi-select .card-pf-view-checkbox input[type=checkbox] { + visibility: hidden; + } + .card-pf-view.card-pf-view-multi-select .card-pf-view-checkbox input[type=checkbox]:checked { + visibility: visible; + } +} +.card-pf-view.card-pf-view-multi-select:hover .card-pf-view-checkbox input[type=checkbox] { + visibility: visible; +} +.card-pf-view.card-pf-view-select { + position: relative; +} +.card-pf-view.card-pf-view-select:hover { + box-shadow: 0 1px 6px rgba(3, 3, 3, 0.35); +} +.card-pf-view.card-pf-view-select.active { + border: 2px solid #39a5dc; +} +.card-pf-view.card-pf-view-single-select { + cursor: pointer; +} +.card-pf-view.card-pf-view-xs .card-pf-title { + font-size: 16px; + font-weight: normal; + margin-bottom: 10px; +} +.card-pf-view.card-pf-view-xs .card-pf-title .fa, +.card-pf-view.card-pf-view-xs .card-pf-title .pficon { + font-size: 14px; + margin-right: 5px; +} +.c3 path { + stroke: #d1d1d1; +} +.c3 svg { + font-family: "Open Sans", Helvetica, Arial, sans-serif; +} +.c3-axis-x .tick line { + stroke: #d1d1d1; +} +.c3-axis-y .tick line { + display: none; +} +.c3-chart-arc path { + stroke: #fff; +} +.c3-grid line { + stroke: #d1d1d1; +} +.c3-line { + stroke-width: 2px; +} +.c3-tooltip { + background: #393f44; + box-shadow: none; + opacity: 0.9; + filter: alpha(opacity=90); +} +.c3-tooltip td { + background: transparent; + border: 0; + color: #fff; + font-size: 12px; + padding: 5px 10px; +} +.c3-tooltip th { + background: transparent; + font-size: 12px; + padding: 5px 10px 0; + border-bottom: solid 2px #030303; +} +.c3-tooltip tr { + border: 0; +} +.c3-tooltip tr + tr > td { + padding-top: 0; +} +.c3-tooltip-sparkline, +.donut-tooltip-pf { + background: #393f44; + color: #fff; + opacity: 0.9; + filter: alpha(opacity=90); + padding: 2px 6px; +} +.c3-xgrid, +.c3-ygrid { + stroke-dasharray: 0 0; +} +.chart-pf-sparkline { + margin-left: -5px; + margin-right: -5px; +} +.donut-title-big-pf { + font-size: 30px; + font-weight: 300; +} +.donut-title-small-pf { + font-size: 12px; + font-weight: 400; +} +.line-chart-pf .c3-zoom-rect { + opacity: 1 !important; + fill: #fafafa; + stroke: #d1d1d1; + stroke-width: 1px; +} +.close { + text-shadow: none; + z-index: 1; + position: relative; + opacity: 0.6; + filter: alpha(opacity=60); +} +.close:hover, +.close:focus { + opacity: 0.9; + filter: alpha(opacity=90); +} +.ColVis_Button:active:focus { + outline: none; +} +.ColVis_catcher { + position: absolute; + z-index: 999; +} +.ColVis_collection { + background-color: #fff; + border: 1px solid #bbb; + border-radius: 1px; + box-shadow: 0 6px 12px rgba(3, 3, 3, 0.175); + background-clip: padding-box; + list-style: none; + margin: -1px 0 0 0; + padding: 5px 10px; + width: 150px; + z-index: 1000; +} +.ColVis_collection label { + font-weight: normal; + margin-bottom: 5px; + margin-top: 5px; + padding-left: 20px; +} +.ColVis_collectionBackground { + background-color: #fff; + height: 100%; + left: 0; + position: fixed; + top: 0; + width: 100%; + z-index: 998; +} +.dataTables_header { + background-color: #f5f5f5; + border: 1px solid #d1d1d1; + border-bottom: none; + padding: 5px; + position: relative; + text-align: center; +} +.dataTables_header .btn { + box-shadow: none; +} +.dataTables_header .ColVis { + position: absolute; + right: 5px; + text-align: left; + top: 5px; +} +.dataTables_header .ColVis + .dataTables_info { + padding-right: 30px; +} +.dataTables_header .dataTables_filter { + position: absolute; +} +.dataTables_header .dataTables_filter input { + border: 1px solid #bbb; + height: 24px; +} +@media (max-width: 767px) { + .dataTables_header .dataTables_filter input { + width: 100px; + } +} +.dataTables_header .dataTables_info { + padding: 2px 0; +} +@media (max-width: 480px) { + .dataTables_header .dataTables_info { + text-align: right; + } +} +.dataTables_header .dataTables_info b { + font-weight: bold; +} +.dataTables_footer { + background-color: #fff; + border: 1px solid #d1d1d1; + border-top: none; + overflow: hidden; +} +.dataTables_paginate { + background: #fafafa; + float: right; + margin: 0; +} +.dataTables_paginate .pagination { + float: left; + margin: 0; +} +.dataTables_paginate .pagination > li > span { + border-color: #fff #d1d1d1 #f5f5f5; + border-width: 0 1px; + font-size: 16px; + font-weight: normal; + padding: 0; + text-align: center; + width: 31px; +} +.dataTables_paginate .pagination > li > span:hover, +.dataTables_paginate .pagination > li > span:focus { + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.dataTables_paginate .pagination > li.last > span { + border-right: none; +} +.dataTables_paginate .pagination > li.disabled > span { + background: #f5f5f5; + border-left-color: #ededed; + border-right-color: #ededed; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.dataTables_paginate .pagination-input { + float: left; + font-size: 12px; + line-height: 1em; + padding: 4px 15px 0; + text-align: right; +} +.dataTables_paginate .pagination-input .paginate_input { + border: 1px solid #d1d1d1; + box-shadow: inset 0 1px 1px rgba(3, 3, 3, 0.075); + font-size: 12px; + font-weight: 600; + height: 19px; + margin-right: 8px; + padding-right: 3px; + text-align: right; + width: 30px; +} +.dataTables_paginate .pagination-input .paginate_of { + position: relative; +} +.dataTables_paginate .pagination-input .paginate_of b { + margin-left: 3px; +} +.dataTables_empty { + background: #f5f5f5; +} +/* Might need this for pagination? +.dataTables_wrapper { + margin: @line-height-computed 0; + @media (max-width: @screen-xs-max) { + .table-responsive { + margin-bottom: 0; + } + } +} +*/ +.DTCR_clonedTable { + background-color: rgba(255, 255, 255, 0.7); + z-index: 202; +} +.DTCR_pointer { + background-color: #0088ce; + width: 1px; + z-index: 201; +} +.footer-pf-alt, +.footer-pf { + background-color: #030303; + color: #9c9c9c; + font-size: 11px; + line-height: 17px; + padding-left: 25px; + padding-top: 10px; +} +.layout-pf-alt-fixed-with-footer .footer-pf-alt, +.layout-pf-alt-fixed-with-footer .footer-pf, +.layout-pf-fixed-with-footer .footer-pf-alt, +.layout-pf-fixed-with-footer .footer-pf { + bottom: 0; + left: 0; + position: fixed; + right: 0; + z-index: 1030; +} +@font-face { + font-family: "PatternFlyIcons-webfont"; + src: url("../fonts/PatternFlyIcons-webfont.eot"); + src: url("../fonts/PatternFlyIcons-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/PatternFlyIcons-webfont.ttf") format("truetype"), url("../fonts/PatternFlyIcons-webfont.woff") format("woff"), url("../fonts/PatternFlyIcons-webfont.svg#PatternFlyIcons-webfont") format("svg"); + font-weight: normal; + font-style: normal; +} +[class^="pficon-"], +[class*=" pficon-"] { + display: inline-block; + font-family: "PatternFlyIcons-webfont"; + font-style: normal; + font-variant: normal; + font-weight: normal; + line-height: 1; + speak: none; + text-transform: none; + /* Better Font Rendering =========== */ + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; +} +.pficon-middleware:before { + content: "\e917"; +} +.pficon-add-circle-o:before { + content: "\e61b"; +} +.pficon-build:before { + content: "\e902"; +} +.pficon-builder-image:before { + content: "\e800"; +} +.pficon-bundle:before { + content: "\e918"; +} +.pficon-blueprint:before { + content: "\e915"; +} +.pficon-close:before { + content: "\e60b"; +} +.pficon-cloud-security:before { + content: "\e903"; +} +.pficon-cloud-tenant:before { + content: "\e904"; +} +.pficon-cluster:before { + content: "\e620"; +} +.pficon-container-node:before { + content: "\e621"; +} +.pficon-cpu:before { + content: "\e905"; +} +.pficon-delete:before { + content: "\e611"; +} +.pficon-domain:before { + content: "\e919"; +} +.pficon-edit:before { + content: "\e60a"; +} +.pficon-enterprise:before { + content: "\e906"; +} +.pficon-error-circle-o:before { + color: #cc0000; + content: "\e61d"; +} +.pficon-export:before { + content: "\e616"; +} +.pficon-flag:before, +.pficon-messages:before { + content: "\e603"; +} +.pficon-flavor:before { + content: "\e907"; +} +.pficon-folder-close:before { + content: "\e607"; +} +.pficon-folder-open:before { + content: "\e606"; +} +.pficon-help:before { + content: "\e605"; +} +.pficon-history:before { + content: "\e617"; +} +.pficon-home:before { + content: "\e618"; +} +.pficon-image:before { + content: "\e61f"; +} +.pficon-import:before { + content: "\e615"; +} +.pficon-info:before { + content: "\e604"; +} +.pficon-memory:before { + content: "\e908"; +} +.pficon-network:before { + content: "\e909"; +} +.pficon-ok:before { + color: #3f9c35; + content: "\e602"; +} +.pficon-print:before { + content: "\e612"; +} +.pficon-private:before { + content: "\e914"; +} +.pficon-project:before { + content: "\e622"; +} +.pficon-refresh:before, +.pficon-restart:before { + content: "\e613"; +} +.pficon-regions:before { + content: "\e90a"; +} +.pficon-registry:before { + content: "\e623"; +} +.pficon-replicator:before { + content: "\e624"; +} +.pficon-repository:before { + content: "\e90b"; +} +.pficon-resource-pool:before { + content: "\e90c"; +} +.pficon-resources-almost-full:before { + content: "\e912"; +} +.pficon-resources-full:before { + content: "\e913"; +} +.pficon-route:before { + content: "\e625"; +} +.pficon-running:before { + content: "\e614"; +} +.pficon-save:before { + content: "\e601"; +} +.pficon-screen:before { + content: "\e600"; +} +.pficon-server:before { + content: "\e90d"; +} +.pficon-server-group:before { + content: "\e91a"; +} +.pficon-service:before { + content: "\e61e"; +} +.pficon-settings:before { + content: "\e610"; +} +.pficon-storage-domain:before { + content: "\e90e"; +} +.pficon-tenant:before { + content: "\e916"; +} +.pficon-thumb-tack-o:before { + content: "\e609"; +} +.pficon-topology:before { + content: "\e608"; +} +.pficon-trend-down:before { + content: "\e900"; +} +.pficon-trend-up:before { + content: "\e901"; +} +.pficon-user:before { + content: "\e60e"; +} +.pficon-users:before { + content: "\e60f"; +} +.pficon-virtual-machine:before { + content: "\e90f"; +} +.pficon-volume:before { + content: "\e910"; +} +.pficon-warning-triangle-o:before { + color: #ec7a08; + content: "\e61c"; +} +.pficon-zone:before { + content: "\e911"; +} +.navbar-nav > li > .dropdown-menu.infotip { + border-top-width: 1px !important; + margin-top: 10px; +} +@media (max-width: 767px) { + .navbar-pf .navbar-nav .open .dropdown-menu.infotip { + background-color: #fff !important; + margin-top: 0; + } +} +.infotip { + min-width: 235px; + padding: 0; +} +.infotip .list-group { + border-top: 0; + margin: 0; + padding: 8px 0; +} +.infotip .list-group .list-group-item { + border: none; + margin: 0 15px 0 34px; + padding: 5px 0; +} +.infotip .list-group .list-group-item > .i { + color: #4d5258; + font-size: 13px; + left: -20px; + position: absolute; + top: 8px; +} +.infotip .list-group .list-group-item > a { + color: #4d5258; + line-height: 13px; +} +.infotip .list-group .list-group-item > .close { + float: right; +} +.infotip .footer { + background-color: #f5f5f5; + padding: 6px 15px; +} +.infotip .footer a:hover { + color: #0088ce; +} +.infotip .arrow, +.infotip .arrow:after { + border-color: transparent; + border-style: solid; + display: block; + height: 0; + position: absolute; + width: 0; +} +.infotip .arrow { + border-width: 11px; +} +.infotip .arrow:after { + border-width: 10px; + content: ""; +} +.infotip.bottom .arrow, +.infotip.bottom-left .arrow, +.infotip.bottom-right .arrow { + border-bottom-color: #bbb; + border-top-width: 0; + left: 50%; + margin-left: -11px; + top: -11px; +} +.infotip.bottom .arrow:after, +.infotip.bottom-left .arrow:after, +.infotip.bottom-right .arrow:after { + border-top-width: 0; + border-bottom-color: #fff; + content: " "; + margin-left: -10px; + top: 1px; +} +.infotip.bottom-left .arrow { + left: 20%; +} +.infotip.bottom-right .arrow { + left: 80%; +} +.infotip.top .arrow { + border-bottom-width: 0; + border-top-color: #bbb; + bottom: -11px; + left: 50%; + margin-left: -11px; +} +.infotip.top .arrow:after { + border-bottom-width: 0; + border-top-color: #f5f5f5; + bottom: 1px; + content: " "; + margin-left: -10px; +} +.infotip.right .arrow { + border-left-width: 0; + border-right-color: #bbb; + left: -11px; + margin-top: -11px; + top: 50%; +} +.infotip.right .arrow:after { + bottom: -10px; + border-left-width: 0; + border-right-color: #fff; + content: " "; + left: 1px; +} +.infotip.left .arrow { + border-left-color: #bbb; + border-right-width: 0; + margin-top: -11px; + right: -11px; + top: 50%; +} +.infotip.left .arrow:after { + border-left-color: #fff; + border-right-width: 0; + bottom: -10px; + content: " "; + right: 1px; +} +.layout-pf, +.layout-pf body { + min-height: 100%; +} +.layout-pf.layout-pf-fixed.transitions .container-pf-nav-pf-vertical { + transition: all 200ms cubic-bezier(0.35, 0, 0.25, 1); +} +.layout-pf.layout-pf-fixed body { + padding-top: 60px; +} +.layout-pf.layout-pf-fixed .navbar-pf { + left: 0; + position: fixed; + top: 0; + right: 0; + z-index: 1030; +} +.layout-pf.layout-pf-fixed .container-pf-nav-pf-vertical { + margin-left: 200px; +} +.layout-pf.layout-pf-fixed .container-pf-nav-pf-vertical.nav-pf-vertical-with-badges { + margin-left: 250px; +} +.layout-pf.layout-pf-fixed .container-pf-nav-pf-vertical.collapsed-nav { + margin-left: 75px; +} +.layout-pf.layout-pf-fixed .container-pf-nav-pf-vertical.collapsed-nav.hidden-icons-pf { + margin-left: 0; +} +.layout-pf.layout-pf-fixed .container-pf-nav-pf-vertical.hidden-nav { + margin-left: 0; +} +.layout-pf.layout-pf-fixed .container-pf-nav-pf-vertical.hide-nav-pf { + margin-left: 0 !important; +} +.layout-pf.layout-pf-fixed .container-pf-nav-pf-vertical.collapsed-secondary-nav-pf, +.layout-pf.layout-pf-fixed .container-pf-nav-pf-vertical.collapsed-tertiary-nav-pf { + margin-left: 200px; +} +.layout-pf.layout-pf-fixed .container-pf-nav-pf-vertical.collapsed-secondary-nav-pf.nav-pf-vertical-with-badges, +.layout-pf.layout-pf-fixed .container-pf-nav-pf-vertical.collapsed-tertiary-nav-pf.nav-pf-vertical-with-badges { + margin-left: 250px; +} +@media (min-width: 1200px) { + .layout-pf.layout-pf-fixed .container-pf-nav-pf-vertical.nav-pf-persistent-secondary.secondary-visible-pf { + margin-left: 400px; + } + .layout-pf.layout-pf-fixed .container-pf-nav-pf-vertical.nav-pf-persistent-secondary.secondary-visible-pf.nav-pf-vertical-with-badges { + margin-left: 500px; + } + .layout-pf.layout-pf-fixed .container-pf-nav-pf-vertical.nav-pf-persistent-secondary.secondary-visible-pf.hidden-nav { + margin-left: 0; + } + .layout-pf.layout-pf-fixed .container-pf-nav-pf-vertical.nav-pf-persistent-secondary.secondary-visible-pf.collapsed-secondary-nav-pf { + margin-left: 200px; + } + .layout-pf.layout-pf-fixed .container-pf-nav-pf-vertical.nav-pf-persistent-secondary.secondary-visible-pf.collapsed-secondary-nav-pf.nav-pf-vertical-with-badges { + margin-left: 250px; + } + .layout-pf.layout-pf-fixed .container-pf-nav-pf-vertical.nav-pf-persistent-secondary.secondary-visible-pf.collapsed-tertiary-nav-pf { + margin-left: 200px; + } + .layout-pf.layout-pf-fixed .container-pf-nav-pf-vertical.nav-pf-persistent-secondary.secondary-visible-pf.collapsed-tertiary-nav-pf.nav-pf-vertical-with-badges { + margin-left: 250px; + } + .layout-pf.layout-pf-fixed .container-pf-nav-pf-vertical.nav-pf-persistent-secondary.secondary-visible-pf.collapsed-nav { + margin-left: 275px; + } + .layout-pf.layout-pf-fixed .container-pf-nav-pf-vertical.nav-pf-persistent-secondary.secondary-visible-pf.collapsed-nav.nav-pf-vertical-with-badges { + margin-left: 325px; + } + .layout-pf.layout-pf-fixed .container-pf-nav-pf-vertical.nav-pf-persistent-secondary.secondary-visible-pf.collapsed-nav.collapsed-secondary-nav-pf { + margin-left: 200px; + } + .layout-pf.layout-pf-fixed .container-pf-nav-pf-vertical.nav-pf-persistent-secondary.secondary-visible-pf.collapsed-nav.collapsed-secondary-nav-pf.nav-pf-vertical-with-badges { + margin-left: 250px; + } + .layout-pf.layout-pf-fixed .container-pf-nav-pf-vertical.nav-pf-persistent-secondary.secondary-visible-pf.collapsed-nav.collapsed-tertiary-nav-pf { + margin-left: 200px; + } + .layout-pf.layout-pf-fixed .container-pf-nav-pf-vertical.nav-pf-persistent-secondary.secondary-visible-pf.collapsed-nav.collapsed-tertiary-nav-pf.nav-pf-vertical-with-badges { + margin-left: 250px; + } + .layout-pf.layout-pf-fixed .container-pf-nav-pf-vertical.nav-pf-persistent-secondary.secondary-visible-pf.collapsed-nav.hidden-icons-pf { + margin-left: 0; + } +} +.layout-pf.layout-pf-fixed-with-footer body { + padding-bottom: 37px; +} +.layout-pf-alt, +.layout-pf-alt body { + min-height: 100%; +} +.layout-pf-alt.layout-pf-alt-fixed.layout-pf-alt-fixed-inner-scroll, +.layout-pf-alt.layout-pf-alt-fixed.layout-pf-alt-fixed-inner-scroll body { + height: 100%; + min-height: 0; +} +.layout-pf-alt.layout-pf-alt-fixed.layout-pf-alt-fixed-inner-scroll .container-pf-alt-nav-pf-vertical-alt { + height: 100%; + overflow: auto; +} +.layout-pf-alt.layout-pf-alt-fixed.layout-pf-alt-fixed-inner-scroll .container-pf-alt-nav-pf-vertical-alt.container-cards-pf { + margin-top: 0; + padding-top: 20px; +} +.layout-pf-alt.layout-pf-alt-fixed.transitions .container-pf-alt-nav-pf-vertical-alt { + transition: all 200ms cubic-bezier(0.35, 0, 0.25, 1); +} +.layout-pf-alt.layout-pf-alt-fixed body { + padding-top: 60px; +} +.layout-pf-alt.layout-pf-alt-fixed .container-pf-alt-nav-pf-vertical-alt { + margin-left: 250px; +} +.layout-pf-alt.layout-pf-alt-fixed .container-pf-alt-nav-pf-vertical-alt.collapsed-nav { + margin-left: 75px; +} +.layout-pf-alt.layout-pf-alt-fixed .container-pf-alt-nav-pf-vertical-alt.hidden-nav { + margin-left: 0; +} +.layout-pf-alt.layout-pf-alt-fixed-with-footer body { + padding-bottom: 37px; +} +a.disabled { + color: #8b8d8f; + cursor: not-allowed; + text-decoration: none; +} +.list-view-pf .list-group-item { + -ms-flex-align: start; + align-items: flex-start; + background-clip: padding-box; + border-color: transparent #fff; + border-style: solid; + border-width: 1px; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + padding-bottom: 0; + padding-top: 0; +} +.list-view-pf .list-group-item:before, +.list-view-pf .list-group-item:after { + content: " "; + display: table; +} +.list-view-pf .list-group-item:after { + clear: both; +} +.list-view-pf .list-group-item.list-view-pf-expand-active { + background-color: #ededed; +} +.list-view-pf .list-group-item.active { + color: #555; + background-color: #def3ff; + background-clip: border-box; + border-color: #39a5dc transparent transparent; + z-index: auto; +} +.list-view-pf .list-group-item:hover { + background-color: #ededed; + border-left-color: transparent; + border-right-color: transparent; +} +.list-view-pf .list-group-item.list-view-pf-expand-active { + border: solid 1px #39a5dc; +} +.list-view-pf .list-group-item.list-view-pf-expand-active:first-child { + border-top-color: #39a5dc; +} +.list-view-pf .list-group-item:first-child { + border-top: 1px solid transparent; +} +@media (min-width: 992px) { + .list-view-pf .list-group-item { + -ms-flex-align: center; + align-items: center; + } +} +.list-view-pf .list-group-item-heading { + font-size: 16px; +} +.list-view-pf .list-group-item-heading small { + display: block; + font-size: 9.6px; + font-weight: 400; +} +@media (min-width: 992px) { + .list-view-pf .list-group-item-heading { + -ms-flex: 1 0 calc(25% - 20px); + flex: 1 0 calc(25% - 20px); + float: left; + font-size: 12px; + margin: 0 20px 0 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + width: calc(25% - 20px); + } +} +.list-view-pf .list-group-item-text { + color: currentColor !important; + margin-bottom: 10px; +} +@media (min-width: 992px) { + .list-view-pf .list-group-item-text { + -ms-flex: 1 0 auto; + flex: 1 0 auto; + float: left; + margin: 0 40px 0 0; + width: calc(75% - 40px); + } +} +.list-view-pf-actions { + float: right; + margin-bottom: 20px; + margin-left: 20px; + margin-top: 20px; + -ms-flex-order: 2; + order: 2; +} +.list-view-pf-actions button, +.list-view-pf-actions > a, +.list-view-pf-actions .dropdown-kebab-pf { + margin-left: 10px; +} +.list-view-pf-top-align .list-view-pf-actions { + -ms-flex-item-align: start; + align-self: flex-start; +} +.list-view-pf-additional-info { + -ms-flex-align: center; + align-items: center; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} +@media (min-width: 992px) { + .list-view-pf-additional-info { + -ms-flex: 1 0 auto; + flex: 1 0 auto; + float: left; + width: 50%; + } +} +.list-view-pf-additional-info-item { + -ms-flex-align: center; + align-items: center; + display: inline-block; + margin-right: 20px; + max-width: 100%; + text-align: center; +} +@supports (display: flex) { + .list-view-pf-additional-info-item { + display: -ms-flexbox; + display: flex; + } +} +.list-view-pf-additional-info-item.list-view-pf-additional-info-item-stacked { + text-align: center; + -ms-flex-direction: column; + flex-direction: column; +} +.list-view-pf-additional-info-item.list-view-pf-additional-info-item-stacked strong { + font-size: 13px; + line-height: 1em; +} +.list-view-pf-additional-info-item .pficon, +.list-view-pf-additional-info-item .fa { + font-size: 16px; + margin-right: 10px; +} +.list-view-pf-additional-info-item strong { + font-size: 16px; + font-weight: 600; + margin-right: 5px; +} +.list-view-pf-additional-info-item:last-child { + margin-right: 0; +} +.list-view-pf-additional-info-item-donut-chart { + width: 60px; +} +.list-view-pf-body { + -ms-flex-align: center; + align-items: center; + display: table-cell; + -ms-flex: 1; + flex: 1; + min-width: 0; + vertical-align: top; + width: 100%; +} +@media (min-width: 992px) { + .list-view-pf-body { + -ms-flex-align: center; + align-items: center; + display: -ms-flexbox; + display: flex; + -ms-flex-direction: row; + flex-direction: row; + } +} +.list-view-pf-checkbox { + border-right: 1px solid #d1d1d1; + float: left; + margin-bottom: 20px; + margin-right: 15px; + margin-top: 20px; + padding: 3px 10px 3px 0; +} +.list-view-pf-top-align .list-view-pf-checkbox { + -ms-flex-item-align: start; + align-self: flex-start; +} +.list-view-pf-description { + -ms-flex: 1 0 50%; + flex: 1 0 50%; +} +.list-view-pf-stacked .list-view-pf-description { + display: block; + -ms-flex: none; + flex: none; +} +@media (min-width: 992px) { + .list-view-pf-description { + -ms-flex-align: center; + align-items: center; + display: -ms-flexbox; + display: flex; + float: left; + width: 50%; + } +} +.list-view-pf-left { + display: table-cell; + padding-right: 20px; + text-align: center; + vertical-align: top; +} +.list-view-pf-left .list-view-pf-calendar { + font-size: 11px; + line-height: 1em; +} +.list-view-pf-left .list-view-pf-calendar strong { + display: block; + font-size: 44px; + font-weight: 300; + line-height: 1em; +} +.list-view-pf-left .pficon, +.list-view-pf-left .fa { + border-radius: 50%; + font-size: 2em; +} +.list-view-pf-left .pficon.list-view-pf-icon-md, +.list-view-pf-left .fa.list-view-pf-icon-md { + background-color: #f5f5f5; + height: 50px; + line-height: 50px; + width: 50px; +} +.list-view-pf-left .pficon.list-view-pf-icon-danger, +.list-view-pf-left .fa.list-view-pf-icon-danger { + background-color: #ffe6e6; + color: #cc0000; +} +.list-view-pf-left .pficon.list-view-pf-icon-info, +.list-view-pf-left .fa.list-view-pf-icon-info { + color: #8b8d8f; +} +.list-view-pf-left .pficon.list-view-pf-icon-lg, +.list-view-pf-left .fa.list-view-pf-icon-lg { + background-color: #f5f5f5; + height: 60px; + line-height: 60px; + width: 60px; +} +.list-view-pf-left .pficon.list-view-pf-icon-sm, +.list-view-pf-left .fa.list-view-pf-icon-sm { + border: 2px solid #39a5dc; + font-size: 1.4em; + height: 30px; + line-height: 30px; + width: 30px; +} +.list-view-pf-left .pficon.list-view-pf-icon-sm:before, +.list-view-pf-left .fa.list-view-pf-icon-sm:before { + display: block; + line-height: 26px; +} +.list-view-pf-left .pficon.list-view-pf-icon-success, +.list-view-pf-left .fa.list-view-pf-icon-success { + background-color: #e9f4e9; + color: #3f9c35; +} +.list-view-pf-left .pficon.list-view-pf-icon-warning, +.list-view-pf-left .fa.list-view-pf-icon-warning { + background-color: #fdf2e5; + color: #ec7a08; +} +.list-view-pf-main-info { + -ms-flex-align: start; + align-items: flex-start; + display: -ms-flexbox; + display: flex; + -ms-flex: 1; + flex: 1; + min-width: 0; + padding-bottom: 20px; + padding-top: 20px; +} +@media (min-width: 992px) { + .list-view-pf-main-info { + -ms-flex-align: center; + align-items: center; + } + .list-view-pf-top-align .list-view-pf-main-info { + -ms-flex-align: start; + align-items: flex-start; + } +} +.list-view-pf-stacked .list-group-item-heading { + float: none; + font-size: 16px; + line-height: 1.2em; + margin-bottom: 5px; + margin-right: 40px; + width: auto; +} +.list-view-pf-stacked .list-group-item-text { + float: none; + width: auto; +} +.list-view-pf-view { + background: #ededed; + border: none; + margin-top: 30px; +} +.list-group-item-header { + box-sizing: content-box; + cursor: pointer; + margin: 0 -15px; + padding: 0 15px; + width: 100%; +} +.list-view-pf-expand { + cursor: pointer; + float: left; + margin-bottom: 20px; + margin-right: 2px; + margin-top: 20px; + padding: 3px 0; +} +.list-view-pf-expand.active, +.list-view-pf-expand:hover { + color: #0088ce; +} +.list-view-pf-additional-info-item .list-view-pf-expand { + margin: 0; + padding: 0; +} +.list-view-pf-expand .fa-angle-right { + cursor: pointer; + font-size: 17px; + margin-right: 5px; + margin-top: 2px; + width: 10px; +} +.list-group-item-container { + background: #fff; + border-top: solid 1px #39a5dc; + box-sizing: content-box; + margin: -1px -15px 0; + -ms-flex-order: 3; + order: 3; + padding: 10px 15px; + position: relative; + width: 100%; +} +.login-pf { + height: 100%; +} +.login-pf #brand { + position: relative; + top: -70px; +} +.login-pf #brand img { + display: block; + height: 18px; + margin: 0 auto; + max-width: 100%; +} +@media (min-width: 768px) { + .login-pf #brand img { + margin: 0; + text-align: left; + } +} +.login-pf #badge { + display: block; + margin: 20px auto 70px; + position: relative; + text-align: center; +} +@media (min-width: 768px) { + .login-pf #badge { + float: right; + margin-right: 64px; + margin-top: 50px; + } +} +.login-pf body { + background: #030303 url("../img/bg-login.jpg") repeat-x 50% 0; + background-size: auto; +} +@media (min-width: 768px) { + .login-pf body { + background-size: 100% auto; + } +} +.login-pf .container { + background-color: rgba(255, 255, 255, 0.055); + clear: right; + color: #fff; + padding-bottom: 40px; + padding-top: 20px; + width: auto; +} +@media (min-width: 768px) { + .login-pf .container { + bottom: 13%; + padding-left: 80px; + position: absolute; + width: 100%; + } +} +.login-pf .container [class^="alert"] { + background: transparent; + color: #fff; +} +.login-pf .container .details p:first-child { + border-top: 1px solid rgba(255, 255, 255, 0.3); + padding-top: 25px; + margin-top: 25px; +} +@media (min-width: 768px) { + .login-pf .container .details { + border-left: 1px solid rgba(255, 255, 255, 0.3); + padding-left: 40px; + } + .login-pf .container .details p:first-child { + border-top: 0; + padding-top: 0; + margin-top: 0; + } +} +.login-pf .container .details p { + margin-bottom: 2px; +} +.login-pf .container .form-horizontal .control-label { + font-size: 13px; + font-weight: 400; + text-align: left; +} +.login-pf .container .form-horizontal .form-group:last-child, +.login-pf .container .form-horizontal .form-group:last-child .help-block:last-child { + margin-bottom: 0; +} +.login-pf .container .help-block { + color: #fff; +} +@media (min-width: 768px) { + .login-pf .container .login { + padding-right: 40px; + } +} +.login-pf .container .submit { + text-align: right; +} +.navbar-pf { + background: #030303; + border: 0; + border-radius: 0; + border-top: 3px solid #39a5dc; + margin-bottom: 0; + min-height: 0; +} +.navbar-pf .navbar-brand { + color: #f5f5f5; + height: auto; + padding: 12px 0; + margin: 0 0 0 20px; +} +.navbar-pf .navbar-brand img { + display: block; +} +.navbar-pf .navbar-collapse { + border-top: 0; + box-shadow: none; + padding: 0; +} +.navbar-pf .navbar-header { + border-bottom: 1px solid #292929; + float: none; +} +.navbar-pf .navbar-nav { + margin: 0; +} +.navbar-pf .navbar-nav > .active > a, +.navbar-pf .navbar-nav > .active > a:hover, +.navbar-pf .navbar-nav > .active > a:focus { + background-color: #232323; + color: #f5f5f5; +} +.navbar-pf .navbar-nav > li > a { + color: #d1d1d1; + line-height: 1; + padding: 10px 20px; + text-shadow: none; +} +.navbar-pf .navbar-nav > li > a:hover, +.navbar-pf .navbar-nav > li > a:focus { + color: #f5f5f5; +} +.navbar-pf .navbar-nav > .open > a, +.navbar-pf .navbar-nav > .open > a:hover, +.navbar-pf .navbar-nav > .open > a:focus { + background-color: #232323; + color: #f5f5f5; +} +@media (max-width: 767px) { + .navbar-pf .navbar-nav .active .dropdown-menu, + .navbar-pf .navbar-nav .active .navbar-persistent, + .navbar-pf .navbar-nav .open .dropdown-menu { + background-color: #171717 !important; + margin-left: 0; + padding-bottom: 0; + padding-top: 0; + } + .navbar-pf .navbar-nav .active .dropdown-menu > .active > a, + .navbar-pf .navbar-nav .active .navbar-persistent > .active > a, + .navbar-pf .navbar-nav .open .dropdown-menu > .active > a, + .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open > a, + .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open > a, + .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open > a, + .navbar-pf .navbar-nav .active .dropdown-menu > .active > a:hover, + .navbar-pf .navbar-nav .active .navbar-persistent > .active > a:hover, + .navbar-pf .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open > a:hover, + .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open > a:hover, + .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open > a:hover, + .navbar-pf .navbar-nav .active .dropdown-menu > .active > a:focus, + .navbar-pf .navbar-nav .active .navbar-persistent > .active > a:focus, + .navbar-pf .navbar-nav .open .dropdown-menu > .active > a:focus, + .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open > a:focus, + .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open > a:focus, + .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open > a:focus { + background-color: #1f1f1f !important; + color: #f5f5f5; + } + .navbar-pf .navbar-nav .active .dropdown-menu > li > a, + .navbar-pf .navbar-nav .active .navbar-persistent > li > a, + .navbar-pf .navbar-nav .open .dropdown-menu > li > a { + background-color: transparent; + border: 0; + color: #d1d1d1; + outline: none; + padding-left: 30px; + } + .navbar-pf .navbar-nav .active .dropdown-menu > li > a:hover, + .navbar-pf .navbar-nav .active .navbar-persistent > li > a:hover, + .navbar-pf .navbar-nav .open .dropdown-menu > li > a:hover { + color: #f5f5f5; + } + .navbar-pf .navbar-nav .active .dropdown-menu .divider, + .navbar-pf .navbar-nav .active .navbar-persistent .divider, + .navbar-pf .navbar-nav .open .dropdown-menu .divider { + background-color: #292929; + margin: 0 1px; + } + .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-header, + .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-header, + .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-header { + padding-bottom: 0; + padding-left: 30px; + } + .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.open .dropdown-toggle, + .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open .dropdown-toggle, + .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.open .dropdown-toggle { + color: #f5f5f5; + } + .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu.pull-left, + .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.pull-left, + .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu.pull-left { + float: none !important; + } + .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu > a:after, + .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu > a:after, + .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu > a:after { + display: none; + } + .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-header, + .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-header, + .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-header { + padding-left: 45px; + } + .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-menu, + .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu, + .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-menu { + border: 0; + bottom: auto; + box-shadow: none; + display: block; + float: none; + margin: 0; + min-width: 0; + padding: 0; + position: relative; + left: auto; + right: auto; + top: auto; + } + .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-menu > li > a, + .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu > li > a, + .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-menu > li > a { + padding: 5px 15px 5px 45px; + line-height: 20px; + } + .navbar-pf .navbar-nav .active .dropdown-menu .dropdown-submenu .dropdown-menu .dropdown-menu > li > a, + .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu .dropdown-menu > li > a, + .navbar-pf .navbar-nav .open .dropdown-menu .dropdown-submenu .dropdown-menu .dropdown-menu > li > a { + padding-left: 60px; + } + .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu.open .dropdown-menu { + display: block; + } + .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu > a:after { + display: inline-block !important; + position: relative; + right: auto; + top: 1px; + } + .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-menu { + display: none; + } + .navbar-pf .navbar-nav .active .navbar-persistent .dropdown-submenu .dropdown-submenu > a:after { + display: none !important; + } + .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu { + background-color: #fff !important; + } + .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu > .active > a, + .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu > .active > a:active { + background-color: #def3ff !important; + border-color: #bee1f4 !important; + color: #363636 !important; + } + .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu > .active > a small, + .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu > .active > a:active small { + color: #9c9c9c !important; + } + .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu > .disabled > a { + color: #9c9c9c !important; + } + .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu > .selected > a, + .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu > .selected > a:active { + background-color: #0088ce !important; + border-color: #0088ce !important; + color: #fff !important; + } + .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu > .selected > a small, + .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu > .selected > a:active small { + color: rgba(255, 255, 255, 0.5) !important; + } + .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu li > a.opt { + border-bottom: 1px solid transparent; + border-top: 1px solid transparent; + color: #363636; + padding-left: 10px; + padding-right: 10px; + } + .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu li a:active small { + color: rgba(255, 255, 255, 0.5) !important; + } + .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu li a:hover small, + .navbar-pf .navbar-nav .context-bootstrap-select .open > .dropdown-menu li a:focus small { + color: #9c9c9c; + } + .navbar-pf .navbar-nav .context-bootstrap-select > .open > .dropdown-menu { + padding-bottom: 5px; + padding-top: 5px; + } +} +.navbar-pf .navbar-persistent { + display: none; +} +.navbar-pf .active > .navbar-persistent { + display: block; +} +.navbar-pf .navbar-primary { + float: none; +} +.navbar-pf .navbar-primary .context { + border-bottom: 1px solid #292929; +} +.navbar-pf .navbar-primary .context.context-bootstrap-select .bootstrap-select.btn-group, +.navbar-pf .navbar-primary .context.context-bootstrap-select .bootstrap-select.btn-group[class*="span"] { + margin: 8px 20px 9px; + width: auto; +} +.navbar-pf .navbar-primary > li > .navbar-persistent > .dropdown-submenu > a { + position: relative; +} +.navbar-pf .navbar-primary > li > .navbar-persistent > .dropdown-submenu > a:after { + content: "\f107"; + display: inline-block; + font-family: "FontAwesome"; + font-weight: normal; +} +@media (max-width: 767px) { + .navbar-pf .navbar-primary > li > .navbar-persistent > .dropdown-submenu > a:after { + height: 10px; + margin-left: 4px; + vertical-align: baseline; + } +} +.navbar-pf .navbar-toggle { + border: 0; + margin: 0; + padding: 10px 20px; +} +.navbar-pf .navbar-toggle:hover, +.navbar-pf .navbar-toggle:focus { + background-color: transparent; + outline: none; +} +.navbar-pf .navbar-toggle:hover .icon-bar, +.navbar-pf .navbar-toggle:focus .icon-bar { + box-shadow: 0 0 3px #fff; +} +.navbar-pf .navbar-toggle .icon-bar { + background-color: #fff; +} +.navbar-pf .navbar-utility { + border-bottom: 1px solid #292929; +} +.navbar-pf .navbar-utility li.dropdown > .dropdown-toggle { + padding-left: 36px; + position: relative; +} +.navbar-pf .navbar-utility li.dropdown > .dropdown-toggle .pficon-user { + left: 20px; + position: absolute; + top: 10px; +} +@media (max-width: 767px) { + .navbar-pf .navbar-utility > li + li { + border-top: 1px solid #292929; + } +} +@media (min-width: 768px) { + .navbar-pf .navbar-brand { + padding: 8px 0 7px; + } + .navbar-pf .navbar-nav > li > a { + padding-bottom: 14px; + padding-top: 14px; + } + .navbar-pf .navbar-persistent { + font-size: 14px; + } + .navbar-pf .navbar-primary { + font-size: 14px; + background-image: linear-gradient(to bottom, #1d1d1d 0%, #030303 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff1d1d1d', endColorstr='#ff030303', GradientType=0); + } + .navbar-pf .navbar-primary.persistent-secondary .context .dropdown-menu { + top: auto; + } + .navbar-pf .navbar-primary.persistent-secondary .dropup .dropdown-menu { + bottom: -5px; + top: auto; + } + .navbar-pf .navbar-primary.persistent-secondary > li { + position: static; + } + .navbar-pf .navbar-primary.persistent-secondary > li.active { + margin-bottom: 32px; + } + .navbar-pf .navbar-primary.persistent-secondary > li.active > .navbar-persistent { + display: block; + left: 0; + position: absolute; + } + .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent { + background: #f5f5f5; + border-bottom: 1px solid #d1d1d1; + padding: 0; + width: 100%; + } + .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent a { + text-decoration: none !important; + } + .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.active:before, + .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.active:hover:before { + background: #0088ce; + bottom: -1px; + content: ""; + display: block; + height: 2px; + left: 20px; + position: absolute; + right: 20px; + } + .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.active > a, + .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.active > a:hover, + .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.active:hover > a { + color: #0088ce !important; + } + .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.active .active > a { + color: #f5f5f5; + } + .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.dropdown-submenu:hover > .dropdown-menu { + display: none; + } + .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.dropdown-submenu.open > .dropdown-menu { + display: block; + left: 20px; + margin-top: 1px; + top: 100%; + } + .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.dropdown-submenu.open > .dropdown-toggle { + color: #252525; + } + .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.dropdown-submenu.open > .dropdown-toggle:after { + border-top-color: #252525; + } + .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.dropdown-submenu > .dropdown-toggle { + padding-right: 35px !important; + } + .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.dropdown-submenu > .dropdown-toggle:after { + position: absolute; + right: 20px; + top: 10px; + } + .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li:hover:before, + .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.open:before { + background: #bbb; + bottom: -1px; + content: ""; + display: block; + height: 2px; + left: 20px; + position: absolute; + right: 20px; + } + .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li:hover > a, + .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.open > a { + color: #252525; + } + .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li:hover > a:after, + .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li.open > a:after { + border-top-color: #252525; + } + .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li > a { + background-color: transparent; + display: block; + line-height: 1; + padding: 9px 20px; + } + .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li > a.dropdown-toggle { + padding-right: 35px; + } + .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li > a.dropdown-toggle:after { + font-size: 15px; + position: absolute; + right: 20px; + top: 9px; + } + .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li > a:hover { + color: #252525; + } + .navbar-pf .navbar-primary.persistent-secondary > li > .navbar-persistent > li a { + color: #4d5258; + } + .navbar-pf .navbar-primary > li > a { + border-bottom: 1px solid transparent; + border-top: 1px solid transparent; + position: relative; + margin: -1px 0 0; + } + .navbar-pf .navbar-primary > li > a:hover { + background-color: #1d1d1d; + border-top-color: #5c5c5c; + color: #d1d1d1; + background-image: linear-gradient(to bottom, #363636 0%, #1d1d1d 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff363636', endColorstr='#ff1d1d1d', GradientType=0); + } + .navbar-pf .navbar-primary > .active > a, + .navbar-pf .navbar-primary > .active > a:hover, + .navbar-pf .navbar-primary > .active > a:focus, + .navbar-pf .navbar-primary > .open > a, + .navbar-pf .navbar-primary > .open > a:hover, + .navbar-pf .navbar-primary > .open > a:focus { + background-color: #303030; + border-bottom-color: #303030; + border-top-color: #696969; + box-shadow: none; + color: #f5f5f5; + background-image: linear-gradient(to bottom, #434343 0%, #303030 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff434343', endColorstr='#ff303030', GradientType=0); + } + .navbar-pf .navbar-primary li.context.context-bootstrap-select .filter-option { + max-width: 160px; + text-overflow: ellipsis; + } + .navbar-pf .navbar-primary li.context.dropdown { + border-bottom: 0; + } + .navbar-pf .navbar-primary li.context > a, + .navbar-pf .navbar-primary li.context.context-bootstrap-select { + background-color: #1f1f1f; + border-bottom-color: #3e3e3e; + border-right: 1px solid #3e3e3e; + border-top-color: #3b3b3b; + font-weight: 600; + background-image: linear-gradient(to bottom, #323232 0%, #1f1f1f 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff323232', endColorstr='#ff1f1f1f', GradientType=0); + } + .navbar-pf .navbar-primary li.context > a:hover, + .navbar-pf .navbar-primary li.context.context-bootstrap-select:hover { + background-color: #323232; + border-bottom-color: #4a4a4a; + border-right-color: #4a4a4a; + border-top-color: #4a4a4a; + background-image: linear-gradient(to bottom, #3f3f3f 0%, #323232 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3f3f3f', endColorstr='#ff323232', GradientType=0); + } + .navbar-pf .navbar-primary li.context.open > a { + background-color: #454545; + border-bottom-color: #575757; + border-right-color: #575757; + border-top-color: #5a5a5a; + background-image: linear-gradient(to bottom, #4c4c4c 0%, #454545 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff4c4c4c', endColorstr='#ff454545', GradientType=0); + } + .navbar-pf .navbar-utility { + border-bottom: 0; + font-size: 11px; + position: absolute; + right: 0; + top: 0; + } + .navbar-pf .navbar-utility > .active > a, + .navbar-pf .navbar-utility > .active > a:hover, + .navbar-pf .navbar-utility > .active > a:focus, + .navbar-pf .navbar-utility > .open > a, + .navbar-pf .navbar-utility > .open > a:hover, + .navbar-pf .navbar-utility > .open > a:focus { + background: #363636; + color: #d1d1d1; + } + .navbar-pf .navbar-utility > li > a { + border-left: 1px solid #2b2b2b; + color: #d1d1d1 !important; + padding: 7px 10px; + } + .navbar-pf .navbar-utility > li > a:hover { + background: #232323; + border-left-color: #373737; + } + .navbar-pf .navbar-utility > li.open > a { + border-left-color: #444444; + color: #f5f5f5 !important; + } + .navbar-pf .navbar-utility li.dropdown > .dropdown-toggle { + padding-left: 26px; + } + .navbar-pf .navbar-utility li.dropdown > .dropdown-toggle .pficon-user { + left: 10px; + top: 7px; + } + .navbar-pf .navbar-utility .open .dropdown-menu { + left: auto; + right: 0; + } + .navbar-pf .navbar-utility .open .dropdown-menu .dropdown-menu { + left: auto; + right: 100%; + } + .navbar-pf .navbar-utility .open .dropdown-menu { + border-top-width: 0; + } + .navbar-pf .open.bootstrap-select .dropdown-menu, + .navbar-pf .open .dropdown-submenu > .dropdown-menu { + border-top-width: 1px !important; + } +} +@media (max-width: 360px) { + .navbar-pf .navbar-brand { + margin-left: 10px; + width: 75%; + } + .navbar-pf .navbar-brand img { + height: auto; + max-width: 100%; + } + .navbar-pf .navbar-toggle { + padding-left: 0; + } +} +.navbar-pf-alt { + background-color: #030303; + background-image: "bg-navbar-pf-alt.svg"; + background-repeat: no-repeat; + background-size: auto 100%; + border: none; + border-radius: 0; + border-top: 2px solid #39a5dc; + margin-bottom: 0; +} +.navbar-pf-alt .infotip.bottom-right .arrow { + left: 90%; +} +.layout-pf-alt-fixed .navbar-pf-alt { + left: 0; + position: fixed; + right: 0; + top: 0; + z-index: 1030; +} +.navbar-pf-alt .nav.navbar-nav > li > .dropdown-menu.infotip { + margin-top: 0; +} +.navbar-pf-alt .nav .nav-item-iconic { + cursor: pointer; + line-height: 1; + max-height: 58px; + padding: 21px 12px; + position: relative; +} +.navbar-pf-alt .nav .nav-item-iconic:hover, +.navbar-pf-alt .nav .nav-item-iconic:focus { + background-color: transparent; +} +.navbar-pf-alt .nav .nav-item-iconic:hover .caret, +.navbar-pf-alt .nav .nav-item-iconic:focus .caret, +.navbar-pf-alt .nav .nav-item-iconic:hover .fa, +.navbar-pf-alt .nav .nav-item-iconic:focus .fa, +.navbar-pf-alt .nav .nav-item-iconic:hover .glyphicon, +.navbar-pf-alt .nav .nav-item-iconic:focus .glyphicon, +.navbar-pf-alt .nav .nav-item-iconic:hover .pficon, +.navbar-pf-alt .nav .nav-item-iconic:focus .pficon { + color: #fff; +} +.navbar-pf-alt .nav .nav-item-iconic .badge { + background-color: #cc0000; + border-radius: 20px; + color: #fff; + cursor: pointer; + font-size: 9px; + font-weight: 700; + margin: 0 0 -11px -12px; + min-width: 0; + padding: 2px 4px; +} +.navbar-pf-alt .nav .nav-item-iconic .caret, +.navbar-pf-alt .nav .nav-item-iconic .fa, +.navbar-pf-alt .nav .nav-item-iconic .pficon { + color: #d1d1d1; + font-size: 16px; +} +.navbar-pf-alt .nav .nav-item-iconic .caret { + font-size: 12px; + width: auto; +} +.navbar-pf-alt .nav .open > .nav-item-iconic, +.navbar-pf-alt .nav .open > .nav-item-iconic:hover, +.navbar-pf-alt .nav .open > .nav-item-iconic:focus { + background: transparent; +} +.navbar-pf-alt .nav .open > .nav-item-iconic .caret, +.navbar-pf-alt .nav .open > .nav-item-iconic:hover .caret, +.navbar-pf-alt .nav .open > .nav-item-iconic:focus .caret, +.navbar-pf-alt .nav .open > .nav-item-iconic .fa, +.navbar-pf-alt .nav .open > .nav-item-iconic:hover .fa, +.navbar-pf-alt .nav .open > .nav-item-iconic:focus .fa, +.navbar-pf-alt .nav .open > .nav-item-iconic .pficon, +.navbar-pf-alt .nav .open > .nav-item-iconic:hover .pficon, +.navbar-pf-alt .nav .open > .nav-item-iconic:focus .pficon { + color: #fff; +} +.navbar-pf-alt .navbar-brand { + color: #fff; + height: auto; + margin: 0 0 0 25px; + min-height: 35px; + padding: 11px 0 12px; +} +.navbar-pf-alt .navbar-brand .navbar-brand-name { + display: inline; + margin-left: 0 15px 0 0; + margin-right: 0 15px 0 0; +} +@media (max-width: 480px) { + .navbar-pf-alt .navbar-brand .navbar-brand-name { + display: none; + } +} +.navbar-pf-alt .navbar-brand .navbar-brand-icon { + display: inline; + margin-left: 0 15px 0 0; + margin-right: 0 15px 0 0; +} +.navbar-pf-alt .navbar-iconic { + margin-right: 0; +} +.navbar-pf-alt .navbar-toggle { + border: 0; + display: block; + float: left; + margin: 13px 15px; +} +.navbar-pf-alt .navbar-toggle:hover .icon-bar, +.navbar-pf-alt .navbar-toggle:focus .icon-bar { + background: #fff; +} +.navbar-pf-alt .navbar-toggle + .navbar-brand { + margin-left: 0; +} +.navbar-pf-alt .navbar-toggle .icon-bar { + background: #d1d1d1; +} +.navbar-pf-vertical { + background-color: #1d1d1d; + border: none; + border-radius: 0; + border-top: 2px solid #39a5dc; + margin-bottom: 0; +} +.navbar-pf-vertical .infotip.bottom-right .arrow { + left: 90%; +} +.layout-pf-fixed .navbar-pf-vertical { + left: 0; + position: fixed; + right: 0; + top: 0; + z-index: 1030; +} +.navbar-pf-vertical .nav.navbar-nav > li > .dropdown-menu.infotip { + margin-top: 0; +} +.navbar-pf-vertical .nav .nav-item-iconic { + cursor: pointer; + line-height: 1; + max-height: 58px; + padding: 21px 12px; + position: relative; +} +.navbar-pf-vertical .nav .nav-item-iconic:hover, +.navbar-pf-vertical .nav .nav-item-iconic:focus { + background-color: transparent; +} +.navbar-pf-vertical .nav .nav-item-iconic:hover .caret, +.navbar-pf-vertical .nav .nav-item-iconic:focus .caret, +.navbar-pf-vertical .nav .nav-item-iconic:hover .fa, +.navbar-pf-vertical .nav .nav-item-iconic:focus .fa, +.navbar-pf-vertical .nav .nav-item-iconic:hover .glyphicon, +.navbar-pf-vertical .nav .nav-item-iconic:focus .glyphicon, +.navbar-pf-vertical .nav .nav-item-iconic:hover .pficon, +.navbar-pf-vertical .nav .nav-item-iconic:focus .pficon { + color: #fff; +} +.navbar-pf-vertical .nav .nav-item-iconic .badge { + background-color: #cc0000; + border-radius: 20px; + color: #fff; + cursor: pointer; + font-size: 9px; + font-weight: 700; + margin: 0 0 -11px -12px; + min-width: 0; + padding: 2px 4px; +} +.navbar-pf-vertical .nav .nav-item-iconic .caret, +.navbar-pf-vertical .nav .nav-item-iconic .fa, +.navbar-pf-vertical .nav .nav-item-iconic .pficon { + color: #d1d1d1; + font-size: 16px; +} +.navbar-pf-vertical .nav .nav-item-iconic .caret { + font-size: 12px; + width: auto; +} +.navbar-pf-vertical .nav .open > .nav-item-iconic, +.navbar-pf-vertical .nav .open > .nav-item-iconic:hover, +.navbar-pf-vertical .nav .open > .nav-item-iconic:focus { + background: transparent; +} +.navbar-pf-vertical .nav .open > .nav-item-iconic .caret, +.navbar-pf-vertical .nav .open > .nav-item-iconic:hover .caret, +.navbar-pf-vertical .nav .open > .nav-item-iconic:focus .caret, +.navbar-pf-vertical .nav .open > .nav-item-iconic .fa, +.navbar-pf-vertical .nav .open > .nav-item-iconic:hover .fa, +.navbar-pf-vertical .nav .open > .nav-item-iconic:focus .fa, +.navbar-pf-vertical .nav .open > .nav-item-iconic .pficon, +.navbar-pf-vertical .nav .open > .nav-item-iconic:hover .pficon, +.navbar-pf-vertical .nav .open > .nav-item-iconic:focus .pficon { + color: #fff; +} +.navbar-pf-vertical .navbar-brand { + color: #fff; + height: auto; + margin: 0 0 0 25px; + min-height: 35px; + padding: 11px 0 12px; +} +.navbar-pf-vertical .navbar-brand .navbar-brand-name { + display: inline-block; + margin: 0 15px 0 0; +} +@media (max-width: 480px) { + .navbar-pf-vertical .navbar-brand .navbar-brand-name { + display: none; + } +} +.navbar-pf-vertical .navbar-brand .navbar-brand-icon { + display: inline-block; + margin: 0 15px 0 0; +} +.navbar-pf-vertical .navbar-iconic { + margin-right: 0; +} +.navbar-pf-vertical .navbar-toggle { + border: 0; + display: block; + float: left; + margin: 13px 15px; +} +.navbar-pf-vertical .navbar-toggle:hover .icon-bar, +.navbar-pf-vertical .navbar-toggle:focus .icon-bar { + background: #fff; +} +.navbar-pf-vertical .navbar-toggle + .navbar-brand { + margin-left: 0; +} +.navbar-pf-vertical .navbar-toggle .icon-bar { + background: #d1d1d1; +} +.layout-pf-alt-fixed.transitions .nav-pf-vertical-alt { + transition: all 200ms cubic-bezier(0.35, 0, 0.25, 1); +} +.layout-pf-alt-fixed.transitions .nav-pf-vertical-alt.collapsed .list-group-item .list-group-item-value { + transition: opacity 0ms 100ms, opacity 100ms linear; +} +.layout-pf-alt-fixed.transitions .nav-pf-vertical-alt .list-group-item .badge { + transition: all 200ms cubic-bezier(0.35, 0, 0.25, 1); +} +.layout-pf-alt-fixed.transitions .nav-pf-vertical-alt .list-group-item .list-group-item-value { + transition: opacity 500ms ease-out; + transition-delay: 150ms; +} +.nav-pf-vertical-alt { + background: #fff; +} +.ie9.layout-pf-alt-fixed .nav-pf-vertical-alt { + box-sizing: content-box; +} +.layout-pf-alt-fixed .nav-pf-vertical-alt { + border-right: 1px solid #d1d1d1; + bottom: 0; + overflow-x: hidden; + overflow-y: auto; + left: 0; + position: fixed; + top: 60px; + width: 250px; + z-index: 1030; +} +.layout-pf-alt-fixed .nav-pf-vertical-alt.collapsed { + width: 75px !important; +} +.layout-pf-alt-fixed .nav-pf-vertical-alt.collapsed .list-group-item .badge { + padding: 2px 3px; + right: 21px; + top: 36px; +} +.layout-pf-alt-fixed .nav-pf-vertical-alt.collapsed .list-group-item .list-group-item-value { + opacity: 0; +} +.layout-pf-alt-fixed .nav-pf-vertical-alt.hidden { + display: none; +} +.layout-pf-alt-fixed .nav-pf-vertical-alt.hidden.show-mobile-nav { + box-shadow: 0 0 3px rgba(3, 3, 3, 0.15); + display: block !important; +} +.layout-pf-alt-fixed-with-footer .nav-pf-vertical-alt { + bottom: 37px; +} +.nav-pf-vertical-alt .list-group { + border-top: 0; + margin-bottom: 0; +} +.nav-pf-vertical-alt .list-group-item { + padding: 0; +} +.nav-pf-vertical-alt .list-group-item a { + color: #363636; + display: block; + font-size: 14px; + height: 63px; + padding: 17px 20px 17px 25px; + position: relative; + white-space: nowrap; +} +.nav-pf-vertical-alt .list-group-item a:focus { + color: #363636; + text-decoration: none; +} +.nav-pf-vertical-alt .list-group-item a:hover { + color: #39a5dc; + text-decoration: none; +} +.nav-pf-vertical-alt .list-group-item.active { + background-color: #fff; + border-color: #f5f5f5; +} +.nav-pf-vertical-alt .list-group-item.active:before { + background: #39a5dc; + content: " "; + display: block; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 5px; +} +.nav-pf-vertical-alt .list-group-item.active a { + color: #39a5dc; +} +.nav-pf-vertical-alt .list-group-item .badge { + background: #363636; + border: 1px solid #fff; + border-radius: 3px; + color: #fff; + font-weight: 700; + font-size: 9px; + padding: 5px; + position: absolute; + right: 15px; + text-align: center; + top: 21px; +} +.nav-pf-vertical-alt .list-group-item .badge.notifications { + background: #cc0000; +} +.nav-pf-vertical-alt .list-group-item .fa, +.nav-pf-vertical-alt .list-group-item .glyphicon, +.nav-pf-vertical-alt .list-group-item .pficon { + float: left; + font-size: 18px; + line-height: 30px; + margin-right: 10px; + text-align: center; + width: 18px; +} +.nav-pf-vertical-alt .list-group-item .list-group-item-value { + display: inline-block; + line-height: 30px; + opacity: 1; + overflow: hidden; + text-overflow: ellipsis; + width: 140px; +} +.nav-pf-vertical-alt .list-group-item-separator { + border-top-width: 5px; +} +.sidebar-pf .nav-pf-vertical-alt { + margin-left: -20px; + margin-right: -20px; +} +.drawer-pf { + background-color: #fafafa; + border: 1px solid #d1d1d1; + box-shadow: 0 6px 12px rgba(3, 3, 3, 0.175); + overflow-y: auto; + position: absolute; + right: 0; + width: 320px; + z-index: 2; +} +.drawer-pf .panel { + border-bottom: none; + border-left: none; + border-right: none; +} +.drawer-pf .panel-group .panel-heading + .panel-collapse .panel-body { + border-top: none; + border-bottom: 1px solid #d1d1d1; + padding: 0; +} +.drawer-pf .panel-counter { + display: block; + font-style: italic; + line-height: 1.2; + padding-left: 18px; + padding-top: 5px; +} +.drawer-pf .panel-heading { + border-bottom: 1px solid #d1d1d1; +} +.drawer-pf .panel-group { + bottom: 0; + margin-bottom: 0; + position: absolute; + top: 25px; + width: 100%; +} +.drawer-pf .panel-title a { + cursor: pointer; + display: block; +} +.drawer-pf.drawer-pf-expanded { + left: 270px; + width: inherit; +} +.drawer-pf.drawer-pf-expanded .drawer-pf-toggle-expand:before { + content: "\f101"; +} +.drawer-pf-toggle-expand { + color: inherit; + cursor: pointer; + left: 0; + padding: 2px 5px; + position: absolute; +} +.drawer-pf-toggle-expand:before { + content: "\f100"; + font-family: "FontAwesome"; +} +.drawer-pf-toggle-expand:hover, +.drawer-pf-toggle-expand:focus { + color: inherit; + text-decoration: none; +} +.drawer-pf-action .btn-link { + color: #0088ce; + padding: 10px 0; +} +.drawer-pf-action .btn-link:hover { + color: #00659c; +} +.drawer-pf-loading { + color: #4d5258; + font-size: 14px; + padding: 20px 15px; +} +.drawer-pf-notification { + border-bottom: 1px solid #d1d1d1; + padding: 15px; +} +.drawer-pf-notification .date { + border-right: 1px solid #aaa; + display: inline-block; + line-height: 1; + margin-right: 5px; + padding-right: 9px; +} +.drawer-pf-notification .pficon { + font-size: 14px; + margin-top: 3px; +} +.drawer-pf-notification:last-of-type { + border-bottom: none; +} +.drawer-pf-notification:hover { + background-color: #def3ff; +} +.drawer-pf-notification.unread .drawer-pf-notification-message { + font-weight: bold; +} +.drawer-pf-notification.expanded-notification .date { + border-right: none; + padding-right: 0; +} +.drawer-pf-notification-info, +.drawer-pf-notification-message { + display: block; + padding-left: 27px; + padding-right: 19px; +} +.expanded-notification .drawer-pf-notification-info, +.expanded-notification .drawer-pf-notification-message { + display: inline-block; +} +.drawer-pf-notifications-non-clickable .drawer-pf-notification:hover { + background-color: #fff; +} +.drawer-pf-title { + background-color: #fafafa; + border-bottom: 1px solid #d1d1d1; + position: absolute; + width: 318px; +} +.drawer-pf-title h3 { + font-size: 12px; + margin: 0; + padding: 6px 15px; +} +/* Exclusive styles to work with Vertical Navigation */ +.navbar-pf-vertical .drawer-pf { + height: calc(100vh - 80px); + top: 58px; +} +.navbar-pf-vertical .nav .drawer-pf-trigger .drawer-pf-trigger-icon { + border-left: 1px solid #2b2b2b; + border-right: 1px solid #2b2b2b; + padding-left: 15px; + padding-right: 15px; +} +.navbar-pf-vertical .nav .drawer-pf-trigger.open .drawer-pf-trigger-icon { + background-color: #232323; +} +/* Exclusive styles to work with Horizontal Navigation */ +.navbar-pf .drawer-pf { + height: calc(100vh - 46px); + top: 26px; +} +.navbar-pf .drawer-pf-trigger-icon { + cursor: pointer; +} +.search-pf.has-button { + border-collapse: separate; + display: table; +} +.search-pf.has-button .form-group { + display: table-cell; + width: 100%; +} +.search-pf.has-button .form-group .btn { + box-shadow: none; + float: left; + margin-left: -1px; +} +.search-pf.has-button .form-group .btn.btn-lg { + font-size: 14.5px; +} +.search-pf.has-button .form-group .btn.btn-sm { + font-size: 10.7px; +} +.search-pf.has-button .form-group .form-control { + float: left; +} +.search-pf .has-clear .clear { + background: rgba(255, 255, 255, 0); + border: 0; + height: 25px; + line-height: 1; + padding: 0; + position: absolute; + right: 1px; + top: 1px; + width: 28px; +} +.search-pf .has-clear .clear:focus { + outline: none; +} +.search-pf .has-clear .form-control { + padding-right: 30px; +} +.search-pf .has-clear .form-control::-ms-clear { + display: none; +} +.search-pf .has-clear .input-lg + .clear { + height: 31px; + width: 28px; +} +.search-pf .has-clear .input-sm + .clear { + height: 20px; + width: 28px; +} +.search-pf .has-clear .input-sm + .clear span { + font-size: 10px; +} +.search-pf .has-clear .search-pf-input-group { + position: relative; +} +.sidebar-header { + border-bottom: 1px solid #ececec; + padding-bottom: 11px; + margin: 50px 0 20px; +} +.sidebar-header .actions { + margin-top: -2px; +} +.sidebar-pf .sidebar-header + .list-group { + border-top: 0; + margin-top: -10px; +} +.sidebar-pf .sidebar-header + .list-group .list-group-item { + background: transparent; + border-color: #ececec; + padding-left: 0; +} +.sidebar-pf .sidebar-header + .list-group .list-group-item-heading { + font-size: 12px; +} +.sidebar-pf .nav-category h2 { + color: #9c9c9c; + font-size: 12px; + font-weight: 400; + line-height: 21px; + margin: 0; + padding: 8px 0; +} +.sidebar-pf .nav-category + .nav-category { + margin-top: 10px; +} +.sidebar-pf .nav-pills > li.active > a { + background: #0088ce !important; + border-color: #0088ce !important; + color: #fff; +} +@media (min-width: 768px) { + .sidebar-pf .nav-pills > li.active > a:after { + content: "\f105"; + font-family: "FontAwesome"; + display: block; + position: absolute; + right: 10px; + top: 1px; + } +} +.sidebar-pf .nav-pills > li.active > a .fa { + color: #fff; +} +.sidebar-pf .nav-pills > li > a { + border-bottom: 1px solid transparent; + border-radius: 0; + border-top: 1px solid transparent; + color: #363636; + font-size: 13px; + line-height: 21px; + padding: 1px 20px; +} +.sidebar-pf .nav-pills > li > a:hover { + background: #def3ff; + border-color: #bee1f4; +} +.sidebar-pf .nav-pills > li > a .fa { + color: #6a7079; + font-size: 15px; + margin-right: 10px; + text-align: center; + vertical-align: middle; + width: 15px; +} +.sidebar-pf .nav-stacked { + margin-left: -20px; + margin-right: -20px; +} +.sidebar-pf .nav-stacked li + li { + margin-top: 0; +} +.sidebar-pf .panel { + background: transparent; +} +.sidebar-pf .panel-body { + padding: 6px 20px; +} +.sidebar-pf .panel-body .nav-pills > li > a { + padding-left: 37px; +} +.sidebar-pf .panel-heading { + padding: 9px 20px; +} +.sidebar-pf .panel-title { + font-size: 12px; +} +.sidebar-pf .panel-title > a:before { + display: inline-block; + margin-left: 1px; + margin-right: 4px; + width: 9px; +} +.sidebar-pf .panel-title > a.collapsed:before { + margin-left: 3px; + margin-right: 2px; +} +@media (min-width: 767px) { + .sidebar-header-bleed-left { + margin-left: -20px; + } + .sidebar-header-bleed-left > h2 { + margin-left: 20px; + } + .sidebar-header-bleed-right { + margin-right: -20px; + } + .sidebar-header-bleed-right .actions { + margin-right: 20px; + } + .sidebar-header-bleed-right > h2 { + margin-right: 20px; + } + .sidebar-header-bleed-right + .list-group { + margin-right: -20px; + } + .sidebar-pf .panel-group .panel-default, + .sidebar-pf .treeview { + border-left: 0; + border-right: 0; + margin-left: -20px; + margin-right: -20px; + } + .sidebar-pf .treeview { + margin-top: 5px; + } + .sidebar-pf .treeview .list-group-item { + padding-left: 20px; + padding-right: 20px; + } + .sidebar-pf .treeview .list-group-item.node-selected:after { + content: "\f105"; + font-family: "FontAwesome"; + display: block; + position: absolute; + right: 10px; + top: 1px; + } +} +@media (min-width: 768px) { + .sidebar-pf { + background: #fafafa; + } + .sidebar-pf.sidebar-pf-left { + border-right: 1px solid #d1d1d1; + } + .sidebar-pf.sidebar-pf-right { + border-left: 1px solid #d1d1d1; + } + .sidebar-pf > .nav-category, + .sidebar-pf > .nav-stacked { + margin-top: 5px; + } +} +@keyframes rotation { + from { + transform: rotate(0deg); + } + to { + transform: rotate(359deg); + } +} +.spinner { + animation: rotation 600ms infinite linear; + border-bottom: 4px solid rgba(3, 3, 3, 0.25); + border-left: 4px solid rgba(3, 3, 3, 0.25); + border-right: 4px solid rgba(3, 3, 3, 0.25); + border-radius: 100%; + border-top: 4px solid rgba(3, 3, 3, 0.75); + height: 24px; + margin: 0 auto; + position: relative; + width: 24px; +} +.spinner.spinner-inline { + display: inline-block; + margin-right: 3px; +} +.spinner.spinner-lg { + border-width: 5px; + height: 30px; + width: 30px; +} +.spinner.spinner-sm { + border-width: 3px; + height: 18px; + width: 18px; +} +.spinner.spinner-xs { + border-width: 2px; + height: 12px; + width: 12px; +} +.spinner.spinner-inverse { + border-bottom-color: rgba(255, 255, 255, 0.25); + border-left-color: rgba(255, 255, 255, 0.25); + border-right-color: rgba(255, 255, 255, 0.25); + border-top-color: rgba(255, 255, 255, 0.75); +} +.ie9 .spinner { + background: url("../img/spinner.gif") no-repeat; + border: 0; +} +.ie9 .spinner.spinner-inverse { + background-image: url("../img/spinner-inverse.gif"); +} +.ie9 .spinner.spinner-inverse-lg { + background-image: url("../img/spinner-inverse-lg.gif"); +} +.ie9 .spinner.spinner-inverse-sm { + background-image: url("../img/spinner-inverse-sm.gif"); +} +.ie9 .spinner.spinner-inverse-xs { + background-image: url("../img/spinner-inverse-xs.gif"); +} +.ie9 .spinner.spinner-lg { + background-image: url("../img/spinner-lg.gif"); +} +.ie9 .spinner.spinner-sm { + background-image: url("../img/spinner-sm.gif"); +} +.ie9 .spinner.spinner-xs { + background-image: url("../img/spinner-xs.gif"); +} +.prettyprint .atn, +.prettyprint .com, +.prettyprint .fun, +.prettyprint .var { + color: #3f9c35; +} +.prettyprint .atv, +.prettyprint .str { + color: #a30000; +} +.prettyprint .clo, +.prettyprint .dec, +.prettyprint .kwd, +.prettyprint .opn, +.prettyprint .pln, +.prettyprint .pun { + color: #363636; +} +.prettyprint .lit, +.prettyprint .tag, +.prettyprint .typ { + color: #00659c; +} +.prettyprint ol.linenums { + margin-bottom: 0; +} +table.dataTable { + height: 100%; + margin-bottom: 0; + max-width: none !important; +} +table.dataTable tbody > tr > td.table-view-pf-actions { + padding: 0; + vertical-align: middle; +} +table.dataTable tbody > tr:hover > td.table-view-pf-actions { + background-color: #f5f5f5; + border-bottom-color: #d1d1d1; +} +table.dataTable tbody > tr.selected { + color: #fff; + background-color: #0088ce; +} +table.dataTable tbody > tr.selected > td { + border-bottom-color: #00659c; +} +table.dataTable tbody > tr.selected > td.table-view-pf-actions { + background-color: #f5f5f5; + border-bottom-color: #d1d1d1; +} +table.dataTable tbody > tr.selected:hover > td { + background-color: inherit; + border-bottom-color: #00659c; +} +table.dataTable tbody > tr.selected:hover > td.table-view-pf-actions { + background-color: #f5f5f5; + border-bottom-color: #d1d1d1; +} +table.dataTable thead .sorting, +table.dataTable thead .sorting_asc, +table.dataTable thead .sorting_desc, +table.dataTable thead .sorting_asc_disabled, +table.dataTable thead .sorting_desc_disabled { + cursor: pointer; +} +table.dataTable thead .sorting_asc, +table.dataTable thead .sorting_desc { + color: #0088ce !important; + position: relative; +} +table.dataTable thead .sorting_asc:after, +table.dataTable thead .sorting_desc:after { + content: "\f107"; + font-family: "FontAwesome"; + font-size: 10px; + font-weight: normal; + height: 9px; + left: 7px; + line-height: 12px; + position: relative; + top: 2px; + vertical-align: baseline; + width: 12px; +} +table.dataTable thead .sorting_asc:before, +table.dataTable thead .sorting_desc:before { + background: #0088ce; + content: ""; + height: 2px; + position: absolute; + left: 0; + top: 0; + width: 100%; +} +table.dataTable thead .sorting_asc:after { + content: "\f106"; + top: -3px; +} +table.dataTable th:active { + outline: none; +} +.table-view-pf-empty.blank-slate-pf { + background-color: #f5f5f5; + border: 1px solid #d1d1d1; + border-radius: 0; + margin-top: -1px; +} +.table-view-pf-toolbar.toolbar-pf { + background-color: #f5f5f5; + border-bottom: none; + border-left: 1px solid #d1d1d1; + border-right: 1px solid #d1d1d1; + border-top: 1px solid #d1d1d1; + box-shadow: none; + margin-left: 0px; + margin-right: 0px; +} +.table-view-pf-toolbar.toolbar-pf .toolbar-pf-results { + border-top: 1px solid #d1d1d1; + min-height: 40px; + line-height: 40px; +} +.table-view-pf-toolbar-external.toolbar-pf { + border-bottom: none; + border-top: none; + box-shadow: none; +} +.table-view-pf-toolbar-external.toolbar-pf .toolbar-pf-results { + border-top: 1px solid #d1d1d1; + min-height: 40px; + line-height: 40px; +} +.table-view-pf-actions { + background-color: #f1f1f1; + height: 100%; +} +.table-view-pf-actions .btn, +.table-view-pf-actions .dropdown-toggle { + border: none; + box-shadow: none; + height: 100%; + width: 100%; +} +.table-view-pf-actions .dropdown, +.table-view-pf-actions .table-view-pf-btn { + height: 100%; +} +.table-view-pf-actions .dropdown-menu.dropdown-menu-right { + right: -5px; +} +.table-view-pf-actions:last-child { + width: 24px; +} +.table-view-pf-select { + width: 33px; +} +.table-view-pf-select-results { + text-align: right; +} +.bootstrap-datetimepicker-widget a[data-action] { + border: 0; + box-shadow: none; + color: #363636; + display: block; + padding-bottom: 4px; + padding-top: 4px; +} +.bootstrap-datetimepicker-widget a[data-action]:hover { + color: #0088ce; +} +.bootstrap-datetimepicker-widget.dropdown-menu { + left: 0!important; + padding: 0; + top: 23px!important; + width: calc(100% - 25px); +} +.bootstrap-datetimepicker-widget.dropdown-menu:before, +.bootstrap-datetimepicker-widget.dropdown-menu:after { + content: none; +} +.bootstrap-datetimepicker-widget .timepicker-hour { + width: 100%; +} +.bootstrap-datetimepicker-widget .timepicker-hour:after { + content: ":"; + float: right; +} +.timepicker-hours table td, +.timepicker-minutes table td { + font-weight: bold; + line-height: 30px; + height: 30px; +} +.timepicker-hours table td:hover, +.timepicker-minutes table td:hover { + color: #0088ce; +} +.timepicker-hours .table-condensed > tbody > tr > td, +.timepicker-minutes .table-condensed > tbody > tr > td { + padding: 0; +} +.time-picker-pf .input-group-addon .fa, +.time-picker-pf .input-group-addon .pficon { + width: 12px; +} +.time-picker-pf .input-group-addon:not(.active) { + box-shadow: none; +} +.timepicker-picker table td span, +.timepicker-picker table td a span { + height: 24px; + line-height: 24px; + margin: 0; + width: 100%; +} +.timepicker-picker .table-condensed > tbody > tr > td { + height: 25px; + line-height: 18px; + padding: 0; +} +.timepicker-picker button[data-action] { + padding-bottom: 0; + padding-top: 0; +} +.timepicker-picker .separator { + display: none; +} +.timepicker-picker tr:nth-child(2) td { + background-color: #def3ff; + border-color: #bee1f4; + border-style: solid; + border-width: 1px; + border-left: 0; + border-right: 0; +} +.toast-pf { + background-color: #fff; + border-color: #bbb; + box-shadow: 0 2px 6px rgba(3, 3, 3, 0.2); + padding-left: 68px; + /* Medium devices (desktops, 992px and up) */ +} +.toast-pf.alert-danger > .pficon { + background-color: #cc0000; +} +.toast-pf.alert-info > .pficon { + background-color: #8b8d8f; +} +.toast-pf.alert-success > .pficon { + background-color: #3f9c35; +} +.toast-pf.alert-warning > .pficon { + background-color: #ec7a08; +} +.toast-pf .dropdown-kebab-pf { + margin-left: 10px; +} +.toast-pf > .pficon { + background-color: #4d5258; + bottom: -1px; + box-shadow: 2px 0 5px -2px rgba(3, 3, 3, 0.2); + left: -1px; + padding-top: 10px; + text-align: center; + top: -1px; + width: 53px; +} +.toast-pf > .pficon:before { + color: rgba(255, 255, 255, 0.74); +} +.toast-pf .toast-pf-action { + margin-left: 15px; +} +@media (min-width: 992px) { + .toast-pf { + display: inline-block; + } +} +@media (min-width: 992px) { + .toast-pf-max-width { + max-width: 31.1%; + } +} +.toast-pf-top-right { + left: 20px; + position: absolute; + right: 20px; + top: 12px; + z-index: 1035; + /* Medium devices (desktops, 992px and up) */ +} +@media (min-width: 992px) { + .toast-pf-top-right { + left: auto; + } +} +.toast-notifications-list-pf { + margin-left: 20px; + position: fixed; + right: 20px; + top: 20px; + z-index: 1050; +} +.toast-notifications-list-pf .toast-pf { + clear: both; + float: right; +} +@media (min-width: 768px) { + .toast-notifications-list-pf { + max-width: calc(50%); + } +} +@media (min-width: 992px) { + .toast-notifications-list-pf { + max-width: calc(33.1%); + } +} +.toolbar-pf { + background: #fff; + border-bottom: 1px solid #d1d1d1; + box-shadow: 0 1px 0px rgba(3, 3, 3, 0.045); + padding-top: 10px; +} +.toolbar-pf .form-group { + margin-bottom: 10px; +} +@media (min-width: 768px) { + .toolbar-pf .form-group { + border-right: 1px solid #d1d1d1; + float: left; + margin-bottom: 0; + padding-left: 20px; + padding-right: 20px; + } +} +.toolbar-pf .form-group:last-child { + border-right: 0; + margin-bottom: 0; + padding-right: 0; +} +.toolbar-pf .form-group .btn + .btn, +.toolbar-pf .form-group .btn-group + .btn, +.toolbar-pf .form-group .btn + .btn-group, +.toolbar-pf .form-group .btn-group + .btn-group { + margin-left: 5px; +} +.toolbar-pf .form-group .btn + .btn-link, +.toolbar-pf .form-group .btn-group + .btn-link, +.toolbar-pf .form-group .btn + .dropdown, +.toolbar-pf .form-group .btn-group + .dropdown { + margin-left: 10px; +} +.toolbar-pf .form-group .btn-link { + color: #252525; + font-size: 16px; + line-height: 1; + padding: 4px 0; +} +.toolbar-pf .form-group .btn-link:active, +.toolbar-pf .form-group .btn-link:focus, +.toolbar-pf .form-group .btn-link:hover { + color: #0088ce; +} +.toolbar-pf .form-group .dropdown-kebab-pf .btn-link { + padding: 4px 10px; + margin-left: -10px; + margin-right: -10px; +} +.toolbar-pf-actions { + display: table; + margin-bottom: 10px; + width: 100%; +} +@media (min-width: 768px) { + .toolbar-pf-actions .toolbar-pf-filter { + padding-left: 0; + width: 25%; + } +} +.toolbar-pf-view-selector { + font-size: 16px; +} +.toolbar-pf-view-selector .btn-link.active { + color: #0088ce; + cursor: default; +} +.toolbar-pf-action-right { + float: right; +} +@media (max-width: 768px) { + .toolbar-pf-action-right { + float: none; + } +} +.toolbar-pf-find { + font-size: 14px; + position: relative; +} +.find-pf-dropdown-container { + background: #fff; + border: solid 1px #bbb; + display: none; + right: -20px; + padding: 5px; + position: absolute; + top: 35px; + width: 300px; + z-index: 10000; +} +@media (max-width: 768px) { + .find-pf-dropdown-container { + left: 30px; + top: -5px; + width: calc(100% - 30px); + } +} +.find-pf-dropdown-container:before, +.find-pf-dropdown-container:after { + content: ""; + position: absolute; +} +.find-pf-dropdown-container:before { + border-bottom: 11px solid #bbb; + border-left: 11px solid transparent; + border-right: 11px solid transparent; + right: 35px; + top: -12px; +} +.toolbar-pf-find:last-child .find-pf-dropdown-container:before { + right: 15px; +} +@media (max-width: 768px) { + .find-pf-dropdown-container:before { + border-bottom: 11px solid transparent; + border-right: 11px solid #bbb; + border-top: 11px solid transparent; + left: -22px; + right: initial; + top: 8px; + } +} +.find-pf-dropdown-container:after { + border-bottom: 10px solid #fff; + border-left: 10px solid transparent; + border-right: 10px solid transparent; + right: 36px; + top: -10px; +} +.toolbar-pf-find:last-child .find-pf-dropdown-container:after { + right: 16px; +} +@media (max-width: 768px) { + .find-pf-dropdown-container:after { + border-bottom: 10px solid transparent; + border-right: 10px solid #fff; + border-top: 10px solid transparent; + left: -20px; + right: initial; + top: 9px; + } +} +.find-pf-dropdown-container input { + height: 30px; + padding: 5px 117px 5px 5px; + width: 100%; +} +.find-pf-dropdown-container .find-pf-buttons { + position: absolute; + right: 10px; + top: 5px; +} +.find-pf-dropdown-container .find-pf-buttons .btn { + border: none; + cursor: pointer; + margin-left: 0 !important; + padding: 0; + width: 18px; +} +.find-pf-dropdown-container .find-pf-buttons .btn .fa-angle-up, +.find-pf-dropdown-container .find-pf-buttons .btn .fa-angle-down { + font-weight: bold; + font-size: 18px; +} +.find-pf-dropdown-container .find-pf-buttons .btn .pficon-close { + font-size: 14px; +} +.find-pf-dropdown-container .find-pf-buttons span { + height: 30px; + line-height: 30px; + vertical-align: middle; +} +.find-pf-dropdown-container .find-pf-buttons .find-pf-nums { + color: #8b8d8f; + margin-right: 3px; +} +.toolbar-pf-results { + border-top: 1px solid #d1d1d1; + margin-top: 10px; +} +.toolbar-pf-results h5, +.toolbar-pf-results p, +.toolbar-pf-results ul { + display: inline-block; + line-height: 26.66666667px; + margin-bottom: 0; + margin-top: 0; +} +@media (min-width: 768px) { + .toolbar-pf-results h5, + .toolbar-pf-results p, + .toolbar-pf-results ul { + line-height: 40px; + } +} +.toolbar-pf-results h5 { + font-weight: 700; + margin-right: 20px; +} +.toolbar-pf-results .label { + font-size: 11px; +} +.toolbar-pf-results .label a { + color: #fff; + display: inline-block; + margin-left: 5px; +} +.nav-pf-vertical { + background: #292e34; + border-right: 1px solid #292e34; + bottom: 0; + left: 0; + overflow-x: hidden; + overflow-y: auto; + position: fixed; + top: 60px; + width: 200px; + z-index: 1030; +} +.layout-pf-fixed-with-footer .nav-pf-vertical { + bottom: 37px; +} +.ie9.layout-pf-fixed .nav-pf-vertical { + box-sizing: content-box; +} +.nav-pf-vertical.hidden.show-mobile-nav { + box-shadow: 0 0 3px rgba(3, 3, 3, 0.15); + display: block !important; +} +.nav-pf-vertical.hide-nav-pf { + visibility: hidden !important; +} +.nav-pf-vertical .list-group { + border-top: 0; + margin-bottom: 0; +} +.nav-pf-vertical .list-group-item { + background-color: transparent; + border-color: #030303; + padding: 0; +} +.nav-pf-vertical .list-group-item > a { + background-color: transparent; + color: #d1d1d1; + cursor: pointer; + display: block; + font-size: 14px; + font-weight: 400; + height: 63px; + line-height: 26px; + outline: 0; + padding: 17px 20px 17px 25px; + position: relative; + white-space: nowrap; + width: 200px; +} +@supports (display: flex) { + .nav-pf-vertical .list-group-item > a { + display: -ms-flexbox; + display: flex; + padding-right: 0; + } +} +.nav-pf-vertical .list-group-item > a .fa, +.nav-pf-vertical .list-group-item > a .glyphicon, +.nav-pf-vertical .list-group-item > a .pficon { + color: #72767b; + float: left; + font-size: 20px; + line-height: 26px; + margin-right: 10px; + text-align: center; + width: 24px; +} +.nav-pf-vertical .list-group-item > a:hover { + text-decoration: none; +} +.nav-pf-vertical .list-group-item.active > a, +.nav-pf-vertical .list-group-item:hover > a { + background-color: #393f44; + color: #fff; + font-weight: 600; +} +.nav-pf-vertical .list-group-item.active > a .fa, +.nav-pf-vertical .list-group-item:hover > a .fa, +.nav-pf-vertical .list-group-item.active > a .glyphicon, +.nav-pf-vertical .list-group-item:hover > a .glyphicon, +.nav-pf-vertical .list-group-item.active > a .pficon, +.nav-pf-vertical .list-group-item:hover > a .pficon { + color: #39a5dc; +} +.nav-pf-vertical .list-group-item.active > a:before { + background: #39a5dc; + content: " "; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 3px; +} +.nav-pf-vertical .list-group-item.active:hover { + background-color: transparent; + border-color: #030303; +} +.nav-pf-vertical .list-group-item .list-group-item-value { + display: block; + line-height: 25px; + max-width: 120px; + overflow: hidden; + text-overflow: ellipsis; +} +@supports (display: flex) { + .nav-pf-vertical .list-group-item .list-group-item-value { + -ms-flex: 1; + flex: 1; + max-width: none; + padding-right: 15px; + } +} +.nav-pf-vertical .list-group-item-separator { + border-top-color: #030303; + border-top-width: 2px; +} +.nav-pf-vertical.nav-pf-vertical-with-badges { + width: 250px; +} +.nav-pf-vertical.nav-pf-vertical-with-badges .list-group-item > a { + width: 250px; +} +.nav-pf-vertical h5 { + color: #fff; + cursor: default; + font-size: 13px; + font-weight: 600; + margin: 30px 20px 10px 20px; +} +.nav-pf-vertical.hidden-icons-pf > .list-group > .list-group-item > a .fa, +.nav-pf-vertical.hidden-icons-pf > .list-group > .list-group-item > a .glyphicon, +.nav-pf-vertical.hidden-icons-pf > .list-group > .list-group-item > a .pficon { + display: none; +} +.nav-pf-vertical.hidden-icons-pf.collapsed { + display: none; +} +.nav-pf-vertical .badge-container-pf { + position: absolute; + right: 15px; + top: 20px; +} +@supports (display: flex) { + .nav-pf-vertical .badge-container-pf { + padding-left: 0; + padding-right: 15px; + position: relative; + right: 0; + margin-top: -3px; + top: 5px; + } +} +.nav-pf-vertical .badge-container-pf .badge { + background: #292e34; + color: #fff; + float: left; + font-size: 12px; + font-weight: 700; + line-height: 1.66666667; + margin: 0; + padding: 0 7px; + text-align: center; +} +.nav-pf-vertical .badge-container-pf .badge .pficon, +.nav-pf-vertical .badge-container-pf .badge .fa { + font-size: 14px; + height: 20px; + line-height: 1.66666667; + margin-right: 3px; + margin-top: -1px; +} +.nav-pf-vertical-tooltip.tooltip { + margin-left: 15px; +} +.nav-pf-vertical-tooltip.tooltip .tooltip-inner { + background-color: #fff; + color: #292e34; +} +.nav-pf-vertical-tooltip.tooltip .tooltip-arrow { + border-bottom-color: #fff; + left: calc(50% - 15px) !important; +} +.hover-secondary-nav-pf { + width: calc(200px * 2); +} +.hover-secondary-nav-pf.nav-pf-vertical-with-badges { + width: calc(250px * 2); +} +.hover-tertiary-nav-pf { + width: calc(200px * 3); +} +.hover-tertiary-nav-pf.nav-pf-vertical-with-badges { + width: calc(250px * 3); +} +.hover-tertiary-nav-pf .nav-pf-secondary-nav { + width: calc(200px * 2); +} +.hover-tertiary-nav-pf .nav-pf-secondary-nav .collapsed-tertiary-nav-pf { + width: 200px; +} +.hover-tertiary-nav-pf .nav-pf-tertiary-nav { + left: calc(200px * 2); +} +.hover-tertiary-nav-pf.nav-pf-vertical-with-badges .nav-pf-secondary-nav { + width: calc(250px * 2); +} +.hover-tertiary-nav-pf.nav-pf-vertical-with-badges .nav-pf-secondary-nav .collapsed-tertiary-nav-pf { + width: 250px; +} +.hover-tertiary-nav-pf.nav-pf-vertical-with-badges .nav-pf-tertiary-nav { + left: calc(250px * 2); +} +.nav-pf-vertical.collapsed { + width: 75px; +} +.nav-pf-vertical.collapsed.collapsed-secondary-nav-pf { + width: 200px; +} +.nav-pf-vertical.collapsed.collapsed-secondary-nav-pf.nav-pf-vertical-with-badges { + width: 250px; +} +.nav-pf-vertical.collapsed.collapsed-tertiary-nav-pf { + width: 200px; +} +.nav-pf-vertical.collapsed.collapsed-tertiary-nav-pf.nav-pf-vertical-with-badges { + width: 250px; +} +.nav-pf-vertical.collapsed.hover-secondary-nav-pf { + width: calc(75px + 200px); +} +.nav-pf-vertical.collapsed.hover-secondary-nav-pf.nav-pf-vertical-with-badges { + width: calc(75px + 250px); +} +.nav-pf-vertical.collapsed.hover-tertiary-nav-pf { + width: calc(75px + (200px * 2)); +} +.nav-pf-vertical.collapsed.hover-tertiary-nav-pf.nav-pf-vertical-with-badges { + width: calc(75px + (250px * 2)); +} +.show-mobile-nav.show-mobile-secondary { + width: 200px; +} +.show-mobile-nav.show-mobile-secondary.nav-pf-vertical-with-badges { + width: 250px; +} +.show-mobile-nav.show-mobile-tertiary { + width: 200px; +} +.show-mobile-nav.show-mobile-tertiary.nav-pf-vertical-with-badges { + width: 250px; +} +.show-mobile-nav .mobile-nav-item-pf .nav-pf-secondary-nav, +.show-mobile-nav .mobile-secondary-item-pf .nav-pf-secondary-nav { + left: 0; + opacity: 1; + visibility: visible; + z-index: 1034; +} +.show-mobile-nav .mobile-nav-item-pf > .nav-pf-tertiary-nav, +.show-mobile-nav .mobile-secondary-item-pf > .nav-pf-tertiary-nav { + left: 0; + opacity: 1; + visibility: visible; + z-index: 1038; +} +.show-mobile-nav .nav-pf-secondary-nav { + left: 0; +} +.secondary-nav-item-pf:hover .show-mobile-nav .nav-pf-secondary-nav { + opacity: 0; + visibility: hidden; +} +.show-mobile-nav .tertiary-nav-item-pf:hover .nav-pf-tertiary-nav { + opacity: 0; + visibility: hidden; +} +.show-mobile-nav .tertiary-nav-item-pf.mobile-nav-item-pf:hover .nav-pf-tertiary-nav { + opacity: 1; + visibility: visible; +} +.secondary-nav-item-pf > a { + cursor: default; +} +.secondary-nav-item-pf > a:after { + color: #72767b; + content: "\f105"; + display: block; + font-family: "FontAwesome"; + font-size: 24px; + line-height: 30px; + padding: 14px 0; + position: absolute; + right: 20px; + top: 0; +} +@supports (display: flex) { + .secondary-nav-item-pf > a .list-group-item-value { + padding-right: 35px; + } +} +.secondary-nav-item-pf.active > a, +.secondary-nav-item-pf:hover > a { + width: calc(200px + 1px); + z-index: 1031; +} +.secondary-nav-item-pf.active > a:after, +.secondary-nav-item-pf:hover > a:after { + right: 21px; +} +.collapsed-secondary-nav-pf .secondary-nav-item-pf.active > a, +.collapsed-secondary-nav-pf .secondary-nav-item-pf:hover > a { + z-index: 0; +} +.collapsed-tertiary-nav-pf .secondary-nav-item-pf.active > a, +.collapsed-tertiary-nav-pf .secondary-nav-item-pf:hover > a { + z-index: 0; +} +.nav-pf-vertical-with-badges .secondary-nav-item-pf.active > a, +.nav-pf-vertical-with-badges .secondary-nav-item-pf:hover > a { + width: calc(250px + 1px); +} +.nav-pf-vertical.collapsed-secondary-nav-pf { + width: 200px; +} +.nav-pf-vertical.collapsed-secondary-nav-pf.nav-pf-vertical-with-badges { + width: 250px; +} +.nav-pf-vertical.collapsed-secondary-nav-pf .secondary-nav-item-pf.active > a, +.nav-pf-vertical.collapsed-secondary-nav-pf .secondary-nav-item-pf.hover > a { + z-index: 1030; +} +.nav-pf-vertical.collapsed-secondary-nav-pf.hover-tertiary-nav-pf { + width: 200px; +} +.nav-pf-vertical.collapsed-secondary-nav-pf.hover-tertiary-nav-pf.nav-pf-vertical-with-badges { + width: 250px; +} +.nav-pf-vertical.collapsed-secondary-nav-pf .nav-pf-secondary-nav { + left: 0; +} +.nav-pf-vertical.collapsed-secondary-nav-pf .nav-pf-tertiary-nav { + left: 200px; +} +.nav-pf-vertical.collapsed-secondary-nav-pf.nav-pf-vertical-with-badges .nav-pf-tertiary-nav { + left: 250px; +} +.nav-pf-vertical.collapsed-tertiary-nav-pf { + width: 200px; +} +.nav-pf-vertical.collapsed-tertiary-nav-pf.nav-pf-vertical-with-badges { + width: 250px; +} +.nav-pf-vertical.collapsed-tertiary-nav-pf .nav-pf-secondary-nav { + width: 200px; +} +.nav-pf-vertical.collapsed-tertiary-nav-pf .nav-pf-secondary-nav.nav-pf-vertical-with-badges { + width: 250px; +} +.nav-pf-vertical.collapsed-tertiary-nav-pf .secondary-nav-item-pf.active > a, +.nav-pf-vertical.collapsed-tertiary-nav-pf .tertiary-nav-item-pf.active > a, +.nav-pf-vertical.collapsed-tertiary-nav-pf .secondary-nav-item-pf.hover > a, +.nav-pf-vertical.collapsed-tertiary-nav-pf .tertiary-nav-item-pf.hover > a { + z-index: 0; +} +@media (min-width: 1200px) { + .nav-pf-vertical.nav-pf-persistent-secondary.secondary-visible-pf { + width: calc(200px * 2); + } + .nav-pf-vertical.nav-pf-persistent-secondary.secondary-visible-pf.nav-pf-vertical-with-badges { + width: calc(250px * 2); + } + .nav-pf-vertical.nav-pf-persistent-secondary.secondary-visible-pf.collapsed-secondary-nav-pf { + width: 200px; + } + .nav-pf-vertical.nav-pf-persistent-secondary.secondary-visible-pf.collapsed-secondary-nav-pf.nav-pf-vertical-with-badges { + width: 250px; + } + .nav-pf-vertical.nav-pf-persistent-secondary.secondary-visible-pf.collapsed-secondary-nav-pf.hover-tertiary-nav-pf { + width: calc(200px * 2); + } + .nav-pf-vertical.nav-pf-persistent-secondary.secondary-visible-pf.collapsed-secondary-nav-pf.hover-tertiary-nav-pf.nav-pf-vertical-with-badges { + width: calc(250px * 2); + } + .nav-pf-vertical.nav-pf-persistent-secondary.secondary-visible-pf.collapsed-tertiary-nav-pf { + width: 200px; + } + .nav-pf-vertical.nav-pf-persistent-secondary.secondary-visible-pf.collapsed-tertiary-nav-pf.nav-pf-vertical-with-badges { + width: 250px; + } + .nav-pf-vertical.nav-pf-persistent-secondary.secondary-visible-pf.collapsed { + width: calc(75px + 200px); + } + .nav-pf-vertical.nav-pf-persistent-secondary.secondary-visible-pf.collapsed.collapsed-secondary-nav-pf { + width: 200px; + } + .nav-pf-vertical.nav-pf-persistent-secondary.secondary-visible-pf.collapsed.collapsed-secondary-nav-pf.nav-pf-vertical-with-badges { + width: 250px; + } + .nav-pf-vertical.nav-pf-persistent-secondary.secondary-visible-pf.collapsed.collapsed-tertiary-nav-pf { + width: 200px; + } + .nav-pf-vertical.nav-pf-persistent-secondary.secondary-visible-pf.collapsed.collapsed-tertiary-nav-pf.nav-pf-vertical-with-badges { + width: 250px; + } + .nav-pf-vertical.nav-pf-persistent-secondary.secondary-visible-pf.collapsed.hover-tertiary-nav-pf { + width: calc(75px + (200px * 2)); + } + .nav-pf-vertical.nav-pf-persistent-secondary.secondary-visible-pf.collapsed.hover-tertiary-nav-pf.nav-pf-vertical-with-badges { + width: calc(75px + (250px * 2)); + } + .nav-pf-vertical.nav-pf-persistent-secondary.secondary-visible-pf.hover-tertiary-nav-pf { + width: calc(200px * 3); + } + .nav-pf-vertical.nav-pf-persistent-secondary.secondary-visible-pf.hover-tertiary-nav-pf.nav-pf-vertical-with-badges { + width: calc(250px * 3); + } + .nav-pf-vertical.nav-pf-persistent-secondary.secondary-visible-pf .secondary-nav-item-pf.active .nav-pf-secondary-nav { + visibility: visible; + opacity: 1; + } +} +.nav-item-pf-header { + color: #fff; + font-size: 16px; + margin: 18px 20px 10px 20px; +} +.nav-item-pf-header > a { + cursor: pointer; + margin-right: 7px; +} +.nav-item-pf-header > a:hover, +.nav-item-pf-header > a:focus { + color: #0088ce; + text-decoration: none; +} +.nav-pf-vertical.collapsed { + width: 75px; +} +.nav-pf-vertical.collapsed .list-group-item > a { + width: 75px; +} +.nav-pf-vertical.collapsed .list-group-item > a > .list-group-item-value { + display: none; +} +.nav-pf-vertical.collapsed .list-group-item > a > .badge-container-pf { + display: none; +} +.nav-pf-vertical.collapsed .list-group-item.secondary-nav-item-pf.active > a, +.nav-pf-vertical.collapsed .list-group-item.secondary-nav-item-pf > a { + width: 75px; +} +.nav-pf-vertical.collapsed .list-group-item.secondary-nav-item-pf.active > a:after, +.nav-pf-vertical.collapsed .list-group-item.secondary-nav-item-pf > a:after { + right: 10px; +} +.nav-pf-vertical.collapsed .list-group-item.secondary-nav-item-pf.active > a, +.nav-pf-vertical.collapsed .list-group-item.secondary-nav-item-pf:hover > a { + width: 77px; +} +.nav-pf-vertical.collapsed .list-group-item.secondary-nav-item-pf.active > a:after, +.nav-pf-vertical.collapsed .list-group-item.secondary-nav-item-pf:hover > a:after { + right: 11px; +} +.nav-pf-secondary-nav { + background: #393f44; + border: 1px solid #292e34; + border-bottom: none; + border-top: none; + bottom: 0; + display: block; + left: 200px; + opacity: 0; + overflow-x: hidden; + overflow-y: auto; + position: fixed; + top: 60px; + visibility: hidden; + width: 200px; + z-index: 1030; +} +.collapsed-secondary-nav-pf .secondary-nav-item-pf.active .nav-pf-secondary-nav { + left: 0; + opacity: 1; + visibility: visible; + z-index: 1032; +} +.collapsed-tertiary-nav-pf .secondary-nav-item-pf.active .nav-pf-secondary-nav { + left: 0; + opacity: 1; + visibility: visible; +} +.hover-secondary-nav-pf .secondary-nav-item-pf.is-hover .nav-pf-secondary-nav { + opacity: 1; + visibility: visible; +} +.ie9.layout-pf-fixed .nav-pf-secondary-nav { + box-sizing: content-box; +} +.layout-pf-fixed-with-footer .nav-pf-secondary-nav { + bottom: 37px; +} +.nav-pf-secondary-nav .list-group-item { + border: none; + padding: 0 0 5px 0; + width: 200px; +} +.nav-pf-secondary-nav .list-group-item > a { + background-color: #393f44; + color: #d1d1d1; + font-size: 12px; + font-weight: inherit; + height: inherit; + padding: 4px 0 2px 0; + margin-left: 20px; + width: calc(200px - 20px); +} +.nav-pf-secondary-nav .list-group-item > a:hover .list-group-item-value { + text-decoration: underline; +} +.nav-pf-secondary-nav .list-group-item.active > a:before { + display: none; +} +.nav-pf-secondary-nav .list-group-item.active > a, +.nav-pf-secondary-nav .list-group-item:hover > a { + background-color: #4d5258; + color: #fff; +} +.nav-pf-secondary-nav .list-group-item .badge-container-pf { + top: 5px; +} +.nav-pf-secondary-nav .list-group-item .badge-container-pf .badge { + background: #292e34; + color: #fff; +} +.nav-pf-secondary-nav .list-group-item .list-group-item-value { + padding-left: 5px; +} +.nav-pf-secondary-nav .list-group-item.tertiary-nav-item-pf > a { + cursor: default; +} +.nav-pf-secondary-nav .list-group-item.tertiary-nav-item-pf > a:after { + color: #72767b; + content: "\f105"; + display: block; + font-family: "FontAwesome"; + font-size: 20px; + line-height: 20px; + padding: 0; + position: absolute; + right: 20px; + top: 4px; +} +@supports (display: flex) { + .nav-pf-secondary-nav .list-group-item.tertiary-nav-item-pf > a .list-group-item-value { + padding-right: 35px; + } +} +.nav-pf-secondary-nav .list-group-item.tertiary-nav-item-pf.active > a, +.nav-pf-secondary-nav .list-group-item.tertiary-nav-item-pf:hover > a { + width: calc(200px - 19px); + z-index: 1033; +} +.nav-pf-secondary-nav .list-group-item.tertiary-nav-item-pf.active > a:after, +.nav-pf-secondary-nav .list-group-item.tertiary-nav-item-pf:hover > a:after { + right: 21px; +} +.nav-pf-vertical-with-badges .nav-pf-secondary-nav { + left: 250px; + width: 250px; +} +.nav-pf-vertical-with-badges .nav-pf-secondary-nav .list-group-item { + width: 250px; +} +.nav-pf-vertical-with-badges .nav-pf-secondary-nav .list-group-item > a { + width: calc(250px - 20px); +} +.nav-pf-vertical-with-badges .nav-pf-secondary-nav .list-group-item.tertiary-nav-item-pf.active > a, +.nav-pf-vertical-with-badges .nav-pf-secondary-nav .list-group-item.tertiary-nav-item-pf:hover > a { + width: calc(250px - 19px); +} +.nav-pf-tertiary-nav { + background: #4d5258; + border: 1px solid #292e34; + border-bottom: none; + border-top: none; + bottom: 0; + display: block; + left: calc(200px * 2); + opacity: 0; + overflow-x: hidden; + overflow-y: auto; + position: fixed; + top: 60px; + visibility: hidden; + width: 200px; + z-index: 1030; +} +.nav-pf-vertical-with-badges .nav-pf-tertiary-nav { + left: 250px; + width: 250px; +} +.nav-pf-vertical-with-badges .nav-pf-tertiary-nav .show-mobile-nav { + left: 0; +} +.collapsed-tertiary-nav-pf .tertiary-nav-item-pf.active .nav-pf-tertiary-nav { + left: 0; + opacity: 1; + visibility: visible; + z-index: 1033; +} +.hover-tertiary-nav-pf .tertiary-nav-item-pf.is-hover .nav-pf-tertiary-nav { + opacity: 1; + visibility: visible; +} +.collapsed.collapsed-tertiary-nav-pf .hover-tertiary-nav-pf .tertiary-nav-item-pf.is-hover .nav-pf-tertiary-nav { + left: 0; +} +.ie9.layout-pf-fixed .nav-pf-tertiary-nav { + box-sizing: content-box; +} +.layout-pf-fixed-with-footer .nav-pf-tertiary-nav { + bottom: 37px; +} +.nav-pf-tertiary-nav .nav-item-pf-header { + color: #fff; + margin: 18px 20px 10px 20px; +} +.nav-pf-tertiary-nav h5 { + color: #fff; + margin: 30px 20px 10px 20px; +} +.nav-pf-tertiary-nav .list-group-item { + border: none; + padding: 0 0 5px 0; +} +.nav-pf-tertiary-nav .list-group-item > a { + background-color: transparent; + color: #d1d1d1; + font-size: 12px; + font-weight: inherit; + height: inherit; + margin: 0 20px 0 20px; + padding: 4px 0 2px 0; +} +.nav-pf-tertiary-nav .list-group-item.active > a:before { + display: none; +} +.nav-pf-tertiary-nav .list-group-item.active > a, +.nav-pf-tertiary-nav .list-group-item:hover > a { + background-color: #393f44; + color: #fff; +} +.nav-pf-tertiary-nav .list-group-item .badge-container-pf { + top: 5px; +} +.nav-pf-tertiary-nav .list-group-item .badge-container-pf .badge { + background: #292e34; + color: #fff; +} +.nav-pf-tertiary-nav .list-group-item .list-group-item-value { + padding-left: 5px; +} +.collapsed .nav-pf-secondary-nav { + left: 75px; +} +.collapsed .nav-pf-secondary-nav .list-group-item > a { + width: calc(200px - 20px); +} +.collapsed .nav-pf-secondary-nav .list-group-item > a > .list-group-item-value { + display: inline-block; +} +.collapsed .nav-pf-secondary-nav .list-group-item > a > .badge-container-pf { + display: inline-block; +} +.collapsed .nav-pf-tertiary-nav { + left: calc(75px + 200px); +} +.collapsed .nav-pf-tertiary-nav .list-group-item > a { + width: calc(200px - 20px); +} +.collapsed .nav-pf-tertiary-nav .list-group-item > a > .list-group-item-value { + display: inline-block; +} +.collapsed .nav-pf-tertiary-nav .list-group-item > a > .badge-container-pf { + display: inline-block; +} +.collapsed.collapsed-secondary-nav-pf, +.collapsed.collapsed-tertiary-nav-pf { + width: 200px; +} +.collapsed.collapsed-secondary-nav-pf .secondary-nav-item-pf:hover > a, +.collapsed.collapsed-tertiary-nav-pf .secondary-nav-item-pf:hover > a { + z-index: 1030; +} +.collapsed.collapsed-secondary-nav-pf .nav-pf-secondary-nav, +.collapsed.collapsed-tertiary-nav-pf .nav-pf-secondary-nav { + left: 0; +} +.collapsed.collapsed-secondary-nav-pf .nav-pf-tertiary-nav { + left: 200px; +} +.collapsed.collapsed-tertiary-nav-pf .nav-pf-tertiary-nav { + left: 0; +} +.collapsed.hover-secondary-nav-pf { + width: calc(75px + 200px); +} +.collapsed.hover-secondary-nav-pf.collapsed-secondary-nav-pf, +.collapsed.hover-secondary-nav-pf.collapsed-tertiary-nav-pf { + width: 200px; +} +.collapsed.hover-tertiary-nav-pf { + width: calc(75px + (200px * 2)); +} +.collapsed.hover-tertiary-nav-pf.collapsed-secondary-nav-pf { + width: calc(200px * 2); +} +.collapsed.hover-tertiary-nav-pf.collapsed-tertiary-nav-pf { + width: 200px; +} +.collapsed.nav-pf-vertical-with-badges .nav-pf-secondary-nav .list-group-item > a { + width: calc(250px - 20px); +} +.collapsed.nav-pf-vertical-with-badges .nav-pf-tertiary-nav { + left: calc(75px + 250px); +} +.collapsed.nav-pf-vertical-with-badges .nav-pf-tertiary-nav .list-group-item > a { + width: calc(250px - 20px); +} +.collapsed.nav-pf-vertical-with-badges.collapsed-secondary-nav-pf, +.collapsed.nav-pf-vertical-with-badges.collapsed-tertiary-nav-pf { + width: 250px; +} +.collapsed.nav-pf-vertical-with-badges.collapsed-secondary-nav-pf .nav-pf-tertiary-nav { + left: 250px; +} +.collapsed.nav-pf-vertical-with-badges.hover-secondary-nav-pf { + width: calc(75px + 250px); +} +.collapsed.nav-pf-vertical-with-badges.hover-secondary-nav-pf.collapsed-secondary-nav-pf, +.collapsed.nav-pf-vertical-with-badges.hover-secondary-nav-pf.collapsed-tertiary-nav-pf { + width: 250px; +} +.collapsed.nav-pf-vertical-with-badges.hover-tertiary-nav-pf { + width: calc(75px + (200px * 2)); +} +.collapsed.nav-pf-vertical-with-badges.hover-tertiary-nav-pf.collapsed-secondary-nav-pf { + width: calc(200px * 2); +} +.collapsed.nav-pf-vertical-with-badges.hover-tertiary-nav-pf.collapsed-tertiary-nav-pf { + width: 200px; +} +.secondary-collapse-toggle-pf { + display: none; + font-family: "FontAwesome"; + font-size: inherit; + opacity: 0; + pointer-events: none; + -webkit-font-smoothing: antialiased; +} +.secondary-collapse-toggle-pf:before { + content: "\f190"; +} +.secondary-collapse-toggle-pf.collapsed:before { + content: "\f18e"; +} +.tertiary-collapse-toggle-pf { + display: none; + font-family: "FontAwesome"; + font-size: inherit; + opacity: 0; + pointer-events: none; + -webkit-font-smoothing: antialiased; +} +.tertiary-collapse-toggle-pf:before { + content: "\f190"; +} +.tertiary-collapse-toggle-pf.collapsed:before { + content: "\f18e"; +} +.nav-pf-vertical-collapsible-menus .secondary-collapse-toggle-pf { + display: inline-block; +} +.nav-pf-vertical-collapsible-menus .secondary-nav-item-pf.active .secondary-collapse-toggle-pf { + opacity: 1; + pointer-events: all; +} +.nav-pf-vertical-collapsible-menus .tertiary-collapse-toggle-pf { + display: inline-block; +} +.nav-pf-vertical-collapsible-menus .tertiary-nav-item-pf.active .tertiary-collapse-toggle-pf { + opacity: 1; + pointer-events: all; +} +.show-mobile-nav .secondary-collapse-toggle-pf { + display: inline-block; + opacity: 1; + pointer-events: all; +} +.show-mobile-nav .secondary-collapse-toggle-pf:before { + content: "\f190"; +} +.show-mobile-nav .tertiary-collapse-toggle-pf { + display: inline-block; + opacity: 1; + pointer-events: all; +} +.show-mobile-nav .tertiary-collapse-toggle-pf:before { + content: "\f190"; +} +.force-hide-secondary-nav-pf .nav-pf-secondary-nav { + display: none !important; +} +.force-hide-secondary-nav-pf .nav-pf-tertiary-nav { + display: none !important; +} +.nav-pf-vertical.transitions { + transition: width 100ms; +} +.nav-pf-vertical.transitions .nav-pf-secondary-nav { + transition: visibility 100ms, opacity 100ms linear; +} +.nav-pf-vertical.transitions .nav-pf-tertiary-nav { + transition: visibility 100ms, opacity 100ms linear; +} +.wizard-pf { + height: 100%; + margin: 0 auto; + max-height: 900px; + padding: 10px; + width: auto; +} +.wizard-pf .modal-content { + height: 100%; +} +.wizard-pf-body { + padding: 0; + position: static; +} +/* styles the sidebard containing the sub-steps */ +.wizard-pf-sidebar { + background: #fafafa; + border-right: 1px solid #d1d1d1; + bottom: 0; + left: 0; + overflow-x: hidden; + overflow-y: auto; + position: absolute; + top: 0; +} +.wizard-pf-sidebar .list-group { + border-top: 0; + margin-bottom: 0; +} +.wizard-pf-sidebar .list-group-item { + background-color: transparent; + border-color: #ededed; + padding: 0; +} +.wizard-pf-sidebar .list-group-item > a { + color: #030303; + cursor: pointer; + display: block; + font-size: 14px; + font-weight: 700; + height: 50px; + outline: 0; + padding-top: 11px; + padding-left: 20px; + position: relative; + white-space: nowrap; + width: 14em; +} +.wizard-pf-sidebar .list-group-item > a:hover { + text-decoration: none; +} +.wizard-pf-sidebar .list-group-item.active { + background-color: #ededed; +} +.wizard-pf-sidebar .list-group-item.active:hover { + border-color: #ededed; +} +.wizard-pf-sidebar .list-group-item.active > a { + color: #39a5dc; + cursor: default; +} +.wizard-pf-sidebar .list-group-item.active > a:before { + background: #39a5dc; + content: " "; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 3px; +} +.wizard-pf-sidebar .list-group-item.active > a:after { + color: #39a5dc; + content: "\f105"; + display: block; + font-family: FontAwesome; + font-size: 24px; + font-weight: 500; + line-height: 30px; + padding-top: 10px; + position: absolute; + right: 23px; + top: 0; +} +.wizard-pf-substep-number { + display: inline-block; + margin-right: 5px; + vertical-align: middle; + width: 25px; +} +.wizard-pf-substep-title { + display: inline-block; + margin-right: 5px; + text-align: left; + vertical-align: middle; +} +/* styles the steps indicator across the top of the wizard */ +.wizard-pf-steps { + border-bottom: solid 1px #d1d1d1; + text-align: center; +} +.wizard-pf-steps-indicator { + font-size: 16px; + display: inline-block; + height: 120px; + -ms-flex-pack: distribute; + justify-content: space-around; + list-style: none; + padding: 38px 0 0; + /* draw the step number in the circle */ +} +@supports (display: flex) { + .wizard-pf-steps-indicator { + display: -ms-flexbox; + display: flex; + } +} +.wizard-pf-steps-indicator li { + counter-increment: section; + float: left; + /* float for IE9 since it doesn't support flex. If items wrap, they overlap */ + -ms-flex-positive: 1; + flex-grow: 1; + -ms-flex-preferred-size: 0; + flex-basis: 0; + line-height: 15px; + margin: 0; + padding: 0; + position: relative; + text-align: center; + /* draw the line between the circles */ + /* don't draw the line between the circles on the ends */ +} +.wizard-pf-steps-indicator li:before { + background-color: #bbb; + content: ""; + height: 2px; + left: 0; + position: absolute; + right: 0; + top: 40px; +} +.wizard-pf-steps-indicator li:first-child:before { + left: 50%; + right: 0; +} +.wizard-pf-steps-indicator li:last-child:before { + left: 0; + right: 50%; +} +.wizard-pf-steps-indicator li:only-of-type:before { + background-color: transparent; +} +.wizard-pf-steps-indicator li a { + color: #030303; + font-size: 16px; + cursor: pointer; + margin-left: 1em; + margin-right: 1em; + text-decoration: none; +} +.wizard-pf-steps-indicator li a:hover .wizard-pf-step-number { + background-color: #bbb; + border-color: #bbb; + color: #fff; +} +.wizard-pf-steps-indicator .wizard-pf-step-number { + background-color: #fff; + border-radius: 50%; + border: solid 2px #bbb; + color: #bbb; + font-size: 12px; + font-weight: 700; + height: 25px; + left: calc(50% - 13px); + line-height: 22px; + position: absolute; + top: 27px; + width: 25px; +} +.wizard-pf-steps-indicator .active .wizard-pf-step-number { + cursor: default; + background-color: #39a5dc; + border-color: #39a5dc; + color: #fff; +} +.wizard-pf-steps-indicator .viewed-pf .wizard-pf-step-number { + background-color: #fff; + border-color: #39a5dc; + color: #030303; +} +/* styles the main content portion of the wizard */ +.wizard-pf-main { + height: 100%; + margin-left: 253px; + /* this value is updated by js */ + overflow: auto; + padding: 3em; + vertical-align: top; +} +.wizard-pf-main .blank-slate-pf { + background-color: transparent; + border: none; + left: 0; + right: 0; +} +/* styles the content of a review page */ +.wizard-pf-review-steps { + list-style: none; +} +.wizard-pf-review-steps .list-group, +.wizard-pf-review-steps .list-group-item { + border: none; + margin-bottom: 0; +} +.wizard-pf-review-steps > ul > li { + float: left; + line-height: 15px; + margin: 0; + padding-top: 0; + position: relative; + width: 100%; +} +.wizard-pf-review-steps > ul > li > a { + color: #030303; + cursor: pointer; + font-size: 16px; + padding-left: 30px; + padding-right: 5px; + text-decoration: none; + transition: 250ms; +} +.wizard-pf-review-steps > ul > li > a:before { + content: "\f107"; + display: block; + font-family: FontAwesome; + font-size: 24px; + font-weight: 500; + left: 20px; + position: absolute; + top: 0; +} +.wizard-pf-review-steps > ul > li > a.collapsed:before { + content: "\f105"; +} +.wizard-pf-review-substeps { + padding-left: 22px; +} +.wizard-pf-review-substeps > ul > li { + float: left; + line-height: 15px; + margin: 0; + position: relative; + width: 100%; +} +.wizard-pf-review-substeps > ul > li a { + color: #030303; + cursor: pointer; + font-size: 16px; + padding-left: 30px; + padding-right: 5px; + text-decoration: none; + transition: 250ms; +} +.wizard-pf-review-substeps > ul > li a:before { + content: "\f107"; + display: block; + font-family: FontAwesome; + font-size: 24px; + font-weight: 500; + left: 20px; + position: absolute; + top: 10px; +} +.wizard-pf-review-substeps > ul > li a.collapsed:before { + content: "\f105"; +} +.wizard-pf-review-content { + padding-top: 10px; + padding-left: 40px; +} +.wizard-pf-review-content .wizard-pf-review-item { + padding: 5px 0; +} +.wizard-pf-review-content .wizard-pf-review-item.sub-item { + margin-left: 10px; +} +.wizard-pf-review-content .wizard-pf-review-item .wizard-pf-review-item-label { + font-weight: 700; + padding-right: 10px; +} +.wizard-pf-review-content .wizard-pf-review-item .wizard-pf-review-item-field { + font-weight: 700; + margin: 5px 0; + padding-right: 10px; +} +.wizard-pf-review-content .wizard-pf-review-item .wizard-pf-review-item-field:first-of-type { + margin-top: 0; +} +.wizard-pf-review-content .wizard-pf-review-item .wizard-pf-review-item-field:last-of-type { + margin-bottom: 0; +} +.wizard-pf-review-content .wizard-pf-review-item .wizard-pf-review-item-field.sub-field { + margin-left: 10px; +} +.wizard-pf-success-icon { + color: #3f9c35; + font-size: 67.2px; + line-height: 67.2px; +} +/* styles the footer */ +.wizard-pf-footer { + border-top: 1px solid #d1d1d1; + bottom: 0; + left: 0; + margin-top: 0; + padding-bottom: 17px; + position: absolute; + right: 0; +} +.wizard-pf-footer .btn-cancel { + margin-right: 25px; +} +.wizard-pf-row { + bottom: 58px; + /* this value is updated by js */ + position: absolute; + overflow: hidden; + top: 172px; + /* this value is updated by js */ + width: 100%; +} +@media (min-width: 992px) { + .wizard-pf { + padding: 30px 0; + width: 900px; + } + .wizard-pf-sidebar .list-group-item > a { + width: 18em; + } +} \ No newline at end of file diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/patternfly.css b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/patternfly.css new file mode 100644 index 00000000..1802e4a2 --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/patternfly.css @@ -0,0 +1,10225 @@ +/* PatternFly */ +@font-face { + font-family: "Open Sans"; + font-style: normal; + font-weight: 300; + src: url("../fonts/OpenSans-Light-webfont.eot"); + src: url("../fonts/OpenSans-Light-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/OpenSans-Light-webfont.woff") format("woff"), url("../fonts/OpenSans-Light-webfont.ttf") format("truetype"), url("../fonts/OpenSans-Light-webfont.svg#OpenSansLight") format("svg"); +} +@font-face { + font-family: "Open Sans"; + font-style: normal; + font-weight: 400; + src: url("../fonts/OpenSans-Regular-webfont.eot"); + src: url("../fonts/OpenSans-Regular-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/OpenSans-Regular-webfont.woff") format("woff"), url("../fonts/OpenSans-Regular-webfont.ttf") format("truetype"), url("../fonts/OpenSans-Regular-webfont.svg#OpenSansRegular") format("svg"); +} +@font-face { + font-family: "Open Sans"; + font-style: normal; + font-weight: 600; + src: url("../fonts/OpenSans-Semibold-webfont.eot"); + src: url("../fonts/OpenSans-Semibold-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/OpenSans-Semibold-webfont.woff") format("woff"), url("../fonts/OpenSans-Semibold-webfont.ttf") format("truetype"), url("../fonts/OpenSans-Semibold-webfont.svg#OpenSansSemibold") format("svg"); +} +@font-face { + font-family: "Open Sans"; + font-style: normal; + font-weight: 700; + src: url("../fonts/OpenSans-Bold-webfont.eot"); + src: url("../fonts/OpenSans-Bold-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/OpenSans-Bold-webfont.woff") format("woff"), url("../fonts/OpenSans-Bold-webfont.ttf") format("truetype"), url("../fonts/OpenSans-Bold-webfont.svg#OpenSansBold") format("svg"); +} +@font-face { + font-family: "Open Sans"; + font-style: normal; + font-weight: 800; + src: url("../fonts/OpenSans-ExtraBold-webfont.eot"); + src: url("../fonts/OpenSans-ExtraBold-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/OpenSans-ExtraBold-webfont.woff") format("woff"), url("../fonts/OpenSans-ExtraBold-webfont.ttf") format("truetype"), url("../fonts/OpenSans-ExtraBold-webfont.svg#OpenSansExtrabold") format("svg"); +} +/*! + * 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; + -ms-text-size-adjust: 100%; + -webkit-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 { + font-size: 2em; + margin: 0.67em 0; +} +mark { + background: #ff0; + color: #000; +} +small { + font-size: 80%; +} +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} +sup { + top: -0.5em; +} +sub { + bottom: -0.25em; +} +img { + border: 0; +} +svg:not(:root) { + overflow: hidden; +} +figure { + margin: 1em 40px; +} +hr { + box-sizing: content-box; + height: 0; +} +pre { + overflow: auto; +} +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} +button, +input, +optgroup, +select, +textarea { + color: inherit; + font: inherit; + margin: 0; +} +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 { + border: 0; + padding: 0; +} +input { + line-height: normal; +} +input[type="checkbox"], +input[type="radio"] { + 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-appearance: textfield; + box-sizing: content-box; +} +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} +legend { + border: 0; + padding: 0; +} +textarea { + overflow: auto; +} +optgroup { + font-weight: bold; +} +table { + border-collapse: collapse; + border-spacing: 0; +} +td, +th { + padding: 0; +} +/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ +@media print { + *, + *:before, + *:after { + background: transparent !important; + color: #000 !important; + box-shadow: none !important; + text-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"; +} +* { + box-sizing: border-box; +} +*:before, +*:after { + box-sizing: border-box; +} +html { + font-size: 10px; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +body { + font-family: "Open Sans", Helvetica, Arial, sans-serif; + font-size: 12px; + line-height: 1.66666667; + color: #363636; + background-color: #fff; +} +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} +a { + color: #0088ce; + text-decoration: none; +} +a:hover, +a:focus { + color: #00659c; + 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: 1px; +} +.img-thumbnail { + padding: 4px; + line-height: 1.66666667; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 1px; + transition: all 0.2s ease-in-out; + display: inline-block; + max-width: 100%; + height: auto; +} +.img-circle { + border-radius: 50%; +} +hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #f1f1f1; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + 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: #9c9c9c; +} +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: 24px; +} +h2, +.h2 { + font-size: 22px; +} +h3, +.h3 { + font-size: 16px; +} +h4, +.h4 { + font-size: 15px; +} +h5, +.h5 { + font-size: 13px; +} +h6, +.h6 { + font-size: 11px; +} +p { + margin: 0 0 10px; +} +.lead { + margin-bottom: 20px; + font-size: 13px; + font-weight: 300; + line-height: 1.4; +} +@media (min-width: 768px) { + .lead { + font-size: 18px; + } +} +small, +.small { + font-size: 91%; +} +mark, +.mark { + background-color: #fcf8e3; + padding: .2em; +} +.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: #9c9c9c; +} +.text-primary { + color: #39a5dc; +} +a.text-primary:hover, +a.text-primary:focus { + color: #228bc0; +} +.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: #ec7a08; +} +a.text-warning:hover, +a.text-warning:focus { + color: #bb6106; +} +.text-danger { + color: #cc0000; +} +a.text-danger:hover, +a.text-danger:focus { + color: #990000; +} +.bg-primary { + color: #fff; + background-color: #39a5dc; +} +a.bg-primary:hover, +a.bg-primary:focus { + background-color: #228bc0; +} +.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 #f1f1f1; +} +ul, +ol { + margin-top: 0; + margin-bottom: 10px; +} +ul ul, +ol ul, +ul ol, +ol ol { + margin-bottom: 0; +} +.list-unstyled { + padding-left: 0; + list-style: none; +} +.list-inline { + padding-left: 0; + list-style: none; + margin-left: -5px; +} +.list-inline > li { + display: inline-block; + padding-left: 5px; + padding-right: 5px; +} +dl { + margin-top: 0; + margin-bottom: 20px; +} +dt, +dd { + line-height: 1.66666667; +} +dt { + font-weight: bold; +} +dd { + margin-left: 0; +} +@media (min-width: 768px) { + .dl-horizontal dt { + float: left; + width: 160px; + clear: left; + text-align: right; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + .dl-horizontal dd { + margin-left: 180px; + } +} +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #9c9c9c; +} +.initialism { + font-size: 90%; + text-transform: uppercase; +} +blockquote { + padding: 10px 20px; + margin: 0 0 20px; + font-size: 15px; + border-left: 5px solid #f1f1f1; +} +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.66666667; + color: #9c9c9c; +} +blockquote footer:before, +blockquote small:before, +blockquote .small:before { + content: '\2014 \00A0'; +} +.blockquote-reverse, +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #f1f1f1; + border-left: 0; + text-align: right; +} +.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.66666667; +} +code, +kbd, +pre, +samp { + font-family: Menlo, Monaco, Consolas, monospace; +} +code { + padding: 2px 4px; + font-size: 90%; + color: #004368; + background-color: #def3ff; + border-radius: 1px; +} +kbd { + padding: 2px 4px; + font-size: 90%; + color: #fff; + background-color: #333; + border-radius: 1px; + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); +} +kbd kbd { + padding: 0; + font-size: 100%; + font-weight: bold; + box-shadow: none; +} +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 11px; + line-height: 1.66666667; + word-break: break-all; + word-wrap: break-word; + color: #363636; + background-color: #fafafa; + border: 1px solid #ccc; + border-radius: 1px; +} +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 { + margin-right: auto; + margin-left: auto; + padding-left: 20px; + padding-right: 20px; +} +@media (min-width: 768px) { + .container { + width: 760px; + } +} +@media (min-width: 992px) { + .container { + width: 980px; + } +} +@media (min-width: 1200px) { + .container { + width: 1180px; + } +} +.container-fluid { + margin-right: auto; + margin-left: auto; + padding-left: 20px; + padding-right: 20px; +} +.row { + margin-left: -20px; + margin-right: -20px; +} +.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-left: 20px; + padding-right: 20px; +} +.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: 10px; + padding-bottom: 10px; + color: #9c9c9c; + 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: 10px; + line-height: 1.66666667; + vertical-align: top; + border-top: 1px solid #d1d1d1; +} +.table > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #d1d1d1; +} +.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 #d1d1d1; +} +.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 #d1d1d1; +} +.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 #d1d1d1; +} +.table-bordered > thead > tr > th, +.table-bordered > thead > tr > td { + border-bottom-width: 2px; +} +.table-striped > tbody > tr:nth-of-type(odd) { + background-color: #f5f5f5; +} +.table-hover > tbody > tr:hover { + background-color: #def3ff; +} +table col[class*="col-"] { + position: static; + float: none; + display: table-column; +} +table td[class*="col-"], +table th[class*="col-"] { + position: static; + float: none; + display: table-cell; +} +.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: #def3ff; +} +.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: #c4eaff; +} +.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 { + overflow-x: auto; + min-height: 0.01%; +} +@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 #d1d1d1; + } + .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 { + padding: 0; + margin: 0; + border: 0; + min-width: 0; +} +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 18px; + line-height: inherit; + color: #363636; + border: 0; + border-bottom: 1px solid #e5e5e5; +} +label { + display: inline-block; + max-width: 100%; + margin-bottom: 5px; + font-weight: bold; +} +input[type="search"] { + 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: 3px; + font-size: 12px; + line-height: 1.66666667; + color: #363636; +} +.form-control { + display: block; + width: 100%; + height: 26px; + padding: 2px 6px; + font-size: 12px; + line-height: 1.66666667; + color: #363636; + background-color: #fff; + background-image: none; + border: 1px solid #bbb; + border-radius: 1px; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; +} +.form-control:focus { + border-color: #0088ce; + outline: 0; + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(0, 136, 206, 0.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::placeholder { + color: #999; + font-style: italic; +} +.form-control::-ms-expand { + border: 0; + background-color: transparent; +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + background-color: #f5f5f5; + 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: 26px; + } + 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: 22px; + } + 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: 33px; + } +} +.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-left: -20px; + margin-top: 4px \9; +} +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; +} +.radio-inline, +.checkbox-inline { + position: relative; + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + vertical-align: middle; + font-weight: normal; + cursor: pointer; +} +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; +} +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"].disabled, +input[type="checkbox"].disabled, +fieldset[disabled] input[type="radio"], +fieldset[disabled] input[type="checkbox"] { + cursor: not-allowed; +} +.radio-inline.disabled, +.checkbox-inline.disabled, +fieldset[disabled] .radio-inline, +fieldset[disabled] .checkbox-inline { + cursor: not-allowed; +} +.radio.disabled label, +.checkbox.disabled label, +fieldset[disabled] .radio label, +fieldset[disabled] .checkbox label { + cursor: not-allowed; +} +.form-control-static { + padding-top: 3px; + padding-bottom: 3px; + margin-bottom: 0; + min-height: 32px; +} +.form-control-static.input-lg, +.form-control-static.input-sm { + padding-left: 0; + padding-right: 0; +} +.input-sm { + height: 22px; + padding: 2px 6px; + font-size: 11px; + line-height: 1.5; + border-radius: 1px; +} +select.input-sm { + height: 22px; + line-height: 22px; +} +textarea.input-sm, +select[multiple].input-sm { + height: auto; +} +.form-group-sm .form-control { + height: 22px; + padding: 2px 6px; + font-size: 11px; + line-height: 1.5; + border-radius: 1px; +} +.form-group-sm select.form-control { + height: 22px; + line-height: 22px; +} +.form-group-sm textarea.form-control, +.form-group-sm select[multiple].form-control { + height: auto; +} +.form-group-sm .form-control-static { + height: 22px; + min-height: 31px; + padding: 3px 6px; + font-size: 11px; + line-height: 1.5; +} +.input-lg { + height: 33px; + padding: 6px 10px; + font-size: 14px; + line-height: 1.3333333; + border-radius: 1px; +} +select.input-lg { + height: 33px; + line-height: 33px; +} +textarea.input-lg, +select[multiple].input-lg { + height: auto; +} +.form-group-lg .form-control { + height: 33px; + padding: 6px 10px; + font-size: 14px; + line-height: 1.3333333; + border-radius: 1px; +} +.form-group-lg select.form-control { + height: 33px; + line-height: 33px; +} +.form-group-lg textarea.form-control, +.form-group-lg select[multiple].form-control { + height: auto; +} +.form-group-lg .form-control-static { + height: 33px; + min-height: 34px; + padding: 7px 10px; + font-size: 14px; + line-height: 1.3333333; +} +.has-feedback { + position: relative; +} +.has-feedback .form-control { + padding-right: 32.5px; +} +.form-control-feedback { + position: absolute; + top: 0; + right: 0; + z-index: 2; + display: block; + width: 26px; + height: 26px; + line-height: 26px; + 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: 33px; + height: 33px; + line-height: 33px; +} +.input-sm + .form-control-feedback, +.input-group-sm + .form-control-feedback, +.form-group-sm .form-control + .form-control-feedback { + width: 22px; + height: 22px; + line-height: 22px; +} +.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; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.has-success .form-control:focus { + border-color: #2b542c; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168; +} +.has-success .input-group-addon { + color: #3c763d; + border-color: #3c763d; + background-color: #dff0d8; +} +.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: #ec7a08; +} +.has-warning .form-control { + border-color: #ec7a08; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.has-warning .form-control:focus { + border-color: #bb6106; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #faad60; +} +.has-warning .input-group-addon { + color: #ec7a08; + border-color: #ec7a08; + background-color: #fcf8e3; +} +.has-warning .form-control-feedback { + color: #ec7a08; +} +.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: #cc0000; +} +.has-error .form-control { + border-color: #cc0000; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} +.has-error .form-control:focus { + border-color: #990000; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ff3333; +} +.has-error .input-group-addon { + color: #cc0000; + border-color: #cc0000; + background-color: #f2dede; +} +.has-error .form-control-feedback { + color: #cc0000; +} +.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: #767676; +} +@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 { + margin-top: 0; + margin-bottom: 0; + padding-top: 3px; +} +.form-horizontal .radio, +.form-horizontal .checkbox { + min-height: 23px; +} +.form-horizontal .form-group { + margin-left: -20px; + margin-right: -20px; +} +@media (min-width: 768px) { + .form-horizontal .control-label { + text-align: right; + margin-bottom: 0; + padding-top: 3px; + } +} +.form-horizontal .has-feedback .form-control-feedback { + right: 20px; +} +@media (min-width: 768px) { + .form-horizontal .form-group-lg .control-label { + padding-top: 7px; + font-size: 14px; + } +} +@media (min-width: 768px) { + .form-horizontal .form-group-sm .control-label { + padding-top: 3px; + font-size: 11px; + } +} +.btn { + display: inline-block; + margin-bottom: 0; + font-weight: 600; + text-align: center; + vertical-align: middle; + -ms-touch-action: manipulation; + touch-action: manipulation; + cursor: pointer; + background-image: none; + border: 1px solid transparent; + white-space: nowrap; + padding: 2px 6px; + font-size: 12px; + line-height: 1.66666667; + border-radius: 1px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.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: #4d5258; + text-decoration: none; +} +.btn:active, +.btn.active { + outline: 0; + background-image: none; + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + cursor: not-allowed; + opacity: 0.65; + filter: alpha(opacity=65); + box-shadow: none; +} +a.btn.disabled, +fieldset[disabled] a.btn { + pointer-events: none; +} +.btn-default { + color: #4d5258; + background-color: #f1f1f1; + border-color: #bbb; +} +.btn-default:focus, +.btn-default.focus { + color: #4d5258; + background-color: #d8d8d8; + border-color: #7b7b7b; +} +.btn-default:hover { + color: #4d5258; + background-color: #d8d8d8; + border-color: #9c9c9c; +} +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + color: #4d5258; + background-color: #d8d8d8; + border-color: #9c9c9c; +} +.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: #4d5258; + background-color: #c6c6c6; + border-color: #7b7b7b; +} +.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: #f1f1f1; + border-color: #bbb; +} +.btn-default .badge { + color: #f1f1f1; + background-color: #4d5258; +} +.btn-primary { + color: #fff; + background-color: #0088ce; + border-color: #00659c; +} +.btn-primary:focus, +.btn-primary.focus { + color: #fff; + background-color: #00669b; + border-color: #00121d; +} +.btn-primary:hover { + color: #fff; + background-color: #00669b; + border-color: #003d5f; +} +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + color: #fff; + background-color: #00669b; + border-color: #003d5f; +} +.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: #004f77; + border-color: #00121d; +} +.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: #0088ce; + border-color: #00659c; +} +.btn-primary .badge { + color: #0088ce; + background-color: #fff; +} +.btn-success { + color: #fff; + background-color: #3f9c35; + border-color: #37892f; +} +.btn-success:focus, +.btn-success.focus { + color: #fff; + background-color: #307628; + border-color: #112a0e; +} +.btn-success:hover { + color: #fff; + background-color: #307628; + border-color: #255b1f; +} +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + color: #fff; + background-color: #307628; + border-color: #255b1f; +} +.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: #255b1f; + border-color: #112a0e; +} +.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: #3f9c35; + border-color: #37892f; +} +.btn-success .badge { + color: #3f9c35; + background-color: #fff; +} +.btn-info { + color: #fff; + background-color: #00659c; + border-color: #005483; +} +.btn-info:focus, +.btn-info.focus { + color: #fff; + background-color: #004469; + border-color: #000203; +} +.btn-info:hover { + color: #fff; + background-color: #004469; + border-color: #002d45; +} +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + color: #fff; + background-color: #004469; + border-color: #002d45; +} +.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: #002d45; + border-color: #000203; +} +.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: #00659c; + border-color: #005483; +} +.btn-info .badge { + color: #00659c; + background-color: #fff; +} +.btn-warning { + color: #fff; + background-color: #ec7a08; + border-color: #d36d07; +} +.btn-warning:focus, +.btn-warning.focus { + color: #fff; + background-color: #bb6106; + border-color: #582e03; +} +.btn-warning:hover { + color: #fff; + background-color: #bb6106; + border-color: #984f05; +} +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + color: #fff; + background-color: #bb6106; + border-color: #984f05; +} +.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: #984f05; + border-color: #582e03; +} +.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: #ec7a08; + border-color: #d36d07; +} +.btn-warning .badge { + color: #ec7a08; + background-color: #fff; +} +.btn-danger { + color: #fff; + background-color: #a30000; + border-color: #8b0000; +} +.btn-danger:focus, +.btn-danger.focus { + color: #fff; + background-color: #700000; + border-color: #0b0000; +} +.btn-danger:hover { + color: #fff; + background-color: #700000; + border-color: #4e0000; +} +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + color: #fff; + background-color: #700000; + border-color: #4e0000; +} +.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: #4c0000; + border-color: #0b0000; +} +.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: #a30000; + border-color: #8b0000; +} +.btn-danger .badge { + color: #a30000; + background-color: #fff; +} +.btn-link { + color: #0088ce; + font-weight: normal; + border-radius: 0; +} +.btn-link, +.btn-link:active, +.btn-link.active, +.btn-link[disabled], +fieldset[disabled] .btn-link { + background-color: transparent; + box-shadow: none; +} +.btn-link, +.btn-link:hover, +.btn-link:focus, +.btn-link:active { + border-color: transparent; +} +.btn-link:hover, +.btn-link:focus { + color: #00659c; + 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: #9c9c9c; + text-decoration: none; +} +.btn-lg, +.btn-group-lg > .btn { + padding: 6px 10px; + font-size: 14px; + line-height: 1.3333333; + border-radius: 1px; +} +.btn-sm, +.btn-group-sm > .btn { + padding: 2px 6px; + font-size: 11px; + line-height: 1.5; + border-radius: 1px; +} +.btn-xs, +.btn-group-xs > .btn { + padding: 1px 5px; + font-size: 11px; + line-height: 1.5; + border-radius: 1px; +} +.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; + transition: opacity 0.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; + transition-property: height, visibility; + transition-duration: 0.35s; + transition-timing-function: ease; +} +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 0 dashed; + border-top: 0 solid \9; + border-right: 0 solid transparent; + border-left: 0 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; + list-style: none; + font-size: 12px; + text-align: left; + background-color: #fff; + border: 1px solid #bbb; + border-radius: 1px; + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + background-clip: padding-box; +} +.dropdown-menu.pull-right { + right: 0; + left: auto; +} +.dropdown-menu .divider { + margin: 9px 0; + background-color: #ededed; + height: 1px; + margin: 4px 1px; + overflow: hidden; +} +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 1.66666667; + color: #363636; + white-space: nowrap; +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + text-decoration: none; + color: #4d5258; + background-color: #def3ff; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #fff; + text-decoration: none; + outline: 0; + background-color: #0088ce; +} +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #9c9c9c; +} +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + cursor: not-allowed; +} +.open > .dropdown-menu { + display: block; +} +.open > a { + outline: 0; +} +.dropdown-menu-right { + left: auto; + right: 0; +} +.dropdown-menu-left { + left: 0; + right: auto; +} +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: 11px; + line-height: 1.66666667; + color: #9c9c9c; + white-space: nowrap; +} +.dropdown-backdrop { + position: fixed; + left: 0; + right: 0; + bottom: 0; + top: 0; + z-index: 990; +} +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + border-top: 0; + border-bottom: 0 dashed; + border-bottom: 0 solid \9; + content: ""; +} +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 2px; +} +@media (min-width: 768px) { + .navbar-right .dropdown-menu { + left: auto; + right: 0; + } + .navbar-right .dropdown-menu-left { + left: 0; + right: auto; + } +} +.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-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.btn-group > .btn-group { + float: left; +} +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-bottom-right-radius: 0; + border-top-right-radius: 0; +} +.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-bottom-left-radius: 0; + border-top-left-radius: 0; +} +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} +.btn-group > .btn + .dropdown-toggle { + padding-left: 8px; + padding-right: 8px; +} +.btn-group > .btn-lg + .dropdown-toggle { + padding-left: 12px; + padding-right: 12px; +} +.btn-group.open .dropdown-toggle { + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} +.btn-group.open .dropdown-toggle.btn-link { + box-shadow: none; +} +.btn .caret { + margin-left: 0; +} +.btn-lg .caret { + border-width: 0 0 0; + border-bottom-width: 0; +} +.dropup .btn-lg .caret { + border-width: 0 0 0; +} +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group, +.btn-group-vertical > .btn-group > .btn { + display: block; + float: none; + width: 100%; + max-width: 100%; +} +.btn-group-vertical > .btn-group > .btn { + float: none; +} +.btn-group-vertical > .btn + .btn, +.btn-group-vertical > .btn + .btn-group, +.btn-group-vertical > .btn-group + .btn, +.btn-group-vertical > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; +} +.btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; +} +.btn-group-vertical > .btn:first-child:not(:last-child) { + border-top-right-radius: 1px; + border-top-left-radius: 1px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-top-right-radius: 0; + border-top-left-radius: 0; + border-bottom-right-radius: 1px; + border-bottom-left-radius: 1px; +} +.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-right-radius: 0; + border-top-left-radius: 0; +} +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; +} +.btn-group-justified > .btn, +.btn-group-justified > .btn-group { + float: none; + display: table-cell; + 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-left: 0; + padding-right: 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: 33px; + padding: 6px 10px; + font-size: 14px; + line-height: 1.3333333; + border-radius: 1px; +} +select.input-group-lg > .form-control, +select.input-group-lg > .input-group-addon, +select.input-group-lg > .input-group-btn > .btn { + height: 33px; + line-height: 33px; +} +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: 22px; + padding: 2px 6px; + font-size: 11px; + line-height: 1.5; + border-radius: 1px; +} +select.input-group-sm > .form-control, +select.input-group-sm > .input-group-addon, +select.input-group-sm > .input-group-btn > .btn { + height: 22px; + line-height: 22px; +} +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: 2px 6px; + font-size: 12px; + font-weight: normal; + line-height: 1; + color: #363636; + text-align: center; + background-color: #f1f1f1; + border: 1px solid #bbb; + border-radius: 1px; +} +.input-group-addon.input-sm { + padding: 2px 6px; + font-size: 11px; + border-radius: 1px; +} +.input-group-addon.input-lg { + padding: 6px 10px; + font-size: 14px; + border-radius: 1px; +} +.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-bottom-right-radius: 0; + border-top-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-bottom-left-radius: 0; + border-top-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 { + margin-bottom: 0; + padding-left: 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: #f1f1f1; +} +.nav > li.disabled > a { + color: #9c9c9c; +} +.nav > li.disabled > a:hover, +.nav > li.disabled > a:focus { + color: #9c9c9c; + text-decoration: none; + background-color: transparent; + cursor: not-allowed; +} +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + background-color: #f1f1f1; + border-color: #0088ce; +} +.nav .nav-divider { + margin: 9px 0; + background-color: #e5e5e5; + background-color: #ededed; + height: 1px; + margin: 4px 1px; + overflow: hidden; +} +.nav > li > a > img { + max-width: none; +} +.nav-tabs { + border-bottom: 1px solid #ededed; +} +.nav-tabs > li { + float: left; + margin-bottom: -1px; +} +.nav-tabs > li > a { + margin-right: 2px; + line-height: 1.66666667; + border: 1px solid transparent; + border-radius: 1px 1px 0 0; +} +.nav-tabs > li > a:hover { + border-color: transparent transparent #ededed; +} +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus { + color: #0088ce; + background-color: #fff; + border: 1px solid #ddd; + border-bottom-color: transparent; + cursor: default; +} +.nav-tabs.nav-justified { + width: 100%; + border-bottom: 0; +} +.nav-tabs.nav-justified > li { + float: none; +} +.nav-tabs.nav-justified > li > a { + text-align: center; + margin-bottom: 5px; +} +.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: 1px; +} +.nav-tabs.nav-justified > .active > a, +.nav-tabs.nav-justified > .active > a:hover, +.nav-tabs.nav-justified > .active > a:focus { + border: 1px solid #ededed; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li > a { + border-bottom: 1px solid #ededed; + border-radius: 1px 1px 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: 1px; +} +.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: #39a5dc; +} +.nav-stacked > li { + float: none; +} +.nav-stacked > li + li { + margin-top: 2px; + margin-left: 0; +} +.nav-justified { + width: 100%; +} +.nav-justified > li { + float: none; +} +.nav-justified > li > a { + text-align: center; + margin-bottom: 5px; +} +.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: 1px; +} +.nav-tabs-justified > .active > a, +.nav-tabs-justified > .active > a:hover, +.nav-tabs-justified > .active > a:focus { + border: 1px solid #ededed; +} +@media (min-width: 768px) { + .nav-tabs-justified > li > a { + border-bottom: 1px solid #ededed; + border-radius: 1px 1px 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-right-radius: 0; + border-top-left-radius: 0; +} +.navbar { + position: relative; + min-height: 50px; + margin-bottom: 20px; + border: 1px solid transparent; +} +@media (min-width: 768px) { + .navbar { + border-radius: 1px; + } +} +@media (min-width: 768px) { + .navbar-header { + float: left; + } +} +.navbar-collapse { + overflow-x: visible; + padding-right: 20px; + padding-left: 20px; + border-top: 1px solid transparent; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); + -webkit-overflow-scrolling: touch; +} +.navbar-collapse.in { + overflow-y: auto; +} +@media (min-width: 768px) { + .navbar-collapse { + width: auto; + border-top: 0; + box-shadow: none; + } + .navbar-collapse.collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important; + } + .navbar-collapse.in { + overflow-y: visible; + } + .navbar-fixed-top .navbar-collapse, + .navbar-static-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + padding-left: 0; + padding-right: 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: -20px; + margin-left: -20px; +} +@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; + padding: 15px 20px; + font-size: 14px; + line-height: 20px; + height: 50px; +} +.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: -20px; + } +} +.navbar-toggle { + position: relative; + float: right; + margin-right: 20px; + padding: 9px 10px; + margin-top: 8px; + margin-bottom: 8px; + background-color: transparent; + background-image: none; + border: 1px solid transparent; + border-radius: 1px; +} +.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 -20px; +} +.navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; + line-height: 20px; +} +@media (max-width: 767px) { + .navbar-nav .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + box-shadow: none; + } + .navbar-nav .open .dropdown-menu > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 5px 15px 5px 25px; + } + .navbar-nav .open .dropdown-menu > li > a { + line-height: 20px; + } + .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-nav .open .dropdown-menu > li > a:focus { + background-image: none; + } +} +@media (min-width: 768px) { + .navbar-nav { + float: left; + margin: 0; + } + .navbar-nav > li { + float: left; + } + .navbar-nav > li > a { + padding-top: 15px; + padding-bottom: 15px; + } +} +.navbar-form { + margin-left: -20px; + margin-right: -20px; + padding: 10px 20px; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + margin-top: 12px; + margin-bottom: 12px; +} +@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; + border: 0; + margin-left: 0; + margin-right: 0; + padding-top: 0; + padding-bottom: 0; + box-shadow: none; + } +} +.navbar-nav > li > .dropdown-menu { + margin-top: 0; + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + margin-bottom: 0; + border-top-right-radius: 1px; + border-top-left-radius: 1px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.navbar-btn { + margin-top: 12px; + margin-bottom: 12px; +} +.navbar-btn.btn-sm { + margin-top: 14px; + margin-bottom: 14px; +} +.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-left: 20px; + margin-right: 20px; + } +} +@media (min-width: 768px) { + .navbar-left { + float: left !important; + float: left; + } + .navbar-right { + float: right !important; + float: right; + margin-right: -20px; + } + .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 { + background-color: #e7e7e7; + color: #555; +} +@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: #c2c2c2; +} +.navbar-inverse .navbar-brand:hover, +.navbar-inverse .navbar-brand:focus { + color: #fff; + background-color: transparent; +} +.navbar-inverse .navbar-text { + color: #c2c2c2; +} +.navbar-inverse .navbar-nav > li > a { + color: #c2c2c2; +} +.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 { + background-color: #080808; + color: #fff; +} +@media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu .divider { + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { + color: #c2c2c2; + } + .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: #c2c2c2; +} +.navbar-inverse .navbar-link:hover { + color: #fff; +} +.navbar-inverse .btn-link { + color: #c2c2c2; +} +.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: transparent; + border-radius: 1px; +} +.breadcrumb > li { + display: inline-block; +} +.breadcrumb > li + li:before { + content: "\f105\00a0"; + padding: 0 5px; + color: #4d5258; +} +.breadcrumb > .active { + color: #4d5258; +} +.pagination { + display: inline-block; + padding-left: 0; + margin: 20px 0; + border-radius: 1px; +} +.pagination > li { + display: inline; +} +.pagination > li > a, +.pagination > li > span { + position: relative; + float: left; + padding: 2px 6px; + line-height: 1.66666667; + text-decoration: none; + color: #0088ce; + background-color: #f5f5f5; + border: 1px solid #bbb; + margin-left: -1px; +} +.pagination > li:first-child > a, +.pagination > li:first-child > span { + margin-left: 0; + border-bottom-left-radius: 1px; + border-top-left-radius: 1px; +} +.pagination > li:last-child > a, +.pagination > li:last-child > span { + border-bottom-right-radius: 1px; + border-top-right-radius: 1px; +} +.pagination > li > a:hover, +.pagination > li > span:hover, +.pagination > li > a:focus, +.pagination > li > span:focus { + z-index: 2; + color: #00659c; + background-color: #ededed; + 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; + background-color: #39a5dc; + border-color: #39a5dc; + cursor: default; +} +.pagination > .disabled > span, +.pagination > .disabled > span:hover, +.pagination > .disabled > span:focus, +.pagination > .disabled > a, +.pagination > .disabled > a:hover, +.pagination > .disabled > a:focus { + color: #9c9c9c; + background-color: #fff; + border-color: #ddd; + cursor: not-allowed; +} +.pagination-lg > li > a, +.pagination-lg > li > span { + padding: 6px 10px; + font-size: 14px; + line-height: 1.3333333; +} +.pagination-lg > li:first-child > a, +.pagination-lg > li:first-child > span { + border-bottom-left-radius: 1px; + border-top-left-radius: 1px; +} +.pagination-lg > li:last-child > a, +.pagination-lg > li:last-child > span { + border-bottom-right-radius: 1px; + border-top-right-radius: 1px; +} +.pagination-sm > li > a, +.pagination-sm > li > span { + padding: 2px 6px; + font-size: 11px; + line-height: 1.5; +} +.pagination-sm > li:first-child > a, +.pagination-sm > li:first-child > span { + border-bottom-left-radius: 1px; + border-top-left-radius: 1px; +} +.pagination-sm > li:last-child > a, +.pagination-sm > li:last-child > span { + border-bottom-right-radius: 1px; + border-top-right-radius: 1px; +} +.pager { + padding-left: 0; + margin: 20px 0; + list-style: none; + text-align: center; +} +.pager li { + display: inline; +} +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #f5f5f5; + border: 1px solid #bbb; + border-radius: 0; +} +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #ededed; +} +.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: #8b8d8f; + background-color: #f5f5f5; + cursor: not-allowed; +} +.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: #9c9c9c; +} +.label-default[href]:hover, +.label-default[href]:focus { + background-color: #838383; +} +.label-primary { + background-color: #39a5dc; +} +.label-primary[href]:hover, +.label-primary[href]:focus { + background-color: #228bc0; +} +.label-success { + background-color: #3f9c35; +} +.label-success[href]:hover, +.label-success[href]:focus { + background-color: #307628; +} +.label-info { + background-color: #00659c; +} +.label-info[href]:hover, +.label-info[href]:focus { + background-color: #004469; +} +.label-warning { + background-color: #ec7a08; +} +.label-warning[href]:hover, +.label-warning[href]:focus { + background-color: #bb6106; +} +.label-danger { + background-color: #cc0000; +} +.label-danger[href]:hover, +.label-danger[href]:focus { + background-color: #990000; +} +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: 11px; + font-weight: bold; + color: #fff; + line-height: 1; + vertical-align: middle; + white-space: nowrap; + text-align: center; + background-color: #9c9c9c; + border-radius: 1px; +} +.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: #0088ce; + 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: #f1f1f1; +} +.jumbotron h1, +.jumbotron .h1 { + color: inherit; +} +.jumbotron p { + margin-bottom: 15px; + font-size: 18px; + font-weight: 200; +} +.jumbotron > hr { + border-top-color: #d8d8d8; +} +.container .jumbotron, +.container-fluid .jumbotron { + border-radius: 1px; + padding-left: 20px; + padding-right: 20px; +} +.jumbotron .container { + max-width: 100%; +} +@media screen and (min-width: 768px) { + .jumbotron { + padding-top: 48px; + padding-bottom: 48px; + } + .container .jumbotron, + .container-fluid .jumbotron { + padding-left: 60px; + padding-right: 60px; + } + .jumbotron h1, + .jumbotron .h1 { + font-size: 54px; + } +} +.thumbnail { + display: block; + padding: 4px; + margin-bottom: 20px; + line-height: 1.66666667; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 1px; + transition: border 0.2s ease-in-out; +} +.thumbnail > img, +.thumbnail a > img { + margin-left: auto; + margin-right: auto; +} +a.thumbnail:hover, +a.thumbnail:focus, +a.thumbnail.active { + border-color: #0088ce; +} +.thumbnail .caption { + padding: 9px; + color: #363636; +} +.alert { + padding: 11px; + margin-bottom: 20px; + border: 1px solid transparent; + border-radius: 1px; +} +.alert h4 { + margin-top: 0; + color: inherit; +} +.alert .alert-link { + font-weight: 500; +} +.alert > p, +.alert > ul { + margin-bottom: 0; +} +.alert > p + p { + margin-top: 5px; +} +.alert-dismissable, +.alert-dismissible { + padding-right: 31px; +} +.alert-dismissable .close, +.alert-dismissible .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; +} +.alert-success { + background-color: #e9f4e9; + border-color: #3f9c35; + color: #363636; +} +.alert-success hr { + border-top-color: #37892f; +} +.alert-success .alert-link { + color: #1d1d1d; +} +.alert-info { + background-color: #f5f5f5; + border-color: #8b8d8f; + color: #363636; +} +.alert-info hr { + border-top-color: #7e8082; +} +.alert-info .alert-link { + color: #1d1d1d; +} +.alert-warning { + background-color: #fdf2e5; + border-color: #ec7a08; + color: #363636; +} +.alert-warning hr { + border-top-color: #d36d07; +} +.alert-warning .alert-link { + color: #1d1d1d; +} +.alert-danger { + background-color: #ffe6e6; + border-color: #cc0000; + color: #363636; +} +.alert-danger hr { + border-top-color: #b30000; +} +.alert-danger .alert-link { + color: #1d1d1d; +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + overflow: hidden; + height: 20px; + margin-bottom: 20px; + background-color: #ededed; + border-radius: 1px; + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} +.progress-bar { + float: left; + width: 0%; + height: 100%; + font-size: 11px; + line-height: 20px; + color: #fff; + text-align: center; + background-color: #39a5dc; + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + transition: width 0.6s ease; +} +.progress-striped .progress-bar, +.progress-bar-striped { + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(3, 3, 3, 0.15) 25%, rgba(3, 3, 3, 0.15) 26%, transparent 27%, transparent 49%, rgba(3, 3, 3, 0.15) 50%, rgba(3, 3, 3, 0.15) 51%, transparent 52%, transparent 74%, rgba(3, 3, 3, 0.15) 75%, rgba(3, 3, 3, 0.15) 76%, transparent 77%); + background-size: 40px 40px; +} +.progress.active .progress-bar, +.progress-bar.active { + animation: progress-bar-stripes 2s linear infinite; +} +.progress-bar-success { + background-color: #3f9c35; +} +.progress-striped .progress-bar-success { + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(3, 3, 3, 0.15) 25%, rgba(3, 3, 3, 0.15) 26%, transparent 27%, transparent 49%, rgba(3, 3, 3, 0.15) 50%, rgba(3, 3, 3, 0.15) 51%, transparent 52%, transparent 74%, rgba(3, 3, 3, 0.15) 75%, rgba(3, 3, 3, 0.15) 76%, transparent 77%); +} +.progress-bar-info { + background-color: #00659c; +} +.progress-striped .progress-bar-info { + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(3, 3, 3, 0.15) 25%, rgba(3, 3, 3, 0.15) 26%, transparent 27%, transparent 49%, rgba(3, 3, 3, 0.15) 50%, rgba(3, 3, 3, 0.15) 51%, transparent 52%, transparent 74%, rgba(3, 3, 3, 0.15) 75%, rgba(3, 3, 3, 0.15) 76%, transparent 77%); +} +.progress-bar-warning { + background-color: #ec7a08; +} +.progress-striped .progress-bar-warning { + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(3, 3, 3, 0.15) 25%, rgba(3, 3, 3, 0.15) 26%, transparent 27%, transparent 49%, rgba(3, 3, 3, 0.15) 50%, rgba(3, 3, 3, 0.15) 51%, transparent 52%, transparent 74%, rgba(3, 3, 3, 0.15) 75%, rgba(3, 3, 3, 0.15) 76%, transparent 77%); +} +.progress-bar-danger { + background-color: #cc0000; +} +.progress-striped .progress-bar-danger { + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(3, 3, 3, 0.15) 25%, rgba(3, 3, 3, 0.15) 26%, transparent 27%, transparent 49%, rgba(3, 3, 3, 0.15) 50%, rgba(3, 3, 3, 0.15) 51%, transparent 52%, transparent 74%, rgba(3, 3, 3, 0.15) 75%, rgba(3, 3, 3, 0.15) 76%, transparent 77%); +} +.media { + margin-top: 15px; +} +.media:first-child { + margin-top: 0; +} +.media, +.media-body { + zoom: 1; + overflow: hidden; +} +.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 { + margin-bottom: 20px; + padding-left: 0; +} +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #fff; + border: 1px solid #f5f5f5; +} +.list-group-item:first-child { + border-top-right-radius: 0; + border-top-left-radius: 0; +} +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +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 { + text-decoration: none; + color: #555; + background-color: #def3ff; +} +button.list-group-item { + width: 100%; + text-align: left; +} +.list-group-item.disabled, +.list-group-item.disabled:hover, +.list-group-item.disabled:focus { + background-color: #f1f1f1; + color: #9c9c9c; + cursor: not-allowed; +} +.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: #9c9c9c; +} +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + z-index: 2; + color: #fff; + background-color: #39a5dc; + border-color: #39a5dc; +} +.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: #e6f4fb; +} +.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: #ec7a08; + background-color: #fcf8e3; +} +a.list-group-item-warning, +button.list-group-item-warning { + color: #ec7a08; +} +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: #ec7a08; + 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: #ec7a08; + border-color: #ec7a08; +} +.list-group-item-danger { + color: #cc0000; + background-color: #f2dede; +} +a.list-group-item-danger, +button.list-group-item-danger { + color: #cc0000; +} +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: #cc0000; + 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: #cc0000; + border-color: #cc0000; +} +.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: 1px; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); +} +.panel-body { + padding: 15px; +} +.panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-right-radius: 0px; + border-top-left-radius: 0px; +} +.panel-heading > .dropdown .dropdown-toggle { + color: inherit; +} +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 14px; + 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 #d1d1d1; + border-bottom-right-radius: 0px; + border-bottom-left-radius: 0px; +} +.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-right-radius: 0px; + border-top-left-radius: 0px; +} +.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: 0px; + border-bottom-left-radius: 0px; +} +.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child { + border-top-right-radius: 0; + border-top-left-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-left: 15px; + padding-right: 15px; +} +.panel > .table:first-child, +.panel > .table-responsive:first-child > .table:first-child { + border-top-right-radius: 0px; + border-top-left-radius: 0px; +} +.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: 0px; + border-top-right-radius: 0px; +} +.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: 0px; +} +.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: 0px; +} +.panel > .table:last-child, +.panel > .table-responsive:last-child > .table:last-child { + border-bottom-right-radius: 0px; + border-bottom-left-radius: 0px; +} +.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-left-radius: 0px; + border-bottom-right-radius: 0px; +} +.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: 0px; +} +.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: 0px; +} +.panel > .panel-body + .table, +.panel > .panel-body + .table-responsive, +.panel > .table + .panel-body, +.panel > .table-responsive + .panel-body { + border-top: 1px solid #d1d1d1; +} +.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 { + border: 0; + margin-bottom: 0; +} +.panel-group { + margin-bottom: 20px; +} +.panel-group .panel { + margin-bottom: 0; + border-radius: 1px; +} +.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 #d1d1d1; +} +.panel-group .panel-footer { + border-top: 0; +} +.panel-group .panel-footer + .panel-collapse .panel-body { + border-bottom: 1px solid #d1d1d1; +} +.panel-default { + border-color: #ddd; +} +.panel-default > .panel-heading { + color: #363636; + 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: #363636; +} +.panel-default > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ddd; +} +.panel-primary { + border-color: #39a5dc; +} +.panel-primary > .panel-heading { + color: #fff; + background-color: #39a5dc; + border-color: #39a5dc; +} +.panel-primary > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #39a5dc; +} +.panel-primary > .panel-heading .badge { + color: #39a5dc; + background-color: #fff; +} +.panel-primary > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #39a5dc; +} +.panel-success { + border-color: #3f9c35; +} +.panel-success > .panel-heading { + color: #fff; + background-color: #3f9c35; + border-color: #3f9c35; +} +.panel-success > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #3f9c35; +} +.panel-success > .panel-heading .badge { + color: #3f9c35; + background-color: #fff; +} +.panel-success > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #3f9c35; +} +.panel-info { + border-color: #00659c; +} +.panel-info > .panel-heading { + color: #fff; + background-color: #00659c; + border-color: #00659c; +} +.panel-info > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #00659c; +} +.panel-info > .panel-heading .badge { + color: #00659c; + background-color: #fff; +} +.panel-info > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #00659c; +} +.panel-warning { + border-color: #ec7a08; +} +.panel-warning > .panel-heading { + color: #fff; + background-color: #ec7a08; + border-color: #ec7a08; +} +.panel-warning > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ec7a08; +} +.panel-warning > .panel-heading .badge { + color: #ec7a08; + background-color: #fff; +} +.panel-warning > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ec7a08; +} +.panel-danger { + border-color: #cc0000; +} +.panel-danger > .panel-heading { + color: #fff; + background-color: #cc0000; + border-color: #cc0000; +} +.panel-danger > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #cc0000; +} +.panel-danger > .panel-heading .badge { + color: #cc0000; + background-color: #fff; +} +.panel-danger > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #cc0000; +} +.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; + left: 0; + bottom: 0; + height: 100%; + width: 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: 1px; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} +.well-lg { + padding: 24px; + border-radius: 1px; +} +.well-sm { + padding: 9px; + border-radius: 1px; +} +.close { + float: right; + font-size: 18px; + font-weight: bold; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + opacity: 0.2; + filter: alpha(opacity=20); +} +.close:hover, +.close:focus { + color: #000; + text-decoration: none; + cursor: pointer; + opacity: 0.5; + filter: alpha(opacity=50); +} +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} +.modal-open { + overflow: hidden; +} +.modal { + display: none; + overflow: hidden; + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1050; + -webkit-overflow-scrolling: touch; + outline: 0; +} +.modal.fade .modal-dialog { + -ms-transform: translate(0, -25%); + transform: translate(0, -25%); + transition: transform 0.3s ease-out; +} +.modal.in .modal-dialog { + -ms-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; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 1px; + box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); + background-clip: padding-box; + outline: 0; +} +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000; +} +.modal-backdrop.fade { + opacity: 0; + filter: alpha(opacity=0); +} +.modal-backdrop.in { + opacity: 0.5; + filter: alpha(opacity=50); +} +.modal-header { + padding: 15px; + border-bottom: 1px solid #e5e5e5; +} +.modal-header .close { + margin-top: -2px; +} +.modal-title { + margin: 0; + line-height: 1.66666667; +} +.modal-body { + position: relative; + padding: 15px; +} +.modal-footer { + padding: 15px; + text-align: right; + border-top: 1px solid #e5e5e5; +} +.modal-footer .btn + .btn { + margin-left: 5px; + margin-bottom: 0; +} +.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 { + box-shadow: 0 5px 15px rgba(0, 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: "Open Sans", Helvetica, Arial, sans-serif; + font-style: normal; + font-weight: normal; + letter-spacing: normal; + line-break: auto; + line-height: 1.66666667; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + white-space: normal; + word-break: normal; + word-spacing: normal; + word-wrap: normal; + font-size: 11px; + opacity: 0; + filter: alpha(opacity=0); +} +.tooltip.in { + opacity: 0.9; + filter: alpha(opacity=90); +} +.tooltip.top { + margin-top: -3px; + padding: 8px 0; +} +.tooltip.right { + margin-left: 3px; + padding: 0 8px; +} +.tooltip.bottom { + margin-top: 3px; + padding: 8px 0; +} +.tooltip.left { + margin-left: -3px; + padding: 0 8px; +} +.tooltip-inner { + max-width: 220px; + padding: 3px 8px; + color: #fff; + text-align: center; + background-color: #393f44; + border-radius: 1px; +} +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -8px; + border-width: 8px 8px 0; + border-top-color: #393f44; +} +.tooltip.top-left .tooltip-arrow { + bottom: 0; + right: 8px; + margin-bottom: -8px; + border-width: 8px 8px 0; + border-top-color: #393f44; +} +.tooltip.top-right .tooltip-arrow { + bottom: 0; + left: 8px; + margin-bottom: -8px; + border-width: 8px 8px 0; + border-top-color: #393f44; +} +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -8px; + border-width: 8px 8px 8px 0; + border-right-color: #393f44; +} +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -8px; + border-width: 8px 0 8px 8px; + border-left-color: #393f44; +} +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -8px; + border-width: 0 8px 8px; + border-bottom-color: #393f44; +} +.tooltip.bottom-left .tooltip-arrow { + top: 0; + right: 8px; + margin-top: -8px; + border-width: 0 8px 8px; + border-bottom-color: #393f44; +} +.tooltip.bottom-right .tooltip-arrow { + top: 0; + left: 8px; + margin-top: -8px; + border-width: 0 8px 8px; + border-bottom-color: #393f44; +} +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: none; + max-width: 220px; + padding: 1px; + font-family: "Open Sans", Helvetica, Arial, sans-serif; + font-style: normal; + font-weight: normal; + letter-spacing: normal; + line-break: auto; + line-height: 1.66666667; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + white-space: normal; + word-break: normal; + word-spacing: normal; + word-wrap: normal; + font-size: 12px; + background-color: #fff; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid #bbb; + border-radius: 1px; + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); +} +.popover.top { + margin-top: -10px; +} +.popover.right { + margin-left: 10px; +} +.popover.bottom { + margin-top: 10px; +} +.popover.left { + margin-left: -10px; +} +.popover-title { + margin: 0; + padding: 8px 14px; + font-size: 12px; + background-color: #f5f5f5; + border-bottom: 1px solid #e8e8e8; + border-radius: 0px 0px 0 0; +} +.popover-content { + padding: 9px 14px; +} +.popover > .arrow, +.popover > .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.popover > .arrow { + border-width: 11px; +} +.popover > .arrow:after { + border-width: 10px; + content: ""; +} +.popover.top > .arrow { + left: 50%; + margin-left: -11px; + border-bottom-width: 0; + border-top-color: #999999; + border-top-color: #bbb; + bottom: -11px; +} +.popover.top > .arrow:after { + content: " "; + bottom: 1px; + margin-left: -10px; + border-bottom-width: 0; + border-top-color: #fff; +} +.popover.right > .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-left-width: 0; + border-right-color: #999999; + border-right-color: #bbb; +} +.popover.right > .arrow:after { + content: " "; + left: 1px; + bottom: -10px; + border-left-width: 0; + border-right-color: #fff; +} +.popover.bottom > .arrow { + left: 50%; + margin-left: -11px; + border-top-width: 0; + border-bottom-color: #999999; + border-bottom-color: #bbb; + top: -11px; +} +.popover.bottom > .arrow:after { + content: " "; + top: 1px; + margin-left: -10px; + 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: #999999; + border-left-color: #bbb; +} +.popover.left > .arrow:after { + content: " "; + right: 1px; + border-right-width: 0; + border-left-color: #fff; + bottom: -10px; +} +.carousel { + position: relative; +} +.carousel-inner { + position: relative; + overflow: hidden; + width: 100%; +} +.carousel-inner > .item { + display: none; + position: relative; + transition: 0.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 { + transition: transform 0.6s ease-in-out; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + perspective: 1000px; + } + .carousel-inner > .item.next, + .carousel-inner > .item.active.right { + transform: translate3d(100%, 0, 0); + left: 0; + } + .carousel-inner > .item.prev, + .carousel-inner > .item.active.left { + transform: translate3d(-100%, 0, 0); + left: 0; + } + .carousel-inner > .item.next.left, + .carousel-inner > .item.prev.right, + .carousel-inner > .item.active { + transform: translate3d(0, 0, 0); + left: 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; + left: 0; + bottom: 0; + width: 15%; + opacity: 0.5; + filter: alpha(opacity=50); + font-size: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); + background-color: rgba(0, 0, 0, 0); +} +.carousel-control.left { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); +} +.carousel-control.right { + left: auto; + right: 0; + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); +} +.carousel-control:hover, +.carousel-control:focus { + outline: 0; + color: #fff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} +.carousel-control .icon-prev, +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-left, +.carousel-control .glyphicon-chevron-right { + position: absolute; + top: 50%; + margin-top: -10px; + z-index: 5; + display: inline-block; +} +.carousel-control .icon-prev, +.carousel-control .glyphicon-chevron-left { + left: 50%; + margin-left: -10px; +} +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-right { + right: 50%; + margin-right: -10px; +} +.carousel-control .icon-prev, +.carousel-control .icon-next { + width: 20px; + height: 20px; + line-height: 1; + font-family: serif; +} +.carousel-control .icon-prev:before { + content: '\2039'; +} +.carousel-control .icon-next:before { + content: '\203a'; +} +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + margin-left: -30%; + padding-left: 0; + list-style: none; + text-align: center; +} +.carousel-indicators li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + border: 1px solid #fff; + border-radius: 10px; + cursor: pointer; + background-color: #000 \9; + background-color: rgba(0, 0, 0, 0); +} +.carousel-indicators .active { + margin: 0; + width: 12px; + height: 12px; + background-color: #fff; +} +.carousel-caption { + position: absolute; + left: 15%; + right: 15%; + bottom: 20px; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); +} +.carousel-caption .btn { + text-shadow: none; +} +@media screen and (min-width: 768px) { + .carousel-control .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 { + left: 20%; + right: 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 { + content: " "; + display: table; +} +.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-left: auto; + margin-right: 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; + } +} +/*! + * Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ +/* FONT PATH + * -------------------------- */ +@font-face { + font-family: 'FontAwesome'; + src: url('../fonts/fontawesome-webfont.eot?v=4.6.3'); + src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.6.3') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.6.3') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.6.3') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.6.3') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.6.3#fontawesomeregular') format('svg'); + font-weight: normal; + font-style: normal; +} +.fa { + display: inline-block; + font: normal normal normal 14px/1 FontAwesome; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +/* makes the font 33% larger relative to the icon container */ +.fa-lg { + font-size: 1.33333333em; + line-height: 0.75em; + vertical-align: -15%; +} +.fa-2x { + font-size: 2em; +} +.fa-3x { + font-size: 3em; +} +.fa-4x { + font-size: 4em; +} +.fa-5x { + font-size: 5em; +} +.fa-fw { + width: 1.28571429em; + text-align: center; +} +.fa-ul { + padding-left: 0; + margin-left: 2.14285714em; + list-style-type: none; +} +.fa-ul > li { + position: relative; +} +.fa-li { + position: absolute; + left: -2.14285714em; + width: 2.14285714em; + top: 0.14285714em; + text-align: center; +} +.fa-li.fa-lg { + left: -1.85714286em; +} +.fa-border { + padding: .2em .25em .15em; + border: solid 0.08em #eee; + border-radius: .1em; +} +.fa-pull-left { + float: left; +} +.fa-pull-right { + float: right; +} +.fa.fa-pull-left { + margin-right: .3em; +} +.fa.fa-pull-right { + margin-left: .3em; +} +/* Deprecated as of 4.4.0 */ +.pull-right { + float: right; +} +.pull-left { + float: left; +} +.fa.pull-left { + margin-right: .3em; +} +.fa.pull-right { + margin-left: .3em; +} +.fa-spin { + animation: fa-spin 2s infinite linear; +} +.fa-pulse { + animation: fa-spin 1s infinite steps(8); +} +@keyframes fa-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(359deg); + } +} +.fa-rotate-90 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +.fa-rotate-180 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +.fa-rotate-270 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} +.fa-flip-horizontal { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} +.fa-flip-vertical { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; + -ms-transform: scale(1, -1); + transform: scale(1, -1); +} +:root .fa-rotate-90, +:root .fa-rotate-180, +:root .fa-rotate-270, +:root .fa-flip-horizontal, +:root .fa-flip-vertical { + -webkit-filter: none; + filter: none; +} +.fa-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.fa-stack-1x, +.fa-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.fa-stack-1x { + line-height: inherit; +} +.fa-stack-2x { + font-size: 2em; +} +.fa-inverse { + color: #fff; +} +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +.fa-glass:before { + content: "\f000"; +} +.fa-music:before { + content: "\f001"; +} +.fa-search:before { + content: "\f002"; +} +.fa-envelope-o:before { + content: "\f003"; +} +.fa-heart:before { + content: "\f004"; +} +.fa-star:before { + content: "\f005"; +} +.fa-star-o:before { + content: "\f006"; +} +.fa-user:before { + content: "\f007"; +} +.fa-film:before { + content: "\f008"; +} +.fa-th-large:before { + content: "\f009"; +} +.fa-th:before { + content: "\f00a"; +} +.fa-th-list:before { + content: "\f00b"; +} +.fa-check:before { + content: "\f00c"; +} +.fa-remove:before, +.fa-close:before, +.fa-times:before { + content: "\f00d"; +} +.fa-search-plus:before { + content: "\f00e"; +} +.fa-search-minus:before { + content: "\f010"; +} +.fa-power-off:before { + content: "\f011"; +} +.fa-signal:before { + content: "\f012"; +} +.fa-gear:before, +.fa-cog:before { + content: "\f013"; +} +.fa-trash-o:before { + content: "\f014"; +} +.fa-home:before { + content: "\f015"; +} +.fa-file-o:before { + content: "\f016"; +} +.fa-clock-o:before { + content: "\f017"; +} +.fa-road:before { + content: "\f018"; +} +.fa-download:before { + content: "\f019"; +} +.fa-arrow-circle-o-down:before { + content: "\f01a"; +} +.fa-arrow-circle-o-up:before { + content: "\f01b"; +} +.fa-inbox:before { + content: "\f01c"; +} +.fa-play-circle-o:before { + content: "\f01d"; +} +.fa-rotate-right:before, +.fa-repeat:before { + content: "\f01e"; +} +.fa-refresh:before { + content: "\f021"; +} +.fa-list-alt:before { + content: "\f022"; +} +.fa-lock:before { + content: "\f023"; +} +.fa-flag:before { + content: "\f024"; +} +.fa-headphones:before { + content: "\f025"; +} +.fa-volume-off:before { + content: "\f026"; +} +.fa-volume-down:before { + content: "\f027"; +} +.fa-volume-up:before { + content: "\f028"; +} +.fa-qrcode:before { + content: "\f029"; +} +.fa-barcode:before { + content: "\f02a"; +} +.fa-tag:before { + content: "\f02b"; +} +.fa-tags:before { + content: "\f02c"; +} +.fa-book:before { + content: "\f02d"; +} +.fa-bookmark:before { + content: "\f02e"; +} +.fa-print:before { + content: "\f02f"; +} +.fa-camera:before { + content: "\f030"; +} +.fa-font:before { + content: "\f031"; +} +.fa-bold:before { + content: "\f032"; +} +.fa-italic:before { + content: "\f033"; +} +.fa-text-height:before { + content: "\f034"; +} +.fa-text-width:before { + content: "\f035"; +} +.fa-align-left:before { + content: "\f036"; +} +.fa-align-center:before { + content: "\f037"; +} +.fa-align-right:before { + content: "\f038"; +} +.fa-align-justify:before { + content: "\f039"; +} +.fa-list:before { + content: "\f03a"; +} +.fa-dedent:before, +.fa-outdent:before { + content: "\f03b"; +} +.fa-indent:before { + content: "\f03c"; +} +.fa-video-camera:before { + content: "\f03d"; +} +.fa-photo:before, +.fa-image:before, +.fa-picture-o:before { + content: "\f03e"; +} +.fa-pencil:before { + content: "\f040"; +} +.fa-map-marker:before { + content: "\f041"; +} +.fa-adjust:before { + content: "\f042"; +} +.fa-tint:before { + content: "\f043"; +} +.fa-edit:before, +.fa-pencil-square-o:before { + content: "\f044"; +} +.fa-share-square-o:before { + content: "\f045"; +} +.fa-check-square-o:before { + content: "\f046"; +} +.fa-arrows:before { + content: "\f047"; +} +.fa-step-backward:before { + content: "\f048"; +} +.fa-fast-backward:before { + content: "\f049"; +} +.fa-backward:before { + content: "\f04a"; +} +.fa-play:before { + content: "\f04b"; +} +.fa-pause:before { + content: "\f04c"; +} +.fa-stop:before { + content: "\f04d"; +} +.fa-forward:before { + content: "\f04e"; +} +.fa-fast-forward:before { + content: "\f050"; +} +.fa-step-forward:before { + content: "\f051"; +} +.fa-eject:before { + content: "\f052"; +} +.fa-chevron-left:before { + content: "\f053"; +} +.fa-chevron-right:before { + content: "\f054"; +} +.fa-plus-circle:before { + content: "\f055"; +} +.fa-minus-circle:before { + content: "\f056"; +} +.fa-times-circle:before { + content: "\f057"; +} +.fa-check-circle:before { + content: "\f058"; +} +.fa-question-circle:before { + content: "\f059"; +} +.fa-info-circle:before { + content: "\f05a"; +} +.fa-crosshairs:before { + content: "\f05b"; +} +.fa-times-circle-o:before { + content: "\f05c"; +} +.fa-check-circle-o:before { + content: "\f05d"; +} +.fa-ban:before { + content: "\f05e"; +} +.fa-arrow-left:before { + content: "\f060"; +} +.fa-arrow-right:before { + content: "\f061"; +} +.fa-arrow-up:before { + content: "\f062"; +} +.fa-arrow-down:before { + content: "\f063"; +} +.fa-mail-forward:before, +.fa-share:before { + content: "\f064"; +} +.fa-expand:before { + content: "\f065"; +} +.fa-compress:before { + content: "\f066"; +} +.fa-plus:before { + content: "\f067"; +} +.fa-minus:before { + content: "\f068"; +} +.fa-asterisk:before { + content: "\f069"; +} +.fa-exclamation-circle:before { + content: "\f06a"; +} +.fa-gift:before { + content: "\f06b"; +} +.fa-leaf:before { + content: "\f06c"; +} +.fa-fire:before { + content: "\f06d"; +} +.fa-eye:before { + content: "\f06e"; +} +.fa-eye-slash:before { + content: "\f070"; +} +.fa-warning:before, +.fa-exclamation-triangle:before { + content: "\f071"; +} +.fa-plane:before { + content: "\f072"; +} +.fa-calendar:before { + content: "\f073"; +} +.fa-random:before { + content: "\f074"; +} +.fa-comment:before { + content: "\f075"; +} +.fa-magnet:before { + content: "\f076"; +} +.fa-chevron-up:before { + content: "\f077"; +} +.fa-chevron-down:before { + content: "\f078"; +} +.fa-retweet:before { + content: "\f079"; +} +.fa-shopping-cart:before { + content: "\f07a"; +} +.fa-folder:before { + content: "\f07b"; +} +.fa-folder-open:before { + content: "\f07c"; +} +.fa-arrows-v:before { + content: "\f07d"; +} +.fa-arrows-h:before { + content: "\f07e"; +} +.fa-bar-chart-o:before, +.fa-bar-chart:before { + content: "\f080"; +} +.fa-twitter-square:before { + content: "\f081"; +} +.fa-facebook-square:before { + content: "\f082"; +} +.fa-camera-retro:before { + content: "\f083"; +} +.fa-key:before { + content: "\f084"; +} +.fa-gears:before, +.fa-cogs:before { + content: "\f085"; +} +.fa-comments:before { + content: "\f086"; +} +.fa-thumbs-o-up:before { + content: "\f087"; +} +.fa-thumbs-o-down:before { + content: "\f088"; +} +.fa-star-half:before { + content: "\f089"; +} +.fa-heart-o:before { + content: "\f08a"; +} +.fa-sign-out:before { + content: "\f08b"; +} +.fa-linkedin-square:before { + content: "\f08c"; +} +.fa-thumb-tack:before { + content: "\f08d"; +} +.fa-external-link:before { + content: "\f08e"; +} +.fa-sign-in:before { + content: "\f090"; +} +.fa-trophy:before { + content: "\f091"; +} +.fa-github-square:before { + content: "\f092"; +} +.fa-upload:before { + content: "\f093"; +} +.fa-lemon-o:before { + content: "\f094"; +} +.fa-phone:before { + content: "\f095"; +} +.fa-square-o:before { + content: "\f096"; +} +.fa-bookmark-o:before { + content: "\f097"; +} +.fa-phone-square:before { + content: "\f098"; +} +.fa-twitter:before { + content: "\f099"; +} +.fa-facebook-f:before, +.fa-facebook:before { + content: "\f09a"; +} +.fa-github:before { + content: "\f09b"; +} +.fa-unlock:before { + content: "\f09c"; +} +.fa-credit-card:before { + content: "\f09d"; +} +.fa-feed:before, +.fa-rss:before { + content: "\f09e"; +} +.fa-hdd-o:before { + content: "\f0a0"; +} +.fa-bullhorn:before { + content: "\f0a1"; +} +.fa-bell:before { + content: "\f0f3"; +} +.fa-certificate:before { + content: "\f0a3"; +} +.fa-hand-o-right:before { + content: "\f0a4"; +} +.fa-hand-o-left:before { + content: "\f0a5"; +} +.fa-hand-o-up:before { + content: "\f0a6"; +} +.fa-hand-o-down:before { + content: "\f0a7"; +} +.fa-arrow-circle-left:before { + content: "\f0a8"; +} +.fa-arrow-circle-right:before { + content: "\f0a9"; +} +.fa-arrow-circle-up:before { + content: "\f0aa"; +} +.fa-arrow-circle-down:before { + content: "\f0ab"; +} +.fa-globe:before { + content: "\f0ac"; +} +.fa-wrench:before { + content: "\f0ad"; +} +.fa-tasks:before { + content: "\f0ae"; +} +.fa-filter:before { + content: "\f0b0"; +} +.fa-briefcase:before { + content: "\f0b1"; +} +.fa-arrows-alt:before { + content: "\f0b2"; +} +.fa-group:before, +.fa-users:before { + content: "\f0c0"; +} +.fa-chain:before, +.fa-link:before { + content: "\f0c1"; +} +.fa-cloud:before { + content: "\f0c2"; +} +.fa-flask:before { + content: "\f0c3"; +} +.fa-cut:before, +.fa-scissors:before { + content: "\f0c4"; +} +.fa-copy:before, +.fa-files-o:before { + content: "\f0c5"; +} +.fa-paperclip:before { + content: "\f0c6"; +} +.fa-save:before, +.fa-floppy-o:before { + content: "\f0c7"; +} +.fa-square:before { + content: "\f0c8"; +} +.fa-navicon:before, +.fa-reorder:before, +.fa-bars:before { + content: "\f0c9"; +} +.fa-list-ul:before { + content: "\f0ca"; +} +.fa-list-ol:before { + content: "\f0cb"; +} +.fa-strikethrough:before { + content: "\f0cc"; +} +.fa-underline:before { + content: "\f0cd"; +} +.fa-table:before { + content: "\f0ce"; +} +.fa-magic:before { + content: "\f0d0"; +} +.fa-truck:before { + content: "\f0d1"; +} +.fa-pinterest:before { + content: "\f0d2"; +} +.fa-pinterest-square:before { + content: "\f0d3"; +} +.fa-google-plus-square:before { + content: "\f0d4"; +} +.fa-google-plus:before { + content: "\f0d5"; +} +.fa-money:before { + content: "\f0d6"; +} +.fa-caret-down:before { + content: "\f0d7"; +} +.fa-caret-up:before { + content: "\f0d8"; +} +.fa-caret-left:before { + content: "\f0d9"; +} +.fa-caret-right:before { + content: "\f0da"; +} +.fa-columns:before { + content: "\f0db"; +} +.fa-unsorted:before, +.fa-sort:before { + content: "\f0dc"; +} +.fa-sort-down:before, +.fa-sort-desc:before { + content: "\f0dd"; +} +.fa-sort-up:before, +.fa-sort-asc:before { + content: "\f0de"; +} +.fa-envelope:before { + content: "\f0e0"; +} +.fa-linkedin:before { + content: "\f0e1"; +} +.fa-rotate-left:before, +.fa-undo:before { + content: "\f0e2"; +} +.fa-legal:before, +.fa-gavel:before { + content: "\f0e3"; +} +.fa-dashboard:before, +.fa-tachometer:before { + content: "\f0e4"; +} +.fa-comment-o:before { + content: "\f0e5"; +} +.fa-comments-o:before { + content: "\f0e6"; +} +.fa-flash:before, +.fa-bolt:before { + content: "\f0e7"; +} +.fa-sitemap:before { + content: "\f0e8"; +} +.fa-umbrella:before { + content: "\f0e9"; +} +.fa-paste:before, +.fa-clipboard:before { + content: "\f0ea"; +} +.fa-lightbulb-o:before { + content: "\f0eb"; +} +.fa-exchange:before { + content: "\f0ec"; +} +.fa-cloud-download:before { + content: "\f0ed"; +} +.fa-cloud-upload:before { + content: "\f0ee"; +} +.fa-user-md:before { + content: "\f0f0"; +} +.fa-stethoscope:before { + content: "\f0f1"; +} +.fa-suitcase:before { + content: "\f0f2"; +} +.fa-bell-o:before { + content: "\f0a2"; +} +.fa-coffee:before { + content: "\f0f4"; +} +.fa-cutlery:before { + content: "\f0f5"; +} +.fa-file-text-o:before { + content: "\f0f6"; +} +.fa-building-o:before { + content: "\f0f7"; +} +.fa-hospital-o:before { + content: "\f0f8"; +} +.fa-ambulance:before { + content: "\f0f9"; +} +.fa-medkit:before { + content: "\f0fa"; +} +.fa-fighter-jet:before { + content: "\f0fb"; +} +.fa-beer:before { + content: "\f0fc"; +} +.fa-h-square:before { + content: "\f0fd"; +} +.fa-plus-square:before { + content: "\f0fe"; +} +.fa-angle-double-left:before { + content: "\f100"; +} +.fa-angle-double-right:before { + content: "\f101"; +} +.fa-angle-double-up:before { + content: "\f102"; +} +.fa-angle-double-down:before { + content: "\f103"; +} +.fa-angle-left:before { + content: "\f104"; +} +.fa-angle-right:before { + content: "\f105"; +} +.fa-angle-up:before { + content: "\f106"; +} +.fa-angle-down:before { + content: "\f107"; +} +.fa-desktop:before { + content: "\f108"; +} +.fa-laptop:before { + content: "\f109"; +} +.fa-tablet:before { + content: "\f10a"; +} +.fa-mobile-phone:before, +.fa-mobile:before { + content: "\f10b"; +} +.fa-circle-o:before { + content: "\f10c"; +} +.fa-quote-left:before { + content: "\f10d"; +} +.fa-quote-right:before { + content: "\f10e"; +} +.fa-spinner:before { + content: "\f110"; +} +.fa-circle:before { + content: "\f111"; +} +.fa-mail-reply:before, +.fa-reply:before { + content: "\f112"; +} +.fa-github-alt:before { + content: "\f113"; +} +.fa-folder-o:before { + content: "\f114"; +} +.fa-folder-open-o:before { + content: "\f115"; +} +.fa-smile-o:before { + content: "\f118"; +} +.fa-frown-o:before { + content: "\f119"; +} +.fa-meh-o:before { + content: "\f11a"; +} +.fa-gamepad:before { + content: "\f11b"; +} +.fa-keyboard-o:before { + content: "\f11c"; +} +.fa-flag-o:before { + content: "\f11d"; +} +.fa-flag-checkered:before { + content: "\f11e"; +} +.fa-terminal:before { + content: "\f120"; +} +.fa-code:before { + content: "\f121"; +} +.fa-mail-reply-all:before, +.fa-reply-all:before { + content: "\f122"; +} +.fa-star-half-empty:before, +.fa-star-half-full:before, +.fa-star-half-o:before { + content: "\f123"; +} +.fa-location-arrow:before { + content: "\f124"; +} +.fa-crop:before { + content: "\f125"; +} +.fa-code-fork:before { + content: "\f126"; +} +.fa-unlink:before, +.fa-chain-broken:before { + content: "\f127"; +} +.fa-question:before { + content: "\f128"; +} +.fa-info:before { + content: "\f129"; +} +.fa-exclamation:before { + content: "\f12a"; +} +.fa-superscript:before { + content: "\f12b"; +} +.fa-subscript:before { + content: "\f12c"; +} +.fa-eraser:before { + content: "\f12d"; +} +.fa-puzzle-piece:before { + content: "\f12e"; +} +.fa-microphone:before { + content: "\f130"; +} +.fa-microphone-slash:before { + content: "\f131"; +} +.fa-shield:before { + content: "\f132"; +} +.fa-calendar-o:before { + content: "\f133"; +} +.fa-fire-extinguisher:before { + content: "\f134"; +} +.fa-rocket:before { + content: "\f135"; +} +.fa-maxcdn:before { + content: "\f136"; +} +.fa-chevron-circle-left:before { + content: "\f137"; +} +.fa-chevron-circle-right:before { + content: "\f138"; +} +.fa-chevron-circle-up:before { + content: "\f139"; +} +.fa-chevron-circle-down:before { + content: "\f13a"; +} +.fa-html5:before { + content: "\f13b"; +} +.fa-css3:before { + content: "\f13c"; +} +.fa-anchor:before { + content: "\f13d"; +} +.fa-unlock-alt:before { + content: "\f13e"; +} +.fa-bullseye:before { + content: "\f140"; +} +.fa-ellipsis-h:before { + content: "\f141"; +} +.fa-ellipsis-v:before { + content: "\f142"; +} +.fa-rss-square:before { + content: "\f143"; +} +.fa-play-circle:before { + content: "\f144"; +} +.fa-ticket:before { + content: "\f145"; +} +.fa-minus-square:before { + content: "\f146"; +} +.fa-minus-square-o:before { + content: "\f147"; +} +.fa-level-up:before { + content: "\f148"; +} +.fa-level-down:before { + content: "\f149"; +} +.fa-check-square:before { + content: "\f14a"; +} +.fa-pencil-square:before { + content: "\f14b"; +} +.fa-external-link-square:before { + content: "\f14c"; +} +.fa-share-square:before { + content: "\f14d"; +} +.fa-compass:before { + content: "\f14e"; +} +.fa-toggle-down:before, +.fa-caret-square-o-down:before { + content: "\f150"; +} +.fa-toggle-up:before, +.fa-caret-square-o-up:before { + content: "\f151"; +} +.fa-toggle-right:before, +.fa-caret-square-o-right:before { + content: "\f152"; +} +.fa-euro:before, +.fa-eur:before { + content: "\f153"; +} +.fa-gbp:before { + content: "\f154"; +} +.fa-dollar:before, +.fa-usd:before { + content: "\f155"; +} +.fa-rupee:before, +.fa-inr:before { + content: "\f156"; +} +.fa-cny:before, +.fa-rmb:before, +.fa-yen:before, +.fa-jpy:before { + content: "\f157"; +} +.fa-ruble:before, +.fa-rouble:before, +.fa-rub:before { + content: "\f158"; +} +.fa-won:before, +.fa-krw:before { + content: "\f159"; +} +.fa-bitcoin:before, +.fa-btc:before { + content: "\f15a"; +} +.fa-file:before { + content: "\f15b"; +} +.fa-file-text:before { + content: "\f15c"; +} +.fa-sort-alpha-asc:before { + content: "\f15d"; +} +.fa-sort-alpha-desc:before { + content: "\f15e"; +} +.fa-sort-amount-asc:before { + content: "\f160"; +} +.fa-sort-amount-desc:before { + content: "\f161"; +} +.fa-sort-numeric-asc:before { + content: "\f162"; +} +.fa-sort-numeric-desc:before { + content: "\f163"; +} +.fa-thumbs-up:before { + content: "\f164"; +} +.fa-thumbs-down:before { + content: "\f165"; +} +.fa-youtube-square:before { + content: "\f166"; +} +.fa-youtube:before { + content: "\f167"; +} +.fa-xing:before { + content: "\f168"; +} +.fa-xing-square:before { + content: "\f169"; +} +.fa-youtube-play:before { + content: "\f16a"; +} +.fa-dropbox:before { + content: "\f16b"; +} +.fa-stack-overflow:before { + content: "\f16c"; +} +.fa-instagram:before { + content: "\f16d"; +} +.fa-flickr:before { + content: "\f16e"; +} +.fa-adn:before { + content: "\f170"; +} +.fa-bitbucket:before { + content: "\f171"; +} +.fa-bitbucket-square:before { + content: "\f172"; +} +.fa-tumblr:before { + content: "\f173"; +} +.fa-tumblr-square:before { + content: "\f174"; +} +.fa-long-arrow-down:before { + content: "\f175"; +} +.fa-long-arrow-up:before { + content: "\f176"; +} +.fa-long-arrow-left:before { + content: "\f177"; +} +.fa-long-arrow-right:before { + content: "\f178"; +} +.fa-apple:before { + content: "\f179"; +} +.fa-windows:before { + content: "\f17a"; +} +.fa-android:before { + content: "\f17b"; +} +.fa-linux:before { + content: "\f17c"; +} +.fa-dribbble:before { + content: "\f17d"; +} +.fa-skype:before { + content: "\f17e"; +} +.fa-foursquare:before { + content: "\f180"; +} +.fa-trello:before { + content: "\f181"; +} +.fa-female:before { + content: "\f182"; +} +.fa-male:before { + content: "\f183"; +} +.fa-gittip:before, +.fa-gratipay:before { + content: "\f184"; +} +.fa-sun-o:before { + content: "\f185"; +} +.fa-moon-o:before { + content: "\f186"; +} +.fa-archive:before { + content: "\f187"; +} +.fa-bug:before { + content: "\f188"; +} +.fa-vk:before { + content: "\f189"; +} +.fa-weibo:before { + content: "\f18a"; +} +.fa-renren:before { + content: "\f18b"; +} +.fa-pagelines:before { + content: "\f18c"; +} +.fa-stack-exchange:before { + content: "\f18d"; +} +.fa-arrow-circle-o-right:before { + content: "\f18e"; +} +.fa-arrow-circle-o-left:before { + content: "\f190"; +} +.fa-toggle-left:before, +.fa-caret-square-o-left:before { + content: "\f191"; +} +.fa-dot-circle-o:before { + content: "\f192"; +} +.fa-wheelchair:before { + content: "\f193"; +} +.fa-vimeo-square:before { + content: "\f194"; +} +.fa-turkish-lira:before, +.fa-try:before { + content: "\f195"; +} +.fa-plus-square-o:before { + content: "\f196"; +} +.fa-space-shuttle:before { + content: "\f197"; +} +.fa-slack:before { + content: "\f198"; +} +.fa-envelope-square:before { + content: "\f199"; +} +.fa-wordpress:before { + content: "\f19a"; +} +.fa-openid:before { + content: "\f19b"; +} +.fa-institution:before, +.fa-bank:before, +.fa-university:before { + content: "\f19c"; +} +.fa-mortar-board:before, +.fa-graduation-cap:before { + content: "\f19d"; +} +.fa-yahoo:before { + content: "\f19e"; +} +.fa-google:before { + content: "\f1a0"; +} +.fa-reddit:before { + content: "\f1a1"; +} +.fa-reddit-square:before { + content: "\f1a2"; +} +.fa-stumbleupon-circle:before { + content: "\f1a3"; +} +.fa-stumbleupon:before { + content: "\f1a4"; +} +.fa-delicious:before { + content: "\f1a5"; +} +.fa-digg:before { + content: "\f1a6"; +} +.fa-pied-piper-pp:before { + content: "\f1a7"; +} +.fa-pied-piper-alt:before { + content: "\f1a8"; +} +.fa-drupal:before { + content: "\f1a9"; +} +.fa-joomla:before { + content: "\f1aa"; +} +.fa-language:before { + content: "\f1ab"; +} +.fa-fax:before { + content: "\f1ac"; +} +.fa-building:before { + content: "\f1ad"; +} +.fa-child:before { + content: "\f1ae"; +} +.fa-paw:before { + content: "\f1b0"; +} +.fa-spoon:before { + content: "\f1b1"; +} +.fa-cube:before { + content: "\f1b2"; +} +.fa-cubes:before { + content: "\f1b3"; +} +.fa-behance:before { + content: "\f1b4"; +} +.fa-behance-square:before { + content: "\f1b5"; +} +.fa-steam:before { + content: "\f1b6"; +} +.fa-steam-square:before { + content: "\f1b7"; +} +.fa-recycle:before { + content: "\f1b8"; +} +.fa-automobile:before, +.fa-car:before { + content: "\f1b9"; +} +.fa-cab:before, +.fa-taxi:before { + content: "\f1ba"; +} +.fa-tree:before { + content: "\f1bb"; +} +.fa-spotify:before { + content: "\f1bc"; +} +.fa-deviantart:before { + content: "\f1bd"; +} +.fa-soundcloud:before { + content: "\f1be"; +} +.fa-database:before { + content: "\f1c0"; +} +.fa-file-pdf-o:before { + content: "\f1c1"; +} +.fa-file-word-o:before { + content: "\f1c2"; +} +.fa-file-excel-o:before { + content: "\f1c3"; +} +.fa-file-powerpoint-o:before { + content: "\f1c4"; +} +.fa-file-photo-o:before, +.fa-file-picture-o:before, +.fa-file-image-o:before { + content: "\f1c5"; +} +.fa-file-zip-o:before, +.fa-file-archive-o:before { + content: "\f1c6"; +} +.fa-file-sound-o:before, +.fa-file-audio-o:before { + content: "\f1c7"; +} +.fa-file-movie-o:before, +.fa-file-video-o:before { + content: "\f1c8"; +} +.fa-file-code-o:before { + content: "\f1c9"; +} +.fa-vine:before { + content: "\f1ca"; +} +.fa-codepen:before { + content: "\f1cb"; +} +.fa-jsfiddle:before { + content: "\f1cc"; +} +.fa-life-bouy:before, +.fa-life-buoy:before, +.fa-life-saver:before, +.fa-support:before, +.fa-life-ring:before { + content: "\f1cd"; +} +.fa-circle-o-notch:before { + content: "\f1ce"; +} +.fa-ra:before, +.fa-resistance:before, +.fa-rebel:before { + content: "\f1d0"; +} +.fa-ge:before, +.fa-empire:before { + content: "\f1d1"; +} +.fa-git-square:before { + content: "\f1d2"; +} +.fa-git:before { + content: "\f1d3"; +} +.fa-y-combinator-square:before, +.fa-yc-square:before, +.fa-hacker-news:before { + content: "\f1d4"; +} +.fa-tencent-weibo:before { + content: "\f1d5"; +} +.fa-qq:before { + content: "\f1d6"; +} +.fa-wechat:before, +.fa-weixin:before { + content: "\f1d7"; +} +.fa-send:before, +.fa-paper-plane:before { + content: "\f1d8"; +} +.fa-send-o:before, +.fa-paper-plane-o:before { + content: "\f1d9"; +} +.fa-history:before { + content: "\f1da"; +} +.fa-circle-thin:before { + content: "\f1db"; +} +.fa-header:before { + content: "\f1dc"; +} +.fa-paragraph:before { + content: "\f1dd"; +} +.fa-sliders:before { + content: "\f1de"; +} +.fa-share-alt:before { + content: "\f1e0"; +} +.fa-share-alt-square:before { + content: "\f1e1"; +} +.fa-bomb:before { + content: "\f1e2"; +} +.fa-soccer-ball-o:before, +.fa-futbol-o:before { + content: "\f1e3"; +} +.fa-tty:before { + content: "\f1e4"; +} +.fa-binoculars:before { + content: "\f1e5"; +} +.fa-plug:before { + content: "\f1e6"; +} +.fa-slideshare:before { + content: "\f1e7"; +} +.fa-twitch:before { + content: "\f1e8"; +} +.fa-yelp:before { + content: "\f1e9"; +} +.fa-newspaper-o:before { + content: "\f1ea"; +} +.fa-wifi:before { + content: "\f1eb"; +} +.fa-calculator:before { + content: "\f1ec"; +} +.fa-paypal:before { + content: "\f1ed"; +} +.fa-google-wallet:before { + content: "\f1ee"; +} +.fa-cc-visa:before { + content: "\f1f0"; +} +.fa-cc-mastercard:before { + content: "\f1f1"; +} +.fa-cc-discover:before { + content: "\f1f2"; +} +.fa-cc-amex:before { + content: "\f1f3"; +} +.fa-cc-paypal:before { + content: "\f1f4"; +} +.fa-cc-stripe:before { + content: "\f1f5"; +} +.fa-bell-slash:before { + content: "\f1f6"; +} +.fa-bell-slash-o:before { + content: "\f1f7"; +} +.fa-trash:before { + content: "\f1f8"; +} +.fa-copyright:before { + content: "\f1f9"; +} +.fa-at:before { + content: "\f1fa"; +} +.fa-eyedropper:before { + content: "\f1fb"; +} +.fa-paint-brush:before { + content: "\f1fc"; +} +.fa-birthday-cake:before { + content: "\f1fd"; +} +.fa-area-chart:before { + content: "\f1fe"; +} +.fa-pie-chart:before { + content: "\f200"; +} +.fa-line-chart:before { + content: "\f201"; +} +.fa-lastfm:before { + content: "\f202"; +} +.fa-lastfm-square:before { + content: "\f203"; +} +.fa-toggle-off:before { + content: "\f204"; +} +.fa-toggle-on:before { + content: "\f205"; +} +.fa-bicycle:before { + content: "\f206"; +} +.fa-bus:before { + content: "\f207"; +} +.fa-ioxhost:before { + content: "\f208"; +} +.fa-angellist:before { + content: "\f209"; +} +.fa-cc:before { + content: "\f20a"; +} +.fa-shekel:before, +.fa-sheqel:before, +.fa-ils:before { + content: "\f20b"; +} +.fa-meanpath:before { + content: "\f20c"; +} +.fa-buysellads:before { + content: "\f20d"; +} +.fa-connectdevelop:before { + content: "\f20e"; +} +.fa-dashcube:before { + content: "\f210"; +} +.fa-forumbee:before { + content: "\f211"; +} +.fa-leanpub:before { + content: "\f212"; +} +.fa-sellsy:before { + content: "\f213"; +} +.fa-shirtsinbulk:before { + content: "\f214"; +} +.fa-simplybuilt:before { + content: "\f215"; +} +.fa-skyatlas:before { + content: "\f216"; +} +.fa-cart-plus:before { + content: "\f217"; +} +.fa-cart-arrow-down:before { + content: "\f218"; +} +.fa-diamond:before { + content: "\f219"; +} +.fa-ship:before { + content: "\f21a"; +} +.fa-user-secret:before { + content: "\f21b"; +} +.fa-motorcycle:before { + content: "\f21c"; +} +.fa-street-view:before { + content: "\f21d"; +} +.fa-heartbeat:before { + content: "\f21e"; +} +.fa-venus:before { + content: "\f221"; +} +.fa-mars:before { + content: "\f222"; +} +.fa-mercury:before { + content: "\f223"; +} +.fa-intersex:before, +.fa-transgender:before { + content: "\f224"; +} +.fa-transgender-alt:before { + content: "\f225"; +} +.fa-venus-double:before { + content: "\f226"; +} +.fa-mars-double:before { + content: "\f227"; +} +.fa-venus-mars:before { + content: "\f228"; +} +.fa-mars-stroke:before { + content: "\f229"; +} +.fa-mars-stroke-v:before { + content: "\f22a"; +} +.fa-mars-stroke-h:before { + content: "\f22b"; +} +.fa-neuter:before { + content: "\f22c"; +} +.fa-genderless:before { + content: "\f22d"; +} +.fa-facebook-official:before { + content: "\f230"; +} +.fa-pinterest-p:before { + content: "\f231"; +} +.fa-whatsapp:before { + content: "\f232"; +} +.fa-server:before { + content: "\f233"; +} +.fa-user-plus:before { + content: "\f234"; +} +.fa-user-times:before { + content: "\f235"; +} +.fa-hotel:before, +.fa-bed:before { + content: "\f236"; +} +.fa-viacoin:before { + content: "\f237"; +} +.fa-train:before { + content: "\f238"; +} +.fa-subway:before { + content: "\f239"; +} +.fa-medium:before { + content: "\f23a"; +} +.fa-yc:before, +.fa-y-combinator:before { + content: "\f23b"; +} +.fa-optin-monster:before { + content: "\f23c"; +} +.fa-opencart:before { + content: "\f23d"; +} +.fa-expeditedssl:before { + content: "\f23e"; +} +.fa-battery-4:before, +.fa-battery-full:before { + content: "\f240"; +} +.fa-battery-3:before, +.fa-battery-three-quarters:before { + content: "\f241"; +} +.fa-battery-2:before, +.fa-battery-half:before { + content: "\f242"; +} +.fa-battery-1:before, +.fa-battery-quarter:before { + content: "\f243"; +} +.fa-battery-0:before, +.fa-battery-empty:before { + content: "\f244"; +} +.fa-mouse-pointer:before { + content: "\f245"; +} +.fa-i-cursor:before { + content: "\f246"; +} +.fa-object-group:before { + content: "\f247"; +} +.fa-object-ungroup:before { + content: "\f248"; +} +.fa-sticky-note:before { + content: "\f249"; +} +.fa-sticky-note-o:before { + content: "\f24a"; +} +.fa-cc-jcb:before { + content: "\f24b"; +} +.fa-cc-diners-club:before { + content: "\f24c"; +} +.fa-clone:before { + content: "\f24d"; +} +.fa-balance-scale:before { + content: "\f24e"; +} +.fa-hourglass-o:before { + content: "\f250"; +} +.fa-hourglass-1:before, +.fa-hourglass-start:before { + content: "\f251"; +} +.fa-hourglass-2:before, +.fa-hourglass-half:before { + content: "\f252"; +} +.fa-hourglass-3:before, +.fa-hourglass-end:before { + content: "\f253"; +} +.fa-hourglass:before { + content: "\f254"; +} +.fa-hand-grab-o:before, +.fa-hand-rock-o:before { + content: "\f255"; +} +.fa-hand-stop-o:before, +.fa-hand-paper-o:before { + content: "\f256"; +} +.fa-hand-scissors-o:before { + content: "\f257"; +} +.fa-hand-lizard-o:before { + content: "\f258"; +} +.fa-hand-spock-o:before { + content: "\f259"; +} +.fa-hand-pointer-o:before { + content: "\f25a"; +} +.fa-hand-peace-o:before { + content: "\f25b"; +} +.fa-trademark:before { + content: "\f25c"; +} +.fa-registered:before { + content: "\f25d"; +} +.fa-creative-commons:before { + content: "\f25e"; +} +.fa-gg:before { + content: "\f260"; +} +.fa-gg-circle:before { + content: "\f261"; +} +.fa-tripadvisor:before { + content: "\f262"; +} +.fa-odnoklassniki:before { + content: "\f263"; +} +.fa-odnoklassniki-square:before { + content: "\f264"; +} +.fa-get-pocket:before { + content: "\f265"; +} +.fa-wikipedia-w:before { + content: "\f266"; +} +.fa-safari:before { + content: "\f267"; +} +.fa-chrome:before { + content: "\f268"; +} +.fa-firefox:before { + content: "\f269"; +} +.fa-opera:before { + content: "\f26a"; +} +.fa-internet-explorer:before { + content: "\f26b"; +} +.fa-tv:before, +.fa-television:before { + content: "\f26c"; +} +.fa-contao:before { + content: "\f26d"; +} +.fa-500px:before { + content: "\f26e"; +} +.fa-amazon:before { + content: "\f270"; +} +.fa-calendar-plus-o:before { + content: "\f271"; +} +.fa-calendar-minus-o:before { + content: "\f272"; +} +.fa-calendar-times-o:before { + content: "\f273"; +} +.fa-calendar-check-o:before { + content: "\f274"; +} +.fa-industry:before { + content: "\f275"; +} +.fa-map-pin:before { + content: "\f276"; +} +.fa-map-signs:before { + content: "\f277"; +} +.fa-map-o:before { + content: "\f278"; +} +.fa-map:before { + content: "\f279"; +} +.fa-commenting:before { + content: "\f27a"; +} +.fa-commenting-o:before { + content: "\f27b"; +} +.fa-houzz:before { + content: "\f27c"; +} +.fa-vimeo:before { + content: "\f27d"; +} +.fa-black-tie:before { + content: "\f27e"; +} +.fa-fonticons:before { + content: "\f280"; +} +.fa-reddit-alien:before { + content: "\f281"; +} +.fa-edge:before { + content: "\f282"; +} +.fa-credit-card-alt:before { + content: "\f283"; +} +.fa-codiepie:before { + content: "\f284"; +} +.fa-modx:before { + content: "\f285"; +} +.fa-fort-awesome:before { + content: "\f286"; +} +.fa-usb:before { + content: "\f287"; +} +.fa-product-hunt:before { + content: "\f288"; +} +.fa-mixcloud:before { + content: "\f289"; +} +.fa-scribd:before { + content: "\f28a"; +} +.fa-pause-circle:before { + content: "\f28b"; +} +.fa-pause-circle-o:before { + content: "\f28c"; +} +.fa-stop-circle:before { + content: "\f28d"; +} +.fa-stop-circle-o:before { + content: "\f28e"; +} +.fa-shopping-bag:before { + content: "\f290"; +} +.fa-shopping-basket:before { + content: "\f291"; +} +.fa-hashtag:before { + content: "\f292"; +} +.fa-bluetooth:before { + content: "\f293"; +} +.fa-bluetooth-b:before { + content: "\f294"; +} +.fa-percent:before { + content: "\f295"; +} +.fa-gitlab:before { + content: "\f296"; +} +.fa-wpbeginner:before { + content: "\f297"; +} +.fa-wpforms:before { + content: "\f298"; +} +.fa-envira:before { + content: "\f299"; +} +.fa-universal-access:before { + content: "\f29a"; +} +.fa-wheelchair-alt:before { + content: "\f29b"; +} +.fa-question-circle-o:before { + content: "\f29c"; +} +.fa-blind:before { + content: "\f29d"; +} +.fa-audio-description:before { + content: "\f29e"; +} +.fa-volume-control-phone:before { + content: "\f2a0"; +} +.fa-braille:before { + content: "\f2a1"; +} +.fa-assistive-listening-systems:before { + content: "\f2a2"; +} +.fa-asl-interpreting:before, +.fa-american-sign-language-interpreting:before { + content: "\f2a3"; +} +.fa-deafness:before, +.fa-hard-of-hearing:before, +.fa-deaf:before { + content: "\f2a4"; +} +.fa-glide:before { + content: "\f2a5"; +} +.fa-glide-g:before { + content: "\f2a6"; +} +.fa-signing:before, +.fa-sign-language:before { + content: "\f2a7"; +} +.fa-low-vision:before { + content: "\f2a8"; +} +.fa-viadeo:before { + content: "\f2a9"; +} +.fa-viadeo-square:before { + content: "\f2aa"; +} +.fa-snapchat:before { + content: "\f2ab"; +} +.fa-snapchat-ghost:before { + content: "\f2ac"; +} +.fa-snapchat-square:before { + content: "\f2ad"; +} +.fa-pied-piper:before { + content: "\f2ae"; +} +.fa-first-order:before { + content: "\f2b0"; +} +.fa-yoast:before { + content: "\f2b1"; +} +.fa-themeisle:before { + content: "\f2b2"; +} +.fa-google-plus-circle:before, +.fa-google-plus-official:before { + content: "\f2b3"; +} +.fa-fa:before, +.fa-font-awesome:before { + content: "\f2b4"; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} +.alert { + border-width: 1px; + padding-left: 47px; + padding-right: 14px; + position: relative; +} +.alert .alert-link { + color: #0088ce; +} +.alert .alert-link:hover { + color: #00659c; +} +.alert > .btn.pull-right { + margin-top: -3px; +} +.alert > .pficon { + font-size: 22px; + position: absolute; + left: 13px; + top: 10px; +} +.alert .close { + opacity: 0.85; + filter: alpha(opacity=85); +} +.alert .close:hover, +.alert .close:focus { + opacity: 1; + filter: alpha(opacity=100); +} +.alert .pficon-info { + color: #4d5258; +} +.alert-dismissable { + padding-right: 28px; +} +.alert-dismissable .close { + right: -13px; + top: 1px; +} +.badge { + margin-left: 6px; +} +.nav-pills > li > a > .badge { + margin-left: 6px; +} +.breadcrumb { + padding-left: 0; +} +.breadcrumb > .active strong { + font-weight: 600; +} +.breadcrumb > li { + display: inline; + /* IE8 */ +} +.breadcrumb > li + li:before { + color: #9c9c9c; + content: "\f101"; + font-family: "FontAwesome"; + font-size: 11px; + padding: 0 9px 0 7px; +} +.btn { + box-shadow: 0 2px 3px rgba(3, 3, 3, 0.1); +} +.btn:active { + box-shadow: inset 0 2px 8px rgba(3, 3, 3, 0.2); +} +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + background-color: #fafafa !important; + background-image: none !important; + border-color: #d1d1d1 !important; + color: #8b8d8f !important; + opacity: 1; +} +.btn.disabled:active, +.btn[disabled]:active, +fieldset[disabled] .btn:active { + box-shadow: none; +} +.btn.disabled.btn-link, +.btn[disabled].btn-link, +fieldset[disabled] .btn.btn-link { + background-color: transparent !important; + border: 0; +} +.btn-danger { + background-color: #a30000; + background-image: linear-gradient(to bottom, #cc0000 0%, #a30000 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffcc0000', endColorstr='#ffa30000', GradientType=0); + border-color: #8b0000; + color: #fff; +} +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + background-color: #a30000; + background-image: none; + border-color: #8b0000; + color: #fff; +} +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { + background-image: none; +} +.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 { + background-color: #8a0000; + border-color: #670000; +} +.btn-danger.disabled, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #a30000; + border-color: #8b0000; +} +.btn-default { + background-color: #f1f1f1; + background-image: linear-gradient(to bottom, #fafafa 0%, #ededed 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0); + border-color: #bbb; + color: #4d5258; +} +.btn-default:hover, +.btn-default:focus, +.btn-default:active, +.btn-default.active, +.open .dropdown-toggle.btn-default { + background-color: #f1f1f1; + background-image: none; + border-color: #bbb; + color: #4d5258; +} +.btn-default:active, +.btn-default.active, +.open .dropdown-toggle.btn-default { + background-image: none; +} +.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 { + background-color: #e5e5e5; + border-color: #a9a9a9; +} +.btn-default.disabled, +.btn-default[disabled], +fieldset[disabled] .btn-default, +.btn-default.disabled:hover, +.btn-default[disabled]:hover, +fieldset[disabled] .btn-default:hover, +.btn-default.disabled:focus, +.btn-default[disabled]:focus, +fieldset[disabled] .btn-default:focus, +.btn-default.disabled:active, +.btn-default[disabled]:active, +fieldset[disabled] .btn-default:active, +.btn-default.disabled.active, +.btn-default[disabled].active, +fieldset[disabled] .btn-default.active { + background-color: #f1f1f1; + border-color: #bbb; +} +.btn-link, +.btn-link:active { + box-shadow: none; +} +.btn-primary { + background-color: #0088ce; + background-image: linear-gradient(to bottom, #39a5dc 0%, #0088ce 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff39a5dc', endColorstr='#ff0088ce', GradientType=0); + border-color: #00659c; + color: #fff; +} +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + background-color: #0088ce; + background-image: none; + border-color: #00659c; + color: #fff; +} +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + background-image: none; +} +.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 { + background-color: #0077b5; + border-color: #004e78; +} +.btn-primary.disabled, +.btn-primary[disabled], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + background-color: #0088ce; + border-color: #00659c; +} +.btn-xs, +.btn-group-xs .btn, +.btn-group-xs > .btn { + font-weight: 400; +} +.caret { + font-family: "FontAwesome"; + font-weight: normal; + height: 9px; + position: relative; + vertical-align: baseline; + width: 12px; +} +.caret:before { + bottom: 0; + content: "\f107"; + left: 0; + line-height: 12px; + position: absolute; + text-align: center; + top: -1px; + right: 0; +} +.dropup .caret:before { + content: "\f106"; +} +.dropdown-menu .divider { + background-color: #ededed; + height: 1px; + margin: 4px 1px; + overflow: hidden; +} +.dropdown-menu > li > a { + border-color: transparent; + border-style: solid; + border-width: 1px 0; + padding: 1px 10px; +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + border-color: #bee1f4; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.dropdown-menu > li > a:active { + background-color: #0088ce; + border-color: #0088ce; + color: #fff !important; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + background-color: #0088ce !important; + border-color: #0088ce !important; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + border-color: transparent; +} +.dropdown-menu > .selected > a { + background-color: #0088ce; + border-color: #0088ce; + color: #fff; +} +.dropdown-menu > .selected > a small { + color: rgba(255, 255, 255, 0.5); +} +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + border-color: transparent; +} +.dropdown-header { + padding-left: 10px; + padding-right: 10px; + text-transform: uppercase; +} +.btn-group > .dropdown-menu, +.dropdown > .dropdown-menu, +.input-group-btn > .dropdown-menu { + margin-top: -1px; +} +.dropup .dropdown-menu { + margin-bottom: -1px; +} +.dropdown-submenu { + position: relative; +} +.dropdown-submenu:hover > a { + background-color: #def3ff; + border-color: #bee1f4; +} +.dropdown-submenu:hover > .dropdown-menu { + display: block; +} +.dropdown-submenu.pull-left { + float: none !important; +} +.dropdown-submenu.pull-left > .dropdown-menu { + left: auto; + margin-left: 10px; + right: 100%; +} +.dropdown-submenu > a { + padding-right: 20px !important; +} +.dropdown-submenu > a:after { + content: "\f105"; + font-family: "FontAwesome"; + display: block; + position: absolute; + right: 10px; + top: 2px; +} +.dropdown-submenu > .dropdown-menu { + left: 100%; + margin-top: 0; + top: -6px; +} +.dropup .dropdown-submenu > .dropdown-menu { + bottom: -5px; + top: auto; +} +.open .dropdown-submenu.active > .dropdown-menu { + display: block; +} +.dropdown-kebab-pf .btn-link { + color: #252525; + font-size: 16px; + line-height: 1; + padding: 4px 10px; + margin-left: -10px; + margin-right: -10px; +} +.dropdown-kebab-pf .btn-link:active, +.dropdown-kebab-pf .btn-link:focus, +.dropdown-kebab-pf .btn-link:hover { + color: #0088ce; +} +.dropdown-kebab-pf .dropdown-menu { + left: -15px; + margin-top: 11px; +} +.dropdown-kebab-pf .dropdown-menu.dropdown-menu-right { + left: auto; + right: -15px; +} +.dropdown-kebab-pf .dropdown-menu.dropdown-menu-right:after, +.dropdown-kebab-pf .dropdown-menu.dropdown-menu-right:before { + left: auto; + right: 6px; +} +.dropdown-kebab-pf .dropdown-menu:after, +.dropdown-kebab-pf .dropdown-menu:before { + border-bottom-color: #bbb; + border-bottom-style: solid; + border-bottom-width: 10px; + border-left: 10px solid transparent; + border-right: 10px solid transparent; + content: ""; + display: inline-block; + left: 6px; + position: absolute; + top: -11px; +} +.dropdown-kebab-pf .dropdown-menu:after { + border-bottom-color: #fff; + top: -10px; +} +.dropdown-kebab-pf.dropup .dropdown-menu { + margin-bottom: 11px; + margin-top: 0; +} +.dropdown-kebab-pf.dropup .dropdown-menu:after, +.dropdown-kebab-pf.dropup .dropdown-menu:before { + border-bottom: none; + border-top-color: #bbb; + border-top-style: solid; + border-top-width: 10px; + bottom: -11px; + top: auto; +} +.dropdown-kebab-pf.dropup .dropdown-menu:after { + border-top-color: #fff; + bottom: -10px; +} +.chars-remaining-pf span { + font-weight: 600; + padding-right: 5px; +} +.chars-warn-remaining-pf { + color: #cc0000; +} +.fields-status-pf { + color: #8b8d8f; + margin-bottom: 15px; +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + box-shadow: none; + color: #8b8d8f; +} +.form-control[disabled]:hover, +.form-control[readonly]:hover, +fieldset[disabled] .form-control:hover { + border-color: #bbb; +} +.form-control:hover { + border-color: #7dc3e8; +} +.has-error .form-control:hover { + border-color: #990000; +} +.has-success .form-control:hover { + border-color: #2b542c; +} +.has-warning .form-control:hover { + border-color: #bb6106; +} +.has-error .checkbox, +.has-success .checkbox, +.has-warning .checkbox, +.has-error .checkbox-inline, +.has-success .checkbox-inline, +.has-warning .checkbox-inline, +.has-error .control-label, +.has-success .control-label, +.has-warning .control-label, +.has-error .radio, +.has-success .radio, +.has-warning .radio, +.has-error .radio-inline, +.has-success .radio-inline, +.has-warning .radio-inline, +.has-error.checkbox label, +.has-success.checkbox label, +.has-warning.checkbox label, +.has-error.checkbox-inline label, +.has-success.checkbox-inline label, +.has-warning.checkbox-inline label, +.has-error.radio label, +.has-success.radio label, +.has-warning.radio label, +.has-error.radio-inline label, +.has-success.radio-inline label, +.has-warning.radio-inline label { + color: #363636; +} +.help-block { + margin-bottom: 0px; +} +.input-group .input-group-btn .btn { + box-shadow: none; +} +label { + font-weight: 600; +} +label.required-pf:after { + color: #cc0000; + content: "*"; + margin-left: 3px; +} +span.required-pf { + color: #cc0000; +} +.fields-section-pf { + border-color: #ededed; + border-style: solid; + border-width: 1px 0 0; + margin-top: 25px; + padding: 15px 0 0; +} +.fields-section-header-pf { + border: none; + font-size: 12px; + margin: 0; + padding-right: 10px; + width: auto; +} +.fields-section-header-pf .fa-angle-right { + cursor: pointer; + font-size: 14px; + width: 14px; +} +.label { + border-radius: 0; + font-size: 100%; + font-weight: 600; +} +h1 .label, +h2 .label, +h3 .label, +h4 .label, +h5 .label, +h6 .label { + font-size: 75%; +} +.list-group { + border-top: 1px solid #ededed; +} +.list-group .list-group-item:first-child { + border-top: 0; +} +.list-group-item { + border-left: 0; + border-right: 0; +} +.list-group-item-heading { + font-weight: 600; +} +.modal-header { + background-color: #f5f5f5; + border-bottom: none; + padding: 10px 18px; +} +.modal-header .close { + margin-top: 2px; +} +.modal-title { + font-size: 13px; + font-weight: 700; +} +.modal-footer { + border-top: none; + margin-top: 15px; + padding: 14px 15px 15px; +} +.modal-footer > .btn { + padding-left: 10px; + padding-right: 10px; +} +.modal-footer > .btn > .fa-angle-left { + margin-right: 5px; +} +.modal-footer > .btn > .fa-angle-right { + margin-left: 5px; +} +.pager li > a, +.pager li > span { + background-color: #f1f1f1; + background-image: linear-gradient(to bottom, #fafafa 0%, #ededed 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0); + border-color: #bbb; + color: #4d5258; + font-weight: 600; + line-height: 22px; + padding: 2px 14px; +} +.pager li > a:hover, +.pager li > span:hover, +.pager li > a:focus, +.pager li > span:focus, +.pager li > a:active, +.pager li > span:active, +.pager li > a.active, +.pager li > span.active, +.open .dropdown-toggle.pager li > a, +.open .dropdown-toggle.pager li > span { + background-color: #f1f1f1; + background-image: none; + border-color: #bbb; + color: #4d5258; +} +.pager li > a:active, +.pager li > span:active, +.pager li > a.active, +.pager li > span.active, +.open .dropdown-toggle.pager li > a, +.open .dropdown-toggle.pager li > span { + background-image: none; +} +.pager li > a:active:hover, +.pager li > span:active:hover, +.pager li > a.active:hover, +.pager li > span.active:hover, +.open .dropdown-toggle.pager li > a:hover, +.open .dropdown-toggle.pager li > span:hover, +.pager li > a:active:focus, +.pager li > span:active:focus, +.pager li > a.active:focus, +.pager li > span.active:focus, +.open .dropdown-toggle.pager li > a:focus, +.open .dropdown-toggle.pager li > span:focus, +.pager li > a:active.focus, +.pager li > span:active.focus, +.pager li > a.active.focus, +.pager li > span.active.focus, +.open .dropdown-toggle.pager li > a.focus, +.open .dropdown-toggle.pager li > span.focus { + background-color: #e5e5e5; + border-color: #a9a9a9; +} +.pager li > a.disabled, +.pager li > span.disabled, +.pager li > a[disabled], +.pager li > span[disabled], +fieldset[disabled] .pager li > a, +fieldset[disabled] .pager li > span, +.pager li > a.disabled:hover, +.pager li > span.disabled:hover, +.pager li > a[disabled]:hover, +.pager li > span[disabled]:hover, +fieldset[disabled] .pager li > a:hover, +fieldset[disabled] .pager li > span:hover, +.pager li > a.disabled:focus, +.pager li > span.disabled:focus, +.pager li > a[disabled]:focus, +.pager li > span[disabled]:focus, +fieldset[disabled] .pager li > a:focus, +fieldset[disabled] .pager li > span:focus, +.pager li > a.disabled:active, +.pager li > span.disabled:active, +.pager li > a[disabled]:active, +.pager li > span[disabled]:active, +fieldset[disabled] .pager li > a:active, +fieldset[disabled] .pager li > span:active, +.pager li > a.disabled.active, +.pager li > span.disabled.active, +.pager li > a[disabled].active, +.pager li > span[disabled].active, +fieldset[disabled] .pager li > a.active, +fieldset[disabled] .pager li > span.active { + background-color: #f1f1f1; + border-color: #bbb; +} +.pager li > a > .i, +.pager li > span > .i { + font-size: 18px; + vertical-align: top; + margin: 2px 0; +} +.pager li a:active { + background-image: none; + box-shadow: inset 0 3px 5px rgba(3, 3, 3, 0.125); + outline: 0; +} +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > a:active, +.pager .disabled > span { + background: #f5f5f5; + box-shadow: none; + color: #8b8d8f; + cursor: default; +} +.pager .next > a > .i, +.pager .next > span > .i { + margin-left: 5px; +} +.pager .previous > a > .i, +.pager .previous > span > .i { + margin-right: 5px; +} +.pager-sm li > a, +.pager-sm li > span { + font-weight: 400; + line-height: 16px; + padding: 1px 10px; +} +.pager-sm li > a > .i, +.pager-sm li > span > .i { + font-size: 12px; +} +.pagination > li > a, +.pagination > li > span { + background-color: #f1f1f1; + background-image: linear-gradient(to bottom, #fafafa 0%, #ededed 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0); + border-color: #bbb; + color: #4d5258; + cursor: default; + font-weight: 600; + padding: 2px 10px; +} +.pagination > li > a:hover, +.pagination > li > span:hover, +.pagination > li > a:focus, +.pagination > li > span:focus, +.pagination > li > a:active, +.pagination > li > span:active, +.pagination > li > a.active, +.pagination > li > span.active, +.open .dropdown-toggle.pagination > li > a, +.open .dropdown-toggle.pagination > li > span { + background-color: #f1f1f1; + background-image: none; + border-color: #bbb; + color: #4d5258; +} +.pagination > li > a:active, +.pagination > li > span:active, +.pagination > li > a.active, +.pagination > li > span.active, +.open .dropdown-toggle.pagination > li > a, +.open .dropdown-toggle.pagination > li > span { + background-image: none; +} +.pagination > li > a:active:hover, +.pagination > li > span:active:hover, +.pagination > li > a.active:hover, +.pagination > li > span.active:hover, +.open .dropdown-toggle.pagination > li > a:hover, +.open .dropdown-toggle.pagination > li > span:hover, +.pagination > li > a:active:focus, +.pagination > li > span:active:focus, +.pagination > li > a.active:focus, +.pagination > li > span.active:focus, +.open .dropdown-toggle.pagination > li > a:focus, +.open .dropdown-toggle.pagination > li > span:focus, +.pagination > li > a:active.focus, +.pagination > li > span:active.focus, +.pagination > li > a.active.focus, +.pagination > li > span.active.focus, +.open .dropdown-toggle.pagination > li > a.focus, +.open .dropdown-toggle.pagination > li > span.focus { + background-color: #e5e5e5; + border-color: #a9a9a9; +} +.pagination > li > a.disabled, +.pagination > li > span.disabled, +.pagination > li > a[disabled], +.pagination > li > span[disabled], +fieldset[disabled] .pagination > li > a, +fieldset[disabled] .pagination > li > span, +.pagination > li > a.disabled:hover, +.pagination > li > span.disabled:hover, +.pagination > li > a[disabled]:hover, +.pagination > li > span[disabled]:hover, +fieldset[disabled] .pagination > li > a:hover, +fieldset[disabled] .pagination > li > span:hover, +.pagination > li > a.disabled:focus, +.pagination > li > span.disabled:focus, +.pagination > li > a[disabled]:focus, +.pagination > li > span[disabled]:focus, +fieldset[disabled] .pagination > li > a:focus, +fieldset[disabled] .pagination > li > span:focus, +.pagination > li > a.disabled:active, +.pagination > li > span.disabled:active, +.pagination > li > a[disabled]:active, +.pagination > li > span[disabled]:active, +fieldset[disabled] .pagination > li > a:active, +fieldset[disabled] .pagination > li > span:active, +.pagination > li > a.disabled.active, +.pagination > li > span.disabled.active, +.pagination > li > a[disabled].active, +.pagination > li > span[disabled].active, +fieldset[disabled] .pagination > li > a.active, +fieldset[disabled] .pagination > li > span.active { + background-color: #f1f1f1; + border-color: #bbb; +} +.pagination > li > a > .i, +.pagination > li > span > .i { + font-size: 15px; + vertical-align: top; + margin: 2px 0; +} +.pagination > li > a:active, +.pagination > li > span:active { + box-shadow: inset 0 2px 8px rgba(3, 3, 3, 0.2); +} +.pagination > .active > a, +.pagination > .active > span, +.pagination > .active > a:hover, +.pagination > .active > span:hover, +.pagination > .active > a:focus, +.pagination > .active > span:focus { + background-color: #f1f1f1; + border-color: #bbb; + box-shadow: inset 0 2px 8px rgba(3, 3, 3, 0.2); + color: #4d5258; + background-image: linear-gradient(to bottom, #fafafa 0%, #ededed 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0); +} +.pagination > .disabled > span, +.pagination > .disabled > span:hover, +.pagination > .disabled > span:focus, +.pagination > .disabled > a, +.pagination > .disabled > a:hover, +.pagination > .disabled > a:focus { + box-shadow: none; + cursor: default; + background-image: linear-gradient(to bottom, #fafafa 0%, #ededed 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0); +} +.pagination-sm > li > a, +.pagination-sm > li > span { + padding: 2px 6px; + font-size: 11px; + line-height: 1.5; +} +.pagination-sm > li:first-child > a, +.pagination-sm > li:first-child > span { + border-bottom-left-radius: 1px; + border-top-left-radius: 1px; +} +.pagination-sm > li:last-child > a, +.pagination-sm > li:last-child > span { + border-bottom-right-radius: 1px; + border-top-right-radius: 1px; +} +.pagination-sm > li > a, +.pagination-sm > li > span { + font-weight: 400; +} +.pagination-sm > li > a > .i, +.pagination-sm > li > span > .i { + font-size: 12px; + margin-top: 2px; +} +.content-view-pf-pagination { + background-color: #f5f5f5; + border: 1px solid #d1d1d1; + border-top: none; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -ms-flex-pack: justify; + justify-content: space-between; +} +.content-view-pf-pagination .form-group { + -ms-flex-align: baseline; + align-items: baseline; + display: -ms-flexbox; + display: flex; + -ms-flex-positive: 1; + flex-grow: 1; + float: left; + margin: 5px; +} +@supports (display: flex) { + .content-view-pf-pagination .form-group { + float: none; + } +} +.content-view-pf-pagination .form-group:last-child { + -ms-flex-pack: end; + justify-content: flex-end; + float: right; +} +@supports (display: flex) { + .content-view-pf-pagination .form-group:last-child { + float: none; + } +} +.content-view-pf-pagination .form-group .pagination-pf-pagesize.bootstrap-select.btn-group { + display: -ms-flexbox; + display: flex; + margin-right: 5px; + width: auto; +} +.content-view-pf-pagination .pagination-pf-page { + margin-left: 10px; + margin-right: 5px; + padding: 0 2px 2px; + text-align: right; + width: 2.5em; +} +.content-view-pf-pagination .pagination { + display: -ms-flexbox; + display: flex; + margin: 0 0 0 10px; +} +.content-view-pf-pagination .pagination a { + float: none; +} +@supports (display: flex) { + .content-view-pf-pagination .pagination a { + display: block; + } +} +.panel-title { + font-weight: 700; +} +.panel-group .panel { + color: #4d5258; +} +.panel-group .panel + .panel { + margin-top: -1px; +} +.panel-group .panel-default { + border-color: #bbb; + border-top-color: #bbb; +} +.panel-group .panel-heading { + background-image: linear-gradient(to bottom, #fafafa 0%, #ededed 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0); +} +.panel-group .panel-heading + .panel-collapse .panel-body { + border-top: 1px solid #d1d1d1; +} +.panel-group .panel-title { + font-weight: 500; + line-height: 1; +} +.panel-group .panel-title > a { + color: #4d5258; + font-weight: 600; +} +.panel-group .panel-title > a:before { + content: "\f107"; + display: inline-block; + font-family: "FontAwesome"; + font-size: 13px; + margin-right: 5px; + text-align: center; + vertical-align: 0; + width: 8px; +} +.panel-group .panel-title > a:focus { + outline: none; + text-decoration: none; +} +.panel-group .panel-title > a:hover { + text-decoration: none; +} +.panel-group .panel-title > a.collapsed:before { + content: "\f105"; +} +.popover { + box-shadow: 0 2px 2px rgba(3, 3, 3, 0.08); + padding: 0; +} +.popover-content { + color: #4d5258; + line-height: 18px; + padding: 10px 14px; +} +.popover-title { + border-bottom: none; + border-radius: 0; + color: #4d5258; + font-size: 13px; + font-weight: 700; + min-height: 34px; +} +.popover-title .close { + height: 22px; + position: absolute; + right: 8px; + top: 6px; +} +.popover-title.closable { + padding-right: 30px; +} +@keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} +.progress { + box-shadow: inset 0 0 1px rgba(3, 3, 3, 0.25); +} +.progress.progress-label-left, +.progress.progress-label-top-right { + overflow: visible; + position: relative; +} +.progress.progress-label-left { + margin-left: 40px; +} +.progress.progress-sm { + height: 14px; + margin-bottom: 14px; +} +.progress.progress-xs { + height: 6px; + margin-bottom: 6px; +} +td > .progress:first-child:last-child { + margin-bottom: 0; + margin-top: 3px; +} +.progress-bar { + box-shadow: none; +} +.progress-label-left .progress-bar span, +.progress-label-right .progress-bar span, +.progress-label-top-right .progress-bar span { + color: #363636; + position: absolute; + text-align: right; +} +.progress-label-left .progress-bar span { + font-size: 14px; + left: -40px; + top: 0; + width: 35px; +} +.progress-label-right .progress-bar span, +.progress-label-top-right .progress-bar span { + font-size: 11px; + overflow: hidden; + right: 0; + text-overflow: ellipsis; + white-space: nowrap; +} +.progress-label-right .progress-bar span strong, +.progress-label-top-right .progress-bar span strong { + font-weight: 600; +} +.progress-label-right .progress-bar span { + max-width: 85px; + top: 0; +} +.progress-label-top-right .progress-bar span { + max-width: 47%; + top: -30px; +} +.progress-label-left.progress-sm .progress-bar span, +.progress-label-top-right.progress-sm .progress-bar span { + font-size: 12px; +} +.progress-sm .progress-bar { + line-height: 14px; +} +.progress-xs .progress-bar { + line-height: 6px; +} +.progress-bar-remaining { + background: transparent; +} +.progress-container { + position: relative; +} +.progress-container.progress-description-left { + padding-left: 90px; +} +.progress-container.progress-label-right { + padding-right: 90px; +} +.progress-description { + margin-bottom: 10px; + max-width: 52%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.progress-description .count { + font-size: 20.004px; + font-weight: 300; + line-height: 1; + margin-right: 5px; +} +.progress-description .fa, +.progress-description .pficon { + font-size: 14px; + margin-right: 3px; +} +.progress-description-left .progress-description { + left: 0; + margin-bottom: 0; + max-width: 85px; + position: absolute; + top: 0; +} +.progress-description .tooltip { + white-space: normal; +} +.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: 2px 10px 3px; +} +.table > thead > tr > th > a:hover, +.table > tbody > tr > th > a:hover, +.table > tfoot > tr > th > a:hover, +.table > thead > tr > td > a:hover, +.table > tbody > tr > td > a:hover, +.table > tfoot > tr > td > a:hover { + text-decoration: none; +} +.table > thead > tr > th, +.table > tbody > tr > th, +.table > tfoot > tr > th { + font-family: "Open Sans"; + font-style: normal; + font-weight: 600; +} +.table > thead { + background-clip: padding-box; + background-color: #f5f5f5; + background-image: linear-gradient(to bottom, #fafafa 0%, #ededed 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0); +} +.table-bordered { + border: 1px solid #d1d1d1; +} +.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 #d1d1d1; +} +.table-bordered > thead > tr > th, +.table-bordered > thead > tr > td { + border-bottom-width: 1px; +} +.table-striped > tbody > tr:nth-of-type(even) { + background-color: #f5f5f5; +} +.table-striped > tbody > tr:nth-of-type(odd) { + background-color: transparent; +} +.table-hover > tbody > tr:hover > td, +.table-hover > tbody > tr:hover > th { + background-color: #def3ff; + border-bottom-color: #7dc3e8; +} +.table-treegrid span.indent { + margin-left: 10px; + margin-right: 10px; +} +.table-treegrid span.icon { + display: inline-block; + font-size: 13px; + margin-right: 5px; + min-width: 10px; + text-align: center; +} +.table-treegrid span.expand-icon, +.table-treegrid span.collapse-icon { + cursor: pointer; +} +.table-treegrid > tbody > tr.odd { + background-color: #f5f5f5; +} +.nav-tabs { + font-size: 14px; +} +.nav-tabs > li > a { + color: #4d5258; + margin-right: -1px; + padding-bottom: 5px; + padding-top: 5px; +} +.nav-tabs > li > a:active, +.nav-tabs > li > a:focus, +.nav-tabs > li > a:hover { + background: transparent; + border-color: #ededed; + color: #252525; +} +.nav-tabs > li > .dropdown-menu { + border-top: 0; + border-color: #ededed; +} +.nav-tabs > li > .dropdown-menu.pull-right { + right: -1px; +} +.nav-tabs + .nav-tabs-pf { + font-size: 12px; +} +.nav-tabs + .nav-tabs-pf > li:first-child > a { + padding-left: 15px; +} +.nav-tabs + .nav-tabs-pf > li:first-child > a:before { + left: 15px !important; +} +.nav-tabs .open > a, +.nav-tabs .open > a:hover, +.nav-tabs .open > a:focus { + background-color: transparent; + border-color: #ededed; +} +@media (min-width: 768px) { + .nav-tabs-pf.nav-justified { + border-bottom: 1px solid #ededed; + } +} +.nav-tabs-pf.nav-justified > li:first-child > a { + padding-left: 15px; +} +.nav-tabs-pf.nav-justified > li > a { + border-bottom: 0; +} +.nav-tabs-pf.nav-justified > li > a:before { + left: 0 !important; + right: 0 !important; +} +.nav-tabs-pf > li { + margin-bottom: 0; +} +.nav-tabs-pf > li.active > a:before { + background: #0088ce; + bottom: -1px; + content: ""; + display: block; + height: 2px; + left: 15px; + position: absolute; + right: 15px; +} +.nav-tabs-pf > li.active > a, +.nav-tabs-pf > li.active > a:active, +.nav-tabs-pf > li.active > a:focus, +.nav-tabs-pf > li.active > a:hover { + background-color: transparent; + border: 0 !important; + color: #0088ce; +} +.nav-tabs-pf > li.active > a:before, +.nav-tabs-pf > li.active > a:active:before, +.nav-tabs-pf > li.active > a:focus:before, +.nav-tabs-pf > li.active > a:hover:before { + background: #0088ce; +} +.nav-tabs-pf > li:first-child > a { + padding-left: 0; +} +.nav-tabs-pf > li:first-child > a:before { + left: 0 !important; +} +.nav-tabs-pf > li > a { + border: 0; + line-height: 1; + margin-right: 0; + padding-bottom: 10px; + padding-top: 10px; +} +.nav-tabs-pf > li > a:active:before, +.nav-tabs-pf > li > a:focus:before, +.nav-tabs-pf > li > a:hover:before { + background: #bbb; + bottom: -1px; + content: ""; + display: block; + height: 2px; + left: 15px; + position: absolute; + right: 15px; +} +.nav-tabs-pf > li > .dropdown-menu { + left: 15px; + margin-top: 1px; +} +.nav-tabs-pf > li > .dropdown-menu.pull-right { + left: auto; + right: 15px; +} +.nav-tabs-pf .open > a, +.nav-tabs-pf .open > a:hover, +.nav-tabs-pf .open > a:focus { + background-color: transparent; +} +.tooltip { + font-size: 12px; + line-height: 1.4; +} +.tooltip-inner { + padding: 7px 12px; + text-align: left; +} +h1, +.h1, +h2, +.h2 { + font-weight: 300; +} +.page-header .actions { + margin-top: 8px; +} +.page-header .actions a > .pficon { + margin-right: 4px; +} +@media (min-width: 767px) { + .page-header-bleed-left { + margin-left: -20px; + } + .page-header-bleed-right { + margin-right: -20px; + } + .page-header-bleed-right .actions { + margin-right: 20px; + } +} \ No newline at end of file diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/prettify.css b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/prettify.css new file mode 100644 index 00000000..16e0cafb --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/css/prettify.css @@ -0,0 +1,51 @@ +.pln { color: #000 } /* plain text */ + +@media screen { + .str { color: #080 } /* string content */ + .kwd { color: #008 } /* a keyword */ + .com { color: #800 } /* a comment */ + .typ { color: #606 } /* a type name */ + .lit { color: #066 } /* a literal value */ + /* punctuation, lisp open bracket, lisp close bracket */ + .pun, .opn, .clo { color: #660 } + .tag { color: #008 } /* a markup tag name */ + .atn { color: #606 } /* a markup attribute name */ + .atv { color: #080 } /* a markup attribute value */ + .dec, .var { color: #606 } /* a declaration; a variable name */ + .fun { color: red } /* a function name */ +} + +/* Use higher contrast and text-weight for printable form. */ +@media print, projection { + .str { color: #060 } + .kwd { color: #006; font-weight: bold } + .com { color: #600; font-style: italic } + .typ { color: #404; font-weight: bold } + .lit { color: #044 } + .pun, .opn, .clo { color: #440 } + .tag { color: #006; font-weight: bold } + .atn { color: #404 } + .atv { color: #060 } +} + +pre.prettyprint { + padding: 8px; + background-color: #f7f7f9; + border: 1px solid #e1e1e8; +} +pre.prettyprint.linenums { + -webkit-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; + -moz-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; + box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; +} +ol.linenums { + margin: 0 0 0 33px; /* IE indents via margin-left */ +} +ol.linenums li { + padding-left: 12px; + font-size:12px; + color: #bebec5; + line-height: 18px; + text-shadow: 0 1px 0 #fff; + list-style-type:decimal!important; +} diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/font/FontAwesome.otf b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/font/FontAwesome.otf new file mode 100644 index 0000000000000000000000000000000000000000..32dd8b1cd5410a0ce93305be80d53a63dbb9b5cd GIT binary patch literal 50204 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 IX~(Sp0L^L&n*aa+ literal 0 HcmV?d00001 diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/font/fontawesome-webfont.eot b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/font/fontawesome-webfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..c080283bdd786eb40d77cb00eab751e2098f51c5 GIT binary patch literal 29360 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 literal 0 HcmV?d00001 diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/font/fontawesome-webfont.svg b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/font/fontawesome-webfont.svg new file mode 100644 index 00000000..10a1e1bb --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/font/fontawesome-webfont.svg @@ -0,0 +1,339 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/font/fontawesome-webfont.ttf b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/font/fontawesome-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..908f69ec9a701858116376eee7b3e4ecb76da25b GIT binary patch literal 64960 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 literal 0 HcmV?d00001 diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/font/fontawesome-webfont.woff b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/font/fontawesome-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..a33af950aedc0044f1082e21cd714244782e2b12 GIT binary patch literal 34420 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ÐT?>-5aYhU|+1c>&YMpPK5x#-mbV zhqm2t2$w17dyG~W6{Cd&8!1QqcOdwSXaZn1En4FY^m?5LZnu&vEL#%oV8ylCNk$wG-tUMvMWHJdfs4~(sGWc6; zrYSZ$RcN7uUXjn3^t6n$4D}s0BRw`&5W5|diXmrWlj7oH)Z4sl#8X(>_=%zd6b6C1mM5*VpF>x6gfxu>sJ2eX*Pcif{rdZuM>`U#`pAPW|Aq%nmU`4I73BcA?o80C13 z@xO{Z`j$i-BUz1P&;>FGGtYswFc`cC${HKx$(Ii7Wb=pI_rV9Z#`q`t?Btb8t*E~& zE;~0d56Z?lrP)GmMMnK$l{l|~yP6bI2lz^e*PH}_ya(>1KT#y-&@Jvhyq}j##B%lQ zc_qbeLLp%ozoxH(_o-_OvWiPWa#j`z<9DxW_)&Eze_vfCUr}=~=Y;yk$)LyzY5L6M zd#-~bm0x&tXi#}X%PtJ6?s=bZ8>_;z;>k^+t62A(UAuEj3@Ij_Dr5Q*JxY|Z;(qRQe%{^DHRTwO3YwsCQ5Xlbdh$Jfn80CS|7 z)9TzYPoa7?)you+A0bCh5xK>2yVXaVvx*yq{638Dw#8xd)iakDHf|G?CGw320x#cJ zks;sxNo+113)r}auiKcv*bxDchQmE;B;v85S*u!l4{(IsCYGBsZ?8qsvwb!;! z13#1=?A|)cF4l${K$>@q$usl%m%KP^|&Wk>8W^*V2?L5d1RQb1n&FW0M%iEJ!IuO{(|0(Ue zvOaWRe7LtolS*c%RlF^fJ?J${BxtpSPwqiVVewI(RNfa&pm!LnFhj&zdGa#Iq+#Q~ zPfWIB0l+ppP0?VzW9{9trK!#Tx<+~bSkR&aE7VYpU$JQO>L6hzkj3=UARIFvhxb)H zezSn3@7);wGp{^JoHZNa6(qgQ5UeS3UL!>iphxK z=?5%AUZRDWvIW$^=W~Q_I>1JU04IPKA?o!b`EdIJex?jCY!eSmI#JwIkWMnhsAbm= zfKPq{KINbq-9)#7b+{J^I7tw5*rRPE2T!wrQ?1bO|Kn{Iki&BY%C`u-DqRR??h7c| zAgPS~$WTaU^&?MFzI$5bNp0H(a|%Z{0SX!l`?Kw|2V@|xysst20C$cj6G)F+qiG*p zuU7n$e#nU~AlbTPaUoF}G*r_rK{v^P&qz-*>LGZYXpGO;bj%Lu;gs-5`KMsj>f?+c zv460Oui!6f)gBAE zlxvW1`ODsf*8mFzF(rjPvIqbc zxCiN`BQ8?@_6~HtLmLz{5ns)UtpFQ10pU9C0ZbEwx%WY=ya*xRq zRdf<6tq+;};Ktr_ASg#19sw!rT{1vkexwBOjYng@`HX+l>kYCEh@$qJ$53Cne{^8D zuNoRje^+c1z!%n^mXY5|v)VZz*xOxj+vw~vP(8r8rGAr8;}%fljNKNSNR7!OFoCEl<_YPGF_}pFJmB+?oXM`qJPNY8YzUnz+jd zF|d92rz?@+jG%b1*w9uBZkxr)(#lv`D-?)GmIQgA?*sdriZiDIS^-_=6+hvX5Clra zMov6vX=bF=pYU$Es}M!-CBm9O`yl0tm_KF%WOHY;JHp%pO9Y4-d}!HX*#h)yxK#a? zA1yyhbtH}wN0D%BVzXYAW zpd`OMtHORP84|F;d#jflSXdnA4+t8f20UvRKzW-%`#c?O?rP%q17=05?+7&ZkLMPi z+*0H2On{GJ4RNL;exVbO2#zHS3VeQ)CuPJ`r+4VB^>$zsFK}r&VlW55QSy|5}hBMi`$zY;-w2vuifglCczM_j~9v;9f~*; zCMR9o2|J(mQoS&D13^{|`Bu|rB8wEA!5M4A-NiegA@!0kpVp%VwY{t1Ew(J&;_v?p zW!$PFTl)g~h*e(1=64A}^=J!PiUaVCzvAJ}m72J>Fl}r(Kwb&tTi{VUTv9lfO(%)Y z5x^iDYl=otO28w*KN$%Bm4V=@u$Z7B_@5%()kx+7$+ZRA2MtDV62@qeLU~(jP6Z-` zJXQdmRH{MWvrTjCur}zRfKZ4uW}|1#qEl+}H4CLNr0PrtFv{PxjhiZ+vzN)q5nDQ* z4S%}+=Q&rO5j#6ju$l3SVG8k2W<2u$x#7EW=Yfe-C?9LdC+K5t;~H#%qFzVV(d1e4 zcI{Zg(_*m?QxF-H6{yAp!KeX(@&Q!VEwd%E-M4J?I4xkE^O^ej(~H3_fJ~Gc5{O$n zk$Be%2u&_7G8F){^-6TVGLZRfJfb}ihl8UC0-ux7L4Kp*0nc%Q;50@akIASy;HmIB z6BF)*(kyv9LNxEfIXuoy|T1c-8P7=tqkx^ z7jA%Ig9eHstP_DgJX9N$=A8j0RaK=Wl>+>NRV9Hwg4n0so%=EV%aHH+-r{P8j0&cE z9@9V7^iR5HFdY>v^s%gFLMFz3Fc zZ|hN^&4bNzGA>)J5@EIDj^a=rQ#!H_!3_sMgZ4meSz}==tY!6*^rcytM%qb-u3aM? zN|vy69|k7}=xXv%Ev^7!Lf=WWg5(ImfMQv7^U{a|#I zhlV7@gbQ2$0_x-Xzf_ajlewyvBUL{>qMPSb@}_{YrT(gr(10Lb*~4)DQiYi7SyG#pb1_{mVVA7bDtZx!fva@;Ru=fO6)@h`+?MdQWL;O zEbv;JAVC0(%E*XA-{1P?;Oa3M0(`?=HQ*+(A+AM&m|{CA#-k%$@PE>M z-Mo4Xgg`b(>AJj42N=-@h@^_3?=Kk7M+ODNght5ME}(})-oBC-iw-XoLUIF*;YIQ< z?uDa_r7BXAL*BmxeeQzN%)%V`;Y;LV0r^u+{v?M(*L@`vM3!iCLgkmn=Av6HQ4uGM zf*nLF_=FKJ#iGISZv!p~SLlzi{eQll+x*-5aHI-RQNFZ_w`>^%*`ZTEAXu7I$S}a} z3fbmCf+h9`01(25)J%fTg1B3{cO(uRS zWpSM+1?=^s(lMXPNDtA1ZtRm60EE3chiKtXKA|?kn{yaPzxV_^y)|i`Uo|pAiCZ7$5_}G8qBZ6BdIJq#+}uj+koilGim3*2nIk3zh7_EF3m+%069G z)21YffzJSuU||Abl@A;70GK(hD!9zoz@tIE!=xEgO_{11-wJO%PdAe`CM6xz3#z)E z6<#4>F%b|O=*{Ltg&9NC(kh$*M;t9sxztKqymtC}#-+rj#0y|2`Zp5<4QYRbr6;NA z8v2Csi4XGMq4Fv6uY|P0CMq&X5Lk=t*Z@xE<@9H4NQ#YBc~<(?7UmhVGkNh7HZn6m zhFsNP4c!!M^#*NbUTnU)uA;IQY>-J%hF(s7WhxCtWmT$lXhZ^!v5|-juB_5fTvn}m zxf5JPmLV1dQG5l8*kkk}y$tf8t*IR7ilDCE zC=)|1px1L@#;{^n(SZ}+6F*{-^$`3{ji+|)*32ujz*(#;UFlaqtIriTOQkmG?1`5J zcv~ogtDv1^hyjYliF5<+6*#t4WK{ImAy<7a zS-k0Ri`=51pIUav+fFRuJW2Phq}zJ(;mL>fPjjDx(yc!Yz?7pOt^7OhS>w-VNSF2G zBP8*ZtXSyC#)c71+g1qnNb#{s9|zf12kT(&2TXIOAEx8MWkrP@lR*r27vLqKnyS^% zW0}5g0{ujQ*3d8q7DldJl(d=GpHj{l5TD3%n4|F+gC|0 z;-2JVmqC9EPyQw!w~(G{G+XvQ5UR$A>rFayojOw66QI#i`W)EHZPrt}RP@)BnQ8wm z%FWeLJ2e7q?YAtXg9X9@G}QcpbSWd&YV=hftm*ku`0H=N9wU8HrMvPO+2mmTM^GoS z6V{A%zrFjvoEXsu{XoWZKK}kb{HLsse_54a-YKgtE34xFV5`dfA;#F)zLSjAh}C4Y zf*!I|OUu*VE>FWUK&PXjqMJy)0Gq>DY7Cvz!e<^xYid%FGYAOO(KFNlQI%;laS`9V zYJT}#HNp`;!e_8ws&9s$Kzq*p47@y08$#4EVn%lY0{jDug3d*lpRdq0F%V40vWaAX z8`3-WpKC=D}ZQpY3W9gChf#e9&Ho}1! zCwq=$Uy^lL1mlLi1)@q1G#=JqKJIJPvGl+GC~r=)vZ~y{y2TOyruIKeH91_KN5{4|z@kQxA2ei4 z!y)`3#}x3XeFxTCtUAzH^c;7$0dy|1MkwA9nUth~qb#djzH#+6+!fg?#VZBrK8b52 zn>4O>SsFz06g2<;`^WP8L=I7bfG6UwBPRX5P;p>%z{e4~WWBJ(5$+?gJNMIHrPt0M z3<^BSdoN)U*}VY^vbL$cX2h)*rXl{X6CJMt+j-EOg{w2`ocY?Xm{fLS$;Ie{>Y5+Z z4hg@|BG5<-=@@wSa$r>$8{KkX!pN=8<`<%#L*oRa3`SP?#c*;Up6LJlO51t!3nUuU zk!Yawi`|2e>_5NQGZ1zV^KtINnxl(&%jfLk)oT_DbaZ<>87;f8`siY5+oCnt=FoOb zw)p6pi*Vr&U@sm$dO;de8~}G%7xJmNj9C4O7yq*t7+E+vFt#trSu#Nx>A+;QEktmw zPLD=kMRMo{ZtIr#sI5Y3sU84PP%AA%pPGSTVUIP#Ch(CF5n&;!p!{9MeDy<&+NY?A zD;W#-qr0#w3P?&$Pp+Z%(D?d2cbxTADKZ(9ahb^TJYPy+@f??i6P)5R1)E|rM zd9mne`vDPX#VzPUhoKOw0T=H}SKyKvDRc#9t^$ej1Nc{I-kYvaIv>E47bvtq4fJIQ zr-AB)rFFRi$)glV9U8kUG7@r);JO4M5=qg3dWeb4j?FJnP0$qN$3|xJN@o}>!GCaA zCgpKhhNAQ%e`_)d;KS1(;0l@5m`%THBq{^q253FG4RO8pp$u8l6EceC9LD?w+kRV$ z*?Gp2CQSKB9xHk}P*8@RG9%e-yqA%ZA!LKJuZkrbU;`k1ZE44P9*&W00um)}L1eHg z2qsA_8x$NJ8YwZTnS%XN+)DiI+ng}^jL0sCEtCSyanD9h* zBK^1GS~?Ltt@z)u1nCf%Dtf?rfuG-`KT6#>WyU!NfPpz>?{nkEjk^aezyBXUI7mu0 zd^qlWh3^4`3EMZqKQr&#Juv7gG}wLb-o0_Z{<=|t{FKQv9L(SC;~Euj_x{(eapTAR zh!nvg(k(}0|8-gYuA`el3^Ef)f|D|3@*IiNMR$nU&fV=#LK2LoP zBq?VF%;=LdpfQorrBBw`)5de^yc@b$lOT~t>67H*s5hVhndOC%%j`e+A4vd1J=nsN z8K>h<%l8|}u)4FV3v^1|W+NYXYZYOgFUZS+d~>}Pty#Ee(V9z()Ly>f{y~EC;#I)4 zI?6Z4&?%maRm;dQ&;2pH4pDkqm5Xsh?j|0&{z`oq`o(Zh@FUEHp2h3IWE95JEE)Cs zF&X>L3MdhN;g(1@p#*OsJUVa9fz?{2r`AEi=cXy9VPN+fZH8KxTZ8ae0rI!u6hv(pB4c z*dnUQr$gi@XDRi7I^R^{5iUn5NL>i%3$>nPuiQaAYmsyRW6-RtiI3SWU?^9k4buB% z1=|N_mqeCIW=+^VT@|+PQg&D>1z0L!ri2Ysq7i~-8(u$~&PW7Xh|6U)Tfv2iK~yR_b79VlhY~N zsmpxoprSLxP7~o)`CaVvJ%-K}8(5@BAv_iAT8V0LutwrbuE5m)GD3g`n@x#|5=i$T zeh0F(CeAM)w?qqxDr?%$62kbz_y+G#6KBPC-=Zpb2bY?M&7^yo9kDxu010B)tVm;Q ziq33pd1e=xogbI4&d*QJ&KAs_#V08##*FM7dobuYaz)@UJ>L7&L_wU$!o;?Psm`b< z-mR{w2=*}w#JL^3m*Vt{%F=?WRQrmQ%J3|IxLJ4Fi41${`{OT(Oa%)b?h_s&8xRXW z)C4QqoH+6aJPqaauPr<+^G2uQ7eFg~A!-)}E}OF+asZ?Jw}82X`UfLmlK9I$Q&4}B z!(P(7G1*R65Uj#POp^JohZPck1M}TL+WiQ+n~MtKuofeXr-Il+R5CPg8rY<~6mM(* z#~-Y)L~fMqDE$@C2)^!MeU5wi<&Te>h+JM`+*KN&{(=qE#zbNoEi9p$K@`#0BdO*I z5tazq@mgbqdKMe7DJ4aU%k!8Q8B_a#t@)7oA00UNd@Kryn=cp5e4=CtRfg0kr!6S%IR7 z`lBHKRgvWE9*_r>`jT(uZ+aj?6(P=#XxG*By-5>z+6sh+@^8`%NA44nthgEIdWGCn zoTr+{eR$V-(*h@{;jWXSY4Ak+nfcS+TgPv$`pNyzDEVc~V<$~3X#jHT@5g_iC)JuO zH_1%Asnkf6s0SNdo%HFUM|d>uYsa8M+Mv9D3b8gXTQ#5Epv+;~E!{rglGnM-$1&tL z+P%>Hpkb6JPf=M%wT%v@m0p0`1&7e8KzbLkCl%z{uAgWMNk@aT{{Ttc3t!l>g8=P* zq(H{sXe=hnC{D`2A2Ym#)Dx@(MM*`)P`!m~Zz1vA!>0tN1P7^*_>GNiiUR%!0r(^}n7r zpq^a67=|YOHvOcL4)v${tsn?q>rPYFf?z5Jk%V8n$(LzZAL;@4MY*_(>p_DH1F)o!jESoSsxoRS<=tIrd!DtbZpQK-a;a^KmEkup4z}x*+>H5 z7u+C!RJn)Vs>DNq7n@XhD#-6HVEwKpKdZ?p7_ns9RL3oSlVyz#C$2pn!}H+n^#lzm zEaJ(xDZZ9lw<1YbqSjf?U}>{7nb z7gsW#siry}*|~2m=SevpxaCr1$G7H3R_G+7j@?K~&sLpx#2CpY?(DXR-jZD=-mtA& zQGnGH#o_cb642_nF1* z>$7o`C%9EJGUNHR`!?<0(z5-K&h3*=*|jsIs}FqrAI&ta{QriiW#kUmjb zDLJxx_W%AVjdH+#@thc*KR3mbX@HmlV(3Sd>y;P`QS1$Ryy!{E76JGj&8(3=kG&k~@pzSj~zS^JtkkJZ^{UAK?)wVuV3BZ`&gk_SIRu0X--sUNe5xk@W}Ftra!(bzEjJ8kBb@JJWjP z7TQlk`;9zt-x?=dRFsxp$WQvVdxLuQ!GikgYN>sw2t+&ZfmY~fNBdytNu*n9w9SNH zXBJi%Fc$wy3rHWhI-^O)ZfTrO4J>Am#(oqiI2lO*1%w1800IdZsQXZz2lPk+_1^C? zFk){^jRpqu#8#AONa1zfD?5*I7kvaU%qKEp?CKy!V+SJuRYD)h&PzC`y%JJJCUzh# z6Fl+;@E6K@R|X1qu#2Z!biZw3t!;ZIYiWlhVKQjKlfTFrEl@%d5UTs&48clS?=*Pd zw+2Gg(;r)*)w2Oa*c``cu8K_7b~RabK0bwRqR_;OO#+4^XM`r1(DbGW=z#8p9fCpV zfaW4a%lINoEBw;=ij`=8(>O5)$CMorkrSrzj`H_KB1W3rvvTLY2u|2eBbdb8yySe% z!J_@Oe0%3bR(v5BY7v1Delh;Qij8kfh23s!X%CmVj;jQioZV5Bi zrh9a!ESdC8_dDj_kiRE)|Nh(xg{p_8Nsob6%=7`#HAStp3H1qIuTAzy_1osZE8i#A zYkzEoqLrAkfyWMgeLi0Cc>?J-ezDqNwbzOgZfpL$wva;#t4_xOmB)5|Z5yvxoj|)+ zf9`d;ggc&ptF82q!srF*r@x*|9Wi3U)IozLK73h}UXW49`xYMvIjA|)gl0u$qA{36 zH~Q4M=5e`IHCcN#@R@nB5u}{bePa+*n*5ARcSk!pRAG#@0$qEeK1vsn7+o4(5?-8D zl3IjVkUl&mEG{%ZFh4L?QJPQ~m&HZv1Cl~Q0y6@2!N{SHijRs_q*d#x_o%b7)6%l| zt9iFil-$eOlU5UdAo{f9e&^!kO5a*gn50Y6gr;~UMuY(hjwHgMbX1j| zo1LrA%Pc>5FbDj1P}|K=15b|}i96}vmmfWT@=W&kao1woz3_|78ZEL+& zY~QkN^A?NqIcM|EC+-Y#_w@v^U>k0$!YkD)GsF;PNd7#fBAI;_V}FbnCO=juZuQYLHlwngqdD_0g2NxH7lAq}&8Ud{9bYa!^WYI!Kb! zQD_!$`H>~4U78t)ObM_`CutHYLaKMi`^I~FCI@T}bMT6S(w%8vB#k6^>Ady6#j|d2 zy&46aSQc_SeRY0*>L^2Gc4S6yR-i60Iixf&Gb%w5mzWq4qJDcA0Wm>Qp^%X?nP)P| zBrGQ^Jw72JK^LAG8XguA78M+k6{$-~NQ~Eqys3Vv-3A(fi4y*SnevlOgWTsZ7nHT}^UJ^reYV+1l5+ zjIG?0v)7wzawr^_w-@tqnwSpHf7l3 zt+d;^Td4p}POccKU7Ioivol^vI#(Lt_5A+I%Ml5u{nf>|0;yZ9^)}`LNcJ6%$Y;a!pcVxePLsjjfETiP(eZ#SE`g z%4yx{w9|ki!frsHpjuyDkW-Xh6qO&En+84PvwKb{e7GW_RMn0NJ ztsJSvO4@gBa&uHmR6V$Qrm#{dm`jsODiAyw@Q`S)l99)b1viJaMC2svbU7JqMQ6*- zRFN?bgquyQriuL`#r`Q`|00EzS;YyKTHc}B%XG*wGUzVp_dB4_ra6g*q`YJWsMXU_ zxX_rW$n5Z(i0X*yL_1%LTLtuSOMyIH%r#_4bXM%r+e z$mEABYno1~;r%lj-s&X005o74G!kAwBZ0gSrj3%iz#{s%u}aSRuof98-I^}+t@bUJ z7+-gpOL?nr%(%erAOaMUJFNQ zh(wTKU=gP=0EI16iP*=|k=l2QJI#%THy9E8-%Fv7XOR5D|18BXMRcd_NKjXj9vGp6 zu+3A5Vc!@4+9`+%(}!x}VpEdidB2!2e;>6~=RmSa3tEt?WUaWN(7iFN9z^2v@6{C+ zH%8Q3(k+5FBlHJwO{wVJ6;%X65Wrncw`+SEJ1|^rC+16KP`9$M8$Fl*WiGWiOBZRN zNei#ED>0cxNAjW#xvCVKTnlHF`KvliTP{E5!3yD;6K064aa5@C|A{xU!gLcwF=QGK-LB6;v*S$ z7NF+TM6NP*HIeRzv~W;g{CtB;S24nbJk+XYDP~EoSGlUfWEI9$;HLrEEb!EwD1vnr zxWTyk0~IDxoCF)g|BkzlL7mDJyTYpOy+|ufO;8iOsH{|hqf(}-*|iD<;Qhui;M_W; zW5uonN$+*j11_5Cn>5j`WY=8q#l0g&=5R=0|q6-`2@Zj0U z^ZB1EQ-Ruaa6-c2|9@Q?>AJkTaNWP866UJxnl-pa49tSjz`nai(dLjrkS^A&z7mm+ z$*K|3Lo1CzO$OsKypfh|!im1UdOhahr-as3D!Z@VkRH)eaq09cOlNgpPm_5B=OkTE z=H2xi+M`D|*$=Lzsz(o0AXA|p#IU5g=a_VvV;m*zO^QL`IIvd~nAKOhYIu938R>?| zRYOb$OVrDVS@3hCxpg^ z#>Y#3CyV%a{7z7iG?FH#^*G=44i4*i+VlnwN({X6Fd^8{xc}_PAZxo@+t|oUJ75|c zYwxy6EG)uigqs$Vfe#3aoX!{Lj3e%n9S9~T;hslW$;*WXw!v?&r=CkoicLd0&uDn} zM$57cX=$1K0eyANA$17Zg(B5nSzL0wR6@#SlmApTzx~f5K1)AGQEPa3W zD4NZI$6H6=uZK>qeCOS-{J+-xbmqc6o?Iru^s?Nzl`dlkdJh9T2z?zk9LVIMYBKZ{ zrmw>|-S0_%gF@R(zJBkLJ(KkcIwWtxeA-t{`#zaZhU9UN^w(<6?p3HFC?hxeLcCa2 zIc2WhC=Q&w*@C^yke900JWl#@+f4N;hYi!guqjtXJW04_KU>Pd%K)vA02}J$tVDi4 z*g#)g1|~L^l;O`^P>~lsjW0AmVA=pncPkqV4RssqE|^UYL>Ycn9l) zU*TA!NBWJ_e!iVYJ7P|4{--#+t^m4A_CRuLBFJ4#%=+uvjbO;b1B@0Kzf`ZHk*k9` z1@kUj26+x|%#F7H%vhN|9w(OW8RET^z=eFSOfs?nG{7#~U-iE(k(CzFH0k z0N~u=N5l!kf0F^&9xJ4UzS?)ox!xZskp#Jc^^Fbn^H#rQrX^cvf;6FAG*!b~3#M>o zmXodbxd+OR@U{-vmh6z=#J!1?B{U@;Yf&R`)M)*Ghq+PKj+$~^zsl^0sT+KO!_=MjaNw|S27^mr9fbI_#PXa%+SU?tRC|}MQ~bY< z?uq;N3vXL1x>m_Z!l#l0Ta2gWAkYU1}D8J-&6-A~o$@CmFwXe-f|F z$w^Jk=GvkUZCbCU{pygj|5RGs-fFjuqp5PAWS@9nPW8P&O~ge^yl=9PkJ?v`?h!0L zY11B!srN!8_)Bt%38;+RUyJaJ99wg$JN{A)5IvOFc`^dj9p6w$Z80yz!!EldkkV0j( zu1a6cOGj%eEMjsRvKkMm2}T!|gFwTn4hl+14CZi(SGUeNJWb=^5EX!A-An%U4t6E$ zG~L{tPLdJsj_K&gkJ9D)&wrT6KOd`}KgKm?l~+!0T+Vk5sT20dRpc>FLt4Ozd+H=) z`G4jTFk5P1-QUiN~%oA|lcva1q1>@@m%&xsH+mo=lScBK}(AJQ*?h`K!Om z`1`^LCTnlTzI|#TQI0@OufHiD$Cb$8q>)4=Eg~XPlOs4(|Bch6GvmPWCbeMub|WDd zE3?!SM>iisD<1fF=DMD8NPmhsKvG3u(h*E7FOMcRdLuFkG zD5~XodFVYfo0NmDS-;%Dw}eVu4u5F@QX_+SQYcG|(RoKBJQw~++h>oQxkR~Zj%$%S zXMOC!);~dxWwd8)<%>?Px*Ea3wLXT4j|fW+(=6Y3`bta9(W9k2`Rpzu?56STHXmo_ z5Dso@8zwO(EGbH}XiMw0`+d@#aT@^ z$!WwOMy!*~TXXR?k3?cTcSiI|#VX*QH`6}lPYjAEqO=KcBu1~PTGbcfj&?k7^{j8b8;l3LZmQuGo3O?UAYo$a@ zclqL~CC%Wsu*f4lhZ0MTagNMU%G{b1uXUH`358=aas)_bI=_1kFX4Aef}!vLC(>`m zpPYEpSjk+opMGSD#+Yjbs5stK5d#^rQGO_}-o1naT;Nj%vV`d|8u9ac$~w8fmJ?RW zni}^WDd3^w&14wT^K#X;%CR!M;Vai2`y!f8DoZObQ^Q}~QPYBk2m5dA(UNWcij~_atX>Z-IJVpW!A>m1EVQOTmmoJ5nnN#`4kDS$9IkR!Oge;0f zrZQECz7eZ)SBI~*94-!J9HO^-Zqsxvk$HO?N&6PWH@H33b>)VDrAf0I+a+_yJ2 z6zrOpXedL1y6wf!HY>Wi(@?VYEU0<%zbdoY4}! zd-jhXZoS&W|1J!DXKJc+m02K$PzXLuR#|#knVR$+{V&=F2~bSHsE1Ucp*^is+Ed5v+2?49Mpi)&BJr{cYRE!i$ZoqMe%odmWS&8bI zhY`3xWyksDb9wQ4-E#~rrQh7RI;3vAv&Spss%s^6GJECuCj0dq7=)I@EeTu7eFDOb zx0shMr+0=-b+-hzO!ZUA%?n@LYCan1wg)`Pkfs#O<$?iKOU7%Hk{4U#RW4iew@4YN zGMvXi$y_f?>+@R|)y>uH+7%z+ z!MAK)v1bXiAX8JLdEzaHmJx8cP+@*Mo^lt=>tw`$@sPU=2ZlN6Jl-xqYz0-_()E~h~2nMUj>qpL?wSA%q3rk53g8`FgDmN)P z^f*IXn3p@OuML8!gTX`U6^ZLoFyc^oAZ!Uth4NnyVITR&yt?kNW?) z^?~&>#2B91(ASJ}h_lbOZrcb`mtBZRH95vy+FO13J`j<9gtAf#)7I*?2>^!8 zVif~9by=;l4jHp`@<9lx&`przd*SR7>gCN3r9GLOa++r3n8c#wqGEMtqZJ*2KCCQqVA-drR4knu`kyiqrVx!uMpAIFpIe z=f&r1$osN_ylkZWL5h9)3Gp!#mR1;944rJ5LE;hDXJ_Q38oGs!5YqYsnD&D}wfmDx zk`rhXX@hzJh?;wL?lsb_QPk?I7lfVCZ^8Md`Njl}o5lCYPPJn9p6U@D7OJ&Ju;EwviQj7uAtRF_` zV=&i`jKK%X$(Xmbqf6Nj4%#tTFX_agG)naa;i{@9oKcuT;W4}_A=>24hGdrJ09)=% zb3lD#5)G8QGh6~W_()Tri$EcZmArARaEql^VyTYmX}g--LKK_cO5<*mNyOm@anyhY zeio9~R=CV1lX<~UMClxGm0(+G2U4A!DmHo6yNab9bg#rhGZQGJe91y_V*@RJM8D90 z@8|Gj@RLIb-c)vJe#_{*C5i{ZGBA+bhHpu%ejCle$ANAGbuyNNAvuFLPBtTbUJb|P?K6D1l>ajP z70_6HU*VfqeIt~2d9yxe<{cY7TcM+>Vbl>H)$clP^xb(5J{z`;JMBPZvtKMHYX2v( zbLUzN9X4v@!i7#wy2VY-`H>b!ov-Pdj$$BNVezk_zm2@Uu&H}Neu2f&qq=L(O|+bp zTg{hpE5Vxe+KO&1+9 znNVF&r20tetB~4B;_^4?7J;Xcp|IKibFxcVVbOBqyJO#EC{D>8Qfa)7+N7pNrTL{s zl77i2yxeCiR2BA=8BBKuxhx|Vj=wJ?Lp-isuep`3I4Ku%(-@UQpe`~@eLMBngodSO zMw1C*-_t{vAtPoCJ+f}#G*C#MG|rhu7Vf%7K4`g_iRw;^59Q%$z8GjZ{E|krbZnC~ znJx|_^F=F6c|~d)5?weDO$5QQ5r;Ta2x;wFY9XojJvRoC-p0W}ub-Rho*Q@LchvKq zor@to*Wgj*?&{~^wyV~!zM-nNo-10-MhA;a#gSVa;J*6GBELddA`Cy-q9CWiPI)r% zWb6rUO(c_;8k3o=&Pmf7(zy%yPGrs?*su|=ETiJR?IJYsiTdoEx|7+t{B86MKRis; z8l8OW*2K7Ne9>ZvmLtduh4S>A6h8bqo##wH890=Vw9Jod^NvtMxja73zFr^0&7;hA z0EpG<%~@LvTeurVU|-8kidTc%EiQ#y5Z;WDktsMCP$wd3!?5tWDfKTiOEYc$}%c@b9Dij<#5E!o{72K z4bt-vF5rji#{g*>WdP-7h9#tX{ z%Z=<8r&-)Y2VyhQiFQO8LtQLpf}H9-n8a~E(!r1D*dugws-i1O9Lat{2d$&ik#->3 zl5a%0FncjvSb`mOaRHE0_Ayy$NuL?587tYRbUG`h```hvNvC1(63n+0M|Slj(_+c& zMl$Y4OThv?mvMp{9Vd)XbbS@X(y8!cYVbXkV2X%6rublrIV|rE5Q?zyy0XF=VO9bJDrbT5pn|^q9lolOf6(k8>c9Q>xhFn4{&db)G=Dsu zGoH?+zeE2s4|HQQ!e5_%K>8_ujx9W=Q>z;Dj_+!nkY$s#Z3^uhNX>$&$?wOJ8O1NM z2q&vCHmo{%Ri{35I^%Lk?y5{`mNus<`UmuV=U!~3qmt>$Nvmnk(5is|G~|(k7W5$6 zv;N{8q@bhmxQ{OBC9sJMfXf3-2>M13fzMWE!3lTQim`%I7YT7LPiQcL;?POah;b0` z7>e%zp|@xy><-{l3yXjj!27b}3DU?u<>wEkeVpls8bD@O0Xz(KRNk7rzlh98B(R3M zW*wJB)?X(xo|E?#XeTYuJurpPDkNL_IM090le1l8S&|RdiU_1fOyZgs%&eNC`DB9U z`kCNfm<70XF8xA{eC1L2v28ZD?*8|lKWQG^t8BW#gYs(*e`&NK-o`#b z&t6Hn6jrh+Ej^>O!gH2bxf0D{@*a2iN#mc-)dUiBSLj3l-)FB}L;G@R;o-V)jrbna z#PY=+pYeb?^+tmB6f*i6(p;ybB!p0@pV#`OR2jBf;rnUOm@#Th21BBXKr0m-xJvmC2buhi5K|LQx#Q8o` zeHU||06PV#8#?hz#i4t@9t3K%$HN8G42+3iSW#BtX(@t_Q;^@G|q{5Z6YBnNy9QY`9C3XjTf3vpFF1MOd8NJ=d$$) zsuW#^TWoka{aZTP{j-p@_P%zWOT*E+KEFeMJ+|^3K(4of9+#4j>kj{|Cq0E-zgy%{ z#3a|iqhA#31NZQ+%I4qs7fs)PaSt5YnVIS7oaljE{lcQi zlBoRPvXHFk=p{=mmRw^pl9JLBHL)=X$aM+|N{q;hzP8w6@e(F6AsPAbQF+nX30!&# z6P=fr23MtVA*m384lR@Rjj7V&z0a<(QnPoI~^@7)_&6ra89ON(pQ7{PrF`!MXj zX9wqb%kj#(bL-A6Yo32VQ9E}=(KOA}sbQY;_%(i`mako5Z& zsmw1TD1`5tCJ)#fz9)e@9i3O4Uy`0~QMUKu7inpVXV1t7rwOZp*?)iIxM%#2V^2e~ z$XrcT8|eq*#=#x<`qNKoUvy_^StM58-Qe;ni8KpBzy%4Vped~9-JdIYCd51tIw!5qmu#YV#XJ*^USkHNr%AYJ!i}^0i0(t31IG=8RxpP|dK+W%0}6 ztX&NLVB^e;HDn&kY{?|Oi)-9!b}gYcQ9e;V#qpJ;3e|TNC5KyTzC@{-_M)fZ<$yT} zD_P-*{P&TFLjDOS@=Bz$Z{)~HZ{{kR;E$nNLq3k7eY`>ZCZ~4sVvw!)FQ-8_1ic78Sc6=V)%b}& z=8Ze8`=??n=0oA;TP?NxEhjAARwb?yS6NVRNM@s|CfX!z zTaa%Fz_0;K8oRnyVe_|rCtSmFE%5+0KH6GqC5!$T2ONn2g3J( z-i@IrYOrOuIb`KJ@m(K9D2*S%%zoC=LnMTTkV9lDmXcsnG1NdvV7Jjd5JCM1NHlJX@sOY}ho zk=f{z%p%w?IZ)i49Vs-m15hqBbxWvp%Xo(52c!qZi6Tw45Ji$2mK~-Gi?;+|!NB;% zhWSb8ooIPrUQkIC7oV4(Q~=<6T4oL}psaw6isOrQ#o3nd1{;`aLveMDdZ$ue5nUdd z50YjP{zmA#h2qjHCGE3NMtt3Qn8ofr-!5u`rWTr02LQeC%gXF;dH1^i^lt?N?oo@< z3bZFJ$~UhEAjiO}bCx_RJ323cLlT>TNy*Gg&C*QAX|~Dp356FESz)>*{oQB=U07}6OZC4c4S;=0S>N=&Tjr_)nKfwEq z=%?^hE*hX&gEMPIm>cKaiuvy4f}s=SD$Lo_x)PHXAy(6nt!vYSnBoUVBx6XLz|UKw?NZPV_E%ZkbEZz# zX3hL6%XgbKiBWx5OYwRPyf|=;@19yBoAoUNXVL(6S<0@J{8V{dR6JCq!(`i~1asw z1TyVuVMR_F;m|f3yMuCOXkkSLX{R& zlWWim|A;Kt8W%w65!{?T)^70M4#{7uU+9ucbc_B^!NY=lKbx6+ebJ+DuV4T6(W2{< zR&Us4@5hPEHzAq9QAr_|h+LJ@&GB^63aS}xd1S|i>NOhL109JT(@reB?#9P^Cb_$- zk=JSjk?T@n88PBHy;+}B7gx(&t#7&hHD2{9pnD%(zm9z@nmlRIqDhk%UH_Ido}q;O z_+z>>ew}6=U7G#t$9#B^uBxc8u&_#37@=5k31XE$L4%pCxO|C!yRax+7Z4t z$%;WBnAHeD_;gR{qGtx6Y6mc=y~xVv zJV+o}26{Qe@iMNV-@}+%F}6XbbrKP;6_aDU0l^gEAk+06>HyZ@#p>eO&M*>YMIDV{ zOxH_@v>YvCMOJ(x><6cr@ueJK6b1Vx3@!vgyulcsBZ0?gc-M!SegY$}n=sSD9`-lw zfZw$4>=`8m=FVvLLMu%H{HoZU7|9V!dG`L=tOJJ|!W%Wk-(*(vWCzf?A+F&byIk<< z?cSY~;LVrF%M1nO72W)8p1!`GfdxTju^hxKB6nv6@^9;Vq3!CfmrPQ2#iNk`66y?? zNIHz&2qz?8om0MpG%J2L?q(_4*;svKT1V%_Zahwrn z)$8QB5$yr-~){b=IE!Q7i#85srWba(GXE=_N=d)v422Ru*d4&a~el;?r< zXO|qBU#cKBcgV!QC1-mkJmU^DV^f@c_!d6Wxx%3-LXiR}QI4kWKzUs*pL-yu7OGLV zyw5D0swSfcfHFq`=hSGR121{f0tgY`&_LQgj83D;lX$w(i+&7~;i#qo@LDV-fgI9b z(SVGBr2$o0#sDI7BR!V>!ud7W=eqj2`o(Upc2%5QP(5Xm`ZK?&n-_3?t_J%Ce?@Eo z#6{s&+*6%bS;V*hS}$=2szE7F#&02`$CCk^-=WP0)Ziauj~Z?bJ`ATm#&qV}Y2W#S zP)qLS2EXoF3cG8`M=ejuhbM3xX8inuo z(Cobr>D3o-!q5nEkR{7Q$rjNW!5Vu0mG^fy)Ysc_L_;|p8KSG-!O>c>yyWy5qCH9` zkO}ZfMTwt@pW&k9fOjjC^cY5tQ;x$IIx6d+rVWB1*=%Z!n{TaKdWow#sXGWIJs)g} zuDK_jx?$tD;`_pWc=384Xnn>7Hbu3b0-zC&#sTExa;~?%)@Ta@im%t~OQm2t0AJ=9 zT?|yZb@!mVdqw_9+ULZdeFd1|fLB@x;M#%W)0ASz7^TpG!A-{&{Fb9{E^R0^_bAX! z$=TVFq@_*RR_Gu*lq)gT7=@BU(4$6Ds<|n^F8GgU?-7i&m2rX0l|raOACezo8JS-i zSE>PgzO*z43_kgV`ckBRpzed(x+L#CZtyzd9a`L45%XvJJ8%Hrkh^*gUb8#Lzx!b#%*pyUVipFhs zO?@)&F4!bD?5%Ccux!Yv_0Dju6KyOqT)jP9lNG`z?d%WA{rejl_ItTP!&tQWpIP!+ zoXol<@Ah%)uFN&VyEdbtPQb` zmhpN+A~apvLFJ7^RjiMSf$}oelQiwSHPh);%;dtULjq)l1-XTp{5RwqX40{VPO`C`lZw=-Sk^2})oq1P#Uppg_bb<0c+M(O1y4njwb2t*JM35`sby&MO23eF)DK_T|Sv4B6ZS9k6a7E7xIshHHO zj)V8$jX^^7fVhpFXT?Qk*I}Ke1cD?cl1V9c%TX%M_Dl3!G zN@@f8teCJU9t+x*itIZ2u^rZg&Cw4@9A@> z(E_222iFFmP~&9!nDtmNIRrfSE~#|t*VOc7>T?UC7)NGKCF|0jq}|SbazOEkT>P3m z#zsbSY$O=!SYaB*bT8fwDv=pPRfp*NUk>KhE_ItWK@ACyO>_oHflGYI*F=7wD@!fY zm6hS|{UKC-pA4B!rf9Hw6L>whKXH4oww?d-^&uF1m0CjdC;a2*Q3*p}U8FIlhGc;v z;1^8IdkXnRhJ{@>Cs{H?g0v1ZTy=A!jZ^}^RQN?ST|R6y z6sSQuIzkp5YsiCl{VRE%!H~z*fyETh{|+(}gkLkEJ7!>XbyyV}4P5mIdDrvKUs(*# zMlr%D8A+j|SnyiBop~I@K3aTja(A7R7cZXNU4HVl#g70h_)7NZ+O*cBqVPL{&6u(h)%o8ua|YggPL-w^>L zqciD`jiZ~Xi6PLUz%6u#Tcjd6J}xy*4G?HDWH;A2a6$On!I$Y=y)ki@2aThk27h5mCj(i=AfZFxH=t=_$DVCn|c&!6nU%LeTB4{Njtz{`ih>U{&tXaqs{ z9E@)U&`B`c=x;*shlR^KA|tpUhL}vYNCH<1LJWq?96jH7qN1|0NKstXnAf1W*5R;v z>yF@+yZL$U<6VH+T=)%uvvqZ4XAf{4O)oEy!D`VAZaygftk?4YRr>*e{ondPp|n8o zBO6R{SW#qki|}i0PoamE*%kK5&09|%FSs>f!ug&QC}NmrDMoy>Y#x3$k-`YB+F< zeK?_~xP+o2&_yemOOy<(df{u%ej@5Cx=-7mGj(jOb5{AyysVjErUCZ+GvO}r^>!l$*2_|0H zzZcSBy!sn~p1Ui7aESi-CDP|IdH*uVQiL?&2reush0+Sfqc7QyW{;))I6J`txigmS zlW9+0ybVf+vhX6%JUy00$0Wuk@M2q63KI}o>;b;aatTCd(DUcf<7inf3oZ&T<-mwh zT2xfV8?Os}SY++kA~IRP(F$2`cz7`1h5Vs<6BI1tB)XO=8C0WeK~h@Gld-9+E{P<9 zqIo)}Iuz|7!|ULhLO0>!CBvXw(TUs{8N~A*D3Q|fk@i0eMoSBj)~rRu{htz0$f5=- z*&n7x16iUKy69+j*SL*d(Og1!cuKg&&COr{r~IT-F0Yo5L5lgrIusB3WHp&wLWbNT z*4$Mx=*TNF>6F4yS8u4-6cwc;6!H6`pKaWw_FGS9L_2c{z9~+@A&RKTz?9I-CMUy)jP@?_pgO-V&cQ~_TWlJ2DU zRpdFh(HVYfGQM*tTU-p1JHEAb@6{XX8{Sv#TRA_auWzbzjjy8Gw*aC{yCU8F{5T)q zG^ahjigKJbUCb7j=+Ucx@uCfuQmZD~^~8MC3vBpEskk%esPz!_5NGSTb2!XKf>aOm zqW|4U!Vf)!335~uN3`t{tmy5AKm&hpolc-L)pX_}Ofmc43VI78b#>gl6_@LqaFIBV3eAooTH@5^(&Uo;}*@BF`iCP1C6Y5(Ie=f zil0ATdjv$Tr!Rhahr99M>mSGzwU|%MQ7QHhdU&+4p8|7%DL(6^%}^id`}jdF z+3^j#04_Z+UIAz*SE$sZuw`PPSK#g}=ly|1J?sx^b%~Bu_~cfH*JyIG(=u|fZE+*g z=A{?@2jxJ}8XOR+Uz+wP4T53juP06r#%@vDpi zK~Jsnbj$9om0aV&Txmmk$+rHxgT-ZUka@VwmwEFVmgNoyoE&EPuYWGJ6 zRr0xUOm#rM+b*>@gZQx3tw9&sP^n~OOAKvPwqQc{&{wrzOgmFEuqc6 zaee%VsBt@|udh3K^w{ykO$YUtb~U**t|dPk85 zFu=5f3COF8tU}|Fo|Vh1T!6HCpHbD5W8Oung{eg;P+Lk**QJ9j;Qhgf)iZZU&o;iQ zHSnT+l|mmCnGu0#YK9)sRF~GOii`fO2x_dS%pKZCqw+|IPfgI|)z<49G%A;q$72GU z`IG*imsgzxp9IA8Dx>`i{53JLDH2#b4sSurUgQm>MWkD%%2HCGhc4|CxDIA6?YW-! zx35^!>aR%1FGw!bL_{VhMDh0iforPl6|`p?Vdj!P`s_5lCfdU-!Bw+)Yi@-jzqx94 zkpE^s`|>rdehRl6cSG-M4%TO6*YTTouM1iozdm7yefD~V%GO@rw6j%%G&5w7s$5>? zKRfhwoBL*GhppS4b|tJl=%ny3+Z(k{Q&E{+gizT;V)-w!x{5eqP*!fCvL)Ned;3fB z8pCTLh1S{h+*J7RXQS=Qo}Eonx4-YOR}$=U7@pj(mB`!&$uaf8Ged5ZJm9Ks(<#$G zT{w+jHh1G1%Bc5hk(o9{yF^PSeD(DDSKO7`ZI_X}MEWYRF}A?xHb;}YoLTX{ct0#m z=TjVJDS?iQ!)kQJ#g@W-;XY$LWMx*vh86qhLc=7?ti{-|Pv&16e{8tr?b|hb2z1Gc zOLR41#Sl6)C+MUmLU+ZASwxogH2&SGXAdSFa0&@chzsLJ**a1FBlZ01F;5_Hke168 zfixncu;NwutBO|&eQh>?ix4H4#wNtYC#0qTeZl2!bIIAJnKH|7=R7_(F*zwEHhNp! z*63{tI?4sU^(Az+hW48CkSMM+k>2;4&-m}I1ut$^Qj$6)ak!n0+PffV|Mj!Ko-g8Z z8}pkp4=d6D>PS~-1*RlXJLFNA0BEorb-f0y!D2u$y8x#n^N1bPV*)@U3u-+n(d8p%y#PhMACwSAZR|{+2JS-fP&aY0uiSo;N0T z4Pp0z6nC*tE|(Rx8`Poj;>%XApeDTPL2?FDO+LE_halXEIU=o)AgKGx_f5auOSiAO+IcZ*!Mc*dEz*EFMJ>QAwl{;&3w9*^(qglO*oj)kke4HKO-X}JtG5(>%%Qv8`tDI zdpNkoudHxA+Cr&m^N^0D0F7rDC39?5jiENFr-$>;d$vMqj=n|#7n?AuI=M0*QbMqax& zuPSu#wA|tmv%G#AiK166s;X)W4{G++#DybU%a@L5@jBvq(8ZDrqciq;6l_m*w*2c{ zLuqww&SA?|vOBjm^K|kl*o%t5&UwVe6yzjiNKb%G7O`3Qr$;_UYeWr?ICptuS#@Jg z1IB3n;y8=H=td?si'NS^o{z1ZKlHsAybrl=JE7AP369ntV%vB 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 CDx5C> literal 0 HcmV?d00001 diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Bold-webfont.eot b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Bold-webfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..5d20d916338a5890a033952e2e07ba7380f5a7d3 GIT binary patch literal 19544 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 literal 0 HcmV?d00001 diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Bold-webfont.svg b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Bold-webfont.svg new file mode 100644 index 00000000..3ed7be4b --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Bold-webfont.svg @@ -0,0 +1,1830 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Bold-webfont.ttf b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Bold-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..2109c958e3c5ca5a4e1956f4151cc2438e058c24 GIT binary patch literal 38452 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 SV?pJ~DI;TC+H$IEJMdqm6<1;a literal 0 HcmV?d00001 diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Bold-webfont.woff b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Bold-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..1205787b0ed50db71ebd4f8a7f85d106721ff258 GIT binary patch literal 22432 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 ig3W + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-BoldItalic-webfont.ttf b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-BoldItalic-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..242d6b25c3acd6ac90b5801d6295e68e64f7527b GIT binary patch literal 39076 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 literal 0 HcmV?d00001 diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-BoldItalic-webfont.woff b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-BoldItalic-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..ed760c0628b6a0026041f5b8bba466a0471fd2e0 GIT binary patch literal 23048 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-ExtraBold-webfont.ttf b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-ExtraBold-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..6b9118ee358ce13ada8e15dd79b48f145358d9d0 GIT binary patch literal 42024 zcmd?Sd0Ry#_af`vB4D;HPhx_vHL;B_$WM0oKQZ#f+yk)SplDXGiqq-H0?f%!0-*xreB@3=^d-z6t$9wJZYnCow@$*|gdylb)e}eMtnrjza z^Hq6j2V;-mJNwD%1@jiRJU{bE#vXOyyAg??$9^?>*GambnEL5mbbb51xDoPAIKB{M zFnE0D>@y_lse(i$t*nO4V_JE|)EX8)f6cXvS^AaNE?C5dES|gKYBomZW!>E}FO~bD zd%kGFwO2E9pmu6YZ^_KK`C3_96MK`r$$!Fk@UM~1DYeROq(3NsQg*A6O09Y$(n0Ol zTBp{j>^6L6{44*7DcY22szPeU-6|ydo@sj7RAnAv9${K#9)bGK^?p#>ZY2Fvi`siW zs8@arpQ$&>dZ?~oeN<=QV{S5KqGlxJ4~Eas)30T(ccAAxSON2PFJr|li1hbTx)Qhh3jmjTBMs%&qkylA#Fms1!*(VL#S^T z@;-t(A4U2((r%>3koF+`0`DG2dID)L(l3z?B0Y_C2n=P2G09M_^;1jcJaN(DYpPcGHsY2^76QUajT z2&gn(&|)!44@aL$a2~Wq{oo< zApHXG9!GitX)n?*kq#m~jdTd`N0qI4gm(VAI<7;@=j=uc?DL8u} zfJ{5)yB+W(?CJm;N1ItJ*Qwm_g)jL+-W!cI?BPcVH!SU=?&=6?6c8 z?SNl9;MWfLwF7<~fL{mT*8%vo1AZNVUpwH}0r+(Qe$?tdw7L(i?nA5l(CR+4x(~S0 z0gUay3hKZL>c9%>zzXWX3hDq=X$P#@0jqYvsvWRu2dvrwt9HPu9k6N#tl9yqcEG9~ zuxbaa+5xL}z^WavY6q;^0jmzcsspg<0IWIyrw+iW9V2eTh}+oc0qbGY1z28=Top(Y zkR~EcM(JL9*%qLeZ2@|@PtwcFk>_S$&qkylA#Fms1!*(V_hU#KM%{){w_((67jmx8nkMSee_p?D zE(m5Cs6Yp(KnGT82UaTXd!AglJ~|{$26Lh;R-P5W5W? zNrXj&1^>-#)66EL?kdz>bx~aHTl4=0eo>3>qpc5+EIlm;DLv6xdP`KBauDSvNVWr# zD2Ma`lEP9@(jcXr5YXueW`juOMOh=uWBHh^A#5lM2PYqcH|3yqacm-+#1h#Qe3IF8 zd{S5?t7a}X3m-4L44*Vs$3U~$9DD|`o7r}j&F;jfnBC3pW5Zb+dl=Zii#>)KA7{U0 zli2}$rn7_W5Ssyx`waT~96r_TCH4xWFVJe#dJLah*3SNj+W&;l6#)s#%IaB5Kl#in z<+D5~pADB170F~IJ>%biyGW)?n=#eJBCBRh!`~k1jW53H%DMfdG%C&Ugaa~k)iBdh zEFL5OCtx-SJ@1g$sq7zs>kRfO{!T?sj(4iorn&%U&Cq5jL^Ub;RegsoR8+H~gjkHK zSyL44EK~mFW3C3Y1?iZvf^pSlXd&#pW?U#1LfjV0O)kbCqIcR7!y#N;Xq5zEJtd+& z`qzmkbVr)OSzL!Ap9YzRfzRE@x_JSw=GQ65mG_lDx~wjTE8dmtN_C~X@?9fb<*qAS zD_ncssb|@FO~Q*xx!A)fRn=39xguS$uEap8l76K)$-~{>bbr|WYWE%8%etot*7eV> zjNy#ZLcdEymmY$KBH7GkLH!pv1!H~kC zMZ=1Rmy8%WYV??~zHy~x(6S~>oHTjL)M?XaRL-obu9-Favf8@(hQ`b1T+uX_-LiSh zw!7}z`N*zEcmMpcUp(>n-d{es&%ghvrw<-_=J1i{UwDyS+q~eaGuQp>nnizK)yi&d zW6K%4a<%N_;v3kW=Qhm0n!YSqcXr;*o9;dOTKgaV_`#|7pJlHc`|HPl`S8*qPHW|#lvO23v~@7KmR)Ve+HgsrtMe`RH@+wZGO zaQTPR-SE0Pmp^3u+-83!eGM7!@(-q)!Ib0W%39Y#*Ve6bU4Cn2Z4;ij=$)1BhSA-y zri7-ty1E2E%dV^Q_*rG`g1Wj~zmnrZJzCmabiq(oS?f1=O8rJpX@c8b=jTniel^E~ z{EFwH4LvA8bh5IXnQ z*K+)(vg`vul(MGMT)zQdJ*6I(pLt5>`fr+t#{Al#T)#2LMLkl+&-e53^P0+KCrtW7 zmhIVZ*3z0>-T z{b36{*X8;{bEeF!ol>noOmO45T|N)X+0R1DX4UQw4J||SrG9I6ou8HYm9*0R7W!kw zA3u)<5Y)8F+Wj1m!BmuP1zgdrWsuv0V!`_a{XG>?(&XDZ3}XU1KcNZm>jl|S{v0PlttZ7Q#wPw>Iq$Gi3XhWGAFz@Da!uo}KHD z%-PTBYRlQL&^0P&ze-no&VG%q4nUQz&Yb;5x<=>hH_fUX*n2j zSd*&^0BxcPn2W35JII~uPtWnEW&6{Bc^N>m3BZjY>Uri4_qevssvYoa*qY~Yxkhb8T?M_bU3q#PevJsl_-vQIiPn*CX6;jo zOLZkYrKGFzb)~ej&7cry4=s8sfY@cgQmi7Dt&=IGtf|@KSIg!$WAQ3wa}#jiREL#- zY;(~t$f2iV?(hT;>Zw5QaglYQ3cV_{0D^!ofJwIBfH^f#S(KZLENQZK`~~q#@VM)G zYsBmgq4BuTh9NyL9?vKYvrsPEtUnr+C)47qX^y%u z+8-$)LiiE{pdYy40jlN!bM-!s!fFIH>p`sG5PukRCj58ELeQbLI?6LV!QE%#+;xGT zjHV$6K{tj*=_dG6M*_X=8Q541%&D)K1B@1jJ(EJ^Kqa9++p|UB2Q_KKOdJe zg3Wk9&s7039)w0Y2m@A38GtuF=KyTHxT(Mmr<(~m2e^DP5jXP5B+4@yuO?F-x|u?G z=w>SAp_^%xrvx|CDG%MupgeR_NqOjICgmB4n<~mfH`SDfZfYnG-OQpqV{kK@^3cs? zl!tC=DG%M$QJxXFsi!=2(?EIXrjhc{&E+}%Aw6K8Ltp&E@c0UOSB$$Ri8XjU9AD<< z_zQb-&!aCg_k4Lrxtrx3WnGZtAKH_3A$^fquatL`wME`h)~j;-MLk(t>5I&|NZwJ_ z#qy4_F3HLEn-}<1Z{>AFzH^E4LUVu=9RVSw93pMAVHPBM6UzhZ%^!8Zq$U1y$bO^Y zkE0H#3U1kcl^z@D@d1-DsdLl;PR|Q%Zd;n$<}O!U!prXyErwa=o+#JeM*Rw`CLb#b zNJm&6z;7&@yZTsMSnWoocz)V~f=6+1#zV`Osm7L!zAyqbD_;pA?4*xnI;Q zzH;GJOXkhLM$yy*=RR*(u%MxS!2;C1M%}GGBkMLXkI$t*2In&ks-~iTR<1#r(oCAk zXh7qt%@~=@RkVN){~$|zmZgrRzlK9ypDU4+2p$UbN@mDFoe9u6D|}_4R>d3<8K#<; z*;F5HRG2|kApi5a5N@%AmT6p3!W6(RB{?Y(WfJ1!Vq?&KyRGM6Y&JI)I?=4%L#fDJ z?6JA+Zncn-%}`kE(V~*S5`UU3zMiyag7{|QpLtZuXFO#h51qUleV0 zA=dECGVS3S-z3&j5}kYYP`@j?w`eWKC}_bs?6l9B<4{y3j%#W>`m1Fr=(1Kig=A%4 zBI)9WD*zOYt6C$eH3rTaFdyMcdBPNb81j&nf%5cuSH?6=PFSc$xtz$Agj|M2-;*gH znP6b0Oc!s>m&(x3)(f)m8Nd7G=h(~-<$l0n9dCa1^FzdQZb3LbgotQjSnmaTta!tZ`}^7S`Yzq6-u zT>gqH-#PT&uTCy0x7PBhBWGj{cIS=A%3pcM;-5bky=8OAW#Yp*8R_oqBG2R(?%DI( zxL1t1=wn*<=cc8Gw;)BvV6HP*A@fi1$6}0`FpiiMi>Z-N$jFoi^j@vD8WdG^lrf`G zt2T2@3zL9LLH?Y9`K{bwz>=U+SP}!u_y+%Ac2rL7n5&uD>@=6x)%l#Uu|o#u3`+O9 zl4BEM6YO5EH#NkO%^lGab_6VgTx9?tR$Ll)bNeOU@v8Ln^fUlIjUPLHc<+hV_CNV+ z#-1*f8 z9yw7ph-ae#chvkNM(leqd~6vb}S(QeTigqZDF5b2@>;8--04N0dE=GqAISv%;st0b355KnNTH@UfZ56v_cBkV1T& zCTm7>e0<$g(RRg_ZI6tik=r7pV%+HppZw#kyyC`Ne{_>LvgLOEh*AM#z;A#4q(~QE zit{4-z)t=v?J;V%813%p(=KZ7X_tDB@8~?WOB8%spf8*S+vSmp$vrH}7O7;oqocU8 zdI9{Yi^?hqb>E>!$Lz8 zZlI>E7BiTFk&T_=Cju3UHrXPAU^orlN;t<`G5EQ4J_|14EZi<3nr1iH4Iw}@$s!ZI*xl5@FrA)MkcZkwb9z^ zpdV>O__#rt23DnUqQ7;(UBgUfPz>WG>mXXk!Bm4Eeni~HSMV^tLfj_4Ql|1yzEs>H zz83fDb(e?_LF2Q*y}@N^2mmCFiDng$L?#n6$#KL;U>5T)!{^QrpCpY8;n^`_3RM$8FgrSytrYPse7JZ6%AJf!QYF_R{b9y4ju80D0>LEOvNU`lS`i^V3f<-6xz z{_?A%M+n+AfYLs!Pb-V}#h6VRtfagYDL9(gNWdhE+lCe!BX|bHo_%7eF|By_+x%PJ ztQxnk%q`f`$$yGY(yk`c=3yL3EY~*(OIAq;Q&bL7M^&jxr5bnx!l$Zo`2sd^>6s)< zp?W?B+>t1gDPxRMIE2_@xMFg;wRz`H^94VhlQy|*{Pwz2%i5k^_Tw{av+M8qO3A`V zuX=c8O%QWqHldE}wnp_6Od#QeP?n(?;|qgN^l#O68gXfQL{3K`snE3B~*v zN-=>7SHS@_%}@=Ri@ssv0yNg^ai^ta5@r*F)@%;VoeF-Q%me&9o7)Oqvd<=U3?6D) z!R`n7)#3&5=T#?GHoabR^Xf5Mm)1A(+`1{Z?Ra#>R}X&36>ZI}M{|sM;&;FLG&Pq` zEXbcUebhKN&uSYnd=58PmXnD=VIIKo4ml@wR^%IE1Yg0Nkg#abT1-X-tOgfF>gJWlU$unRzkak`eEzlQ5`R>Z$IjSV zKC4P;U}y&W_i^nJ3qqn;0Jkxsb;gX?8S{Kxx5g9+#Jph2#gX6tIBa8R6Vc zvMS^Sd{Y`f=6ub@U7N(;x`Ys)UH_96i@33*cDjGs{JLp-3oBMm7+PU?>$xXZJUOoM zaO=_Ezw_GqrzTB*YSEtO&mSK%WkbOgBlE9N{ys8)c4=05_TUjT4uutA97_zx;C18; z%%e(>p?Nf_Mn!D_I8<&_8|3U&WA^&3)c818a-28b>-9u=QZbK2BU2%HW1$v%NGeJ% z8p;Y?ERDty5Gl1K;>Y5uTPkMH{@vfKp&3)Ju6ptJ-1!AaXL{GEaWg9>j%%t@<3zQ% z$;wM2pL}7WFIAlRiaW#unR8mI=FTatyGif6{gPnA0wnitg9FI+(5BL06s8)=9mM0^T7Au~IT z7lBM0w2_@*>Q`NND~k{CSN8IAqFsE{iT+LG3$?M@NMNOjT{FcW0IBEQc4uNaH5uh*eB1*-1vW&KDlERDSssXuEhq2wOBZ@4x{sI5ip!QV+v8tX8SdMOe#yV@3>5^Wu{R!WaUZfFqn^5oLIcaw!qBg9>YMNJhv! zshZ++F!vB|vD4^=Y%(;;>mH&->C(wqPSn(RdhXtnzfXe(UK#=V zkU})tY*Gwp9;6M6Nij5#I7A``*r=vSih*v##>S?^CZ~Gb*)9_pliMYUv{O>)EUt?n z**p$6B!TSYf)C>E8?U_edhwnRU9aEggleiL8xA+LS*N^v56C~%nIv>I?S!>@v5;DAU0s082xanbE{2V`JKjBXc$E=y9_ zkYR?^Vu`p*WWb-ZiLVz6AKJCN_TV1noVZi0FdP#1iJd22?R@(kq6KINP(K8Eo#{)% z{AduXNS_H>`V5AkaN48VP-9@iNH({obUvUqqoqS)GCzg7kN!;@6>zo<)U68CZDFat z6snu`uUo1IRBfceK|-&r(dJe>Vy)UF(x^_VQG6nf%K9)rh9=BUJR9LF4g=u~#~j5% zmIbbASk;7D%s^sbP_zzU5OkR+QWye?nda7223oeX93>YlE^;fMD62)c_?6fvZs&LN z#aq8=Shw?qU%v3f&uS-&^J;BpM=igVFXHp~)}fi=&FO!B=k0deM`%`uqhX_jqYJh* z4No*)M`A~48E}a7paJmHM{C$9mWv{>96RxE@$E`Y*IwxSe^HWybt>7YQ)RlXfU1(K z5^n(P&e2HOZRe}35FC{@Pw2XK(0O7FNbuEXRBoKxbb2m4v7p3CN zN`gdk11HmQp^{%AVgQa!BX8m_cP*3Slla<*`VDebNHT#zR`p7XuvqGnqO5x--$vj# zzeT*#Q{I$<@(z~c%OcrbnMsCVxvuz3v&jIMf#4vsgE<^DXLg$;fJZn0dAmA?{H_E#j1xB)+<*YZIFNQVTyfS=lh;`p?ey;)yXF?MFyE z0;mc|ZVP5aN&>ye0wc8DM(7Ia=7|opoL*#e8^gQKb$x2Fqg73D7{hs!X8h`=F1Y%1 znm@Qjxrg{4t&?vJZ(~h612UMTqf+$kRp&0$pNVu4{d5_=6+6TuVvo3kFX4^+a^BJz z#WQx?ao3%qUHL%VE^gvC^JRFqLEH?vvG&*RpMFQDS=v#Ijr^YU6%X73Z`Cxp9sy$s zTTiOnmWmb6!6l_$=F)-`Tstbxh;NsQm7rWs9^JKYV%=4bE>u7IMtma@42QlH^P6k$ z#@t|x;!$G?#uy1|knhXE!cd_JN+B6oxG31B6i9mHPLJ1Nr-ma9z_^T}44n+P81Fms z*Z2bA5Q6hdjz8j;VgVnIrFao2P~V7l>$D(>4e{lh!6d=pG?*=65UmRuGkXXF398|t zn5__pn>ef_gf5%Igifl&(XzRc1(2LkYQE!-3!iwidGg7(rYnxF4v@!6v8`*P;^0|_ zVNK%j2JX=6K_k=2=8ymynFt=Hnt*32^!pydh@}|N>peMX9x|jjj2a0wy$ZcF&_i_T zp^-4oYxP@2=aY9HU$pG&g|$`gNjq=9eLPR+{KJklZ{IVmqVCuWckv^)zPmE3kT;DO zH+pb#Zr+4(*Y8~X=3lN7C+7^y%r38=rPK04@ExKPCbF|&&2eR>PMm_YGGGXiJVEt{ zmEwM_Mm(S`=Vjsrj1ykDhBYW}W1zRNV@L}POvtd`ka-AyZOrDedkh3mX&#Eh!qwFs zn_-Q3Ui=!e!ApGmie+nP@%%*mSsa71ngZ2-_x-nR+o{%~4$ue8CCDpghwMQB8!sh# z9>itvE)^}f>0^(EQdq3M%byc&kuN;_$m?T_ra_TJoI%DC{yn$iw+LI|kb9W90Cgr( z-(w>TWOgYfTTCyFjES+u>Rb`x15DYfUjMMDVmsQ2iW!!`-Nq9l_cm*`)$H}$Byz*35OlopsDv02EW}vVUHq#AQr~hX*Q{JSw#qO>% zy*AT)^xxB`{}@2PP9KHw0p_!MKtw8KEQX8`KozB~({_P6lXCU;Kc>)z4Now<{6mNM z*CLdM*BeHP?@pM~XimF7=ih464WvT=hYfOF0D&>Fi||_C&X6htY&I(KOdi4``7@96 zPT022+;9W`Rz2Q1LK!DM5Py;Nb&5@z*1Z;eh=Cf671nnz0lNp#AKgW6O*{XcW)_>i zr83;Col=h&-N1#SLy$BGs{-2sm_5BG;UwZn186Ir@xZo#g;^Z5Es*ZbC~`-qaHsOj zc=6R7zHjKgBehdGFHCk;JW`s3Hn8skdb&p2z+#!3ZS+~AK+A0~`;kONJ6@S^o`hP- zTaXp}$3*Ij)PG~jEZk`1)mTk%%^;BHAS-q*3>V32h7~R>PypjXc5DL1$6;$aDb5}5 zM&q%bRBx)y>cGC1M{1u?rpH2~?op*}e8{lTP;Q+LwRMVl#-les{7mP+Uf6oWOUsV) zy!Zdrb#lUj`d4<$oA~m+r}u{#BX6tW%ECXq+7$mDdoE6lb$@Vt z7?shav_RmZO^-S-)^OQVhJ8`Q^pz3qrt#^J&mkxT^Q#xj4*+5Bt_LOqvJ=pPHKQp) z%AV}7b;QR+bC#SK?T&HVqawnwFGP~6lRK?sxuabs+Vjisn22pSOod~(nrci6Yz#!I zBcDBW`smns(+Xq9h?9JCczDS@gR7=aojrcCwn4lpK7+pfdcxr0OKB@;Y+LPg@%FXX z7jIj$eG9h{okY}#mIPdIGU$gyBJ37m0x62%tw4U-$b_Mb6f{y7!G<_kdsv9xMd*hH zUEq*9A?Y2Fg+rh!D%-@T;?H~-Pd>J9`Go7nUD0x4@6LN2JO>JGJRde&oJmQ$d$ahw zS)6E=I7$83iFtzj#J-v0j{qL#V0KJgF=3wI?QCd5C&J5^$rR|54pz+!TMl}Kxgy-n z?OO((7BCNge<9j&E9g^5Gs6Bppb#ca$7FpLskMug>FF3sOQZRKGH@I4#Ya0iOGjy2fi8mtFbG1&yygH2!ikuT<(BJeNoF6kaI4 zIlu3U#TohH<9x5W?Xt_O=22fcY~4)VU`%1rtlk$94#$xQm{PE?utgFehzYco$UPxk zYNNDSX^04j;|abvP+ijd8%VP0_pa`+-J1q}M%z9ls(Xq6VcH3ZF%g`Tc%eG-3$bR$ z&ckm`-_}?&aeQvp7wW{$XVi%=H`&j=7MtAVC>{f4R%H(1&<+BgnXt-@VZYEZ&<+|7 zx@|J2SU^7GIBZblFF=%iz|(-gKo##ASN{WXT{p=89g!*817W0F$DODF&KvwPnf89i@s(ahl) zyH`K^t8n9aw=(5YiT|Hq!^2U1z~KY-a98|LQYjQO&?}Qiv5^-WQSOV z-L&4Pbx(VACo?h;1#QKiR3%dSQ!SmhWJ&WoC$SL}Upu>Y_FkrR-zOYO650!cjd708 zN=A1QIf-ZMUQL0;fVLGyE(2DB4Hn%VA{T>##c;v9I$tDbG0vz+s|6H2jE7;n$WAH~ z_E3lhIgG*01y5@0;B{%f;j8)P(}(o_2}gvL7eqa-tv+A;{ClS5dS5xiycsGmZ;@=4 zFT?<2fCc)R7VK(_T(SU8L>b;`yo!VvIe&P=RGPm5Z(zT{!$=lsvq#yDz~5oe7$C8$ zx~;`wQj`fp1V1QN^Ic-xck6N860NLTHkSKDa@R_}W3G71=;(Uj!5yduv<3ZBFr#QK zLx&!@n@GHZB`3j0-+~6hx~HU^Mzf@Z)7+p~unyBYtbGrAZi?RyCX$SeD_GzSO+;|u zV1+GQtWc{38~t*0I(0}1=86le(jWK;{^nr3{Ac~N_D9Va0 zymVgTJz)3fttZu%3Ofw6NLc-`1SD(0MEBgdV<2I`#4G<|K^VRrTV7uyt{YX>SOWlL z6vX5{vE-ZiDTAN5^2EzZ%kt%IkHT9K*GHcdk=l~mrdQolG2_?2)z^uHwRQ?{avZ6MjHwr`wLe`!Ytivcl&jH?jkt}3%rSfNQeCNw@2$hxZ9}li`;+e0Y|Dh0A`}l2u_KPeo>!yn^pTUYAz#)c_V8|$YlB@mQO@G(3B5@+F$ z#lQF8`O}}?dB@#%foN<7e|Z~i+nI~4(qWSpG{chgqgInK7K`0v3P>i@E6FG*=u?_& zvDhM{Y%9GV(CvYFA(S{F?j^=MTuxU6NuO{>f{Tcq+jXHNBVenGq3v=KN5KnBJ)5j* z{_I=JqM`uEF~w0!UOw{sGvdYB z%^U8y69g2~%VuMYJ2A#6mdw-p$$d>E_DKRv!2I5ZNKRBuYCwn$2&8hx`bn{*c1RaNjEMY8een()eUcDoPj)2RA_J3R zU{O3u&I!4^(Go2N?}FEk6ca~FuRmCWc*l!>_~50tTg*wkN~{SDZOW;eSv6-@6=Xx~ zh~n?VxBcfa{$A>j9^v^{Z_MAZL40ucO_&S0R@KKb7dEzCV%yUyXg4oSz*WT+@(TIl z#_6clL{zdGQX?r$Ks&e{2W0U00Pc|qcwi2A^1>Y&wnLJ!bv6Yg?yUkt2Se)7g0SN& z{TEWWzNtaXnkbW6SeO^>89eKz6+k@CXnVnv+6J>GZVz2~b=SMvlBesJ(s)+G9`Pl{ z<0ZRcETr8y6YPc%YB_Y90Ix>hsh1c(7IIovnq0`z5mh%ELiom}U{FBJL*8Cp_`M4PT$R=2&a%^nJxmWe=}jSn1Ux)J^vfNdF;dmv-#%j z)2mM%SN_s<&(dojdVzm_{w_=#V2OX)hv6DE>Z4q`;kJ+S$7sp`xD< z1s|-P`r&x~l-@tsf*=4a(QTcGs>bdomMbO@f)qMQOB1$E8w_|5n$Q9K4dHISTI}XW z_WJn?;z7Pll)v<%C{s$6Z1E}|)Ae50i@a9f-{#!{H2Tk|KbqE2BwX?$u!0rXCuyN; z0Z5ZJR)aaVspTGz-A;yH#23(zX{3apQmDkh75>1>;Rdrg@)*Be_-3Dfb9z-#`OxVj z+yMQm!inRDDz}}V^0yalyf8F#66_DG0O)iY?O(z^3NrFN_EGh8=WPC-s8H94vAq3^ zGM{IE*`@0jqs1Pz2=+=3?VCl}6nNv7V*UtoVeC?>t%(YCtXeEOGIE@%_|&&;`*)S~z&E~8lq$DN`P4VXAC1)(LikIB%GP6) z>Jd_*paI5M0Sf%r}y&jM4EO#qgJ6%q19eDvcS;9KOD!{=-R!LN1_C@XG*A zsb4u%j5%2!Gk88sPMAd-yj^Igun0uaMj;QjA<6LVz?xM{mfkY&kFPDRy5^?!%Q8mS zzxKy@H!tVA>MOsy?KU4rjKomxSiH&+8ntE_kI2Y&syt@w)@@=Y%(dv(L?v7st?mE~ z8s#ei(gI^trj){w(+8SO9y_XnAPm@`p!Sd+LyE7WPTeD za#?^blgR(ONST${!M63Dj#z9R<|SdNI6M* z9#}3fk%^?5AF7C)nSY=nkayV`G(_Z%0!V^3EnPl2Clw zCZ6LZ`6H(epU0i6+W!KWuqJj6c2hs*G=u!dLPIQYF9PX}kBgyAZcyD)E6A`fHcH`y zy@7=#C5;HR+?$z`4ti`KTAWcF100Gejv4(I5_Htvk53rnX`B zb?9g3D@ReBoRr)}o}xlZ+^y8U0(ySW(J#OJQr!LRx8J@fcJiO7FY@oYhQGV=o%h~* zXXU%f8-!1N=$nZ(=oHRLU7;?5%#jPB&PX6ol5ryn@WWcC-5xy;8GGdN1YG+%9#XFH zb^W%hNMh6ppiTrkpA|D&MG%u7$rn{-$4;)d!c@AuWL`{b=(-96*i(PE4q$O$p5PzP-o=~b+nj1iKN*l~vkGw6X-x)`5;A?ePo_C9{5X?^a` zG)|v!`Qm99Ce1baK<8oDKy>Qm<0%h(d&)H>zl; z;)VHBQCH7wxU6C8bvNGmyHEb|o81pIwszj|2A}ihF<$?h6XLPAPl{bfAAN{NKDd)d z?z~_8>*1Z^Uk|EpUBBw4Ys)|OefQ^6-%fvf_~%sORk7qVd6L&3-zoli|AXAN z^Fbc@(1YS%n6Coml=6Y$b$Ek#*;7;egJ>z(ftOJ*{-wgOjEORkae2T)*n~(|Bf$Z2 zlO|9h1CA03a4}F!+QP#m#~4Xrqe_Wm7!4dg^cUnNG>0(?)+HFXpwI>Lk;K_sC(s^x z8)IHiN)mb-pXTv;%&^nJmr`evw5^v89)ZXYAU(`4I&q`TJ!NF>;AK@y*0sG@TUc1K zplIsiI~um_6qVl8A){)Vl#kX=9lL(%imNS}G0T%2x4SUu-mPNnXD;uwkT9(b%svMWyg z<}*Hr!(NFv=0NOHqzC6~;@)nA4U+}x3QB9l;-ue=#I8ocUukSwU&OcfZ|u{%bAN z=%D>}g^g7{QxT>`5}%a$`g3ZCz&Ip{e2MHN@I%x^%o1=qj~Dmh&SU58oj-r?ytz*- zz~9fN4I4IX%JAV+w0b;P@c6vBd*;vEGjGVW=>++`YOxG4aD5R z=B2>f(`Yo!G;@93%_WN#qiOx#s6F$XV?@uutU9!1i*okDr^bxQ$TZsoJC zIqfy$#?5T_apjXMetds?@tk{kgEIN#do}f`BWia~8gt_{c~zHPaU;naW0ex+OZcs) zu`#}p(0C0lh;ZZ=)HgKaJ2)m6{-_JsDGgQ8y7)he8W9k;ZYDO$-JbcwJ!o zfO0{~X}MH3pJzZ0X#Z53WTbL45tV^hTWn4;kEfb|P(AjRpb;hm1R6Mot+pALSMx36 zbWvpLveMz@iJ`EzZB~rSuibr!tS|S~)?{Ya-yvQ$>N?y)(W&i%-WtIwpN6C^y^TnI zizS^6Tv}QRt^%NCZ=}4D)c+N>wX_+)10t^);(QOmK}6RxJU04BE)CnKTif;0gD(x6 z@P}WucPMK_r?K!qZ>xn-=gy-YMZ$SDwzj`h?;=^phbwM6 zWbdQ8gHBH>c!UgY&nVLIHlw%@(O7)@jvH>BR_z;FRXXu4OVi}eB^#68PRMr`Mr=#U zScHz2V9mBbR+oNy7BlP;04a?^Mv@`4Qg2&*N`Vdpk?dsQg}$}zLW<*>r!<&udi+^_c6#PNBR1t-4DI=!p|Rk zO_U5CI)8q%R=MxQ+mG)*{_9^{Hf!%bs(&i@aMnORY~gA6Pn=j@vcx*^AsFvJVKms- z^)kNw4NUoSIE8Ff3Pj3XaLsMFM-Q8cq24^%JicAGBWsw=|Z|cWghjIO@ z3V%GCk*$56u^GOpu9QSoHAP?x-UQaDmg39YkH4#_+;DikhuptYeX*}-R;}WAlaBY^9Y{(1{lugqOCup42 za-3Q|+Dm6E9n5CJXg2~JXLVwbIFwsM3c1A^6RnsnE^bm&A`~OGBjA<`sgPcWUFvnf z_n-*=1Rz(&hVVXcvRXr`Bf^xB5Xci|v!xp1g*378nHZnGQ(JP8auGZ%43MSL?9yfH zeD0Ex(9n`mC8I`;C@w0<&(6wB_qdZ2djKB^z$+|G?9{B<21t|X}-0swgx1AfFg6r&*wo8StpZAL>Yw(k^UD^B6S zY7WLHVVg*T*JiUoCAY=f;4Nf{v_wMKGuv!Y)+EA@i?_219ACB*6ZQXSJIC2Zv@_K= zDJjOT8jOJf!3D6@N+C})uD&B8M;Jnwz=)D<$qD_(6w+r*>j%K@4c3OXs(qEz3QkGj zW+)$KC@B_G7}~NJ8WH5x2Yexc#-b$nuqEqCNvJ`AKpU^)#MgB^;b}Ah z+v^m6I#@|2#p;=jrk-}{u<~FEf$xv*LLO`pasW=B^bNxCKZ;^*y0F;AN@Sr#HkAMo zqBz?DEnTb#sfGVdBmY(Xa)&eS`+%o(LpnF*gZD*X_j{?X_+&s4Gnxz#Hq2m-W?n~5 zP|{QcvV(1HoH`QlxXEP}D8ZJdfdwF0TqHl#9c-!v{zXFFA#V@WEzN~e)W)61l;7DV zrZkHRWrcPu7#nte4j%=Nb3_FOgT#2O5-#Vy1#%wZ?r82?80bN|qzBh4#XyQ$-z<34 zsnHg6*a~)$m7aoqR74^ea9#maY_N?MP;uSlAr*F|2Ew5f-z2TWF0sNhGYG>SQRIt> zW@F9qL?7B9>nWf^q;ujPEobVKsQXS}_Bh`dCk`($LX0q)i2j(ksTC6Ar6c6R!os4% zAP>ra7PnkGhy~G-18v~Gr;Sx?p5BHXYQq1`HW2usr3Tu-eNP+5yT3vk<-T!o_6XHz z!axw?+6o6FxGewRNaDld9f6@(Q}s1UV^K^iCA|8MrM3HyXs6gW6a>HmFkx+eFPuDX z#HQ;|vU*T8$qu(cDDw5;3GkLCo*;gNnh`@2X2vD}27tfV?gdjL*QZcySxTCTLxi{? z+z@UBmcuk)B+~%q_W__qWdJU?2VC@8S9Ra5*BXLg`v0a@^z&z^Gv|VS9v5Ax5xmzH z0?q_Qg{-TswB5<1lN|zT`}8!*0N>?6Url;nyHB8A4%kYWt*580*ov-VgM1m-I;LTh zV;qe;AdYcP)HEW@0;?0oE$f0jfGuSiI~t1JSnOOu3P67Bxsvm?G5*H==a?`aUtG@4nj;RjL$npHikrmLf9n<$t{c_yb3b z;imO{@CCb*nAJC+FG>y!gAB3s797Y1)U*I?tmaVc3|Nhg5Z?!c#6{Wq^C=l3XA5)b zb1h@u^m&mqWQdMGY!g}nW~Rg|23Uo#c(qn+v2z3P|01W##Kgq7Vq8uyY;q=a|tRT$@+Q?z(wL~pEg?A zL9`(wE1}rKWl_d+>nc+j$a2tm1V(aH2E!*P3(myiRxMO}0J@g(DOk8OvGrbT;W6l^ z1xM^`6yF}g4yXNy_>6}?BmODAJgB_OLthZz@Q}mslluHwoNMsa^Po5_-FF$jHHLx< zCScEYq;GhXEdm2eNsftzA(~=4v4Bb=IrqU$Wb8%9oIWTs=$@wUEK%&3zT?D)W^hQy z!_piv2;vXKNbbM6=9QXvDN6FCZBt*YIx3o?#HwLqciho+Ac@~qUKWg(%>L23b+6(l zb`UaIyz1I@FNk&PW_R5k@$2{RuTj<~Vy*0;c(wqog6kzH!0-SDN9q`Xb7y)mm_Tc2 z#gQ%pqTcLqowg_16JujI+@CyluUX2Bm#TXe&(iCL#Qncr_i?rpb;FL866fs2Wb*U` zCQIoZLesBhC!UZr*O3?jk_5nElL)C;!$mo>? zAu}#m3)%;eLM-H)1(68`f{S+L!a4w=G_PDf#lwaU$Y@s|r>HFO}X==5Q8HB2;QwCDj)m;_L0e*i%Q=ntTam&N&pASHSYL8uH17DYoS z1$x#4mfl7$EJ&1u=txO%A>yDi(guK_FRq*%F#gw@7<=Nv@zWUe2w4lWhFGi(5cAAh zi1{Mj82|$x_;O(QKUnl4Bl)3$U@pO-f%m2~*iO^gV0gCtOFzHT5gmmHAd2(#VAtIX zF~vl_1N7KB@G-2zbhuX%c;CrLzu_ZAqAWbEi4!|WLREK77QTCN%65xJC2$lpN@2% z9!_D2@|fIooRW*czCbWBPBADP5)4!%e`$_Wx|}kiji*w;qG7c7`;N-BZP)EO&c8T( z>((c)evz9`Y_8b7;v;VAnyB5j;?>9JyxLV<(|Y-`@e7pvUE#b&X>`0;J;n9bFL+&) zF=}fiXU%g8a>c*?y|;eZZ1M464}2Q6@spbCC-V0WR?U;^jN%=Vv<-x3vx#?CNIC6# zeiSnYyAU1B;9aJuIPS1FCKv7xHDo3lU>8aUf+KRkM#nSq zXeC;=3(43|U1pH&Vh@^RhNl_3+ZU1Mg1rV|;3Q*VLs;kfxmMr_W*@Hlf$&glWKf)R z{}@pjxSIC+boLT?ffs}oI+=E-48#lSD*D=e zBkXEJbX=BN<*RZHm5Eiri^@X*vzm^?aZq`%BdY?mGIX>z0yDt}wE>nl(urVs>wQs& zm_-9w-e4&-NPTS)h-!-7-XdDFdV8z7=gam22Dksc_PTFHd)Tic8qsHb$HiaKUd`d4 zIZkgd9tX@}co<|LYQ1+L2|ff=!emD|^i65$SOD`F0xB^?nC!?J3QZ3%1^rRZ8|D1> zX|q+fIZkgXhN8`Mw*+wczU?@5Qy$<9N4%cM*Sf=G5y+9n#tiJ~rID74 z1F#`FmC_Fs=s_)3?t|q7qmk-ZP)YNqrX+b&apndrd2Sb@b3S3bNGBiJjN)kNI2&cq z!xxF3BiQbw_zwhe5~ z{`_CuS)<)NZS^yammiumX3L?u4~i$cYFe&Y^W~3eUFb2$xzgT;d(1w3ctAPdn8&zP zk7z8Q?MOv!!XAXBnxvWNGIN+>G+L{%847_BLk|QxN>PYHU3HOjh+Ys|ng2~m@~9a0 zLnZsiM)tG|#w+{U$2{4us~0au0cjxDoI{38Bc7WWADt7E1N}}qk$53N>AX$Ouf$tP zL#lKh^B7|b52YqabBvBj9y%A1w!h%QhNCyYb99fyzUDMKBL70mrVKR;Vg@#D;^X5z z@t$ZzV3Kh&K*wI`!{?|E#53;0G%P&iO89@F7vBSm;~vIZ52w2lrTIt)hL=pCuzgWX z9O%xapy9rl*>nIn!U2wq_zZ`H2P~&O@Q^xCpE-F0+fdi*&F7#|Q#BFt=rS^$YQe)o zFFq-QkW;s`{$OUf-6q86Ryau3>iu%V0%p*v zVG6r6hNScw$}WmSu;G9Nd8t*h%93n6k?n%-9ek*y#~;q>gaL@6r?Cft4Fz~?=>Ft0 zz%FQ80TCvQ#m5E?yH=TMGeu_0qiFkh5A{9hccS`D*Hts7O{u!9V#2K8m5#?3Uw7j- z?k=mYtglt)1a8oa+1=Z;bJ_`M-}R7v7lHU#qSC$#dCZ0#6i8$cvV8FRMIeE0ZpOR^ zrUy2b^vp~zJQUN?d+oY(N48!r?Yj7Bjewn(M;+lKc;dPx6ZVunBVHFDt!t@yoLfV= z+naaoRs4`ue3Vdd?Ul=R;;d1GBWEnVs%0lmulu`rD|O={rELCS{&LveyJzQ$3iF)+ zC+1Pc4r0C0e&Z%dA8UJ7{YQtAQ>xS4bz1 zS^e_E`3Za15I`?pfT&__-vSiH)wh6t9+7M(s88w=D+(!)So=jRUXYncpfegIFghhV z1^itlYHK!H{Jo!546W zS3&?INbc=3!Ioaz0oiB<^)Db%;?gAuCGz@}&~c)-1RTWs2c{+jWNRt~|D66vaY1fE ziWrF$9{h-8U$h93yhz6h&jo9v6^yjL!B-jY&nTPMm-0O~rv{IPO6|N&#U&o)mbS z;Dgw&)IR4b;731qHa~mn%qzdVHr!+)zuTyNv&wOwoaoyjz7Vf&7}Y4o znwi+sx_bNCwMlp0ynV|p+aS;DbI>c#(;OIC>wg$q;ElQo*dH4-i%;9l;7+0Y5iF_zi;;aD@(V(YXixKvv(J zV4aRKSt{THG_VjICS3eKDnwrVbhuX#HKagKZd^lqio+7BJJU=?{Y>kg zKqp%sH&t{VO#Nwzct!jSp(>?iKTTH4;n8$ZOy#G}zqW4EhV|R0rmixFVrzFkzY<5v zSpp|us}oMY^Y-a%<+~Uh5Fllj4$}s019qk}a9)?te}pX}6#O(6(-sF=#em<+(qoM9 z*xc{2FYv?|%vcAjBmIh-2XWq-!J^f{z+p1!Qyc^D5S-dw&8fNv~SeewK|FM@55?_Ka73NtJdS(*4XqCuItS-I)>5wjTRtT+t~QJ*Y< zCxp`RZHU|q0G=W``xzVi1dF8U=EkOu2k!N`(f5H{SuXa0;d7&J z0m~l`f$WS;V7Y*UTew)b9_;;^;O0f^_EAJCIBWne^fj8iSBS-Eb!5aaJn=Ue9N(oPLtxF|bm zoPWfYU34@hNN}3=o;uoi5(f1c=0;RRk39egHv`LvbU&3%Ku@JlLmx+8Q@{p5{tW8q z`>tDa`|WF1wH+z&cnSs$@)Q`}UABG8@)cWeyEZ*9FFh?E?%Om*KiWHI%muxfuIn8* z1(oXu>qM792!MN-{4o+TWJQy^5-g+$cIo>93z0MY#9~CK6+h&qv1lGm$8x0R;owG- zM}`gI=Z=OI7lPwxxec||X~UuphFrfo9Y=emC#6~rh1{sMCwr6UJ^2{^4jKH|lW3&( zcdu|9f8U?B`oHmRGT*5lQVsxqKm1!-lhwt1Cw>d11MQ)l>A?TAoT;U!oI_p0PaEiW zaB$W;Og(z^E`HJtkO%jsU;naa;3wR$B@xj)jYpTIs7s>x=EreZ&=)i}X(-XlGUV}DFy+S!w{f_6A|TL==VJJ!MOE{;tmX| zbMFPC>m4Q8#V}6wlR!I&&eBIpl24ys54}ih^y@ECcDH`%8M|5&etC6&AViDpFY3UM zzcHfwIm zk;k#d>hFdd?B*ev0!6!xwOHn_vY zXSLN8&2dQ-!D7z7-1)qr!5I6Spy4lJ`wJiO8hDpyn`8JPfUr==p2TF*U1FNy=^=TP z6DoXs4jJ$Mv4br5ZG}HSDb*^hx;2b@w3wlJ2-y0A4absG;ie!puK@oC^AfU>qD*LB z3A>5l@30Q-2>y`x@wT>x!B|!_v7=8=j}%rOJe9-mul%X$UGM>Z-)Xg&*F85#^j5<;go-9cHg?FnGYsxNu*g)2 z@ht02!TBq!s!6WWulW;`%G$m{e-s&iBxg<05R1h!%mNC4F+zPkDiVgeFp>k#Ns_`& z+hDH?Z$Aj&B21AUIoc`5b;|w+!?c$q$9?Tm^vhbFpyiG)#~bi%90vRXGI)a=j@$G-TIf4hRNz zAm9i@#$qM!H&wy{0~-$PLQEg}^CTf1#uK4j7&3&S0~g?law^+~v9+{VeH8=uf$PWM z6wcHYP3-hTQk7W)RLVnhs|%}+7?s1z=b(^2xS-E$v!jsoCj=x$=gg24I}{94qp-a0NPz!9G4e0!O|@T1 zHCXAg^IEeq-3E8l@ZbyG0R_@iX^nuHoPBa6G`oeRnJyu2-rVfXOLlv2{QBjXF4)56 za$%4fkjHMfO(&ZTyEE5$SP@nn6%?_vr&Jr+O*Z?i>*Qq~$B%~ro7dyc&dSV4V?)(J zI{l&y{eR}SrL&jcSJQ7A(~n-$+1yL1Yw2h0PgT%QcnH-|v-T$+t4j5wo-W;1tG=5Y zB1H(PtFjltM3eDH$J>jyo`tMdSpOMJ0qQXWplt)%qQBri1AkgKHZ@9W{aEZ0=~Da- zd5YuAZT9isk;5XgoH!Nl;|PbrsljN=L2WHff_V?R9`T3zEWyj`h{E!4f12fBzb9~( zujLEm=i1b0^rQ?`RHb^T%~VbkHI~xm1UI9B{H{j%h8@cTZ#p&p=W?hCTmwYDJsP2(#6ko{K8=TvCri@%<8&nOw9H&zym9hWZU~n+km1r)bk` z+9>a!wet3!?WR)1+i4?cw~^Cv4j|{>$Yqq5P~J}~l`hJ|y?gOI(r%=9Q#fe!&z_)a zBagC@Cg8(;H^O2;%Mk4Yv>r5SKw2$A3+KT{ZlQXT&X~8;Y$cOCrWPs_Wk7pQL)-tO z)Y1){rg&%q;0DIUR4dxk!1R{Z_B@I7LM2I*FW1)ge5++U&)2>1DQUjOw-4d8I}j|AnwBR z2-ZvbZzkPCA4w0(KKUK_8zoCwsB|kIsjBK!i_}K-N%b|TD>Rz|X4O2$e2@8@R;sPi zy0up=aTd2_Q&?QsjIdo{=fe}i%fpw49|^w@VU8$`SP{`4@lK>A(jU1h@|e|ZooQWV z?XtdSbJ{9wD{N2LPTOU>&t7l8%ia~09QAC}4}&@f)8MKh@{o!ln}&QCofTaX{Yi{J zW<$)ku?L2Z8rnSc`MB7)(zy1xSK`g_-uN}~d*Xi>=EJXH*rnkW!}kpTYJ_)0=ZNzo zHzdR+6erXttZ@u;r3d(zIPN2O0pZ%W^u zel$Ipv2}Fx=pAE5joF_$HnSsZan|l^IeT{Yez(nC>R#jC?>_JGdro^tcx%18yccuE ze4mYr8#f!j72_Tr*M;A?@iWFB9e;Yl!U;zv)=&Ik;yKY>%ho&}(3h%YU`a&XZ{+4!v#zbrhVKaW^q znEzQqc9tOL|66W3aAlcc`Y`q90~5xI+st(?0dLC%HY`^yBBv90GOcuJS&n>6sY$4( z4(-ve`j=q|zM8{cJi&e4c3-J0OW-;mI4UIMw*>%3MTu6+k? zMVsp(1^nLd`^NI-hT9XJzhweLC(`r8Jumo?gSZcQ@{yvynK|g0j4^3X1N*2P;E%td za8-)lfHg{BWsh+zbiBo?mzAdz6ouYyFf=`Q2Qn7xRB^Cn9fsYL5j2t#$bqLNVrMdm zlA#}$f|ZgqN~a7Ojb0%WZO%rEJZMi2<)VH0Q~+zbLbP)njYsb~5ypQ-;7l>7R&kJ^R(&im;!-A#{RnyS$Ql7%+W%k-fX2AkMU`i{P(@97Ep10AQo zQWq#bmmY%T{0($IMz7Kv^ctO@*XavT?=AW}oup?Vffs2Ty+d!)DM-hc^e^lbE(GTn z30Z8S$H22+Le^MDTfw^(ct_5ok6Q&vzLQqdU9_Jb$4MM(XdSJ`x8N%}K<`q3_R>Lm zkN!dLOW{%kJY!g~Nnw|w;5~ORT!}_wIWSflO5L;%o*4c}N9kF5j{br#)6-HMy+AM0 zA#q62aM~h`fR~yC98=@O$#nA39bTodGGy zA5fB-14B!kPTaOtP6?Q&&#VsQ4iBW&)HXQpzoj}LyXpc`$=sy+fSly-hIv^=H+)-X zbVuV~O}CmBR#N5fjb%Xy< z*p}mCY-{N7%h~+;X9EBL0kzrN^ccIj5d4+{@oV#I55Pl<4z6zIU~c=%@%+~D{wous zp}hpn4V`~|;W&P6{ zaxH$zU+(r-C-?;k0u<<@g{_MR0Dua@Z##bb4cskvBnW6@Z~SYgX7Jm-#b4}Ra>LTt z8hZTJtMOl1|M?OC69Vzr8QPluaw@+zzh#0{dS&MOIoLb9003x-{Bke9P8vV9eXYyAE`wtdfigmvd@D~7+yoEFW$uXJp6}nN|CLfQ{KQP@e&y4sVu~CM_-+OxQ_&?yR{jKt@L;9vfP-cmN6h+$Vb1u6+l{>U3rguWW z7G0R5kr6#9TuWM-a~T7~i2Oq8!tcVLN}H~GrFCNY*6HTT4Wjp0hyT7gf0e&eA# zej!g9?0WeZkroOn&2KXZtH!18L@-FH@l=$y3Mnb?Qt6T_brV+k0c2mn)GP1mB@3Gn zBF0-)>LWMx7NeDqx_*zm4x~*uv~v}M8+)AkP{-D062UP;t|;%V262-2l|8n zI@ke^?$!>1uAdYm46z-k$N_cO0H-$bgljV(%OR^na$mez&)7>()w2kzJQP+z{QJFI z71&SGBEV1%^sW7BaR3IiC8-@kTiZ!*%4n9>- zwIsMBWd0F#VcHXkGu3S!sAdsNE3ytnnY)3>jlqrChDbftp3{QgFFp&(J^Ij2Z`AP( z?%^NyX}*VJVu&z30J;s^C)y4&zyPFffKuC!5i`JQ)d|PGOSY-Cxwp~Xw8#b;x}_b- zgr-Up<$;T<%3bNEa#g;r*ut-hX77ezAKa$7$PgX|2aAiv#o}^mJ~vaCC(0k~2ls{Z z&iUAMdNTV<2=j;g@ma@Jb2c82W)lCGXm+wVnjJ4l6{ZeXgR8;O(rj+DFr6DOOckY$ zRzs_y`QM5E>mmo2^LfVRV$*y_zaw0Fy2!G(1VcLuWjo2+PCvEpYl(I(99&$q^ zyn@*|J?k1)%j}Z#7LIImx<1=dU@g27Rtu|(-O1)+`@awu!+W+oKxO!A_)6JrK;nAl}`jT5Lw80h_p#4h2Gw{s3{+!J%#Aj3aCvgSg{n)mB zP1h2-MXgr!@>ao%fAdeL&v3}rYI+z^I`5V0qkGAPYHxVIW^GVg&P`ny&yCzq7}HWq z57cF+ZY~^EDnwFgb_v;^%DPplVLzh0tdMQ9IBxvSSNmI({zTU*metU*Ug-9>P_9}D z-=NN_tG(%oQLRYNw`%1HSFOyLtJVwiYxE3%mH;uFrJ7B5n9W+G$Sd!s-FT5ZuH_=l z?|22hETTMFLrbj}$rtY9P(Ch9r}Z~R{Z9-tiZB{AFmQByfHX{ys-+n>RFI^XnlhW6 zkfa$it~W3MtTcT6!Iv;FhGbxPd;g$dfB<>>0Ftby7*!e0o_rJmgF}Fh(fsFy5l9pR z<7JQuYSDxcj1mkqpbcgQCJ*Kx#%{14zQ+oTobUoA@eZKM#N+`4P>6_y`d=^w2FU~_ z000F50nG$u{tdYJ|099t0L*}ZA%K9OA;EwlK!AWib^(BH1ON!Me|;$ab7T}$7XFR> zupb~`X5YWD8{!)%fB*n6@4q|{ThP{DK>z^!Umpz&%mNHB!NkB2UV#r8gWhOh-~*Z= zgMkuAflTh078yUySxjKestve?U82w8fYO5^f>MIAgOY+WgL;BegQA7Hg(Ca0L`%S7 zdNsd)z_Ui67kdH9sUd2k1qB5Jg#^JWCy+$Zi51Wfe(HYkfA}B$_ka3-dVVmzd%ix7 z`^Lb<@o;<`cKf!$yYOth>hJr4z-{59@HBS#OK+2&NEeStfW_Fr+SSC!2>L>50Wer- zs%%V6BXwe8yxQ-BVlZ>a<-DqC$+mR z#u`f|)NA!x%&y*DvDxglJ54v@uDsoDwnh|Ek}^GejSK~!qZ?_$;xu7~U|`OU3|5X7 z8LC&8{$zt2ohDfVOm@Zw2FiwzrU&ljL5%eF!d9FA z^cpgoT7Le3^_x2wqJjVr$-t-nH?QWXTDmWYp`><`#3j#?LW8HNivHWn$72X>6* zQn_~`NL?CHI^&DP?%X?SNa`c78&%tFKSmOUnf|X_{$=RB#*-{*~}6AN+AhEi5bd~Y8Hl6IY*FI31=!5u2+;8kp-s2 zhV@iFP}qr2b&WIAS<(V#Q0$aStka-pd)(#7b=wFoS&e*Y%Nx_M*YK`bDL^GwO8m1* z$*G71rZl7!t`%7{Amg_s&Qwti%4CW{P2~zdcy(R2(He19uyE(9SjD2eH03HbXA>VM zjw|9h$|gsCR65-nPQN0fSmQP{)e4-!=s-!zJm-r9=<-J*rwUwSsR63kZV?~VJTD%Y zBx#L8)f4JU(Vn2m%$%OCbnD7Q^f>l=0 zYD<1FvUm|D8k6tbBccliaePWpr(FRok7%-hdVac^l|>KR*uH&6T}t*sa#jp~=tcR| zok(+!0~)JFeBTDItJeC6FIcN`>+fnJCvGK*qkmqWdyXbK%tP~^y7&9Z7rOj6b^)FP z@cU9qo%J>u#X{c=6w`H3Wfcqb0;;Pd%2JDTSw>m!WfazRcNs=u?`estpY)Cy;up^D z148zzu2Ift=P?GYBASK2o~7+=`yOId`pw3f%cke zRv=B*`NxvTv91Whiz;MX*X3m@f0Uo4NP3*nlE~caMjahwcgwBT+r2Y4{Vgr#^RSv> z_PCVrJBIm#*^udbd$^xgcGoTq=X8ZsLHKe5B>*rAYjC7L%WHB3H7l3<6Zip+nERX) zvP(+7xr{8n^fMow@yWZ0y6kGtRDRavi}dhAEtx)5_l zM#wv+eo=T-Ru%cVfZOUd*;N=yrJkSh9VlO3wEC*3VO1Pl4$&_4u}*c0$qhXszh!D{ zVZ&*?2*9J_%g#!uPBC^ej$_1{%D!a<&<&5bp>HBN-#wQyFt&991E*jRcP#o^+`g{EQPB-Hrd`p0-M1UD3TqQk$`v>d8v4|hL`A5NjzhB9}HDXbphUh8duEdSxD7DXdd#*3<+OWprcRm9I z0Q~s@fcIEG`s-to6=5?BKtx19 zL{t(HV6ipZnO~BoR1y)C0#*p>szs;bfE`5cEtU{HzPv^z239)@$vP5 zm?UX-?R3p~l6#fwj4vd~O6U^Elq?}a44em`#Bv`%_VV$uORjPRPYf@C;!i3s@o5{{ z>notl%q@lo@a-2la5MVE{kg;v9=fZyTsg_}qS4}$y_;Y%912gVy6&jMJr-rQ>#ZOS zP^}uGR1qhUBwh&zic8r@4dgclFC3Nz^X#>0#gG6_uHg-NY5pWlr|&W}@A*(y*yysm zSvCcY&c;rw6JcDJ=qBBZU~El-F;(ynT%AO-|4y=n2ARmZv6O06z^R-PG2wF`dYj%L z4@Cm?vuu9*jZ$`RN913YbOh2cBeMh>CVEYyR{20xG3%O&6iOrz>Fgg6v!)g) zFsWq9eL8OHCj93y33=%!!dE)+Pkk$pW+ZsI3#j`WC4bG?J@>Z~r0**Qsqvsj<_qX& z{p8hj(OI#gYgATR~wM0tTXRSGQ$q|YGgbOaDhI-KtPq-BMh@f96n(}|Q!5)RRVG?W8a zhO>B})nqrEl) zyoo=6=-y6Mu-65qOqk2j?=<^-0U!83WFgo6ZFs-pWi^hf?fATUcHiM@XkMQOP!^M+ z$2i32=+3t|x{~(0uXdj}E?&C~=G^1)FJ|F5yWR5k%Xv=HieNa_dsWdc?Uqc6fVadY zBQ^Os{Hkal_Aw&EVzs8t4pkA#LiDPbE>w_oQb$xxy^tZ87y}|-TlEu|c}7z}*+l9_ zKU*T_I_1tX7Tz9F5tkv0ujp)GJeQQk<*^X>=~j?avl6okqeg)OP1;0s@CLo+Xhdn4 zkQ$1c0OfC|yT_ayotT&q9X#o;63^TAzDy;@`yu6ByQA}#kMc=KN5A_Z{w!Kqe~Kq* zHJS@brABL^`x-F+d7r}n{(j1vmQ`BkK8+HkMyJtO>wH`^|M3Ff5p|MpcTm$U#Tm#+ zi*N7tz5jL@jIF{bN1C3HdLpf05~WKh8IRGs*(a;BS>y(ZEEK>c8kjPLs!%4CiU>a- zdFB?xId-uoU8*FI9P=V3%489{3PBMQ0t6xFZt<6J7W*{Bh6Mu?vXr9xj*ujqVsDWBfNd)f6Rd{HXGBUD5r);Zj}(OH!2EMFMPrrQm%$r^;4;~lq5lCdd1 zq{QAwqjCk4+ux``!`1|J46V7FsR*kkV`#mTtc&I%szo8!?;svJdpJ@2<8q;f;XW|6 z)0>F9?u7mMCoUM^^PN1tiRYPvECIX@6nj;|%_Xn}OK zHz6+Rs}kG1CZ;o~MiK>uuVu(as3boLN>@PhO(mKW%+}`)ZQ6M@EI@Y|gY_Ufc2x(c zsDo~(gha3w+CTC1!Lyzq9hbL{%T9ZO?~ByC20^R8GK;r6A?L9^zD)@1Q4V(oA~Pr*sqkD7r{yamhDrE!K5=PRGZD@q{;u+Oe9jwsDhCDvF(I=T3;& zxfdh&!#PIeMcymgnc_z5I$v5BC!(TAoOc^N4oVh@$!Bw9=9;WDc^kkc9g=DEvo+A} z@Ot|-OVUk!X&5}qmMNhXs{yB1rsR!~MH13AD@DqkUpHJRgUmma5G@xkd2 z07-83G}e1agMTXQmLSCb@obNiQNp;2*G@AdQHGpdOeEnWsTp|MEhLe&(Z}JTrO(4w z=HQ7beHUuJwa{YvQzeSM#N+3={ia-h8}95xt{S_w?cwz1D^J_|^tdjuu%$l>q;rM} zUssKLRrSvKn zlBA?$ElK*w-r$yn(4Sx<^8HepJLf9mh{0t0AH=TO2TU&XwD0nVVzFePMBVng838bm zVpiNX9rg870(MGmi=p9yF0`Ohj^3A{G$V)WsNxWNSp%ex5j6 zLW0do7j9d%WGSYCJhS+Kd@?2*98Vl`Lv*0>STL^}SbI8i^0hAX(b~1LQvHte^$R*p zC+`fEF`H@2)cFT$fA0zP%T1T^X?!P1=dbKt5J@xnUXyf=T#ndu;#gmj0Hr1&(S6GR z81=|7EGy*}RLE+oq;(wPsxB#EYmr*LwB%XGIn*$f}}paaDxFP zU8n>CDr2}Nh0JZo_<>31*edjDp7+MJ^~d$Zm(?=;M!9G3OjSl->!(S~W>~O+^GV9pAsLrX4Ob2m@#2sP zRrqdLeRsRGCT{Md5{B=hhZ2#96f2z{CgZQrY~_3BYzs#Tg^K(kfpY~dWOpK0Awhz^ zeg(tcN0SuRU1d&J6FYJTq_Mti1amYy{*aKs&|;{Kf2OO@ujsaK2nJKbx>>9GT$sjr zIxoT2Xu(?B47NXuZ?VcRX))TIexn>mQ|9z*Qc+6G;s8BMFFmaDt0<&UPO zaKwi(0e*>VTF5dn^W}x;9LO|ig`BH&s+6Ui77s63xHw(}4M`uy%fmH0%Tq$sP{d3N%<)}zrmYOIc0Afw;$aA+JL{HyFC@m4bIV7eF*w$!Lg z=S!L1?U53O@8aQN!StMq+Ev(8OSynCkqB-V%7Tm&@f4DvNLYgRE&+vBX$E=IL+T2v ziYV~gB4`sNbAiSQu|`{p%VRpvWpDk0zARh2zo?@y?c(rEn>tbq(R^SNmo`gzrq_d^ zZ0osiVwIPvtBpvh*QNcvEbR1u><4MlD#~WrDM^h-V@_SzHHsApwC@E;LGvq|NLSD( zV6>+GsfJS($yXuCE}0d6?L@l#b45BQ5nzt%Q@^Had?x)%|I5H%SkX9yJ<7w{c`$9 z*QO4u`M!$Ykgt7wF_v{UyV`h!PjGKc7N@W8g~jtYR%*wly9wEl$1{*`B1dP@?R@}z zA`8U-EX!7aBQ#$h%eN>%68UJh!;0%-0ZUEoo^hjS;xvb&Ev9oZ z?w&Af!XjA=H5*S9+m5V~#o0Lmnu*%|7DSm4qoSf>twJ*}pFgRn!07%2g76AasT073 z7AueifrzUe8RHTB2R41j2iH5jVS2@2<2)msr^{x8`Qe1(N}i|9O+S;g`J{AZS|V#W zR(HcQ3D@6XpJfxhhQgg6{oUB2c`(*2b0p-_P%K)u^01TmxBB$!o)^qm?)%H#+RA+_i{B@i6?V!P z+-gru;}ejD$C;BmjUB{t@U9u_&V&e#P#m_zv?gi~d`i@R)PD7!1)~$NhXh_*KN!5K zT2slT99oz&1Nw54DEyVyoPz^A@5r^m3dPl>UhBi^1n$VraU;M$ph0}qD4%)a4yXO7uk^&C; zanz)w>*Hf%Vzp+4OH?%Aye`KHpV`<^&q+bX`*N7E1(6ZSt#|VjU1ny{B^oWD8Ukfo z#dQMzWJEESB#b6aIFUW(sl#u~^-?_vL|W;)W-;AuN-lbn8+ok8Jdh_}TJ)MEiqVEof;1jQpL{N-mXP zgz1Xhn36np`tui&A0!8FZvq;6vCkJGfoZkN41OcjN5duvqNS;ev??Pfg?SC#-QBL= zl0V({glrBrxbEZ72R*Nxjqt|n4Zo%(Jymh^=?!< zq$}Bof7qwV;NJ}d1y8QzXFt90#ZZst6cOs~Aw`gXZI~%BiTD z**#6JnPlg>DWbBQ2Ct! z_3aR@YDiNPym(HN{FuvdE}8j+nc{JfzSSdI5b#4VPU3b|&ef>`bU-f_-F>F{bWo=S zwdK24Tyb>zA1B2Dn4iI%wkFw7C)XTx_g15x;(u__TdO^KCC!qsJv`uFLYge?$F)3mMqT*r{6Y8}uCthy> zJwVk@aL~cXym|tY@4L(seNU zf6vxwb$eMS;Ft23sxE3xb5A?IKeQWeQm{aBbc(IeTK66a5M54Hm_r)F{Pfr_7l}TTHq8}Lj+1^k&njL019Yi8XbYso zzI@`9wWy?aW{Q&d__!G8JzT!R%>U}}j6>Trh|rWNJcy}HxDB?1g}263Gq88ZT{%-F z#|GT{xH{>6k~10Uug-lS2_gLMf<+n3L1|BY?2)}qmYE#p7jW=cK2wN|Vkw%EWu)+# zHqKnmK^UDEX5i^kR>d_iKLWl&V*{COFq(rS`w-P&Ml>*arFRU7_fqBbal%>q)6URk zl@*CD=bhX8~QI%C6WW zq3*E+2X^*b%7p{ERN%4RPJGPRmsxYUk3QvOou$#2#46m0jyxI7)S7r(R5@Y2&52az zF%?XqM>}(O;3Uts#9-2WUQ(k9?lp9a-R-FuD@DfG`i$@DGMdgR0yU?S4xnFMUGi)c zr8YR%RT^Ga>v2%qzT%I_7}7m8ZRM188I_7c_%i_d=?LKX&AFQ4h!X6U`GB4(I?a0i z(WpGC>D+xufNy6>>^>o|f(rnCuJFso;k9Oc%FWcy2NZY?F%-%kt859hz z+oyk?e)O<2O4fR2y$vpNFL{=5F0MymD=sa}k3`AjP$6t|(2fE)%ND19pz%*;(hg5< z20HZjMX$~6tbUBC{$!x9@HHl39*%=YlKEylHS?1*dP)3GlP-NpKpvpd) zY9|LT2~}t6Y?Q3xkHr+@&x*P!m})2&GP@iv&Jl2ZMIlm2d?}eiib+v$Z6#Jw?jws( zBlE)NnO`;!D+UB84x0NQJ{;5ya?Tmlt|7-js@uQaf}+`ur}mQ8vC^}6pPM~>m(PRS zx~{i(mq~aD8~UfE+=!+w4mmHDn`Nam zPUYb&b~dpEUp)fNuWrA*oulTBq?&%Er+|@uV)xIK$h^1EU@UcPyBZS~2|(5b4h)Gz zF&^jp#l$F2WoaexCgl1xGwNRN*%(S?v)CLGdjtD=`Pm&mTI1Pz(@%=>{hlz(%h#oq zR9o#PUucd94suRvb0T_=cK=b)kcpV=-Q|O~u;AkbT$XFPLM$Mat1(Hgh*Ny3u$?|% zp;~3-*(--~7wnHeUyxx!%T*t0F}-e+B{d_@*WDwqz_SIi;RQ{rXP28@Y)$g$^~TUK z7#o_N%u~g-m9&$D$eV`^=)4)&YHh?1R0okz37%#5)B(kG-RpmeX-4I zK%UJkLu0`7{ZwwdtqPc&nGpn zYYcpmHW_TB7D{Cm9_yOgzA&WJYo@jvzMr#tdQ%4-KLO^~Wtlu+mIKpLlvh~5%B&1H z(!qvQah>2?v?|F5vJBpP5g(q$pB8!ppSF2ox-B0~qG(Ugmx*4oIw@{~8U|G9LaOsK1CYQY7 zyKG3(`G}d-OkD0fKjZb*w0B5jXlTAqBUid?mvCL^LBNNmsKBsigSe%4I~= zr(26q1_xXnQS{;U%tWPjg6&|PW?y0}TqZ9Q&$Wd8eh8rqeH5ChrhKdy3q3y+1PJF^ zEI`ivU1}9B5gh2#a9|+9y9IGPP^YuLe+B}49{zA$4h2LjZ06&H8Y6f{^uEK>?l2i# z-6e*GBO_}sVH%bfm)iK&e=oyPn^tNu*{qJRJkR#-_muPe22!pkCe7%xUnkbJf9PG5D()+(Q-{?U$>+g235|bX}B2ueov#zaF#ke6&{>H{ml2 zs21}%{b&|iqkT3pWYNr;$#Dr^ir8 zv`y_E;RWl)hf_3oM6AM~unYf=d=aI951x6{P|ODxW|Ar%-WW1DwGLQ^DkYrGM!svu zoMDyWLxmeI-*KyU{_0zK_q)%U^Nkg?iw5Xcilamu3KMf?ae&O^Y26s3f^Vk_>7ZVT zgD3L<1c2$Se8l4NN3vKha$r#jhmKr&)F(FzFBl6ZDevEVl;6o$8Sl zTD?v?Pf!s}wG*jTM@(;JS9iYKT{xrz>L`?r;;*|`Qarg2enzKH1VSZEW8i@x z|H+NYa&eWV^w|_?ILy$(ep*KUbnXfbjyn<)ED0QH%fosL(McI`oE^@ zFzDAdZ1H&cJk>hZjq_s{>pBo)vdl2Y6!_r-NX++bFO626Mm|( zXdv&)_1HOatuyq9!2^KiP^`DThnML_FxDk8BNx$^nxOiw8;f@*yxs8VIR zI;So~M&Rfk>%8w5?Btrw%wSQ=R^{pFUeV<>b0w!%#qxWE{GH|#)qYg9++Js0bN8_y z*mAFCzm2xujI?%1q8Ys~dzp&Oa@cI#C+nb}%imYa5H?{beYAY>6(=A0F(`ce@gcG! zm&#n+B4~MGl0g1offAm(0!m6e9(OY5RDvm_7=)A)M9#e*ZnMaM*hqt9c1#(4cg|1s zcz)aY`_q4?rc5?zU|qf30gPpBKDovUY%A>G0DZTo{r#lu!G8ONFFcou9qndgaI@oT zY*Qx{PehAj(xq{!j5KanKKV}_QXl(CXOktTR=N1jhh1CKDit-wi^B>_odZXZZYiLPQQsDM(eg?Z1%s{>(YFdC80;FCiYgjHorcY!N}l)_z#eV7sB6pq)TG_V7R$4=<4&yyfN) zqM|UB@As6xy~lIoaWeBty#Hn3MK6!7~XI%c6QdW?Wyayu1hsR+) zUz#`a1GWpe%;B~}S60`I#kg94U&K)HZ(ADI6iUxZPgGgpt3 zf|fj=e{v0X>gP;e$m8wqMSmq$!>da-YxjF_?@%D*=Qh$%}VN+iW_ zStSH$1e;^sO2S-u1P~l8A;@k7ILjBDrG7)*>z(S%7ZjVij0OiZn|+>|`#r^%^U2mk zt=}nwkJq;xQuNRmKEWqjE^DAau};!#-7{52+0uPCWFp&{E5$TKJeQedZW5t|2*9N| ztHVvS4xiPuu>*WnV!GS3veH)vrLfps_#4dWM}94R|J_I8{;5De^I+s+h+rjV!!#1!!C_rd;0)bNC*wp78n;?~=%wuHER%q+ z^99r@zk9x_>IWy9avKup(El80B4ozuoZOS^z&;#gcISB6ukJAt}l`i#01 zWOa}&DGI;so?H;BJSpNG9XHvvf2-y$hV z#TaX6DAWFlujOCb2SxK0ahkVu*yJ^asJGjeT=+zJ?&se_6s_V^s@oz}76Q%x&hnuU zBek-fvpR-o#+r-?5!h>P5Nx4U6!?9nEfbGrr^g2_QImEJnpXZ1c}+ zB)0i{#i~EyvtKRo>$okbK8hIAZnU-p`I2~o9X8CQ)j4WyRi)K8?E&IN`r>T0er08n z;Q?=sQk~iM^To<-->}Xn+3F~8?h975Ct6)_3$HWia3UEH%cm-C?Z6DiQ#no@wI2iM zGqVvw$#aX8s(B!SaG@}8qYXGqw;$8^P7w&nNr;YEP#lqmmH@w92taUynFmIQNghqu zWxj-~r%kq>4?j%|6lLnY4Rqhs1nA1L?rb_qqjWosAvn-$9<_3<(13e$>?i(HZ*aw~ zvR!meESJS2y%NY^VA7gKma?VLvoK{6Krv;TSxr23=}%53{i_q~&8>n3KWHe=RK*l8 z8DRrDMJUoT3gZmHnF~IoUTf>?ap@Y1jSjEJei;=$TvxRt@w;1~nH002(Sq~C!BQke9e=pTVaD-)O zuG_*;dLby3V;C%@4jJJD^H5#U9BdrAo|-~r_CiQ~b`#(%Wx2K;x;j^{qR|K~$pD*Fwyyj;ZhlmzFi4I2m-UuY0e+>I#3L>u*pBpN1u%`u_< zG&J2~Sg{mKmkOOnu~All1l34eL+{iUV=6E7ktlH~ zOcr>q>djZiMve0rC#Ui@{kh$Ek#LQqnP?$}*TRC&X9BjVN(tzY1IvzP3WU-%clG^zo#IuYoIv`%vH#vsRdF9+%JS zqn56ECPJ@wid)LjKw*hUw&Nc_8J*NQvRG|#BJJVAJQK)nw<`RD4x`a8(%k%T{}1Wl z64FoX&*nYSloNOSx6g-}HC=uGucrqa@=pOTyq+_h=jrjb9p9I$)SKBAPJYr+_E?q+ zq-kVyb1%-AS_v4<6O=Cf>}Quqo(5j;LwF=!UxvH(aYXchPJ~O3Fx+zwu@~NTIv)z& zYP1AE6N-w+P8trMGXj6Dq++RrV2nsnEM7+BIc-#CY+e-*HxVWP7V_?mR}~8b3K|LS zW|?$&NVB4HkcB3offC1uB%%u6?0Lf$+vVn~pQmW_+-&x{=|<8i*Z3X$8vU2KEc-3i zuXN+KSiMGHVU!@)38?cE*z};eizu`&gNbR)n-lnKlnexn-iyWxYq9Ay#~0+L9vp<6 z4gbabD9@_2)I}J2EKR;Dg7CVR=Fh}SClEc&8qul({$Y7X9445zW{gcj=J8uIY?``mCn z4+$ka9mtC>yYs#d_Hr)q;ic^L+Rlfos`z949?FvS<+=GTmA4N}TQAh@8}fP_fimN+ zP5gU*1RXAY5R~w|625@XRAuDnUs6{jxV#wT<+gY7>_O4*OORpn0LrtSpy26VJe1W$ zY}Tq)WUVMdQJA<(hd_*6c9f4ks(K3;RX`Vyw`(}Fz*%vU$_iTCT8MeI9D8FE6d1UX z3uI?t!-B{*{r3iqd5i9a;d@W}WAU%&5JQ90W;8mldrq*Wq{h+HG+Sf(un8K|vaCrx^{Hb%)i2`P(v%sDU5FiXZFrA0?Xf#si3Rzdof zeL|eWFjFK{^~wavCXDliqCBg&rm5wNj2ifZqjL`|&r#m?ZC#RICUWn|W9s%sW$(++ zl3D&MId2g+VT7VbXbj8JL>WG>KhiG>wQpm2w$AmIncNmM53?n#3w-Ts!0drj>hY0_r&vLUYq&$ZpA`W_~LRDCpkf)IHh6A z0FgRp!*Lu1l`2*ufmRJ93$12Vt5%I$)mDYMR-y1(4McodnhW)yahrtx+}}H+Ztpe1 z+UNEsk?t2+Km*ur@;JT&s=(%xJ&#~>1#72+ET=zWoV*HjwcD9PJ8 zsa&ggqtS5{Ea}j9iK=VFdy?PM+$io2fVZJ)vVW)9XfW?)ggi_^r}#Oj(3Z8my}i4D zbO*Q=ll*bhrLs?^ABY(NCuq(??2EZOY6j#5 zJ7kSfT=GSUqXcySPB^2{l-)#hW>28swU5{xhh42sNDhnCP>xxkDh+WsH=SmTjP^SZ zI$|-(tt;K~uBY9q9SF)Z1aJvS9&R{jMy7$*`;I)Z%hyE1Whip)$v$jK;!3ld;muIo zr?0k|hP|n^Zy@Vab#JfOj&gnSbLUD?tAfV>ErRT*%~=ly0lptWcj0^O-OA(ngr>q{ zG5LQ3b(rlm9K`cEKBn_$@jBn|@hze(4uJAL)nhtM=|E%CgWBMJ0HEIN5F)d=^+fo8 zfu`Po~C49`Xv>w^$jiv&zUz$-GQF9+~1o!oaOU{}jk zC97+2Rj(zkc6UHN=n{k; z#jA{YeH&_N`EgJ)*XV2UlSAo*b8-i<0bAkPW;(^psFN>KqVM^5nv`U5uw=Uu7aqiS zGMuu5&`6RRw7zyPnoI-Aj<+hS9zd(lQ61uw>t7lZzvQFvGN7niHPHgfqe&~}@Me&a zLKgkg31i<~j}+b$5gTVqMNeH;K@q zEy4PvpQF>nLfN8_FmZh4n<;vl_Kp?Zcv)|tU)q2O0X;X7uU?b4Q7O+ahIVJ0h&2{OE@d5 zN`htFn_#P2G83DZ+m_lrNoFeM9XkA(BXuw4p8t#I9K{Jr%bq;2*K8t2$2CK>_-cfg z_wcje8J85xF_UsSD3d3xq+(2@s<=VZeHb~D&XHX4A)^^r9dqqWN;=unGon+M{NYgB zX(8KKe$*HMNzPR8V7Q#*NY^xPbj7Bb#F(KhlZFj-Xku1e^3D@i&z#LrLd!faT9?Xu zY(tFgFg#3BBx=Z>y8yikbgnvg#`54N)~AM!S$i4 zD%dqzLbkb;^Imwm`=10RIl{H23HZl2*KYSZGTCfPDbp|WzTMBTFSIY5H^@5ab<%~< z?gZxXk#Wz(3bLZiLQCyBvjWy1%TOJMhbHz+>%seZYxK`>b&+FC$Ez6(BUDWCc>|^& zy}1W?*~A8uj`ICD;`Ba&&MM*~#T}PPm3t(al`R>vDxgo?=92Pq?$`?&K<{{{EkP9E zUbQ7x{rC>Kji(4G0A@Ntm8||3r-J?zC@f)cVlG)nXeNgiK`^-a%0a&PzyGk&O0g+Q zszgdP%K{QVMegj8vPBjGP_PY|F-Fe@WEKp305pom2Bw1}iRrrT(fKZtJn>_r?tLQ0 zapt3Ei))g{MRcwthF}5XqT=b=9*pFKoEuX?8grqR@v>Ex4tVWh@RP_TG`zRlUK-=H z`LobCJ7=bAu}9CrIKu=$gLpS;USL6A1=f zymYCIAfgeqQ=a>$w*Fon_3-Ay*@GibfdOUJU;1~ny((V_pPl*1-*vO-kQK+>qnYMU z2HDttyQ13qD=ImGzRO_({UMrgR_C6PZ+wG3x&J&VoSkC7@?K`7WXtX-Sx3oCfwFJn z_vZHG^!Vg0YAM=1Wm4ngm(^rL;|PxJA;B~u74=+$x`GtD{^fISegFn3bONhEV$D79 zsda^Xrh-NhzKR(be!pcHgN=!PTQICn_$s-<2j~a)$0va=cy;)idcq^iM~Lq`%<3BY zOu?Y#Ux%{$7AsNOKY~CeA})Ux3`f?Qntb#!q`F&?*%eHo1XMtk=Ew~^zaEUwEZ@hH za_eT~vkfFL+F$Z6o&~$b?jvuOdR2bl>X3X4H&RZ_aSWYvY?fxDaNFGRMnkx(s*IkJ z5^w6XUzk1v(4o_6I=!|GTkW>0e;?+4cTaph{ht898$aZ9eLuvfsAn@|)ef;&h8Y~3 zqH{!sw~Ny>!D(u*syCMlz}3&yFVzQ5a0Xo=ldu^tHufqg(8orL`+s}vqhu$JJvurf zJI&L@$tInXwZ2Esaph!ojc-mEe`T-n+sHOuhIetAsn@6g1>v9{x!2QeOi_=PAj3x* z8u^4S!&8!|ENL?LOt}jsqh65ppo`%Q>$&k3i^XMed7MtCniYxFeTw>5D{+%N5nYPK zkGYg8lEM+p@$m*c4s{`>E3YZoCc_c+HOTs+vto$j!Q&YH_1u z?GmAvjMyLi4j{ve^&%8{NJ&rTk|43VBR%0$qwprSGk6e$*9FSrfVrfaq#;w6H~$w~1Jl3a{Fg$zB|T!xMXVFZb%++aeOZk`ijZGNNU~WHzK0BMlM%f_6^*}7in3m2U4A0+}C1)={}uo1^a zRu8^7>hC0!H+6oEzb8lP?>4__T`>?6b0^K)2vVh0h z9YMo-BB<}aRxzxB7w*C4-rUl=Bi}n55#?ni#f6b@?ziyDi5}~JZ7v~? z^gq6`=a50b}CB;Jr4;?t5ARNfa%1lr7xKeB) zry~#YY`iQntX~M1l3NxpCie03%UGcz&zAyDbW_g%Z|D17$x z&08P8@_8^F+dOXfHD^HUoFLzF&C8F@dAYN!zU`9bV;9n*T{ftvE$-**Cg;5QGiY?G z&aE{-7R)IwWdHc*-lpZV*oT9H)F#VgCoX830Ph~;g^kE(yxt*G-oW{67U#2ZdRz#O z=y4&Q2;;W!hiU1?nU6|H18(IO~!7#^Qj)<67k`ePV zx?H4nV>HJAx_@T>a35e>(<5ED4)%b%Et8O2#0>!g;#dh^q>H|qrWc#pP)&CSz!C$u zAR&Zi^t(t~#4ra{mu~*-zCh)1r5n&O8LZ=2_&P5eakW**7d7ohSWSmC4P73}kJ(%G z($U1aOs|NMai2(PODxTdCMgP!k$D^rMfg^WQK)9?^DXY0Z`FnQVm>3__P;mZg`06c zSFiOQW&e#G>Yt8<;|%XcktzO#lNwd)i8J~{$d0$r52d@NwBnRb#mS?g=;`5{D1YdA zo&E`Pwuw2%7=@cWbfxDT^q9w^hw^&XxIP^cF;O)qqUUKf@LD=GOwvg%_j0XCl;23g zA5fqdwOAl(TtO1QF^|Vp0@<0Nfb1~p>-asNgMDRrJdzPE^NKKrQ!z^9QJ%{$u@mfH ztdsp3l;6KN#8fqYD{-YIQ4e9s!G9(O4X-Xw)=w9k*t@ zRi=J?IVPiXh}gVBk9AUc#Zs$@u>Pif_Ti(I6phPv_e?!i13YRO7O1 zep``dTt$14i+(3aUv*wFed^>Hv&W5}8GGf|kQoiL>uQ=Bq&dbfIN+=c+vIcd zF%jPl^7yXBjN+Y$_%1442QRaeD$xRoI)N7w=xg&OUICYvpC6K4k=%s1uEU7+f{5z| zRKJ={e zW{BO4qn8&7%PgUQ(A2%gu%KIeUTpX+9fa+d*g@1ECUh|MEJBRge%Ohk?boeh(bT(Q zu`%lLq6qY6d$Z98L(#`e7oC=v|J*koV%F-J_I|$q2Qcw1{BX3Akh4z*`lX6PTOADr z7H;?=Ub^tW?cRiCnY-hmfAzSRPBKZb6=?N2~-5V z!JI^7Bne%l<09A#7j4Ca{8mRnp0V&mLpotKmhS5h$5#E_&2=-~fWLQhOYfBz#9Hg- zI-;%lB5ef=0O(KiNl#5&wXn}cy=a2{+G6a4Ew~e|joMKtsEPw*ND+_C(P0gvf1vOh z`PNujsZfT!YD+VsA(7aG%?T3dVkM}k3sX~5{rJU;Q62mg(YQ}R+$R$t*FR-T$WTQW zMZXKIDdBD}UCtVn`kt!T{QPPKxh>w|TiPO)d|txu_6qm{{OTEp%Ml7#+!5f>2>oWS za4;K;TTFb3_bO0ZWaolsPM&`0=U3Y_jpyAu_sy)9rq$O}R7$6&HL$nXS@s!wdBeyS zR$(G+PuuG4Yu9Gp@xAR^ZrT>7L9iPQkn{dU$kM1KhWwa6mm9;QNn8}cHE*A&560T* ziBU+1<~}f=gc>(bpxw+fA%N4JrpQZC+wo_ybU6rJSF4C?Z?J{9=T#f094B59fRd;s z2koM4F3XJKpg=682X`pH4waWTyJK-8BmF0KQA78Z;*L=9yO9FavlG8exa{BRBvL-a zukqNVp2jsK-W^P)uKSw5qc7SZ-`0)9dl9p_E2fEi(3$GX>gNlj26)zqGZaWk@*z5H z5R6|1-Ic-=D|B)U1Z`Z$!N3p8*-Pw4Fb68DewZayvoIWFQ{d$JSJrLXuzvfLz$%j! zegN~~a@cG$8_7-5_)~8mKNX?h_|k7QR%P{_re4}Dg9GOzk18IWP+w{nEl7~*+FXSZNu zLa|7$9&WtvliTk(AG;Ff&v)Pd)dyfQ!i+7?pFcW9To2PYRl3gzG;Y}vyCY`(diLoz zdW5kkM5pT4#oYCC9$<{01F!6H4%|ix^_(012v|HkgkO$t+>aJJ!sY(D)9KXw5pfRt zhslLct}+ePsMHHZ}O*9S;Y2EcDuRLo)=a%zbK6G z`aDu`{mOM?85?^~9&DMjOFlVh(c(zvnEk`I?8+1|0?3u$l}4#2M2(_9n$;B#K!%%c zLfUSD+;-cVRreh#4hD<+_YW2;?=0WGWyLjHZ@D^e;K01x zq9VN>c0bN{PAx=vGc8uEz#n7BLml2KGy)7~*ewD$JY9)bBsX{a05>8Kx65I-T1=WM z6EArAwH$$gDBiW8C>x@@8oh)+S)j1Fp)Pl*^I+0-tMg_x%*x9QnA?+Xkl)J+WzBp1 zr}%U5pr1b8?YUQ^`=hP?FFu;yMEtM}6m{JZ_M)_6a+v=mN> z=isD9J+X&>@khGp55M70|8j+$Wqv9J?F*)Yw<=p&>V?gZve)%zdgNmNv!Z`iGy}Sx zqto?tIb#&@AQYzy-nX~RWFJ>&DF?mmjw3J%EW$Q7o<+v@L^*M(gg+0g&!>_BuY@+a zB_rny;g?Q|`IGt0BKng&^|Vo31d3&%C2Pq^76Ar-o~OPTzy3n~#-cj*_F7%nD#bHC zah{Kic?zO=`bv8|J+zP6^hNu7tX-sd4YUXN?T341-bE&c#Ey*?8*(v#wT5-TZw(hB@qi~QIf7Im>F z!ld-9(rJ9MSDg+_`q|E%kM6tg{=IYtJ-hGO!;kGf{45#M_aeW?pVmWbdjA%Ca!+%QS6!Y=A~p0wQ3InssQ|?5P`ekP zPU%)>ItBZDl-S3pnV}zDtUN}{#ik*0m&Tr@ka*Q{_luS3(oP$DhkmBt*^Ttbq?4p< z3Z%M&sF61hj{LoBgr8iJErkUERVm`Uurydj6X3>%3jC* z&Td6pBD{`WrR94U(Ra6PJ47R$f8IT|a)Eyj$4eRdLidShwOtmSlM5t?vpK)Zoj-5L ziMGE|X#p^cdk7j${C0PdYm3Z6V)Z17qF-^TRs#tIaN>yZugdv

      )CdQ3F!eKyF|9D2V!F-rhUpJ8J+l7g0OBBVM#THTI&O8)>EGR%u6Gd9D9pm5!S}%&6DxW}^f|7=Y zPoO3(pTZY#?(7(|!5}5Nn!D%DotZmlW)?smSMcEE<^aT$6gw#LlwubPI9BYTffL0! zyu-EPCnz{Y#ZR&1d{F!hr_NW!&#~mXis$jseXDo@U)-kR7sMBeUt-T&RQw9By@BF9 z3f?cpmw4m-R{RHncaC**(V--ipJ<~6LkW2fi6RVfh%vcYt9@z>&M0LBSf-Q|Et8wU zCt43_*JB)mHR71wb`K@~5Cizwp{`A2uuJ^_Bcl3k{7ree$8&@l?;^2nagS+NqCDBfkB?pJws=PbK~+A7|2 z{gCDJKI-i%m4LD$n{WIwWR|c+NRy`C1#)1sSBI7FiH6z-QkhY&Q_|%I3exQ zQ`X1M?cZH4^M&BSyr;2z$+^SZUMA*0001Z+HKHROw(}?!13=vX`$@Br+fGR zZ%e`5O6%Txi$Yrz0gF{}p>fY>OnlS0Uevf}oDXW;D{d2gcE<2)oFcV80@g$H)63L{HN*d{8kVzKVW(;E)$9N_%kx5Ku3R9WJbY?JW^G#k0Wdx>E$NBBVtKRLiL?sA*s%w`TdsNz1=+~FRNdB8&+@iBD0 zXFTC4C-8-Cwv(4U=LLQ~^Oa4^rG|OTr5?ItoaPMYxxh`%a*kVU z;HYGAjq6;IY{`*awo0DlOMw(hkrYdb(O28l;MYvSx*ChcQW4f^QL5UdE3HbqvbxB$pfSg`>Cj#;?~00;nMAg}==M6d%RaIhCe zARtS)01i=0um)3FSgr#ump{<1pq_<0a34Kp8x=7I1^|9 literal 0 HcmV?d00001 diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Regular-webfont.eot b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Regular-webfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..6bbc3cf58cb011a6b4bf3cb1612ce212608f7274 GIT binary patch literal 19836 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Regular-webfont.ttf b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Regular-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..c537f8382a42986cc5e0d5a06b1460df4f0a5e25 GIT binary patch literal 38232 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 S)0Gzotc-JM?Hi4}ZTDZPiC;_r literal 0 HcmV?d00001 diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Regular-webfont.woff b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Regular-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..e231183dce4c7b452afc9e7799586fd285e146f4 GIT binary patch literal 22660 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 ML;wL%uV=LY00kR;TmS$7 literal 0 HcmV?d00001 diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Semibold-webfont.eot b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Semibold-webfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..d8375dd0ab130207f023358d62ef6ff357108b7f GIT binary patch literal 20028 zcma%hRZtvEug*@066|f(g2wLhi?D(WC3sh*Z^PvCxAV`{67~g zfck$dD}cv;cT<4te;N{i_J11J|M)ilvHr)O3&8&0=KRmb`~MY{=KqNa0ElbIsQ&K^ z0RZ^_asluL0mRY(kYK!TXR(vs`Z`nA1}^eJ-XODHS5_-lsV9afM2XNXveC}i$NRT* zlrqtLSKaDCQazIX&kXm=WO)QEh#oy-6N=JG{r1rXNE#mIB}EaaZBvOP9iTawg}(-c zdci>(SI($5XCNvMAJU;mZKx0Ewby}5;0^{^b7ERADdCrxM-TYnV5=?4fu?y9>ZDO8 zI=ob7N&~TIJhPwL^zIFz+db>bbh$$`6-nzFtKoap4Ea3Qa;?z#CI*mMj!HqX<-D67 zJMwIZ2J?9sb%cbtT=Sdui9&cBwb6Km-GRXj_AzJYG>BpSL^hxsn-s2U4j)IEY&&U6Z><{=O!g~P8g!UOBm z@pmUIGv^S?*9iz<{vT99m7nPtlc zsj;;~5uQVXRZMfUX+F0Q33T}BED4uD_a`VUdjwI-wkyrNNfA^_{U>3yOz6kzQ;0XH z^D=yO)}P3sLG4y!`&Rh(=1}Lft333t&YHv8MnKm!de6_rNm~x0xHmDM16}S=(ipoz z)Cs5eoz8c|xlZp@Hoa}XheD+>JNwHmxdZ&pjaZ+moNqve^3nI0M z(+wHLPcZbKErc;(CE+FJ6xa`3IwNva27Pghw)_wDX(4PW@y6zn%KL(p1={`cOAXuw zY(mRaA6@S{*oSeH7MfRgQH3!V3W)+#&3 zZ3+YaZ%%8tbIa@3pir|#kaLWyLzVNsWZijgfsp_A0fDz5I!$v3A) zm87g?^ca-rpC2P(wL2dlXNF-f^b9dkeeBu8Z<4i!G!*g9UXwJIZDr92d3x*5n!Tdb z_|1rV>;6q2U$=)hh?nUTn#Zin?9ED>W9Y0Ga2MgfRfnPTRmw(k;DIC|=qDJm5pb@> zsX#I$abQ?$H|&>vH%=9`JB;fBEP9 z6>}k8iM<-p;gC<$J;OCvRHy>zGRtp9N6(fJrP%RHmoX&fx8bMzkE76pKfhP|uj4)zF=@YKWN4)9sj^LfV+fPe~>90h`c_-48 zb-8t=nnQIZ{_aehGK4iJN>t~uhfE*M8-U$n$rfM-ezo|CY<9<7}P82t5i+10^l296R3^``Cy&l z+AbBwoK6E!glos=5cD5U$h)ih;<&zD8do+cV8rVbf|3HLopRe@nPIayWdvhvqDU{q z!nVF;T-IX|_%UV2T`&E+Qd2e6kkLCL4@$tV<9N57CxS}M-V6LqKy$6~7Zg@DZT>{I zf_L8xpPn8`@QwbcE^(0vStEde@F@D1o+G*#-B*72@$uW`+O%|ZtHD@p4eQK2 zrwFWeZcZ`UI@-8WW^_V8otTAlfzo6eu=Q;?QYx2D0D?#nF6-+4! zQ;;V)AxrEd$;G6hMb(H@4+}MvBi}vx820XK~BMm!n95>wISyaPJ*Iy3Ta z39@M^(it2kUB9FN*T(1LpRDhCVvkzR#8t=}1}a$5T$Fg_O}-S5gzD%+t|)zR`2DFM zjyZ}^;Q}M#^Xb#`lT|cux`3(VjT-S?sASq9Cg#%U3NhM`c8dLy0};)_Zz4}}I-!8H z#!ec!rP_%JwuIiV`Xo!V6BbPZZw;#}^Y1U=ahW(f6-n+88dA%&606>BW0#1@kGCdE zi_Y*k#9&-Vj9+#CkVEZ2GnN66$w5PjV3$MjPsKDf<)KNX1NpZIPU3XGS@T3}wh>Db ztx3(C=9Zh|2t|TJQPn2p7=@MN4-92z0cv0_F>R*(Vy3)RtQEPorXwt5FACmt>?7n}^F#7_wgpMZYuX~ayUz@MA<@ede|O$PBCJtDKpB>SD)|t1b?Qq z#o$PCMcKq@NR}-Z`Q3cL(iM=cW2aKd^9{CH`cjBN`3RD~^lIIxPs!F=@A(xmQp-Gf z10%sPI1(ULl9Px=!0ObDqYnR3+$~Q9fPvNGGh(O4i2$~p>Q8}?W?BvQX8O{k8WZ%{)5 z7bh}n(6zRqi6T^kl#;TxIeY_+6D7I7%Yk#9hz-B%05Upf zJ~+1!%=a}&f%1g`27f~i7NcE0O`&=O~x2soN?l2>aOHGUXJ_S=AUBA5#5iyqEl8bo#sH^@pBwL?HLvW{K|+DiPf;QE_LN(LzxeTiXqsJa+ieoN>*R+?&pB1ad@oZMaQ zvY|_5%E8^8U7J0snI)#!BxFHL9p55V`nqOTa{>xrN_9t4(}ch+Ou>tnNNRqC`^XF4 zg&R{ey_J>SLbOI?bY}7a*VDksnfA@544{i3GU~Ewb4-3lJj3dWun}V_E?UNU#d>21 z&Z1$@VH0=;idmRw&%@*BtJ=f0?z;Ruz#9}u>MW^F|<}>}lorRB=%QrqX-p7cb>Nyvg{)o5w*o!DH9OmvFd*G+i zWmhe;!;Tx>IG3C&ihju3%d`#cfZ2S!9f}P3vd@G6Owv-tX*8_c2hT_t6W+hFJ(DBG zEJr4sZI_|bW{tmyloOn|e$6eYWMP4-NGjyWIl7Fv;j3%>1&3=It>8=uMZS|(lgzeo zlJIk=WSM&t!`KQTHWpo5m{potN4)Qh6Y?;6EwgG0!#=r(C^$#``&xRoh^`r=h>nynR7xdua zRML%h5Pgo|a!U?PEYl+XBulpL9+=7;MFiv*#-*I>aVBsyvf=N&*LP}$$&RUTS`c9=h_er!5l&;#XML`g z3=3y|8K}fTH0fa*<4ovA&*J~a$%ZKdVFVd%VM3%+?;& zc(*lOe&(~=Z<4CA{+zlYf~Elq^z9NAA24$h^^2uh#U`CpLUb3JeZN1`^~g5rciheJ zjFbA0X7|lnNVxQ5S9Z51Glmln>0g6sP4AqmHRH)y2n*g0`A!<>Z~# zZ*pkSb6hEh=ItNb-?NZw;8J21WMd(I^Tnk!A4kfgON%2_x&`vix90^6_YK5n-(q|> zX=69S%BvHS{VZP`=GZF#NegG7)73Cd8axuOMXOj&o#5NpAj`CyN6QBP`P}XjBn*AJ zTM*^J?6)rAbYHLNkd+jpmf>__7iELb&muyZV93SB#ISswqS4^2UPIqhL#dA{k9c=P zCRgON)dnF$qHA%w6%g*EIML*x$Z`M?s7~<@oFW(;I|=05{j~X(rkUrqDh7&m6YfwN z(}Mr^6u!abv>Vc>2QW)~2!l?CER<5y#W>#J<#2O_z_rcea{kSI;;lWsA zx$ZYc8BaBvEG|-s%FAEPm!0RdgZ-SjfWPGz@+cTJuTSZ*O@6;HY!U7g5-SmX{(bZg zWrcfn(Z)Xd)wrlG)vr*a$yRhHr&TC8>|$bcr6AsbZMnfl@axbRW;?GKEtTZhUfGzFk=bcAAprRbXjN z$0ie`;D_qX@{27w0AYOxYu0kD7@a+Y90~vsp}3QPl_+j8%#*@)L)I}QQXEKaQwxql zmxXi7=JaM1Ji~tU;4k5R!0_^hER!E z#qTakhiPbe#Qt4U94fpFfokhy$zQUg>~oN~0?G|Kbk9uHhZ=RT>N9EBhF9WMjq$P> zoH)022aP^*t1LkXsy#n1(ei9U-iyFEYcJb%}qtD>; zj#yBMR-ce+@FZGUN$et_45uZd^LOq12h^3rn%+sXs3Hy-cxv`Ct)XiVzh~Xj5A!5Z zA>&6KSxtfn9!P^)G+$tJQ*Y8o+LqF+Fx9J3Hn zem^uc6B6KJ@9O?N!}D)TxDoupP>jO!6KjSD+aa`rY$z{O(%1+N$bG9q5JNZ9S zg-nacj?Z@u=|+SH6>|{I1K9T?cVT1OQclSUv6c{m&d%FKI1>6@x-@#he-L6nshwu% zofrw7N?AkRYd=!&OGFQiX9o~Tyok@9xYZvk?aJd?oXF@~{LKdhzjWOn)?`XZE5EKR z3(A@=eHLJC>E`OMnrXEaNAQb!YM&B>=;u(1RFr~~ve%RQKn9@+bI{RQq|IC|>&V*e ztK1}}RK`#zSH%_8CB`_(iYeX?J$a}R%J(!!$aD%+QIosS>E3kic7JKP%pTHei zXF%Sok3$C;a*G5VB91&g5O*FNr7FeQ{ks$gSDu}>#Bt+8*ie#aOtHzhNIs0gE=Z@& zYHK$x(Jud{BTkFGAR@n3T7nZt#5eQWgcEj z{mUmvk8;HD`3e5ZEb$Cxpe0eC7+ChFq z8fT#9xYsl$x&YnAnR#}gxaYqEr69t+fi=u+g10mBNR>o_YZfg8MYdXv=Tj`*E3%Os zs|zzc5{uaR-2yF4x^=Bk+RZGT*Z4d2Oib(jFJ7C3DxG$f z6@FrRo+GTZaL6Z3wWs4{f;Y4@_i_v(=g;exKbj& z%TQQNR$jyI*k?ftmemn~H%G!JkbvteXR!^f8>rU(M1E82phK-3Zg8T2G?&aGanKVh zrsXcaTU#AQRes&A%3wtzI3agdCAsPX$f;VV8F_|x$@nv_+`_z^Qzdn)8fV-Nz5Pca z->Y0KNOa%d`~>}cQ05LPJ)xE$4I_)5W>aq9`neYa2w6Bc%IPIwT^Y=dEtZ5VBMzqE z{YXx<6^?>Nw9E=0nxL7%Hab69hcPTe>c>F-O~@FqD_AoDQ-Gz=B)aHBQDp)!&o|>Q7ok^S~znyx6CK2 zS{#V)`&D2;K@TJG?&5FQ0RkBR)l5OQ4Z%djR`iTm6F@}=TUpY2YEO#}xW8Lbp{qj| zAKhHbSg((x`?KD+DV~`bU(&%x9B(K}(HnN9(rStjQySqz6nGa0tsPVdM=joHn>t8O zLe(7rUvI#5vDMOQ-xBJt&aBO`C)8K!_vERTX#7kfVwl}vGv~T|?nF@Zmd|jRigz?J zqsX(!YXHnj49PbSpXJm|=(Pmg@lXpF*uVJ8VwYcb&qP&OsX9y_N#Ak_Auo4>SMs7H z6E|n zzVt4yk{3G|+TEq>-cP_7CUN|#!2Qy%Hn6bINl-BQNp6v%N5o1d1tAv;d*R^A+kvlD zU;KvX{09t+!V$}P7QYA4Llj=F-t%el5+S+s_*!||3%Wur=_z|-BZF!@hFXNhgwtoxxVFx3Hj4UuJKC^KIHE2L zwRKa^z-Gu=GeSP51+e6&9LY?w; z)3Qkr07Zi@5WbR{j8lG{o1%)|Dx7ysZWJoJpm4ZI3uLkp-gtBxBNk-4UHXcjlKwlo z)z{U5fH#M-H!t2{d;<16@Hx6rU`aJ1Y16|<%!S%`4DTH}2OK+LMsa)lhKz}V=AlL@ z){sL&C~8SkDqH%>&G%hZW@FCGbQUJJx?U`0Iyi|XNpW!|pZ6ecap++38wce$>A-#0 zEzTD9IomS~m1Jh9*2}^+1<$oSk*ek?LsLA-6Hs4qEEu=b?tFYC&&2oXB#n?}kR`b` zv5P1~IXRU)4#c@D>O^7y2hiAh^f94z+C7D*XJqdxDDGz^ zwYg|=qDtTyO|J5I0t%{1n1tGkPc`RqG~y)h0WOgGH}l-|`i->bMku^rc(#qB?Z7~E zf>f)FT*F$(nnO&SppL=MHa#T^LDosNXJ-92n}sAPNk+n)kVqI6jvfmV?DPJ7@$%Y; z%}ZA{jUk6oPPU6DGifPCjusNXo{(nBzbN}5C(U7ijN|QsEiInW8yv>*UPp`$_Z^QR zre{u-$hFlk1@*mzUN+QHKRBDqm%Y{YO)^t_`kjwbHM9S|9I2on`I}&87&fq4PNl~r zJ(Ll4MlMxI#gvWN48PQ;|IoopLmrWA!QKJk+LYSn)SxF1_-P0g#|UG4 z$7Ch3O$@{STE^nwPlMr6A#OUadWjJEsqG{gUTVeqg?tP=FaqJXu)yL#ZU^2tzF?aS zvhQ|@7n_@iP<#4ZZiT%cd~khl!2M;qEfn;TCo*@rwC;$Zl0{F^yhrfBtRL&$Bo36$g?9e9lTu26 zEVw&*4z0bm3fxDOLy{~4Gix2!mSGSO4es32s$Cl2UY@Ot;`7fYdbBMgMP;wb^vOAk zWB!nI-mauBu|gjDtMpq#ny_98UKAQzfP;yaYM-oFv|BFrnW~{esHg}7o=x=bu%d;` zdnoTg(xngWeoiAs7!%%oXZ&OnHX_5?o zT)tgwvsj}Zt@v`0*`0}BfckWi2_Lz5;a+c>$e8mhOH(&V(WlS2ENZh~PDm)-d$>Le z{i)!-2C3-2)OL;XVahSp)^-8~>MQYM2S2D#_U!AD1Mwx(7(Qz5;^^(z;i>rE2U7nMsxftXauP$dsW|OGm zzms~ulW1y35))H~W#j!>wa#`KwX8kPy z9bRW3cKRw%YjP{xiD(mm!uG5m&mUqVpHBP_d4v|x756$E$!^pA`hs)%{wtqkQh0pd z57pplZ}$mTaJWO4X{rYPEK3t}D1pp)nW%}q4h9+{wF zSm7`!ND)=nl_#+cO-64md|(o;Ad*t%=~$O+j-*I#pcNCM+y!!GRBkONMhC&&w-Cj{ z#mXu?R}k;XcrEbQm7a6fHKyDB!3(46%IP;5ynr3eBT?}OQya0dzM~?CG@Lq9AbZ&+ zR$T=NDTOdt7$NXQYVM1y+R19{(S&|JAk?52`&=R?hj<_F0p%nNCu~9aGC7`N$?6)A z6J|~rRomM0mztU3SiPB6ZT@y=)jGq0*h!vZ=Yl&3H~+5S@KNyj7J2F+hnj?gjE!#* z(Y#gK2Dd`KoTYK%aR$BNv!C2D0^7B+cAGXeH0?CW<6Y8YRf}lWHP_-wArGzJwcU`{ zqFQh5_iA%&KXYWY5*=Wk_FWMqQ(WA|zeAWw z8@4f{ew1fOyS62YQm$@^{AeEYjP+@wtyW+o--IUw^N3Pt1=jz z*h)PXme=XXtx%#4d^iVxXgwy-L9ByRPVcoKcks|x^^(I@EZoyC@$xUbz<|VWwVU6OlB%Wcy;GZ__Sl#5gkjqk zXk_zg8VZ;U!->(9{P+F1-2t1^aT~sbv*Mfp!{^aWcRbX3NYduT04t$iq;-BHVrJZ> zf5wa9+<;kxL!@umAHz`=y`ac%jR<;~;eG5KhC1$x+YM*&pl0@eXpJxWm{_7;DGSGn zFVI!x?Q`?P-Fnkf<%~5|R}Sti$!a-$veul#xa-aLZrET6LbHn^OP z03ZFOC++8tV>sC7?rokvBA`}bJ7wav&umJzu!C?6O;12Y?Gg3hLYd6^62?#YJ-gA2 zjZ^pd_w{J_i9UbQuRjdyw`Yxx#M~O_mB-ltTL4Kf_O?^43sFqvMLRZ(&?Habcrf4u^O^(4w$LaZ5tP7sntQ3scv60lO; zqGMyUZvC}q#>;=sh^paU=S*N>$TMREw~Kwn#PUieIs@2p55V~{k+|^d|3)Nr{?gec z?_$dnqo2aiSCPf9cZZ{s*jgkJ!70z>iB#Hm3Sr2z+1Q8gW1P$W{F3V2E){FzrlC{Z zpZ?d%XfV=idgO}?klFdKxTG>FVg$W7wu%oCe^>LKb#ZEtOM**Tbswb5J?R8lx1Mg6 z;O{?lUB{`Xl{OzPFy`lBP<8`1B1%z+hv*wvD!4BcbsT>+HfhNr0eg{CDi{q!|Q@n3H>_h(<{FTGrx-?9kT(guli4 zNMf}^$oT$^%LSd8y$&Cj6jbS_CNauPU?%URIL(}zwqn2JFz5JA^6s$Xy)k3TH)*0x zaxftZuGE(kK4+&s;}ZYmvibc>zCrs}H~U3JerPSGc5h1Zum!jELQLGgfB1|i;jM$B z3QjWz;ZQP_q~U{S>QG3=+T@K~6^wM;09+!ezaa$A6z_K@i7dlXS|PV>Yoi-rSP%j2DhZvWKAu|&+3V$gE*P25pR+C_)Cki&6?)YCPs39b_ z5(S^9LuS;ZVDd}8saoxs2CYx+X&p0rta(PiSOxFZn6mio&46*8aTVCD&K>U_<0jix zXY7v+17N4XdQT;fZ3=OWdbGkdi68%$OXVj+u9ZCbv>&4AV~?COMag|S90NUpkuk)t z3oFD%JTk?H_h1i_H>v)qRwd4*IL7q_i#=?@R5HsQ8>mK=Agm#l zJ-^s7FV-21`82q%r&Kebs+(Lsx-_H|5iGwXo;;pr11DvLkO48ZAl9!^t^Tg6=h7}L zjm>w&6R#SiPSre*B%bW2!>6CaM~n>IURTGbg-qPB9X<}!#0*O7s=I;w24DXqXvm;URG=A^VEeoXYTNm z5~)A5TNX|yU`5GF@c;-njihzQh@jenOeSR@o)8FUzux}Kq4dWMPU{=z;U3T>Ry3g& zb2*tDN#aj!hU7%AKzHx*F9&1TceMly8fsYzuE`;1y%+Ort!FQ%kBZlJsy@)d=9@`{ zTS+n>Ew9BrR52%M^2Huuf@&zp4g_SVLtogPhcIpzl{?JgNaIjCmUCo!zJ_>q(MdL`|eQroJd>;`N@^n(j4 z2O5sSt*4%UbW`JvmA0ABD?+W* zyVN%#umMlf*0q7AV@JuEj&Cn>87_0w%@TC)GY&1XmnKa4bI*l9!v*g%ubf*IS1G+y zX%Sxs5c)p%SVDIc-@_y?G`1?R{bWzhEGS{F|EpiE`Q0%A{>#B*b> z$%NJHK?urR2tOwNFj*XaA+xGg$d}o4J?&T7&`M8LpBMyLelbdG2c~!RV1u?`HMU$H ziaiJgwsFC=r6dUdC8wrrlnJ-di*=9U&gX#ZH7yI_%E0vER#}N|{Lp%q#YY4v#IKBoejV1&o zUyp4aeOdTs*I;o~$`j#}x3}wt_o1wom7hcp%|~hU(X@GVmr&RU;chDA(c(13D-0nq z9v`V!;(eUo)Y8KqFKEmH^4yI1JG0F)3Y+u-VW4`^Q-3_7_qVIOLJrm%|MRAwXVi(_ zdvR1e$7~_fz1k_~u7#UPo=UyUws1c8y-0C9=`{AVcDl-=ZPCO*&j8_{-Aj1kG?K=0 zazbTd&X3uEN2=n_c+@-a|D-JtPB-#?LIZM5iSqhRF^biCO#eV%8fg3+AJhBrj!9%H&ONJ53K<`<&KSpU9ZdG6&|TCOS$e30HeLjegx zbtJ23)|^(!V`M&@82-XB?5O&C>kZz1Z;Dn*(no6}Yo*vOp8{ zXY)xOH=PL-!}#Zi-NHajm-ODWP*#O7&aZei5Gx@LKkdegH+q9=%0f%kR7^Z7 z9+~MS#f|(2;_JhpU$nmAmOSW4g0cI}c^Z%Ei9X;$)NLH2?LkoWv+eILwF~C?CWROd zQ5pQwa^gIo+xSUn&1Otww*vYuH>+Dkgiy9#{S`_s7yMQ=rTm+euT`W|3fqR0V7}UW zbBD9|GmiMj69AAeh)f~MXFKA(R=+bh_K8|qj_{XTh|u?Q$`wiqS-@|pF&qdA*svBXN+?HeJ!y%%)R$mioBwUFqO!SUe_ zkH?xn)#_crHx+ua?6(Hn|MY>IwmF2iG?ienUL2QHzAx^G*+VvPvliyq!9w8+)gXhx z53$M(hPaq&JP6a9b60l54=mCi)o5n$)U4_ZUkDz;f@ug~bQV|6Dm;TIRLTgLpJf}! zEr5_;|AYq%j;PH%zWMz;$_lWdN29tePwV=jXo!zZT10&IgzIq=ps*p|V>|QT>|;h% zz(;yIVjl~x(Md$4-$*gaKLfstj*Y;=ZY{yf{A`X?Cys&f*M&DaHPS&WG`z(Ow{59?AA`S`Duj+*Hnb#`-U6dX zza&a-$|JXw^*P9v>C))LrZSbM*ZWVp2csp5`{Njh>2EC0A!5{re)X&Wwel;-XRNo7 zC4N2T@;)*KlqW{d{^MCFcz)081U=ZFp zVg_n$?#tHWwoDGGOL*yBn|!S#g5&)iBJQ1x7J2cc9lL|wi_!k4r5wzqWcI==q!}AsMccguS}F-fM`7&LpnNFq7Tp=!#M8ohrfR$})>( z>BRfeN>yfbS;_TJiELUK4F&$?xTOao_19LL&D<<^nt>j1C^qnl#6WuwicarsttpIU zfU~T*KjF$FQNzo|boyU0QaF^_As?G73OB_?aL?S+vT0)9d^nZkUa9>A`QD~fi6Pe7 z%*rtLZPtx;FfrDCP=av%Td2cQaN{^3)FVQXoHEFN@|pw#_8o=gCj2|lNtR}& zT9433K1dxpp5tYV6rf6_Ee7rTQuICR)`or6>_qG_>C~YV&&H;kfgs<}HO(jI;~5$1 zNerK0M!8e6qcW+VG=XndpiowzC@NvaCS< zd%zYUQ>ax*@rVoS;v%ybWrv)2TAbhK}pSEYJRD0UhAHC}5Sj+4-%0aaS%8i28gj#8EVtgXz_g*NFn`j)IopHtwZ zqs>Ab5jvdHy%x$$tAbmhkfNTQUt)|9=dbL7sV{3TCqi3EoIu1^ zD2Zk>Lw`TwFeh5^WHC3xGe%n`LK77ci&C*x5wO}>m=zcwA-(NJ63~p0F{D1mu|kR_ zt0$Y!>>=ao%|u-WqiN^xPL+U&SxGQkUu%%5%Z%ZXm#oaH1~K)A#R_Fl&DcUWUMUJEM*3MGC4Ai>CE9=_pu*^GJqC|EoM_|9UZCF;-k=tyS@bk&* zKHKnO6(q**?aqT6hfJ`jopWe+RgilaEbHH~#_E0jX2D0lo#>~X%xD%RqNPp}@Z)I; zc%v+$K}W<;3{C&>DdkI5Ly!8-m=CAeGPLTrmX#Pr;rvIV#HIan%Wd|mpHl(gkTPC- zv~JEEpQCWVlu+t6;78IRGwVAgG%DyuUNi;}YtR9|UA@o31uTk&35=dZpMmfJ@ht4v1PL ztn>(US53^c+rk!icoM#_;ECXh4$tAy;%WbjIfI`&($eYz|rn-BG!7-1}P8UqBZTZw6EXE=b ziy1)k0$L+@1JG+B=RvSF5M9o<*4NiGpBfbz@|Tj%lbJ)5ZEtm3)?__MjA+! zcfJlBs$WHgVYqVY25_zzYZ=6&k53F4V1ACOeWV=eK~A-Z2>`@m*IUe`iJUG~bB{tDM*j2RiXMzWy}g7G75pmK!(Z;EHIoT&-ToDB|Vy=@v%PO93ToHTc3E)8<&coa9C^q z$jPlnNIKYju}O=JO-;8go3bI6teOa z7I-z(o4-R|=k6jVZr$*TQ{tT{dDe4ITCynHtdsqaAAkp^jT($HOQ1`+$Q%a5EJ31m zvl&@*$kZA~R*J6Fe23&B_Z2vCd?A4&#@F{cGKMzVI-UWuVI&vq(=VaJJCH4Y8Qxh` zzZzlMau-(WCb~a3tZ``&{aK*ms66q*gkDTCg{ujtm1YFQoRQ+}lskZPJ`?f~w$*Jt zIPf$g`Ks*GBj6WiZ%~V_4EN*7TuY-dt0q9_u&^A;s%^8p|mY4OXgXYL*VRtDCo zbb|0%aeXvTXAanvrA4>OS(?PGPuE*&^{JiIOwmA<5D{p^Wpeibx;1}p$ar$W~EaomTaoGhsX;ih$*2`0+8(=d{K+0ndmYDj6vWkN-?G1W=CayG{i@jXfA zMfIQMVvDeHj^1$}ProkhWBC(vkp|5?2_e7Ad`&~(C)5C8X0gX5+LfsRkho6N_xi^B z!RkebKi3x-k}BgjV!SvE-c!jYr}F!VoLsx=cZ4ug4!rQaMGyPP5Mf7nHy>HUyazlI zHFv??OWxxV0RNlr&ON^C2Z0x^g`Q#bgt2+x4q!OE~pw$?Mk6 zmIPYQ1qhw3n}RgL4GFT-q}$Ffz1%6kmGxdFL@5V1CJb1Q+JrI5IwraaRWTEcH7^Ds z>h$=cV@g6FF$;05x=Kb;PvVsCV z5CPuOB^m4m)Ijq+S!#1Z!yhCdkVK4C{Sl=z5FEDS`BxiDro;thmcso+d|Re)x)rW2*NmWV6lJE!`(KcS$>l{rMkKV#l`NHO8NrA`SJ$FG1ao1 z9~7q(-q-4#d?=S~$*L@h5FY`!3Wuev!{$2z3`M7SZgyLtelxtWII{PX{3AUM;9R!# zkcu`>*fM+Jc23w(REjeD(xKF79`UzV(az z-j2CJtb|lCrqQS>5-fCA!*{7V;GnV;!uJY`B{b55bEL<2mDHe}g*U+Okt9xpjFQTi zBy!mul?tGI0M4pP5E+6937E7q5ZejRn!jq%@Vd^bH*-fu)iFwulm|3$tCf(ZWGeX? zpKLiOs-jFCp+>~`vhGZZSOadMvG~Si40Qi&W$}WJe@v>+N&;>#0n@ zfdi0RUkZy~8cjbAEKkZpF(RxeEg>Zd_Pn|PE1)b+>?up2=L_jIFE`0+0(~WU**pJz zMJBnEp=NgZx1doJ{=W)W;VPR%2Ob76_U}<2%p9@p^Q-;EIe)#*^$qv)EU8buQ*_jx zP8nUPH)CW(UgKaRx9Uuni9d7}4gW^RwMpf4MUHO7vHSB;janu8+_YKjN1j#CG}&!z zpP1N9We*0TfM)$Wdwp;UW7OBkrcpw$48whAU=;N^?}*QD^}lWy&c+|VvxZz=J^lsb z(y4D$X|VpE0IdyD@}(DXwgM>pnE5KM5Sb|nii?@^vR7-*l}d>)u8Iqv=~sXNzHbtS zq&WD&JCw!_j&MM7K$+f7BQZfjF^g8TX&I*&G=SyfO|;ovZhQcN9WZDw;rv5)iDt6# zMI!Fbhp0*l+l@pX$HQgf$wQLs6m?CQNS0xN3nHUhQ4b1~P8l1)r4sDo)oqlLFW)%| zwXjXI?l3y=iBS<1IIO8S$HW5_yo4}telj`L-R&Y5J9?z1jINjr3SmKVw87EFL9@CA2h_{C=AK+xD7G-E1Z5aXnSiT-8&H(W?YGy{SONqL zU|1M=r5>4QC_UPPCn-)3zb!%?cQUZ2qcmncHq!!7s;ln+a^M`0WfmhYTkfMtvmXpr zV{cg!8fL+jU}y;(nW=yyF*j*=|V8R>334TnQvL(Of` z!mAY4sOjZKO<%UYjRCdpx|g)Viux+ z!;%e*!tnnZ7dh64Bd(8kE5gJBEmeXocVOeYxGtQMT36A=oHH+$iC@WmEyWVPFU~b^ zE|e9#qJc<9RZN2rJ4g4K$0Uu9&ypS1xA3O2w8R_lQy9G;64!ek#LgVB;iZTWQ;|q zSgsNrKA)=QXJT0-u54MiGg`3zk&iwoUqmikBQ| z|07K)!;&o%!9%wU)Y%r#XbBHGlE`8Cx{i6X8-YA!dK#@F7^2meEs+7a~kJ5PK7m8em!A?1>L1jLNbB zyv`2{#K8VV84z*hoPLIRsy@F##f)Se4Jn+mvRsJCXpG=aY`>|41?*B)oqs+8?64Fn zkivEpt=?;s5TZD=$7@SZT6qlpLji$SIkm$c1;Yk^c!M^@41((o2wgx$$rQ)6!M;(*H(ey zzmzbzAp)?~9!F$VxRDmadyxi$UnxH zEa6>N8e{_IG@$j?sxk3@&Bn#y+#;mHQvPU}1s52~1Wf0a&k=5`UIcx3yrDgn!g06w zb_wqO$sxIn@70vYW8|3V5O{1;vpe(7vJ(c@)}5L4$V1xbw*==AZr+xf*5M3vr;sfy zlEjF=(@~0~%?k`@Mti`ccchBM8-*^Jp#HWtYDzoaQzw&$9-%(?E=^W*1;LJh!ELMU3CLxm-EatJ>6ls?bL6S~LR9nRCQ^ljB z%MVvmLC9%miomM#=Lo+UO!vtJnpTYzW;D{sHWE#9@uMZhO;JLzK|{{PL|&350tl7p z1qyfp8-t@cwtt6gIEzY1+6yRziZSpf3Z*xpDToJofT@9_UG>WBp&-fvD1!2d|BL{m zM&~DbWjh%I;|k%ff)3=eo7{|{t$Vvq6jAxjo*YRQP^r=|wARjilL|}6XG4J!b#Tj zfPOd>j7+q}PhR%#h%evtz(Udj;dhNbz z61bqUOFqcdk*e1tA|~xoE_@HX`IiyI6bqTPwK~i3Hvet;a-i0(7uI*7Pdpb2x^p72 z4&aftj8tE+RY?hU z1v%qO^2K^hDqN+O(BQaOI^U{{6A#M%+5>rIEC@2xKG7V~rH!RLf@u5ChHsE9C7dWJ zE-y`zb0XBlf;%DsGf&j$=rlThq2p1WS97cZ@2xkwp5R}I7dt9TNy=RDe_~;H()`aG zOFEi^2pTQ@X4t%Uye7ATh?Ptum`pB{Tda6IBfFCWo$>qb*4VS$_Xw*Xb0OSXYNY`# zM)CW>&Oqu#2Dc0Hj{@TXLnx1c*j=`SI5271Z5R&G^j`QtmxeWEcL@=0!`grn`78Hp zn-|V<0Yu(4lLh1KGzJjEQKMXOa|fk?BwjJJgN#fqwn)a@Y*$f1K{9#kHX69C1bx<_ zQB8tGWIJZaB8^h6A=qqvGEGf{Ms&J38nGJ9|Db>hIwE+pJ;n0lwEN(jbyXr z76~61LIc^dwnr^IP?jdc%EWLU2o`VeTLPnQ;oCRL=P>A;;H8~f{_QLV__6F5=vk08 zpdL6t`&;c0FyX#fUcEd9A=^*UYPI8qI8hcu^z* zEcZsLGP>G+0U|nuf{hw-02BfQ*8;)$=B@)~3`Aj2zDCRKz*bW-XoQrX9Rbqyfg#j` zR5}0#CoTaYbDWjsBJ7kr)~7B*sVfv2Csi8}}qzJW#rqH={>|J&h&o%4XyD!o_VKrm6( z&#nxG<~BiqH+A@MkD$Dfh6AEGW(*_xMEaTnvI%HiWDBFHo3S+uUfaUKxgsedB8PVO z=Vld@3xh1Wr7&TKYlrNB8v3y`30uV~UxHTYI|QeTEGzSQpsX?D0j^@w2T^ne9WUC*msEyQOU+E2)ttHfc-o6JRUfumPd zaYND|yH(Y+U5l`mSC?xhwoJB9G95Y*FS3ZznZ>Z_fpjly5v;7qH+BkEF~(+Y_X))y z>Z7r3angQB<>oB8om z!mnLJ5K|myZOHPM(X|}mIjaI3S|&gSFv;etLE$KLeA^?(ijcUhAs{GGlmW(qxir_K zsA;4Pl^fW}ohBjNGXmyn>Fl?ZCz=ug#&g8T2m=Y}`4iI~@mfed1CpMtC20lyn{<)-WWTt#kY4I^o(eaX3L+J9T{nP+GBF3d1NBWGy$CuR_s*LBcQ^LbOJiL(+5P4s8}lcqh? z$uXam*lL+3;&PxuJ;n_COs0x~f(0)cD7njmn;ohf=!E9qhy~=6q}|-9owj?TO+dXC z-4Rb2rG#ZKm+m(9L3_h7_Q}(hIu1EfV6SqrFq|^C*KunaD*4n)gha#>-jT{U*xAWz zP}m1N?Wh6(Ea}N46y#NuGczb=U(zoun)4?IBje;al}MiL7=|q5$)afBmPCozJlIG& h1{iKYDIA5bqxNz + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Semibold-webfont.ttf b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Semibold-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..b3290843a7a3e621867b169c8487de9a8c7a8054 GIT binary patch literal 39476 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 F{{Vm_4C4R* literal 0 HcmV?d00001 diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Semibold-webfont.woff b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Semibold-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..28d6adee03b8d2301e06680fce413eb94887b57e GIT binary patch literal 22908 zcmZsB1B@tL(B;^+J#TE=wr$%s-q^Nn8*gmew(XgnZ~ttvo9ykJ)UDH1b*sCR+v)0Z zlM@vM00j6Q8r}fN|H%yI|Iz=O|Gz_2R9OZ90I=+r#rY3Ldd16P!Xl!-+~BW{_X`3* z8~_k8c{!zD?hpU~q!0iAGKa0N^mcy52AJ z^CuHRjcg3;e>v-4|11CiAfQ$|>mDOlXM*225WhC`zu=~H1PeE{H?#TW*nih}|CRBP z(4GQj22Q`eaLm6p|JnWr1T$+7(_fAo06>ru0Kn2-jDGEueq#f!{9?CGW!lij z!2Ne!<=tODg8u-F1q5hoU}FLRpz^B%UjF8o=l+;$Y;Wh}3;>||s{_9L#ser0xn8n& zH2L*a|GifLasS~#nCQ~Y#PBy~jbB>;u>W8VrBM4T0e=B7$x|@%pB$4u_xVpwEn$Sa zuN&zb>+A0V8$yC1=o{*T^t)fW)Unby({_Xd_Nst zu@ya++s#_dUc6tHwX75&vG*PxJAMy1Yu%MzwMgF-2ujRRkRnK1eNLs+s(<=dW^i%0%hn z!!KkBgPkw`!czW%O7U3_!m4uWIT8#~s6Q2^tU^l2IafI6NZy20d;r;%Gxo~4c*?-W z1&i`jmUzofy+vu}p|0N}uLEfj4((h;;YMXgZ4khA4{|_+5&(zpK|CVc0qighazmdG zKnL05(caoZ(DsvJgdny7722Z?>*LhKpKxyaXWD1BOYDm^=^AH7!iE!R)M4*T^gN6$BgL8uvnQ#?o=M7h24?_C`8jrz@c zbj4o{3C&UC|2j|&HxRrsTpDkq#x*nmlL^;B=5Xe+wvTT_hofgF9t7AyFxg?m1ck+z zOEH&c`YMXCpr2^eVrz#kRtGv9Ei3$8vcUDm4j89*nZW7tCDALKQBA6XJS{Etr9<%k zq*U*N^pNeLWQF*CqAO?c7t<=A&nHs;9Js0QlX@K_Yse4D7v_r!MTcO)vS3Z^vVl+K zS1t+c2%3FFT$uEP<4ko~1*n<_(Fm_YQRHl3a$#^`wjxqZwPiQs_lwPfa*aN;(HXXX zgS-2Me46dy7#ko=4}fmN_KCEC4A29q>7&&2V?+(GSa!g%?f%)++}zvfYFuOm{kx?V z&WNT$9pR3PtHM>`s(e+puF%YDS?u}B{p0tbtW#mVe^YBo1hkSoF$=?nLT z^Um?uczQDXO9=6W`tn-ERB<#Mk7f}6H)(P-KbjrSPZpvIRfVg@(bQ;aFgKYSFGv=l zid03brvCpE|HnlZF8lM0)!Dk~j&4V&Jbd6Xo@8zk47yIU$PMu+wsnKvZq;T3R(L?u?{j0U%^_sasWidB(VKg^#KVd{e zB{fi+mAtudR3RTusnIEDcPisrsfzuG^0M-0o7rKbJ5RN{F!hPHMKrU%dA-23yFj)| z5nsR7va_x6i9xkc*Qavj30Jk$h_l8M^K0}Bf0h6-l(~vkXPDJWxX?5Ar_E@QE2jA( z#rJpxy)>*WQC(BD7s&_i<4`UpM7!m8kNTfI%rMMwRA1l0;Q`VhPO^r2+(2G}PIAh0 zc0z)B%&1OZAF#sU^#@;E-w2YP{_XvPoE`$??E^@nj(k*kIBW7z7z_>pI!fc8Cq@8K z6pW{S2B>)>LJ&$2(0~@0DVQ9XUkIE2dgvYtFml`rl=wS<3L~RC5I_MU7V7U_`d<#F z;RX@<`X>4Y*+Z6-|NfD~=cmBTo5>Fe*Cni(DI8yFgT{QLK~9UwrM5fC5%9EJ&l z8ub%~2nS{N1nw1r3QutCIw~%CIn^#_5>ye zMhbQbhWBHM6obR`YJC5IXO2KG_5zeqLDWPF2=EIC3V>BiAc>$8%cCFs)c)ZA@ICtN z|MdU#{9t_de0?1Eje(2d;dtBc_HBcA;#qsv-S-88+rUTQsqgTW+$KDcE*_Bpi?V{X zsfzv~=nJj^z+k4XvcAO0(%$6m^8N%06znG|Fx*EdVX_f(<>h*_H6ovskm1p5Xdv($*+3l< zqX9Dn19NtyzjCxlU$wfFmIZEjvdk-PX_@W&I{Jj|cD>!zoVd3;M>d1c@=iAkI#g$8xOWOB%x z8x5wxptqnLawXKkfv5)2DWY~h;==#X=sl)rI(a1KtA2?|4Nl2fU?mf~na-?i)$YcO zG!ibB19ph!RK9m4NM0IIJmU?=?$|r3Pv|4C9aY_@ut0836dto?<4Tg!o_0;HLas`@ zb3~{trJP|ReGCsW)x8?efm?y%;Fp{0maRbs^U#!5`+h(9 zLYw!-#?O5KeqTbNz1}LVP~fwHVzLgZq->6!PkEI`hw`%&PKPsE9G-LCpskJUX0g?ByLaZQ zx24H+9#TEb7LycuM?Zfs8$5k)2lvy$=F+L|lq#Pr0AHrB2mnTI1&)-qye3Ofy>huf zf$#5txz8~nv!v*g!@%rAH}laEn}~el#l6KoL9?QxDV*XGw3){9sTCpZ@>SSXoP2&5 z=5l1L)f~c5)E`-JK_%f4)8cx7PO7519XW6L=8bf3ykak8KC#RL;~GpM;}I6RqD&zP z-<(uXXJF_F^p8{5$vQp2sjuA_1?CE4-e;ubwc3givf2movk(wuOAbp;f z(ROJ2T%15$M+jch&|M}+TR?AFxIXkl1ej66Rnil8Y}`LjJD=tiog&AM?^$G1QE91Pr!H{8pae82ft@PZ7>kMSJ z{l)j^f$ztuc9q1rSH)$zym5tNDLBDU@KpHd4-sOtvnQhXNzMif$6n_py2{Z)&IV~j zZvr~$cT4}yc1?MBG*2tAAK%Dv{Tnx{9D|I3MO}yr6`PJ{jXJNSy(Ht!IC`DRTKI!# zLJ>cA4|p-iKTTos=Yq-Lv`PR7B7U6t53c&UF ztivN-zSdn0_+qxW+>(af4EqA^)Zq?bh1%dQuL{$;bdspl(_O4#td8nE#mU2Gu91IN znCS@u2^^MaYml3jxh4qCONh-=&2B+9BrR>HrlcXDW81dKuMHBWLWNT+NR%vvQ6WGj zw_z(%Tnm6uv2pUTpQoZRQ2of+V126=Wh4C?Ky%iZnZVS{IbJj#et*S!1lQh)^;rL zVe>y51ErhvaPBPp#cteoQG@MBFJpQY(|$pD|z^*eABQb;gFiBp(-VlUq#2#!8=cCLyX4o zU=V-^k1f6bi9r~q9Ab67)o!QWM=X?$h6Pry+@S66^l6s0RuY?v3W(ORh(|+V?OO?E z7r^!PU#Al^*U+GuPmifa`P)OiUBlS^j*fmjd;16cl|>=_EvL(aVR(2+4Mq<`4rBh| zdsMUD_dO=}kIrGa9CgU_U9ZpZMzh`z@UATa4_a8^?_)3SXUU*@*m+`@vv`>ja2yMU z1d{mYo>2(Qq8NWa)N>HYqt%o`cS7F;l2j^!i9HcY0F2%V@r}yT+JhTr4gVo3#v^8Jf(F6SS7EX`{=D)YUT+lcU_c zQ70aN#9+KI$hP2+d;(?vye#8H=Q(u4S}E=m1_BdnI^3v({%{_IaBTs}I~yt#F|IP2 z2}F~Zld{F5rq1rOChM>J!bsH`?bquFmnN#TJv*(Jh8T3(x=*#1f0^Djy6maF9yNI> z#P8Y&A}n@2Jann1hr%1>eqZ-)_&W8Da|*neAIUDYeyB0pub45t&p;OuPOwER4N5Kv z5D8e~aIGO4lYbTs$vY8bp%A1${R`0qh|Eb0kDaLCXkZv|c=;^L_)PkP)Y0(Anhe3(IjZ;A^I}EC+W?eW?KhaUH;!){kczTMu80uvrKr4j#<__`nG=6``*#uKmwu-dLj4o#~W8A*^%6 zYT`-EKLwB@;VElOr^%1g+DB;pITey&YlRQcgnfp*DPT)}W-u`(;29BsnKet&zeFYB z)tQD<2m(5HbtMM-MtU@8TUiZOQ`8QDImTby-s8|V8ZYhbvgi`i4aV>Oc?~}6YrqTr zqt-oUE_=gZ*+~kYGM&EJ?d*L+%)8B~|9R!xdyeQ9Goa}*%)Tfwkbg!w4i#RUF#;gD z9}$X*(O)qvQ$RovnqWfEhNIom?oZQ7VoJ&wM~YSx$)a)tS+Z7h)}=QH6ZE~KV&Lv^ z;eE>4FzQB2ee9|mACK3>hf(X|jfd4U4#va3sCySTX)kQ*Qos00wC)7M2w#J>a3-Nx zw{c(dYoElITzsXacK3yGpZ=9G{&g9}=Uu#23D>+vDB%!6nPSEScw-bY5yWHFv^;xq zIB4j`(6wwMN-83XR6$y2)bjxOv|?pCjtg3x-o0~iYva0X>Q@_{g>qeV*ai<$48ABQ zD^scvYmmqnj~{1Sla@QwQ%KbJu;cG6C~qo-A!UVzt>Wrl3m2UnA#G}Q#vT+NtUwy` zZ49zbU+6NNf7lIF@#J)W?3w}O+PuCKisHWxOlmN(KKsa@kA&1CDufy#VtkYtoXBMb zjIvzfqyN0RU(Ju$R;%+-V&smplr*<3tO!-)@yLD?E^F6CD+(bkJ&;uE}EUZyys_X zejL27$qA?D`K{EZmuv8AdsA`n<)wa~yS;Ppm_Ksrj&CGMy`Jq3D}bHNd53$&kCDYY zQ@FZ}#-reLU$6wcAucg*3tndsjH1U{x{$o zXgad)w`}rjky#iL9Uz>V9LMIpad)?WfuyQMxM5C?7mSGpQ7j?`%~&2~S-et0Ltl0o zf)*hem1PpZ>FhXrn&Lej(C98Y=ox2_a=Fk|>#gf*$gTUT`qnso+v9tQ#(0gITrItX z`Uq!vMT&h6@Q{BXjaub6rm@4@p(;vM{QJm=*^WD)uMrvOEch~e@O1i38xcH}C|E@9 zEa;?|M9G>yW!5@?Z4W(ZV_ajTWsdR{Qf=szlzoZ#%naM>9dUu6Eo3>!(l6fW5C0;r zN|HW8+DDyG0D?PrjPRE(crV;tB04&>7*B@FTy#MK@1lF41kb=@xGU9OmnpXXwX5i< zYf4F!LiU;so2h^KrpWf)*_-jFQ+NlxnCe;z=M3*Qw6H{YigYM%Cc>L?VpC4uxIh`C zxvMeVYqn)|uFd`F-+0LW_z)uLLUle468a7mAJJZkgOi_TziS;!9n_y34o>fnXS=mn zzT9p%S}xil)?(A*KEbj;hdSp&EtAVcs!O1cKZvGSk4jLWUy4BCVWck-RBf3CH2ZH2 z@*NJ;bHGPuT{y+JBP9%cpZsj!;%dwW)>}<~V+e-5>u5-pj~5^q%)_H+{hD!K142bW zYNU;q>OgZ_6QcOBL{pN^a{%AH**C;#XR~Cc{w&(6){Vz&z->LB>`}`uG56TJ->~_9 z#;J_-T)m5ExLZ8)^+NaOlk9gPl5oT!7$ms+f~y^#_o1S zj|CzCf7Lx)|H3eHH6oU2NtB1GRBlQ$F&i*O#wNfw<@4QHghlU`({;8W;9-Cqex-eZ znlFJ{X$?=)Me7q|nej|+S$Ef7wt#?f-qc9==$-0sIEWM+>JMGFA6g<#50@0e$HK1!Gn-pW6akOtvDD2&+V?Za9Xl8KHcj#=-bw6@rMSHkqPlC5%ozQ zYX-MX0e-kl86LE#AK_?a|IKUTVzSRDEoD}lB>S(y{&ZNFenOeGiJ9NqQF(Z7te16P z5O}OL(Ay&T4Lont^Y%xlwC?+f%9s9F{*3LX+R0}pikl#kw)P=axrG|fp)G#i(CN(D+DOwU<$fsE zMfCjgFeDuxJaW;KH!RUKL0gY7#uT?S`Qbj+p;53x|C-akNIJyzH%!>`_>PO$G%hxlELMZOO=*-$I5_Tk!-+4YKD%0vU`W z4)@lD+imXKtB{Ju0iA*liqy#HL)BgL3LVbPIn;&z&vz&EcGRftO>SyMr_Uzut*+|< z*gM5n(cN32-1egYzJ>6?G3E{p4^1*8);+|2L7iAx>wxq)%VW!y?aEV2dZ**3UmRV- z&8lO|BUAuW6_irkixSifg)iYLtCgatL0V;0unGVM(YJTr4e0A4pn zqdJ=*^Bo3IMPK?eUr9pt@4~Tfn1VUr) zU+-Pl_;NWJK4BQ6oHJd z?J=rsUP|JPXj1g1914%mWu@KD&+c|vmCcFtqT@?q?9zN_>e6(4W(*RwgG{P8dec*TP-afUpl>YL#BfouBYt=gzl#2ZT|p;@)^H% zyehQdF%bH&oTO!>S5E&EXUHrfegn7gnbmRvgLyS+);~W_}I<-q6{1zme^XY@8 zn`-OH5}}w61@}teBW}!NGqH~zZW9gE*#=;FCE!v8WCN7K@ICOFsbxE?;P@X(f{2xu zBBN6b6@iy)HgM365N^84h|OmYhwqgJ6ZR4ywz2T0@K_fTu0$J!c*H%`dI{G$Eq01W z`T6X`X`3vzfl5<-?Q$owYZMvo=co1;zI4lGmdk0FPP4Cu_Q!Y=`01Y@WKMn(VSy9A znNw&gUmNx3$(~X-j~F{IubFG$!8|#(O=2=AeuKP!A-cgjD;;1?7WyD^!?NX^ZF96a z!>&VOBVr+;ceqZ03&HwOrO;c|!nY7Vfp%%ZlZR&@&WJ{r%)-oBhB9O0C1k@tCYxb4 z*w?xUaOh_PvZoM#f|+x5K24uO|2X5skax)$1c3?dPw>``)C@Mi{S}jB4tFfqrMBjV_f_UIffa^$as^ zy+p*4pK)T#W$z?RyPFPFUh4bFf5_uLY;Ic&G4jv|`q=T*U*Ua*<9e#SIoaH3SL^K| zzW&?~nroO)8y@2L56D@50`;|%q* z=F_^(VolPCY+{T{+osUIsI6qwwrn^iJ^)K^Y3be|0##kE;c&fK>jT{V@qC4QN|hQ= zo7dKsXQtkv5=Id`K(#vDwz^hnU*I~)6y(&*N5o_v%Ww(5iq=14@` zSp1$aPsX3 zf&0Hw`bF1-I|OCDk8*y?2VibYZDTZ4%+J-qtxp8XV|%#<;-wVJgDT^2iz!LlK5^Rv z=1H_qalB3Xmhw4E{Wc83kDB9IK7fk`w_R5R0C4x{(;xe>G#^vA+Pa3uqPT&1 zl@&5JcRGO|KlreMJ0hz5kUrb=DIqrPo-i*u{nh*liH{lFp;H-1IfjZ77{P?`!8274 zDoGo+MseETIJ7ixzO|AgRas1SM?y~UxL+N6>Q78Q(hi|m(u(dbUrv5cxLXc~Dy(*N z9pH$sr5Dk}sb8K5yqEO6*Xemx;+w~!@k^X7Xv#XlYVz{Tjj!-yui%<$m9&!H2O|+x z5btdLI%pIbXbOx;+e>oVG?GQy0V&{da0>iH!G6(DoKOXWWA*XskmD#kYrTnFTz+HF zC$3~#Uv%RtDN4&*R2k1>CZT^eCmgV1eIFDD#|9oa=T76>Yo{;Tv`$>QJat30>*6Thwu@JGjCnrLcK+Yz1lM?{x)tE4*` zw?zq2v>u1d$&!S_l_Kj9fy?Kt)rtPrl%+b@ zRisRfd1gzAxyDPxf9AnlgA0Tbho*NH1`$g9x*lHrS2!1ZWxP6ioCc~E77Gue2zlQJ zO+3HHstS;0AyESPx5ckFu3WJl={gYZrXb5oSCQ&i8SCnX>il(#`SjB~;*aNqRiRyE z^q9LN<)YA;MQ}OfZ-K`pNk+?vNzzZE+At=Tz>?>3v0}U|6C=9I;lSm(*0?#R!zfrP z@ZHOIPB>T-+b1-J8IS9bg}{zc?ang8M`_aewth%-{5W!WtTv2zw5u0zDJW_Bn`;wm zBR;3Rlbg!!P}kef$i|kOGmfbf``xT96`wq~8oD2`^-rm}kh}>XbqLo1vvG5#Mg? zy+^yXQ?FN|pfkenO*WA6%JflZ&AKkI%0;%%`$>^bEmH{b3!%j~Q^P*}#>{&TN#t@Z zQ|J}OqVJ8QCv!-vHo(XvoP?knl`Ix#iO&o|J>@<+ZXjK~glODXZtmLt7w~+NFML#D zc4z`!=A>Q5xVNfRYFk~N?o#4-&j&YElg%>HZoshx8YCLT=~Oe3affD{l1#<5Vr!Bs zhtu;@vJu4zu`YB?sZv;Tj(Hkl7;R82Y;FL;4}dBFh{X~PcLeIgt)*e%FH-znR#hO_ z0B=6h%#HXUj4jqyeujBQPw%B#3t0(W8e3I4T7Bg^(!kq1V77qE<8{?bHGOik<+GDy zT&wpYcT9+Empl^ICNT4z57kQ{4#oxx1{;GD3jWw&y4Q=pnlUgPU^e?Np)W{E(zfUU zOJ*DvI1~nV)~#(eAajmaTX|dLTOFfLodC*dT!@eXbmxQK?7!v;JELn>z1d zs_c|{)81-)>(BFIMu+c2Wh$NT=bQkv?RQV8(74>+8y+vtFeag(;n11&h=mW&VdDO^H5~M zxlQX(hCH#vAnQ=RxChUC)Nz69!VUNyZubLVF$2gRh)h z-=RzO!hGk1H}#c+Bg@oKYzune{+u`o+fy*Zt#Cw}Y3vNs#pf;5WTm22=+4JG6Au8z z&}R+gUWGSHR)A21A*O~h8@sB_>O_!3oy(%XoZ<-M=nI;RcB0aix;&bM`Ha0_GmcfV z!mvTv2R&kF@d+(t)104xo9%Pc03C0#>%Wz&QL@RA_q=@Tf|K#x_g9ESVr~C?d}8a- z@vQjnw~_jtHg`@G4JG1z8u{u`7^&;1zGZMsC~eqH#$+b(F_*rMNzkdnXuYp8ed$@I zDy1gp=3e(6^*G>upzh3`JPWj*h^RQOztJb?6f=i4?&5S`Q)HQiNN})uAZiEVa;F0r zmz^%`Sr`F*A+j9!vy&+8Ld&SXMsysaf;e`f^a*~_$fqq7i>J?R>}=$spKb^JOwygk zaIxM=25Cldl4lepdNY#HLl}{aEh*v)kszOv4g8z%Fee35?NbycUUhU(n3}qt<)vXE zoHjsqVVXm*LCaW~#i=o^4(o?*_dH6PknlkKqqs?XVqCfwB%-Q#mGp6wapYIF(DVVH z`}r6xhJU8C!2SafBy7( za5KaEe&Z|kb=ih7z}n-KX5;&V5#{Lw&872$gH&ipNIq0)a!d?du z34}B&O}8au_QWpr2%r^{`Sy%&T;Gs~3)WQ3`btC?m5X~~hco`Yo4HAW1~rX)Fzz?c@L#G_<xzP1X@)^Z~Ur;hR5LS5viu>5WYVTE$V0Is~`4E}}w zX2Z%QEQ{!-3se=1xhBh$JzZDv0hmlm+)}HS0ZZ2rSJi~pv^{&#Sk;F`RY** zgV{}AgDe#APWn9d_00TSloL>B-Jqu$OA`0f;}TM{n+xR8_M;kx$QJGf&&Pg|x?ni% z+qW$i9>)i<=`02}%eV72Cm8%(*FtOu9l9HQX~CdOh_3hqNluu8t$zDVtqvNPx7eZ~ z-deJyjp@@Ch~w+0(Ofr8<5te*q6f*)n0A*LJvH9Cs^{X?lCApA8`!O37wm1Tx7Rnh zaXpw0mI0Qx;kDRjU&qtHbq^;;JM)vw_41J_Rn>XDWUGV!TZL(pz7XuhnA=R^XSzYI_78~llzsyZg1C%@?vJ)Z{G8c=goPHPw zFXuZRoU`BS@DXBh2f`*!Qj8OZP7&6%BZt#KrHFf8Pj!3)k%ukehmT|v_%^G_SlcER zPy6`|McG{7nb=R}ej;zT3XmHMs~47bgLin#P=1t<#Wk)=ku&tBb zb$C*(3|^x5ZJOQ-5GNd}MX5at+L5IO=j%k2mwvke;#EP{6jI|7(=5CPxvCWG4{^fl`fCtYqUVK1{Ail)ShIT zA8*2YC)KNETsD@Ft3B0B z%#kxX?G&m=oHj$N$7RT>U|*hJa^BF zYJ1u11L$e}1#uSI51@1<$j}aRmM^P_T1IDUrl!4!1TOkWKt3=OL}M8-+snW}t6Uo2 z@RsTA`7;do`cTzWV38_A`jStyh8{KpOm!%j#sWuepi56x4rj?2YA{<`@E$H!J|hHb zq&QVFE*@P$ej;347`6m;w1>z^k0zzg0SO(sIFVeuDxhJR-8H=$ z;ZFyJ+iv@P`CAiMZq7(gG%4f&iR+@XMRC3K{JEWJ(#jWx()qu`3=390$v@L@KPE*S%qiyqlQat zDK**WeY?JPBQ}k*Hy@2hz1khxDX8dJGqIZg8k!dx`gf68=Nejd#% zGSW4@a8lv4FT(OQN`KS1zOTu%Pb94dHHnga0Sg@jCS>1gDP>;@; zROuoa$tK*PzIqu7TBEXPN>fZ+OgnO-=CriV9}=ChJbAF{?}4Ui@%*}FJ-rb_r#eh` zf6|~kZAXis)$5Q8S%S{n}jRpq!?8+iP10f)4^ZdLeMPogR9{IqDL`GQj0|j<6HyN4^+}8%J(4NA3ks8vHy&asQ!!Rr5!Xtuj3c zjIy}&9BPUrE-NU@0*FOnO!DChD5K^$TLhKjfpB(gri>fwPauESPYEE)ryHJ#c-+6P zm|4KuF%VRi@9J1q5eHp=JelHZJ*u4eFD1Ez6y5fwUmzb{MHFO?unQg9=lCn%rr=_3 zZ*NcSVc>@ROk;PeFRB@`Vdhrsg+J-E4yLGj_pva-huDcoRR%LY8O5#Tr9()E(k{Q{crPBj$8tJ8Mtn&pRts@8iTKT93eHna|t<1f_jiI z9kMvMW;r&6N$18$=CJ%A){~3WnFE{oRs3aBSd$qe`B0(zo2B_F~;AGGS4jNmoL1p@ciry$;Cpfm?;mQv{17C1d*Gpz^uDx z+AZ&Z3rz8_S}kR_```!DRD&Z(rW~@a;Kk-7EdwVSn9`ike&?Yd$505u9gu@Z$=Lyo z78I$26IBD~gConN`EAPGWJA}HWX4U$~N=RVJx(k6_{1B-a+R^n_uLEn{yVEv5up8GvUv!z7ctc%U zwL%hYj(4kNYal+xz`@bbTf1swZhB3&$#1n^$@x887tTj7czbO5Ep&30V~sfzgNSWY(oe7>lSg5ovHRxUY0!C z{A)iv^$}uIzg1-ad`#lnJYBNO0urY78Z`e&m|8N1?JG-`($hwWxdR?p%P5$02TG}o z$<9yVExdIwjTzdo8c2f$c|a{{w9uiwhK(yrMO7!h6~=t8Xi3RI4aHXmrWNO88_f>u za-yT67w4lkN5RgHlzO?f_IG?=_NYBAWu^NrwcMTC&p%_2L!hqGYi|pD=@*Y z_(kw4i4t%#S&L7?UoelVRa4Vs{JM`u~z)B$}4aWIG(F)apibP~PsMYP7wK_R2nE zwrp{IoI+!_H`vNQh6`3crn3}uHvQ!FzmwJ;W&l5LIXLUhz@{h8Hh2gr$arQymODTA z9=vl~y>--HusH1h1r0!7k3Q@qDJgoc;HH+2O~Bz)k94DbAykCkJdyXT4E4XzYD$R< z5j04lv1Do!jL9B2M=Fu;K$#|5Gfph2JxQiXBZ|=IAQ%+<^vx?03@mtT35m7Z=9=@Y z6Ga&H3wo081N#~>W?I^Vt!X=bT}M`m?SqlDSfwUG%+^?S*5Gmx%$Sjw@B@+Dvch<| zH`rp=$V8q6fzoiAeE&2N*!jwgzVR!|mOdwpZKhy++e3>OBNSJb8?c7%8=>9?Hzk_~#~w#)6>;+Wq(rcbs8=)oR!bB@WHnWWpb}Od4q;)T2t^8bBAV;O`ZOc(pN)?Y zSVgw#H}Yi)qtnK8&MKYAUbZ-Kz(3Zs%m^-SdY0>@FSJ zUw?1a4Q=p$3&Zl~uEzg{X8g^>5@xnkqHAW7!%Wuzrwt7PJ)6=0-J#dOL`S4okLw|# z_k|!X>TbD;q?0bhPv!@lkroQnjP}mM-SK!(71_WfEer?-S_+XXtvszu%XyKU-o2)l zYr&fqGl^Ly=AmJ{C=8#ixc;*h0atd{yxgw-Y=7sD-n2B2BQ-5GH9UqN2Na+|<40Kh zkcd~G@TMKRM=#GzP1jG7{rah~CT=&`gzbD-PufJVry1@e8 z-OrDBZt~)jMPm*ud*;;(n;(39!TQIgO?TIs;pBbL>-oQ$)WHYKHh1p2em(o?%h_z( zu>F~-lP1@W*|C28ve{!*bsV)VTJ(pNy02cvoV;(0?|l{D`+j;(1}5q`88fd0vf%DJ zL6y?I36etMTjgXVs;bi1kPb6dCBrqnrn_}c2A`yoTK#*EikyrujVHDFwOu9^qG`0A zlM($>x=t3bmgu(n1wvK^B7G@TQ|%D!dDC@jM+<1ktr}D}_wT7H@84_PXJxd7@uMrA zYO(047GuP992~iPN4zY{6!s2v0a&4HWj}rQ%Cxtb(?iudMXWgDlKG{U1=gGsitJ=ocR$g>e z$eS^o4t@@2fdCN&`?UE|C7wM^ zE}vun0`=36ZZ`FP=F-UbMwAX;JpHSYd)NH&$JKSK=dWD2az6F5Z`gYfb>=GwpCZ4u zVb#1DJ+hV;ls-D=p2ch~`)2m4O;4@exKqfr=ygILj`KjhpiZgo#d!$XuU7RPV-bCCfe05gP(CECd9|O+DEq+-Bcpc zXUKnTh~6sG?E{Kh)lMTBr!$+E-+9H)RjPxb?A1+F{2t+}Gk2{XsR)F--R=~3N_48% z$CG#0g<<*>4ntzh|4ta*v=UOYD>X4zq+4_#(s=sNXh1^gy&e>vYo!|7fDwUUc->xy zfWws142K>wgurp+3gP#7h9npjMJwl8_&V#yxZ7v8OZR$`lM>_I9b!801)6h>`Wg*w z)~K-)GE$dzkA5+u3co?+vE}!%(($G>1%Y0H;%+^QfdJ1pR$e6Xo2kM4Ce`zs5*7JPDI~wy`bL1Z`Au(ge$yzEHu9RPBJ!Lm zqKEMDn!yXo9s}p)$EWsvWXOWXQ$ASG^X8TFXpV=~=8u3Fy`!+(q*3>+2QzOfESNa@ zt~FQ4g5k7t#v8k4mNk9s5ql{5j11fKl+a5fb;;dD$eEoTWV!-Q9!%LUc4h zbaHfZd>p>z;%!cLOR~Ys*QNu{JT4-f5()1A4^ZMa_~A`tmxf)QgcxyPsgoho!W~bf zOA8&iA_+mu+?o#UTMrO~xc&&?+qN2^Q=(;r`D#k&zAYa`)i$IsUyBrOL5kGq)a0ZP zVuT4@E@*-Jtt~BTG6?xdCqcS_c&H;Af{mp${ux26fB$jaO*Y`a`f4y}CDj%}V4_qB=Njk=e%gW^T9FE|KHrj`pXLq~|Z1@UW3 zvM&2Khmqz{#B6R!)KvuR(XNCz7qXlve@OF0g}JjbL2bS`v!(FHXzcde(zW=;_o^nb z*V!{L5(=h`k-9g%PUD--(7PI0+jHOzPG)i`n<`xcqyC-${hCO+Xi zG-!k6Dw0StNf)w&-}z$J;;2ZM>0NHTtH(>s=--&-3JlscEtmk~J-kRYOYkzDj?GUA z)b)qR^`6IIIjcR8P958K$?DQBJvAi;W2mSI-rdDJ$*la6n+(;Hs$X;y%@b!N^tKxa zsWA2FIWy%c_SK@f>_P+k8tgyMe6O(Xm(xI+lER)?SG8sA@E0!kuUo#PZtk+BbL7~` z3&P;v4>=DWgnaZ+q9AMh*n{lnuV-)C;>+6K&PxkkJGg)E>-+b;w`kG)$4RhOOWqq& z57yH-Z6tavhJGw4E<5LCqsARL&BuBeN80Un&66e0=Dv_mN@p;Rw32SSc>K-Fb9G%7 zE>SA_GXO+;Q5Y{_tl@8xaTUA<9LHE4P99CBXQ-MtFW>KpcDtm0v+lV4fv5HtfLw4u zJ~`md+i#40^Nz^}^t-=cto*UmL){?m1NQ`yT7p#6+CvRTP$K=kS6A|CMqG--mU`6P zb=SkQCsi+)*RxaSo_BWYsqC$qU0Zcq?Soa>-MVGh_yukaxE50`;wB?ih>WHXHO0-% zp@mU$XC2ghi{-f{dD3eCRTl@9}$7%oZIIU$| ztaJdTi976)0`Xwnk=XL}E%>)aG+yxU$jGTKSWXw!l8}te88C{UT)w{KNToa2az;;$r(7n^E9Y z&{y!aUSWZM=JSPVU&FR85A&ZNf5iS9V|*cb$)MYRp@y2 zZ^66&OWOQ2c=r`25!vK-~av^ zy0o$Wb!k+~_t!+Bgny{)B^F}iy-pDzOZ+=bXrZdKe1{3IE8`|we0_;6%qG6Qgx?|S z6^*yz+e`9t{c0r84{Kj%_rv17wd|0Zo3@f(+O};rEowTtecZ(A{FBD_1flOfPdQA| z$t{6VX+Xk!xW!TE!Pvwplm*b}a1C5x0!h>RfUU?|q9)$S&qRXX-33HsKN3Wa(H^Pa zd7{V?Nr&`sy?Gw}0?oxe1iOCseJaWD=H+DM`SI_3B3e47HTgmFkM>f^YvMG8Inf6I#|d> zJUyeV5IQP`XL6#%cfs(IMNzP)Up|X2nkcrmm=u}clA-^b6q`(@7!#s_q_y+n;wWp3 zXuv@==mp8^=8kW?=s@;+C77}N9h!NR4t_=G>IW-i^#DCXhs~MOw2dauU?b`A zrf+F_uEQJO$xu+8S+ulhZB+>MS5mS-9T zH5nn-kMW~mQTTAJ$Mp;1&FE14=5zc86`$A3v!Xt|gx0|GfvfNwD)8JiXj?~wBU0dL zLYGeyE?>NOM+F%=L|>SJ zgDKU(LA$3l4pA9o0LOvvnQ{zq`9a@==(GqbOTI`NDJLQPk%=1B_f32dan%RL-gV)p zPf~dV|F%8cjmXI6-%Z>%LkPpeD2LH%-0@;;VMl$O8H`~O5F`hxv zr;!e^J-X%Pbm`owV}~rB1hoap66F=S5>A)#*QLu)L6^7nU2*7iNs2Vd7({7Q-)He| zcqUp!F3ro z{?oQAp!6ME+?A033m?_Kvj6~i+GAj3U|?XBoaK38uVy^I%~u9_4h9f7dsU(nM*l1S zC&Ipty_kWKfrEhwBnkj(>@I}*bJeFSP4jm5Hi>hLUAY(La+r1AruM4NkpV{ z5TQc|p+k^26`}3W)+KX?4xOZh4neYnQlyj;g6X-}v{-TYI4}3V|K-2uqM)!W#0=Ma+vl)W?L+#c4QbL^^pWXZA=kY;UNMUha4NU1n`ZX?9C2c%BcNS@4+ zC*&bXkLr1|Uo9eG&LAbD`Xxes3}rVBxGA*VNz~kLXv-E^;qOnVc?xY+A;n?Qjc`4W zwqHQoOOgy~(z{e!E1@WRh`2xSM*4t%fC;L|3GZ6RifW;5W~Rm^gNQB<2Xf*(mKJ9p zAke=!*MKxoQe8x)ifMNWfm%XcEe-eN(0&L05dyO=9lJj;J-W*NGZgd;W?5@W3h?$Z zB^w9}@25W_si!e78_ucvO*LMQyyy23NsWA)GW ziA}rKMV!o=yU>TgT}H+D?Y!stUF7rx^Q&UjYvCTbLl)@$g7y6d{LJveWMOl-f~pMr z%;GimE!A;P5&N6NbvW0K&4pQ9#b)u7+2-h*@%;w;FxG4qjsIZ=ALxIBYUs)rl>X&# z9rHiy*n0CSCJUPx)n@quHUAa&o4G!sBTZ+W+SBjoLzTIWR6PZpuVncWe5Yg4IKS{_*OptgaX(!nvxkO4qDnaUjbd+?9^b+X7unU`=`G^8{ZX$ojg(EO&=r}aeJ zPJ4#-7acF1CY?Px-*h!}TXetZndw#N?a_Ouuccq4f59Nc;D%wG;VmOIqb8#hM)!;- zn5dcfn6#MeGWmiXnlhORn97-2nTDBGna(lYXZp@e#>~eo&ukMAo-uo7&IE)u<}1v< zS@2jiSUj@KvwUIs1po$4m9GE*0RR91?*K#q1pq(*1pop7dH{z2ZU6uQGywAe1ONee z+MQF&E(B2!Jw5Fik6SRZLHx&aSJB# zqPP`9*0AC>q^(KC?YOhH6?b6NdR5$o=~P;AH}+DyihGD36!&7w9#Gte0efF@Kl{VS;Onc$qde-d5=C zV1YQIkJ)`;t>G9h)~O4L9Bfj5jJlu@Raz8iQ(@E%o=Z3-_US!Gn?QVu+#}j&D1YH` zFi)1U;tA&J{n4*6gKddh*BT6yD{Svv?@XB{rk|pfWj9@or8h#Klt6{&Xm%h~Q zh}8wZ1<^*5qhX6Bzhq`*i57^)%q}?}vX)3}i`;{cdDK}+bANxHotb(}?JUN*&Sbf~ zZ}bk-*A-Ny<$wKR)_NjUh0^;HZId~;!dYc^@={GGl_d3_eyJm-o$1sZd3@R>r$!(1 za=*_v%Lv}Dd4F=bl5>f-l?Ki_HF>PCk4yaTH@Rn&v-v%Ie=$2e7x)HDCb7OXPqe1G zRjJS6nv%OLv&+fuVdmq1%)J4Vo4dAn+HKHPY}0WN!13>GUE8_4<4*tow(Ewsti|1( z!B&B>jgA7t39f;V@CLzNfZ!VR0SIovN#GfW2jCUD^~W3c^2uFtm%Ag1miXhv%m3m# zNR&hqje!`9m@pGd9PuQOND|4UkV+cqWROV~+2oK*9{ChdND;-9P)aLW(}uRRqdgty zNGCeeg|2j?I~Fu_tk|$qhJ$h{=s{0<(VIT>r5{dQ^rsRx9tJRwK@4UHLm9?!Mlh05 zjAjgD8OL}gFp)`2W(rf8#&l*dlPWQAkhQGiD!ci>dbYELJsjqc#ITvStYMcJ#l$u- zvymITmss|4gkSvRHwQSzU2b!nSEM^H!EM+;%xX6B1vVv8t<_q7r#4Ap6 zip#v_9d9H~;w3>6B}tMcMN%bA(j`MOB}=k7%^A*fft#G=9JkoOQOV&N*SR9Ok|+6W zl>#Z0A}N*qGq^*+`sT!~_VKtP`-Ih%R;A6{a<;DP ze*u0BreOd}xB$pfSg`>Cj#;?~00;nMAg}==M6d%RaIhCeARtS)01i=0um)3FSgr#ump{<1pq_<0a34L G2><}8D24q1 literal 0 HcmV?d00001 diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-SemiboldItalic-webfont.eot b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-SemiboldItalic-webfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..0ab1db22e69ec331510563590527277ba5d68cc1 GIT binary patch literal 20962 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 literal 0 HcmV?d00001 diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-SemiboldItalic-webfont.svg b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-SemiboldItalic-webfont.svg new file mode 100644 index 00000000..7166ec1b --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-SemiboldItalic-webfont.svg @@ -0,0 +1,1830 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-SemiboldItalic-webfont.ttf b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-SemiboldItalic-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d2d6318f6640448517db133a40a6a5a36d36ed48 GIT binary patch literal 40252 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 Z0p^q`UCg`8t*mL+fyY_#j+!w<{{z_tFYy2X literal 0 HcmV?d00001 diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-SemiboldItalic-webfont.woff b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-SemiboldItalic-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..d4dfca402e53e59ec985ff4c6312864da493fa83 GIT binary patch literal 23764 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 literal 0 HcmV?d00001 diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/PatternFlyIcons-webfont.svg b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/PatternFlyIcons-webfont.svg new file mode 100644 index 00000000..b8fc87bb --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/PatternFlyIcons-webfont.svg @@ -0,0 +1,93 @@ + + + + + + +{ + "fontFamily": "PatternFlyIcons-webfont", + "fontURL": "https://www.patternfly.org", + "designer": "Red Hat", + "designerURL": "", + "license": "Apache 2.0", + "licenseURL": "http://www.apache.org/licenses/LICENSE-2.0.html", + "majorVersion": 3, + "minorVersion": 0, + "version": "Version 3.0", + "fontId": "PatternFlyIcons-webfont", + "psName": "PatternFlyIcons-webfont", + "subFamily": "Regular", + "fullName": "PatternFlyIcons-webfont", + "description": "Font generated by IcoMoon." +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/PatternFlyIcons-webfont.ttf b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/PatternFlyIcons-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..cffbff2ae30451450bb388f22e92ef78cb164254 GIT binary patch literal 20676 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 literal 0 HcmV?d00001 diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/PatternFlyIcons-webfont.woff b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/PatternFlyIcons-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..bf8a282149a153d1c9a02ecebae88791a9a7f0f6 GIT binary patch literal 20752 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%0DyT{kunD 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⋙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 z + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/fontawesome-webfont.ttf b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f221e50a2ef60738ba30932d834530cdfe55cb3e GIT binary patch literal 152796 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

      =v_rA!CPE#mM^4@)}X7qf;At+v)G*FZd&; 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 ALjV8( literal 0 HcmV?d00001 diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/fontawesome-webfont.woff b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..6e7483cf61b490c08ed644d6ef802c69472eb247 GIT binary patch literal 90412 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%0Ded40&XED0GYFoIh+AV*?9!MR5pBW?X_8Bp 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 IH>08b4`|GD*#H0l literal 0 HcmV?d00001 diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/fontawesome-webfont.woff2 b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/fontawesome-webfont.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..7eb74fd127ee5eddf3b95fee6a20dc1684b0963b GIT binary patch literal 71896 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≠dR0E9ICQ{-tcR;@{R^I5P#1GUH!p=-{c zuc3w;7+BWfGaHj8JK6^F_ud{JF#?=p5IuL6%&BpqXGS{~wMRx;wzW@^P zzUW@Ot)-|dI*HP<%}AdxG=8KzXl^eew9JBUhfnZWKLoxK?HB-a*iv{+&FC9ByM80l^Gei zQ>vs1gSdu|%R^~clqW1HizMeJZ|Uw%65_aMdUAc=1!3QDeKP%EsZ28Zdzg@}Ra@o3o`d(7rU% zr%Mf`gx6r1G)j3PTIP7=RmrzHWJSTZ%8CM}L66{96Ho4D6?_e$&nwU~mxXqb zId&iY3{0N^R#wLfcb@8L^e#OJ0i2H zb1N~AI}Hhrr57~D4e+b*D>)wL^>o&)s8UwztF>$9RS7a?Sw$u3K`tZ*0x?8ZEV-%! zZ(Cu$a0TW-IWz_qLxkLbLdA#(MA#a)4oLRdKYo?%uPGj(X8nN-$ngfAplK!b+*+qu zd(^3srD(1I(q}@BoTVq%c)#*?F6u!kTXOc5e<{PlbM>3-_uc!l7m9~NcH(PIlU^P< zJm0cu@FYZB7yJZljwq`NdTWWwJf>Gmh{QwgZh61R`E)FxUO^-=N zUk_hCvNP$No2rYcET|!l$1|!COnmS_6xl=4AOcijV13+-y5FGgTB)%Z6#$vt0l5yn zc}XjHUE!zsSExQ#F7P{D*A3QC)vRlLf3}afFsGqV0M4(^NIsoho|d7?Ws1E;hZ4fa zOn=}epz9 kgw;ucYbA3cU1VJz%pjZC;Qk%~9{|M8~LQUOASDQR}Rkd4u{d`EM0 z#z42NZm2!myxQVgiOB_;c?k zlt~BrZfgQ()uk$+b4t(W8L1Dq{?-3n(@_7=jLW{gbK47%hqi3Si77PP5j3!pF~)_3 z@i8t~3S}m4z?MnVzPp{(T)K$|;@a7{d#x~^dVqSp>4E!z}v?-=tE(@Q0G6oT-hW6LGZ-|l?8KvgK-NS~Z8J62b zH`CdcT@78ZaY(vf+0yUTNMiVEdQojmS#YO~u19^5U7kkBLFVh#q#gwjQaVjk_E%%Q zW5)ucz5L9OK-D}21^p(t8Ib{#^el3ctEg~To0KMul*p-27#?x<-#cD1#}ww2eL_fD z$v>Fu*LL`g8B#SzuHPXUJLQ_!dJJZCtm=N^==#L_RbvS4CEo-a@9!%5c6iH|l(yhG z-qbeBqno#K{kLzkZTXgQcw5msN*i)Ay=hT5yl>U1tVUFFQ2QjVxnP_hY|JlBw~9K1 zZC4w{qbWrFnYF8`LSf8cLCq+6@ZXXcV}a$ zo@Yk1$idN<~Q@Ropjc;Z8}5`IO{Ii z;YhxD(#zHsPX5FB`-d(6^l6R7HVMMO?3)Hd&$oeHF9riqpq@4o3~N!4HI9g_?3}K? zj6VtI3U(<&t8#t*5(_I63BG)F-cow^%5)1EBDu3Ag?PtT1w=pBmHldGBdQn)KmcQx z!ez5{w7@~_a(Fn0OHJjEh@8Lrg)n8q4hZ)jZ!crLH+Kkg3P>$tNmuSyzuJIdtKj(> z$y{uaQ@nmoq>L`t#+iWJM=?1E&-Z|yHSAdJwNgVedZ?bq^x-0!K?^LO<2t7_iW!?i z7Rx{MS`%5HRM;a&Nh4FyeP>2|HgO+0c`WcSm}tqcnOBI2vW!gFqwTQK_HW*vIGs5khREImcAja+4D9gTh?Gl02cQHw!(s6RP@m*D7e8lI@plF5mU=x z>B&*D`$7Zh2)}t4;=IR(`B#n4U9rp{0im;xr`ucG4i;l{k6W(tLn(AS3kMrEpJD-j zDtbu|B=XcmdhNgUP63C^qV(wlO|bHO-6L!36*Fr>eQq_Ut;Mu)g01bORC}N6Ej@Ai z>Fq67E&kLUilT@ATW23t>Xkn@oa zus>fiWoscKG1089E#0l4{Gqok;irrqTV8br;D^|jhXD*r&bKIt+yLT^!(4mtd)^79 z4yv>VmJOjbe%QF(HxOi}ICFy|*f}*j#(4#h^!X#}@*jp7ru#8oNXmT_TU|36RwO@| zXIzv}x}4oeyS6R)=Z~z(WpDD_Hr8O*>U8Yh#DI8HUF@rFujw7h=+sClO5RzRw0;X} z8vIy}7Fz3yTT`65sM1|cvC$d|a~|hNgh%#6zg4Vtk>Mh*f#I-WOx%Xpy@DzVSyz6! z$!wSj@jl71lonL@{{de#=$fD1%-oV)l=Hc-j9%pMmtDZzk=yu*%BkllK@7(oky2Yu zcXZh z30OLYBbzmZ-#BjBGmL3P<59K&hqsm4*OFTgZL$%f@aQ(oa0eFt^!WQUFCw?z*IPTn zJMHpNua&$Cg9p@osIha9$U3J@3O1K;|59biD!tt(x$JnsvW(NZY3Pj@@gG;>*A zTH+ALGZ}irDadBtsZ*6W8vqk*Dv@*_94NT@%1b+VEL(GPrHv%f?#q^N!aL91_kBo$ z)NG+ZmBsUB82|Wx$I|BpqVVJs&*h_PiCyr>$;pAf<44g!G`;tQdg!9zQ~iX_bC}6A zQ^|ia>VYRu^lI6}&97gdqGGe39K_-x)@@>J6driJ9=LK4i=|SPF(*&FGiXVyCR)*~ zKX*F()X~#IMDkOrB%b=cjJ!Pz-#i``@_l@2EHpT)7o3|AH;^nUE1xWMN{So@0nuGz zQ8~&d&rQx-wW)k~r(djI^ z>#*7_iM8KW0p66fjO#5O)*C%oxTe*!d1vuR_ITN|+3sS1aH68x%;3=Bfs9p$59O|# zug9Nh1hu=rPS12!>HMe*_^s@b6XzuHKiCnJM zE>@rPxYY0Y@9F3MBh4%a(+qO?N57msjUyb=>3p;_1aAT5s^5mVN@eA!Jp z^KUwNathUCqD}hZdHjm)6UIJ&{*XJTCrd~LgHV2<*x@Ecco;(!7K)`gx)mD&Bne?7 zO#n#BYkUsr3_-XV^HPLOQudSO=jHJgI(d*0Lf==E8R{JUb;RLziB0yqyX)e7?mj*1 z%~%By0l;pDB3Q^~=6__-3-5Z3RMPPo5F{5Vn+8L`&f#XMCuI7-wacztV@JjVv350TvMt!zq2O{m*X6fy}e@@IxkM+m`uf1Sou)%DNAY zSSzDjV|tN-;$UpAvK14YVKbFYkw3y6Q` z=K6mofv8g8e9)%wXLKV$=FM0eke6sq+gb{pv=qN9Er%pFUdwOenVUz#N}d^t8(DeD zp>^29oeB&}z!x!A2+~Cy9`$5L6NERF*f!*zu|eEu?&mRQHDNlUF38;+kfL`%vGrWE zMRqubh27W_*HvN~XfXnFgDi+#UU~oaEHw+HFLK#jczPLWFteGLmh=y-+o}OsURw3o z4K6!zf5h6t@S2UTH@4}y_dk8#q1@Z@pi}A)Y(2nNGU)n~!;zg$n)vFDD%n`%`P64m z&t(orRfl)h6o4xl*T{e}8RJr_9s1?eNczsSFxmRZjnBS@HE%eyA^dsyx(|9fn+a6H zhV$8^KlUYjwe>>ICp)<<{j1yuYMc_CLNgVWyzMy+JAKW|@-q{Q2AQ=Xmo}(M!dIkk zZjV-{DRgV3b?ifrY&%k~{N&z;ueyC?anG$IpiHp&)Ysb8`Y;ZgdRx+Isd@u7Yu}ys6^?pi-Cr%Lafb=bmeY9*=7+{Qa%_v z*3fG4hor+^CBaf6n5s3`YHUp|0U#2GUj8ZvV;Gxel4=Yhq|&Uz=cMn3j@r-JzQ zF1Q3ARfhnZqK*f0Il~+`S7BNK=Z>54m5NT^ zeng|4COob$Au+NyCasZEOKLoQWl&*r5V9t3l4R62O|qZNHzC`$J=Sjaa;LxLguL;b zNs~x)XKnO9Rb5i^KPCW#OWQ-bK-shQLFEHMy#W(FLh(44Q4EIXlW{I;;0P*l<5NOvPm^Eb~1XvDpY0%Ge9&Qv(Udp zHo!uS1CDLtXL~AQ)ijtfQlCW43AfK9S77%~dFw}?&82p_#bnTqi^iw*N|(+Rjq;T@ zZns+yr*@N;SIXok9t;W0%Jpru*GocCY@5J%Wptxb*{D#&3;i_rtWEDN8I6+ZD&XHdg?~ z9*9kSZp0`vz>(_;XAc?(UD9%Ff^_LHHE zPMhH~w%0OUnVGM#&rbDcNZUViBO4o>k@^3G^E`V27Ed^#hsWQ-F`tvX!#G%yz_|nR zNxhF{9GDP4uYrE({hvNRrN`!(8l?ZW)x~pz3%bN66ByYK4Mh(3JpzNQ_z-Ov4PU6FH5U+BD^z3%j6M$!M8UPsHF zulFyfveXTAH>T?9Ry^%>tj%{81u4JC*P%bpkI~KMi2h3-lOhU`#S~=9Hq0ep{<}!$HnjI>V?b7k6O;8S~>&` zUZxkWK7F!qrPH;Z-unz7J;5Z`Hy>zjPEKhi?0*@(Ia+2tvaOP5(;M_#;XeO*MW&o2 z<4AT|lNK3+C&JAO!f+=xRa$e34i>s*mgrXJN--{%qmshXY&d4eUX(knipwka>q<`W z>yK~k(42Rvuf8BQgeB*DYsDe1oK0y*kWeIv5gm4S4@u$lDTWBj7+G=tLJP;$QS{Iz zH-!nG*65Pv$dUeO=51l7CITl@t}k@g86e4yVO+aL+bY*S=r6+SvgyZrA-2+M9lAF# zNoc@sJT|#xg~HFgz&Y>gI8lM#UandIFuC4=xTxG4zKC?ayh)&E^6j1SM(OQl;AG!8 zUK{NmnJcYpv%=>za%be&zQGWc9o>e+z7BU@iv;RGGo3yaeP)48H}TC zg%8Ai0hGCa5J(^Yik!)&vBm3*TejTuX)Ip`JCv<)T*8lc*$JKh7ZyFm86u4~DX;Cc zgwu%x5CUTF)BgT}fo=f(^u=RWuZF2G`Pu*ePfMeK4gx#&TIniERLQxGb&K|Y0tg8; zqT&Uz)}6C%DAMpO>-2Pt^96x#VZN?XV8TAw1%@*q<_e#V8G-b`-+0C;E>cAd$H=D? z2%RN%QVen8#*TWc0gN|!g|+>3QdGM9l955UHb9>K2|SPqr_--Mq%vFvt;- z3`Q`@RNqV%XL5F2BDG1&_UwVQg1?hhJV3QX^p|=VXt_OKx1>`8iwkL+Gs$B&Kp*a} zy_(~yWDD5gxtvowfATEXCguKtzcBStJ$m&8fHDBIRrg)@-#`6#J;h^L7iCBcIpeyq zf7(fXxGwR&{(?TcW^QVe!(`Y)raMsRSeZP(dP(QtgLq;dlkR)TqvDkSQP6AIC!Hmo z7q9Aw_$2;BVadV?lx@UxYnd)mOBm9v+g{N!G>_*#DmQ`>l)DAdmmPLB1dz)br0ZkW zy8dc=&fmeOld$M3DSb83u|Dhtb36PArWzgLYK&+;T1OX2r-KHw88W~+5(OwG%J*Ly zgnQDUcJRWkErZ8xi%^i|j7Rh&V^;HMN_QL9=2tnX2VY~=fFJepzk{$%9Vw&j#w>ag z;}K*-fyHs#)#^>{A52;1R=pL8^xT~vmH#;mqeEtWWnGom`eZkV0z0-we zjoZ0MRvzkgYKdwkA{!AqA1TQgI;x~s~kF(%dn(FZ0mF>qHoJm$ZTch)G4r(R-+ zC-AhDS6)_-{I(5bYx)|kczCX&AUU?Dv$y>C$e)vpXW&@*u#M!dEF8RY35bM*ju(`p z;K*~2MXsXrTO+@mDa5gH-;Pw7^H$?NUE=I=4^X%fqY6$6d+`<(`I0r!`86k>H{9F# zUXeRpfO&S_kdQ(J_0JnaN(xBreJI+eu>ZMePvOrFIL(&29w0ORNpYGBVhMtb1Mtl6{OvioEC4|H$ zo-w5*_}~jH9$*_#fpguu_>^)_EcOeB9{FE%tl8INvegmyzoU=^cpNwcqC`sDsL^P(C{c=TO7~Pdw|fPVBfR{q|BuIPOsNma7Z}|($RTYO zE?f7ajj)Vr#v5(c_&#*~Y+Gw_~6vptkceJ;6#AA4{U*G>m zv(t<}@AbfZth$BsgN{kJUQ4`I*>8>?8Nk=3zX?V%kwLG$-9i|(vVKJ6M`!jwoy^SN z=7FOwD=f^3=ZfV@actpRZtw@(j^+)HNl-gZ~_DmlAr+wcNi?V+b}qU;6q?= zcMb0Du7gVm85jueE`RRbt=+fXx38+Zy8G+XRehdL%byGMWw=ETI*Tc$XIVkYXsCVZ zb4N#6EZ-Qo#uYC<)!0ZG)(v6fHg4C8`jx{nW|IC1!LNG4AeKN2JV#qDHPM>^p6uL0 z>sDt9GR-_j@TKZ>xk9%<^4)$Z0~^cEDs)_gzV9)D&!BehM206+ zh}L?Gb?OHTpUvN2!?8v|DZ5qSjW+&#SXC&6!p~)oR}{k%ir*7xyU`bBw$B6F_y&R* zJGXM)P!sN_x?Fwvcl}Vi*TwZFCLhL}Sy(AkQ-O#tK(cQ5gCw6b$%tTc447{$X@Gt4qYl@?zZo zscT?q>xo+eXXdS%1=jkXdHT!tFWA297sM4v?KP52N58N5zWb-#2Z3ReM_Sjzg<}dnBy|GvI zhgapzrd3&*de)CZ!Oh~tL+K5NMR_+D@kp?5);fS&CFcwMo0!7w7ZNMm>>QDX7GHBZh)p-i`3Cbr6`q-0WzGf< z#>Iu=PybFT)E8et6+C+0Um{ezd0GY1nTz!3uAe@VzZLiSWS*nz{Y{by=d6LAtzeYw zwGFvS3S3>F;Z>G1mx2%JKH*NCZ@aP`q&iJcG&4~6o1Nb+L3zU|_0UwVk)0xSgkcXu^f(UaE9@~0>ztQR=w#`0O zTrZx+vX?#Jxh(CfeYELi=fpfM+DiYH6g-ONCiU95Jhw);kgSl7%Hx3zn2MfYJ5|Yw z%F^3xg*>0(y?JanEA{+m;rFeV-Nv!=!HyviDdGTZA?t?eh+u7t43pT(@|jp?PPQyB z&UIB|@1rjRjZ_2nFuxapx`I^gG<*>)xeBqb*N7X@Gbp)y4Fn=V4BpsuXeVYPhQCe2v)Dpw}5=9o9&dT&sh$KQK(W^O?86exnUfRayql~=x_>%Qb z_eEOB9rl9IlYA9e5VbCk{M;Go+sVSuW;xu(hOTUEsb+QU@N?brZ< zPP!)Lp=FXvUB#uOmpVE?c@_=>uMsh0184t<{R&1E~4kxh&46o=yQvQyO!kDegF!4ilCORdzqdzD7sf@iwmJhn9yIaIg!5Xa@)TbSDB;6 zqE4I*l$1vwtNMi@am@s{^KJg*?NEo|?a-1oX+gLm(0jsb6vuWWVf|KwQuQI$83+&M zr0QwGrj1}v{n+h(d6i)C3w^R{RyeTYaxAo!47T#IG%PLGJ2fl;b zGC<;obp}ZfmWeOoP$`xE&CT5}Qz!C8^h~*uA94@*(M7j1*OQ4Edm3;c0IhdttG>Vv zfS@Q6sPL%p)H0|Z8B9ptnr$JWFEeRvm2dr+S2mc;-%J}1f{kAD_c~cSO@ZQR3rFW0 zy*U$ALMUmoIy82fhQQO#)$NImKA)Ep_w|y*{cbw7@fP2|zL6+!3Wy6se|P65FgAE^ zi)tS>wpE^gak zJ*1)MQQ6l1LI4^O|40P$&tnN7Ha1^W?w>DbTVlPOr5;9=y^@E>BZIZDBHhZS2Imah> z@~IG#=!yi*5(}P>-#a~*gd=+QMTmGtaK!n;*q$)UtdZ|Jnao%mtQ-3+Tj&1 z8ak3WU%N*pRJYo((O|@+o1l{l0Iu$3?Q~?zVmhXT%b9{L{^~DkvORw9qukbtK*wfM z>yg{&mbJUR#+E@x8wro`mJT@$r)Xa_c$?7tM4s8v`ko*+VdZ(k9c{+7gNcsO!=GP@ zhn40Qh@a<&w+xHPXZJ(^;XQ{hJK<51R0fWe5#&qhBM#QKO#%D|-sEQCwMbue(x0H{ zJ()+CxWBQ6urBJv@ZRi+MD04)LHRvF)%p>97xuW7XqAF?R@96;@=*pjV+2Y(%{Z64 zg{$0_pl*FYX#$&WR@}z)XEL*Jm3XjJW9Z zGWc+Z{@B3W4SNt#*;VS~;9FyRv2x`1APF4JgUxSuKoWsIah$SQd-`AZso!9T{eyQ9 z?CSZ*2;W%#i>7EUTpe#<^%-Bc%$u+Iut&k#n+(D^O{HSik~y!P-#(`O02?pL2&Ix$ zlMBH_z{Jc|tO8Wu?qjW3C@tFCYvH#J-Ai_=^+W?&zWWnylWZ6P(~aX_U03R-zXasA zK9-(50i8nv9Yo&Z7Uz?^Hb(|q3Y|lfNk<^7cmjVS9yk(~I6ohN?TEe)JfVqC6(Di; zNwCmU!}ruh-@nnbWH7eDJIj(dIU}zTGSBKpg7>%&o#)yNOwq)xfT8RB2c@-zL(~Q9 zApv8k9vfO;X~M1EENU`MxFq!M(U??^>i^Kq(l5dC)bj7Rg6UAL|H|tI=rH0M*_geq z3eUu}uc74YQU*Q8d&Do0-GoFGJ6g1s95ljIR7<(O0jlI)G z4|m{~-IY+6t%u4ZR6;=AGa&=*A~{}{d51QZ6f3-)bEtgaSN~`w&v2#}ZkUdnT(OA^ z+?0)mVG6qRBslfi4`Tmep;vfbx&HG8=UN?vfTc>*mRSkAOBxTumVF^^<=J!26+%3I zmB7HYDc#=ksWY3(c5p4(%^<9*1PbB>yoL&~-a$gLQsOG6*z|eHV|EE`W!Q99)2jvW z8-ZE##B8-cno^e3DB=#5TeNgS&z0@CsvS}&3xq;+zQSZOws`$(4PIp84J(^dpn8;F zsXIlV?#VSF^qPt9=xBSCjmE0p?Xp`XzQV^CPj2e`Xzg2W}5DI?_2U@Ao;@*`?wD;V`zJxUnhZ;=LweQ`=>{G z_X8*r58bqMt=h)4u=k$woYL7nhhg<*w4$o7-x2ulhcE)6tRIqGTQ)8BLY|M{+i#%M z>p-A6s|kcjf5|f`<7mb}-1yd)lJqV`DqE)^Rlp_P5meqJ(-}-n=VXdwMT@%_R({k; zd0g^{uvjy5`&5EwTc!6|v0N-LHN0MM8_>0Xp*&%iCB`+R<)_>TUAIl-U+<#0OZ`<- zX+$S^{bWM(tnZoE9*qrY9!HKrlKk=~af{He5xc2?P!u&2Nm+B|CMh-a2fq%D)_mPr zuC=L?*w<3{RcLY-*mVX@o=0$hN#RXBq0ZGr!)+aioWlVxrGpWs%~bIGh@b(-fE|1!7HhIq~c1z+TVD*Wm=kWdW-NAF=dNcHHkFjp)qmKg7w$5P< zzHxp;+9uaPBU}a-vwu3fyGgs-A>tpO^Q_PdD=Ms;f#|R7eNzxo-g?Sw%H(m&xFYb_U1pZ(S0zwO*kP2 z3i+>%Zu?wZDqz=#!zK7+49R!XH9;=~o_tM*5qurY6}b+%Jz-Wvq|CVDA?o#$lEazq zlTT#3od;swz9mIeL|>4k!?3K36zcNr+RP1_;Gh7)Pp&_#eKmAEVO~$XUoPsL9$ZCD ze>OkB??8cF-QBeCQ#8g%mAg;pQe>i`qd@l-@h)k0V&y{qR+%z@eS>HxLvXx7%cw)` z>LGr~_|e(@BNApWX4Dp%;wsE zeK)2bp8l^hW-c>lc`;S7mDtZ+40BR8+hhtWZDGeH0=OX0K@;7sr_{*}%tz1BD+0E2 zeRg~AyF(B}7?Zo)w}lp|k~g=9%Njkob$*MIr|>ReY#X~sscLrr@>RkADh`Pd?VGf@ z3mS3wkeRCwN`hRmx~<2n#6g6MFF4qxwFnrg#j4A$Z5OLkB21}j9lc=fEn@5xzqE_N zO#VK;GTT1qq3e&O{DMb+gTwIEBYn&t=E?K?%KhS_d-F_$)y6fv<9PQe0Bz7Er10yv z9iNYA>OaV|VR*1Qnx%_S-Y5zS9W7O1m2oel>D}Qle(u7#c{}U8RE>(Rf z{QublBzjET;J)9O%-FHLfBp;2|L@=b8x%$rcDM|O<9{)y2Z5oOxXYC{Y{)hGC&>R9 zh#~<}{egpMNhc4{$Q0UFjr%n3L9$2>1t&Y8d6rGnMrUMxTCj%wC$Hb#R}SPl@0`#B zyMp^s%7_Q=Uu*h-g^%VqI2MiGjl7kV(l+VUW`@r{5p+%vmQmQu)eipI@WykhY6}Ir zt*4XkdmwEoul;g#;Z`$)>Y>ce*Ni3ea1XIC6@x7GS>=d4T39do3lv1TX{YXDKW5=} z0UpLJIc4?md|r$;kVi>N&xG5mh$fFm576b}+pE}G%u)<0@-o;_9k9nx?z?1DaEi?l zr%9Ys+$q4-oO`P|CrFJhg9`F;SRsU`qJvun*mQ_xwQW~OhL60)Eky4ur=RNnc5Q76 zbsQHUO{=KF$=lU(a`{M6Cr5A@^ErOPOa2Rr;P<2&3!J-kxde-jr7fgTSz1F+od<22 z0+(ZMFx0L3>DZ)^J8i8|XDJHxhaXxy_7d2K>@BVI+PuDklz9`vt92BZ{sq@n>bM^? zUog;cSw+uA-;C8A&=5OXxa$Tk$y->^MlBTRp-dODXWrNci*}5%*RJ8DRGzysy;i)p zv5-(*&}vkHK5u2u^U1BWo7T+?s<*F%nS|_(WF`fD1=I|1fe5Kf3UeJg*omEh@x)b? zy}#6R>^fo%pCbmRO#-^tbD=gpLXuJ-J(F2*+$f!BQTBqgA_U{?dqzZ5ft_M>%hl<6 z)Sp`6s$@f66p;imJdLrw?+o%{+O_OsIG>#i+Mx7VLXZ!+OF4BpYvej{Y-7ExN5kqY zcWIg`rJ6c2omTNCCBlLDKNTUhV~%k*ckL3isopY6&yz4Znk(zRlhQtR=7s06z)_tJ zA0(2XUTz)5BPH#Gcm1yd-TbKSt;p?C3r3y}ZOb_r?ECQrGXe4MQ6tJYQGcYq=y!H2 zvM|?b_2MX*Zj33QtrlU&C5Mi;HqNfzR7uev`BZGCl9=p+l|X-=9q~qvu}L_`5-O(A z{XQivf^2z$CPb-rnix2EBjgo;CMb8)3UY0*Ysq~5{En}mQ(SqO$85$y&~`DOQLcoB+UQ_v63sC) zewy&oo|z1(`{t0pBM8i>T(?aS+M4XIg0+$hJ&?{jQNW-@XC}DEu$lCJgUPdFu}Q9w zXT|nCH`h|I{rkb{@4KwF*na%h8tFYA@Pk}lMDO!}Glq)pPxRNaIlnns>5Fhhwh^hQ z`C=7`rD|h)AJAEiQvlOen5Hg=TkoH}|(s z88guDw8K@AA8CX(o?8;zjuV&wEv~Nt5Pzu?=K;HqIIMjh5YN$XTI7_2a@2h~e{ z*-9wY+~5pqBfwpq0?h{6kLNwNGfbCFFv&tiPo>y326>)+ZAg`4p;Uu8CTSMXQlSW^ zasQx)p^x`uT09s&B*e<%n_d_}rUqp(5`M-3U}lkI+zTFfkcbhjalk$0iww z#Ynxxs`ug>!ata-ochEaD3i)%wPxffFn#0YFt-R$V7t+hQhhj06iYHI9WALT*{wrN z_hCO58X;=1!6ah+R%Wv~>olr>R8|6V4*Lr4GA!$XMq)LwN6_&`su%J?M^8y3F_M4z z9rCH+KPk3+kBV#dV0YYA!A3ROtClEeXWbJyb??yC%c~exnn-?bBk5A1p3YE~8kWkNu@$+A4T>Q6@qkHOQ zN|dE!4Z6F{J_RTrHfn0m7u0E~0V*u8bKZ|O{@J~0 zzSO0NZ2vfh_P2c8amEX_9T6V_+7dDU?ZEe!+(BX4$rpB8T=?#I9n+Kmr4`usX3Q0* zsVYbU6rfZF=(Uout@8YFGdYIJ{Wvisr*Yj|$!FeE!w>^3>rqM>y63 zvD?d{k0g}AWC#N&y)8-t3{hId@C}LVX6h!g?PlUIgb~VoCpJ`|pVgeg`e$dkndD^G z;DD(Ab8c8Pu&+{nkv?~d2~h66>u)3{%oj#@!8-=klmW6Qn9ND83=1=2$i)BBaJXkA hYQ7@;&$HadiZ^|NpN=W$zx?7q%qNRS@!^Hye*i}iX8r&G literal 0 HcmV?d00001 diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/glyphicons-halflings-regular.eot b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/glyphicons-halflings-regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..b93a4953fff68df523aa7656497ee339d6026d64 GIT binary patch literal 20127 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/glyphicons-halflings-regular.ttf b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/glyphicons-halflings-regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..1413fc609ab6f21774de0cb7e01360095584f65b GIT binary patch literal 45404 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 G`u_lkUM?>H literal 0 HcmV?d00001 diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/glyphicons-halflings-regular.woff2 b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/glyphicons-halflings-regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..64539b54c3751a6d9adb44c8e3a45ba5a73b77f0 GIT binary patch literal 18028 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 literal 0 HcmV?d00001 diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/grunt-scripts/angular-animate.js b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/grunt-scripts/angular-animate.js new file mode 100644 index 00000000..bbe4c3f6 --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/grunt-scripts/angular-animate.js @@ -0,0 +1,4152 @@ +/** + * @license AngularJS v1.5.11 + * (c) 2010-2017 Google, Inc. http://angularjs.org + * License: MIT + */ +(function(window, angular) {'use strict'; + +var ELEMENT_NODE = 1; +var COMMENT_NODE = 8; + +var ADD_CLASS_SUFFIX = '-add'; +var REMOVE_CLASS_SUFFIX = '-remove'; +var EVENT_CLASS_PREFIX = 'ng-'; +var ACTIVE_CLASS_SUFFIX = '-active'; +var PREPARE_CLASS_SUFFIX = '-prepare'; + +var NG_ANIMATE_CLASSNAME = 'ng-animate'; +var NG_ANIMATE_CHILDREN_DATA = '$$ngAnimateChildren'; + +// Detect proper transitionend/animationend event names. +var CSS_PREFIX = '', TRANSITION_PROP, TRANSITIONEND_EVENT, ANIMATION_PROP, ANIMATIONEND_EVENT; + +// If unprefixed events are not supported but webkit-prefixed are, use the latter. +// Otherwise, just use W3C names, browsers not supporting them at all will just ignore them. +// Note: Chrome implements `window.onwebkitanimationend` and doesn't implement `window.onanimationend` +// but at the same time dispatches the `animationend` event and not `webkitAnimationEnd`. +// Register both events in case `window.onanimationend` is not supported because of that, +// do the same for `transitionend` as Safari is likely to exhibit similar behavior. +// Also, the only modern browser that uses vendor prefixes for transitions/keyframes is webkit +// therefore there is no reason to test anymore for other vendor prefixes: +// http://caniuse.com/#search=transition +if ((window.ontransitionend === undefined) && (window.onwebkittransitionend !== undefined)) { + CSS_PREFIX = '-webkit-'; + TRANSITION_PROP = 'WebkitTransition'; + TRANSITIONEND_EVENT = 'webkitTransitionEnd transitionend'; +} else { + TRANSITION_PROP = 'transition'; + TRANSITIONEND_EVENT = 'transitionend'; +} + +if ((window.onanimationend === undefined) && (window.onwebkitanimationend !== undefined)) { + CSS_PREFIX = '-webkit-'; + ANIMATION_PROP = 'WebkitAnimation'; + ANIMATIONEND_EVENT = 'webkitAnimationEnd animationend'; +} else { + ANIMATION_PROP = 'animation'; + ANIMATIONEND_EVENT = 'animationend'; +} + +var DURATION_KEY = 'Duration'; +var PROPERTY_KEY = 'Property'; +var DELAY_KEY = 'Delay'; +var TIMING_KEY = 'TimingFunction'; +var ANIMATION_ITERATION_COUNT_KEY = 'IterationCount'; +var ANIMATION_PLAYSTATE_KEY = 'PlayState'; +var SAFE_FAST_FORWARD_DURATION_VALUE = 9999; + +var ANIMATION_DELAY_PROP = ANIMATION_PROP + DELAY_KEY; +var ANIMATION_DURATION_PROP = ANIMATION_PROP + DURATION_KEY; +var TRANSITION_DELAY_PROP = TRANSITION_PROP + DELAY_KEY; +var TRANSITION_DURATION_PROP = TRANSITION_PROP + DURATION_KEY; + +var ngMinErr = angular.$$minErr('ng'); +function assertArg(arg, name, reason) { + if (!arg) { + throw ngMinErr('areq', 'Argument \'{0}\' is {1}', (name || '?'), (reason || 'required')); + } + return arg; +} + +function mergeClasses(a,b) { + if (!a && !b) return ''; + if (!a) return b; + if (!b) return a; + if (isArray(a)) a = a.join(' '); + if (isArray(b)) b = b.join(' '); + return a + ' ' + b; +} + +function packageStyles(options) { + var styles = {}; + if (options && (options.to || options.from)) { + styles.to = options.to; + styles.from = options.from; + } + return styles; +} + +function pendClasses(classes, fix, isPrefix) { + var className = ''; + classes = isArray(classes) + ? classes + : classes && isString(classes) && classes.length + ? classes.split(/\s+/) + : []; + forEach(classes, function(klass, i) { + if (klass && klass.length > 0) { + className += (i > 0) ? ' ' : ''; + className += isPrefix ? fix + klass + : klass + fix; + } + }); + return className; +} + +function removeFromArray(arr, val) { + var index = arr.indexOf(val); + if (val >= 0) { + arr.splice(index, 1); + } +} + +function stripCommentsFromElement(element) { + if (element instanceof jqLite) { + switch (element.length) { + case 0: + return element; + + case 1: + // there is no point of stripping anything if the element + // is the only element within the jqLite wrapper. + // (it's important that we retain the element instance.) + if (element[0].nodeType === ELEMENT_NODE) { + return element; + } + break; + + default: + return jqLite(extractElementNode(element)); + } + } + + if (element.nodeType === ELEMENT_NODE) { + return jqLite(element); + } +} + +function extractElementNode(element) { + if (!element[0]) return element; + for (var i = 0; i < element.length; i++) { + var elm = element[i]; + if (elm.nodeType === ELEMENT_NODE) { + return elm; + } + } +} + +function $$addClass($$jqLite, element, className) { + forEach(element, function(elm) { + $$jqLite.addClass(elm, className); + }); +} + +function $$removeClass($$jqLite, element, className) { + forEach(element, function(elm) { + $$jqLite.removeClass(elm, className); + }); +} + +function applyAnimationClassesFactory($$jqLite) { + return function(element, options) { + if (options.addClass) { + $$addClass($$jqLite, element, options.addClass); + options.addClass = null; + } + if (options.removeClass) { + $$removeClass($$jqLite, element, options.removeClass); + options.removeClass = null; + } + }; +} + +function prepareAnimationOptions(options) { + options = options || {}; + if (!options.$$prepared) { + var domOperation = options.domOperation || noop; + options.domOperation = function() { + options.$$domOperationFired = true; + domOperation(); + domOperation = noop; + }; + options.$$prepared = true; + } + return options; +} + +function applyAnimationStyles(element, options) { + applyAnimationFromStyles(element, options); + applyAnimationToStyles(element, options); +} + +function applyAnimationFromStyles(element, options) { + if (options.from) { + element.css(options.from); + options.from = null; + } +} + +function applyAnimationToStyles(element, options) { + if (options.to) { + element.css(options.to); + options.to = null; + } +} + +function mergeAnimationDetails(element, oldAnimation, newAnimation) { + var target = oldAnimation.options || {}; + var newOptions = newAnimation.options || {}; + + var toAdd = (target.addClass || '') + ' ' + (newOptions.addClass || ''); + var toRemove = (target.removeClass || '') + ' ' + (newOptions.removeClass || ''); + var classes = resolveElementClasses(element.attr('class'), toAdd, toRemove); + + if (newOptions.preparationClasses) { + target.preparationClasses = concatWithSpace(newOptions.preparationClasses, target.preparationClasses); + delete newOptions.preparationClasses; + } + + // noop is basically when there is no callback; otherwise something has been set + var realDomOperation = target.domOperation !== noop ? target.domOperation : null; + + extend(target, newOptions); + + // TODO(matsko or sreeramu): proper fix is to maintain all animation callback in array and call at last,but now only leave has the callback so no issue with this. + if (realDomOperation) { + target.domOperation = realDomOperation; + } + + if (classes.addClass) { + target.addClass = classes.addClass; + } else { + target.addClass = null; + } + + if (classes.removeClass) { + target.removeClass = classes.removeClass; + } else { + target.removeClass = null; + } + + oldAnimation.addClass = target.addClass; + oldAnimation.removeClass = target.removeClass; + + return target; +} + +function resolveElementClasses(existing, toAdd, toRemove) { + var ADD_CLASS = 1; + var REMOVE_CLASS = -1; + + var flags = {}; + existing = splitClassesToLookup(existing); + + toAdd = splitClassesToLookup(toAdd); + forEach(toAdd, function(value, key) { + flags[key] = ADD_CLASS; + }); + + toRemove = splitClassesToLookup(toRemove); + forEach(toRemove, function(value, key) { + flags[key] = flags[key] === ADD_CLASS ? null : REMOVE_CLASS; + }); + + var classes = { + addClass: '', + removeClass: '' + }; + + forEach(flags, function(val, klass) { + var prop, allow; + if (val === ADD_CLASS) { + prop = 'addClass'; + allow = !existing[klass] || existing[klass + REMOVE_CLASS_SUFFIX]; + } else if (val === REMOVE_CLASS) { + prop = 'removeClass'; + allow = existing[klass] || existing[klass + ADD_CLASS_SUFFIX]; + } + if (allow) { + if (classes[prop].length) { + classes[prop] += ' '; + } + classes[prop] += klass; + } + }); + + function splitClassesToLookup(classes) { + if (isString(classes)) { + classes = classes.split(' '); + } + + var obj = {}; + forEach(classes, function(klass) { + // sometimes the split leaves empty string values + // incase extra spaces were applied to the options + if (klass.length) { + obj[klass] = true; + } + }); + return obj; + } + + return classes; +} + +function getDomNode(element) { + return (element instanceof jqLite) ? element[0] : element; +} + +function applyGeneratedPreparationClasses(element, event, options) { + var classes = ''; + if (event) { + classes = pendClasses(event, EVENT_CLASS_PREFIX, true); + } + if (options.addClass) { + classes = concatWithSpace(classes, pendClasses(options.addClass, ADD_CLASS_SUFFIX)); + } + if (options.removeClass) { + classes = concatWithSpace(classes, pendClasses(options.removeClass, REMOVE_CLASS_SUFFIX)); + } + if (classes.length) { + options.preparationClasses = classes; + element.addClass(classes); + } +} + +function clearGeneratedClasses(element, options) { + if (options.preparationClasses) { + element.removeClass(options.preparationClasses); + options.preparationClasses = null; + } + if (options.activeClasses) { + element.removeClass(options.activeClasses); + options.activeClasses = null; + } +} + +function blockTransitions(node, duration) { + // we use a negative delay value since it performs blocking + // yet it doesn't kill any existing transitions running on the + // same element which makes this safe for class-based animations + var value = duration ? '-' + duration + 's' : ''; + applyInlineStyle(node, [TRANSITION_DELAY_PROP, value]); + return [TRANSITION_DELAY_PROP, value]; +} + +function blockKeyframeAnimations(node, applyBlock) { + var value = applyBlock ? 'paused' : ''; + var key = ANIMATION_PROP + ANIMATION_PLAYSTATE_KEY; + applyInlineStyle(node, [key, value]); + return [key, value]; +} + +function applyInlineStyle(node, styleTuple) { + var prop = styleTuple[0]; + var value = styleTuple[1]; + node.style[prop] = value; +} + +function concatWithSpace(a,b) { + if (!a) return b; + if (!b) return a; + return a + ' ' + b; +} + +var $$rAFSchedulerFactory = ['$$rAF', function($$rAF) { + var queue, cancelFn; + + function scheduler(tasks) { + // we make a copy since RAFScheduler mutates the state + // of the passed in array variable and this would be difficult + // to track down on the outside code + queue = queue.concat(tasks); + nextTick(); + } + + queue = scheduler.queue = []; + + /* waitUntilQuiet does two things: + * 1. It will run the FINAL `fn` value only when an uncanceled RAF has passed through + * 2. It will delay the next wave of tasks from running until the quiet `fn` has run. + * + * The motivation here is that animation code can request more time from the scheduler + * before the next wave runs. This allows for certain DOM properties such as classes to + * be resolved in time for the next animation to run. + */ + scheduler.waitUntilQuiet = function(fn) { + if (cancelFn) cancelFn(); + + cancelFn = $$rAF(function() { + cancelFn = null; + fn(); + nextTick(); + }); + }; + + return scheduler; + + function nextTick() { + if (!queue.length) return; + + var items = queue.shift(); + for (var i = 0; i < items.length; i++) { + items[i](); + } + + if (!cancelFn) { + $$rAF(function() { + if (!cancelFn) nextTick(); + }); + } + } +}]; + +/** + * @ngdoc directive + * @name ngAnimateChildren + * @restrict AE + * @element ANY + * + * @description + * + * ngAnimateChildren allows you to specify that children of this element should animate even if any + * of the children's parents are currently animating. By default, when an element has an active `enter`, `leave`, or `move` + * (structural) animation, child elements that also have an active structural animation are not animated. + * + * Note that even if `ngAnimateChildren` is set, no child animations will run when the parent element is removed from the DOM (`leave` animation). + * + * + * @param {string} ngAnimateChildren If the value is empty, `true` or `on`, + * then child animations are allowed. If the value is `false`, child animations are not allowed. + * + * @example + * + +

      + + + + .container.ng-enter, + .container.ng-leave { + transition: all ease 1.5s; + } + + .container.ng-enter, + .container.ng-leave-active { + opacity: 0; + } + + .container.ng-leave, + .container.ng-enter-active { + opacity: 1; + } + + .item { + background: firebrick; + color: #FFF; + margin-bottom: 10px; + } + + .item.ng-enter, + .item.ng-leave { + transition: transform 1.5s ease; + } + + .item.ng-enter { + transform: translateX(50px); + } + + .item.ng-enter-active { + transform: translateX(0); + } + + + angular.module('ngAnimateChildren', ['ngAnimate']) + .controller('MainController', function MainController() { + this.animateChildren = false; + this.enterElement = false; + }); + + + */ +var $$AnimateChildrenDirective = ['$interpolate', function($interpolate) { + return { + link: function(scope, element, attrs) { + var val = attrs.ngAnimateChildren; + if (isString(val) && val.length === 0) { //empty attribute + element.data(NG_ANIMATE_CHILDREN_DATA, true); + } else { + // Interpolate and set the value, so that it is available to + // animations that run right after compilation + setData($interpolate(val)(scope)); + attrs.$observe('ngAnimateChildren', setData); + } + + function setData(value) { + value = value === 'on' || value === 'true'; + element.data(NG_ANIMATE_CHILDREN_DATA, value); + } + } + }; +}]; + +/* exported $AnimateCssProvider */ + +var ANIMATE_TIMER_KEY = '$$animateCss'; + +/** + * @ngdoc service + * @name $animateCss + * @kind object + * + * @description + * The `$animateCss` service is a useful utility to trigger customized CSS-based transitions/keyframes + * from a JavaScript-based animation or directly from a directive. The purpose of `$animateCss` is NOT + * to side-step how `$animate` and ngAnimate work, but the goal is to allow pre-existing animations or + * directives to create more complex animations that can be purely driven using CSS code. + * + * Note that only browsers that support CSS transitions and/or keyframe animations are capable of + * rendering animations triggered via `$animateCss` (bad news for IE9 and lower). + * + * ## Usage + * Once again, `$animateCss` is designed to be used inside of a registered JavaScript animation that + * is powered by ngAnimate. It is possible to use `$animateCss` directly inside of a directive, however, + * any automatic control over cancelling animations and/or preventing animations from being run on + * child elements will not be handled by Angular. For this to work as expected, please use `$animate` to + * trigger the animation and then setup a JavaScript animation that injects `$animateCss` to trigger + * the CSS animation. + * + * The example below shows how we can create a folding animation on an element using `ng-if`: + * + * ```html + * + *
      + * This element will go BOOM + *
      + * + * ``` + * + * Now we create the **JavaScript animation** that will trigger the CSS transition: + * + * ```js + * ngModule.animation('.fold-animation', ['$animateCss', function($animateCss) { + * return { + * enter: function(element, doneFn) { + * var height = element[0].offsetHeight; + * return $animateCss(element, { + * from: { height:'0px' }, + * to: { height:height + 'px' }, + * duration: 1 // one second + * }); + * } + * } + * }]); + * ``` + * + * ## More Advanced Uses + * + * `$animateCss` is the underlying code that ngAnimate uses to power **CSS-based animations** behind the scenes. Therefore CSS hooks + * like `.ng-EVENT`, `.ng-EVENT-active`, `.ng-EVENT-stagger` are all features that can be triggered using `$animateCss` via JavaScript code. + * + * This also means that just about any combination of adding classes, removing classes, setting styles, dynamically setting a keyframe animation, + * applying a hardcoded duration or delay value, changing the animation easing or applying a stagger animation are all options that work with + * `$animateCss`. The service itself is smart enough to figure out the combination of options and examine the element styling properties in order + * to provide a working animation that will run in CSS. + * + * The example below showcases a more advanced version of the `.fold-animation` from the example above: + * + * ```js + * ngModule.animation('.fold-animation', ['$animateCss', function($animateCss) { + * return { + * enter: function(element, doneFn) { + * var height = element[0].offsetHeight; + * return $animateCss(element, { + * addClass: 'red large-text pulse-twice', + * easing: 'ease-out', + * from: { height:'0px' }, + * to: { height:height + 'px' }, + * duration: 1 // one second + * }); + * } + * } + * }]); + * ``` + * + * Since we're adding/removing CSS classes then the CSS transition will also pick those up: + * + * ```css + * /* since a hardcoded duration value of 1 was provided in the JavaScript animation code, + * the CSS classes below will be transitioned despite them being defined as regular CSS classes */ + * .red { background:red; } + * .large-text { font-size:20px; } + * + * /* we can also use a keyframe animation and $animateCss will make it work alongside the transition */ + * .pulse-twice { + * animation: 0.5s pulse linear 2; + * -webkit-animation: 0.5s pulse linear 2; + * } + * + * @keyframes pulse { + * from { transform: scale(0.5); } + * to { transform: scale(1.5); } + * } + * + * @-webkit-keyframes pulse { + * from { -webkit-transform: scale(0.5); } + * to { -webkit-transform: scale(1.5); } + * } + * ``` + * + * Given this complex combination of CSS classes, styles and options, `$animateCss` will figure everything out and make the animation happen. + * + * ## How the Options are handled + * + * `$animateCss` is very versatile and intelligent when it comes to figuring out what configurations to apply to the element to ensure the animation + * works with the options provided. Say for example we were adding a class that contained a keyframe value and we wanted to also animate some inline + * styles using the `from` and `to` properties. + * + * ```js + * var animator = $animateCss(element, { + * from: { background:'red' }, + * to: { background:'blue' } + * }); + * animator.start(); + * ``` + * + * ```css + * .rotating-animation { + * animation:0.5s rotate linear; + * -webkit-animation:0.5s rotate linear; + * } + * + * @keyframes rotate { + * from { transform: rotate(0deg); } + * to { transform: rotate(360deg); } + * } + * + * @-webkit-keyframes rotate { + * from { -webkit-transform: rotate(0deg); } + * to { -webkit-transform: rotate(360deg); } + * } + * ``` + * + * The missing pieces here are that we do not have a transition set (within the CSS code nor within the `$animateCss` options) and the duration of the animation is + * going to be detected from what the keyframe styles on the CSS class are. In this event, `$animateCss` will automatically create an inline transition + * style matching the duration detected from the keyframe style (which is present in the CSS class that is being added) and then prepare both the transition + * and keyframe animations to run in parallel on the element. Then when the animation is underway the provided `from` and `to` CSS styles will be applied + * and spread across the transition and keyframe animation. + * + * ## What is returned + * + * `$animateCss` works in two stages: a preparation phase and an animation phase. Therefore when `$animateCss` is first called it will NOT actually + * start the animation. All that is going on here is that the element is being prepared for the animation (which means that the generated CSS classes are + * added and removed on the element). Once `$animateCss` is called it will return an object with the following properties: + * + * ```js + * var animator = $animateCss(element, { ... }); + * ``` + * + * Now what do the contents of our `animator` variable look like: + * + * ```js + * { + * // starts the animation + * start: Function, + * + * // ends (aborts) the animation + * end: Function + * } + * ``` + * + * To actually start the animation we need to run `animation.start()` which will then return a promise that we can hook into to detect when the animation ends. + * If we choose not to run the animation then we MUST run `animation.end()` to perform a cleanup on the element (since some CSS classes and styles may have been + * applied to the element during the preparation phase). Note that all other properties such as duration, delay, transitions and keyframes are just properties + * and that changing them will not reconfigure the parameters of the animation. + * + * ### runner.done() vs runner.then() + * It is documented that `animation.start()` will return a promise object and this is true, however, there is also an additional method available on the + * runner called `.done(callbackFn)`. The done method works the same as `.finally(callbackFn)`, however, it does **not trigger a digest to occur**. + * Therefore, for performance reasons, it's always best to use `runner.done(callback)` instead of `runner.then()`, `runner.catch()` or `runner.finally()` + * unless you really need a digest to kick off afterwards. + * + * Keep in mind that, to make this easier, ngAnimate has tweaked the JS animations API to recognize when a runner instance is returned from $animateCss + * (so there is no need to call `runner.done(doneFn)` inside of your JavaScript animation code). + * Check the {@link ngAnimate.$animateCss#usage animation code above} to see how this works. + * + * @param {DOMElement} element the element that will be animated + * @param {object} options the animation-related options that will be applied during the animation + * + * * `event` - The DOM event (e.g. enter, leave, move). When used, a generated CSS class of `ng-EVENT` and `ng-EVENT-active` will be applied + * to the element during the animation. Multiple events can be provided when spaces are used as a separator. (Note that this will not perform any DOM operation.) + * * `structural` - Indicates that the `ng-` prefix will be added to the event class. Setting to `false` or omitting will turn `ng-EVENT` and + * `ng-EVENT-active` in `EVENT` and `EVENT-active`. Unused if `event` is omitted. + * * `easing` - The CSS easing value that will be applied to the transition or keyframe animation (or both). + * * `transitionStyle` - The raw CSS transition style that will be used (e.g. `1s linear all`). + * * `keyframeStyle` - The raw CSS keyframe animation style that will be used (e.g. `1s my_animation linear`). + * * `from` - The starting CSS styles (a key/value object) that will be applied at the start of the animation. + * * `to` - The ending CSS styles (a key/value object) that will be applied across the animation via a CSS transition. + * * `addClass` - A space separated list of CSS classes that will be added to the element and spread across the animation. + * * `removeClass` - A space separated list of CSS classes that will be removed from the element and spread across the animation. + * * `duration` - A number value representing the total duration of the transition and/or keyframe (note that a value of 1 is 1000ms). If a value of `0` + * is provided then the animation will be skipped entirely. + * * `delay` - A number value representing the total delay of the transition and/or keyframe (note that a value of 1 is 1000ms). If a value of `true` is + * used then whatever delay value is detected from the CSS classes will be mirrored on the elements styles (e.g. by setting delay true then the style value + * of the element will be `transition-delay: DETECTED_VALUE`). Using `true` is useful when you want the CSS classes and inline styles to all share the same + * CSS delay value. + * * `stagger` - A numeric time value representing the delay between successively animated elements + * ({@link ngAnimate#css-staggering-animations Click here to learn how CSS-based staggering works in ngAnimate.}) + * * `staggerIndex` - The numeric index representing the stagger item (e.g. a value of 5 is equal to the sixth item in the stagger; therefore when a + * `stagger` option value of `0.1` is used then there will be a stagger delay of `600ms`) + * * `applyClassesEarly` - Whether or not the classes being added or removed will be used when detecting the animation. This is set by `$animate` when enter/leave/move animations are fired to ensure that the CSS classes are resolved in time. (Note that this will prevent any transitions from occurring on the classes being added and removed.) + * * `cleanupStyles` - Whether or not the provided `from` and `to` styles will be removed once + * the animation is closed. This is useful for when the styles are used purely for the sake of + * the animation and do not have a lasting visual effect on the element (e.g. a collapse and open animation). + * By default this value is set to `false`. + * + * @return {object} an object with start and end methods and details about the animation. + * + * * `start` - The method to start the animation. This will return a `Promise` when called. + * * `end` - This method will cancel the animation and remove all applied CSS classes and styles. + */ +var ONE_SECOND = 1000; + +var ELAPSED_TIME_MAX_DECIMAL_PLACES = 3; +var CLOSING_TIME_BUFFER = 1.5; + +var DETECT_CSS_PROPERTIES = { + transitionDuration: TRANSITION_DURATION_PROP, + transitionDelay: TRANSITION_DELAY_PROP, + transitionProperty: TRANSITION_PROP + PROPERTY_KEY, + animationDuration: ANIMATION_DURATION_PROP, + animationDelay: ANIMATION_DELAY_PROP, + animationIterationCount: ANIMATION_PROP + ANIMATION_ITERATION_COUNT_KEY +}; + +var DETECT_STAGGER_CSS_PROPERTIES = { + transitionDuration: TRANSITION_DURATION_PROP, + transitionDelay: TRANSITION_DELAY_PROP, + animationDuration: ANIMATION_DURATION_PROP, + animationDelay: ANIMATION_DELAY_PROP +}; + +function getCssKeyframeDurationStyle(duration) { + return [ANIMATION_DURATION_PROP, duration + 's']; +} + +function getCssDelayStyle(delay, isKeyframeAnimation) { + var prop = isKeyframeAnimation ? ANIMATION_DELAY_PROP : TRANSITION_DELAY_PROP; + return [prop, delay + 's']; +} + +function computeCssStyles($window, element, properties) { + var styles = Object.create(null); + var detectedStyles = $window.getComputedStyle(element) || {}; + forEach(properties, function(formalStyleName, actualStyleName) { + var val = detectedStyles[formalStyleName]; + if (val) { + var c = val.charAt(0); + + // only numerical-based values have a negative sign or digit as the first value + if (c === '-' || c === '+' || c >= 0) { + val = parseMaxTime(val); + } + + // by setting this to null in the event that the delay is not set or is set directly as 0 + // then we can still allow for negative values to be used later on and not mistake this + // value for being greater than any other negative value. + if (val === 0) { + val = null; + } + styles[actualStyleName] = val; + } + }); + + return styles; +} + +function parseMaxTime(str) { + var maxValue = 0; + var values = str.split(/\s*,\s*/); + forEach(values, function(value) { + // it's always safe to consider only second values and omit `ms` values since + // getComputedStyle will always handle the conversion for us + if (value.charAt(value.length - 1) === 's') { + value = value.substring(0, value.length - 1); + } + value = parseFloat(value) || 0; + maxValue = maxValue ? Math.max(value, maxValue) : value; + }); + return maxValue; +} + +function truthyTimingValue(val) { + return val === 0 || val != null; +} + +function getCssTransitionDurationStyle(duration, applyOnlyDuration) { + var style = TRANSITION_PROP; + var value = duration + 's'; + if (applyOnlyDuration) { + style += DURATION_KEY; + } else { + value += ' linear all'; + } + return [style, value]; +} + +function createLocalCacheLookup() { + var cache = Object.create(null); + return { + flush: function() { + cache = Object.create(null); + }, + + count: function(key) { + var entry = cache[key]; + return entry ? entry.total : 0; + }, + + get: function(key) { + var entry = cache[key]; + return entry && entry.value; + }, + + put: function(key, value) { + if (!cache[key]) { + cache[key] = { total: 1, value: value }; + } else { + cache[key].total++; + } + } + }; +} + +// we do not reassign an already present style value since +// if we detect the style property value again we may be +// detecting styles that were added via the `from` styles. +// We make use of `isDefined` here since an empty string +// or null value (which is what getPropertyValue will return +// for a non-existing style) will still be marked as a valid +// value for the style (a falsy value implies that the style +// is to be removed at the end of the animation). If we had a simple +// "OR" statement then it would not be enough to catch that. +function registerRestorableStyles(backup, node, properties) { + forEach(properties, function(prop) { + backup[prop] = isDefined(backup[prop]) + ? backup[prop] + : node.style.getPropertyValue(prop); + }); +} + +var $AnimateCssProvider = ['$animateProvider', /** @this */ function($animateProvider) { + var gcsLookup = createLocalCacheLookup(); + var gcsStaggerLookup = createLocalCacheLookup(); + + this.$get = ['$window', '$$jqLite', '$$AnimateRunner', '$timeout', + '$$forceReflow', '$sniffer', '$$rAFScheduler', '$$animateQueue', + function($window, $$jqLite, $$AnimateRunner, $timeout, + $$forceReflow, $sniffer, $$rAFScheduler, $$animateQueue) { + + var applyAnimationClasses = applyAnimationClassesFactory($$jqLite); + + var parentCounter = 0; + function gcsHashFn(node, extraClasses) { + var KEY = '$$ngAnimateParentKey'; + var parentNode = node.parentNode; + var parentID = parentNode[KEY] || (parentNode[KEY] = ++parentCounter); + return parentID + '-' + node.getAttribute('class') + '-' + extraClasses; + } + + function computeCachedCssStyles(node, className, cacheKey, properties) { + var timings = gcsLookup.get(cacheKey); + + if (!timings) { + timings = computeCssStyles($window, node, properties); + if (timings.animationIterationCount === 'infinite') { + timings.animationIterationCount = 1; + } + } + + // we keep putting this in multiple times even though the value and the cacheKey are the same + // because we're keeping an internal tally of how many duplicate animations are detected. + gcsLookup.put(cacheKey, timings); + return timings; + } + + function computeCachedCssStaggerStyles(node, className, cacheKey, properties) { + var stagger; + + // if we have one or more existing matches of matching elements + // containing the same parent + CSS styles (which is how cacheKey works) + // then staggering is possible + if (gcsLookup.count(cacheKey) > 0) { + stagger = gcsStaggerLookup.get(cacheKey); + + if (!stagger) { + var staggerClassName = pendClasses(className, '-stagger'); + + $$jqLite.addClass(node, staggerClassName); + + stagger = computeCssStyles($window, node, properties); + + // force the conversion of a null value to zero incase not set + stagger.animationDuration = Math.max(stagger.animationDuration, 0); + stagger.transitionDuration = Math.max(stagger.transitionDuration, 0); + + $$jqLite.removeClass(node, staggerClassName); + + gcsStaggerLookup.put(cacheKey, stagger); + } + } + + return stagger || {}; + } + + var rafWaitQueue = []; + function waitUntilQuiet(callback) { + rafWaitQueue.push(callback); + $$rAFScheduler.waitUntilQuiet(function() { + gcsLookup.flush(); + gcsStaggerLookup.flush(); + + // DO NOT REMOVE THIS LINE OR REFACTOR OUT THE `pageWidth` variable. + // PLEASE EXAMINE THE `$$forceReflow` service to understand why. + var pageWidth = $$forceReflow(); + + // we use a for loop to ensure that if the queue is changed + // during this looping then it will consider new requests + for (var i = 0; i < rafWaitQueue.length; i++) { + rafWaitQueue[i](pageWidth); + } + rafWaitQueue.length = 0; + }); + } + + function computeTimings(node, className, cacheKey) { + var timings = computeCachedCssStyles(node, className, cacheKey, DETECT_CSS_PROPERTIES); + var aD = timings.animationDelay; + var tD = timings.transitionDelay; + timings.maxDelay = aD && tD + ? Math.max(aD, tD) + : (aD || tD); + timings.maxDuration = Math.max( + timings.animationDuration * timings.animationIterationCount, + timings.transitionDuration); + + return timings; + } + + return function init(element, initialOptions) { + // all of the animation functions should create + // a copy of the options data, however, if a + // parent service has already created a copy then + // we should stick to using that + var options = initialOptions || {}; + if (!options.$$prepared) { + options = prepareAnimationOptions(copy(options)); + } + + var restoreStyles = {}; + var node = getDomNode(element); + if (!node + || !node.parentNode + || !$$animateQueue.enabled()) { + return closeAndReturnNoopAnimator(); + } + + var temporaryStyles = []; + var classes = element.attr('class'); + var styles = packageStyles(options); + var animationClosed; + var animationPaused; + var animationCompleted; + var runner; + var runnerHost; + var maxDelay; + var maxDelayTime; + var maxDuration; + var maxDurationTime; + var startTime; + var events = []; + + if (options.duration === 0 || (!$sniffer.animations && !$sniffer.transitions)) { + return closeAndReturnNoopAnimator(); + } + + var method = options.event && isArray(options.event) + ? options.event.join(' ') + : options.event; + + var isStructural = method && options.structural; + var structuralClassName = ''; + var addRemoveClassName = ''; + + if (isStructural) { + structuralClassName = pendClasses(method, EVENT_CLASS_PREFIX, true); + } else if (method) { + structuralClassName = method; + } + + if (options.addClass) { + addRemoveClassName += pendClasses(options.addClass, ADD_CLASS_SUFFIX); + } + + if (options.removeClass) { + if (addRemoveClassName.length) { + addRemoveClassName += ' '; + } + addRemoveClassName += pendClasses(options.removeClass, REMOVE_CLASS_SUFFIX); + } + + // there may be a situation where a structural animation is combined together + // with CSS classes that need to resolve before the animation is computed. + // However this means that there is no explicit CSS code to block the animation + // from happening (by setting 0s none in the class name). If this is the case + // we need to apply the classes before the first rAF so we know to continue if + // there actually is a detected transition or keyframe animation + if (options.applyClassesEarly && addRemoveClassName.length) { + applyAnimationClasses(element, options); + } + + var preparationClasses = [structuralClassName, addRemoveClassName].join(' ').trim(); + var fullClassName = classes + ' ' + preparationClasses; + var activeClasses = pendClasses(preparationClasses, ACTIVE_CLASS_SUFFIX); + var hasToStyles = styles.to && Object.keys(styles.to).length > 0; + var containsKeyframeAnimation = (options.keyframeStyle || '').length > 0; + + // there is no way we can trigger an animation if no styles and + // no classes are being applied which would then trigger a transition, + // unless there a is raw keyframe value that is applied to the element. + if (!containsKeyframeAnimation + && !hasToStyles + && !preparationClasses) { + return closeAndReturnNoopAnimator(); + } + + var cacheKey, stagger; + if (options.stagger > 0) { + var staggerVal = parseFloat(options.stagger); + stagger = { + transitionDelay: staggerVal, + animationDelay: staggerVal, + transitionDuration: 0, + animationDuration: 0 + }; + } else { + cacheKey = gcsHashFn(node, fullClassName); + stagger = computeCachedCssStaggerStyles(node, preparationClasses, cacheKey, DETECT_STAGGER_CSS_PROPERTIES); + } + + if (!options.$$skipPreparationClasses) { + $$jqLite.addClass(element, preparationClasses); + } + + var applyOnlyDuration; + + if (options.transitionStyle) { + var transitionStyle = [TRANSITION_PROP, options.transitionStyle]; + applyInlineStyle(node, transitionStyle); + temporaryStyles.push(transitionStyle); + } + + if (options.duration >= 0) { + applyOnlyDuration = node.style[TRANSITION_PROP].length > 0; + var durationStyle = getCssTransitionDurationStyle(options.duration, applyOnlyDuration); + + // we set the duration so that it will be picked up by getComputedStyle later + applyInlineStyle(node, durationStyle); + temporaryStyles.push(durationStyle); + } + + if (options.keyframeStyle) { + var keyframeStyle = [ANIMATION_PROP, options.keyframeStyle]; + applyInlineStyle(node, keyframeStyle); + temporaryStyles.push(keyframeStyle); + } + + var itemIndex = stagger + ? options.staggerIndex >= 0 + ? options.staggerIndex + : gcsLookup.count(cacheKey) + : 0; + + var isFirst = itemIndex === 0; + + // this is a pre-emptive way of forcing the setup classes to be added and applied INSTANTLY + // without causing any combination of transitions to kick in. By adding a negative delay value + // it forces the setup class' transition to end immediately. We later then remove the negative + // transition delay to allow for the transition to naturally do it's thing. The beauty here is + // that if there is no transition defined then nothing will happen and this will also allow + // other transitions to be stacked on top of each other without any chopping them out. + if (isFirst && !options.skipBlocking) { + blockTransitions(node, SAFE_FAST_FORWARD_DURATION_VALUE); + } + + var timings = computeTimings(node, fullClassName, cacheKey); + var relativeDelay = timings.maxDelay; + maxDelay = Math.max(relativeDelay, 0); + maxDuration = timings.maxDuration; + + var flags = {}; + flags.hasTransitions = timings.transitionDuration > 0; + flags.hasAnimations = timings.animationDuration > 0; + flags.hasTransitionAll = flags.hasTransitions && timings.transitionProperty === 'all'; + flags.applyTransitionDuration = hasToStyles && ( + (flags.hasTransitions && !flags.hasTransitionAll) + || (flags.hasAnimations && !flags.hasTransitions)); + flags.applyAnimationDuration = options.duration && flags.hasAnimations; + flags.applyTransitionDelay = truthyTimingValue(options.delay) && (flags.applyTransitionDuration || flags.hasTransitions); + flags.applyAnimationDelay = truthyTimingValue(options.delay) && flags.hasAnimations; + flags.recalculateTimingStyles = addRemoveClassName.length > 0; + + if (flags.applyTransitionDuration || flags.applyAnimationDuration) { + maxDuration = options.duration ? parseFloat(options.duration) : maxDuration; + + if (flags.applyTransitionDuration) { + flags.hasTransitions = true; + timings.transitionDuration = maxDuration; + applyOnlyDuration = node.style[TRANSITION_PROP + PROPERTY_KEY].length > 0; + temporaryStyles.push(getCssTransitionDurationStyle(maxDuration, applyOnlyDuration)); + } + + if (flags.applyAnimationDuration) { + flags.hasAnimations = true; + timings.animationDuration = maxDuration; + temporaryStyles.push(getCssKeyframeDurationStyle(maxDuration)); + } + } + + if (maxDuration === 0 && !flags.recalculateTimingStyles) { + return closeAndReturnNoopAnimator(); + } + + if (options.delay != null) { + var delayStyle; + if (typeof options.delay !== 'boolean') { + delayStyle = parseFloat(options.delay); + // number in options.delay means we have to recalculate the delay for the closing timeout + maxDelay = Math.max(delayStyle, 0); + } + + if (flags.applyTransitionDelay) { + temporaryStyles.push(getCssDelayStyle(delayStyle)); + } + + if (flags.applyAnimationDelay) { + temporaryStyles.push(getCssDelayStyle(delayStyle, true)); + } + } + + // we need to recalculate the delay value since we used a pre-emptive negative + // delay value and the delay value is required for the final event checking. This + // property will ensure that this will happen after the RAF phase has passed. + if (options.duration == null && timings.transitionDuration > 0) { + flags.recalculateTimingStyles = flags.recalculateTimingStyles || isFirst; + } + + maxDelayTime = maxDelay * ONE_SECOND; + maxDurationTime = maxDuration * ONE_SECOND; + if (!options.skipBlocking) { + flags.blockTransition = timings.transitionDuration > 0; + flags.blockKeyframeAnimation = timings.animationDuration > 0 && + stagger.animationDelay > 0 && + stagger.animationDuration === 0; + } + + if (options.from) { + if (options.cleanupStyles) { + registerRestorableStyles(restoreStyles, node, Object.keys(options.from)); + } + applyAnimationFromStyles(element, options); + } + + if (flags.blockTransition || flags.blockKeyframeAnimation) { + applyBlocking(maxDuration); + } else if (!options.skipBlocking) { + blockTransitions(node, false); + } + + // TODO(matsko): for 1.5 change this code to have an animator object for better debugging + return { + $$willAnimate: true, + end: endFn, + start: function() { + if (animationClosed) return; + + runnerHost = { + end: endFn, + cancel: cancelFn, + resume: null, //this will be set during the start() phase + pause: null + }; + + runner = new $$AnimateRunner(runnerHost); + + waitUntilQuiet(start); + + // we don't have access to pause/resume the animation + // since it hasn't run yet. AnimateRunner will therefore + // set noop functions for resume and pause and they will + // later be overridden once the animation is triggered + return runner; + } + }; + + function endFn() { + close(); + } + + function cancelFn() { + close(true); + } + + function close(rejected) { + // if the promise has been called already then we shouldn't close + // the animation again + if (animationClosed || (animationCompleted && animationPaused)) return; + animationClosed = true; + animationPaused = false; + + if (!options.$$skipPreparationClasses) { + $$jqLite.removeClass(element, preparationClasses); + } + $$jqLite.removeClass(element, activeClasses); + + blockKeyframeAnimations(node, false); + blockTransitions(node, false); + + forEach(temporaryStyles, function(entry) { + // There is only one way to remove inline style properties entirely from elements. + // By using `removeProperty` this works, but we need to convert camel-cased CSS + // styles down to hyphenated values. + node.style[entry[0]] = ''; + }); + + applyAnimationClasses(element, options); + applyAnimationStyles(element, options); + + if (Object.keys(restoreStyles).length) { + forEach(restoreStyles, function(value, prop) { + if (value) { + node.style.setProperty(prop, value); + } else { + node.style.removeProperty(prop); + } + }); + } + + // the reason why we have this option is to allow a synchronous closing callback + // that is fired as SOON as the animation ends (when the CSS is removed) or if + // the animation never takes off at all. A good example is a leave animation since + // the element must be removed just after the animation is over or else the element + // will appear on screen for one animation frame causing an overbearing flicker. + if (options.onDone) { + options.onDone(); + } + + if (events && events.length) { + // Remove the transitionend / animationend listener(s) + element.off(events.join(' '), onAnimationProgress); + } + + //Cancel the fallback closing timeout and remove the timer data + var animationTimerData = element.data(ANIMATE_TIMER_KEY); + if (animationTimerData) { + $timeout.cancel(animationTimerData[0].timer); + element.removeData(ANIMATE_TIMER_KEY); + } + + // if the preparation function fails then the promise is not setup + if (runner) { + runner.complete(!rejected); + } + } + + function applyBlocking(duration) { + if (flags.blockTransition) { + blockTransitions(node, duration); + } + + if (flags.blockKeyframeAnimation) { + blockKeyframeAnimations(node, !!duration); + } + } + + function closeAndReturnNoopAnimator() { + runner = new $$AnimateRunner({ + end: endFn, + cancel: cancelFn + }); + + // should flush the cache animation + waitUntilQuiet(noop); + close(); + + return { + $$willAnimate: false, + start: function() { + return runner; + }, + end: endFn + }; + } + + function onAnimationProgress(event) { + event.stopPropagation(); + var ev = event.originalEvent || event; + + // we now always use `Date.now()` due to the recent changes with + // event.timeStamp in Firefox, Webkit and Chrome (see #13494 for more info) + var timeStamp = ev.$manualTimeStamp || Date.now(); + + /* Firefox (or possibly just Gecko) likes to not round values up + * when a ms measurement is used for the animation */ + var elapsedTime = parseFloat(ev.elapsedTime.toFixed(ELAPSED_TIME_MAX_DECIMAL_PLACES)); + + /* $manualTimeStamp is a mocked timeStamp value which is set + * within browserTrigger(). This is only here so that tests can + * mock animations properly. Real events fallback to event.timeStamp, + * or, if they don't, then a timeStamp is automatically created for them. + * We're checking to see if the timeStamp surpasses the expected delay, + * but we're using elapsedTime instead of the timeStamp on the 2nd + * pre-condition since animationPauseds sometimes close off early */ + if (Math.max(timeStamp - startTime, 0) >= maxDelayTime && elapsedTime >= maxDuration) { + // we set this flag to ensure that if the transition is paused then, when resumed, + // the animation will automatically close itself since transitions cannot be paused. + animationCompleted = true; + close(); + } + } + + function start() { + if (animationClosed) return; + if (!node.parentNode) { + close(); + return; + } + + // even though we only pause keyframe animations here the pause flag + // will still happen when transitions are used. Only the transition will + // not be paused since that is not possible. If the animation ends when + // paused then it will not complete until unpaused or cancelled. + var playPause = function(playAnimation) { + if (!animationCompleted) { + animationPaused = !playAnimation; + if (timings.animationDuration) { + var value = blockKeyframeAnimations(node, animationPaused); + if (animationPaused) { + temporaryStyles.push(value); + } else { + removeFromArray(temporaryStyles, value); + } + } + } else if (animationPaused && playAnimation) { + animationPaused = false; + close(); + } + }; + + // checking the stagger duration prevents an accidentally cascade of the CSS delay style + // being inherited from the parent. If the transition duration is zero then we can safely + // rely that the delay value is an intentional stagger delay style. + var maxStagger = itemIndex > 0 + && ((timings.transitionDuration && stagger.transitionDuration === 0) || + (timings.animationDuration && stagger.animationDuration === 0)) + && Math.max(stagger.animationDelay, stagger.transitionDelay); + if (maxStagger) { + $timeout(triggerAnimationStart, + Math.floor(maxStagger * itemIndex * ONE_SECOND), + false); + } else { + triggerAnimationStart(); + } + + // this will decorate the existing promise runner with pause/resume methods + runnerHost.resume = function() { + playPause(true); + }; + + runnerHost.pause = function() { + playPause(false); + }; + + function triggerAnimationStart() { + // just incase a stagger animation kicks in when the animation + // itself was cancelled entirely + if (animationClosed) return; + + applyBlocking(false); + + forEach(temporaryStyles, function(entry) { + var key = entry[0]; + var value = entry[1]; + node.style[key] = value; + }); + + applyAnimationClasses(element, options); + $$jqLite.addClass(element, activeClasses); + + if (flags.recalculateTimingStyles) { + fullClassName = node.className + ' ' + preparationClasses; + cacheKey = gcsHashFn(node, fullClassName); + + timings = computeTimings(node, fullClassName, cacheKey); + relativeDelay = timings.maxDelay; + maxDelay = Math.max(relativeDelay, 0); + maxDuration = timings.maxDuration; + + if (maxDuration === 0) { + close(); + return; + } + + flags.hasTransitions = timings.transitionDuration > 0; + flags.hasAnimations = timings.animationDuration > 0; + } + + if (flags.applyAnimationDelay) { + relativeDelay = typeof options.delay !== 'boolean' && truthyTimingValue(options.delay) + ? parseFloat(options.delay) + : relativeDelay; + + maxDelay = Math.max(relativeDelay, 0); + timings.animationDelay = relativeDelay; + delayStyle = getCssDelayStyle(relativeDelay, true); + temporaryStyles.push(delayStyle); + node.style[delayStyle[0]] = delayStyle[1]; + } + + maxDelayTime = maxDelay * ONE_SECOND; + maxDurationTime = maxDuration * ONE_SECOND; + + if (options.easing) { + var easeProp, easeVal = options.easing; + if (flags.hasTransitions) { + easeProp = TRANSITION_PROP + TIMING_KEY; + temporaryStyles.push([easeProp, easeVal]); + node.style[easeProp] = easeVal; + } + if (flags.hasAnimations) { + easeProp = ANIMATION_PROP + TIMING_KEY; + temporaryStyles.push([easeProp, easeVal]); + node.style[easeProp] = easeVal; + } + } + + if (timings.transitionDuration) { + events.push(TRANSITIONEND_EVENT); + } + + if (timings.animationDuration) { + events.push(ANIMATIONEND_EVENT); + } + + startTime = Date.now(); + var timerTime = maxDelayTime + CLOSING_TIME_BUFFER * maxDurationTime; + var endTime = startTime + timerTime; + + var animationsData = element.data(ANIMATE_TIMER_KEY) || []; + var setupFallbackTimer = true; + if (animationsData.length) { + var currentTimerData = animationsData[0]; + setupFallbackTimer = endTime > currentTimerData.expectedEndTime; + if (setupFallbackTimer) { + $timeout.cancel(currentTimerData.timer); + } else { + animationsData.push(close); + } + } + + if (setupFallbackTimer) { + var timer = $timeout(onAnimationExpired, timerTime, false); + animationsData[0] = { + timer: timer, + expectedEndTime: endTime + }; + animationsData.push(close); + element.data(ANIMATE_TIMER_KEY, animationsData); + } + + if (events.length) { + element.on(events.join(' '), onAnimationProgress); + } + + if (options.to) { + if (options.cleanupStyles) { + registerRestorableStyles(restoreStyles, node, Object.keys(options.to)); + } + applyAnimationToStyles(element, options); + } + } + + function onAnimationExpired() { + var animationsData = element.data(ANIMATE_TIMER_KEY); + + // this will be false in the event that the element was + // removed from the DOM (via a leave animation or something + // similar) + if (animationsData) { + for (var i = 1; i < animationsData.length; i++) { + animationsData[i](); + } + element.removeData(ANIMATE_TIMER_KEY); + } + } + } + }; + }]; +}]; + +var $$AnimateCssDriverProvider = ['$$animationProvider', /** @this */ function($$animationProvider) { + $$animationProvider.drivers.push('$$animateCssDriver'); + + var NG_ANIMATE_SHIM_CLASS_NAME = 'ng-animate-shim'; + var NG_ANIMATE_ANCHOR_CLASS_NAME = 'ng-anchor'; + + var NG_OUT_ANCHOR_CLASS_NAME = 'ng-anchor-out'; + var NG_IN_ANCHOR_CLASS_NAME = 'ng-anchor-in'; + + function isDocumentFragment(node) { + return node.parentNode && node.parentNode.nodeType === 11; + } + + this.$get = ['$animateCss', '$rootScope', '$$AnimateRunner', '$rootElement', '$sniffer', '$$jqLite', '$document', + function($animateCss, $rootScope, $$AnimateRunner, $rootElement, $sniffer, $$jqLite, $document) { + + // only browsers that support these properties can render animations + if (!$sniffer.animations && !$sniffer.transitions) return noop; + + var bodyNode = $document[0].body; + var rootNode = getDomNode($rootElement); + + var rootBodyElement = jqLite( + // this is to avoid using something that exists outside of the body + // we also special case the doc fragment case because our unit test code + // appends the $rootElement to the body after the app has been bootstrapped + isDocumentFragment(rootNode) || bodyNode.contains(rootNode) ? rootNode : bodyNode + ); + + return function initDriverFn(animationDetails) { + return animationDetails.from && animationDetails.to + ? prepareFromToAnchorAnimation(animationDetails.from, + animationDetails.to, + animationDetails.classes, + animationDetails.anchors) + : prepareRegularAnimation(animationDetails); + }; + + function filterCssClasses(classes) { + //remove all the `ng-` stuff + return classes.replace(/\bng-\S+\b/g, ''); + } + + function getUniqueValues(a, b) { + if (isString(a)) a = a.split(' '); + if (isString(b)) b = b.split(' '); + return a.filter(function(val) { + return b.indexOf(val) === -1; + }).join(' '); + } + + function prepareAnchoredAnimation(classes, outAnchor, inAnchor) { + var clone = jqLite(getDomNode(outAnchor).cloneNode(true)); + var startingClasses = filterCssClasses(getClassVal(clone)); + + outAnchor.addClass(NG_ANIMATE_SHIM_CLASS_NAME); + inAnchor.addClass(NG_ANIMATE_SHIM_CLASS_NAME); + + clone.addClass(NG_ANIMATE_ANCHOR_CLASS_NAME); + + rootBodyElement.append(clone); + + var animatorIn, animatorOut = prepareOutAnimation(); + + // the user may not end up using the `out` animation and + // only making use of the `in` animation or vice-versa. + // In either case we should allow this and not assume the + // animation is over unless both animations are not used. + if (!animatorOut) { + animatorIn = prepareInAnimation(); + if (!animatorIn) { + return end(); + } + } + + var startingAnimator = animatorOut || animatorIn; + + return { + start: function() { + var runner; + + var currentAnimation = startingAnimator.start(); + currentAnimation.done(function() { + currentAnimation = null; + if (!animatorIn) { + animatorIn = prepareInAnimation(); + if (animatorIn) { + currentAnimation = animatorIn.start(); + currentAnimation.done(function() { + currentAnimation = null; + end(); + runner.complete(); + }); + return currentAnimation; + } + } + // in the event that there is no `in` animation + end(); + runner.complete(); + }); + + runner = new $$AnimateRunner({ + end: endFn, + cancel: endFn + }); + + return runner; + + function endFn() { + if (currentAnimation) { + currentAnimation.end(); + } + } + } + }; + + function calculateAnchorStyles(anchor) { + var styles = {}; + + var coords = getDomNode(anchor).getBoundingClientRect(); + + // we iterate directly since safari messes up and doesn't return + // all the keys for the coords object when iterated + forEach(['width','height','top','left'], function(key) { + var value = coords[key]; + switch (key) { + case 'top': + value += bodyNode.scrollTop; + break; + case 'left': + value += bodyNode.scrollLeft; + break; + } + styles[key] = Math.floor(value) + 'px'; + }); + return styles; + } + + function prepareOutAnimation() { + var animator = $animateCss(clone, { + addClass: NG_OUT_ANCHOR_CLASS_NAME, + delay: true, + from: calculateAnchorStyles(outAnchor) + }); + + // read the comment within `prepareRegularAnimation` to understand + // why this check is necessary + return animator.$$willAnimate ? animator : null; + } + + function getClassVal(element) { + return element.attr('class') || ''; + } + + function prepareInAnimation() { + var endingClasses = filterCssClasses(getClassVal(inAnchor)); + var toAdd = getUniqueValues(endingClasses, startingClasses); + var toRemove = getUniqueValues(startingClasses, endingClasses); + + var animator = $animateCss(clone, { + to: calculateAnchorStyles(inAnchor), + addClass: NG_IN_ANCHOR_CLASS_NAME + ' ' + toAdd, + removeClass: NG_OUT_ANCHOR_CLASS_NAME + ' ' + toRemove, + delay: true + }); + + // read the comment within `prepareRegularAnimation` to understand + // why this check is necessary + return animator.$$willAnimate ? animator : null; + } + + function end() { + clone.remove(); + outAnchor.removeClass(NG_ANIMATE_SHIM_CLASS_NAME); + inAnchor.removeClass(NG_ANIMATE_SHIM_CLASS_NAME); + } + } + + function prepareFromToAnchorAnimation(from, to, classes, anchors) { + var fromAnimation = prepareRegularAnimation(from, noop); + var toAnimation = prepareRegularAnimation(to, noop); + + var anchorAnimations = []; + forEach(anchors, function(anchor) { + var outElement = anchor['out']; + var inElement = anchor['in']; + var animator = prepareAnchoredAnimation(classes, outElement, inElement); + if (animator) { + anchorAnimations.push(animator); + } + }); + + // no point in doing anything when there are no elements to animate + if (!fromAnimation && !toAnimation && anchorAnimations.length === 0) return; + + return { + start: function() { + var animationRunners = []; + + if (fromAnimation) { + animationRunners.push(fromAnimation.start()); + } + + if (toAnimation) { + animationRunners.push(toAnimation.start()); + } + + forEach(anchorAnimations, function(animation) { + animationRunners.push(animation.start()); + }); + + var runner = new $$AnimateRunner({ + end: endFn, + cancel: endFn // CSS-driven animations cannot be cancelled, only ended + }); + + $$AnimateRunner.all(animationRunners, function(status) { + runner.complete(status); + }); + + return runner; + + function endFn() { + forEach(animationRunners, function(runner) { + runner.end(); + }); + } + } + }; + } + + function prepareRegularAnimation(animationDetails) { + var element = animationDetails.element; + var options = animationDetails.options || {}; + + if (animationDetails.structural) { + options.event = animationDetails.event; + options.structural = true; + options.applyClassesEarly = true; + + // we special case the leave animation since we want to ensure that + // the element is removed as soon as the animation is over. Otherwise + // a flicker might appear or the element may not be removed at all + if (animationDetails.event === 'leave') { + options.onDone = options.domOperation; + } + } + + // We assign the preparationClasses as the actual animation event since + // the internals of $animateCss will just suffix the event token values + // with `-active` to trigger the animation. + if (options.preparationClasses) { + options.event = concatWithSpace(options.event, options.preparationClasses); + } + + var animator = $animateCss(element, options); + + // the driver lookup code inside of $$animation attempts to spawn a + // driver one by one until a driver returns a.$$willAnimate animator object. + // $animateCss will always return an object, however, it will pass in + // a flag as a hint as to whether an animation was detected or not + return animator.$$willAnimate ? animator : null; + } + }]; +}]; + +// TODO(matsko): use caching here to speed things up for detection +// TODO(matsko): add documentation +// by the time... + +var $$AnimateJsProvider = ['$animateProvider', /** @this */ function($animateProvider) { + this.$get = ['$injector', '$$AnimateRunner', '$$jqLite', + function($injector, $$AnimateRunner, $$jqLite) { + + var applyAnimationClasses = applyAnimationClassesFactory($$jqLite); + // $animateJs(element, 'enter'); + return function(element, event, classes, options) { + var animationClosed = false; + + // the `classes` argument is optional and if it is not used + // then the classes will be resolved from the element's className + // property as well as options.addClass/options.removeClass. + if (arguments.length === 3 && isObject(classes)) { + options = classes; + classes = null; + } + + options = prepareAnimationOptions(options); + if (!classes) { + classes = element.attr('class') || ''; + if (options.addClass) { + classes += ' ' + options.addClass; + } + if (options.removeClass) { + classes += ' ' + options.removeClass; + } + } + + var classesToAdd = options.addClass; + var classesToRemove = options.removeClass; + + // the lookupAnimations function returns a series of animation objects that are + // matched up with one or more of the CSS classes. These animation objects are + // defined via the module.animation factory function. If nothing is detected then + // we don't return anything which then makes $animation query the next driver. + var animations = lookupAnimations(classes); + var before, after; + if (animations.length) { + var afterFn, beforeFn; + if (event === 'leave') { + beforeFn = 'leave'; + afterFn = 'afterLeave'; // TODO(matsko): get rid of this + } else { + beforeFn = 'before' + event.charAt(0).toUpperCase() + event.substr(1); + afterFn = event; + } + + if (event !== 'enter' && event !== 'move') { + before = packageAnimations(element, event, options, animations, beforeFn); + } + after = packageAnimations(element, event, options, animations, afterFn); + } + + // no matching animations + if (!before && !after) return; + + function applyOptions() { + options.domOperation(); + applyAnimationClasses(element, options); + } + + function close() { + animationClosed = true; + applyOptions(); + applyAnimationStyles(element, options); + } + + var runner; + + return { + $$willAnimate: true, + end: function() { + if (runner) { + runner.end(); + } else { + close(); + runner = new $$AnimateRunner(); + runner.complete(true); + } + return runner; + }, + start: function() { + if (runner) { + return runner; + } + + runner = new $$AnimateRunner(); + var closeActiveAnimations; + var chain = []; + + if (before) { + chain.push(function(fn) { + closeActiveAnimations = before(fn); + }); + } + + if (chain.length) { + chain.push(function(fn) { + applyOptions(); + fn(true); + }); + } else { + applyOptions(); + } + + if (after) { + chain.push(function(fn) { + closeActiveAnimations = after(fn); + }); + } + + runner.setHost({ + end: function() { + endAnimations(); + }, + cancel: function() { + endAnimations(true); + } + }); + + $$AnimateRunner.chain(chain, onComplete); + return runner; + + function onComplete(success) { + close(success); + runner.complete(success); + } + + function endAnimations(cancelled) { + if (!animationClosed) { + (closeActiveAnimations || noop)(cancelled); + onComplete(cancelled); + } + } + } + }; + + function executeAnimationFn(fn, element, event, options, onDone) { + var args; + switch (event) { + case 'animate': + args = [element, options.from, options.to, onDone]; + break; + + case 'setClass': + args = [element, classesToAdd, classesToRemove, onDone]; + break; + + case 'addClass': + args = [element, classesToAdd, onDone]; + break; + + case 'removeClass': + args = [element, classesToRemove, onDone]; + break; + + default: + args = [element, onDone]; + break; + } + + args.push(options); + + var value = fn.apply(fn, args); + if (value) { + if (isFunction(value.start)) { + value = value.start(); + } + + if (value instanceof $$AnimateRunner) { + value.done(onDone); + } else if (isFunction(value)) { + // optional onEnd / onCancel callback + return value; + } + } + + return noop; + } + + function groupEventedAnimations(element, event, options, animations, fnName) { + var operations = []; + forEach(animations, function(ani) { + var animation = ani[fnName]; + if (!animation) return; + + // note that all of these animations will run in parallel + operations.push(function() { + var runner; + var endProgressCb; + + var resolved = false; + var onAnimationComplete = function(rejected) { + if (!resolved) { + resolved = true; + (endProgressCb || noop)(rejected); + runner.complete(!rejected); + } + }; + + runner = new $$AnimateRunner({ + end: function() { + onAnimationComplete(); + }, + cancel: function() { + onAnimationComplete(true); + } + }); + + endProgressCb = executeAnimationFn(animation, element, event, options, function(result) { + var cancelled = result === false; + onAnimationComplete(cancelled); + }); + + return runner; + }); + }); + + return operations; + } + + function packageAnimations(element, event, options, animations, fnName) { + var operations = groupEventedAnimations(element, event, options, animations, fnName); + if (operations.length === 0) { + var a, b; + if (fnName === 'beforeSetClass') { + a = groupEventedAnimations(element, 'removeClass', options, animations, 'beforeRemoveClass'); + b = groupEventedAnimations(element, 'addClass', options, animations, 'beforeAddClass'); + } else if (fnName === 'setClass') { + a = groupEventedAnimations(element, 'removeClass', options, animations, 'removeClass'); + b = groupEventedAnimations(element, 'addClass', options, animations, 'addClass'); + } + + if (a) { + operations = operations.concat(a); + } + if (b) { + operations = operations.concat(b); + } + } + + if (operations.length === 0) return; + + // TODO(matsko): add documentation + return function startAnimation(callback) { + var runners = []; + if (operations.length) { + forEach(operations, function(animateFn) { + runners.push(animateFn()); + }); + } + + if (runners.length) { + $$AnimateRunner.all(runners, callback); + } else { + callback(); + } + + return function endFn(reject) { + forEach(runners, function(runner) { + if (reject) { + runner.cancel(); + } else { + runner.end(); + } + }); + }; + }; + } + }; + + function lookupAnimations(classes) { + classes = isArray(classes) ? classes : classes.split(' '); + var matches = [], flagMap = {}; + for (var i = 0; i < classes.length; i++) { + var klass = classes[i], + animationFactory = $animateProvider.$$registeredAnimations[klass]; + if (animationFactory && !flagMap[klass]) { + matches.push($injector.get(animationFactory)); + flagMap[klass] = true; + } + } + return matches; + } + }]; +}]; + +var $$AnimateJsDriverProvider = ['$$animationProvider', /** @this */ function($$animationProvider) { + $$animationProvider.drivers.push('$$animateJsDriver'); + this.$get = ['$$animateJs', '$$AnimateRunner', function($$animateJs, $$AnimateRunner) { + return function initDriverFn(animationDetails) { + if (animationDetails.from && animationDetails.to) { + var fromAnimation = prepareAnimation(animationDetails.from); + var toAnimation = prepareAnimation(animationDetails.to); + if (!fromAnimation && !toAnimation) return; + + return { + start: function() { + var animationRunners = []; + + if (fromAnimation) { + animationRunners.push(fromAnimation.start()); + } + + if (toAnimation) { + animationRunners.push(toAnimation.start()); + } + + $$AnimateRunner.all(animationRunners, done); + + var runner = new $$AnimateRunner({ + end: endFnFactory(), + cancel: endFnFactory() + }); + + return runner; + + function endFnFactory() { + return function() { + forEach(animationRunners, function(runner) { + // at this point we cannot cancel animations for groups just yet. 1.5+ + runner.end(); + }); + }; + } + + function done(status) { + runner.complete(status); + } + } + }; + } else { + return prepareAnimation(animationDetails); + } + }; + + function prepareAnimation(animationDetails) { + // TODO(matsko): make sure to check for grouped animations and delegate down to normal animations + var element = animationDetails.element; + var event = animationDetails.event; + var options = animationDetails.options; + var classes = animationDetails.classes; + return $$animateJs(element, event, classes, options); + } + }]; +}]; + +var NG_ANIMATE_ATTR_NAME = 'data-ng-animate'; +var NG_ANIMATE_PIN_DATA = '$ngAnimatePin'; +var $$AnimateQueueProvider = ['$animateProvider', /** @this */ function($animateProvider) { + var PRE_DIGEST_STATE = 1; + var RUNNING_STATE = 2; + var ONE_SPACE = ' '; + + var rules = this.rules = { + skip: [], + cancel: [], + join: [] + }; + + function makeTruthyCssClassMap(classString) { + if (!classString) { + return null; + } + + var keys = classString.split(ONE_SPACE); + var map = Object.create(null); + + forEach(keys, function(key) { + map[key] = true; + }); + return map; + } + + function hasMatchingClasses(newClassString, currentClassString) { + if (newClassString && currentClassString) { + var currentClassMap = makeTruthyCssClassMap(currentClassString); + return newClassString.split(ONE_SPACE).some(function(className) { + return currentClassMap[className]; + }); + } + } + + function isAllowed(ruleType, element, currentAnimation, previousAnimation) { + return rules[ruleType].some(function(fn) { + return fn(element, currentAnimation, previousAnimation); + }); + } + + function hasAnimationClasses(animation, and) { + var a = (animation.addClass || '').length > 0; + var b = (animation.removeClass || '').length > 0; + return and ? a && b : a || b; + } + + rules.join.push(function(element, newAnimation, currentAnimation) { + // if the new animation is class-based then we can just tack that on + return !newAnimation.structural && hasAnimationClasses(newAnimation); + }); + + rules.skip.push(function(element, newAnimation, currentAnimation) { + // there is no need to animate anything if no classes are being added and + // there is no structural animation that will be triggered + return !newAnimation.structural && !hasAnimationClasses(newAnimation); + }); + + rules.skip.push(function(element, newAnimation, currentAnimation) { + // why should we trigger a new structural animation if the element will + // be removed from the DOM anyway? + return currentAnimation.event === 'leave' && newAnimation.structural; + }); + + rules.skip.push(function(element, newAnimation, currentAnimation) { + // if there is an ongoing current animation then don't even bother running the class-based animation + return currentAnimation.structural && currentAnimation.state === RUNNING_STATE && !newAnimation.structural; + }); + + rules.cancel.push(function(element, newAnimation, currentAnimation) { + // there can never be two structural animations running at the same time + return currentAnimation.structural && newAnimation.structural; + }); + + rules.cancel.push(function(element, newAnimation, currentAnimation) { + // if the previous animation is already running, but the new animation will + // be triggered, but the new animation is structural + return currentAnimation.state === RUNNING_STATE && newAnimation.structural; + }); + + rules.cancel.push(function(element, newAnimation, currentAnimation) { + // cancel the animation if classes added / removed in both animation cancel each other out, + // but only if the current animation isn't structural + + if (currentAnimation.structural) return false; + + var nA = newAnimation.addClass; + var nR = newAnimation.removeClass; + var cA = currentAnimation.addClass; + var cR = currentAnimation.removeClass; + + // early detection to save the global CPU shortage :) + if ((isUndefined(nA) && isUndefined(nR)) || (isUndefined(cA) && isUndefined(cR))) { + return false; + } + + return hasMatchingClasses(nA, cR) || hasMatchingClasses(nR, cA); + }); + + this.$get = ['$$rAF', '$rootScope', '$rootElement', '$document', '$$HashMap', + '$$animation', '$$AnimateRunner', '$templateRequest', '$$jqLite', '$$forceReflow', + function($$rAF, $rootScope, $rootElement, $document, $$HashMap, + $$animation, $$AnimateRunner, $templateRequest, $$jqLite, $$forceReflow) { + + var activeAnimationsLookup = new $$HashMap(); + var disabledElementsLookup = new $$HashMap(); + var animationsEnabled = null; + + function postDigestTaskFactory() { + var postDigestCalled = false; + return function(fn) { + // we only issue a call to postDigest before + // it has first passed. This prevents any callbacks + // from not firing once the animation has completed + // since it will be out of the digest cycle. + if (postDigestCalled) { + fn(); + } else { + $rootScope.$$postDigest(function() { + postDigestCalled = true; + fn(); + }); + } + }; + } + + // Wait until all directive and route-related templates are downloaded and + // compiled. The $templateRequest.totalPendingRequests variable keeps track of + // all of the remote templates being currently downloaded. If there are no + // templates currently downloading then the watcher will still fire anyway. + var deregisterWatch = $rootScope.$watch( + function() { return $templateRequest.totalPendingRequests === 0; }, + function(isEmpty) { + if (!isEmpty) return; + deregisterWatch(); + + // Now that all templates have been downloaded, $animate will wait until + // the post digest queue is empty before enabling animations. By having two + // calls to $postDigest calls we can ensure that the flag is enabled at the + // very end of the post digest queue. Since all of the animations in $animate + // use $postDigest, it's important that the code below executes at the end. + // This basically means that the page is fully downloaded and compiled before + // any animations are triggered. + $rootScope.$$postDigest(function() { + $rootScope.$$postDigest(function() { + // we check for null directly in the event that the application already called + // .enabled() with whatever arguments that it provided it with + if (animationsEnabled === null) { + animationsEnabled = true; + } + }); + }); + } + ); + + var callbackRegistry = Object.create(null); + + // remember that the classNameFilter is set during the provider/config + // stage therefore we can optimize here and setup a helper function + var classNameFilter = $animateProvider.classNameFilter(); + var isAnimatableClassName = !classNameFilter + ? function() { return true; } + : function(className) { + return classNameFilter.test(className); + }; + + var applyAnimationClasses = applyAnimationClassesFactory($$jqLite); + + function normalizeAnimationDetails(element, animation) { + return mergeAnimationDetails(element, animation, {}); + } + + // IE9-11 has no method "contains" in SVG element and in Node.prototype. Bug #10259. + var contains = window.Node.prototype.contains || /** @this */ function(arg) { + // eslint-disable-next-line no-bitwise + return this === arg || !!(this.compareDocumentPosition(arg) & 16); + }; + + function findCallbacks(parent, element, event) { + var targetNode = getDomNode(element); + var targetParentNode = getDomNode(parent); + + var matches = []; + var entries = callbackRegistry[event]; + if (entries) { + forEach(entries, function(entry) { + if (contains.call(entry.node, targetNode)) { + matches.push(entry.callback); + } else if (event === 'leave' && contains.call(entry.node, targetParentNode)) { + matches.push(entry.callback); + } + }); + } + + return matches; + } + + function filterFromRegistry(list, matchContainer, matchCallback) { + var containerNode = extractElementNode(matchContainer); + return list.filter(function(entry) { + var isMatch = entry.node === containerNode && + (!matchCallback || entry.callback === matchCallback); + return !isMatch; + }); + } + + function cleanupEventListeners(phase, element) { + if (phase === 'close' && !element[0].parentNode) { + // If the element is not attached to a parentNode, it has been removed by + // the domOperation, and we can safely remove the event callbacks + $animate.off(element); + } + } + + var $animate = { + on: function(event, container, callback) { + var node = extractElementNode(container); + callbackRegistry[event] = callbackRegistry[event] || []; + callbackRegistry[event].push({ + node: node, + callback: callback + }); + + // Remove the callback when the element is removed from the DOM + jqLite(container).on('$destroy', function() { + var animationDetails = activeAnimationsLookup.get(node); + + if (!animationDetails) { + // If there's an animation ongoing, the callback calling code will remove + // the event listeners. If we'd remove here, the callbacks would be removed + // before the animation ends + $animate.off(event, container, callback); + } + }); + }, + + off: function(event, container, callback) { + if (arguments.length === 1 && !isString(arguments[0])) { + container = arguments[0]; + for (var eventType in callbackRegistry) { + callbackRegistry[eventType] = filterFromRegistry(callbackRegistry[eventType], container); + } + + return; + } + + var entries = callbackRegistry[event]; + if (!entries) return; + + callbackRegistry[event] = arguments.length === 1 + ? null + : filterFromRegistry(entries, container, callback); + }, + + pin: function(element, parentElement) { + assertArg(isElement(element), 'element', 'not an element'); + assertArg(isElement(parentElement), 'parentElement', 'not an element'); + element.data(NG_ANIMATE_PIN_DATA, parentElement); + }, + + push: function(element, event, options, domOperation) { + options = options || {}; + options.domOperation = domOperation; + return queueAnimation(element, event, options); + }, + + // this method has four signatures: + // () - global getter + // (bool) - global setter + // (element) - element getter + // (element, bool) - element setter + enabled: function(element, bool) { + var argCount = arguments.length; + + if (argCount === 0) { + // () - Global getter + bool = !!animationsEnabled; + } else { + var hasElement = isElement(element); + + if (!hasElement) { + // (bool) - Global setter + bool = animationsEnabled = !!element; + } else { + var node = getDomNode(element); + + if (argCount === 1) { + // (element) - Element getter + bool = !disabledElementsLookup.get(node); + } else { + // (element, bool) - Element setter + disabledElementsLookup.put(node, !bool); + } + } + } + + return bool; + } + }; + + return $animate; + + function queueAnimation(element, event, initialOptions) { + // we always make a copy of the options since + // there should never be any side effects on + // the input data when running `$animateCss`. + var options = copy(initialOptions); + + var node, parent; + element = stripCommentsFromElement(element); + if (element) { + node = getDomNode(element); + parent = element.parent(); + } + + options = prepareAnimationOptions(options); + + // we create a fake runner with a working promise. + // These methods will become available after the digest has passed + var runner = new $$AnimateRunner(); + + // this is used to trigger callbacks in postDigest mode + var runInNextPostDigestOrNow = postDigestTaskFactory(); + + if (isArray(options.addClass)) { + options.addClass = options.addClass.join(' '); + } + + if (options.addClass && !isString(options.addClass)) { + options.addClass = null; + } + + if (isArray(options.removeClass)) { + options.removeClass = options.removeClass.join(' '); + } + + if (options.removeClass && !isString(options.removeClass)) { + options.removeClass = null; + } + + if (options.from && !isObject(options.from)) { + options.from = null; + } + + if (options.to && !isObject(options.to)) { + options.to = null; + } + + // there are situations where a directive issues an animation for + // a jqLite wrapper that contains only comment nodes... If this + // happens then there is no way we can perform an animation + if (!node) { + close(); + return runner; + } + + var className = [node.className, options.addClass, options.removeClass].join(' '); + if (!isAnimatableClassName(className)) { + close(); + return runner; + } + + var isStructural = ['enter', 'move', 'leave'].indexOf(event) >= 0; + + var documentHidden = $document[0].hidden; + + // this is a hard disable of all animations for the application or on + // the element itself, therefore there is no need to continue further + // past this point if not enabled + // Animations are also disabled if the document is currently hidden (page is not visible + // to the user), because browsers slow down or do not flush calls to requestAnimationFrame + var skipAnimations = !animationsEnabled || documentHidden || disabledElementsLookup.get(node); + var existingAnimation = (!skipAnimations && activeAnimationsLookup.get(node)) || {}; + var hasExistingAnimation = !!existingAnimation.state; + + // there is no point in traversing the same collection of parent ancestors if a followup + // animation will be run on the same element that already did all that checking work + if (!skipAnimations && (!hasExistingAnimation || existingAnimation.state !== PRE_DIGEST_STATE)) { + skipAnimations = !areAnimationsAllowed(element, parent, event); + } + + if (skipAnimations) { + // Callbacks should fire even if the document is hidden (regression fix for issue #14120) + if (documentHidden) notifyProgress(runner, event, 'start'); + close(); + if (documentHidden) notifyProgress(runner, event, 'close'); + return runner; + } + + if (isStructural) { + closeChildAnimations(element); + } + + var newAnimation = { + structural: isStructural, + element: element, + event: event, + addClass: options.addClass, + removeClass: options.removeClass, + close: close, + options: options, + runner: runner + }; + + if (hasExistingAnimation) { + var skipAnimationFlag = isAllowed('skip', element, newAnimation, existingAnimation); + if (skipAnimationFlag) { + if (existingAnimation.state === RUNNING_STATE) { + close(); + return runner; + } else { + mergeAnimationDetails(element, existingAnimation, newAnimation); + return existingAnimation.runner; + } + } + var cancelAnimationFlag = isAllowed('cancel', element, newAnimation, existingAnimation); + if (cancelAnimationFlag) { + if (existingAnimation.state === RUNNING_STATE) { + // this will end the animation right away and it is safe + // to do so since the animation is already running and the + // runner callback code will run in async + existingAnimation.runner.end(); + } else if (existingAnimation.structural) { + // this means that the animation is queued into a digest, but + // hasn't started yet. Therefore it is safe to run the close + // method which will call the runner methods in async. + existingAnimation.close(); + } else { + // this will merge the new animation options into existing animation options + mergeAnimationDetails(element, existingAnimation, newAnimation); + + return existingAnimation.runner; + } + } else { + // a joined animation means that this animation will take over the existing one + // so an example would involve a leave animation taking over an enter. Then when + // the postDigest kicks in the enter will be ignored. + var joinAnimationFlag = isAllowed('join', element, newAnimation, existingAnimation); + if (joinAnimationFlag) { + if (existingAnimation.state === RUNNING_STATE) { + normalizeAnimationDetails(element, newAnimation); + } else { + applyGeneratedPreparationClasses(element, isStructural ? event : null, options); + + event = newAnimation.event = existingAnimation.event; + options = mergeAnimationDetails(element, existingAnimation, newAnimation); + + //we return the same runner since only the option values of this animation will + //be fed into the `existingAnimation`. + return existingAnimation.runner; + } + } + } + } else { + // normalization in this case means that it removes redundant CSS classes that + // already exist (addClass) or do not exist (removeClass) on the element + normalizeAnimationDetails(element, newAnimation); + } + + // when the options are merged and cleaned up we may end up not having to do + // an animation at all, therefore we should check this before issuing a post + // digest callback. Structural animations will always run no matter what. + var isValidAnimation = newAnimation.structural; + if (!isValidAnimation) { + // animate (from/to) can be quickly checked first, otherwise we check if any classes are present + isValidAnimation = (newAnimation.event === 'animate' && Object.keys(newAnimation.options.to || {}).length > 0) + || hasAnimationClasses(newAnimation); + } + + if (!isValidAnimation) { + close(); + clearElementAnimationState(element); + return runner; + } + + // the counter keeps track of cancelled animations + var counter = (existingAnimation.counter || 0) + 1; + newAnimation.counter = counter; + + markElementAnimationState(element, PRE_DIGEST_STATE, newAnimation); + + $rootScope.$$postDigest(function() { + var animationDetails = activeAnimationsLookup.get(node); + var animationCancelled = !animationDetails; + animationDetails = animationDetails || {}; + + // if addClass/removeClass is called before something like enter then the + // registered parent element may not be present. The code below will ensure + // that a final value for parent element is obtained + var parentElement = element.parent() || []; + + // animate/structural/class-based animations all have requirements. Otherwise there + // is no point in performing an animation. The parent node must also be set. + var isValidAnimation = parentElement.length > 0 + && (animationDetails.event === 'animate' + || animationDetails.structural + || hasAnimationClasses(animationDetails)); + + // this means that the previous animation was cancelled + // even if the follow-up animation is the same event + if (animationCancelled || animationDetails.counter !== counter || !isValidAnimation) { + // if another animation did not take over then we need + // to make sure that the domOperation and options are + // handled accordingly + if (animationCancelled) { + applyAnimationClasses(element, options); + applyAnimationStyles(element, options); + } + + // if the event changed from something like enter to leave then we do + // it, otherwise if it's the same then the end result will be the same too + if (animationCancelled || (isStructural && animationDetails.event !== event)) { + options.domOperation(); + runner.end(); + } + + // in the event that the element animation was not cancelled or a follow-up animation + // isn't allowed to animate from here then we need to clear the state of the element + // so that any future animations won't read the expired animation data. + if (!isValidAnimation) { + clearElementAnimationState(element); + } + + return; + } + + // this combined multiple class to addClass / removeClass into a setClass event + // so long as a structural event did not take over the animation + event = !animationDetails.structural && hasAnimationClasses(animationDetails, true) + ? 'setClass' + : animationDetails.event; + + markElementAnimationState(element, RUNNING_STATE); + var realRunner = $$animation(element, event, animationDetails.options); + + // this will update the runner's flow-control events based on + // the `realRunner` object. + runner.setHost(realRunner); + notifyProgress(runner, event, 'start', {}); + + realRunner.done(function(status) { + close(!status); + var animationDetails = activeAnimationsLookup.get(node); + if (animationDetails && animationDetails.counter === counter) { + clearElementAnimationState(getDomNode(element)); + } + notifyProgress(runner, event, 'close', {}); + }); + }); + + return runner; + + function notifyProgress(runner, event, phase, data) { + runInNextPostDigestOrNow(function() { + var callbacks = findCallbacks(parent, element, event); + if (callbacks.length) { + // do not optimize this call here to RAF because + // we don't know how heavy the callback code here will + // be and if this code is buffered then this can + // lead to a performance regression. + $$rAF(function() { + forEach(callbacks, function(callback) { + callback(element, phase, data); + }); + cleanupEventListeners(phase, element); + }); + } else { + cleanupEventListeners(phase, element); + } + }); + runner.progress(event, phase, data); + } + + function close(reject) { + clearGeneratedClasses(element, options); + applyAnimationClasses(element, options); + applyAnimationStyles(element, options); + options.domOperation(); + runner.complete(!reject); + } + } + + function closeChildAnimations(element) { + var node = getDomNode(element); + var children = node.querySelectorAll('[' + NG_ANIMATE_ATTR_NAME + ']'); + forEach(children, function(child) { + var state = parseInt(child.getAttribute(NG_ANIMATE_ATTR_NAME), 10); + var animationDetails = activeAnimationsLookup.get(child); + if (animationDetails) { + switch (state) { + case RUNNING_STATE: + animationDetails.runner.end(); + /* falls through */ + case PRE_DIGEST_STATE: + activeAnimationsLookup.remove(child); + break; + } + } + }); + } + + function clearElementAnimationState(element) { + var node = getDomNode(element); + node.removeAttribute(NG_ANIMATE_ATTR_NAME); + activeAnimationsLookup.remove(node); + } + + function isMatchingElement(nodeOrElmA, nodeOrElmB) { + return getDomNode(nodeOrElmA) === getDomNode(nodeOrElmB); + } + + /** + * This fn returns false if any of the following is true: + * a) animations on any parent element are disabled, and animations on the element aren't explicitly allowed + * b) a parent element has an ongoing structural animation, and animateChildren is false + * c) the element is not a child of the body + * d) the element is not a child of the $rootElement + */ + function areAnimationsAllowed(element, parentElement, event) { + var bodyElement = jqLite($document[0].body); + var bodyElementDetected = isMatchingElement(element, bodyElement) || element[0].nodeName === 'HTML'; + var rootElementDetected = isMatchingElement(element, $rootElement); + var parentAnimationDetected = false; + var animateChildren; + var elementDisabled = disabledElementsLookup.get(getDomNode(element)); + + var parentHost = jqLite.data(element[0], NG_ANIMATE_PIN_DATA); + if (parentHost) { + parentElement = parentHost; + } + + parentElement = getDomNode(parentElement); + + while (parentElement) { + if (!rootElementDetected) { + // angular doesn't want to attempt to animate elements outside of the application + // therefore we need to ensure that the rootElement is an ancestor of the current element + rootElementDetected = isMatchingElement(parentElement, $rootElement); + } + + if (parentElement.nodeType !== ELEMENT_NODE) { + // no point in inspecting the #document element + break; + } + + var details = activeAnimationsLookup.get(parentElement) || {}; + // either an enter, leave or move animation will commence + // therefore we can't allow any animations to take place + // but if a parent animation is class-based then that's ok + if (!parentAnimationDetected) { + var parentElementDisabled = disabledElementsLookup.get(parentElement); + + if (parentElementDisabled === true && elementDisabled !== false) { + // disable animations if the user hasn't explicitly enabled animations on the + // current element + elementDisabled = true; + // element is disabled via parent element, no need to check anything else + break; + } else if (parentElementDisabled === false) { + elementDisabled = false; + } + parentAnimationDetected = details.structural; + } + + if (isUndefined(animateChildren) || animateChildren === true) { + var value = jqLite.data(parentElement, NG_ANIMATE_CHILDREN_DATA); + if (isDefined(value)) { + animateChildren = value; + } + } + + // there is no need to continue traversing at this point + if (parentAnimationDetected && animateChildren === false) break; + + if (!bodyElementDetected) { + // we also need to ensure that the element is or will be a part of the body element + // otherwise it is pointless to even issue an animation to be rendered + bodyElementDetected = isMatchingElement(parentElement, bodyElement); + } + + if (bodyElementDetected && rootElementDetected) { + // If both body and root have been found, any other checks are pointless, + // as no animation data should live outside the application + break; + } + + if (!rootElementDetected) { + // If no rootElement is detected, check if the parentElement is pinned to another element + parentHost = jqLite.data(parentElement, NG_ANIMATE_PIN_DATA); + if (parentHost) { + // The pin target element becomes the next parent element + parentElement = getDomNode(parentHost); + continue; + } + } + + parentElement = parentElement.parentNode; + } + + var allowAnimation = (!parentAnimationDetected || animateChildren) && elementDisabled !== true; + return allowAnimation && rootElementDetected && bodyElementDetected; + } + + function markElementAnimationState(element, state, details) { + details = details || {}; + details.state = state; + + var node = getDomNode(element); + node.setAttribute(NG_ANIMATE_ATTR_NAME, state); + + var oldValue = activeAnimationsLookup.get(node); + var newValue = oldValue + ? extend(oldValue, details) + : details; + activeAnimationsLookup.put(node, newValue); + } + }]; +}]; + +/* exported $$AnimationProvider */ + +var $$AnimationProvider = ['$animateProvider', /** @this */ function($animateProvider) { + var NG_ANIMATE_REF_ATTR = 'ng-animate-ref'; + + var drivers = this.drivers = []; + + var RUNNER_STORAGE_KEY = '$$animationRunner'; + + function setRunner(element, runner) { + element.data(RUNNER_STORAGE_KEY, runner); + } + + function removeRunner(element) { + element.removeData(RUNNER_STORAGE_KEY); + } + + function getRunner(element) { + return element.data(RUNNER_STORAGE_KEY); + } + + this.$get = ['$$jqLite', '$rootScope', '$injector', '$$AnimateRunner', '$$HashMap', '$$rAFScheduler', + function($$jqLite, $rootScope, $injector, $$AnimateRunner, $$HashMap, $$rAFScheduler) { + + var animationQueue = []; + var applyAnimationClasses = applyAnimationClassesFactory($$jqLite); + + function sortAnimations(animations) { + var tree = { children: [] }; + var i, lookup = new $$HashMap(); + + // this is done first beforehand so that the hashmap + // is filled with a list of the elements that will be animated + for (i = 0; i < animations.length; i++) { + var animation = animations[i]; + lookup.put(animation.domNode, animations[i] = { + domNode: animation.domNode, + fn: animation.fn, + children: [] + }); + } + + for (i = 0; i < animations.length; i++) { + processNode(animations[i]); + } + + return flatten(tree); + + function processNode(entry) { + if (entry.processed) return entry; + entry.processed = true; + + var elementNode = entry.domNode; + var parentNode = elementNode.parentNode; + lookup.put(elementNode, entry); + + var parentEntry; + while (parentNode) { + parentEntry = lookup.get(parentNode); + if (parentEntry) { + if (!parentEntry.processed) { + parentEntry = processNode(parentEntry); + } + break; + } + parentNode = parentNode.parentNode; + } + + (parentEntry || tree).children.push(entry); + return entry; + } + + function flatten(tree) { + var result = []; + var queue = []; + var i; + + for (i = 0; i < tree.children.length; i++) { + queue.push(tree.children[i]); + } + + var remainingLevelEntries = queue.length; + var nextLevelEntries = 0; + var row = []; + + for (i = 0; i < queue.length; i++) { + var entry = queue[i]; + if (remainingLevelEntries <= 0) { + remainingLevelEntries = nextLevelEntries; + nextLevelEntries = 0; + result.push(row); + row = []; + } + row.push(entry.fn); + entry.children.forEach(function(childEntry) { + nextLevelEntries++; + queue.push(childEntry); + }); + remainingLevelEntries--; + } + + if (row.length) { + result.push(row); + } + + return result; + } + } + + // TODO(matsko): document the signature in a better way + return function(element, event, options) { + options = prepareAnimationOptions(options); + var isStructural = ['enter', 'move', 'leave'].indexOf(event) >= 0; + + // there is no animation at the current moment, however + // these runner methods will get later updated with the + // methods leading into the driver's end/cancel methods + // for now they just stop the animation from starting + var runner = new $$AnimateRunner({ + end: function() { close(); }, + cancel: function() { close(true); } + }); + + if (!drivers.length) { + close(); + return runner; + } + + setRunner(element, runner); + + var classes = mergeClasses(element.attr('class'), mergeClasses(options.addClass, options.removeClass)); + var tempClasses = options.tempClasses; + if (tempClasses) { + classes += ' ' + tempClasses; + options.tempClasses = null; + } + + var prepareClassName; + if (isStructural) { + prepareClassName = 'ng-' + event + PREPARE_CLASS_SUFFIX; + $$jqLite.addClass(element, prepareClassName); + } + + animationQueue.push({ + // this data is used by the postDigest code and passed into + // the driver step function + element: element, + classes: classes, + event: event, + structural: isStructural, + options: options, + beforeStart: beforeStart, + close: close + }); + + element.on('$destroy', handleDestroyedElement); + + // we only want there to be one function called within the post digest + // block. This way we can group animations for all the animations that + // were apart of the same postDigest flush call. + if (animationQueue.length > 1) return runner; + + $rootScope.$$postDigest(function() { + var animations = []; + forEach(animationQueue, function(entry) { + // the element was destroyed early on which removed the runner + // form its storage. This means we can't animate this element + // at all and it already has been closed due to destruction. + if (getRunner(entry.element)) { + animations.push(entry); + } else { + entry.close(); + } + }); + + // now any future animations will be in another postDigest + animationQueue.length = 0; + + var groupedAnimations = groupAnimations(animations); + var toBeSortedAnimations = []; + + forEach(groupedAnimations, function(animationEntry) { + toBeSortedAnimations.push({ + domNode: getDomNode(animationEntry.from ? animationEntry.from.element : animationEntry.element), + fn: function triggerAnimationStart() { + // it's important that we apply the `ng-animate` CSS class and the + // temporary classes before we do any driver invoking since these + // CSS classes may be required for proper CSS detection. + animationEntry.beforeStart(); + + var startAnimationFn, closeFn = animationEntry.close; + + // in the event that the element was removed before the digest runs or + // during the RAF sequencing then we should not trigger the animation. + var targetElement = animationEntry.anchors + ? (animationEntry.from.element || animationEntry.to.element) + : animationEntry.element; + + if (getRunner(targetElement)) { + var operation = invokeFirstDriver(animationEntry); + if (operation) { + startAnimationFn = operation.start; + } + } + + if (!startAnimationFn) { + closeFn(); + } else { + var animationRunner = startAnimationFn(); + animationRunner.done(function(status) { + closeFn(!status); + }); + updateAnimationRunners(animationEntry, animationRunner); + } + } + }); + }); + + // we need to sort each of the animations in order of parent to child + // relationships. This ensures that the child classes are applied at the + // right time. + $$rAFScheduler(sortAnimations(toBeSortedAnimations)); + }); + + return runner; + + // TODO(matsko): change to reference nodes + function getAnchorNodes(node) { + var SELECTOR = '[' + NG_ANIMATE_REF_ATTR + ']'; + var items = node.hasAttribute(NG_ANIMATE_REF_ATTR) + ? [node] + : node.querySelectorAll(SELECTOR); + var anchors = []; + forEach(items, function(node) { + var attr = node.getAttribute(NG_ANIMATE_REF_ATTR); + if (attr && attr.length) { + anchors.push(node); + } + }); + return anchors; + } + + function groupAnimations(animations) { + var preparedAnimations = []; + var refLookup = {}; + forEach(animations, function(animation, index) { + var element = animation.element; + var node = getDomNode(element); + var event = animation.event; + var enterOrMove = ['enter', 'move'].indexOf(event) >= 0; + var anchorNodes = animation.structural ? getAnchorNodes(node) : []; + + if (anchorNodes.length) { + var direction = enterOrMove ? 'to' : 'from'; + + forEach(anchorNodes, function(anchor) { + var key = anchor.getAttribute(NG_ANIMATE_REF_ATTR); + refLookup[key] = refLookup[key] || {}; + refLookup[key][direction] = { + animationID: index, + element: jqLite(anchor) + }; + }); + } else { + preparedAnimations.push(animation); + } + }); + + var usedIndicesLookup = {}; + var anchorGroups = {}; + forEach(refLookup, function(operations, key) { + var from = operations.from; + var to = operations.to; + + if (!from || !to) { + // only one of these is set therefore we can't have an + // anchor animation since all three pieces are required + var index = from ? from.animationID : to.animationID; + var indexKey = index.toString(); + if (!usedIndicesLookup[indexKey]) { + usedIndicesLookup[indexKey] = true; + preparedAnimations.push(animations[index]); + } + return; + } + + var fromAnimation = animations[from.animationID]; + var toAnimation = animations[to.animationID]; + var lookupKey = from.animationID.toString(); + if (!anchorGroups[lookupKey]) { + var group = anchorGroups[lookupKey] = { + structural: true, + beforeStart: function() { + fromAnimation.beforeStart(); + toAnimation.beforeStart(); + }, + close: function() { + fromAnimation.close(); + toAnimation.close(); + }, + classes: cssClassesIntersection(fromAnimation.classes, toAnimation.classes), + from: fromAnimation, + to: toAnimation, + anchors: [] // TODO(matsko): change to reference nodes + }; + + // the anchor animations require that the from and to elements both have at least + // one shared CSS class which effectively marries the two elements together to use + // the same animation driver and to properly sequence the anchor animation. + if (group.classes.length) { + preparedAnimations.push(group); + } else { + preparedAnimations.push(fromAnimation); + preparedAnimations.push(toAnimation); + } + } + + anchorGroups[lookupKey].anchors.push({ + 'out': from.element, 'in': to.element + }); + }); + + return preparedAnimations; + } + + function cssClassesIntersection(a,b) { + a = a.split(' '); + b = b.split(' '); + var matches = []; + + for (var i = 0; i < a.length; i++) { + var aa = a[i]; + if (aa.substring(0,3) === 'ng-') continue; + + for (var j = 0; j < b.length; j++) { + if (aa === b[j]) { + matches.push(aa); + break; + } + } + } + + return matches.join(' '); + } + + function invokeFirstDriver(animationDetails) { + // we loop in reverse order since the more general drivers (like CSS and JS) + // may attempt more elements, but custom drivers are more particular + for (var i = drivers.length - 1; i >= 0; i--) { + var driverName = drivers[i]; + var factory = $injector.get(driverName); + var driver = factory(animationDetails); + if (driver) { + return driver; + } + } + } + + function beforeStart() { + element.addClass(NG_ANIMATE_CLASSNAME); + if (tempClasses) { + $$jqLite.addClass(element, tempClasses); + } + if (prepareClassName) { + $$jqLite.removeClass(element, prepareClassName); + prepareClassName = null; + } + } + + function updateAnimationRunners(animation, newRunner) { + if (animation.from && animation.to) { + update(animation.from.element); + update(animation.to.element); + } else { + update(animation.element); + } + + function update(element) { + var runner = getRunner(element); + if (runner) runner.setHost(newRunner); + } + } + + function handleDestroyedElement() { + var runner = getRunner(element); + if (runner && (event !== 'leave' || !options.$$domOperationFired)) { + runner.end(); + } + } + + function close(rejected) { + element.off('$destroy', handleDestroyedElement); + removeRunner(element); + + applyAnimationClasses(element, options); + applyAnimationStyles(element, options); + options.domOperation(); + + if (tempClasses) { + $$jqLite.removeClass(element, tempClasses); + } + + element.removeClass(NG_ANIMATE_CLASSNAME); + runner.complete(!rejected); + } + }; + }]; +}]; + +/** + * @ngdoc directive + * @name ngAnimateSwap + * @restrict A + * @scope + * + * @description + * + * ngAnimateSwap is a animation-oriented directive that allows for the container to + * be removed and entered in whenever the associated expression changes. A + * common usecase for this directive is a rotating banner or slider component which + * contains one image being present at a time. When the active image changes + * then the old image will perform a `leave` animation and the new element + * will be inserted via an `enter` animation. + * + * @animations + * | Animation | Occurs | + * |----------------------------------|--------------------------------------| + * | {@link ng.$animate#enter enter} | when the new element is inserted to the DOM | + * | {@link ng.$animate#leave leave} | when the old element is removed from the DOM | + * + * @example + * + * + *
      + *
      + * {{ number }} + *
      + *
      + *
      + * + * angular.module('ngAnimateSwapExample', ['ngAnimate']) + * .controller('AppCtrl', ['$scope', '$interval', function($scope, $interval) { + * $scope.number = 0; + * $interval(function() { + * $scope.number++; + * }, 1000); + * + * var colors = ['red','blue','green','yellow','orange']; + * $scope.colorClass = function(number) { + * return colors[number % colors.length]; + * }; + * }]); + * + * + * .container { + * height:250px; + * width:250px; + * position:relative; + * overflow:hidden; + * border:2px solid black; + * } + * .container .cell { + * font-size:150px; + * text-align:center; + * line-height:250px; + * position:absolute; + * top:0; + * left:0; + * right:0; + * border-bottom:2px solid black; + * } + * .swap-animation.ng-enter, .swap-animation.ng-leave { + * transition:0.5s linear all; + * } + * .swap-animation.ng-enter { + * top:-250px; + * } + * .swap-animation.ng-enter-active { + * top:0px; + * } + * .swap-animation.ng-leave { + * top:0px; + * } + * .swap-animation.ng-leave-active { + * top:250px; + * } + * .red { background:red; } + * .green { background:green; } + * .blue { background:blue; } + * .yellow { background:yellow; } + * .orange { background:orange; } + * + *
      + */ +var ngAnimateSwapDirective = ['$animate', '$rootScope', function($animate, $rootScope) { + return { + restrict: 'A', + transclude: 'element', + terminal: true, + priority: 600, // we use 600 here to ensure that the directive is caught before others + link: function(scope, $element, attrs, ctrl, $transclude) { + var previousElement, previousScope; + scope.$watchCollection(attrs.ngAnimateSwap || attrs['for'], function(value) { + if (previousElement) { + $animate.leave(previousElement); + } + if (previousScope) { + previousScope.$destroy(); + previousScope = null; + } + if (value || value === 0) { + previousScope = scope.$new(); + $transclude(previousScope, function(element) { + previousElement = element; + $animate.enter(element, null, $element); + }); + } + }); + } + }; +}]; + +/** + * @ngdoc module + * @name ngAnimate + * @description + * + * The `ngAnimate` module provides support for CSS-based animations (keyframes and transitions) as well as JavaScript-based animations via + * callback hooks. Animations are not enabled by default, however, by including `ngAnimate` the animation hooks are enabled for an Angular app. + * + *
      + * + * # Usage + * Simply put, there are two ways to make use of animations when ngAnimate is used: by using **CSS** and **JavaScript**. The former works purely based + * using CSS (by using matching CSS selectors/styles) and the latter triggers animations that are registered via `module.animation()`. For + * both CSS and JS animations the sole requirement is to have a matching `CSS class` that exists both in the registered animation and within + * the HTML element that the animation will be triggered on. + * + * ## Directive Support + * The following directives are "animation aware": + * + * | Directive | Supported Animations | + * |----------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------| + * | {@link ng.directive:ngRepeat#animations ngRepeat} | enter, leave and move | + * | {@link ngRoute.directive:ngView#animations ngView} | enter and leave | + * | {@link ng.directive:ngInclude#animations ngInclude} | enter and leave | + * | {@link ng.directive:ngSwitch#animations ngSwitch} | enter and leave | + * | {@link ng.directive:ngIf#animations ngIf} | enter and leave | + * | {@link ng.directive:ngClass#animations ngClass} | add and remove (the CSS class(es) present) | + * | {@link ng.directive:ngShow#animations ngShow} & {@link ng.directive:ngHide#animations ngHide} | add and remove (the ng-hide class value) | + * | {@link ng.directive:form#animation-hooks form} & {@link ng.directive:ngModel#animation-hooks ngModel} | add and remove (dirty, pristine, valid, invalid & all other validations) | + * | {@link module:ngMessages#animations ngMessages} | add and remove (ng-active & ng-inactive) | + * | {@link module:ngMessages#animations ngMessage} | enter and leave | + * + * (More information can be found by visiting each the documentation associated with each directive.) + * + * ## CSS-based Animations + * + * CSS-based animations with ngAnimate are unique since they require no JavaScript code at all. By using a CSS class that we reference between our HTML + * and CSS code we can create an animation that will be picked up by Angular when an underlying directive performs an operation. + * + * The example below shows how an `enter` animation can be made possible on an element using `ng-if`: + * + * ```html + *
      + * Fade me in out + *
      + * + * + * ``` + * + * Notice the CSS class **fade**? We can now create the CSS transition code that references this class: + * + * ```css + * /* The starting CSS styles for the enter animation */ + * .fade.ng-enter { + * transition:0.5s linear all; + * opacity:0; + * } + * + * /* The finishing CSS styles for the enter animation */ + * .fade.ng-enter.ng-enter-active { + * opacity:1; + * } + * ``` + * + * The key thing to remember here is that, depending on the animation event (which each of the directives above trigger depending on what's going on) two + * generated CSS classes will be applied to the element; in the example above we have `.ng-enter` and `.ng-enter-active`. For CSS transitions, the transition + * code **must** be defined within the starting CSS class (in this case `.ng-enter`). The destination class is what the transition will animate towards. + * + * If for example we wanted to create animations for `leave` and `move` (ngRepeat triggers move) then we can do so using the same CSS naming conventions: + * + * ```css + * /* now the element will fade out before it is removed from the DOM */ + * .fade.ng-leave { + * transition:0.5s linear all; + * opacity:1; + * } + * .fade.ng-leave.ng-leave-active { + * opacity:0; + * } + * ``` + * + * We can also make use of **CSS Keyframes** by referencing the keyframe animation within the starting CSS class: + * + * ```css + * /* there is no need to define anything inside of the destination + * CSS class since the keyframe will take charge of the animation */ + * .fade.ng-leave { + * animation: my_fade_animation 0.5s linear; + * -webkit-animation: my_fade_animation 0.5s linear; + * } + * + * @keyframes my_fade_animation { + * from { opacity:1; } + * to { opacity:0; } + * } + * + * @-webkit-keyframes my_fade_animation { + * from { opacity:1; } + * to { opacity:0; } + * } + * ``` + * + * Feel free also mix transitions and keyframes together as well as any other CSS classes on the same element. + * + * ### CSS Class-based Animations + * + * Class-based animations (animations that are triggered via `ngClass`, `ngShow`, `ngHide` and some other directives) have a slightly different + * naming convention. Class-based animations are basic enough that a standard transition or keyframe can be referenced on the class being added + * and removed. + * + * For example if we wanted to do a CSS animation for `ngHide` then we place an animation on the `.ng-hide` CSS class: + * + * ```html + *
      + * Show and hide me + *
      + * + * + * + * ``` + * + * All that is going on here with ngShow/ngHide behind the scenes is the `.ng-hide` class is added/removed (when the hidden state is valid). Since + * ngShow and ngHide are animation aware then we can match up a transition and ngAnimate handles the rest. + * + * In addition the addition and removal of the CSS class, ngAnimate also provides two helper methods that we can use to further decorate the animation + * with CSS styles. + * + * ```html + *
      + * Highlight this box + *
      + * + * + * + * ``` + * + * We can also make use of CSS keyframes by placing them within the CSS classes. + * + * + * ### CSS Staggering Animations + * A Staggering animation is a collection of animations that are issued with a slight delay in between each successive operation resulting in a + * curtain-like effect. The ngAnimate module (versions >=1.2) supports staggering animations and the stagger effect can be + * performed by creating a **ng-EVENT-stagger** CSS class and attaching that class to the base CSS class used for + * the animation. The style property expected within the stagger class can either be a **transition-delay** or an + * **animation-delay** property (or both if your animation contains both transitions and keyframe animations). + * + * ```css + * .my-animation.ng-enter { + * /* standard transition code */ + * transition: 1s linear all; + * opacity:0; + * } + * .my-animation.ng-enter-stagger { + * /* this will have a 100ms delay between each successive leave animation */ + * transition-delay: 0.1s; + * + * /* As of 1.4.4, this must always be set: it signals ngAnimate + * to not accidentally inherit a delay property from another CSS class */ + * transition-duration: 0s; + * } + * .my-animation.ng-enter.ng-enter-active { + * /* standard transition styles */ + * opacity:1; + * } + * ``` + * + * Staggering animations work by default in ngRepeat (so long as the CSS class is defined). Outside of ngRepeat, to use staggering animations + * on your own, they can be triggered by firing multiple calls to the same event on $animate. However, the restrictions surrounding this + * are that each of the elements must have the same CSS className value as well as the same parent element. A stagger operation + * will also be reset if one or more animation frames have passed since the multiple calls to `$animate` were fired. + * + * The following code will issue the **ng-leave-stagger** event on the element provided: + * + * ```js + * var kids = parent.children(); + * + * $animate.leave(kids[0]); //stagger index=0 + * $animate.leave(kids[1]); //stagger index=1 + * $animate.leave(kids[2]); //stagger index=2 + * $animate.leave(kids[3]); //stagger index=3 + * $animate.leave(kids[4]); //stagger index=4 + * + * window.requestAnimationFrame(function() { + * //stagger has reset itself + * $animate.leave(kids[5]); //stagger index=0 + * $animate.leave(kids[6]); //stagger index=1 + * + * $scope.$digest(); + * }); + * ``` + * + * Stagger animations are currently only supported within CSS-defined animations. + * + * ### The `ng-animate` CSS class + * + * When ngAnimate is animating an element it will apply the `ng-animate` CSS class to the element for the duration of the animation. + * This is a temporary CSS class and it will be removed once the animation is over (for both JavaScript and CSS-based animations). + * + * Therefore, animations can be applied to an element using this temporary class directly via CSS. + * + * ```css + * .zipper.ng-animate { + * transition:0.5s linear all; + * } + * .zipper.ng-enter { + * opacity:0; + * } + * .zipper.ng-enter.ng-enter-active { + * opacity:1; + * } + * .zipper.ng-leave { + * opacity:1; + * } + * .zipper.ng-leave.ng-leave-active { + * opacity:0; + * } + * ``` + * + * (Note that the `ng-animate` CSS class is reserved and it cannot be applied on an element directly since ngAnimate will always remove + * the CSS class once an animation has completed.) + * + * + * ### The `ng-[event]-prepare` class + * + * This is a special class that can be used to prevent unwanted flickering / flash of content before + * the actual animation starts. The class is added as soon as an animation is initialized, but removed + * before the actual animation starts (after waiting for a $digest). + * It is also only added for *structural* animations (`enter`, `move`, and `leave`). + * + * In practice, flickering can appear when nesting elements with structural animations such as `ngIf` + * into elements that have class-based animations such as `ngClass`. + * + * ```html + *
      + *
      + *
      + *
      + *
      + * ``` + * + * It is possible that during the `enter` animation, the `.message` div will be briefly visible before it starts animating. + * In that case, you can add styles to the CSS that make sure the element stays hidden before the animation starts: + * + * ```css + * .message.ng-enter-prepare { + * opacity: 0; + * } + * + * ``` + * + * ## JavaScript-based Animations + * + * ngAnimate also allows for animations to be consumed by JavaScript code. The approach is similar to CSS-based animations (where there is a shared + * CSS class that is referenced in our HTML code) but in addition we need to register the JavaScript animation on the module. By making use of the + * `module.animation()` module function we can register the animation. + * + * Let's see an example of a enter/leave animation using `ngRepeat`: + * + * ```html + *
      + * {{ item }} + *
      + * ``` + * + * See the **slide** CSS class? Let's use that class to define an animation that we'll structure in our module code by using `module.animation`: + * + * ```js + * myModule.animation('.slide', [function() { + * return { + * // make note that other events (like addClass/removeClass) + * // have different function input parameters + * enter: function(element, doneFn) { + * jQuery(element).fadeIn(1000, doneFn); + * + * // remember to call doneFn so that angular + * // knows that the animation has concluded + * }, + * + * move: function(element, doneFn) { + * jQuery(element).fadeIn(1000, doneFn); + * }, + * + * leave: function(element, doneFn) { + * jQuery(element).fadeOut(1000, doneFn); + * } + * } + * }]); + * ``` + * + * The nice thing about JS-based animations is that we can inject other services and make use of advanced animation libraries such as + * greensock.js and velocity.js. + * + * If our animation code class-based (meaning that something like `ngClass`, `ngHide` and `ngShow` triggers it) then we can still define + * our animations inside of the same registered animation, however, the function input arguments are a bit different: + * + * ```html + *
      + * this box is moody + *
      + * + * + * + * ``` + * + * ```js + * myModule.animation('.colorful', [function() { + * return { + * addClass: function(element, className, doneFn) { + * // do some cool animation and call the doneFn + * }, + * removeClass: function(element, className, doneFn) { + * // do some cool animation and call the doneFn + * }, + * setClass: function(element, addedClass, removedClass, doneFn) { + * // do some cool animation and call the doneFn + * } + * } + * }]); + * ``` + * + * ## CSS + JS Animations Together + * + * AngularJS 1.4 and higher has taken steps to make the amalgamation of CSS and JS animations more flexible. However, unlike earlier versions of Angular, + * defining CSS and JS animations to work off of the same CSS class will not work anymore. Therefore the example below will only result in **JS animations taking + * charge of the animation**: + * + * ```html + *
      + * Slide in and out + *
      + * ``` + * + * ```js + * myModule.animation('.slide', [function() { + * return { + * enter: function(element, doneFn) { + * jQuery(element).slideIn(1000, doneFn); + * } + * } + * }]); + * ``` + * + * ```css + * .slide.ng-enter { + * transition:0.5s linear all; + * transform:translateY(-100px); + * } + * .slide.ng-enter.ng-enter-active { + * transform:translateY(0); + * } + * ``` + * + * Does this mean that CSS and JS animations cannot be used together? Do JS-based animations always have higher priority? We can make up for the + * lack of CSS animations by using the `$animateCss` service to trigger our own tweaked-out, CSS-based animations directly from + * our own JS-based animation code: + * + * ```js + * myModule.animation('.slide', ['$animateCss', function($animateCss) { + * return { + * enter: function(element) { +* // this will trigger `.slide.ng-enter` and `.slide.ng-enter-active`. + * return $animateCss(element, { + * event: 'enter', + * structural: true + * }); + * } + * } + * }]); + * ``` + * + * The nice thing here is that we can save bandwidth by sticking to our CSS-based animation code and we don't need to rely on a 3rd-party animation framework. + * + * The `$animateCss` service is very powerful since we can feed in all kinds of extra properties that will be evaluated and fed into a CSS transition or + * keyframe animation. For example if we wanted to animate the height of an element while adding and removing classes then we can do so by providing that + * data into `$animateCss` directly: + * + * ```js + * myModule.animation('.slide', ['$animateCss', function($animateCss) { + * return { + * enter: function(element) { + * return $animateCss(element, { + * event: 'enter', + * structural: true, + * addClass: 'maroon-setting', + * from: { height:0 }, + * to: { height: 200 } + * }); + * } + * } + * }]); + * ``` + * + * Now we can fill in the rest via our transition CSS code: + * + * ```css + * /* the transition tells ngAnimate to make the animation happen */ + * .slide.ng-enter { transition:0.5s linear all; } + * + * /* this extra CSS class will be absorbed into the transition + * since the $animateCss code is adding the class */ + * .maroon-setting { background:red; } + * ``` + * + * And `$animateCss` will figure out the rest. Just make sure to have the `done()` callback fire the `doneFn` function to signal when the animation is over. + * + * To learn more about what's possible be sure to visit the {@link ngAnimate.$animateCss $animateCss service}. + * + * ## Animation Anchoring (via `ng-animate-ref`) + * + * ngAnimate in AngularJS 1.4 comes packed with the ability to cross-animate elements between + * structural areas of an application (like views) by pairing up elements using an attribute + * called `ng-animate-ref`. + * + * Let's say for example we have two views that are managed by `ng-view` and we want to show + * that there is a relationship between two components situated in within these views. By using the + * `ng-animate-ref` attribute we can identify that the two components are paired together and we + * can then attach an animation, which is triggered when the view changes. + * + * Say for example we have the following template code: + * + * ```html + * + *
      + *
      + * + * + *
      + * + * + * + * + * + * ``` + * + * Now, when the view changes (once the link is clicked), ngAnimate will examine the + * HTML contents to see if there is a match reference between any components in the view + * that is leaving and the view that is entering. It will scan both the view which is being + * removed (leave) and inserted (enter) to see if there are any paired DOM elements that + * contain a matching ref value. + * + * The two images match since they share the same ref value. ngAnimate will now create a + * transport element (which is a clone of the first image element) and it will then attempt + * to animate to the position of the second image element in the next view. For the animation to + * work a special CSS class called `ng-anchor` will be added to the transported element. + * + * We can now attach a transition onto the `.banner.ng-anchor` CSS class and then + * ngAnimate will handle the entire transition for us as well as the addition and removal of + * any changes of CSS classes between the elements: + * + * ```css + * .banner.ng-anchor { + * /* this animation will last for 1 second since there are + * two phases to the animation (an `in` and an `out` phase) */ + * transition:0.5s linear all; + * } + * ``` + * + * We also **must** include animations for the views that are being entered and removed + * (otherwise anchoring wouldn't be possible since the new view would be inserted right away). + * + * ```css + * .view-animation.ng-enter, .view-animation.ng-leave { + * transition:0.5s linear all; + * position:fixed; + * left:0; + * top:0; + * width:100%; + * } + * .view-animation.ng-enter { + * transform:translateX(100%); + * } + * .view-animation.ng-leave, + * .view-animation.ng-enter.ng-enter-active { + * transform:translateX(0%); + * } + * .view-animation.ng-leave.ng-leave-active { + * transform:translateX(-100%); + * } + * ``` + * + * Now we can jump back to the anchor animation. When the animation happens, there are two stages that occur: + * an `out` and an `in` stage. The `out` stage happens first and that is when the element is animated away + * from its origin. Once that animation is over then the `in` stage occurs which animates the + * element to its destination. The reason why there are two animations is to give enough time + * for the enter animation on the new element to be ready. + * + * The example above sets up a transition for both the in and out phases, but we can also target the out or + * in phases directly via `ng-anchor-out` and `ng-anchor-in`. + * + * ```css + * .banner.ng-anchor-out { + * transition: 0.5s linear all; + * + * /* the scale will be applied during the out animation, + * but will be animated away when the in animation runs */ + * transform: scale(1.2); + * } + * + * .banner.ng-anchor-in { + * transition: 1s linear all; + * } + * ``` + * + * + * + * + * ### Anchoring Demo + * + + + Home +
      +
      +
      +
      +
      + + angular.module('anchoringExample', ['ngAnimate', 'ngRoute']) + .config(['$routeProvider', function($routeProvider) { + $routeProvider.when('/', { + templateUrl: 'home.html', + controller: 'HomeController as home' + }); + $routeProvider.when('/profile/:id', { + templateUrl: 'profile.html', + controller: 'ProfileController as profile' + }); + }]) + .run(['$rootScope', function($rootScope) { + $rootScope.records = [ + { id: 1, title: 'Miss Beulah Roob' }, + { id: 2, title: 'Trent Morissette' }, + { id: 3, title: 'Miss Ava Pouros' }, + { id: 4, title: 'Rod Pouros' }, + { id: 5, title: 'Abdul Rice' }, + { id: 6, title: 'Laurie Rutherford Sr.' }, + { id: 7, title: 'Nakia McLaughlin' }, + { id: 8, title: 'Jordon Blanda DVM' }, + { id: 9, title: 'Rhoda Hand' }, + { id: 10, title: 'Alexandrea Sauer' } + ]; + }]) + .controller('HomeController', [function() { + //empty + }]) + .controller('ProfileController', ['$rootScope', '$routeParams', + function ProfileController($rootScope, $routeParams) { + var index = parseInt($routeParams.id, 10); + var record = $rootScope.records[index - 1]; + + this.title = record.title; + this.id = record.id; + }]); + + +

      Welcome to the home page

      +

      Please click on an element

      + + {{ record.title }} + +
      + +
      + {{ profile.title }} +
      +
      + + .record { + display:block; + font-size:20px; + } + .profile { + background:black; + color:white; + font-size:100px; + } + .view-container { + position:relative; + } + .view-container > .view.ng-animate { + position:absolute; + top:0; + left:0; + width:100%; + min-height:500px; + } + .view.ng-enter, .view.ng-leave, + .record.ng-anchor { + transition:0.5s linear all; + } + .view.ng-enter { + transform:translateX(100%); + } + .view.ng-enter.ng-enter-active, .view.ng-leave { + transform:translateX(0%); + } + .view.ng-leave.ng-leave-active { + transform:translateX(-100%); + } + .record.ng-anchor-out { + background:red; + } + +
      + * + * ### How is the element transported? + * + * When an anchor animation occurs, ngAnimate will clone the starting element and position it exactly where the starting + * element is located on screen via absolute positioning. The cloned element will be placed inside of the root element + * of the application (where ng-app was defined) and all of the CSS classes of the starting element will be applied. The + * element will then animate into the `out` and `in` animations and will eventually reach the coordinates and match + * the dimensions of the destination element. During the entire animation a CSS class of `.ng-animate-shim` will be applied + * to both the starting and destination elements in order to hide them from being visible (the CSS styling for the class + * is: `visibility:hidden`). Once the anchor reaches its destination then it will be removed and the destination element + * will become visible since the shim class will be removed. + * + * ### How is the morphing handled? + * + * CSS Anchoring relies on transitions and keyframes and the internal code is intelligent enough to figure out + * what CSS classes differ between the starting element and the destination element. These different CSS classes + * will be added/removed on the anchor element and a transition will be applied (the transition that is provided + * in the anchor class). Long story short, ngAnimate will figure out what classes to add and remove which will + * make the transition of the element as smooth and automatic as possible. Be sure to use simple CSS classes that + * do not rely on DOM nesting structure so that the anchor element appears the same as the starting element (since + * the cloned element is placed inside of root element which is likely close to the body element). + * + * Note that if the root element is on the `` element then the cloned node will be placed inside of body. + * + * + * ## Using $animate in your directive code + * + * So far we've explored how to feed in animations into an Angular application, but how do we trigger animations within our own directives in our application? + * By injecting the `$animate` service into our directive code, we can trigger structural and class-based hooks which can then be consumed by animations. Let's + * imagine we have a greeting box that shows and hides itself when the data changes + * + * ```html + * Hi there + * ``` + * + * ```js + * ngModule.directive('greetingBox', ['$animate', function($animate) { + * return function(scope, element, attrs) { + * attrs.$observe('active', function(value) { + * value ? $animate.addClass(element, 'on') : $animate.removeClass(element, 'on'); + * }); + * }); + * }]); + * ``` + * + * Now the `on` CSS class is added and removed on the greeting box component. Now if we add a CSS class on top of the greeting box element + * in our HTML code then we can trigger a CSS or JS animation to happen. + * + * ```css + * /* normally we would create a CSS class to reference on the element */ + * greeting-box.on { transition:0.5s linear all; background:green; color:white; } + * ``` + * + * The `$animate` service contains a variety of other methods like `enter`, `leave`, `animate` and `setClass`. To learn more about what's + * possible be sure to visit the {@link ng.$animate $animate service API page}. + * + * + * ## Callbacks and Promises + * + * When `$animate` is called it returns a promise that can be used to capture when the animation has ended. Therefore if we were to trigger + * an animation (within our directive code) then we can continue performing directive and scope related activities after the animation has + * ended by chaining onto the returned promise that animation method returns. + * + * ```js + * // somewhere within the depths of the directive + * $animate.enter(element, parent).then(function() { + * //the animation has completed + * }); + * ``` + * + * (Note that earlier versions of Angular prior to v1.4 required the promise code to be wrapped using `$scope.$apply(...)`. This is not the case + * anymore.) + * + * In addition to the animation promise, we can also make use of animation-related callbacks within our directives and controller code by registering + * an event listener using the `$animate` service. Let's say for example that an animation was triggered on our view + * routing controller to hook into that: + * + * ```js + * ngModule.controller('HomePageController', ['$animate', function($animate) { + * $animate.on('enter', ngViewElement, function(element) { + * // the animation for this route has completed + * }]); + * }]) + * ``` + * + * (Note that you will need to trigger a digest within the callback to get angular to notice any scope-related changes.) + */ + +var copy; +var extend; +var forEach; +var isArray; +var isDefined; +var isElement; +var isFunction; +var isObject; +var isString; +var isUndefined; +var jqLite; +var noop; + +/** + * @ngdoc service + * @name $animate + * @kind object + * + * @description + * The ngAnimate `$animate` service documentation is the same for the core `$animate` service. + * + * Click here {@link ng.$animate to learn more about animations with `$animate`}. + */ +angular.module('ngAnimate', [], function initAngularHelpers() { + // Access helpers from angular core. + // Do it inside a `config` block to ensure `window.angular` is available. + noop = angular.noop; + copy = angular.copy; + extend = angular.extend; + jqLite = angular.element; + forEach = angular.forEach; + isArray = angular.isArray; + isString = angular.isString; + isObject = angular.isObject; + isUndefined = angular.isUndefined; + isDefined = angular.isDefined; + isFunction = angular.isFunction; + isElement = angular.isElement; +}) + .directive('ngAnimateSwap', ngAnimateSwapDirective) + + .directive('ngAnimateChildren', $$AnimateChildrenDirective) + .factory('$$rAFScheduler', $$rAFSchedulerFactory) + + .provider('$$animateQueue', $$AnimateQueueProvider) + .provider('$$animation', $$AnimationProvider) + + .provider('$animateCss', $AnimateCssProvider) + .provider('$$animateCssDriver', $$AnimateCssDriverProvider) + + .provider('$$animateJs', $$AnimateJsProvider) + .provider('$$animateJsDriver', $$AnimateJsDriverProvider); + + +})(window, window.angular); diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/grunt-scripts/angular-bootstrap-prettify.js b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/grunt-scripts/angular-bootstrap-prettify.js new file mode 100644 index 00000000..850c04a2 --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/grunt-scripts/angular-bootstrap-prettify.js @@ -0,0 +1,323 @@ +'use strict'; + +var directive = {}; +var service = { value: {} }; + +var DEPENDENCIES = { + 'angular.js': 'http://code.angularjs.org/' + angular.version.full + '/angular.min.js', + 'angular-resource.js': 'http://code.angularjs.org/' + angular.version.full + '/angular-resource.min.js', + 'angular-route.js': 'http://code.angularjs.org/' + angular.version.full + '/angular-route.min.js', + 'angular-animate.js': 'http://code.angularjs.org/' + angular.version.full + '/angular-animate.min.js', + 'angular-sanitize.js': 'http://code.angularjs.org/' + angular.version.full + '/angular-sanitize.min.js', + 'angular-cookies.js': 'http://code.angularjs.org/' + angular.version.full + '/angular-cookies.min.js' +}; + + +function escape(text) { + return text. + replace(/\&/g, '&'). + replace(/\/g, '>'). + replace(/"/g, '"'); +} + +/** + * http://stackoverflow.com/questions/451486/pre-tag-loses-line-breaks-when-setting-innerhtml-in-ie + * http://stackoverflow.com/questions/195363/inserting-a-newline-into-a-pre-tag-ie-javascript + */ +function setHtmlIe8SafeWay(element, html) { + var newElement = angular.element('
      ' + html + '
      '); + + element.empty(); + element.append(newElement.contents()); + return element; +} + + +directive.jsFiddle = function(getEmbeddedTemplate, escape, script) { + return { + terminal: true, + link: function(scope, element, attr) { + var name = '', + stylesheet = '\n', + fields = { + html: '', + css: '', + js: '' + }; + + angular.forEach(attr.jsFiddle.split(' '), function(file, index) { + var fileType = file.split('.')[1]; + + if (fileType == 'html') { + if (index == 0) { + fields[fileType] += + '
      \n' + + getEmbeddedTemplate(file, 2); + } else { + fields[fileType] += '\n\n\n \n' + + ' \n'; + } + } else { + fields[fileType] += getEmbeddedTemplate(file) + '\n'; + } + }); + + fields.html += '
      \n'; + + setHtmlIe8SafeWay(element, + '
      ' + + hiddenField('title', 'AngularJS Example: ' + name) + + hiddenField('css', ' \n' + + stylesheet + + script.angular + + (attr.resource ? script.resource : '') + + ' + +
      + Max limit: 20, warn when 5 or less remaining, disable button after max limit +
      +
      + + +
      + + +
      + + + + + + +
      +
      +
      + Max limit: 10, warn when 2 or less remaining, block input after max limit +
      +
      +
      +
      + + +
      + + + + + + +
      +
      +
      +
      + Max limit: 10, warn when 5 or less remaining, block input after max limit +
      +
      + + Remaining +
      +
      +
      + + + + angular.module( 'patternfly.example', ['patternfly.form']); + + angular.module( 'patternfly.example' ).controller( 'DemoCtrl', function( $scope ) { + $scope.messageArea1text = "Initial Text"; + $scope.messageArea2text = ""; + $scope.messageInput3text = ""; + + $scope.charsMaxLimitExceeded = false; + + // 'tfId' will equal the id of the text area/input field which + // triggered the event + $scope.$on('overCharsMaxLimit', function (event, tfId) { + if(!$scope.charsMaxLimitExceeded){ + $scope.charsMaxLimitExceeded = true; + } + }); + + // 'tfId' will equal the id of the text area/input field which + // triggered the event + $scope.$on('underCharsMaxLimit', function (event, tfId) { + if($scope.charsMaxLimitExceeded){ + $scope.charsMaxLimitExceeded = false; + } + }); + + }); + + + +*/ + +angular.module('patternfly.form').directive('pfRemainingCharsCount', ["$timeout", function ($timeout) { + 'use strict'; + return { + restrict: 'A', + require: 'ngModel', + scope: { + ngModel: "=" + }, + link: function ($scope, $element, $attributes) { + var charsMaxLimit = $attributes.charsMaxLimit; + var charsWarnRemaining = $attributes.charsWarnRemaining; + var countRemainingFld = angular.element(document.getElementById($attributes.countFld)); + var blockInputAtMaxLimit = ($attributes.blockInputAtMaxLimit === 'true'); + var checkCharactersRemaining = function () { + var charsLength = $scope.ngModel.length; + var remainingChars = charsMaxLimit - charsLength; + + // trim if blockInputAtMaxLimit and over limit + if (blockInputAtMaxLimit && charsLength > charsMaxLimit) { + $scope.ngModel = $scope.ngModel.substring(0, charsMaxLimit); + charsLength = $scope.ngModel.length; + remainingChars = charsMaxLimit - charsLength; + } + + // creating scope vars for unit testing + $scope.remainingChars = remainingChars; + $scope.remainingCharsWarning = (remainingChars <= charsWarnRemaining ? true : false); + + countRemainingFld.text(remainingChars); + countRemainingFld.toggleClass('chars-warn-remaining-pf', remainingChars <= charsWarnRemaining); + + if (remainingChars < 0) { + $scope.$emit('overCharsMaxLimit', $attributes.id); + } else { + $scope.$emit('underCharsMaxLimit', $attributes.id); + } + }; + + $scope.$watch('ngModel', function () { + checkCharactersRemaining(); + }); + + $element.bind('keypress', function (event) { + // Once the charsMaxLimit has been met or exceeded, prevent all keypresses from working + if (blockInputAtMaxLimit && $element.val().length >= charsMaxLimit) { + // Except backspace + if (event.keyCode !== 8) { + event.preventDefault(); + } + } + }); + } + }; +}]); +;/** + * @ngdoc directive + * @name patternfly.modals.directive:pfAboutModal + * + * @description + * Directive for rendering modal windows. + * + * @param {string=} additionalInfo Text explaining the version or copyright + * @param {string=} copyright Product copyright information + * @param {string=} imgAlt The alt text for the corner grahpic + * @param {string=} imgSrc The source for the corner grahpic + * @param {boolean=} isOpen Flag indicating that the modal should be opened + * @param {function=} onClose Function to call when modal is closed + * @param {object=} productInfo data for the modal:
      + *
        + *
      • .product - the product label + *
      • .version - the product version + *
      + * @param {string=} title The product title for the modal + * + * @example + + +
      + +
      +
      +
      + + angular.module('patternfly.modals').controller('ModalCtrl', function ($scope) { + $scope.additionalInfo = "Donec consequat dignissim neque, sed suscipit quam egestas in. Fusce bibendum " + + "laoreet lectus commodo interdum. Vestibulum odio ipsum, tristique et ante vel, iaculis placerat nulla. " + + "Suspendisse iaculis urna feugiat lorem semper, ut iaculis risus tempus."; + $scope.copyright = "Trademark and Copyright Information"; + $scope.imgAlt = "Patternfly Symbol"; + $scope.imgSrc = "img/logo-alt.svg"; + $scope.title = "Product Title"; + $scope.productInfo = [ + { name: 'Version', value: '1.0.0.0.20160819142038_51be77c' }, + { name: 'Server Name', value: 'Localhost' }, + { name: 'User Name', value: 'admin' }, + { name: 'User Role', value: 'Administrator' }]; + $scope.open = function () { + $scope.isOpen = true; + } + $scope.onClose = function() { + $scope.isOpen = false; + } + }); + +
      + */ +angular.module('patternfly.modals') + +.directive("pfAboutModalTransclude", ["$parse", function ($parse) { + 'use strict'; + return { + link: function (scope, element, attrs) { + element.append($parse(attrs.pfAboutModalTransclude)(scope)); + } + }; +}]) + +.directive('pfAboutModal', function () { + 'use strict'; + return { + restrict: 'A', + scope: { + additionalInfo: '=?', + copyright: '=?', + close: "&onClose", + imgAlt: '=?', + imgSrc: '=?', + isOpen: '=?', + productInfo: '=', + title: '=?' + }, + templateUrl: 'modals/about-modal.html', + transclude: true, + controller: ['$scope', '$uibModal', '$transclude', function ($scope, $uibModal, $transclude) { + if ($scope.isOpen === undefined) { + $scope.isOpen = false; + } + + // The ui-bootstrap modal only supports either template or templateUrl as a way to specify the content. + // When the content is retrieved, it is compiled and linked against the provided scope by the $uibModal service. + // Unfortunately, there is no way to provide transclusion there. + // + // The solution below embeds a placeholder directive (i.e., pfAboutModalTransclude) to append the transcluded DOM. + // The transcluded DOM is from a different location than the modal, so it needs to be handed over to the + // placeholder directive. Thus, we're passing the actual DOM, not the parsed HTML. + $scope.openModal = function () { + $uibModal.open({ + controller: ['$scope', '$uibModalInstance', 'content', function ($scope, $uibModalInstance, content) { + $scope.template = content; + $scope.close = function () { + $uibModalInstance.close(); + }; + $scope.$watch( + function () { + return $scope.isOpen; + }, + function (newValue) { + if (newValue === false) { + $uibModalInstance.close(); + } + } + ); + }], + resolve: { + content: function () { + var transcludedContent; + $transclude(function (clone) { + transcludedContent = clone; + }); + return transcludedContent; + } + }, + scope: $scope, + templateUrl: "about-modal-template.html" + }) + .result.then( + function () { + $scope.close(); // closed + }, + function () { + $scope.close(); // dismissed + } + ); + }; + }], + link: function (scope, element, attrs) { + // watching isOpen attribute to dispay modal when needed + var isOpenListener = scope.$watch('isOpen', function (newVal, oldVal) { + if (newVal === true) { + scope.openModal(); + } + }); + scope.$on('$destroy', isOpenListener); + } + }; +}); +;/** + * @ngdoc directive + * @name patternfly.navigation.directive:pfVerticalNavigation - Basic + * + * @description + * Directive for vertical navigation. This sets up the nav bar header with the collapse button (hamburger) and the + * application brand image (or text) as well as the vertical navigation bar containing the navigation items. This + * directive supports primary, secondary, and tertiary navigation with options to allow pinning of the secondary and + * tertiary navigation menus as well as the option for persistent secondary menus. + *

      + * The remaining parts of the navbar header can be transcluded. + *

      + * Tha navigation items are marked active based on the current location and the href value for the item. If not using + * href's on the items to navigate, set update-active-items-on-click to "true". + *

      + * This directive works in conjunction with the main content container if the 'container-pf-nav-pf-vertical' class + * selector is added to the main content container. + * + * @param {string} brandSrc src for brand image + * @param {string} brandAlt Text for product name when brand image is not available + * @param {boolean} showBadges Flag if badges are used on navigation items, default: false + * @param {boolean} persistentSecondary Flag to use persistent secondary menus, default: false + * @param {boolean} hiddenIcons Flag to not show icons on the primary menu, default: false + * @param {array} items List of navigation items + *
        + *
      • .title - (string) Name of item to be displayed on the menu + *
      • .iconClass - (string) Classes for icon to be shown on the menu (ex. "fa fa-dashboard") + *
      • .href - (string) href link to navigate to on click + *
      • .children - (array) Submenu items (same structure as top level items) + *
      • .badges - (array) Badges to display for the item, badges with a zero count are not displayed. + *
          + *
        • .count - (number) Count to display in the badge + *
        • .iconClass - (string) Class to use for showing an icon before the count + *
        • .tooltip - (string) Tooltip to display for the badge + *
        • .badgeClass: - (string) Additional class(es) to add to the badge container + *
        + *
      + * @param {function} navigateCallback function(item) Callback method invoked on a navigation item click (one with no submenus) + * @param {function} itemClickCallback function(item) Callback method invoked on an item click + * @param {boolean} updateActiveItemsOnClick Flag if active items should be marked on click rather than on navigation change, default: false + * @param {boolean} ignoreMobile Flag if mobile state should be ignored (use only if absolutely necessary) default: false + * + * @example + + +
      + + + +
      + +
      + + angular.module('patternfly.navigation').controller('vertNavController', ['$scope', + function ($scope) { + $scope.navigationItems = [ + { + title: "Dashboard", + iconClass: "fa fa-dashboard", + href: "#/dashboard" + }, + { + title: "Dolor", + iconClass : "fa fa-shield", + href: "#/dolor", + badges: [ + { + count: 1283, + tooltip: "Total number of items" + } + ] + }, + { + title: "Ipsum", + iconClass: "fa fa-space-shuttle", + children: [ + { + title: "Intellegam", + children: [ + { + title: "Recteque", + href: "#/ipsum/intellegam/recteque", + badges: [ + { + count: 6, + tooltip: "Total number of error items", + badgeClass: 'example-error-background' + } + ] + }, + { + title: "Suavitate", + href: "#/ipsum/intellegam/suavitate", + badges: [ + { + count: 2, + tooltip: "Total number of items" + } + ] + }, + { + title: "Vituperatoribus", + href: "#/ipsum/intellegam/vituperatoribus", + badges: [ + { + count: 18, + tooltip: "Total number of warning items", + badgeClass: 'example-warning-background' + } + ] + } + ] + }, + { + title: "Copiosae", + children: [ + { + title: "Exerci", + href: "#/ipsum/copiosae/exerci", + badges: [ + { + count: 2, + tooltip: "Total number of error items", + iconClass: 'pficon pficon-error-circle-o' + }, + { + count: 6, + tooltip: "Total number warning error items", + iconClass: 'pficon pficon-warning-triangle-o' + } + ] + }, + { + title: "Quaeque", + href: "#/ipsum/copiosae/quaeque", + badges: [ + { + count: 0, + tooltip: "Total number of error items", + iconClass: 'pficon pficon-error-circle-o' + }, + { + count: 4, + tooltip: "Total number warning error items", + iconClass: 'pficon pficon-warning-triangle-o' + } + ] + }, + { + title: "Utroque", + href: "#/ipsum/copiosae/utroque", + badges: [ + { + count: 1, + tooltip: "Total number of error items", + iconClass: 'pficon pficon-error-circle-o' + }, + { + count: 2, + tooltip: "Total number warning error items", + iconClass: 'pficon pficon-warning-triangle-o' + } + ] + } + ] + }, + { + title: "Patrioque", + children: [ + { + title: "Novum", + href: "#/ipsum/patrioque/novum" + }, + { + title: "Pericula", + href: "#/ipsum/patrioque/pericula" + }, + { + title: "Gubergren", + href: "#/ipsum/patrioque/gubergren" + } + ] + }, + { + title: "Accumsan", + href: "#/ipsum/Accumsan", + badges: [ + { + count: 2, + tooltip: "Total number of error items", + iconClass: 'pficon pficon-error-circle-o' + }, + { + count: 6, + tooltip: "Total number warning error items", + iconClass: 'pficon pficon-warning-triangle-o' + } + ] + } + ] + }, + { + title: "Amet", + iconClass: "fa fa-paper-plane", + children: [ + { + title: "Detracto", + children: [ + { + title: "Delicatissimi", + href: "#/amet/detracto/delicatissimi" + }, + { + title: "Aliquam", + href: "#/amet/detracto/aliquam" + }, + { + title: "Principes", + href: "#/amet/detracto/principes" + } + ] + }, + { + title: "Mediocrem", + children: [ + { + title: "Convenire", + href: "#/amet/mediocrem/convenire" + }, + { + title: "Nonumy", + href: "#/amet/mediocrem/nonumy" + }, + { + title: "Deserunt", + href: "#/amet/mediocrem/deserunt" + } + ] + }, + { + title: "Corrumpit", + children: [ + { + title: "Aeque", + href: "#/amet/corrumpit/aeque" + }, + { + title: "Delenit", + href: "#/amet/corrumpit/delenit" + }, + { + title: "Qualisque", + href: "#/amet/corrumpit/qualisque" + } + ] + }, + { + title: "urbanitas", + href: "#/amet/urbanitas" + } + ] + }, + { + title: "Adipscing", + iconClass: "fa fa-graduation-cap", + href: "#/adipscing" + }, + { + title: "Lorem", + iconClass: "fa fa-gamepad", + href: "#/lorem" + }, + { + title: "Exit Demo" + } + ]; + $scope.handleNavigateClick = function (item) { + if (item.title === "Exit Demo") { + angular.element(document.querySelector("#verticalNavLayout")).addClass("hidden"); + } + }; + } + ]); + + + $(document).ready(function() { + $("#includedContent")[0].innerHTML = '\ +
      \ +
      \ +
      \ +

      \ + 0 Ipsum\ +

      \ +
      \ +

      \ + \ +

      \ +
      \ +
      \ +
      \ +
      \ +
      \ +

      \ + 20 Amet\ +

      \ +
      \ +

      \ + 4\ + 1\ +

      \ +
      \ +
      \ +
      \ +
      \ +
      \ +

      \ + 9 Adipiscing\ +

      \ +
      \ +

      \ + \ +

      \ +
      \ +
      \ +
      \ +
      \ +
      \ +

      \ + 12 Lorem\ +

      \ +
      \ +

      \ + 1\ +

      \ +
      \ +
      \ +
      \ +
      \ +
      \ +
      \ +
      \ +

      \ + \ + 0 Ipsum\ +

      \ +
      \ +

      \ + \ +

      \ +
      \ +
      \ +
      \ +
      \ +
      \ +

      \ + \ + \ + 20 Amet\ + \ +

      \ +
      \ +

      \ + 4\ +

      \ +
      \ +
      \ +
      \ +
      \ +
      \ +

      \ + \ + \ + 9 Adipiscing\ + \ +

      \ +
      \ +

      \ + \ +

      \ +
      \ +
      \ +
      \ +
      \ +
      \ +

      \ + \ + \ + 12 Lorem\ + \ +

      \ +
      \ +

      \ + 1\ +

      \ +
      \ +
      \ +
      \ +
      \ +
      \ +
      \ +
      \ +
      \ +

      \ + Top Utilized\ +

      \ +
      \ +
      \ +
      \ + Ipsum\ +
      \ +
      \ +
      \ + 190.0 of 200.0 GB Used\ +
      \ +
      \ + 5% Available\ +
      \ +
      \ +
      \ + Amet\ +
      \ +
      \ +
      \ + 100.0 of 200.0 GB Used\ +
      \ +
      \ + 50% Available\ +
      \ +
      \ +
      \ + Adipiscing\ +
      \ +
      \ +
      \ + 140.0 of 200.0 GB Used\ +
      \ +
      \ + 30% Available\ +
      \ +
      \ +
      \ + Lorem\ +
      \ +
      \ +
      \ + 153.0 of 200.0 GB Used\ +
      \ +
      \ + 23.5% Available\ +
      \ +
      \ +
      \ +
      \ +
      \ +
      \ +
      \ +
      \ +

      \ + Quotas\ +

      \ +
      \ +
      \ +
      \ +
      \ + Ipsum\ +
      \ +
      \ +
      \ + 115 of 460 MHz\ +
      \ +
      \ + 75% Available\ +
      \ +
      \ +
      \ +
      \ +
      \ + Amet\ +
      \ +
      \ +
      \ + 8 of 16 GB\ +
      \ +
      \ + 50% Available\ +
      \ +
      \ +
      \ +
      \ +
      \ + Adipiscing\ +
      \ +
      \ +
      \ + 5 of 8 Total\ +
      \ +
      \ + 37.5% Available\ +
      \ +
      \ +
      \ +
      \ +
      \ + Lorem\ +
      \ +
      \ +
      \ + 2 of 2 Total\ +
      \ +
      \ +
      \ +
      \ +
      \ +
      \ +
      \ + '; + }); +
      + + $(document).ready(function() { + $(document).on('click', '#showVerticalNav', function() { + $(document.getElementById("verticalNavLayout")).removeClass("hidden"); + }); + $(document).on('click', '#hideVerticalNav', function() { + $(document.getElementById("verticalNavLayout")).addClass("hidden"); + }); + }); + +
      +*/ +;/** + * @ngdoc directive + * @name patternfly.navigation.directive:pfVerticalNavigation - Router + * + * @description + * This example shows how to use pfVerticalNavigation with angular-ui-router's $states and uiSrefs. + * + * @param {string} brandSrc src for brand image + * @param {string} brandAlt Text for product name when brand image is not available + * @param {boolean} showBadges Flag if badges are used on navigation items, default: false + * @param {boolean} persistentSecondary Flag to use persistent secondary menus, default: false + * @param {boolean} hiddenIcons Flag to not show icons on the primary menu, default: false + * @param {array} items List of navigation items + *
        + *
      • .title - (string) Name of item to be displayed on the menu + *
      • .iconClass - (string) Classes for icon to be shown on the menu (ex. "fa fa-dashboard") + *
      • .href - (string) href link to navigate to on click + *
      • .children - (array) Submenu items (same structure as top level items) + *
      • .badges - (array) Badges to display for the item, badges with a zero count are not displayed. + *
          + *
        • .count - (number) Count to display in the badge + *
        • .iconClass - (string) Class to use for showing an icon before the count + *
        • .tooltip - (string) Tooltip to display for the badge + *
        • .badgeClass: - (string) Additional class(es) to add to the badge container + *
        + *
      • .uiSref - (string) Optional Angular UI Router state name. If specified, href must be not defined, and vice versa. + *
      • .uiSrefOptions - (object) Optional object to be passed to Angular UI Router $state.go() function + *
      + * @param {function} navigateCallback function(item) Callback method invoked on a navigation item click (one with no submenus) + * @param {function} itemClickCallback function(item) Callback method invoked on an item click + * @param {boolean} updateActiveItemsOnClick Flag if active items should be marked on click rather than on navigation change, default: false + * @param {boolean} ignoreMobile Flag if mobile state should be ignored (use only if absolutely necessary) default: false + * + * @example + + +
      + + + +
      + +
      + + angular.module('myApp',['patternfly.navigation', 'ui.router']) + .config(function($stateProvider, $urlRouterProvider) { + $urlRouterProvider.otherwise('dashboard'); + + $stateProvider + .state('dashboard', { + url: '/dashboard', + template: '
      \ +
      \ +

      \ + State: Dashboard\ +

      \ +
      \ +
      ' + }) + .state('dolor', { + url: '/dolor', + template: '
      \ +
      \ +

      \ + State: Dolor\ +

      \ +
      \ +
      ' + }) + .state('ipsum', { + url: '/ipsum', + template: '
      \ +
      \ +

      \ + State: Ipsum\ +

      \ +
      \ +
      ' + }); + }) + .controller('vertNavWithRouterController', ['$scope', + function ($scope) { + $scope.navigationItems = [ + { + title: "Dashboard", + iconClass: "fa fa-dashboard", + uiSref: "dashboard", + uiSrefOptions: { someKey: 'SomeValue' } + }, + { + title: "Dolor", + iconClass : "fa fa-shield", + uiSref: "dolor" + }, + { + title: "Ipsum", + iconClass : "fa fa-space-shuttle", + uiSref: "ipsum" + }, + { + title: "Exit Demo" + } + ]; + $scope.handleNavigateClickRouter = function (item) { + if (item.title === "Exit Demo") { + angular.element(document.querySelector("#verticalNavWithRouterLayout")).addClass("hidden"); + } + }; + } + ]); +
      + + $(document).ready(function() { + $(document).on('click', '#showVerticalNavWithRouter', function() { + $(document.getElementById("verticalNavWithRouterLayout")).removeClass("hidden"); + }); + $(document).on('click', '#hideVerticalNavWithRouter', function() { + $(document.getElementById("verticalNavWithRouterLayout")).addClass("hidden"); + }); + }); + +
      +*/ +;angular.module('patternfly.navigation').directive('pfVerticalNavigation', ['$location', '$rootScope', '$window', '$document', '$timeout', '$injector', + function (location, rootScope, $window, $document, $timeout, $injector) { + 'use strict'; + var $state; + + // Optional dependency on $state + if ($injector.has("$state")) { + $state = $injector.get("$state"); + } + + return { + restrict: 'A', + scope: { + brandSrc: '@', + brandAlt: '@', + showBadges: '@', + persistentSecondary: '@', + pinnableMenus: '@', + hiddenIcons: '@', + items: '=', + navigateCallback: '=?', + itemClickCallback: '=?', + updateActiveItemsOnClick: '@', + ignoreMobile: '@' + }, + replace: true, + templateUrl: 'navigation/vertical-navigation.html', + transclude: true, + controller: ["$scope", function ($scope) { + var routeChangeListener; + + $scope.showBadges = $scope.showBadges === 'true'; + $scope.persistentSecondary = $scope.persistentSecondary === 'true'; + $scope.pinnableMenus = $scope.pinnableMenus === 'true'; + $scope.hiddenIcons = $scope.hiddenIcons === 'true'; + $scope.updateActiveItemsOnClick = $scope.updateActiveItemsOnClick === 'true'; + $scope.ignoreMobile = $scope.ignoreMobile === 'true'; + $scope.activeSecondary = false; + + $scope.clearActiveItems = function () { + $scope.items.forEach(function (item) { + item.isActive = false; + if (item.children) { + item.children.forEach(function (secondary) { + secondary.isActive = false; + if (secondary.children) { + secondary.children.forEach(function (tertiary) { + tertiary.isActive = false; + }); + } + }); + } + }); + }; + + $scope.setActiveItems = function () { + var updatedRoute = "#" + location.path(); + //Setting active state on load + $scope.items.forEach(function (topLevel) { + if (updatedRoute.indexOf(topLevel.href) > -1) { + topLevel.isActive = true; + } + if (topLevel.children) { + topLevel.children.forEach(function (secondLevel) { + if (updatedRoute.indexOf(secondLevel.href) > -1) { + secondLevel.isActive = true; + topLevel.isActive = true; + } + if (secondLevel.children) { + secondLevel.children.forEach(function (thirdLevel) { + if (updatedRoute.indexOf(thirdLevel.href) > -1) { + thirdLevel.isActive = true; + secondLevel.isActive = true; + topLevel.isActive = true; + } + }); + } + }); + } + }); + }; + + if (!$scope.updateActiveItemsOnClick) { + routeChangeListener = rootScope.$on( "$routeChangeSuccess", function (event, next, current) { + $scope.clearActiveItems(); + $scope.setActiveItems(); + }); + + $scope.$on('$destroy', routeChangeListener); + } + }], + link: function ($scope) { + var breakpoints = { + 'tablet': 768, + 'desktop': 1200 + }; + + var getBodyContentElement = function () { + return angular.element(document.querySelector('.container-pf-nav-pf-vertical')); + }; + + var explicitCollapse = false; + var hoverDelay = 500; + var hideDelay = hoverDelay + 200; + + var initBodyElement = function () { + var bodyContentElement = getBodyContentElement(); + if ($scope.showBadges) { + bodyContentElement.addClass('nav-pf-vertical-with-badges'); + } + if ($scope.persistentSecondary) { + bodyContentElement.addClass('nav-pf-persistent-secondary'); + } + if ($scope.hiddenIcons) { + bodyContentElement.addClass('hidden-icons-pf'); + } + }; + + var updateMobileMenu = function (selected, secondaryItem) { + $scope.items.forEach(function (item) { + item.isMobileItem = false; + if (item.children) { + item.children.forEach(function (nextSecondary) { + nextSecondary.isMobileItem = false; + }); + } + }); + + if (selected) { + selected.isMobileItem = true; + if (secondaryItem) { + secondaryItem.isMobileItem = true; + $scope.showMobileSecondary = false; + $scope.showMobileTertiary = true; + } else { + $scope.showMobileSecondary = true; + $scope.showMobileTertiary = false; + } + } else { + $scope.showMobileSecondary = false; + $scope.showMobileTertiary = false; + } + }; + + var checkNavState = function () { + var width = $window.innerWidth; + var bodyContentElement = getBodyContentElement(); + + // Check to see if we need to enter/exit the mobile state + if (!$scope.ignoreMobile && width < breakpoints.tablet) { + if (!$scope.inMobileState) { + $scope.inMobileState = true; + + //Set the body class to the correct state + bodyContentElement.removeClass('collapsed-nav'); + bodyContentElement.addClass('hidden-nav'); + + // Reset the collapsed states + updateSecondaryCollapsedState(false); + updateTertiaryCollapsedState(false); + + explicitCollapse = false; + } + } else { + $scope.inMobileState = false; + $scope.showMobileNav = false; + + // Set the body class back to the default + bodyContentElement.removeClass('hidden-nav'); + } + + if (explicitCollapse) { + $scope.navCollapsed = true; + bodyContentElement.addClass('collapsed-nav'); + } else { + $scope.navCollapsed = false; + bodyContentElement.removeClass('collapsed-nav'); + } + }; + + var collapseMenu = function () { + var bodyContentElement = getBodyContentElement(); + $scope.navCollapsed = true; + + //Set the body class to the correct state + bodyContentElement.addClass('collapsed-nav'); + + explicitCollapse = true; + }; + + var expandMenu = function () { + var bodyContentElement = getBodyContentElement(); + $scope.navCollapsed = false; + + //Set the body class to the correct state + bodyContentElement.removeClass('collapsed-nav'); + + explicitCollapse = false; + + // Dispatch a resize event when showing the expanding then menu to + // allow content to adjust to the menu sizing + angular.element($window).triggerHandler('resize'); + }; + + var forceHideSecondaryMenu = function () { + $scope.forceHidden = true; + $timeout(function () { + $scope.forceHidden = false; + }, 500); + }; + + var setParentActive = function (item) { + $scope.items.forEach(function (topLevel) { + if (topLevel.children) { + topLevel.children.forEach(function (secondLevel) { + if (secondLevel === item) { + topLevel.isActive = true; + } + if (secondLevel.children) { + secondLevel.children.forEach(function (thirdLevel) { + if (thirdLevel === item) { + topLevel.isActive = true; + secondLevel.isActive = true; + } + }); + } + }); + } + }); + }; + + var getFirstNavigateChild = function (item) { + var firstChild; + if (!item.children || item.children.length < 1) { + firstChild = item; + } else { + firstChild = getFirstNavigateChild(item.children[0]); + } + return firstChild; + }; + + var setSecondaryItemVisible = function () { + var bodyContentElement = getBodyContentElement(); + $scope.activeSecondary = false; + + if ($scope.persistentSecondary && !$scope.inMobileState) { + $scope.items.forEach(function (topLevel) { + if (topLevel.children) { + topLevel.children.forEach(function (secondLevel) { + if (secondLevel.isActive) { + $scope.activeSecondary = true; + } + }); + } + }); + if ($scope.activeSecondary) { + bodyContentElement.addClass('secondary-visible-pf'); + } else { + bodyContentElement.removeClass('secondary-visible-pf'); + } + } + }; + + var navigateToItem = function (item) { + var navItem = getFirstNavigateChild(item); + var navTo; + if (navItem) { + $scope.showMobileNav = false; + if (navItem.uiSref && navItem.href) { + throw new Error('Using both uiSref and href on an item is not supported.'); + } + if (navItem.uiSref) { + if ($state === undefined) { + throw new Error('uiSref is defined on item, but no $state has been injected. ' + + 'Did you declare a dependency on "ui.router" module in your app?'); + } + $state.go(navItem.uiSref, navItem.uiSrefOptions); + } else { + navTo = navItem.href; + if (navTo) { + if (navTo.startsWith('#/')) { + navTo = navTo.substring(2); + } + location.path(navTo); + } + } + if ($scope.navigateCallback) { + $scope.navigateCallback(navItem); + } + } + + if ($scope.itemClickCallback) { + $scope.itemClickCallback(item); + } + + if ($scope.updateActiveItemsOnClick ) { + $scope.clearActiveItems(); + navItem.isActive = true; + setParentActive(navItem); + setSecondaryItemVisible(); + } + setSecondaryItemVisible(); + }; + + var primaryHover = function () { + var hover = false; + $scope.items.forEach(function (item) { + if (item.isHover) { + hover = true; + } + }); + return hover; + }; + + var secondaryHover = function () { + var hover = false; + $scope.items.forEach(function (item) { + if (item.children && item.children.length > 0) { + item.children.forEach(function (secondaryItem) { + if (secondaryItem.isHover) { + hover = true; + } + }); + } + }); + return hover; + }; + + var updateSecondaryCollapsedState = function (setCollapsed, collapsedItem) { + var bodyContentElement = getBodyContentElement(); + if (collapsedItem) { + collapsedItem.secondaryCollapsed = setCollapsed; + } + if (setCollapsed) { + $scope.collapsedSecondaryNav = true; + + bodyContentElement.addClass('collapsed-secondary-nav-pf'); + } else { + // Remove any collapsed secondary menus + if ($scope.items) { + $scope.items.forEach(function (item) { + item.secondaryCollasped = false; + }); + } + $scope.collapsedSecondaryNav = false; + + bodyContentElement.removeClass('collapsed-secondary-nav-pf'); + } + }; + + var updateTertiaryCollapsedState = function (setCollapsed, collapsedItem) { + var bodyContentElement = getBodyContentElement(); + if (collapsedItem) { + collapsedItem.tertiaryCollapsed = setCollapsed; + } + if (setCollapsed) { + $scope.collapsedTertiaryNav = true; + + bodyContentElement.addClass('collapsed-tertiary-nav-pf'); + updateSecondaryCollapsedState(false); + } else { + // Remove any collapsed secondary menus + if ($scope.items) { + $scope.items.forEach(function (item) { + if (item.children && item.children.length > 0) { + item.children.forEach(function (secondaryItem) { + secondaryItem.tertiaryCollasped = false; + }); + } + }); + } + $scope.collapsedTertiaryNav = false; + + bodyContentElement.removeClass('collapsed-tertiary-nav-pf'); + } + }; + + $scope.showMobileNav = false; + $scope.showMobileSecondary = false; + $scope.showMobileTertiary = false; + $scope.hoverSecondaryNav = false; + $scope.hoverTertiaryNav = false; + $scope.collapsedSecondaryNav = false; + $scope.collapsedTertiaryNav = false; + $scope.navCollapsed = false; + $scope.forceHidden = false; + + $scope.handleNavBarToggleClick = function () { + + if ($scope.inMobileState) { + // Toggle the mobile nav + if ($scope.showMobileNav) { + $scope.showMobileNav = false; + } else { + // Always start at the primary menu + updateMobileMenu(); + $scope.showMobileNav = true; + } + } else if ($scope.navCollapsed) { + expandMenu(); + } else { + collapseMenu(); + } + }; + + $scope.handlePrimaryClick = function (item, event) { + if ($scope.inMobileState) { + if (item.children && item.children.length > 0) { + updateMobileMenu(item); + } else { + updateMobileMenu(); + navigateToItem(item); + } + } else { + navigateToItem(item); + } + }; + + $scope.handleSecondaryClick = function (primary, secondary, event) { + if ($scope.inMobileState) { + if (secondary.children && secondary.children.length > 0) { + updateMobileMenu(primary, secondary); + } else { + updateMobileMenu(); + navigateToItem(secondary); + } + } else { + navigateToItem(secondary); + } + }; + + $scope.handleTertiaryClick = function (primary, secondary, tertiary, event) { + if ($scope.inMobileState) { + updateMobileMenu(); + } + + navigateToItem(tertiary); + }; + + // Show secondary nav bar on hover of primary nav items + $scope.handlePrimaryHover = function (item) { + if (item.children && item.children.length > 0) { + if (!$scope.inMobileState) { + if (item.navUnHoverTimeout !== undefined) { + $timeout.cancel(item.navUnHoverTimeout); + item.navUnHoverTimeout = undefined; + } else if ($scope.navHoverTimeout === undefined && !item.isHover) { + item.navHoverTimeout = $timeout(function () { + $scope.hoverSecondaryNav = true; + item.isHover = true; + item.navHoverTimeout = undefined; + }, hoverDelay); + } + } + } + }; + + $scope.handlePrimaryUnHover = function (item) { + if (item.children && item.children.length > 0) { + if (item.navHoverTimeout !== undefined) { + $timeout.cancel(item.navHoverTimeout); + item.navHoverTimeout = undefined; + } else if (item.navUnHoverTimeout === undefined && item.isHover) { + item.navUnHoverTimeout = $timeout(function () { + item.isHover = false; + if (!primaryHover()) { + $scope.hoverSecondaryNav = false; + } + item.navUnHoverTimeout = undefined; + }, hideDelay); + } + } + }; + + // Show tertiary nav bar on hover of secondary nav items + $scope.handleSecondaryHover = function (item) { + if (item.children && item.children.length > 0) { + if (!$scope.inMobileState) { + if (item.navUnHoverTimeout !== undefined) { + $timeout.cancel(item.navUnHoverTimeout); + item.navUnHoverTimeout = undefined; + } else if ($scope.navHoverTimeout === undefined) { + item.navHoverTimeout = $timeout(function () { + $scope.hoverTertiaryNav = true; + item.isHover = true; + item.navHoverTimeout = undefined; + }, hoverDelay); + } + } + } + }; + + $scope.handleSecondaryUnHover = function (item) { + if (item.children && item.children.length > 0) { + if (item.navHoverTimeout !== undefined) { + $timeout.cancel(item.navHoverTimeout); + item.navHoverTimeout = undefined; + } else if (item.navUnHoverTimeout === undefined) { + item.navUnHoverTimeout = $timeout(function () { + item.isHover = false; + if (!secondaryHover()) { + $scope.hoverTertiaryNav = false; + } + item.navUnHoverTimeout = undefined; + }, hideDelay); + } + } + }; + + $scope.collapseSecondaryNav = function (item, event) { + if ($scope.inMobileState) { + updateMobileMenu(); + } else { + if (item.secondaryCollapsed) { + updateSecondaryCollapsedState(false, item); + forceHideSecondaryMenu(); + } else { + updateSecondaryCollapsedState(true, item); + } + } + + $scope.hoverSecondaryNav = false; + event.stopImmediatePropagation(); + }; + + $scope.collapseTertiaryNav = function (item, event) { + if ($scope.inMobileState) { + $scope.items.forEach(function (primaryItem) { + if (primaryItem.children) { + primaryItem.children.forEach(function (secondaryItem) { + if (secondaryItem === item) { + updateMobileMenu(primaryItem); + } + }); + } + }); + } else { + if (item.tertiaryCollapsed) { + updateTertiaryCollapsedState(false, item); + forceHideSecondaryMenu(); + } else { + updateTertiaryCollapsedState(true, item); + } + } + + $scope.hoverSecondaryNav = false; + $scope.hoverTertiaryNav = false; + event.stopImmediatePropagation(); + }; + + initBodyElement(); + checkNavState(); + + angular.element($window).bind('resize', function () { + checkNavState(); + $timeout(function () { + try { + $scope.$apply(); + } catch (e) { + // Ignore, if we already applied, that is fine. + } + }); + }); + } + }; + }]); + +;/** + * @ngdoc directive + * @name patternfly.notification.directive:pfInlineNotification + * @restrict E + * @scope + * + * @param {expression=} pfNotificationType The type of the notification message. Allowed value is one of these: 'success','info','danger', 'warning'. + * @param {expression=} pfNotificationMessage The main text message of the notification. + * @param {expression=} pfNotificationHeader The header text of the notification. + * @param {expression=} pfNotificationPersistent The notification won't disappear after delay timeout, but has to be closed manually with the close button. + * + * @description + * The main visual element of the notification message. + * + * @example + + + +
      + + + + +
      +
      + +
      + +
      +
      +
      + +
      + +
      +
      +
      + +
      + +
      +
      +
      + +
      + +
      +
      +
      +
      +
      + + + angular.module( 'patternfly.notification' ).controller( 'NotificationDemoCtrl', function( $scope, Notifications ) { + $scope.types = ['success','info','danger', 'warning']; + $scope.type = $scope.types[0]; + $scope.isPersistent = false; + + $scope.header = 'Default Header.'; + $scope.message = 'Default Message.'; + }); + + +
      + */ +angular.module( 'patternfly.notification' ).directive('pfInlineNotification', function () { + 'use strict'; + + return { + scope: { + 'pfNotificationType': '=', + 'pfNotificationMessage': '=', + 'pfNotificationHeader': '=', + 'pfNotificationPersistent': '=', + 'pfNotificationIndex': '=' + }, + restrict: 'E', + templateUrl: 'notification/inline-notification.html' + }; +}); +;/** + * @ngdoc directive + * @name patternfly.notification.directive:pfNotificationDrawer + * + * @description + * Directive for rendering a notification drawer. This provides a common mechanism to handle how the notification + * drawer should look and behave without mandating the look of the notification group heading or notification body. + *

      + * An array of notification groups must be passed to create each group in the drawer. Each notification + * group must include an array of notifications to be shown for that group, the array MUST be called 'notifications'. + * You must provide the source for the heading, sub-heading, and notification body to show the content you desire for each. + * Pass a customScope object containing any scope variables/functions you need to access from the included source, access these + * via hanlders. in your included source. + *

      + * + * @param {boolean} drawerHidden Flag if the drawer is currently hidden + * @param {boolean} allowExpand Flag if the drawer can be expanded. Optional, default: false + * @param {boolean} drawExpanded Flag if the drawer is expanded (only valid if allowExpand is true). Optional, default: false + * @param {string} drawerTitle Title to display for the drawer (leaving this blank will remove the provided expand capability) + * @param {object} notificationGroups Array of notification groups to add to the drawer + * @param {string} actionButtonTitle Text for the lower action button of the drawer (optional, if not specified there will be no action button) + * @param {function} actionButtonCallback function(notificationGroup) Callback method for action button for each group, the notificationGroup is passed (Optional) + * @param {string} titleInclude Include src for the title area for the notification drawer, use this to customize the drawer title area + * @param {string} headingInclude Include src for the heading area for each notification group, access the group via notificationGroup + * @param {string} subheadingInclude Include src for the sub-heading area for each notification group, access the group via notificationGroup + * @param {string} notificationBodyInclude Include src for the notification body for each notification, access the notification via notification + * @param {string} notificationFooterInclude Include src for the notification footer for each notification, access the notification via notification + * @param {object} customScope Object containing any variables/functions used by the included src, access via customScope. + * + * @example + + +
      +
      + +
      + +
      + +
      +
      + +
      +
      + +
      +
      +
      + + {{notificationGroup.heading}} + + + {{notificationGroup.subHeading}} + + + + + Clear All + + + +
      + + + {{notification.message}} +
      + {{notification.timeStamp | date:'MM/dd/yyyy'}} + {{notification.timeStamp | date:'h:mm:ss a'}} +
      +
      +
      +
      +
      + + + {{notification.message}} + +
      +
      +
      + {{notification.timeStamp | date:'MM/dd/yyyy'}} + {{notification.timeStamp | date:'h:mm:ss a'}} +
      + +
      +
      +
      +
      + + angular.module('patternfly.notification').controller('DrawerCtrl', ['$scope', + function ($scope) { + var currentTime = (new Date()).getTime(); + $scope.hideDrawer = true; + $scope.toggleShowDrawer = function () { + $scope.hideDrawer = !$scope.hideDrawer; + }; + + var menuActions = [ + { + name: 'Action', + title: 'Perform an action' + }, + { + name: 'Another Action', + title: 'Do something else' + }, + { + name: 'Disabled Action', + title: 'Unavailable action', + isDisabled: true + }, + { + name: 'Something Else', + title: '' + }, + { + isSeparator: true + }, + { + name: 'Grouped Action 1', + title: 'Do something' + }, + { + name: 'Grouped Action 2', + title: 'Do something similar' + } + ]; + + + $scope.groups = [ + { + heading: "Notification Tab 1", + subHeading: "5 New Events", + notifications: [ + { + unread: true, + message: "A New Event! Huzzah! Bold", + status: 'info', + actions: menuActions, + timeStamp: currentTime - (1 * 60 * 60 * 1000) + }, + { + unread: true, + message: "Another Event Notification", + status: 'ok', + actions: menuActions, + timeStamp: currentTime - (2 * 60 * 60 * 1000) + }, + { + unread: false, + message: "Another Event Notification", + status: 'warning', + actions: menuActions, + timeStamp: currentTime - (10 * 60 * 60 * 1000) + }, + { + unread: false, + message: "Another Event Notification", + status: 'error', + actions: menuActions, + timeStamp: currentTime - (12 * 60 * 60 * 1000) + }, + { + unread: true, + message: "A New Event! Huzzah! Bold", + status: 'info', + actions: menuActions, + timeStamp: currentTime - (1 * 60 * 60 * 1000) + }, + { + unread: true, + message: "Another Event Notification", + status: 'error', + actions: menuActions, + timeStamp: currentTime - (2 * 60 * 60 * 1000) + }, + { + unread: false, + message: "Another Event Notification", + status: 'ok', + actions: menuActions, + timeStamp: currentTime - (10 * 60 * 60 * 1000) + }, + { + unread: false, + message: "Another Event Notification", + status: 'warning', + actions: menuActions, + timeStamp: currentTime - (12 * 60 * 60 * 1000) + }, + { + unread: true, + message: "Another Event Notification", + status: 'info', + actions: menuActions, + timeStamp: currentTime - (240 * 60 * 60 * 1000) + } + ], + isLoading: true + }, + { + heading: "Notification Tab 2", + subHeading: "3 New Events", + notifications: [ + { + unread: true, + message: "A New Event! Huzzah! Bold", + status: 'info', + actions: menuActions, + timeStamp: currentTime - (1 * 60 * 60 * 1000) + }, + { + unread: true, + message: "Another Event Notification", + status: 'error', + actions: menuActions, + timeStamp: currentTime - (2 * 60 * 60 * 1000) + }, + { + unread: false, + message: "Another Event Notification", + status: 'warning', + actions: menuActions, + timeStamp: currentTime - (10 * 60 * 60 * 1000) + }, + { + unread: false, + message: "Another Event Notification", + status: 'ok', + actions: menuActions, + timeStamp: currentTime - (12 * 60 * 60 * 1000) + }, + { + unread: true, + message: "Another Event Notification", + status: 'warning', + actions: menuActions, + timeStamp: currentTime - (240 * 60 * 60 * 1000) + } + ] + }, + { + heading: "Notification Tab 3", + subHeading: "3 New Events", + notifications: [ + { + unread: true, + message: "A New Event! Huzzah! Bold", + status: 'ok', + actions: menuActions, + timeStamp: currentTime - (1 * 60 * 60 * 1000) + }, + { + unread: true, + message: "Another Event Notification", + status: 'warning', + actions: menuActions, + timeStamp: currentTime - (2 * 60 * 60 * 1000) + }, + { + unread: false, + message: "Another Event Notification", + status: 'info', + actions: menuActions, + timeStamp: currentTime - (10 * 60 * 60 * 1000) + }, + { + unread: false, + message: "Another Event Notification", + status: 'ok', + actions: menuActions, + timeStamp: currentTime - (12 * 60 * 60 * 1000) + }, + { + unread: true, + message: "Another Event Notification", + status: 'error', + actions: menuActions, + timeStamp: currentTime - (240 * 60 * 60 * 1000) + } + ] + }, + { + heading: "Notification Tab 4", + subHeading: "3 New Events", + notifications: [ + { + unread: true, + message: "A New Event! Huzzah! Bold", + status: 'warning', + actions: menuActions, + timeStamp: currentTime - (1 * 60 * 60 * 1000) + }, + { + unread: true, + message: "Another Event Notification", + status: 'ok', + actions: menuActions, + timeStamp: currentTime - (2 * 60 * 60 * 1000) + }, + { + unread: false, + message: "Another Event Notification", + status: 'ok', + actions: menuActions, + timeStamp: currentTime - (10 * 60 * 60 * 1000) + }, + { + unread: false, + message: "Another Event Notification", + status: 'error', + actions: menuActions, + timeStamp: currentTime - (12 * 60 * 60 * 1000) + }, + { + unread: true, + message: "Another Event Notification", + status: 'info', + actions: menuActions, + timeStamp: currentTime - (240 * 60 * 60 * 1000) + } + ] + }, + { + heading: "Notification Tab 5", + subHeading: "3 New Events", + notifications: [ + { + unread: true, + message: "A New Event! Huzzah! Bold", + status: 'error', + actions: menuActions, + timeStamp: currentTime - (1 * 60 * 60 * 1000) + }, + { + unread: true, + message: "Another Event Notification", + status: 'error', + actions: menuActions, + timeStamp: currentTime - (2 * 60 * 60 * 1000) + }, + { + unread: false, + message: "Another Event Notification", + status: 'warning', + actions: menuActions, + timeStamp: currentTime - (10 * 60 * 60 * 1000) + }, + { + unread: false, + message: "Another Event Notification", + status: 'warning', + actions: menuActions, + timeStamp: currentTime - (12 * 60 * 60 * 1000) + }, + { + unread: true, + message: "Another Event Notification", + status: 'error', + actions: menuActions, + timeStamp: currentTime - (240 * 60 * 60 * 1000) + } + ] + } + ]; + + $scope.actionsText = ""; + $scope.actionButtonCB = function (group) { + $scope.actionsText = "Action Button clicked: " + group.heading + "\n" + $scope.actionsText; + group.notifications.forEach(function(nextNotification) { + nextNotification.unread = false; + }); + group.subHeading = "0 New Events"; + }; + + // + // Define customScope to contain anything that needs to be accessed from the included source + // html files (heading, subheading, or notificaton body). + // + + $scope.customScope = {}; + $scope.customScope.getNotficationStatusIconClass = function (notification) { + var retClass = ''; + if (notification && notification.status) { + if (notification.status === 'info') { + retClass = "pficon pficon-info"; + } else if (notification.status === 'error') { + retClass = "pficon pficon-error-circle-o"; + } else if (notification.status === 'warning') { + retClass = "pficon pficon-warning-triangle-o"; + } else if (notification.status === 'ok') { + retClass = "pficon pficon-ok"; + } + } + return retClass; + }; + $scope.customScope.handleAction = function (notification, action) { + if (action.isDisabled) { + return; + } + var newText = notification.message + " - " + action.name; + $scope.actionsText = newText + "\n" + $scope.actionsText; + }; + $scope.customScope.clearAll = function (group) { + var newText = group.heading + " - Clear All"; + $scope.actionsText = newText + "\n" + $scope.actionsText; + group.notifications = []; + group.subHeading = "0 New Events"; + }; + + $scope.customScope.markRead = function (notification) { + if (notification.unread) { + notification.unread = false; + $scope.actionsText = "Mark notification read" + "\n" + $scope.actionsText; + var notificationGroup = $scope.groups.find(function(group) { + return group.notifications.find(function(nextNotification) { + return notification == nextNotification; + }); + }); + var unread = notificationGroup.notifications.filter(function(nextNotification) { + return nextNotification.unread; + }); + notificationGroup.subHeading = unread.length + " New Events"; + } + }; + } + ]); + +
      +*/ +angular.module('patternfly.notification').directive('pfNotificationDrawer', ["$window", "$timeout", function ($window, $timeout) { + 'use strict'; + return { + restrict: 'A', + scope: { + drawerHidden: '=?', + allowExpand: '=?', + drawerExpanded: '=?', + drawerTitle: '@', + notificationGroups: '=', + actionButtonTitle: '@', + actionButtonCallback: '=?', + titleInclude: '@', + headingInclude: '@', + subheadingInclude: '@', + notificationBodyInclude: '@', + notificationFooterInclude: '@', + customScope: '=?' + }, + templateUrl: 'notification/notification-drawer.html', + controller: ["$scope", function ($scope) { + if (!$scope.allowExpand || angular.isUndefined($scope.drawerExpanded)) { + $scope.drawerExpanded = false; + } + }], + link: function (scope, element) { + + scope.$watch('notificationGroups', function () { + var openFound = false; + scope.notificationGroups.forEach(function (group) { + if (group.open) { + if (openFound) { + group.open = false; + } else { + openFound = true; + } + } + }); + }); + + scope.$watch('drawerHidden', function () { + $timeout(function () { + angular.element($window).triggerHandler('resize'); + }, 100); + }); + + scope.toggleCollapse = function (selectedGroup) { + if (selectedGroup.open) { + selectedGroup.open = false; + } else { + scope.notificationGroups.forEach(function (group) { + group.open = false; + }); + selectedGroup.open = true; + } + }; + + scope.toggleExpandDrawer = function () { + scope.drawerExpanded = !scope.drawerExpanded; + }; + + if (scope.groupHeight) { + element.find('.panel-group').css("height", scope.groupHeight); + } + if (scope.groupClass) { + element.find('.panel-group').addClass(scope.groupClass); + } + } + }; +}]); +;/** + * @ngdoc service + * @name patternfly.notification.Notification + * @requires $rootScope + * + * @description + * Notification service used to notify user about important events in the application. + * + * ## Configuring the service + * + * You can configure the service with: setDelay, setVerbose and setPersist. + * + * ### Notifications.setDelay + * Set the delay after which the notification is dismissed. The argument of this method expects miliseconds. Default + * delay is 5000 ms. + * + * ### Notifications.setVerbose + * Set the verbose mode to on (default) or off. During the verbose mode, each notification is printed in the console, + * too. This is done using the default angular.js $log service. + * + * ### Notifications.setPersist + * Sets persist option for particular modes. Notification with persistent mode won't be dismissed after delay, but has + * to be closed manually with the close button. By default, the "error" and "httpError" modes are set to persistent. + * The input is an object in format {mode: persistValue}. + * + * ## Configuration Example + * ```js + * angular.module('myApp', []).config(function (NotificationsProvider) { + * NotificationsProvider.setDelay(10000).setVerbose(false).setPersist({'error': true, 'httpError': true, 'warn': true}); + * }); + * ``` + * @example + + + +
      + + +
      +
      + +
      + +
      +
      +
      + +
      + +
      +
      +
      +
      + +
      +
      +
      +
      +
      + + + angular.module( 'patternfly.notification' ).controller( 'NotificationDemoCtrl', function( $scope, Notifications ) { + + var typeMap = { 'Info': Notifications.info, + 'Success': Notifications.success, + 'Warning': Notifications.warn, + 'Danger': Notifications.error }; + + $scope.types = Object.keys(typeMap); + + $scope.type = $scope.types[0]; + $scope.message = 'Default notification message.'; + + $scope.notify = function () { + typeMap[$scope.type]($scope.message); + } + }); + + +
      + */ +angular.module('patternfly.notification').provider('Notifications', function () { + 'use strict'; + + // time (in ms) the notifications are shown + this.delay = 8000; + this.verbose = true; + this.notifications = {}; + this.persist = {'error': true, 'httpError': true}; + + this.setDelay = function (delay) { + this.delay = delay; + return this; + }; + + this.setVerbose = function (verbose) { + this.verbose = verbose; + return this; + }; + + this.setPersist = function (persist) { + this.persist = persist; + }; + + this.$get = ['$rootScope', '$timeout', '$log', function ($rootScope, $timeout, $log) { + var delay = this.delay; + var notifications = this.notifications; + var verbose = this.verbose; + var persist = this.persist; + + var modes = { + info: { type: 'info', header: 'Info!', log: 'info'}, + success: { type: 'success', header: 'Success!', log: 'info'}, + error: { type: 'danger', header: 'Error!', log: 'error'}, + warn: { type: 'warning', header: 'Warning!', log: 'warn'} + }; + + $rootScope.notifications = {}; + $rootScope.notifications.data = []; + + $rootScope.notifications.remove = function (index) { + $rootScope.notifications.data.splice(index, 1); + }; + + if (!$rootScope.notifications) { + $rootScope.notifications.data = []; + } + + notifications.message = function (type, header, message, isPersistent, closeCallback, actionTitle, actionCallback, menuActions) { + var notification = { + type : type, + header: header, + message : message, + isPersistent: isPersistent, + closeCallback: closeCallback, + actionTitle: actionTitle, + actionCallback: actionCallback, + menuActions: menuActions + }; + + notification.show = true; + $rootScope.notifications.data.push(notification); + + if (!notification.isPersistent) { + notification.viewing = false; + $timeout(function () { + notification.show = false; + if (!notification.viewing) { + notifications.remove(notification); + } + }, delay); + } + }; + + function createNotifyMethod (mode) { + return function (message, header, persistent, closeCallback, actionTitle, actionCallback, menuActions) { + if (angular.isUndefined(header)) { + header = modes[mode].header; + } + if (angular.isUndefined(persistent)) { + persistent = persist[mode]; + } + notifications.message(modes[mode].type, header, message, persistent, closeCallback, actionTitle, actionCallback, menuActions); + if (verbose) { + $log[modes[mode].log](message); + } + }; + } + + angular.forEach(modes, function (mode, index) { + notifications[index] = createNotifyMethod(index); + }); + + + notifications.httpError = function (message, httpResponse) { + message += ' (' + (httpResponse.data.message || httpResponse.data.cause || httpResponse.data.cause || httpResponse.data.errorMessage) + ')'; + notifications.message('danger', 'Error!', message, persist.httpError); + if (verbose) { + $log.error(message); + } + }; + + notifications.remove = function (notification) { + var index = $rootScope.notifications.data.indexOf(notification); + if (index !== -1) { + notifications.removeIndex(index); + } + }; + + notifications.removeIndex = function (index) { + $rootScope.notifications.remove(index); + }; + + notifications.setViewing = function (notification, viewing) { + notification.viewing = viewing; + if (!viewing && !notification.show) { + notifications.remove(notification); + } + }; + + notifications.data = $rootScope.notifications.data; + + return notifications; + }]; + +}); + +/** + * @ngdoc directive + * @name patternfly.notification.directive:pfNotificationList + * @restrict E + * + * @description + * Using this directive automatically creates a list of notifications generated by the {@link api/patternfly.notification.Notification notification} service. + * + * @example + + + +
      + + + +
      +
      + +
      + +
      +
      +
      + +
      + +
      +
      +
      +
      + +
      +
      +
      +
      +
      + + + angular.module('patternfly.notification').controller( 'NotificationDemoCtrl', function( $scope, Notifications ) { + $scope.message = 'Default Message.'; + + var typeMap = { 'Info': Notifications.info, + 'Success': Notifications.success, + 'Warning': Notifications.warn, + 'Danger': Notifications.error }; + + $scope.types = Object.keys(typeMap); + + $scope.type = $scope.types[0]; + $scope.message = 'Default notification message.'; + + $scope.notify = function () { + typeMap[$scope.type]($scope.message); + } + }); + + +
      + */ +angular.module('patternfly.notification').directive('pfNotificationList', function () { + 'use strict'; + + NotificationListController.$inject = ["$scope", "$rootScope"]; + return { + restrict: 'E', + controller: NotificationListController, + templateUrl: 'notification/notification-list.html' + }; + + function NotificationListController ($scope, $rootScope) { + $scope.notifications = $rootScope.notifications; + } +}); +;/** + * @ngdoc directive + * @name patternfly.notification.directive:pfToastNotificationList + * @restrict A + * @scope + * + * @param {Array} notifications The list of current notifcations to display. Each notification should have the following (see pfToastNotification): + *
        + *
      • .type - (String) The type of the notification message. Allowed value is one of these: 'success','info','danger', 'warning' + *
      • .header - (String) The header to display for the notification (optional) + *
      • .message - (String) The main text message of the notification. + *
      • .actionTitle Text to show for the primary action, optional. + *
      • .actionCallback (function(this notification)) Function to invoke when primary action is selected, optional + *
      • .menuActions Optional list of actions to place in the kebab menu:
        + *
          + *
        • .name - (String) The name of the action, displayed on the button + *
        • .actionFn - (function(action, this notification)) Function to invoke when the action selected + *
        • .isDisabled - (Boolean) set to true to disable the action + *
        • .isSeparator - (Boolean) set to true if this is a placehodler for a separator rather than an action + *
        + *
      • .isPersistent Flag to show close button for the notification even if showClose is false. + *
      + * @param {Boolean} showClose Flag to show the close button on all notifications (not shown if the notification has menu actions) + * @param {function} closeCallback (function(data)) Function to invoke when closes a toast notification + * @param {function} updateViewing (function(boolean, data)) Function to invoke when user is viewing/not-viewing (hovering on) a toast notification + * + * @description + * Using this directive displayes a list of toast notifications + * + * @example + + + +
      +
      +
      +
      +
      +
      + +
      + +
      +
      +
      + +
      + +
      +
      +
      + +
      + +
      +
      +
      + +
      + +
      +
      +
      + +
      + +
      +
      +
      + +
      + +
      + +
      + +
      +
      +
      +
      + +
      +
      +
      +
      +
      + +
      +
      + +
      +
      +
      +
      + + + angular.module('patternfly.notification').controller( 'ToastNotificationListDemoCtrl', function( $scope, $rootScope, Notifications ) { + $scope.message = 'Default Message.'; + + var typeMap = { 'Info': 'info', + 'Success': 'success', + 'Warning': 'warning', + 'Danger': 'danger' }; + + $scope.types = Object.keys(typeMap); + + $scope.type = $scope.types[0]; + $scope.header = 'Default header.'; + $scope.message = 'Default notification message.'; + $scope.showClose = false; + $scope.persistent = false; + + $scope.primaryAction = ''; + + $scope.showMenu = false; + var performAction = function (menuAction, data) { + $scope.actionText += menuAction.name + ": " + data.message + '\n'; + }; + $scope.menuActions = [ + { + name: 'Action', + title: 'Perform an action', + actionFn: performAction + }, + { + name: 'Another Action', + title: 'Do something else', + actionFn: performAction + }, + { + name: 'Disabled Action', + title: 'Unavailable action', + actionFn: performAction, + isDisabled: true + }, + { + name: 'Something Else', + title: '', + actionFn: performAction + }, + { + isSeparator: true + }, + { + name: 'Grouped Action 1', + title: 'Do something', + actionFn: performAction + }, + { + name: 'Grouped Action 2', + title: 'Do something similar', + actionFn: performAction + } + ]; + + $scope.actionText = ""; + + $scope.handleAction = function (data) { + $scope.actionText = $scope.primaryAction + ": " + data.message + '\n' + $scope.actionText; + }; + $scope.handleClose = function (data) { + $scope.actionText = "Closed: " + data.message + '\n'+ $scope.actionText; + Notifications.remove(data); + }; + $scope.updateViewing = function (viewing, data) { + Notifications.setViewing(data, viewing); + }; + + $scope.notify = function () { + Notifications.message ( + typeMap[$scope.type], + $scope.header, + $scope.message, + $scope.persistent, + $scope.handleClose, + $scope.primaryAction, + $scope.handleAction, + ($scope.showMenu ? $scope.menuActions : undefined) + ); + } + + $scope.notifications = Notifications.data; + }); + + +
      + */ +angular.module('patternfly.notification').directive('pfToastNotificationList', function () { + 'use strict'; + + return { + restrict: 'A', + scope: { + notifications: '=', + showClose: '=?', + closeCallback: '=?', + updateViewing: '=?' + }, + templateUrl: 'notification/toast-notification-list.html', + controller: ["$scope", function ($scope) { + $scope.handleClose = function (notification) { + if (angular.isFunction($scope.closeCallback)) { + $scope.closeCallback(notification); + } + }; + $scope.handleViewingChange = function (isViewing, notification) { + if (angular.isFunction($scope.updateViewing)) { + $scope.updateViewing(isViewing, notification); + } + }; + }] + }; +}); +;/** + * @ngdoc directive + * @name patternfly.notification.directive:pfToastNotification + * @restrict E + * @scope + * + * @param {string} notificationType The type of the notification message. Allowed value is one of these: 'success','info','danger', 'warning' + * @param {string} header The header text of the notification. + * @param {string} message The main text message of the notification. + * @param {boolean} showClose Flag to show the close button, default: true + * @param {function} closeCallback (function(data)) Function to invoke when close action is selected, optional + * @param {string} actionTitle Text to show for the primary action, optional. + * @param {function} actionCallback (function(data)) Function to invoke when primary action is selected, optional + * @param {Array} menuActions Optional list of actions to place in the kebab menu:
      + *
        + *
      • .name - (String) The name of the action, displayed on the button + *
      • .actionFn - (function(action, data)) Function to invoke when the action selected + *
      • .isDisabled - (Boolean) set to true to disable the action + *
      • .isSeparator - (Boolean) set to true if this is a placehodler for a separator rather than an action + *
      + * @param {function} updateViewing (function(boolean, data)) Function to invoke when user is viewing/no-viewing (hovering on) the toast + * @param {object} data Any data needed by the callbacks (optional) + * + * @description + * Toast notifications are used to notify users of a system occurence. Toast notifications should be transient and stay on the screen for 8 seconds, + * so that they do not block the information behind them for too long, but allows the user to read the message. + * The pfToastNotification directive allows status, header, message, primary action and menu actions for the notification. The notification can also + * allow the user to close the notification. + * + * Note: Using the kebab menu (menu actions) with the close button is not currently supported. If both are specified the close button will not be shown. + * Add a close menu item if you want to have both capabilities. + * + * @example + + + +
      +
      +
      +
      + +
      +
      + +
      + +
      +
      +
      + +
      + +
      +
      +
      + +
      + +
      +
      +
      + +
      + +
      +
      +
      + +
      + +
      + +
      + +
      +
      +
      +
      +
      + +
      +
      + +
      +
      +
      + + + angular.module( 'patternfly.notification' ).controller( 'ToastNotificationDemoCtrl', function( $scope, Notifications ) { + $scope.types = ['success','info','danger', 'warning']; + $scope.type = $scope.types[0]; + $scope.showClose = false; + + $scope.header = 'Default Header.'; + $scope.message = 'Default Message.'; + $scope.primaryAction = ''; + + $scope.showMenu = false; + var performAction = function (menuAction) { + $scope.actionText += menuAction.name + '\n'; + }; + var menuActions = [ + { + name: 'Action', + title: 'Perform an action', + actionFn: performAction + }, + { + name: 'Another Action', + title: 'Do something else', + actionFn: performAction + }, + { + name: 'Disabled Action', + title: 'Unavailable action', + actionFn: performAction, + isDisabled: true + }, + { + name: 'Something Else', + title: '', + actionFn: performAction + }, + { + isSeparator: true + }, + { + name: 'Grouped Action 1', + title: 'Do something', + actionFn: performAction + }, + { + name: 'Grouped Action 2', + title: 'Do something similar', + actionFn: performAction + } + ]; + + $scope.$watch('showMenu', function () { + if ($scope.showMenu) { + $scope.menuActions = menuActions; + } else { + $scope.menuActions = undefined; + } + }); + + $scope.actionText = ""; + + $scope.handleAction = function () { + $scope.actionText = $scope.primaryAction + '\n' + $scope.actionText; + }; + $scope.closeCallback = function () { + $scope.actionText = "Close" + '\n' + $scope.actionText; + }; + }); + + +
      + */ +angular.module( 'patternfly.notification' ).directive('pfToastNotification', function () { + 'use strict'; + + return { + scope: { + 'notificationType': '@', + 'message': '@', + 'header': '@', + 'showClose': '@', + 'closeCallback': '=?', + 'actionTitle': '@', + 'actionCallback': '=?', + 'menuActions': '=?', + 'updateViewing': '=?', + 'data': '=?' + }, + restrict: 'A', + templateUrl: 'notification/toast-notification.html', + controller: ["$scope", function ($scope) { + $scope.notificationType = $scope.notificationType || 'info'; + + $scope.updateShowClose = function () { + $scope.showCloseButton = ($scope.showClose === 'true') && (angular.isUndefined($scope.menuActions) || $scope.menuActions.length < 1); + }; + + $scope.handleClose = function () { + if (angular.isFunction($scope.closeCallback)) { + $scope.closeCallback($scope.data); + } + }; + + $scope.handleAction = function () { + if (angular.isFunction($scope.actionCallback)) { + $scope.actionCallback($scope.data); + } + }; + + $scope.handleMenuAction = function (menuAction) { + if (menuAction && angular.isFunction(menuAction.actionFn) && (menuAction.isDisabled !== true)) { + menuAction.actionFn(menuAction, $scope.data); + } + }; + + $scope.handleEnter = function () { + if (angular.isFunction($scope.updateViewing)) { + $scope.updateViewing(true, $scope.data); + } + }; + $scope.handleLeave = function () { + if (angular.isFunction($scope.updateViewing)) { + $scope.updateViewing(false, $scope.data); + } + }; + + $scope.updateShowClose (); + }], + link: function (scope) { + scope.$watch('showClose', function () { + scope.updateShowClose(); + }); + scope.$watch('menuActions', function () { + scope.updateShowClose(); + }); + } + }; +}); +;/** + * @ngdoc directive + * @name patternfly.select:pfSelect + * @element select + * + * @param {string} ngModel Model binding using the {@link https://docs.angularjs.org/api/ng/type/ngModel.NgModelController/ NgModelController} is mandatory. + * @param {string=} ngOptions The `{@link https://docs.angularjs.org/api/ng/directive/select/ ngOptions}` attribute can be used to dynamically generate a list of `

      >K|Fx35`rxRbqH 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 Sump{<1pq_<0a34Lx&Q!>etzKq literal 0 HcmV?d00001 diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-ExtraBoldItalic-webfont.eot b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-ExtraBoldItalic-webfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..77184af422087509ed943f8745e9cc6118260825 GIT binary patch literal 21576 zcma%hRZtvE6YT=a;_eQMySptK+#Q0uySux)1zFtP2_D=D8iKnMG$gs-|9J1y?Ww6V zr@K$ryiC>9Ov`Bj02-PA0PKGQ2>1_CkU(&VKv-BH3=Ab4;6I;|+AS<#&yW%TVfZip zKl=g$p!^>m%BNTT5C3nY1E>OA0agI#|B^HTX8)nbe=8Y)FTfMv{vS67xBwghmj8)R z0rLO(%>H9`0E_=PAwcIpo%?_JcK_x4PtOTp`)_jm7vuT=tV;R+)C2$|H9x8S-#Y{V z-~g_%0Dc;Pmw7f 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-ExtraBoldItalic-webfont.ttf b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-ExtraBoldItalic-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..26a07e9392a657f63d4c3db9b08213cc429d4dab GIT binary patch literal 43420 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 W9s=-tr@CpM0WvO)|8?UTqW=SlD|-+C literal 0 HcmV?d00001 diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-ExtraBoldItalic-webfont.woff b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-ExtraBoldItalic-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..45395d1bbe6d6f21d94be106f144b36814c4563e GIT binary patch literal 24568 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 literal 0 HcmV?d00001 diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Italic-webfont.eot b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Italic-webfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..0c8a0ae06ed09f6a7be1b84defae7ccda65cc2e0 GIT binary patch literal 20265 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Italic-webfont.ttf b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Italic-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..12d25d9a73c1f3cfd80681a80ad6f4015ff5ccb2 GIT binary patch literal 38412 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 YuCG5J`MSL7mVO;%T$=sN!plVe1uR-HyZ`_I literal 0 HcmV?d00001 diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Italic-webfont.woff b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Italic-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..ff652e64356b538c001423b6aedefcf1ee66cd17 GIT binary patch literal 23188 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 literal 0 HcmV?d00001 diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Light-webfont.svg b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Light-webfont.svg new file mode 100644 index 00000000..11a472ca --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Light-webfont.svg @@ -0,0 +1,1831 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Light-webfont.ttf b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Light-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..63af664cde6abb0083a37fb7f9d561c461997f49 GIT binary patch literal 37336 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 literal 0 HcmV?d00001 diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Light-webfont.woff b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-Light-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..e786074813a27d0a7a249047832988d5bf0fe756 GIT binary patch literal 22248 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 literal 0 HcmV?d00001 diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-LightItalic-webfont.eot b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-LightItalic-webfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..8f445929ffb03b50e98c2a2f7d831a0cb1b276a2 GIT binary patch literal 20535 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 Z%0#`NexefPFV?Xj51H#Y#AC7WXn+Jg($4?@ literal 0 HcmV?d00001 diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-LightItalic-webfont.svg b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-LightItalic-webfont.svg new file mode 100644 index 00000000..431d7e35 --- /dev/null +++ b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-LightItalic-webfont.svg @@ -0,0 +1,1835 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-LightItalic-webfont.ttf b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-LightItalic-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..01dda2858a76542754075f04cd1f7a6013e17b0d GIT binary patch literal 39956 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 mWJA>k)kGJ@PY$4B&TR+Dr3(PV`?rfWAEd literal 0 HcmV?d00001 diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-LightItalic-webfont.woff b/resources/projects/coolstore/src/main/resources/META-INF/resources/bower_components/angular-patternfly/dist/docs/fonts/OpenSans-LightItalic-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..43e8b9e6cc061ff17fd2903075cbde12715512b3 GIT binary patch literal 23400 zcmZ^}18`?e^d=nJb~3STXQGL1+qNgRZQHhO+n(6?g`2m&|5saEwcEFzI(?pdPWS2V zs@A=3a$;gYz(7Aq%Nz*xKbeL0|LOnb|IZ{QrYr*l1YGvR;{69BS5Sbsh^W{PH}s};C5xs-P6IW9C4Fm)c^Z$WI+_ zKQcZN)>FvL!0E>qLGZ^0>VJS_X6<46!~FpQ65av=a!IPXxTrTbF)#)KQY8JcVfg_& zkYSRf`49QSssHG|en5%<2CiXlQ!y~@gw>Vptzt$wgxsPKit}n&C^eeb)HbU-}ZJ+KkZVV`{6!+%7Y0f))BOK zH2Lw>{NaG&{=rYh?Cy_YwQWe{ zPm`CO&kC-(_gf(w6)-|{nERgZ6RsvdyBDG14<$j7ef=mZG#)(n>lL4E#HZjlVc1)u zE$o?o=hs&I8f%}n#!Jd5QQsI^F^s|XdjMN+=vx7U80tLS<>49BYcJ}2Zb7;_b4nCJ zI9d41UOqA%q|^$a44I?u9?(!IlvO}R(7HzO$8%uu_(8b?NqPGw{Ccr70u!NJ)vkg7 zhp7B?S$&K~Wvl`^BfprjTy+h>;>*@(im`>|`Y*yivKb~$1PxAL3WLAyfv-6fC*W;R zsrpck_UUee_TV)GP*DReSb?~V2&ndnysdleTmD{CGROi&GB~TS74%qSc@XTvbbt#O z)u&fBL6jcTFEnr1-Ts$3LjwZI$7HQHk2D3Q@r5)p`Gl4g)(EP8!p8*hPh^AZLg#s#C=Gl%^P zJ7FDs<5F)`G^+1eKEG>r$M;fKlaNuVi+|Xo@lYJW_CDD|S3dilT$2#hEH5te6a_DY zm{_UmfV0bDk1^8^^d&_tQ=o`R?Q&+JLQh`?b8s20W-5U$936rK&xT{kx@688xQka5 zP?H1yNayNW)}(uaJ05?agUTul+k|4lQ{?eKeMqDVc__Q$IzTZ8-Z}PA#9-L`1?l0J z^MScXtR3)ctlwk@eh|G4hJ+Dj)d0@6k5jr&#Nt*9=2whm%CoZ@%sYpZYp4}XA9k1O`~IG z!6l`p(K);L;!+?BNq9A+23`lZgWcKY-^N^XzSaMQC^@3n;l?*TR<5F1UtNA4u)^5K zu-^iSVOYK^zVBjIdh==9lg8lFh-^V;gm2t4^GrK4C<#p`sP?;51|%jyKfc;^Ub(q~ z)-MjpeqU+$u-<<=^mvb0I8F~J(WFOme2(OuI@?=$A^JIakF5CG0p(8vA%=P|=D!!dn*2Zsk}gE+|=+6e=B2?oh&)453r z+Hs>geSP2xgV%4uKl(<{jEsP{cS=SmFu*&AL>=Xr@<`UyqX+~75^R)4pC^_-aTJ`X zenzr?s8Enlh)}pt;66SmOCUv{z@Qf6)!=Q2KlGRvJgEZs>n; znEDQs4faj+4RA*;r}_IU5d3D*GyY>_xTkM;U}|b)YGPn$=+W2rxZ^MME5qMk2s8{E z4nHs(8w=arud%N9Q_4txZ_JokQC~j`F~O+bY#X8o4J!@UiyGedXFfL4*Vi}wtB(yK z27&Yndc+g}poK&H+XNj55=RDNe8;@R^kK$o3};%U&pqNCc@_hb8W0wc6p$5=5Rehj z6ObGb`Mc|P_yCS*F(h2C#@9Dw<|yn^FHji`R86Fikf6|SA&81e6j4l2dCbG_+Hb;d zfk(fC?}6{0Z>+DL&-au5aY%6jJa7BG{vF6p0&CB@`~Cn(8^j0#^<9CI+k_|drDIZ1 zF?NVHRWWj+{-7ElELPeo>r1>W?JeFe?+=iG-vh)2h6gAKiVMsQj`uJTk`vSwmghJb znj735o^KE#Vk6`wrY9IFsw?a*uFnWDvNQBGw$}tXx;y+mzF)xpLjAw;4fc`a73P`h z9qypR;cTw5w-e2#w7Sg48;U2@YIK`Tuijj6*==_^Og3Y#yj*X#N9B_eGCX<>4TPQ} z8)!pfG~kBe;LeWqSC5w%tJap&vLFplSNQ)}T4wvcjy>VJUGH=?C+_dfQ_K?b`F@7v z-#_z(q~x6J)O~21HXG(f7mC%aBnrQf~4_n=?B01A);mbN+=5FpeWgogjt*K8FFw?#3uf#5pop za2ISAhrIc*AUZ5Y3+iFlUpjbD)nGbBw9dyogzp-?Csa+Rk0b)sFEOb>DLISm6yi5C znU$^D-Pn;vBE@o`4$<7o_l`u#%cF{C{NcDA`^WVO{Y187ss~gSsLhEYqs)StU^9@B}29I0IiPB|xaKgE^B;Lr^N_ ziBc*MOe8~f3**BwAr#qhp2`LbItZz+@n$=Un<4az9Fs}3>ve5TIvu!g8z3dBP%mxx zqU!hS-xMkYsl`f2zSpR@6mTFEhZRFL!wUzceYeG#%d5bdP0(nlT@Z(^u1hyt!p`y+ z?_3lrS(TQjUBu?CV`IeeMLfpXWhstJW?DiSR;3lHU5BSzK+~D*smNI7eNcd%)Ba>v zLaHyN6Um1&@#6CU7-Vp>SMO&%hbcq*S}VWx_WRTtOD zu5DILQszQpPKkXhlf7 zd=_>UC!ZgMxf~m7HHR=24MY}P&`5a1w74E(lBuZfL@rnYyix9rSM7z(Cs+93T!W}& zJioPvcHSM7J}7v&^;DMTVQWlgnrB;B)G9(Yhj!=eAlCl+5h%5{v(&SEQN?<$4HO2 zLVf1PO!3i2UJu2H_cT6w3wld}mHONvR`jb2TOy3!N|X0H7*O4F`k9OExb=balE_Zy@P(9q` zdiACoC^x-*@8V#Y_S|GS&GNl;U30w%gC!G*oCoiR38PGGMJlMq`k?Hd<#Kt6?#J>y zJAmyJbmM)h=Mml{4y~;ayfc1o*)-uMUWs`@OT;DKnzjpJ`FQIy4W#)M$^rb>kX2&O9RcVNB}Y6g)m;K@4`hZCM?1|a z?do=bVg)nl5OEb94g=xUmlWcy;FcN*MG{ySE<)U=YZyelPM7r0K$)Z&)M*hTyh1tI zG9>{jifYxcrAr%*I|d=B;X8yD#8*pfc^V9ly41MfXe` zze7%fzxur4M6D8G9g)~nx_6ojx+X<5%(2#T;YfL_T53nhk~k*dfM!NQT+S!OK9U2K zA`y@n>PC~rq*^Mc6^{e6LW9c_a;cxc`b% zBvz1zQOTAzp^v3nUX=eQfp(ZkZGV_ikQohZQBsnbJ5vVAW%?{DH~vOaN-`>jbvXSH zj=Om%h>c0=#{cnN+&@W8{RXeaTbFCU$Nk6bqOvz$VEz8pNXsF$ zbmdu>qLn_E4Hoh3FlpS~_8qg>>Nq!LHtUH}wK|g-TVb8js*`jGsx%%#LxG<9=~*Ux z0hTwk!H0tfD^9-P2P2O(x`(y@Sg(6quxv!EX> zc{31Ruxx1L6zO!&t1d1+<}&@jX)u?BuNsLU#Rwp1rCi68#fNZ>lcGbE;d&Z^1MH8R znNDi83aq(BdVg#-HN@uVwRRg`5NL1olDTdKaUjg-alhPmV9G(U5Ng+1AC^TYR^rxt zySjsZo$gswR+!d~4zxr*4I@tZz5PR#3K3Z1Ri7cSw|w>6>F~67+(t&SBX#1rwJ0GZ z?pA&4Ck;rq)W_S8$|^v)wUCF5Apgs-*8l;4;(~s$h##*sn*`!V5GGS)Vd|KIKy@WC zWKF{_+J`xznCQWcoLDu&ClHdfZ}T2^ljo=HWzg#*?z5~+jomW>qKWD+U?md!4Hg^> z55^NWzLw0nP40au;J7Ig~Ym8K; zK|lgrs6fOvfJBOv&!OZ6F@HYrtlf!R6|ijUjMT~tUyB>NI=(oPSpD?M}yArM9*A3 zgv1id2mO_LoamUbwtnXy5(1-s_a?>GWxW(Sx%a}~T2+<#_l+L$)OiAVC~IFN0+<&~ zhj0?)w3DA}6c|hY1u0(N!@$iJprLEvbwk5pXGoZMx(e*J>uR$SM~#VvVs=xPO|l*M z3;9rP1zAO<0r>`%(2#*`Rb|7u&8j!q5Lqe-kf|)uz;YNS*XR+CYp{HsP^`|9+v|u? z0lj*&n=-Rmy3xU-YML23D~6=q6x$!e&IW1t8u!o+%Fk^?un)as||0Ca;A^ftv^pmAgAO zibO{O+Q9X~54V8&X(ZWv%A^CAwShrSS^wo4#W^GaWpQe@2aB~puYl-34y2MZu6zc~ zPO(k=*#5BuyL`s$3w&~?SKos)H&L&9EFMe%Cs5tqm!ZnSQUEHDJlqwJ1B=Fnt4ewzJ|z^C2hG*M-rFeYXqB;gQbO!Dl0T%53wQx9^S)(jsnW&H%8pYF-b}H@VeS~8t--G>+-goS76>gdY>Gr-)h>u{w(!oV)Ip84n{>3$V`!8Ujk?v z`3rRZ?UAh8RbZ?X-T94tA~k?VE*cgV@Fxf&O)1{q&_$n|PQU8!M!sNmGDCQ{taO-c zw1kW-D;FL$?DB@hHQucVUU-;OqsHTGW89#1DoH$cjZW|2XK%*twldcx40Re~IS#5-Bk=KAQo;heDxkw@ z^ZdDqNa=b6Gj*r9S08rJ#pLS)7YQpSGytuFMvM|Iw)4-?=oW>{JNV*=guP~B;cfS~ z$@bC(q(PLCKcZ+J1F-_id4OX#R}E$37%BoLbQ(3>Tp#0O+`5Fs2xYsJWNHwn4pzia ze1V^<2o>dqermr=U~U9Mi8Pk@m3xrk*f_^*Z}-Dd0$1YAEr&s??3|ZEoJ*B-C`8oAYkYY1UU|#m?%pvG)c0t+)BHUmT&zVokJX zo4@s~e<5cRQ(6P;feUqH|1Y2^AB{VAPu-r##F`&mfyfY)F>sJr4L@r*6T?E;__wyP zq%zD9mNkFB<9&<>wGFgs=z)IyPxn6}hL>aPI7sq4-hKI!kRLGQ%JY4s+Ju^YTYOg9 zO;nclYBx8S{2QUlUcIFT%=TER5my+Fx48MeY$#PD>S=F2jt{tKdCAz=Zq(;iFGJhx z9$tBqtwFJ5N(gAQWCmi26Pq_b_XWfD40dgbMvt;w&vb8DkZl3H?F8f`E?n!#2Im+B_jmmr!jA5CF+bB3lvdpcS8Q0sHt;Am=ex?Z_is?@P29sA52sEHSV{p;TW;RbPvt0C%s3C8~!br5?qHv zOxGh6SpJ3S0o5o%8omG}-(Qjcr&tk0mfY5pZO9DUpT}Ija3rhaZKid>e0r-}E521L z_u5AhZ=8xsnIU98O(t9x&$n9;+u%^d1l*r|EGX8)FgT8R)F_xH@ee(vq8EZ43J5IS ztdT4-hnxVr(Ip)J%~{3SB*vG`XBXLER(B*dA#VNAM9p_X>NmmZ{uoQ{=k=u0eR=lx zNN@iU9o|Eg-BA<=Ioz4R*LqX~am_g!-~zKGro(OEZCLB5S?AaY5%G-2cu+2~MO*hS znD-^(!whg0Q4xV@|3z2_-upbr4KOr#Fq^a-x!Lr;V($o9@gL@=8K<~}JI@N5oDJYnZ);shr~wNEf1^;;Y|M$gUS9Kx=RxS;#~ zqugUP5Pv~dM8HFDN2mP@x9sOYLi&L{cjY-Z@sz>hwu8DnJ(MOev4q&|FFy7?&md03^;IE51i&aI25q< z(Ehs1Pj0(E!hA=BhIHls9O}$|eZ@S<{-QYDcz(PD^pNjX>~=NTM*G?L?{tG$ktNii z(THgW;RJ~U_7hSUv;;zTEe$40?;rhqoYr+Rqfv#J*|ApsDw8UpHwJ zfCL;U8zYubP2oT>6)Ks|+4k<%@Tb1XqBx+TPD#@p;awpyl=a4?HjY4v)YkWa*R|Zd zBSY~L68TfU$7LSIjrh?K#`Ly0pD=8@!Wee-z4IQ}5{I43cZ|~n2=M4}T3>CLX_No@ z;lLRzFd`ILUuyd^z@NrDsqPla6iuCP_9g%|Y3{ab?ve<-x>#$6@3_MdZo>&cZ4jwz z+lm9-pS=T}Lt^YcqZef^y9ESzTSxir1c9WrswW*zFZio24{rH4gFWByprD}c$E4s!`EWuPqL@U^5^c=J4d<}oe$Uw=|NeAy|G;E6!Rtfi0Ab)P9qYHM6tqXLap`!m2ff%?POGhuksu<3^T2&Ky#o#{{7V zT5k^t^GLZGqyQaeKgGT);~EU1swP@ho{wYeu?KB8j#Gn^r)(OzhzQk_EfUDJ*W=3d zc^Dllv1SEK#*Ss)p|?@sadk^9VK_vH`=8md2GDy_&)~4VmhW?Bt#)$W%JU_`0!fCx zxKVMKKTHZtjh7re*eb+I|HqJ{M zVIxU|M<)y%&&Vdab$2HrJft5Rp9=TvWF15AI$~LjXe%CjL4Y3x(}1o8>~a{_@Rysv zz=M;%`Uu}5kYT-m0j!vZA%u5TAYbHwZyeaS?8Mf0q}6%yUc;910-#_%j-Z$P5sjdw z1z@M4{;(~4FC*6&1D!Eu@*-UB;T5D<2*yyHa*Uge_Oh%|x9B>2OEfvZ=OLWd@cCqX zUwcxu;>}Wa`if9`D1Ozu1laF|&=Elzr6UwEBW^f_5rYvWm_tF^L&Z@i{OzBRr#IkO zgX73mII~h&cih1Ve3%FqGjSp;M}Li8)l}<8Vz>dsXHGm0+p0r87~lsfS^1T^Yt%;8 z{WE-I8W-|GmRF`shwd4dQ4wE7Gx$OV1hT9iPlh^-uYc>0yB(_lcC~unwx!g)Pn2wJ zGPgdhvSJGRo&eLLfUWY_qZ5HIH(c%z4(-=FO?kgNr*&?QH?@ug)MJkp0#M{kl6l)E z*d@7U(Ae^V(WU8--q-dXGg*3wv%YPCx2~rFp6c(EUCznWaf2TG0e|5hVR3 z9^6*sVH%bw4@P?0{%9V}cT*+jBB~v{TP!Av(@EEA#L`;7wUJjV03cc?4Vc?QU>$(2UTc}P2=J^j?b5{~9 zp~UHavUiW5$+P=@jn`$CcUjGn?Bv-N-+QvU@TsS2u;m^=-?97dj@Q^$h8w~mqX{2b zU^XnMZ}EJWI>lUSJvE~P%CtIWFy-WP7%>;gxDftxX5pvwK~X%i6BK&)ctHW@0G;OB zYN=Qc>j6Mme1_~fo85l#@?@6*ztu+M_xxmFt^l_yAhEIY5FR#mnW99d+{47DKa5}W z4D^MSqnCYVzd~l(d%yo(6%9V8PB8z8^41#nR=U6g^E^53SHwRs=Tg1WxxBd;MCm?P z?1Q&O)An4(h89)-ddQVw>6R}c$Oq^AMl5`IC9zUk0BNLf9&ZSEy#6IjB!V_iV0MS~ zz!b~&k)L+L`!HV5O&Pda&$rA8_P(H1iZ`J5wj+Of>v1JT!RSay{Cmi!Vvh%!RnLTb zcVA}jXCcPhhY0x0keX-KEDAnGpiF!yBX_p9bqa#db$+4X%h2q__Q>m@((E?a2>iLD z8>9a`U;=-Bfs$ZN#Ss6b!yhRei&ci|?ZeyL1{>Glpn-xrE(Pkf) zxyz7I4ZE$!9RP+*O}N;v8GXF_RG;tVkEA%b-FM#|0%^oj3lqrsNcdQZG%?YnMT7G` zAEB4G66lr(T-n;HUU&k|3zOyU^%e$&kL-1NE8H zlg1D0gyD2kPN{8fWt#Q!?%iTY;*|L6!Zq)XM-__)~4@oHG`$hOGHLVN8M)}ae+rYuMCdqV5U4=-vZ39`AwOyEyMjAm0f{;b z$Yi!tP}Av)Ff+3$c~2W6wtO@oTyM<4{zABVT3hpiE4V}vz^k!w0?}ck3%e-#agd;rqN0SG?Y0+H}hsPR{*%WEniS zDF$n6!LQTXeDkC^>Dk{#;J&^9oK=ZflU-kqcc?qNyd2463kVdso)s8sr5V-Q$Ov0Z zIf$wm%Puvy6R(Tnn1I{2%_NCq!?K@}eI&tLW+~K)Z6YlmJJVncgwi(@j2=4PTo&mP z33*zQc&=AGw026JkjityVV6njaCpAgu3sUuHnwu7wPh9*Re#9{emapKovtVJ)NY-q zmYYoAfxb5VyPenlE(E{r$b;MRgrZsJK(#-s9!na20XP2_UVZ)Nn&8Py$tz3O?`Jxu zG^8~_W9TWtFG3Jz@2}-V+?w7xL&Z{wMT}gFow|mbt)52OQvuG1&`TE;6F#c%GmhCV zJe%5a#EBV4h!=HT* zPwiG5Lyb)}!P5rG=ZPE$LBJkb{Jen9069Qv%Ns40&*ji^avgUNgTF_ZzeDMZnDRv% z_I54=#r$gyMvU%vco>)nr@!*xpI3R=h_zhKqDI1Wq-1@jvw^>b?AA)b_GlpXJJ(2{ z$TeIFNrDLa2LfKl-E0Cj9p6HLxQ`YcZ|kQ9al(@n-^4_jAmo%xSUWUn4Zy><0cEMzTOWv(E5(K_AevI`u&oGjQHyvbAmG zNe>FnZ#=^y;-czNZ;X3QV}ZwV{qmRZB3&NGxjwreWIQm8VAkk$aLEy-0fzEZ_{?X?)zF{!xHHg=5%YB_P=oUi-s1Xe&O7eN@CQ>Pk)a|U( zQr&QPQL4HdB8MWELKl&zM4QBV)hl)-KE8V@%^v^Y~Fe zPIs}%gcJTnpJru05TRXYv%fI-jhFeh)jM{QpQ5a`kepuq(xwxYMhq**uCn7dmtoPT zu=UeQOANhZ&=-dcPBr;QJiF*g0}xMRW5Uf0lsU}kbxjiLsE_W6)-+< z{*3275tDOWRS+>hudYO)=TJ3l^~w5|c12{XHSYTq{t4EqxB!R?rngiQt&?cScwkizzzgF-5vGTB>7Byh|Bgz9ll+4h>RZS_mD zdRK%Y0$Xs^|2iKZA(6s+GGa*C9KKgt#JM>g63S)ephJ(!yxF^x^iNTO7z_OxrNJGMNy2WDN_AzVcy&A|oeK|kPTz#WnLZVQ#z2+~i z)bPNK^e+;9{NQ`+_DSkewUeIKTo%+feDN1^F)|X=N$OsnkzrqIe?f=gdX)U(rj!dml;J$)uSK0E{<4VDBFtuKk0AwjY{z0E2?oHyN($n0Ss}d!KeSiU^}a#045u)VSW-Yz+VgqBQ6 zcx?&m#JF=YRkBe| z`57#LIKIJORvAdqTtLK za<&bMDiI^Zk_ghuGGA-11T-Oi_GNI}lT<7z3Y$ENL zye)z5$^JY1HBgow8~4Bw1CrI=_n-!B%X;tLxlpZ-Lye-DG*2|g4TT_wPuABEY+cXA3a{&cWs>>zc$SZfS~{VXLCdzErOpV$0e^o!G_`>4Mm>~TVCLG?Z*1a670 zp(3d=13huiSSoyR9kO7uh6ERzIWu`kj#6Ex6Tu} zG2~pO*>dk)tZ|4$IZ~C+wkzS#mWFQgB^~~OVOU6c>g-8brn;|x{J+|kz_cxIEBnK- zkg*i85OF5b4Vg0GSjT>sb0)8>k{-Fz4J{en%D?ndT*s{IvaK1kc$AGw7gW2O;WBR- zaU1Bgkvb}Goh;XnOiXAiS!{j0OG1d41|woI5OT%Omo`%a)*I@TZYz?VXe1nui2%#! zPBL8<-n%u6y=N!XZKWt5y}r!9I)^Fa%ufIEDbztUGos<^e2c+Z$zI6065-QhKV>A` z*yG|C>G^bHJ>}k@adA-){_@h_qUXMDQ@5wJkia6YbF5s4z!q;UOO~gT{_9X$>R-;H za22J!hF(TK;!lxUArqTkE*}bssJ&tQm^QksrI{icBkgXOTyCpg zQ_pI8eFWSs<6$82IYBqz5A9-6Ty2B`0Z-TI7O~aUQJzo)hZ{wMLC*}E65h=V%0%_& zDhpMiyy{A{$luKgJg@zs+oLH#8j%Je30_>VcX2~JZp2dcgKXZVaLe83W?w%2g|>%hF$|C&MU0(y2B2_yusN*J@m#h{LN-%`H@tPX7X7f(8qvjNhU z`zG1trh;8sBK`4clmN&F%p}YrbLWwUQ4AgRMCD{=EAPvqaw-0tZinFl zmFZcn8PRO7eWL5<8sA-l9gXB>jjzR>D<01!XV7*_@a-NYPX7b*D;&DpqcoX7bIqcO z09^E_;&lvYIvMnVa_@N*ANg1aY6C`L2Ts}QH9rb6DMPL90x$s!m$3DHhrl$4Mb~PV z6PcXegXGt*SLnp8xZDRMKx}dI0;6X($#>A*YhP0@48=r<=&7|f!%a7*Igz-hHB}l*PV;^D!+e<0I;n@Hzign%PmJvGd+ojmJ}NCrJo5awT!I8;y0==igVWsaOw<$c2XQkJY$#dBZ9c3k~bMaoE839(-gwM}{GlPbZieMcU zkc%=X=OyM8R`P`P1y#QyQgIH8wJhqWLqjVnS3#kzQ&{;LJiT(IGzhOAd*MYTq~x3n=J#uQdaF4F3eR!+ z10O1(LZ=MD)Swxdz^Sn&JTo=Am-yNb6IG{}BLYqK{flgsC9yMK7P{NGQaQFWo+ZwQ zEQ6T5Y@n-Cy2*S-XFk&`T+^>M>vu{KlBX%oG_$yTWnL~qtH4GuvD0_-wc1>aZrV{! z2WvSbozI#9qa)RL@d9maQqKn&zKKHN+9=jr(EF5?7Mqpsf&0!hFz_aw2ziH)m(ZO6 zVc7S%x%uRhn3^VM=i=%@nnK&&`;M8p6?!6jPIw}Ufd6FAtU)bdJ?Jk`T z^oCsPPy^vjviOx~4F%>2QIj2DQ+a$0^gQ`SPpqNx4}AKxlslx18<-^GmQo=mN3+fa zyyvtsSJB$%7a@@*o?gio47cLW+OF{l_Tt2_QNx2|KJ^3hI-xJ^Vx}LT zh-Niz_!++hW^ChIeVnCt?#8jTUGQqQUYK2bdl0XADZgV@rX1)URXC?R3^XAwB_Lxc zc2ORM;vj2^p~TW5d}+^Ybs7h}{(7DF$1eg8 z0r#AnGW=f_`O-Pj6@u+r@BT4~w=|0x|5VvDxDpL0w>*Vlk%xSKClstMtF6dwt ztc+zSUi7o8tvRReTyO%KyDK3O`<0~0Nw|3bAm4TbkCrfUvQ#I+Xn7fe9 zJ=2!hX{*7C zw&?Qr%l{NQ^=NZbiDpOO?@evrKz?qN+nzuFhUE+u%I;DZ^d;cT4~$022sDZc%60WonSa^`>Sb&VFh#s3N2dfOC}_!PuV=b5G%yPrb$xUr@Bq&wq6{!Kj>cf zwsn}!gD$H`z2ZCRdYH^~rRwEyoclwHsnF?6eAJ0DG7$@a-~Lm0`pbvh6i#0REQSOk z6hJ8{{IA4?Q-|9jpN~0gr8*X-TR%yS5CfwGaWOL~fT|-Ee}RMKXrmelAKc6A$YM)! zffd6p0e5s_kzr|d@e5s1QZ|6WxNw=$KyzS&{zI$D{~A`?(1|mdP80F@bV*|t93Edp zqAn3_Mp0`2`}-)MYsbIZ>^EKc4E=pd|>qpEBh$1 za6says67?Ii~iq7eH;0lS$1#HF7i2glI5e$CpPBCdR!bh(Y4_I}>;pis0%g!-Kiw#%&A>Fb8X|E=K_Hr=zx z$~=>Fw@d0%Y>q3IMwKV~*`zE-+v|k}Iy=t4HvDeMGrDc}SN%8_;)o#f@qf(hJsiC$ z6U|2{3~xs;B?Cb4PF$To3Q9X(-m#@aJDiOY=4$Fb*L}ELp;^>%KIl$wRvxG${;H~V zRNY0pY7P!9ZP(v7o=mb=)^ zK1*ojqG*S*N;&CSEJK=)7)HLLvWIOqI^a<+wJ~~H{i0(gmd#T7T6=vjMc7tfH*<`o z`=oHCL6zlYv^u#6Gx5H&=%GhrWte)yvRwd_QI%Set`@Zk0Tzv9?X74LPC9Q$n6kp0IXGZ$*32~kcZkRm zoNkVr#6-I@Y<~)JE%BEJ`7=(6X_j~s$O$In8yAfEQEdP;Ty$q3=}08zcHdyam3%r6 zT02kxQmHTj%F3YtfbSO`zj!9?R^rBtBjkj$>Cf z@_r{bRcZ-G3rwLL^+}{48V$upNJ)ZP))J_Y{yssy+KRB2AT$)zHCl`Z&7yfKs4_G_ zbQLp{iuT_QA8nP_>@^>(=aE;(iLt9|aWU!eD1?SVURB;h#1YjI>2BzgsNhxsEJYZ4 zKWdC8v?P7Rx>$?m(^j<%viib&Q^LW>MnLs%)@>AN>bPOUQfQ^jo0}fzXA*`II6sep zMmye*$6K$)>dozJuj8WBxW)R&6~ufUC5w=xDkyR=k$0acj%|o+B}OQif{3W*)Gx}9$L}AT!>BLaot(RP zQ`xu=C{iIyG$wriibG`QhqcE7Vj48y%SV=gdTx=tw@k*pVSB`mK)m_705JT}u+(s}QR>y# z?u=-nNz;Zfe^v<`}pUd5u4IyAp0;FtC`}$D8YZR1; zw=6@2d#U3$q?_XO8%9tI;RP!rwUymc{vB(K`ioKwMw2Mxj~5KQW#oz#SlGQsxH*kr z(8FL;p-oJvJ#lqts_AW&`6oR%KX zh+y}wG@_f@+QM3}*oct_LAtegf`?~~RSGU<>M|9|K{nB3N#kJx!Su;!KjEw=8UFg< zB?DjP>|AG8LC7it+b5TS_}o7vX?+$|;^%ua?Sk|oqXT=#@u=firYXhkcLvCWIdS5_ z=tq+XazG>IcQy{(u=Djz-`>fC3h^^oik=Z=0?8NC z$QIyC%WBHOl$q4SP0CbrIz_AXftqP<;IfT@s#Ns^Bq?|BXDo&pL~~Y;|1d6;F6=Bg zG^0*6j*jUhXOY)+#h;s7@d2*O00gj6>L?XwE?lb?y;QxR`sZg1i+UUh9Ja7%F?2Bz z*};qq9?KF&>})ED@Vk1Z`FP|JR;7%EdE}hEQ>u&Pza9l0W*m!rTwlrWZ2IRXPo$gB zO3fe)ti*dn>LoF;g!ZH(!_?wPq!bd_+HU^aQ7SN(L+ZqgzmVMP*3{cbE|ZMC1{eZ; z@O(&7%;X^hX8s)T(Y9K%sd{ zCh+kCX>N}f4{e<~KvO(C{fQh}RStT(^junlSgNc~Dgmx7voM-70a4KVMx+j=vK;T-x4jHzC(tlhrfX>19Oo zZ>8HWyOZSw{)O;vY5ny0aFhJ{dZN;FEPhZ=rq`kSOSnr?1G0)^fI-e{4R7mE5Axjr zK~Q)|Y`X)&)+(=$lbm}Xf^IFrSR%nt$1QLZ?$XGV?YfqE}M? z<$f!p0MOLT4r_PFZPt)1fVyC_tIv3dBcz2zot8XNBFqiks{%$NH#<0o;CJP@yKJ6U z#1e8kL6EJ_NA?N`Ja9GMeE<*#^^`+ zz*(;3KRy{eMEU9=-=Sl_#b&miM*MDIMO{KQp)I;E@qH zyBzmkwPn=2Nxe(D*A4q@|Jv$|l|7d|QCL<{nm%~!_=2fp7H>|F&)Xl7Ew-x2@%IUf z@%Z^O1}q&q@ZN6j0V#!#jM;U(*Oa8pH46qz&g(X@cYe+AzI|#ueabgKasAoNs}!3= z`v^pP&?c3zIK3DqWW0B*%L&0Nb(GXdtwIgA=Ks}dU2%Jbn5Mm2TpLm?ZZQ)~m2qs0 zInk0BC~*V!nusYZ+I43dnngxKs)MMhvjzkJ8Mo1(QvE_2I=h@HKTCt-78;KG2%6}f zkmE|>R2sVDsnURPzMTq` zZHV+yb_;vlLKHonKm`*)Pbz4qC9Iv6@DN)3n~QgbVfjTc4F3;wnEoH=u>3#JVf%le zBkKQ5$N!B4|1PaJkxCksv(D+xAJxT*$;qQ2M=MzmUfsKkoBsf8*A%coYOp`1?XSn64jnSoJ}x1dkYKAzl+9+^Fy z$@ch|D0)t$$)HtJYEWm~*{Jj)Ne)loBo5Y_Lib6fTbfkzJXRe}&gsdum(ya_v_j1a zzjXedSm&TLb?w_T<}7&R%I3y7I!*T?$Lh1w7s~I;A39a5AM3risC-513&m?&Mx>6d zng8L8;XF6{+wNVk^y47QoQbF9HOr3d`52EsHlzOC!)NACd+m@rs)jxO z_9q3+5AK$KdwA0_ZvVxjD<14SRIw+rh4wfF=dzEI^}utLtOu<+wP_*ZjKmU`hDCIH z)`KIG#ML2@rf-CXkiMvpa_gJ39&iVtDb-(i%bl|xiY#(1A-1TWVh{g?&`9s_^b{gW z5jfbh1?E~3aYLZ>2++|kw43{n{Dt1pQ4}Y{Q=Ovh(RQm@9}ZX}Nu(x_YXQ8k--fsO z6NcBBNF*@?FCYcf?RZ7;u6SMPDam)k``~SOkAH+vjdxUbdNL=f+7U}wRAE)YeR6a4Y4f>?#2%hKJL{7um)+dB=13w8PZa4#>-AJr>Ka$71{SSfYL{mS2S+px@)@9Ot@~K=syH4rA+y_S76#=7kkcZxnljMX)855I^Ll)o9}aozHaN}l=L(!aE(?B;U}IJY97`yi zCAYyjE`LBG&{du8~XflunEPhxk6!{H-)hNG1&w@~-)~1}&pqvyO z0>&?)Azxc=`Py*zyG?h$+j952ZFj#r>TY-6@kYN?yy0MZO_64!lwQ+;q65XFOd7$) z$Hh|H%Mql(UIfu0PY>$C2w2TmD<|10A*Ved&6$vC&om`x(sL|QoSryrOSTCSCVC20 zh-K_boPyIFJf(`oS>$A1L-&NSZme;(p%J6x3$ncT!-W?&Oxl(zRQ8j== z>IJXWZ4id_7+exvp0}y=ky-M)zmcDor+;>27nU9!H+nVhJo@?mH`dI%v2M_k{_{V7 z_=z3JKkt0D;-j;9AENl^Fy3L_A;CT>jVhdoJWb+Bl6olhp8}3ou(>MC-&_?Fjd7Q( z3|DGOlEWS!ofDITqi_`6$WPJv_cvLelp?odDb5PTF8u@1s-UCwisdV&+}v7I6;`WQnDtW+J*siN!`?~BX#fI1(-7=iy#tQqq=fii zj^p?bi00p1N%1VdAz)sl2beW5%cf#jq>ivqi+b}|)FF6u${dB@`A~(>5N{b$iD86C zDxMx}DGj9>k7`DWMsq8g*iIBt4#Z07snliY)HSwiC_;bS#>S=Sf)IR-e@D1k(F6|V zKttLP7zW0g;!@p;%dZteF16g{Qo}EYYWn3+Ex#P9?UzH1`lV2R5x{``iKbISCx&ic zhfWIhZaB0PYxpewNmes&qj|aZ>U1&W#KMrGeZXTi>e+#&^dJh!e_&zPK*^Xf_--e+ z()U$e7k9U`y1L9<_(`_b*UO(ZdffRrT=FDO*Zgc&Ynst^kk95A9s=Gc{O6;4*nF7#H#Z4QLBJ$}=H8-kIP`O-mL`E>GYD0HyMqC}rQcD@&{9 znJ|k4Y&d0m(fVsoZ>pcttEtc0Yulc$p6cbMIec4-S1vl%Bwtu?yg7l4E?v~Pi#9`6 zEYDp#@fq42Ido+n`DA>VFS`FzI0IjyO_DAB$Y1&?`Bc`ArL5g4RK`atItbR(`~!(` zY%@@)he{24#{Tjk<{7IxYTD|2*Gq5f;4)&I5D)4ypdQunuDj9JoJDDik7k>R0onrI za{wXJF&)!(w@W*sjqaEHQreEUA@sl-X^F9HGg2Wgt=+>8prjtQx+Cf`?tblUP2i^AT zphx{W=<&Y>I=JI^x$?HcKfgY-VoaR~8rKFVS<8G?rJqibL6)hnQP#)ni0Y)cC?X0b z%wr=>eA8+eB#5XX&}_&2iQ78vEH>J6XOw7Bl)rykv>*#gyi5PI?tj@ot-DMAbc7Wn zh~pC@f-T74U0Sduw11jNH#Jaq&_BIz-2FMU19>@ZpssvnbKmv`Y8CQ*_xY9$fez}K ze{LNTY@kL#-YV-S$XmLH-3)QSQm-b!*gzzk9N?>pjfvX3u-n<|UrQZaZ0Yb~!>@sC z`ZbU(zXr1H*FcW?<&b|N(7;O2LJX3^9bGh`7)wJtBKU=_EYyl%Zb<{Lui6DV74P|u`#y9$V67+k(_AI+FWUv zru71crv{6Rgd7h}QI6&`3DijNIX7I~1d76ex}bcTOEO@!Xy?F}PsB)owXOz- zNX=J=skEFZlA*M%!N!hIM?;YV2>TDEAda*)Huhn77~58z4Zp&YRYx=$xc%T*AsDkb?7!F4QWj#6Vr7VAK|~?-WKghPoGtxS8?n-P>exxCeg$L zDX~}$90aWn$`i?vOUub2dgb2E?o;h~*ppZCT8h^;&c%PxV?+K-N9;X^x_S3@gFCbN zuecLp1M6X+&qu;EEkdeU8UJAat~-bN`a2m|gQx%5Dw4lxhH5qL#LSVSr_Qb#Ii;*P zuSaoF{yn{goi#HWMvt6cUz=alFCSiP-xF8yU-6=F3`NpP8wkNg0xN6;tvMOWYEI}8 z{}EPNXv2<9jl_|(6*rM?TGFjbhjLa4%SF3&m@7;jkdj!ClF==q)Z9>!)@yjzbXUG< zVD!EGH!0D!r2Kx9n>uw%D(KTZ^`_@^pqn4X@qhTP2w&yq|H5Z~6qz`u(f{m^5`0yv z_=WeCn8en=GeZ`0NAcI}tUl!&yU+vV{Ld>fJM&B)w@9SreA=eU{zZ#YxuX&FSZr#P zf0&1Eg>lQXY5Xv7;B0sN74OPE6_)#ky2TegFq>fQD|e+KQLzC>?iNI}Mb(+YDV zzR0wdkvmV1cktS113Exu=V4kE{p4`4lp7$bMDuYgtLqnELnnuC13sgGjGUOH;zu?d$vFGCYO|wZNd@YjS&rg zU58;7iu`#{|8vNMo1S_?&3=UP__15R808JuYPCkKkv$8Ap5@_?93J*86t}}fA5??M zx~16_+45W~zFyg~{9HkjRx?5VhReEeVIb+{dlRRuO*AZ&-vIdKZI=WB_C5uT_Ev$V z(&B)8=Q^SsrW=CB|Hb$DQYaA11_lMY*pJ%U@UElUBKFoEjgt$RqddnYn85 zBcJ~LpkcQVx6AzM7+m}39dmOh2vh#`ZN=Ex761M=zt)3os4b>q{HzLaHWR8U%9LJ! zSIGt8Fgr6dl6J`(==oViYTAqj%xq8&os~qw9%QFc2|V26{~OU0@*`D|wg}*{i8UC| zCj~f+j$FIdfjNhbwhqRy?rD#M!{;l%Aeyhp$nzp!(Q^LlmP%gy3%Nj+mX-Nh$h{}! z2J)$I8>#hW;WcM`&r`XhAxr^Z;P=UxC+9Cyhh<{48|{3-jrZwGIZIF2C&r`hXq>k$ z!36$`-Ap(kn$GYiNlY>twY1ih@((V4I%uo&0%~u9_4h9f7dsRXnM*lPX$HX4QUd+J6zyZWS003g<3%vk%+GAj3VBpC7dk#o4 z{4@M#&K|^&!XV0k3_bt=iOB|R0001Z+HI3TNK{c2hW~r-c~4goBFL;lLR?4-32`BA z2D2e71{V^8v>0S~ErvlP28lt2!G#PVB1D8lM2HL`;>th*5eac2E@Frh7a}5vL`X=; zyZ!e~)*voE{`1ax_q}t^f3H48enO+_J1eWm$Sf+}0JRet^9332DW8YA?t<)x>yl=^f{Z_ftT)2?8kS_@znV+5o3GgL zQdp55Z2Jp1Gdp&|Y+*wJd#+>lvo2zfnv_-ym^S-Ra_U&J{O2SFO`giwyhBFEZL8d} zi;~Bn`sN5v%t|fxt4O%KjB;-UdmvLt>mNv%Uc_{OG1jtX5`i~{3G>FTnb)?%XqS=5&d(8bKdx1)^7bH4#Uux00k^P!%| zhdR6jQdd4)hkfl+%g&2>A}{Eb41~40-+&*d2l<*0_0)X$59gox=fic}85_l2=S4lv z3n|+Jr;(S(Sn}79j{3@}b$P41s44RiXcz~sRKK8C-$`E$oKXwZXRPr)Tw$t+H!P!H zb)p!tY3FqwMTcp$({w zoCW>>)uIZ&0001Z+GAi~(1F4Th6aWQjA@MTm@=4Jm{u`eV&-GEVvb|3VxGpliTMYM z97_z#HkNO!ZmcU`^GN7Zo?kJzKSD`V;aXRP9x4d&Uu{2xJ0<@xFWbZ zxVCX!dgvbn$SE4SWvqX=HiHJFgwTP_|XA{>D z?+`x)gx@4WB-TiBNrp(aNPd$lka{N_C*3B!Li&h|gG`i6pUf>;G1)xX335Dgc5)GN zU2x@x);bWiF2(bLmQ(wn89qQA_5#~{jJg~1QQS4L7sGmNv08;qZsWSLAb z*<

      ;UC%6>j)Cor}#%kA3=q=3fzcza6LgnXaKH$h1fu%O~n%O z98$Hqa1Jj|E{}nommrK!9 zld#QC|6Sj(^&qPxMprHV0o~iw;c&>+8$waUqEHPgrQPP?x$=|}La(8OBbf>Zm}*DY;8_nhvhgOuKhldO4!>C zGu^iy$0*c#73!27)KH-IDU!jH?KZP3=fD_eU~2C7VLm>gHW`Q#%F2STVj{Tva!`K) z^&2G<4y`H(G??|Aw7WWPF0yRXwMO_>5TQt zarv@g4O~zO^o#q&DarlIwN&`RgEF(z z4~VdUA0_L|?#Z*j>(Jlt&X=sN{P}}xKZ)9qS#0sZOHeN&V?DI}8UG9h#a|gZp*eRn zWJEGH*zUxW*7CgyQ!^D)lLa9&npuiXEK2Cl9>3Ac;Vwe$8 zodB2#hscJ&JLw2cIJVmKQEY_9b#4eH+mE)0Ko?(8A74>mps&9d79VC{HRVrXtWk|J zmn=oeH2Q30&f3;aZw+cA%FcBPak*u<$IHvd5}pU14H*`di7^@z!Kn9k;$>&$=a8C} zz4MrwWxV6n4^;G$%=-`O!h4RaM(j>MGXacmAdy{3@>T5{yWMEoy6X~v9LBTffawf( zv=>ZloeI-HnO~FU5MdE!DEbu;o&H){b1kLHZz>}(GXeR}1-!u1Rz5(*e#8WnospG0WD|CRqaN}g20(&T`4R8UZ z$Sz&U0o+YjgMxM#Iwvk=WkY0j7Zz_mx!<>Svnb*pnX(5$06mqL1XI^6TOO$t&k)+8 zg~>jgyJb_-MOv+OA?982GJ!Rn-6(|SzV^vJq#U6oUH~Q(|6zjq2^KE_3g>|GP$4VQ z@}OA*nU+B)&bWj`LU#$ZCci%tqWpuiosuhDj~j3o?P4dxTX^dj(nz2uYsbcVVna$> z#Fkt7yQW{OK^G72QUJuD4qc26ldLQlWM4bCut0{SWEAr#e_BdZCXm_^Z*NVBWaN8O z7LiV9#`0eQAsEtQp!WT-td2tGrE}q#kk_tQ*x7G9;~=t?DBDIbxfFu+noTz@Ym}gU z{a;U~6eO5{Ye&Y0CgP;SdV;e(yBen437yH<%gt^IE536ddzNVR)V#kbK6dzz*X)i0 zLM48FM8f<4nm;;Pov^fsFgPGUv&WFYh^Xa75yZmU#6PMs%2O-MdyBtp6G&4CPWiX@bksEkbh()oRA+f z^8rB7MdnlHVnXh3StZhMp?ld5FMiBl-`G`%U#fw@rp}DRwcEAwXK@60nco#@5u63i z)l;lgR}6zCp*VTSl!iaWGV6a_xqi)YyQLEp9Vj|`U77e+&Rfs`*S zE_0!Z+Z!6f^LE*!dc)ZzCD~ea(O1@`SxXL~ec5&po0Ud~u!rbw9VqlvjQC_6@5MLA zUjUVlt4=OA58p}ZCKdw(Z9er@F)BzFI-}7BlddwHPQ`-c;Pe_0Zz0Ztd1Yfy#_@cU zu^oLO*t#Tmh%^Z+64W3C?H}SAV8oc3aAMzXcl!KkA*-xe%NWjw2zm0;D) zdJq)|P#&yYz^}y2FhS;kZUN4dv+!1$ErEPuIl|Ky$^JBfZXm=*rl>BEMPWF9VU_rh ziImu<*ZB%_U5R2=9zKW*jDd#LrY_SFhi8b=(Ycjd{sk+j9Hu=4iYRI{yR}GI0)e{H zXZ^!uwJOGjCO?+ej84pK?Kq*uQ30nLclDQ1aWwiMWk0{AjhEzQLtnf2DQfjv8}lWY}JNM9XpG?<8&a#!gv- zM;)y>0+MD36wn&-9d%8&8|GY`L7G_+$6@Zn2KF;bB+VZwpC-@#!g$y9{YRsTwlIYO zPM}Av(veLJGi^*6Xaf}%Sh5<%T%Ck4F|PTq04(FQ*F_?#W+upBTC$?mC&&g zIqAn75XM!6OG=#dqa%bd=@_5^CI(d_Nc%|wbXIXLRMF>Y!IDfsK=VNnqgfY>*2F;( zu)u9qxYs-kjGQ9y5T4EegE8HSt#sHC+0;DK;iT<#LpqfTHE&m877g@2vR&w|%A8JZ z5)?h}MtCsSelxs;;J6Sb)Jd>`T5T-@ySNwx&8 za{MJzOyI2h!RVBHk?7T9%y_nkvW0AJ3Z2J<@)0+?q&l5CRg|ODZINb4Uijlc+%_H-pMQYNn^KR>k)&8TSfTYT9i&);Cy zzbo=gEr0~26}c*1{pmHA`R&(3Rpx+RCJp!ZCtkK!k%0BxqTG~Jw(a;^lw)avwSXGH z(YZ2dcuF!skgRL_qxRDWz2UddhzeB;OUW=CZa@z&ys(tr`eHbtLEvw}!tDJ{kvxuL zos~|v5{EMdZvdR9x4Cp4i2N;bLZct^4s1BvN%J%V@Ad*-RyRxqR)D1J0axG^z9_ZidX;BWeEXil$|zNnBi>KZ zo|TsR?Xi!DRe~M2O@ez-LIX(c=q5>$JMP^2S^DS6CZ@(^A3lG)M(_BMWmsv2uW9`< z#o28q$4it$$XAe#)-H%|#FH=H3*_rbfN64nw3M?J*!o_AS=g}f@OV#(7A<-d+db;c z7TgYI5FZdPMCZh*4UJw_scHKJ3e51{OA35c#eZ7lBPewinD)BJ3|;dQb&wUA8+@I! zjI8;dVQ1qfatU+w2}Bj0=)K@lI$m|D`zLD<-X3qz3MaIG`Ih&UEC2c+nVO-bGbO z*fkisMEJ_JC>}(VqQvfl$Lx)g%qu=QKGZ373wty!p{*(EpMD86?Js)ggx+5IVFhoupOdT8iu*v)9UaF&}nX%W&3tLULu12eDBMC*f(q-n*vBTi?&zjV5fqb4OD=yq5!H;2du5M`VT_) z^S@G=dli65*yP9K%^SIysnaqwF-~?PMiP&*1VW($#nVTO+m$u4232{OzV3>|StfD# zubo*GoW(~AV$|LI=v|!fY8*Xztmn1UX64L6ZSafZrahPcUxZ#u74{}D`5FOufG_UO zBdJ1?264GFNrzd*nCyu>OwHJymGc3ei0XE$&*XrUezcvtO@P=!vi0eV_lf5_vA@6) zx)Ay;{PdNA3i|90W4Bhf6fSEi0BR@)H~iEngL1(pDtop8!%K4ki;0G!4Gmj--R-%# za!V*ajHHv3lZMx^yfA_DqE$ED)D#XHO?zd*H1f^YbUt}^oP^ul{TX#h#pyjWw$!WP zRpy_PA2TR@E!of!VExKk+f+7L1E}4S>apP!hI8nxt{z+(tXcs`*$#AM)m86(l$Fh_ ztV17pvC&it3F=2fg%-6gfnSn6?cX~$b2YkV3ypQLt_OxYAH79oXmu_f$*b+qeXnJh zE2lyiqSP~7o}dRAI$53j8{IUje=7>>`QV?}lBOlCxrGDkitukRzvceTtwAPiU*3Qk zcQ@b4sC)1uyH>g5RZnjuFpyP)quBc%gOT(dYi*3{vV6nk0MIIYsnf~O23`?+w~WM{ zR^O-bM+EF%#-ArYe0j721ibS&h#75Df(Z-L!S&sE-~VunF)mp8o|}84waMqgNR`&> zjl)Uq_>z|QN<-oJXvcZ~xN#x(4)tiF8nOMk*RN}(B5P^MLhf&#^`!<0^7c1OV!r%v zBh3XrVyQUzzhpmpWm}f}Lx^^u(ad~%gU%qgY%GCSIhCu~@50WLg65)|i{1Ie{zOT5 zM1yj!|2nB{`;(uez6o_o%j6)lx$q9doIc3MHlI$t;UC$GGJA;#D9gg__&$d*QmQII z1ogZ-hri*eAfI%N#pu}_#Z2~HVWo=OZy4@s3*lX}-E7iRD`uVhVw)ty)PGt)k&WMZ zc6MUudSr9c;vHVztNUPvm~Zqce^7k>3A|PU%)Ya#`deSk{Mh+%h}&=&8*%IrtPX_E zT$eLR-V9RLI5JAEz)9ZkVdi-S9SjvT{M*2=V{J{KHWsk3Ce|stjjZR?P-s0?dS%A7 z`jW9D;aTPOBD-vgNuN2#Kh z`9G4^em=H8ia56>J&(IFZ0GZT6&7iax{qoP=X<;36ruy=nOhG%Fv)$WbBA!|z2sPT z(x6o+3K#?o3g^7qJeaV+ZlBjJFS!cKQKC%dXaj)K3!)gN-x%#a1X>z+T?#2YkguM! zufS?a#%HSk2u#S~k}HM@!Y*9s7^${?%QD zJLft**N>$!UON1>fh08{tZZ3yAVQY5w7}w@y;J$&(hBJ8W)_L*PPL)c3Mr$XcG29}bBg=h`T_mwy z+%)h4f8EKeg8N@BZB-N*~2U5bD_V?53cF1nQ=^zHIi~rrDPFjLxGdetM1HCET6uq zKI-e^1)sczeVw)j;4O6fg#MhlZ4DhOMBeTj1-+2(J+)n|lKu z%9aLN%~KnQ7l3#o^oWL+-*l*Z^upU2Ibl(juSmCKnA_OyUih-{Sm1cI{g9K!8IW-3 zOOOv={1)0CriA3NwNnt8t$k6Pv}VnhozM7LeVARZl{r8n>{qV=Zv-B5;WEM1g z3Z*D1PtC~9x+%`UJ-;2~)~tEAd^8j*eC9jM;o8I3oLb}2+~sZT@~nv4Ab=Eva}|O< zR-pFI(7WUQ>2xRhzqQiS$~L`3TDL&bjKfk);s!=K#YAr1{%28BOx_2JGyb-t)!00x zhbeeJxSISs(08AsLAf~z+XlbhMe~R6)YA$hXat(xuCtjY4s4jb{S`w_AZvYX3Y?A!D;EJlh+2#{>T2 z3KC2EjOB#Y{KH3RyGhXgG?S;(>>mylH|}O-KKiDk(9v91OQmN6`U3j9Y}VuySPRir zNs#LiNUiQOt2Vc^P>X_ZvjG5~oDJby;#1yB3vpO_$Y!G77IYM7XiulDH8Axfzp^>x zx&T2p?d4feD#8GBu|J-&<|U#1IhD6q&u%26jp7oZZjL~b`eRdJ(eM)d%73#>`Ls2D ziB9TNvwqmhsS{iqk)r4UW?~90;>*Uw!S41#y)=TiIJc5tO>Sp#aG^H@>%I^CCTnrH zxV(^(G`GpZt?-(>36WI)o|?7Na&it z+UNoi`Y1*Xt#pxK8P8hEc5vlhj%5ca-UVFc>c1E~BAn%9So)&wQCi}MMRLue;@ z>4DGTfH2JY+Yab-HXw|-7`M#X=k$b~3Q~@L`8)QZa5NT++Ww8^c0V{rC_qPzUSQ42 z4dHh*dL-ttB?;q4{r35|h9$ihTRY@7bLaD+XYXEn3zM-9=B=e%-nG_P#}78;iyD<= z;W+49Ca4SVygcEC90_Hm9wn&}td?ORKI#?Gk&DO;h$msDU|w~EZT?x6pm5qjd0pb~ zH33GA;*179-jHIR2bYVv-eliT)J`15OxNJDR08$9b6#j`xy$(}tAZyori%{^>(nDe z43wph5~jVw%RiAR!~{< z)vWv){a`VjJ0S><)u@RWZocWT?XHi;93TZu?s$1=#!(A{Dhv!$r+B9A9#e0^6+%Pv z@-Uum)##_Ixs8|7iZ3=dX-aHwUU}XqArETrXZ0k+wYSI8q{N1Pf5CR^OM5m}!qpK_ z-QxFd>v#)2w5XOI$ll~pEc9?M5Dayea@pcdq|0tRc~pLk&Ajc9#Z_>#BiZu9=vI8H z=}2Jo>m(oF@L7y`zl_~A+eHM=vtk%xEF+PEwm=lL|8qP;;(6vh_lN4Bhw*)H$(u*I zf=&{h1z~4weL{8Eqj6-!rYn(KS?>m@%OMkK^%I(wycL${jO%C+EqC!5R`FUM?WUL; z)n{2J<^IgBwZBPked@uKo6{^{6eB^|-ArNUZc8T{YyM5%1%~0p(KI=9+7`^1Hj*@E-Z43f5?aOfobFL-jAmLM18TZ;KAlLUQOCn(nZR2> zcexGlm!sefIc=6^`_T|PZ>9U?_ipvC61;aH?k|(?XD$}3LOp%v+MoJDwovjEIc!`pwzrJR zaW34hszk}FKrZA0j%oGDvW#sQW$m$Epv$HxA^S%VSc5peMgZTHVGT}_)myM zRqzV*W1iJ=yF*2!7dPdJ&zzKykY{yqS>YRLGx6!v8wdW8O*_pk5?*IvfPz3BQPFzV z?iF0MMwf1aPeDM|f@s3nXEl}6|B~+2dXjp>!4F#DJbX(GUk9ZUmyP*kb{C@@-0^$CYcK5Ayp!2fGo3um`fbUh!G-&{8= zx?O6e-=sZMZA?#WsEO@)ryP<7VUzJWt@>O;BPILTEgP5bWZhndT3$UPPv?ZQONvAl ztFsq#FV*Jmqz+n-6>_IqWGFAKw?JE0kxgg4v&x_HpK3__DT)yOwZ$~vUwTyIRvc}u ztR<_gOdMA>KJqcIq4f4R^fpSinU)RF{k-ks-M|t+K4P@6kuv`%ZfwaNg-)3m$V-!> zWU&qjTtbPmoxSSOb8N2GalO}bhvxWVO=%EX_u74%(E5xgBq0auRBPGw{l(|ZC*MU_ zee;ekFRh!WXJp?Qj5Z_|9lladC^THxZ|)1-fR{@}NJ^#@zbMN+9h6_(skh~gEx3KD zZ_mQ3Z9xj`I7rXt3Z41hUPIwZb;5Cs6uNgu2%zPOF_2q6aOZd)00*S`**6|di!hv=i`zfyN-FWzA`5*_5|}fcRmm- z>;&W*+NvZmoH3n0+wQrO`gNnw3}bSACW$$ zO{&+@cjbhO3!XK#_Ze19REUN$?n@8c(H2vLHoXLA&$Jq-$x=Dm$vwZZXB$^BV}q>c>328(pp~mf_o}2&jJ*zDT(*ku~4kweg19&z(PGu%ltgL&h7Jz7qx}{%)3a$ zz0Y@+k1iAkcnfnwA79wO$s=~kZCmP1msP7CfB$=!8PIxEX+|9@n!$|JzhTWRwleAh zsI(cH_iub)J|N<4R^L0EG^?0<;E|F+r)t+w0g?K;pz;`L5>fNxw`t}u=On-6^Cs0= z0r(IWcGLQ0ox_9RbdJJnx8nF(=*%zJB1}9QAZ8^O3jnld*UmM)ledH(=(Pfq8sbcJl+%8)0lBR zN0Qkf;zcqY4xc+GzxZAi08f0+E}OzMnUR&?QPgkg-0b3JdK_!y-R>>=%aFBJSZIm5 za4~a(Zk~sU$4wH^r77rLKv=#LKMD{j)eblR`3m;d(k7hEzU`gtH!v%IAazSejKtvR zuOp7&Uoy$!mYWpYVO2!G?KiW+9yS7(Mv3AEv!s)}1-yH;iFe0*VEw&rg5cBD=RJ1v$He5IT;r6eWd>p)VQ5ZmKb!k z@c`?g$|h$1PR+kSG)5kO4ZNMLZQ*WQ^^lxZr6O-Wy0$J@TPT;ITF}#BPS(e6!cy>e z8~R0J}Cc5R`Hh2@@i=DsFpsWu^zvy zqOU2B6GcW0ohZl zxtBF&$ZS111g{y@qQO%}YsiO;U+izj969$hAL0Ys2uyC4t#N$28Eu=Yv4chLC+*4m z&2r(q=UYFLEPXD%Zf)Io>e8BdNINq8SN+D#UWm!Z#Q3Y!3q=LV4}Y6NHY+Du;kP_l zRjTQ9v(}OQ8KF&|rT5Whf|{Bc@>q{;R~H&`3y~aN9{Lp__?K3FWI5v#WBpWtxg)Z0 z)92O#cQ?+&^B(xWUHS}iyEt z4?xa1%xt}y-bS zj1{Fffn#~mJL9a^V20pa&UnkL`O%-S)-6A)$0JXgy&vef+=nP!sXYv1#|*bKdw$67 z@~G$!ISm!u*bB2&(cT^`%m1QL>E#QQ?l95(Rr%9<6{E;3T>Jh1x;(5Cy30>GlMqDq z>mt7>GpDmbOHyEyPwCn9a27t9G?cS~h)E-oPxILf9yl;}`7=eK|HQv@%m3NRiP$}*hvN1B>l7*x-A zWK>?bty}t7Ma;%-Fb=_bb6;~2ng}PW<}}wYK^ohoV8-`v?#0X08|kf@wps3hPcPC% zb~4+{&2(~`x1hQI$R4$Rv!OA$M~CrL&d&yjCXPBPKG1-3l(0J-#4t7@zY1sbeVM^( z%y96GdMgXjlI)sU?!`PBukC&EobQy0B$^JS+9V&drX~KAl3#j`L zY}KTdL{NY6&L@>NeG9}SpLt?QSkTGZ;dat;q10s-^~<_O@c31ueR7C{r>?$w z_3?^Z-iAb5hwcZ_mKnPNtdJHCmQzy^#N@mFc~93U+)Lv^7}nIRY?KqvG8r23P)|l%CJ( zb9mRKY&@A%Da{KD`*AUMR<`5R%lc>oYc;vk5BK;yJ?hW00SX|5Vg6tSeKeC`H<*qE zv9(+UA#KHst)8-aB(24I+Q%N=aS5C%un zsh2Ww_fF9`MW^E?!lAN{%az;yE0wxveg85v{{%QbI*|b8F)b2rHgT=lf_q`Se3mam zp=zu(hcSzhfXeR4$98E;>Z5soEiehfgI)fq3@Ftk+do5Bscrl@%)b8s#-YcygxJ>JVq&MtsHwL)W(CUGEQ9LuLk?Y*{#Tk8jT|4T3+ztd2A`5P8<3u4$ji>zAfB z;GsuEzA4O6$$3oZz&m4_!! zuJu`zER)6Tnf{T5x?YVTK8!qyvH&H7b-YiO>vR3djDwOlDGr|aJYH8gC?Ir{`74Vi zs^ps72~M?lET8ioC|9y(UCnWLPk+CIlHElp_tubg{=2)bm);kiy`z@PUE*VJv(^W< zwR2nbsM7V@OfEkCSw)&mur{Zj=85|l|0i#L;d11GjB{7lt=xIIM&w&85DPd6a42-J zJu0{^8|{rmU>krD+%#kE~E zdB1F+F}kPyKM4tJ#yTR;Ux8}=OZP^a1nR+~=z>pZbtGx z%PF(rz3Ron*qzdLwk{} zlWMQ(XJAxPiC-Pps|`$?;<5Iab@n)_@1`U1MRFo9s;>ol2+ul-%uIWOhhnZnR@zg+ zI{IWcM`67)H>N%(%Wb^)gq9jhP`1pLlNgYVX7IJ$Y-~5$yfNVGxpebVsW&EV8FG2j{$vZSz$huSZBIq)iJ~$chXwibE44%?$^taa=ngWJV`fR zS^^t9ltMT5azGhdxGj^^=foD&_4KLjSrS!EhawzmAYaNW>CG9OIhyt?WI{d*eBEgA zMj*v9)`b(5*&S3puKt3j&FT)eVXy6}Q!nlH1<$l@6sH#DZn+|1EFhyYrMMFoye1hf zN%@!Q^h4R@N#Px72Ipqaq${h{XJd_ydP}TRmnqMZY<)DKNxUl^eo8O%{MydXBnA5LrJ#$ z7$e646c~9T*B9sF;X8O8w1E$q0`Xi;d%Lk~XiEM95tsIAr`;cI$SFT*j8z8Hezdt~ z1Z{F=lA5m18)tA>3AYDm+Y4(pYJpnLw2^m;PD_u5A6Sq)tlz4By9>0eW^>q!`zQK& zs=-RkIB>B$6~BTIK6~9^!L>!Wu{ej1!|WpUw#@KMdXf>mdH6;A(fVA1nVfvrz_3(* z+kZwk(LcKxti22PcdXq@*`u5Vvn}Y@j42CTz3*aw73cZvjtb>fwcS;%3!u_)xYT}I z$H5l)`6ls2>I)30oK-R+tCL77+Y-oL5lE3Vy^cx z)p$rCz8jqEF7<)!xK;`+$>s{;m^4ncdN7L z@5cS?8S~JNVa(gS(l!H&Gc_fzV^WF;%lSZvt}(LJvR;}LIupaTFsu|XYfo>h70F_J zZE+j@u&2eQEO^mzAYuc-+?XIl7XI|&kgVt=2u<#4++X*6fWf}N^~ZHnMba9lZpuw7 z$>YtP8y<3Fl2UpAF>kay$#0j&;2y7q3sJT^eM1~B8y zLv<&o)ud(35c5HABQflAgsMUyy-)?D!g}zV%Jozj07tPsVxO0Kxtxo3iiB=&WmBxS z@{c7Qu{+(|RN>UymYySV#v^u>>3!9pC7tVCdD(of=h$U8oj3D+Yu@$N$>9K#Ud98R z*BWJ5wFI91je`?rmfGU~+kx5$D9l1uq?cdfu5mGqKK{YdT);5B(+s?f+UrZgILS~S zhGw>8DCf)Oua;>2y}eVHK&`Fm`_xZp<(esxFg|RA+t=9j*S_#D0DL=V~!f_O31wpYA;JMK`M?#uaGCjAwQ({mTzn!3}EeeM>IHqa|7 z1rJXU^gC=cr3YNkRkTuvXr0?Ad?%XR+J*eS%MZWP1691f@%D#Tj47D! z@kOON$%&fZMEAB&_4}mX;){MTNYbP2m+e7@J9J6hBUNsZn?rn9{RA}QVC*`>M+{LY z6R$Gb`)pS+S}8poOp>cTV6D|B)r^-s?Xc$ zCwiKJd>?CD)}I8{Wf@$gTJm7ybmWRM2PqTL_nt*9<~5wpd*eE3}9e zGe{bn*z11sfBw(w=Uv|C^SOTC>-wJOarAiz;u8yqBLa^|xKMGQf}ik5jEDX|p6C6x zT^vcf>no6yV^jlpp(Lmf-2b#~qCLu+hWho-7@9m-N$6?$<|?|?!rE^@=g{F)d}QrK zGE?be&_2lt<(j4C{r8#|aI(Pr!h(TYaOia7;xetL5$B9s2PB(i_Tx}$hL_fhE=)55 zBlltVQpph(M3f{@UtxwgplAqwtp;4aRVdh70vqcj4^{;QSfVF};faBYP-L!0r}Mef zR7H-l;gDoot|75KgMa-Dfi*7rIVZ@@jqc(0;~d z-)tdBZE>M&*<+F`@oR;mYrkhh6ALmW!${$VXP zdKXFzys?OTSWg)Iz!jz}4I?geHB)&NLCWVq7bjPbFoQvol07L{N-_^FR zuCJ1^Gx;S(;F@|O{qwGh?G>XWTQ;#e*10OhiClgrE!`o_J9ApTuZn=QU$hW!2mVwP9s6 zE*)&e_#as)I<*V-RZ|-*ZB7dv%4;$12|`C5FgCczR?~vs2!j_a*qDsf^2sddsMl`4 zwr@uCF{4&b$Jrw-J)JqH4kJ+OC=vNJ4*W=itMee}i+E0trW4<=(rQ-oKQ+&2I0ksc zza#0m@sg3>^l3VndMYWT{nY7f`9EPl{wjxjv0DE#Mrs6z+3^oN*Fe$nH!BcTc%nsN z#CO2&#s+#;UHJa_>u+dySo_?frakcUU$t~9?4cd)?j{W7L@zL`xg-4P_ptt>K29oz z?m((bUrKx7qv}KYO4A$i+?S4-oIbyw z?5D3cd0~Gwz(vqKpPT!ZBb}#)EYdepwVI{Tdg{fdOdf{oc;9x@M+%8N2KQ>Vgbl8L z+-I?#wlDEEwqp~`v~iDV=Wp{3oA|d@D6?ZD?Jnws4|kz;;f{Yv?e9#9YSrXrN$7J} zf6g|IkcAw76F8KrTrnjik>ZIL<@ZN7H?x___yg0*d+@V6DRSjS{LdSs{qNNpj0RN! z4EZhBf`6_L_!WbF*SqhCQtSAIfEMt^Dcn!7PB{Su?ia7t`<^cs2cxq_%ism5+>YH* zcTNpHt-}QUZ_;Kh!D`lQ7BBdG=xc8lkKK;7bPIA~{lMDx2~J-dPDDyxwcPPc!7kMG z(JI!~E*ih-5&|;~y+w|EVmrz!_Kk0w9EcUL-V-%4R)_)khWN(Ea~I?@WGBpN@6^1< z7#gf*+jBfWe3Jd<`f?`4KMm>S`lus0If;;Z+MX_otFD)r+kFRat(N6Ci5CKL57V$N z-le1q#YwV-cE75?IvTl1?Z`D;K#X!LT-fA&eO`z zQ_wkR2JM~2lfc$EgT(CWx8zfTq5G77vCfp?9y9@mGhS4KG@X z@je5-2=4u@f6uX)f;R~0uHbzCVGX3<5yi^mk_m42!%&ggPxoz>ZsD0=(1O{kHZzNH zn%?kW`1FM1BP)dA?pRH|q*-ORhsOF-_u~SeOrdd4Mxk8Xk2=>3US0**(`s_xJ#|pD zqO`e>czK;^z~iF_{L>iFwifprEPu2ecDv=th^+h7orR|s7B?`+c<-D=@TJxJ2&51I z=q*vw7@9bOaM-v89PW)>!0iqPr0ux!^N2yGh~Rz~_qBV0&oUEc3?W`M;^|Zj1E5s` zpYty1@-*t6Xv#vPT*wEZJ4oJEG<+eR&*ncC+1opOpgZSyUYi)YhLdwg%If=8ttlD( z#hamGl^3oXB_1pn6qp9LakQTb>JCd8I4hQvAsi;2>wL)K@ah=mIEM9Lpt_UZ0)e!5 znat65czHabwx0eatl~!pn1TYViJ!pF zHdx7ern~S|Kj>E^%=p9X>0<#Eeixyt`}s_5>57R2Yt|ftzw#xZd(JC)P8n_Gzu`~Aq$Bj^|JaW_7=lR7q5*k*(;nj z%c}?X%G7%Oc2Z4DJQ(HHG=E=6hqwjI31#GY1}e5ZHRhu5_dAqu#q=uJroX;fi5)OsM825Rc{xcX zd2sjoU1_bOzV(sj-)WPI7vqxzMb~5f+I6PFAj`l<+q;8*&50vR?tYb=ibMIiC7iNM zFo{9gf&!)@rOGqVy^E63$v+*DUyq}DfRs&?SnrYOn!V^ zXRbLup#9t&dxCq-+sUl#$G#CvR7>jqAdp_4Q;U0s?NM=_NH;61-%^qn-HtXi$ghecdfZlAC1EXP;`P%IlJGsA~p zz>+6JJrL~B#<9sU-rL{;*Vu?qtW;|S5&O+3hTbz;@JIM^@_@wrwohnAiXED6GpEun ziF6YIOAgzzzQeoS;EX#OOy|w&+KVzBbj`oJA%)jur%u*id^gY`SCbiY-#su#e}Bts z?V+nMyAEY;I_lZKT9n8vE2|u9>L`{N$u@X6tVM+oWqC{Dd*+=LwQ6FD1)=&Xg^#k} zupb+23LY(>M{pA`UCm)3lLn zc$0;7z-C7b0J- z>1AP6MHl48mSJsp0pQnQ8QDb&!)4 z1B6ZbMZqo}0dsOaqYVqQ12*G7@E+|k!-lO=pK-EI+vzZE8Y{nOU}F9&eK08fnamM(<4@1+|06lZBW-F~%dTt6Uq!36bN zE3~q&pYu(_FdhORH*5^wnOjEE`VoABI4|f!+g{=g%7ybnWrIsQsPWwIaORzGBsAD6 zMB|TWY9k1zv<1Iyn2lg%NJ)2sz#%<i`ef&s@!&_%P%ln#n zD*%@Ddu1K--SNKs0u0FPFCdzq_Md`8cecX9~`EO`~8(y-Nka-F}ca z<;LuPTVM{zU}v%jTcg{eZW<}77HLA39s@7s-aJlu*UZFuV_Y-;{R3$vVcne5;ev~| z(VLq3rgpH?Mf~HElY5q^@l8+-EhS91^F3uc@Zlq`le;|pmSGSsV5q8RqA62Jz%N;w zCkj9*-)}t}9#)otW^v5Gh&e>@DgFYuxhQZ7m656cp7aEgN-WfJA9c54(SAPA)3ICC zMQ<}%N`B6?`M@{iK|{yhpznn{SNkuy?ER&>X{U*rTbyE^{yztb=A?O}7LaKcbd=2h zK+-v5>nc77`UiFF?8=Bo>zy}R?&JTp!~C1LK@81>M4}M^!!#>nAl2 z(|p_==NnDl2Kw2zWanj<*|*ddo5-{Ylv-|990W+w-RM=N*>%NTqc(N&WJd; zT8GGJ2fn>Ax8OB!Eotf%_QfXS^?ybgPC`DJi?M95WpG=ob7Vp&Y@7*S^q%dK`*oS! zQPt?Cwig1`=k}Pr>M>s&cp|*UJB2R|Oq*W9Th1t`)K+jx0ZV{1lw+^twp) zVWKKO%fgWK^XkXmAEKC~2WjZJNjIl(zL~D^>q}tLJIieKjfQ=Tj%B5Yjs|DLT&+1S znAXB!$l|jH6dvD)MpEVy(EcCx`;B)`58?l2G+HuL-#4M)nlBu)dOI14<}T<+${hWK zePhZCzg{6XcS5VBnjYM1?S#Y050cjL{feD|j^~ve--&)uCo8mobNa9}2u75kT@qU{ z`*YVPG4QpZEVI#kK3B1H@Le)wfHVI?w*2y{;^VUmICn^CIu+C*spG!y5DE(dt>o#{`m+!>;0Q`HT3;G|6*$XaK13 zcNo(6Z%K5`)`haw-)j}iN%)M$=DaY;0n;l8ag~&qIHoQ^!=qXRxlAW7(&EkYORA?` z14EhQ8hOBi()xA7BV!}QVu#J`y67gC^HTIB{AgCwYDqM^*x&4$%3Dqz95?6kDyQ6r zVD#09v}os?m6{P|jW37s#qu$!(=^+t-$yN{i87}yWr^_$-DjOM7&Q5ZNzLRSy{4<( zq+eMaAto)8O=Q%gyHJ;`B`(M8|)?IOW}NBhSM`h#LiEm zNYK^Ri=-oz8O*)*cAsGB6|t<(cxB^_YS*KkRUvF8ajjIf8yb?Qqfx@|;!^x1WDj$M z4qDMHm@E$$t?WIYD=Gvy`V98w0^??yyN0^rM^vi0rZ$} z8|xK6x@?BeA4io2h2#<1xKXqmvf^1EXah0o?DLeahGp6D|B;Cy@$if6>;K4FO#dee z3Ql=BW3ha!6&81DyO}s0?!qx_M=U}-+&}heLXENCNql9?e z(?R(rJ9!l*(C8c4)F=6AuiZSC>4!v8ZM5bN;Jhi%<*9yKNERMSHfke--@v}^Yj+?7qr^P^~k|y zJ4Hm+y^h_W*xdJOUm+C`8pAN%za**$(~sGaI_^Nb(pl_HsbtO4?)hiLLTcbU7;cC4 zrJYXjIvY#FaE#Ds+enVb74O3#Eub1CqEwGec=cgO(bvCO!>aEg&!t{kkT%Z)-Id~l z+VzhhS5@9!#(pGjnOfi)2v(EgB)fje@>wNsM6u=%({ib)myx7Z=mTQl zc=8&u%|ow(MZ&S)DojxUxK6-fU%vnV?DGH@d5 zGFYK+I`^Q~yLpduK9UOe?~~fg(-vkteccYkZXdGVew}|f`HtN7yYAfZ8et30DQRB6 z6Q4^u8}fPvhdc#8s+jxD&@Io=)JR4werH53y{}Kt>1Pd9SwArAo*K&2r&0RhpyZqG zUt-~@ar0DdlO^fP1~ViAS2#`KSPfWu0=TNs6wDPSA7(FAz@-Ynd7PKj6C zi=%wOnP7%HhqFx=7U%TM)=v+Xn-K8}x_v@P6{cK(X!;jqexX<7nk5O$}#|DkIo536O8Sc&sDhp8%)tclVF%K@MF z=~9c#gO{f*pVKT2WU&T7VTefjJ+_I1%HGchQ)nUzTYLEV?w*Oo3q5EBpVlkw{*l!& zRsVno7NqmDP)~uLYQK1KP&Co3{w^8jGGsf(;0diF^rx^x+0jW)!u&0u)3hK}{3KYx zf1J5P`XzUVC)drkR&!TIvq0hd#-^Otn;LVA^!D1lDu$Kl&;fV2JTJyzC+3>AI`j;U?AYHlR_NaT?Yw;Sq8%Kv{uS zk`^rP@8dL&Y`MAybAZ_VBX=9is#A?B{I}|T=`r>M0e~*x>s1?RbJpLxCf7Dxi6-l= z>UR5;*IK4L5YMAw@zO&UN1{vjzN%dgX)EK5E$n{x{@a$VF z1lgRSYuxyiJKQJ6#jd|qv(lzt5RsC}{i5MyZuKEOXkVi5URof)*If0x-{UTTla*LY ze%gEkSiQwn+D_z=sF2aeF+GJIpauJez~9w+zFhFr^Nq_5yL-bw>oo*UzM1BK2(g-x zt1IYqdzI|{uruY?I)rO&U+N0Ys{J6}V>?Z3%x5|4`==#aV0neN7LK0M*?0sx*wPfR_=7_aSSd^ZPbRb7O`g*0MMDnc*CvvKP{&0}XjK zp`LDu9-RwQx?_LbqPaXABC4^?nQTpk39=0v@&~!t;-@VZpN9?K!MOQ_m&80ievVU~ zA%$ZC7Jn$n2YY1zDh0nl){`oc>BT1cz~?#8CzQXs!sGel)0x4>q}$VkSaKfkOMd-3 zz)wM5uxVrezrd8L@gGe&?lzHiqVFGs-hF((Hvp_{LRBMfb886YG8UM_`Q|*|z?|!9 zW6J8E%e)O!NY$&=i*)?F$Yzz+u+i722 zmqIkhTl9=x&t*3D{b?LOm*yAXJ`546;=As|E-Vs?0U06cEpz;*rAhiB(u>bn)*caDWmI zh%yQDvswDSJAiOV>GTOG!&4zlX5rDLhF2s~I6kLZeCqHdM37!!$aff`1;ccXq2 z)^aB=gEytyUNXA|=SWmO933R|pA=x!b@os~Bx9*k^+K55e`HfX_%mOg*Vl}pW|YqQ z!=k_h0>HyyjV@`N)QX_QejKxoC_ie5mrYdmRF#_aR} zm03Bri5G|68^OudQk?hnnA$Zxc{|-xHredge8|z_`Gkwpl9P9&*Bf7YJ9VFWW-8Xc zmv?xvS1V^9zcC)%>k;RlLZQ`ol$jXYEg;)|(=l)-5Oopp()_tZOL3xJC2Q|oY(jYC zH$+Y{i2pG@#!KcnQfj6KlM@__zYm(5r0%QzMUdsh3rEJM$x2I0kEGZMkWWx+TDo7A zBbOGvxta!399ZiROXiFK?O~8~qeikJU_);*kK=Fm?@wZ&iPyC5^&}obAk?@W zpf(<}vPxTkt;MU-jiCmRHcx~UBT4XFJ(SZGKQ~nH9WT&~ExqMf@T%{56{IW~5u}MZ zOeE5Saf6>MBawey+LTFf9_$Bo%?U9A0aTy1hf<^Vw$VA7fww&^SXwMuJm)b|8rvO1 z?=E!ijm5|Y_4^!+!C#?9?r#ix>(8+c%43J#3285fQR9A<$22$~i&ztr_8DhH*2lju zJ#7g(=}3IDSIZ%Hm(EMt*1tbs+$(UA!T;n`Wmm6AxofgJrYc~p>&vKg_)(<8Yw)Ip zc~RwkS8B|UGrDwcuONru<_+j zT|?7$Al}1v%gU|>KJ*`%%^nFASl_pQt$qXUb=>UN>+5m~^IeR*{w=RQ*>|ESu)Cw~ z9&D<)dH`4z{H7nYWSz?|Wi%@0zK)UIR{IUCGgWqg5oDGOh4 z?<#BdYVPzTY|5ukrW?q6sPRYEZeE-^1ls~8#>F|e-a%`kIe zF1ot6qlp!h<|r%Ym$hh@SOsq9AFk)Oo&??z@zb>v(+1e@oF#fH-##JM1 z%%2;j0c-8>5QA1!Y2^Q#UYKQ;HIj7})klU5LPKz$}gs%kb=v$Y{Ij)JT5~9S=7a>#kgpWiz%C7 zSeBjsmG2Gls~Yeg(XlD|uK(mgevzeb6U(upk{kaNk%jw-fzUoH#U?&JYn&}4IBzDY zC-sbItK-oAG;jwXK}mS>!*}T*7imvi9)CwdMEOS*H#uAwYzA+tZ<@a5Sh#8K)&J8E zt_!4k=KNQYcc-*1U(~RB87zAd`psKF6zlv z81@H@M^TL6+Wi2`5zFP-<(4q!N>+@}3=>&9Y}!F_L+nv1{3P3CD`xHbyZ`f>>8ApJ0#NzwD-3r^HMX>b9M1B+j%(cEuoD{md?#qJhC**Kf-Snt=o zxU$Ancr&g+`so#$(xahZFes*Kw6VLspDU5xy5qQQ+Qj7Viv~adsS?&l*CP{?!&rn)oR)%(tmEepj1o>OCCD z*$D_!8sbX>OsEDyLm>6Ovi4R;T856Z##Z z3@AOlemU^$&h09(!PHdxp8v?Qh_SupBr>3IbHqNNtK9yElRl!c=HYtHee#&xA010g zbf!)+D+c$fhtA*2!qT;59<}^5IasK%L58KooLt%}OcDcibF3rmM>n2_KWVMhcn8_6 z$w89F>DzieH)b&79dCv#>+YbT+7`!=_YZOkuNy)ST%+7G-qhk#f-z3+>jN+TtPPbB zHhTCliNC2dS*ql^23OdRWTz>vMti=24Dv4R6@0#eIHQ6sgxnhhS(OvJSqMdDhnB@QEOE99qxM&L3^fFLPN1+`K^W_p!~4 zQ}`73c84Q%;6HvrPXK>Ofu7Ab$er0g?vnD)E##{YU#hw;{4QNfNMA+fE6xG@K)@#t ziJ{aRPu6=J`ryjcA`6}=B_pU$WSE#v^Qq6e4st`$U>>+VSyvxZZX z`W@dS?4?5*7GLaQbPql7_CrFaPj1#k188EitXwHyI-Do)2TTD%x5}+0m7tJ+h5fyd zVKm3U`%*Y4+##z?|HmjknJufclJnDfHSE!3N znRcPIYq;=Y+m2E}U;&e{{q3*4nD-)L9r!sf&1q<}xIbBFdg?1Z-UpFJ zmF7{iHK~%W(;Yzl(XekG->~ALwW-V)3;f5Lk))*_g;o~#4x3q?^<>oRnwWnzke)77 zPOV5Lp*{~fi(GCd)?+EESyA#b5e3PknI3jR@87bW^y&D&ml!6eqm*%$J?PIe z^vGZK@|!9Wp}I3tY_mCl$@%~t#wtJaN2wRe!5GxvxR{w=ySY?)EV?V<@7H`3#@5t$ zv(+M>Y`CX~-YxCQXB02?B^GWmtN+B_949wXvt1BUN$$Iar%ek_z1zaes*kCccWvgk zB8@uav%eg(CKBYzRJN`uZR-e;9+k&bQjR((DH07rkq7*`VW?PBMOnY#KAG<#j7QbR z5ZSIsyga|&9Z-B~=#blVD{aVRjSEjjHv%_Fli=Xj3SWCo{%KkP!k8HQ*s&7&oZ=Tze+>fzR!&Prp z72qN%SQh`i`!Uhl+CTMS=DUfPr`>`yhppAhO>zUFMQGp+W3lFV7`bG`v>vM~p?PIk zc5aSI3zX8*(tKD)6RNn)q*`S(Uv0ht(t8zXsb=3)bXP&?%5>SN! z$3u#{kU0$duSLwKhZVyOfal?% z-;|5Y&=1?kM;ye9#t*kP9PNyrn2*c&mNBD_lq%fi#S{JLH2~FSVHr`zR(~RDy8V^X z+pIAS7ls#}V|%-pt;MosmvW_S!sSfcWo3*Pv{O zTbp_4yyj)IMG_m$hb2OA$7hY4r$a{?tLa9X#}~dS=&i}4*fl~sR~Nl}1}25~$?Y8K z_*>8Viukp(X8vxwKvVxGwSoTE5`R-0{o8{|G8yvQwe4IPv(;MY<*dRP?P8jlTR*(W z!X?^P_HeWp(I(t(sW0**WGczg;83z@?E3h~>nL+Gpe?koGV(>FQt))8b$;zIdP~0P zPm|sSu3wJ1M(;~rzcr={j+$%E0m~NP96n$FaJ-&{$rkIW`5I>0YU$6ndH-7YkBqgf zz9-V#rnlGhrYwEJ2whxa1i1k0i2T?LYdCl3o$lq_r9L=9TIS1Urc~xu?UeRr{&|>_ zX#SY+cqq2O*=ggaxK3$8*s^(ts-npmUHY$_B*FVUYW6U*Y0sdI^Y-@AwKLx&CD3h4 zqDSQMmO46`@c82SuGP?{;5?fzPZ5CQwOcp#N;byrzR-z@&Bzy73e4U|{3s>pUvEz1b zO3+M$w{djkcLNg>&qstFZzOP4Mu(+v8yS*JoZ;9$#RZv@0C98fUSNRLG?$KDQj=CMZY_a zXgC8={rQa}fJe(~-5R8oxH?|k(-RD;F7{94Kf)LHxQ6*{_@`8G+nRNC=Y$!>U)dV* z^h<_$UCSv$*lSB$f@o?YH;$4w^{W-j7fZhcP^0(Qffu-LSYTxJ?9(Rb<~g$-ZZFaV zTzML8Fh1kj9bHj)1F0Ax%zK%TNb8PnFAH^gMp4dY#NCV3b`Cn5!chbICCfwGei`^A zNbzB_i3a*zeIQ2bH)r}4h4N6+87-iSooYs4^h>u=J8%=FV!V~qC4GLs^Hs{Y>ZeUN@OuT>N zCwXAW*8@eHGitfHij8lWo75F`E@uR4cW;*Ygqe76=_#_uMW3ZNu%3mbEnfadhADCC zJ(u5*k!SM8uwq+(Pyfa;CQDIS-JCdVKLz*@y8qbBi)Z%C{2)@L)dapc=~mvefr9BX)elJx)!Do#laXN{ z6+yCV9B$y@8M&m8&YtG9nn0&w+szg*y_IM9YPH%D>LY!MObv{ArhN<4qWLi%R(KHF zH$NqwPjV3pwj_~P6t}?#&u>hJQt&TB>c1csv1hhE@}~o>^XUd!EB2AEqGpz<%B&sT zg0;m(;erDD3YqQVwnzKsPN|d0UXGBi!d4@eAj?ImSI7?#s=gEF4D1y( z%)h!%L9(lDgTx44O&n>DN0BSo%KXqQ6u#3vm=wCVJUmf=Y!Nmc-`s>9_6Z zUx?@;L^v4oF(W_qkz@|_|Bl{yEI5hyOrCaJDwfr)Iy;dxm}{!(Raa~#s(d!pTpXm^ z+w;$(`qsP@a3&mWITAn*F(Gkw$GjH$2CqWuE!KSN!0^Ygts(Wl~UejT}p)rrNe+)mg zpM16;@3guv-Y+%JmtR~(3B*44`WXxiI2}rLd)lR%)I4g%`*?_9j$nl!2sBSQ$;Do& zeN8r`4!w$^1nob6W~JV0xib(MvwMB~kemMriLJBtflEMz4Z)D|C#-^-wAPs^^T%~s z;;v_0f$yh9z&e()S(C;GW<-=jc5h*=mUyxIfw?DTH!Hnw#9>XKP8ZusE%X}}(Se#s zbYbl|ulSS}tj$VzHD8tQ&*t{oA7!V;Q6RjN=vcm-^W zE_Ui-v9A`?jI7-=8&Ghue4~QjNbP*I&C)$o#8sG-$2{Y_p;MAxcniawI$O^wWFSkt zx(vZnaJhY|4`FUFy&Q=O;Qu_Z`HJ2*xTud>R#rhS?qSMcZTMNvb6>uj5Z$Ct`Ga?} zQ_?oA-;I3gnfa=4KG0wl7G+;$LE-ozZuqvaYPhwBJg*!BpGCKRF1DfK{55~5OfxXA1aKx6j{^Zih#-E8d*hbS^6$4mG8 zoB^95?=oWdNTg2KmvPR6_vDIt4?JQ$8Fo!(11v>jn6v5t z!<&gi3tgt5S>M3IY2)h86!WyGzS#k9`hB?#TB}7SPN^)*@`5L1NxzouB~c;Xv3v6l zqPmj~d_zM{5wm@vLJFo{cHJ*?s_w4@E!EfPNx?)7{Q&0{>R)aI?bMskI$;M@i>#v?;rQbvt@R*@)FbFz|pHws{=f$o?|!C4cC$zO}AEK>rj3DVcJH@MulFtxs-B#e2ca z8NtgnlwLGr1K*FXwLGG^XxK|{f_5E?9SI)oEJndj?oJ`q!--Qj@v}xdy$Y9n| zxf9`&=8Y49ef<;80eeO-n>6=4Q=N@lQg%1T_avl6IYr8LkG4SrPqgpgDU(Hy7_ShM%8~=hYdpE#Pe$dgX44mZw#^{osJmqYp*%%u!$&rxBy&(uNCVOlXM|yZ_F( z0s4q`PY*o(GBh-tb%>TwFkd`cpQi_KKBKWx1T8I`<*a$ddOZC&(Q_TG>$shu_*yAj zcK9Thh8~*^?fraVcg?YE`!pmjxXz~MTI9m5MnVJUc45*qEC#ooaGLWtF+VP@p@%+#IK$}d0H@LTqfY&X$AzaESK^EqrH=D5c zNO6fNZTM64R;1o)APYpWS8!n>tvn&17(otO~Iv`_? zjq3`cr*uq_=cbTm!gk_nJ5?WeWZA1|KjpUitgOKXa+>Z#kZ5s&6OW%h?vS*u{w>kM zsqe`lQb<^9mk^J_5k~U;u}a-O;Hh2JU9Xx2V7DO|CSbz+sMiWJpT04V>Hf)g4E|Fj zaDl$unwZP6_E&pEY z*W=v92h}dm3x`NGx+4CrWa&c7q85|zmaIy@;^}cgo&yr3)m6_x&i?2ZoRd~!jFY0@ z`iMj@wLwo1j;vcS*0(wW!gR`Zj^KKq{)D-xPr9|9c5k~K%7OB=bF;I%7f+hY8Exf# z^-h;bd#ZktSfwkctiFH7D&CE>=Q<@7j;>ehH#`4VhW5YEvHwSPu3>i1QF=`}keS_M zpGm#p!VTs}7d5;@&$>0Gvu`nPg*7Tqs85K3oHi5O!p5ieEH(>Eo>JD8d0)I<%$Rgx zm#!M!l6deR*;!$f*k;7@egmHP^@q!$cb3bblJT`y@zU;hHtsxphD$l0AxSi3w3QVm z->}rj{3t8>8iJfLc;bZQUwDyEx<52YfOPgnjp0p5;0YV`1CNvGektA25S5ZjykCbY zsd?@Fl6~xjQ`T8~icGyo@qc6`y~Wy0(xnAtbiu)1(rJrDtnT`ky)VI+!I>M}j%CS} zUJ-rn;~V{NJ%>L|l(Mke_$cnIgs-6WntoAJI5um)l$vMi?#3QKxge-T*z4 zFKtdQ+R969qh^cEW*sZ$iwd-b_pKPLC67riP9`1|PcA>pk*U`y?hl)Ot~u(`#n(A( zKuKRG?c>AZjmM{Ob9jQ|dQRKV$JsoxOAO`x96LV#!Cv_lps0Lql?KBV$~^twIzHH8 z90@dvpl#ED2 zZyGZ>+}whFK3Us#S*Ri{l|H}sFFpZtEoYs}hc^0yyauesZ&{1iOc#C?IoN)CGW}3< zQ1RQ&1G@7H8&^)#M{t_EB4SQYv_#2UeG0&NeLaySCnrvi>zraXppa3UfslrM#of02 zTqaN&F4#}|X`P1BEAA^AX*I#rpp2p1$0+tm(Ve|`;UCs^+!Px+9tw(5Fdx=K4Bi~} zTq2nIw;8zW6@|i8Xw}-a=+n2KWe~oBWgQn$^OYR}3q_I*Uj)(gUq7!Zo&zAJ$h-}M z#)itFM^oJp<|hZXTVo<)hFX;|R0)2cSxzC!RbD%p`9@b?26Y~Altmb*OD*z1#H7O$ z5}tqDO25T?vZH`DvJ3@r@HKl$1djU;mqv762SyHR@i6}jfym|p8Ote==M*ltE_J^T zA-qyKxpuLn+(Rzo@A`X0)}|-QtD=SfB8B5v26H~peR)gJ7D(Es|I~K+8m_Z895b+j z8w%~#KUa!q8-HkL6=x(X(~sd>?s#~tL$PkCO50)sOYRb^9Gy3xeZOF*3)FdB7 z3kG2`^HjCIn~=gPw%$yAbCNZR|$2BB;Bk4DOfEvSjtxBUlb3VQz0mvoLQFR{~mT%CnPWGx~EVYl1Bi8S*0 z#5Bu0*d>ELd53EW0O{$_Kfx-tRnBbRG)-x=w z9B%#%?upJ@sOI?xm0K>jZN| zO6EZcV5U`V`l`he?yF9d^9vwN(N3yAb(!$F|EI>EaaC5TxGp=+Cfv7k-@g~; z3(gMJqJPgAiXJMB7ZbxiaX(@C`wB4Ja0l2ZnJlpe#EFll^318y6K>-(PRempTKIT! z7Y}|fT;VCC;T%V-4^ZTT-ZM4?9=1;_Q0q7~;LYa%SaFZ{_Vfqik|XE(!uK$#6$7f_ zytr#0V9<+j;DJ|Z1?QsqL?}NThh7O4X@>R^|0C1AYdZFKxuIiH$~cgAaB!=n^7x^qT7Aq#5YmN6R`OSbR(`e@jeh1+Ztx+#(DxSDN zAi(-;9$lsRY_*=PEB{80c>F;#4%ouQaznm)+>pKpRrVn%`bW3^BO|@m`263Z4Qb2z zzm1#!&kxCi=xZlt(!k1cB-oh5>?IA2f)FGs{TA?BiXsy(Zuoy0VR1IeMogk`@nWeI zb1-B-u2;2;R*BS!2<-_8OuMx7P|0c7yOCwU{ETaD8(8opW_c5{HMK1Kua;7f8qd{Ciit&ZfMe~Hou+AcwotrnPMAf zm`}R^WX+D$rG87Js6YGN-1l^#j)`{DxSU*BvTaOIihhNr5^9~JBFe>^K5sE3>wd~R z+IV~m7zD+q>!%h&OjR@dJ zj861KZsU>;t3leWpV7Ew+5gB?$UWh;jLpt`(ZY^`6!Jlr)#5e7YQxm%Ygo<1tE9zL zWB2-zh&5T&zC+`k6lo`5Bc9;p(E&2b5GRoHZoHX!y3MZ)NZM=rz-z}hSZ7trtr_(v zos%AdYGw1N1byuC%W)B9Z@N3V>C`!Fm}VZn%J$u>-Ec{8Yv6U?JEhr$*x8pp`NsPV z@#)#c0k0Gc@woN<&==uOhlTax$!yJyv2ju-b%MjzsVfykh~}?FuSo<#=NyZ)lJ#*Ge1x(t7Q#;MJon19Or2P}DP1>)W50x=&ai}& zhUl{PWXkljk1es3-F^`Z7=U(%N!EReb#q?w6paqgy2tzE#BUEwfM$O0BtjmKyY#23 zy7;A7(uQ-#>R6(1@r7&oCfSO=%I;?4R~C0esRd(_w5vag^U1iGW{)X#HL;zzUxyoR zw&3nFi5JwYm6lPvd6=sEJc=1Ef|4&w)46wvdi}~r9AZ(1+=j~wBKZ_nzDL`D+0~Q- zPQ35FjPGIT$l}9@`6SCZfT|*5b|wv^{+<~g(!WqD7Msz{ypsm#-N&;YL`f=(@oBVU zZftXK$#8-jjk|}%wd&`|ZwRAk_}c!L4_zCXqplSPLwqGxvH~N0ri>%o#AViiW9{lp zP95(J*MG^O&|bv0t(V;fPP1^qY5&73QTqGbL}N>rLfov}>uYab1(ISjXa}mP7wP#q zAGByfd5BlozujYf&pm1%Am9Wa9Uj+Q5AiL*En=lRhASEktB2U;tNdWAoYDy=6%; z7%g-0PJT4q;RB~}ruL%lMlWLFSmrNVz8tD7?SpTAsb{Nf(hKB%Pbjo}?$z6R2ONf= z?`P#d2r!fml5~n3J@E}2nY0)X`1k)%cAn8}`0>Bjp@XVcZAz`yC@G4l_0!r~d#}_U zu_E@Ys=fE7HbK-#h*>3OQG3LWMC}oK{ci3(_uO^<_uTt`mg7mD$@lXfuXi#N%iXes zo7Y6Xu9s}A=Wp#nrB>QWR&5^K;U*V~&ybbJ%5qqIBpXV*)zWXa(@|!tSTS`|&#EA9 zWZx@bWLCEIxJAalRDSI5_1$AJVdL*De%#Eymbxi=Y*mquzn7j{g=^|8Jwp|HmEiKMsoj{X;vjqsrk; zU}k$v%?F$3rU4k42w;sUfALUWx;!ry{qWZmtD#h8mq~r`4zS#v?0k{k?bN zQz^zSGR|^N3A33t;WbQ3bD;a=b~`ltwF<$^xl;kvn>R2meRRTnEnQI~`yiKpELW`4 zuxl~9%1dGjMftHmC8I8x9eK`TeVIkO4YE5pz%S-zM2GFzmBtAN?Y1MT8fCJS1H@QU z20OnE^2s;!-kw6SfPdTt#*KQDm7At24snTg_^jktqfBzNol0z%#P_O)BW9zi znk{?J;(7rr{l3}ioNSzPg4cENGG9xK+Xg7oFSSSRRi{3Nr0(Q%>2F**EV#?H0+*SP zrmfa$lP|Bf3(?DD&CQO;XlimpCipoWSieCJlwt>S*rB^mHxlmx_Y0TvMWyS%0^fl9 zd+sn?V1;{BdXzPz;t^6q#c4J8E8PWTGn!|kxdV{ByM9`*Q=XdbW>}m4QMZUIl>S%x zyg>DYCWZ}v?oDRoZOv2%o3s0uMDcO!^U2%W7a=h;SQe2SQ7pH5NlbKO9NclceL8yb z!;lGY25dWt>T~M-#b*>?bjvy zwO$N*ZcMG+O(MPH5>FesO!$JJmP=hu(=j`%0bccZ*uU5K7FUvRtTC38xlW276iThc zK4_hxqR#_6%)UI$^Lm>1THp#LG^(_oSEH5D@|8tWnGdS%;{;w)g6Bw zAIfeCX0_tAOFFp zb9J$looMbj0L`$IPmM3G#?g#_w>a$|Z*F|lqq-XtYkNo)Gyd;aIyTd=J<(#VChzOt z_8t6|45}6B18s!a&TS%fvT3TYlY!JWW}O!5?&B*q9sMEcDLo@V zq_ow)Bz@xkz2rHmOW`slt(M0-Q#jGKD+t>pwWTXaKVxY_eC|c zU2xpl_s+Np?=zV{|B{Te^3|y7{(l?-|Lcw5?-yhc^eHW9tY+-Kw&>2EfRA3ZSs%ZA zD8G=IU#GGMT#5yYiCD_}vEBm&xi`x^=(st{Uxx>2bN4!Ku4L#-6%&Q2=F@j+mak_S zAo#KAey0*T$oIllV?w;&gy74xx2u(Wira_Nn0IR!PK8y95H1Z>mtZ???hg0KEYE&5 zO$>9>o_>fs8QlQd4jZ=DOAr6;%fRnnJ0JtH`Zel*FkilyuF3AY@ufSeq1vP+mFj$N zDGCTOm}tQRByvk;`AXF#?*!4@gaN(iAZfCClRe%SB|)vz3XAgwJKa%tc&OdD$kHZr zH>$v~)_4WO_~w~H#pP2HWyO(rbmUbI5ih*F5qF>0^jd9YCHHg2yb=+k)t zjREJo`{zAWvVd@&99V0DNFxKa(fb$DSyUhgdyS4qE(qHuP=K4WjJ+27ZgQ{-Ia*Yk^>soz-k+j}5tTK4Vli|W4F`nyBy1|W+A72(P zyxynH9?GC9*qn9-72ut{FT)f__S$|~Fkg>1Mr^4oFYv5ps~F2&oj!fF#GCe~jLWk0 zTd%mO4K5;V8Cc1lNT6}xm82!8HuGCp=1uyqCwiX%vi$S|wEThusXjc7Np8dyclz|$ z3;Ty5HOf<)3*<JI^n14{ z($`uam_(F>Q^t4c1x~%9^9Yd{jOL?S-wM2%ktxl#r2W8qp1sZiXtQpNSCKczg zP$wVc*N`rk?6pER1)`ToApY|EkCF!c)~9}2mtIN6mji?~2Tr-6&oH*l5?_kjN}%s~ z`ktzhpkbjGw+xVkkOcxQX?Xgl>mF&Fa*%2R}`#O`+&!nBH6dv4Pq_ z5A~b{)P*et@4qhp>JNVhM!GM`H=z0h?;|7U;X_-@KwDjsz&2$_jf2r>7 zdt4Z>Y@yR|b?z}P_c%yx1e5s~ycV>osx_NmAS%9=plH3~e$ zxXcIkf);YTZO^XB0Ioffw25-nEBaP)+US@z8I7pbz1DP3LII->GM|oe*DWKZMbDN}^CrjqX??e^%}eYf!)Y|ciT?6hWX{5s^{?gH z@n47k*hTo?AN?8s(`l%QrzAe1QFAUO9mS7Rnd^)K3yzrjr7O#nv3}mwr{t)H5F0zQ2uFiM+osvlvcN%iC zW2KnA|8N;QvTr$&?N`r}rbs?vamIUI>$XLoD;T=~;(Gi}p7-bbkmNSTbVF|Y2E(Kz zxI^MuN}=?wq)&CN%pJ6LYuTCKYgq$v`z|D z6wPswU`Yso~e@V2AO-F|UAR`wJm=^nBPEjE_~=bCWh&P=e^X0GKW5XUKKUfYdNTz}~jQ?@aeZ68ka%s(ha7 zM-1z>X^$+D9y*=MTM4tz!?mazU0oroQ9TDkCsMT_xf*al({KTM;j1>3ovwX7J&Po2 zYJ_){d`NzU>&XqjQ(YlPpROqOQ`4Vm>KcD(;7H&!tV#(DlXY8w8t86&cI|l?jtG>z zJX3d=Fo+yptpW^0u(F{qU{!ai*I#{>F+cUGBPdl3CdbykelTXtSb}I2ZB){%yhkqD z5s;$7nZ2BBGa=q^n8Tb=qZ=(>WI{pMahU{gZ5g^J=BsOed!IH2pQ>0Vo8gO^$aJ5@ zuf`(ppiK+Q#IUK(+haV*rHKJo0rP|p7@aRKBKe{%^=y)FrNF^?J(WV7CAH)v51)yK zJ_TNn0@aU6*BR^k?%B6*>igDIw~M5$`O1G?d=SDz%GTp&8gXeg7IusK>fBmI+eBLv z`we5Fd-z$&Lh3dM5M;F*ppMb{^~bj`*lw(iHy|3Rx?|MrXYb8kQoMcAlL;|_42|P% z(F_y0Us)2AwYD1^M_CrP6>Jt z8+lie*B)-~L)ZM5#J$lq2+QXP_;5H6j~s2H^`7!0N1t$Jlmgr^G*I|v z4{?$7f!bmw&h^D4!e9fv0J7A!FLu6FofKo7-0e9Zgq9TtWOqnEz&K2Z>uoj0Vf|Up zCq~w(jlWfv4s4dC2%xqP_I&5;bD;z? z=i0fxo1M|+Y0o8{HC3ujSQ%`83Y?97++fIn(BHwgt35HIi!xpvSZ=j$eDN4ApvdAU zxv*3_^894}>pw3}O1xpjvjVt-#q?cwIY-HoiRqk4%eza>aIuR`2-!e(T zp#;)Yp4aP`*HxyT`g!#r?NdIm@)y1kU1^qeHI@36Y(_*5l!jN@+Q}Him-y#2bqQ{o zQckz0=5le=tLOgJ58Sd9tW1d+&P`6IuX()}pLHc~y?;HPaK&Q^526yCW|pZw_4t%A zbu(Z6+w09}eBhSnq8eYW=XVy$Bf-P0BM}oKp6h=-1pXiP!8F?TIK$)PkXW&dY#XmQ z#?509cCj)E6>_;D2$y)$+5Hu&m!U~zY0OSnANIHs*|}mgWnG*@8v8+{;0_(Nm!8vr z3Is;tQ6{h{#j16Qtyi>Z`X~M)bH6<1RbXF_$RL-!959w>vy1Lj`L;j|Rjh@Y1;fMd zyHp(YSCQQYJiFhe8eJv&a6LZ2{xV#Xp4Cd3LDMZAs+TkUs)fkq<-xbE=E2R`pRT>r z5kIud!R9TV!RKuOS)kQUu6Gs-BsO20Q+2@ttxoy5{KqV$s-K1yXw3db+e$)Jl`Myo zy*HroWTtOV?&m?UW|34cW|O8iw!hFKePBDOQ-nhM_3RwyngzYxgwjbk$+?x!O4+c; zOjM!IrXcu}Ci)=i&E_kDJi|kinwXWnJo{S`2Q@E79EFO~H4hGV4(`&Zi-zOGy$?2r zHZb43f0$7EgLwAzSEjQY>4*L5*0`1`9G|S`(EH^y#@ZcgX@tK2`#PYJzoocjPSUvV z3^1%En60r|E8DxF#+S2L#X)Dc;Vhz*ww$i__{^k3?GLUyn&FYNWI0T7l3HvK`7a6B zI3I1njp<`3qQ55OoWSQ0Os-V=+$h1da~En-R*Pu?Bua2qFpAGF(saBpX}K{ii#UZT zVRI(?zN#uX4|3AGL_^l^LiKW7r*<+)4TG|~HQ_xydStBzC z{mJ5XL7$ABHA?}i3MLEs_nT(tm12#*DaohU8mGkekx^73M_s}`8S8=G&Meb3q3Mz~ z#4j_44vtl1Uv6f;<&RhW{7SlawADe|i<8IjjxKFlB)eidftA#>-AO6B+xZ9ihu-T& z5oI=pY+2d>(F|23SPc-rZ4>}!VSLaB=L{Vks{ZHC)o}hvF&}ql138eCFvmxL&ChDU_ zJU#ZO;=9-%+L(uAb&legpR@~;_k+)S+-sxwdtV(>y42tJ$||}#efynR_(vQdw#-_+ z`O1m?QBqiviRlYX*^%%#P5^z0DL|A)H+>{pB0Ru;@=hrmRbfar6H0?%Pz>hZ9G}_K zUQkDoJWJrg)jag%H>IE|Zg<)8B*{53GYh=v(6J;}!gEDcf2A?85+Zn2tk7!RjpE== z*GwK-aPv1^qOpd=`h+Hy;QwMdI&EuDjN7cKPCx!j5*eXV8{C?o3hTbd;(p7JiOR zp2L6$N5pw?k;?eYV0!)~AzymxTLI6Vv2N!3N_7=4`G7b81=Kg3_mJ=!BOoX5k|Ji} z({iA+aNwlFFJIt8NQx1cto}?Wm%$z17<#+_D8G&%yZ`4y=@|@*l^1CG zS~858-Y~G3l`R&D8y7?{8$tbjdZZgM^u+~q&dSPe|DYc{2uN8WRMVM_9q@EBt+6ZN zQ(?gJrG9inDe&6F$t0z~zB?OVPoT#BwVu{5aekT@dLGzHoXZ+*rfg^IC9%y+2ljMp z)uaH|lK)u<{VK_2ITDqVV$5Jm=W}3yz8;)5)Cv;JGEQf1+jkFx&h2;%zGEpK913wk za5*N)lf2M9%t`g9S-m*19p}EPR*@$%OWw|`$HP6)9mr&@G{J;MHKuniI69hufi|Bz z+PAHsZ2h@+goOT~-$lu)fBm4IgxX&!Xn9;uf_{j;b5yzB5`r+o(pNmI@GU;7Uh(~s zJU7nPyAy~bq6PEeHb*W~tba>=442HOyz1ajtSxd$tbgX$a%M6Lg&>~L&g`o{X3=-*5T9$p-Y zcryN9?}q=#VgRqQUW~lG$iIAc;qQQbU9bB1;38p6<#m_%lw)3VP!Pjr3Gu|xn;%qTJLGRW|j-Ve?Ca09D*Uo z#d%S% z`}^PRW;h2Qiu4;B-Y42->CL>UJN9}98y8AO%7qEoM5y}-T-a#kSPD|?tDHopa@Xm{ zukpE@NpK?A^7)vm(x1S|z$IFRUxP^EKJfbU>~Sv9fsdrq&Vp-QG2Rly&4D-Z>)8Y} zE8bV1&nX47ZHNZPZ(0dS?gSKQ#(vMg{h|Y5We`b-^WjnABUps0w1bc;>uq6(ycrI< z;J*1(RWON}@t#qOg3v;fRj6Nt53Ep+c^Z(BgM>uH4~?zn1%axkAnTG~rFrwF;dv$J z{nM6Z4S~zG)l&v9O?k2yLy8${*CK1(NZYgXwrJYF!)6koKT&nwXcY`Jmv65uj2#;y{VB=O0-vv`C?h#4s+NY*so8@JdndV?kRpOtJ3DpEjcoh zRb6HCft(0$?_~%n^LienSAdb2Kfw4dLJVfZag9ArRj!i)z`9CpT-f!1GCA(7HZTBo zb`PgN0GzqVFq>RMOG0yQTJ@ef*g)wyi=*GyL^u9Tw-zYh*$*oWHP>fNt=)h%4=p-1%9t8vymkl{jS|^C3Iqe5*&JlJW>SSZ)4W! zr_SNjrVG`kV8qL9RKbX(Yl(c^qMp32uD4_Iuu#U#BJ<@-l7C6`w)%}Q&T`l$MFydh z4FK?|OZe5hDeHyql;ZxR9C?lMP*M}j_NuSjZ;-;{NrAJOwk3)z;<{>;;)U;$6oS`Cn~-vSht5-{fvR?Dr)q zOeY92dSSkKFA(|ED!V@Lx0SVZ8h)UFMZ=#sY@m5`QwZ$%6-yU1Om`CG20xyxgX3~M z*qo)!v^Ed%H3%>GJagrxkJq{t;My~t2x$$h`Omr!7D0ykavmV{CAsI_JDAaHk7J3V zQp|6)j*T#dhPkubrfpE3=5S`M@MOY5>uP*lA9Eo zc6^{If9I^63GC5oNOTkktLX4TW4uiC`Lr8peZWNxt)?~YdAX0R zQ0<>p`+$nqG7X<)^2R7AB0x0$@HMliMn+Erw=eA66)OaEU|9S%PYh((;U>>>i$VC^ z`Z)D~fYKbcK3Jl_?2j!zS&V7L!P~R{$^O42=o=yN_0AX@sgGGLAX=NNFx}FobuAU) z2WZ78!FSCql=!uET9I6P53TS9mr!!{I^*wGAl@YkABvg&6g1^NN}%%UldI>DAH!7c z)4xn=iTne>pU%7!&f3A^jCPj}{IjU07zcTu==~*Lqa`-)RtB00WPu%xmxr#uK7D=j zyGT+_{o+Vl{2eMa*Lyr*4t*PB=6ffqA|&6AHz-PnePI_rzMkX4hBk`C0)>gRd88kh zD^Ove#$R7IW4Wrr3%!a+70-l-pAaks$XIWwa|f+Du1EJ=>pm@k#u=~gE%ZjU*=ocd z%kcieyebCJERiNk9AFHd<-C%}IZ14oQ$6L+fhmR)@F`}H-1yH9m*?9eA#pN0pSOa9 zcjJX60Ehr=*;6%a!^rVAV@k5dGf5&XQ7WnHkf) zDZbPneQlM+&z7`%9Sx)XAM}&KQsslY~-ce?~3TiH3!}GU~ z1#(JK_>$5Y+o@t^{l^eAvZ^uO3Ds_iWUb0k^_1cKCtc`#C&fWvEfk%q;|C&$cr86Y z7Y_c}>aX1#$E8BXEVSnD?LvipDJSo?_+fj=_P9;Ml2&dl#$ePyE$7TRu_#2W(i-@~ zULXWA5}cGa=lwnu*bdQ1&1i@IG+ zL`jVXb$d6rkafq}KFX*mMv-2CR+%vDizt{?{5{jTOSr+XsOF z9!jGOaY^r;(@P%_$E!9#AULk@$9NKao-5N74E?rvhxi88(fSlNzR>B_l8ay?TXD;Z zxLpyRPQBa=R~d0Q9V4H7Yh;ur_;NbWk<6uyE6yWfmU*)=(siGobh4E#aFJDV+`H$L z!@9hkGKInX4ztvF9B+0)h~#JH8P-8PNiXM`TMN}rb)3%R83whilz`Vhl;3VOpIl*y z6H-6H?aoSm-e&%rF%c%sd8rL)7FwxHjE6qW>&D(wWr~>tf?S%!*KvveVJfGJ6&|XJx52WWv$CJdM(d8Tfrv!<0j*PJ$@?@Td1{jT zSH|wWEDA@QpIwzHz2U%fx8TJ)Z1cw+hKS-urMaAJ z@T%TdY45dFX~6*z1J{0k+EFZzi-QSnV!mk5{f|xgNaJJaE4|h>%xs5O+4?{DnARy_ zQl(-INfH&^E?F}tsUT&xZ`i01#)mJyQrq$`i5IvrV&|oy;u*(0SN&G1&E>iEms^Wo zM{Ax3^Q=`hqq_zQ&C-=qEVx7c@Xxfn5<#FO%wz}@59)T8zKTN!zEkCe+dL`(A|@rxe6Z?_yl zoL;+v^C#|pu{Ox5tRGVpKZuh&9d17JMM4tCSy}f8#Uc90r-e%7#@pES9;qPh7W!@X zDOU zVdu#}*5n*N^3i&xUb7ELQQ!{gs{q9Mu#~3n-7no>De1da3`6v!Ke`HsJ(J>h7D$X8 zQA(U_JI&_@wA=N}V|gsP**f~4YpSJwY*{)6M+E=5n{6cu=NZ%;4$>II$CMyA`m&2u z&bWS3YozOAvt1Yl8Gwzo$@s#76amKmvkxwg;a5po{jXID+fzG)f4@}w?$`{W#4b3{HeJl zzOd7#T5oKYhOFuRz=<9%r~Y^KY_Vb7%%*y`9$D{H`)BF(cM^2H8h^!8r_2~o zk!w>2S`GUuvH(Pu+GPSgUi(`Ycmj zBNq(zJiPRG;-uf%d$FaLwp-qtch`OsnjYgdkr-pq5&)keoHg&uNLKSNMT`IB@12Tg-5Zg1(YR~K z+h!{1s-i=Saz4B3u=q(KNzvnIdptfFF-Pa0rS`5FqzUii$VPS zKPf3@vxNjTr2~_OYKQ7xcXL)dXUuAvw7j@eqs!N|Svr~vX;#!o(CALJowy<@>1&g+ zw%POowq4qJgDGP`*>z1?(<`V%L~Y`r&qVsQz>n**{);^6)Mv(=0we{{Nfk-Yk&S@k z5R+mH=Ikn}TR|xFEaMK1qrL*5xW|ficzMnzET5VZ|AILp3sb zk19uMVa#_9MnZvAmOSqLTFub{<)zU(d5{7cv!p3m>JhCx9~fiMaHVx=N<TA9 zXm+|}>wuMG9n@~|4-p|zHc&>!?{srrWCEjBR zwnD@!|3{M2|3!al2Xs``bLawO1H%z-27kNzm?17|lFLV)?cg>&ShC$W?1jo`kUq0M zjQzOp!O0oiB^UXRR2Nq-%uSZ?3dwz^^=%?>fG#Mq&L`|(h{lf>^pczpc;LH*+nqnR z!dcnJ(XVwUS|lkr)eN@JwLg{w?j0vfD=pnDPN=A_n^m}C33`F3D*bV%{G+j%M;*j!2GoqybflJ;909*V5`MZ=I$j4dmecWE(}!=#Ye>yhcWDXaT1&8xb~ zLk4L?mT+gzR(~#~DiwoUMRHUk;7fXM^!qsDlY{dP+i@ogwyQn?Z%Hhh(|zXE8WWbH z38%hqmQ(Hun!_|nw%-(q?wCfUMB0o=jakAknZKh0CC_z2 z3?-nZS2C*TEt`I2fsE)JGsj2gYeX7Mg@Umq4ei^i3c#Q5|%XeLq6&vw)C?Sr%dAO zi#6?#n?@g%Laj6sEu7yhnyUnAS{quSJJ(|^l#h^%b#@TZz45Sq!Mqx!{ELFt8gcT7 zt}{;}y*v{INZB5YyZx5FCWB0&qqKnCkiV`1(RJ<+E!z0LL3z0u-JJcm^&A@2vNOW6 zsBcvJAi4Boq5LD;XefHFE#A?=J3`gHYNpbjeVaqQlaIqvYhL8g5C}gBKp{t5q{RhO zJZJj#n!|qISaI*HKo@!)5@P;XdfAD&H1Ws`@AU#m!s#MkR@l;e_X7K`15?+!N-4Ew z-3U=&jufVo`{9``k>afbzi^x>sF?h8+ZIgCoP3hcUz322z^>x&pt2)}y zn(5%qJdxWruf0HBZmUHIl9bpg=fQ|`JgU;vRT^@9Y1_dtr6J6hdh+HlJ#;XtkuEYIRD-iGaWU_QV%Wv5k3Co7qw}0DseL5Al9)+ ztKbQ{lgzqGiT-R*5JfrqojCV>~a6Pq9j%MXuu?G>g zNwcHqZWupw?L zj-=Q)kP^!*5zQf)MhGESkeK=~G}Y|6%U^ArU?*&9AeghBTAyoeZwok0gav^h4p7Lt0*b2@?H`Mu1{B+&^ZZ`dk+wVO|G*9ZLrOeL-imvRL7<= znB4j3?Dcp_Bjz&ny@kdd9Aw!A9rb-mp!(j_UhT}s*&uZ_rXQKS29@T#n+>a|&V&)} zX~&!SN!3?|$^FJFPptg8oX+pkR(^$Np#vm0EzF~-?bn6KCO2QGR$X2-N*c4iM$AZy?s7kF)$$PHmjHk zeexPIeQ@^*pwV64$Mv)Zp98)JbU^PNP3Jd)YrXy@X}eur8;PQ+y814XlbScT;}yRX z|1ZfyqGvAcVupnOXJsg-AcG_K+5AuW^5@!9*0`-#$D~Uj%QD2Nhmn%6DJ-win8l01 z=wa5!oQpnztGd)-PbVRU3{f9rsh+tlTe1R7`J_jO?-0e0PFt#XqF6~=W6|$IdEaGv5jUa zCA7liX=Lz*R&gXTEU7t4U6D_zvXWf8!habFR*^``hw?n%d(`)nYdl z5!smw{1r&r{a+Hi$}P9lr<<%q7qy%{gBmc~^W!*ae%SbzIyaTwa&h?A=!4}$f9S51 zHo};>yap;$lTU-*YOGU`sL``#N#XzQNSn?jf<2xJ*L|z+p?}9758t~Mh@G_Msz}+O zg7v@j_dXRq*{M`eeHE7!?a~s?-gHtUKGngWLSXNCubgl{#6==6h}`RH0clBZq1iO2 zTjAw@Cwuj5=q7c36X!ah3)au-${K#s;?dq8f7xP;mrR#8O&3u5Bbfr~rQZ&oW-l*L zFWbUjf~IvAEM!v&+>@A(x{umMvMPJu^`+oHc=wm@coG=JI3U2nkgrQ&IUk~+3Y1=S zpmk?;zY3OetPmMbdofUb$lqxC9Bi1I5y{8m-Qn;c7%884^?END!$w<~7J|oDAeYF@ zNUtU5*CK{+zP>u;U#3}wPX<@NB?~wnZt6_U>PusgTm)rn=5SHh)#V4(1oulf!YMK1 zQUB7|?Vjf2yzD4#%Q(7@A^Wr%Ejg4i7rUHf5yC;Wt83Ywyq(#|M8n!=&-7-=(X4_V zIs9>qeZm<9-ZJ3hH!!e#StNe=&BEwWYEmllLwk2EF)K-bj{e9X1o^B-G@SCqPaJA3 z`jOZ%(fA)J$mcUlj+VN!ncRKNhNkd6Cv5?%K{RGP>)v@&Q~N)sFl_d&rPj_M6#h2< z%@TrkwbdVCaRQ)pyCZ_o8Z=Iu!2f|OI+3>OQ5VJW2th1z2%hZ_Lyw%8e-Ku$Sj7wq zvdDG}i_xy5p>ozQa_lVXQakIu`jfUM{>$z_JS;-&F{^dZjEDr&&7(@ zkVpN(q*Aat9jdmv=)tvSIOy;eO!V!pb;Ygygtm(6ZgMJW*E*G~a@ z8~7>*MP!LyqppXU>gvMCL*!tW%kxRw!_=EC#LaFE*Jm+1)5atrlN1zR+`Tbp7T>zEW1MUJKtpMBJ}KUtb=$rv{Y#x5IBleSCFTv+CN> zOOYF?ed+N)DAlrMN~i4>ih2H>^<0LkV{_-Z=1;G+A~VMi2g@GX6leNznNEAp#R+VW z0gOAA@gdig*Mfws;Nj+nH*wkRH{S(}>0S~p#eNh}%*HniHA%1y z{L=n?a5o_6TNOx~w@yMqAlkQx?%3|)w5O@fmnxZzU-q=LWGo?GeY@zOpnG@fUdn1CzslWCiI-Fb)2EGo?X z>|4n2DE`yYEy4@en~5hN`$6TFZrR5!`C|HUKEpcn=(Z-ik!fb{so{B5_BIjb!(yn@jX*=ibm@dq$6K_$6=1$o6p10pZeX|1{ z=X7(%Q(b-d{L*O#llj-TBJ%H6`XE%9m|o={=$7~G-rh)3vNizG8`{+>*z%!%c( zFoQ-59!;W9iIq|qak&a=N!R%>lZBvoX0dN;#VV5P_rNI!N7o1@jd#Uoy08Nk(?iJ8 zU%emouNc%MY{&0}5sW(Wh8M*jw3Q-cD=-2HJs9Y=2Wq5ray z_H~?1`}u$7&b6#C|9#rqVV{EJv=+ivSMs8zM5-Jp}KX(C@UCQ3JdYJwu z(W-Z-R`Ld)*1OC{c)_3T@cRVJg}|V_Sa!vyRbM%4p5AiE&l;5a${&pFpjF%%ij?nB zW~zh#kvs%2{S&?V$@t~Fyt7t|t-4aa!S(3LcLf3=BIE_nD8^aLw$8JGA~tp(!hQas z+>J($+H*zG9nQ(nmlw^pOK=%_?d7l>4_CHOZ}I58sbY7>o)+fKz!h~K2xinR{NnI5 zo5S?cc^1$eGDrKi?M3tEIZ01qjdq@jUg%PPxKdwehrOBYWh6S_JWlT^*OCFG3kW4< z=)p)-0#)MjrM}y5qxKm;hoUoamMRcP2(*vWzEe3D)UMiJ z8!Jk{xge}?4c@JO@xGHCw75pdh?0;S`j@n^BUY-0abPgV&>+TAUtFIvPUD9rBftKs z27QK!6=cA2X!6BD@cM>Y!$OQT4eY+qh>&>y?ozI`CXs5Ye5jA$hjVL3ujVKBMh_?* z1QRRWpoO5a_BX)_M&?(D=qeU|0N%OkL29*Hv186))E|k;?5OYh0Onv1{2nuAHtLIN zD6)RrYlOM68u>TH3KlBoLrLn>OFJ!MG`)d)V5{^sZ;iK6EB+#VkmiiZN0EM41uc-W zJC?`#oG91mZ!}U+l$-zqD^Jj%cWZ){b+8Iv<(G-zMCT8h;D1Tz9+-)JZD^f)39K@X z+WTbg!ITh5@k?yXD@~cl!)$0K%rCByk$F`(VgSoMG4TCle{zxl;@df#k|6drKgF6y z`h^dfyrU zs!HmH@h{$&mbvywZw(W+p=)tPs>tEK-gZY>1$gHnb*aSjQko-TK0^v*$*ya zTaqVH{7s1n)GvkiKNRS^a`Aw&$i{S^s~X>;Eowoh{td<>eQo zkGYJ2Ook?KIO1mA*1EU*5N&48qaB6pDqnEr$h5iu`6*XwqCjHtsx;wql#Tw(^>Grgh`Ri zVXLIDSuR#`569LT3U8)%?y`z}-LX-54~pREF7-yfT=2$9ree_>mQ+%X^tjnOucDAc zU}1IZy0k?~Fg6!WA<06uP=Lc>W9oTCJcuh(=`s2ud+<^j0U$S4Oa*cx1o8!#XzS-v zIhyIIeoTUoxJX#?t)HB+&{Szd*Nedny@6QtH0uUzhrx4Fjt3oUu1<*i$YbI{kc1fN@WdgvH zjiE=KcER*^RJp6EM&Lw&cYC4W(;HhZX!7o~cyD`A#iqqcO4?7jaEzYAfm4M=)4R-W zqf9;yibawj^ml}Q8m19L&}~GU$(xXm1RYHkF>*1_8QePm=DoLuB%F2!p)*IG5_o}* zvJR;zqp<~PJIPBKGa1nM$rLosb9QplX!i37mN~v7XH&@}f3Dl0M3MvDqM%8$x~tU~ zXV>m`0Fbnj5b4c(ETY%^L$X^xG?o6e6Xd+%qZ!HYB!WN22E&jpr{Rd4Bry7G`bLCb zUdrrUA-)J2#G({ARujy09ZRrVZDW{Y1TF%rkK5?@ja6 z+a#uky1f-G{y(hrM&;K3g`YSA)jtJ6>2o%#&&8k=%94%VRnQV z6-PGAc~8{6$Oc%lL%l*p!&pg`Da<#*6k97Pgk#}2Y;5h1oNL?Q2UdBOZ5jRireu_& z@>!FigySZ)pB1T#qU#XTJGUWwxC)>2fT z>UGH1@ZS!>Nh#9C2hqhg&rQ;>GN*Qr!~=)xttk7Ilw=kRXW>C`#6=ZKgC43~eb?j~KbIrYkW_0Ap{q0rM#M7J%(S-7h_}|t4g|hShXY>94whmpYO6}Pi zwJB#sOVx-`Gp$*BQ!`>jX(LEcBh-i$q^OyqvEFwc-@oAg`~k^N zxz01!>-Bsd$7g)zg1C}x6X8mZD@lm9&S=ahx(C7=X{5fa#%racA)H&DUXo4Dk;|Ey zP`*FCZr;|&iE|~q+#b1>@BfUiLr7o9yi2RHw)#&ejaPq~#XV@TpXPO$mag*@j8|t^ z(Ajj>t8L2(d+FwrXo1$jg27o>=pNEoa(n%sMrB2TO!@cp5WM*%jPN{hME0c;KE&D9 z6rq1#_kOqOt@06HVEYN@tefs>Uh=%1bL;Z#^urOhj|-d2|D=;%n+bHbCe@IwUWgsU z3LUR?hIOO!y2p8AHI&|K9j4f#w!Km+Ts+6UaoX;SckOr%HXXU+!dSV+Y=l+t5y zC*enD{LdoGxJ%xS8>i_0ADPh=EAo@-zsOUAvrnGJaZO z%{zW_>(9r@K;`gM7GlZx$* zWcC=WgEG(e9Ie)|N=PDYDpcAxalQM%nOSis7rOa56VUYrveeM}H!8~7|NW-Lt8~zJ zXio}DYOnDfRcTG+zucc+1Mmk2;4q?mIHi7eda{a@ho9v^D24`=K3*?EM0ZsbsyCOD zO@Dat>t5`rjdvG^#d?>l%KT;8n47(lZDCAf8^cgo#v8OITd?}OfX0H^1_c(*bnvb} zA)8uTs+2T8h}LObWe| zS2IM)#=SKz06Vnv+{LO zzgx)!d$PrdkjHA-{^05U;^2IccOQ?ewxG=2JHz_JVE!)0t(s-#1sPAlcdpDHu(p*d zu@C0&nEqkdWRyE~dD&8HlDy`8U$%DWyF#?-^B=p%t)F_vM`|Z{V#P;Q zO6;PUKr*hmM4+>9q9aGcBwpy|1^1JhObK+0YdgKSUkt!n)>$_oZZ=N`@VzTny|p9IrDbc>c)o%xs^FQs90sm)Udv z!uK&=J_xpZYz8h_^`wNFuLL>*?w0hZKD=&{Z47I%N1D)Axwm_>@Tt_1V!Paacrkux zi?<+0PJ=VIM`Y?cd`PZ3(yaPd17I!J8q>RvY&@Z{Hx>ncSiZA`J^?fTM^i*jj-zd3 z5b|vY+DF!lqrb!p=^P{vX&m0M{P!qsaUP!&Bm3m`b8#OwlMu&!F-mYUBh*2>Bgrw# zlTY<)=czwY4_BFK%_qfJZF>RLYm49t>X-M+bNiuartezdA`uEC@JcV)UkWIJw>$S19N;wsdjpRw7Wny@5eKuvyNQVBF>f_b3~#zpYU@h}JuQX0q@))|y378fF`f>DglQhaPS~b@ zm$gNhO{wa7l5QLJj)g=yheY{oIbprv71M4qS=Y>oH~SrCKx(Qfqm|L$sT#wF?Sl`* zy1x~kcD~L>T|E3zG&!|1UqP`-W6oATiQ!<~X`S1@w#-Im@1d|C1dY{v`TvFh{$J(K zks8RF%9_)OD(!jNy##nV5utxL+CpBzo?kdmpGr5szQ}#GgPt-B1B1~w=E?r6_dzES zs@*2!@pCcED*1w-3u+71I(WGTsy?^dS}JMrzigJ*vlJ>)mc}AtOME~6uS4dq`WtS zD!FSWI5||SU&Y-NWC;MTvo=UK({Kmu=7=qv{0!3nBbZ)hC1ds< z&223!e5hy^;VhIy$a6?zEfeh8Lm!&YB(=_g-%r*#^FQ*)UobM{u5^6U3wcdE@i2mQ zLhb5iUcvUggkW^bN@pvH7T|EHJ9b1Q+tZURH>M<~+<09$ooD;SbatKpSiN=GyU&bG zA6BA}?+jqlUq$R03VG5tZu}+C^6W3P8;75VjtZaknI>v!DnyomL!hBjxNgVlyppW@ zmG5f4yVZv4d zSCkbR#AwaTZFQZQ=-s7N12b5Ut)1qs;4_q$jdaR*<7*nAu^7UzUHhX7>e}0uA_$!m zJSu~e-g$iKG{AIdN$j9j5bQAB6K8bs(i|6jksChQ&(ysLOq3S(U5>60$`M`lTB9jmt*K5(b{(ghungAVFJz(%4 zzkvX&<>+h%zb=MGJBVMN-$;H-%#_@(e)XecL7RoAqChrZ@+E+*B-y(v=PtR2 zcWbcx@K>g}G6h_oB%cES%7e8z`*WofD!8q5Hq5-#PBa#Q^uFz_d2YGb-;|mqhUxyQ z;4~HO&@U{a+{wILT$s(Z8!E805PsS}HQ@x?ua0e97Xi+&u;30qYI4wE|1Ex1S{mo) zH_4CCMpo%rcK5+&Aj_)Z6dtS>24VJq1orUY!L1=!&j= z|GSI(JQVqSFb~!$ScA#BD7bWR!FhlWFfN@pYZsnwhdHPb+NX6U-6rk7_DZEca0WSW z_FY#RPN|u2%XlDqe=vP0mwqx)*1IGJXaWv;w_+q|mZRCT4W3gv54!h$H3@3pZHsV@ z^kv-D6AWJv|D>aSigtLBS7oPfS)EfavI;0A@)!@Z4^8D5lu3@xqrJL^o$ANp3Piqu zE(2e5krSZjKN* zq-y}(jZet=kH&5Eq24E0+M=HG+VOj?01wKWb60ccHz!fq-4X*_Sj({1du-Guk~PsD zwI_C0oiX7*nkU%88m~Y9W9R$(;$i7#37-b~o$~96n!|=ENe|PRqQBVE4Qs}xU)`Yl z|Iw_>xssO{@pM$2(YcUuIfQVpmMhHldOJZbr>h3xZe{rA$2AMyESKv`i` zyjEVBsJ?fT>DtnMAHuQYH}PWz9-x2W33OC^`U|W6%#u&$uEYl7HO4|($mzUBP43ER zgm|u$%X^axQjGsy3mL)qw(Pd-<$g`x zpsyV%k(8E62di}AflTX-*^0P-jWVQX%B4;tpUqA}d)Vv(>g(DJ6eOw>rEujrT3v2k zoB8SznJbC(il?Ok&Rnp1$)~m@dFEL~*p#*XZL1EY(SksIP=dj2i;^!d0@hUQ{V-j{ z=O|~N%RZ7o3*EJ~C!U(CwISnLcO<*cZ=n|>Pu71N1BxZrUPntZD~XP1g~h$%p;pxT zuU1(bc=g-Sn8(M;4=GGMC2^CD0e66Fd@R_=pbBb}_x8JNYn!w|3u6xN4k~yJ%~c_i z#SyuxXE0!{NhLZCz8oG)q%D^g;)STGPe0euzw4LHV-kE;& zUOs+q@0%qa?+8~N?0W5;YT%jx^~&_g4BkxAUD>D~F6DK2tHubhH>1gNlaynQ*G2yA_D*6y*D7$IZq@vzjS2g~|sB zf9&w`lUmN>v%QT z$G1u9@|1{)?iZ&Hj|nIq$80UnTQZqQ4k>#wsUK*~Ez_wms|6!vQN%;w62~Sn#%tG5 z)Yyjwk)t6OfDVWOE`q^&^p>m?nG_u2kJq43rT6Eg;C=R_x_du9UEyh3GC_+o-?Z~p zjHu!)T08gqMg*rg5x<1RSvcoiyCW0sB|7p5xjolfH+06G;5cN;eV`cniCNLpr4bH7 zhy8S9p2-(@Sgm8gKNhHH{#@yVB+ZE#UTFNm@4vsDepx~7aw>nOP$4_%gNcc3$Z&B< z=s_I&`ral^RB%KYB{1=4KZ*GQyU<#6K?>&EZ$yY`5%qvvuzz_sfVKYQ69xP zdh3XGQcq+6m!)xa8dQ9ouxbm~5QmGUMnDAwXS*oUsobphlWw66Sk#lCrvH>Y`&G&3 zcKNNDMIw`*RxJ&y& zQ2BVQ5^#uLhYI5S%Rb&Kn5pI1+^vrqCks>!7U%(Qqr3?;0cx2W^wq=5h?y$x4?`zs13_7h@*kKmjl)Ix9Q=_-$^ zieEyKfe_q#pbHr+rDh_ZH5G6>FR!chgND2q(QAsZsJLVlj`y>go7Ph^DZNxuz*jXl z?6k;;L{2in&C@n-`8_04sIKF+5(lM8{o!E~=Irq`{yx;wa*YMkpK6)4IdM;BW+RqI zu+dbO!=0oXi56P@uWanXN?d1^R$2#?q0boat_y7=4wC0xxEFzr!&1r$EArxx;y)ic zb%bKZQf78*U9u*m%$PQ7Z9}X^{MC#(=iDl9$QaRP4C@`8UDla{qRgLT4aCxY zw0xw+(m}vPK*S%=F?x0&wNv4)$9kRPTi`8=nULk8163ZAOUt$0V=}tw8*0Sbw5^VK zdq*)-wtoGGkhtBdpZ4|Z@|rslKc(IzycE2|d5(Yj5{Nh?C$6{mobCH>e@$2JN;MMO z4<%jl4#w}lsP!M(AK9XW$O>^9Sr*E(N`&9z*I)`i_WX9-yuH?6QY|OQD7{wGH4P9! zs~b&jQgES-3HQwcyJIcFWMLMQfeIdp1YaUosL`$YV zQ(XhI&6p*$a`uLAt9DtJleV(KYmc^#A=p|g5d)j-Q8fRs`JC+{FDM)}T*2@58~;=2 z&rz0(Bk*VT?I)cC13l!knZEHN>7tXo5GAVn#Dq)WUU?0@WJtCgiJq_sOfGO2OtPxT zMQOiu_?>KJJ8Zk$@g2{7Hgwc)+4qf`cm9R_v)bMAl_VGYSnZ-l3G)0XCrCrK1j3&B z(3XS#iWbsuV5se1&27su0ExYR+97n0+|R=*G{`Ur2Y1}py>?Ij+#u0VJn-5d;86Q9 zaQcDx9dq*6No%3;W2pmt{+ZJ83Z+g{s$>-a$?an+bWc_LSJ|w${Vp}^!Lmtc@h03x zJUT^ZNW`Gx%l_Oj@A4>|Tsi-UM$t)OF0rN5h8Ikj1SAekyk87k!F@JQ4106b11y&% zpwpCJ2`c<+8H^O)dV#_dA>#yRS_Ne2LA!dGdh}WbQP#8iy5s>I{H`J~ zj5Pnp;mbyD$o=GWfxNVG?Ztmp-lEGS3;ef8n`zk^@3lRfE5nz>*B8`-<>r-}!|&V; zcL!S998WdsWsQrO@s{3tHJGz3*1W^H!trw^U;MM+XOL#_{z^0sWi$P?9w79trk0f( z&l;gNAK6XYXz;_Qds$X#*wu%AnPk^ow8`(bN)|FnbNCg_X8b+da$=}lS@rRj|7xkB zKrY>=NWBQDK-_Mw6C(DFeZIqgTrVsin?|I!*ovBzb!^v*dOf<|o)+w9@l2nATPJ;g zZcA)sZ-jO%*k3XHpI>xq_Oyb!L|IS{T12TCtxfFS>=x5;v#bGq9u-#f<{q*RQqrmF zq(@+d?{|?}#f7e{3(?)45lQX7%rRnk;PrlnzF(t18$A3ga2uDC+-~r?dC>u{{?y** z^xk303EePHA>jl&rEG??z(+_QGH4(5k`Rwl`_Q4wdl7aTDzPS-+(*r+s3T5v(1y3x zYZtM)0WhtQ+f-h_V1Dqft72C6h5r(DM)VL^7r1%$KfX2eRveZbURUXeGD4?_pZ6G? z4L<-9RN8Go;z$Tz6nAM($SIp|X~uRNa% z+fP!iFc_4Ude;9aMmVjm;%vlI^DXh9ej)pcTGb2Q_U;w&SD#^dVz6~ zK8)4CfWIU1SmpI%>x=@z01$bm&Sc`TtnR^=PKhvDRTLKUborTbX=lpMJmh4f`KFHe zq>f<1PksLU#_-Ps=g$82{zA#&9|-!J{ls-UNf=WVrKt@K)5%kV;Qp$dtNTscl^ys3 zC0Q(QIJJwtZP96hAb$G~^p7d(P^6IHYdg2RQu`iD5}To->_1thY$&m$9#(EMXwaK} zQ|CTCUp4Rjz<|H&tFdZ@wyEuTreW@o zq3R7QmR$N$4Lb?285nwod#Lyd4J04jt^~BMUAAl6y1Twh^9c<^dF45xh!!0D>cbw2 z*{B{#w|^L?)(oMe&(UTA!)=kLUyQlEDNGZb*@Oi1f^|cDvZGjpeCAB8@pOdKqQ3wxdMCpfMO&_tW+)bb73~NyJ6r6%F@V5H?Y{Go`f}Bn`IX=J+x?7s zS)!spQbMKvlx9u%t#>7}x1LRdgW$cGklmmq?1YUh#Z-QBAExF-eTE-O(^xh&4L4c} zXqDeAsip{&~>&A8`pX0Snn5NUVNI$iS=`IXMCT5DsVu zK%d68-C|DQ1K{&2k_py)W4iFnD}6q}_j>(LmU7KJvc*pPl>+|x-b_L5hc_^k;{Yk( z?08+Q7Wk8G@@0!u|4iQ_MqKkZLv2Jtd+X5}7 z3TOuswLOR25w{)!%cx74`-ow2@V(Tn*KzV!5D*k#t>RpFNr=~{ckR2LD;slOGMg1F zbfg|+iM!gKn)Abv>O@R^^`cT}M3;QNn8=G4N{2Rs*A zx%{RI!A7%I>&z)Jwq|IR^mEnG(h=dNxHMm^ZJ3c9|z25Wq034}ySUE5J z(4PMJ$K>!j!34i7bMMfak*>JMlfRn+02wzQ*_P+f)@xMSKL1QYOy%-y#~bC|Dad-1 zXOPri-Og2yua|5eQppOsSM+UM6^Py<7)pmj>_6xE%cnAb%1%vggSPzpFdNXP5Rf8? zVqAbnqZ-=(eFL8xx;OaK8nW#RO^6Ix+Rw73u8)M#4KOr2juooeOCN@u1Icwsj@5U5 zjzP`lgVeI-yQPFE$N$m1*6A_`vc*s?(9F=7Xi52B2oBib3c6$33CtdB%R6;Qw|%&K zy6CHBZSAXmmpVMsdk>Th_WED%0muJn4zmxhm~0*Y^wF}-E*y`tJIQ<*$rBRsI;?2E zFd@p-@qpZ~$`=PmX`D^GgAl%4w9c`GPK6~f?YsF0r-Z}m!e0adf4O;;S+4b)48s z%E?J=*wmBvZj`}fe4DIy8QtZxvw%ph@~$c*N?O%H#MfoWwWqvOA!ctc`Kxj#U=(2R zEfSzI^BG4_#fhhU&um{};g{d8_Pn{4 zA`-O*2z#0NY`q@qYvxq`^8zIC<=7&B=F20$58FHXRM-cy-b%N~w#gL3hKqafZZzQW zYET89gR~=2XX5e z6Hcg~S8NEA0n^i4#H{~l_zD2@`qDYgNui$ylg_vDteiQm4Jw#rp8!^CXt>1Ljwi>H zUNy-t^+0q*U&K2yeO@+EQV4Es?47_Q z&*jQ9+!bay!r1W1#w*8%nm#%H!;Xf@DvfJru-Au~S62?lDrzW>D)&eQ3)*}b6JwIh z3Jz#jZK6o+BJRZ}x4503_5|dd%jfB=uFUdI#xXnnP&1A&a!WBeJy4}CmqhRx=h!s83uWCi=<9snq%7zb-nuiZeB5~tg*nVOB4o{)-MVz zwIGvjE+5HWH~>#MYj21uRDhvu(Y22N4Ge81+3q_TS_ZS%2=RF(UQyrGy#CedOIWOT z7tDnD?XmhukL+E>ZhZ#rF_NKa5P7IiORlb(}48 zdud?$3Tcj|^!6b1=kNtQ}zDrxRzq%w7;SVVt_TemEU5N>dG;M*Ot*w(II(d z;3^IQrDgoAS``S98#=vx4zEf$+e}hc+NyMS%%41^q3Jl579E+DQN%rc_s2PQ8=>GI zyr)$>LuM8FxJ`LqjgxA|5iN}vjaCwPPM;de~it+vTsz)%2Vlij|fK1bod`8QoHYMvx^pGc33qw|X?Ft5)dc#fh#&iwZNAl7%E zb9kB^WUr%vRm|2!b?;#Iu6D7??^IyFP63+O>>F2VZW8#8*EaYC6L&e8G8+G$M9n#9 z{H7F!8RVu*UsCqTkN2HcjHFvFJ$rqT9(AyGTk*!{Ojd$?uAIfPc(SjNfZ~O-)>=H_ z3?G6|lBtHtEppC(O)0LYE{I3JN{q-` z{09}F@40j4CY}pv{mv{_95v6z$*jc1*kdYEDHZ3;GUVCK z|G_o)e`{uYSkIJnZBOlPNrZs7vik%>Wj@%0%vSljIU@rh#z#gN#!EB3G`^B*wj6gh zQX8IBp;t0??ThPBR6)}MI!T_awH<9_11ml!H>3bj1}Y{Zvzl?3aLgRr^>C_Z4I6$OgxWOo59AF0a%`Ac{q`BYW7S{Y z9Xt5FeR~mMH1D+1F#E@gT<~kxj%fETVMy~Shn7#KP#!j0Pg;3@q2l7Ou^X=~%};6Y zf$PH4wL1O2tLm@s_GI~}{<$tqZ5?vhCDKNZeUF6r5~W|XNNpZ=ZBU&2CC{4#7}1(X zv3o6!3Yld1c0cLYrL;W%eIJqFY8g9DCf=%P(@DuNyrcZLsJ1rP)}`c!V^Y;>zsEY~ z0>RR)2P{OMdudGlQ=75Xus*6rHS&bSk8x@-x9wxX=&zqzoJSMV9wXxb+s&eYMor~obBJjkCOcqE~Cpkm3F?+z7cv@-{&oMz=)PE&=y~8x*>xoOQTg z6;rNUUL2K#4*6T9p_~0dI%WTH_SHn~L0P7zp_OcSup6 z5xP0Irz*L&KOeqDkMU6dlzpdg4I`?D7zsc1`Zol6+uqqTt94#+gGq@rD7Ms~z?ubY z&23<@NF>A5CU|C8?HQdoSj()GdM!wE%C*+sH7f=p4Ljyb!uJ#OpAo*(G|I@rcVtEY z7u{$3C!1q=xi{huaXIZ%YLLF6wPB|!8}Um*Emw=yOiYj%d7m4z-~Y97_jVP3?Cd+j zg`33u_HxoQdRoy2;dZ#!T683zae2AdU+8O9TY*IKjYQEs^4VZwcmb9FE}MKQQpTbR zdGVsGNgOQzAF}z_#ewIg4u9eT3!XJ7jA!xNSqQ1=%zbiEYm^CR$x~`jYCW1#6zJwJ zir!*I_uqCkr376qd#Ip$d~?tg4AH;KC|18Y>n-ynL0E`wye-5pPxXhrQ{S#lZ5ex6 zwM%<)xweBWp&+!*_QzGRsh9+M?3ssEV>*-R+u|*z+i3{@5f~^EsBXFl~n%L=Lw-_4g3rE@Ud-8@~Xs4&PwADA=K}07;iu|SFJPryKQo! zV#Z7}Kn4qGR8(mEqUgwbBPkIsas~qu)jxGDh~85yxYfhlzT;I}P`N1UIl`COiez)3 z{`|q-(Yx)rmeD)e?^ngZh(1Ds6mT&=mkSuC!Rc%)ZalqHA zY6fr%)ar)}7 zJcW!^qN2M8(4j_Nt2;^%ZC^3PiB7);5fE)w}t6q_2fz_h2oK9kg`X zG!_3Roct=$yGE)Z(KUe(n;pQ~uq9=D$?klowdGb)(W>htuSor)8M~u>n-v&!>8Hjz z8-97hTw1n=9!!@K$j{7!Jqeh(_@pE!F(n&b6hbjg>PC4s)dehmJi36~KCA7xft$6_ zBfU>l43Ngqxt64)8lX&v8aM`)#YfbK8n9|7aQ?)2bKS=YQUFNd%VjTU6+)tR=EoO; zNEY9(x?0@A>WW^Et-P4Qj6=TV?0ana4jv}I~}e6D>&T#`e9;_h`NKL zk&U*r?%%M9^R`@vx-D?!%%^nf=D~1-!_US%^<32_ZlAr&0PAd;k7x`G+wCqp*${-Bg#iAK;)OUVB|z0i`y0{YpsTiHGh$iBDw9b zXxP=`Fw-ZSz|w1)05AIzu&CzvSQ#_rp8hH#Bi`(B>JYPO=yU!uXuS{1{H6eAd_PJO ze*_345a-MyK*=|`7jaTv8(!~6BmYgs$t0DrGKXpU@yC5t*a4{vh;n|jpwAybPrd?jR`k_&0=aU>ST}c6lBG~E?k}aZ(mu5Zn z7={mVdzvYs0rkooUv$d3)w!`<`zsM-^5mGS0LcBXUhNiLnFC;6NXM4)M8j`V)?G@V^$3G@=V0(hC^FNUvF=h#i)O15u3u) zR$RL!wzcW>%OC;j_3c%B^`744A+G^kG_IBGIb3TqK2reb>}n@+PPkAQiI@*>8 zdF0utw1+OaB~dAyAeL3#G$1%<$>w8eVx@y$-htD<9+tzvd2fHEq7hIjmf?AY&!V+p zsq0ORQyYg6X8HhT7Voy*xo>b5sWg_G4v^U4DF>O8BYbhGR;JXZT_uMuO1RrXZGH|A z#&5L_ZJl3~Y0){pu5i7#9r`5_l02o^Do;$AY~W?5#$+c}ZV(Eq??jVCN-C!=*@!_H&X+3B*fJ zGv}518%GJ92x+6JN6uFQN!>2H5IE7cTb3h;Lz-4tKRZQzsuN!#4rhaiR459+%5i%_ zRXQpbA`tLFWF~W>#e&RYj@NF!Kf|C1NU%(pzWX#1p{;H+DZQic{ivl9K}j2^V5aj^ zqZ5~s?C`#>o@oYL&?54o>rxT4h@3xu6B2nWPk;SE1`{y-87Y9L6(6LEk;Jc;l~6F+ zQ4S;4IS}`Gn@!G>lA76tsXHE$RuFp%N#9VTGwREQ3V5GEs?v5B9 z68W*|oqxY=6i!UL^X@%>sKVfv)QU=!?7#rRG1sy&XKyiX(#6em5GNujC|Cf7|Esy|;0fqYg36%fP80}g z;zD5o6?SR?(T}uvne=n~dA`fl3)IKWh3Guop8wn!Dz^Nu6N1fd9B#MZcG};C0%|7z zG?r1kOjE87zGWyz7XF@^DD%>=2Eh3s>x_CSOY;nQ5WL?38>IT}NtN z2qXx|Rh3F~R13X)85kFYZO>V=Hinm684z3>a#;mN!VrHzZMpWV|D(wey(NynSJMmT8XUID`3+UU2+8rM$b`OHpM7mv z7l1joc15!NN0a)9dX>1OURY7iga7BHfX(RPn?s)+s#vE1qzn`OkEYI1mx{{!EXn~< zH9thy?)_{WNhXNowSen>_nfJ43v|jKgnwXYHcp+hQyGiu(r|oqm$vJ1Wyo-kJhvrJ zcxT`+0FjZ#%c8IE(R?h_BBTb3v>b`pHDK?5)Lbr(7ld4ccKR-|Z`Zn2m?o7`bWj%8 zzuI3f+`uUB)C7k&OXm$rPEgARBH7b#&oa4FzopR6FcEUiWqs8+0nLmj5butS*(8f6 zsE{HbQOCb=3=e|p9E~Sz+>B~`b!w?TG9Lsvc;Jprb=IV*tH<*bXP|q^BchpzbYV6% zEEf)sP&DU0=2omX@*W&$8^(@ot&C%u3A|dQL_Vc0Kh6%lquSMg-PIAl-P)HTG@wmT z_?X7m8ZV;wHf#+ok0q0@`CH38Dg6?>W0{j=IV+WMW_(R0-9^ZMHnifgYr_ldVauH? zi3F~VZwp(G-#ZipZ0AEL1jbJq;<}^U4AF0zzkR=#WZ5WIj>VC>kHf(M%FUr%MIQi~ zEJ-gh^ydxMD8FPAWwa+3*}#VlMPotMW=ohwfQF1ywkb8HDa6B5*PqXR|8PFEA}X7uD=G z{|bmSwTTsZlb13E*bXcRFllDEb(htrE_Rr$jK0Hp6CwGp(d<^^Y7?cb<}?Kc^UZ4& z{^p<6_LfB1gJU}}Liaz_unp=u^U@nC5HLIO+!mHm#?Vp4YOOTZ2O|Fjx5-a=y7I#8 z@y2XUp#|;J^s% zIvM|tM81KStHT8lWJg3$?TexQkfACtI0h9JhFMf@mX*C^Ia}d=Aujc7u)RTXn2!$5 zlsp?PPl1QSo{Y|Y)6BRjlQ^Iw0lI73D}l6#%jvB3`q5`wobDp~WJPMW9*99lEGRK} zjOpmSx?O`%46#ysu2L4fU4<+_*V;uoT*mCB7#148*3v_EXa}(J^3j76fyG^-n$KRB z`1eh4FTASgQT-u|W*p~7O3=?3-2@EgK5rJXgqSnjZg2KuMx@*^k{Zp}KQM_`yw21$ zw56yAoD!#x%qs0c%t@Cmg+7Jqwnxr5i1m-lq?g(+tXbO^{ucFX%We3p8GBsPllo9@ z6bRApGra+KyOLr$^rceq7|NYyF<<&3R?^-#>8?1U|$^dO~qqH_0!>-r;iK zg!ms;(Eg#JHJq!n`x)ZCm^EDB!&O8(6IB#SOc=cLT!}2x_`J9|y`iT^fd#9!R^bxq zH2Vdno2JQ3AWVA=A3S^L;?7fz`S8nH8(PydDmI9OcldR2SwLv6F-$B{X)8Zo-c7bc zq>D`hii#(sUymwJ9nu42pPVM2YU{jNg$}e-U`0Zu=_df1;=3Rhm8m);ORD3rOD0zJ zalpcP5`{NNnd8ssd(*=9&v5Ml05Y+&5|5w|72-Ia^xP3=aST6y<}FZ`Ji(>S)D$24 z6UD;oYri!Jdlm3^=3bgJ#~QHlJQWFFiNi(p2Bn(HtL9hqfD9Qo*T1axg~6sJ-yuPr z2y<6Gp=`fiyO)p=6mnv!&Hmn|_|N>v4INeWX?2~}1=rrPL-m$JMJEdm52PIx3;*eU zj7Y4LhUz=RIN#yL>*zYAp$Kl=I;Z4QeeRHsfwr(uJG(eBQR)RCL$!Ll6kdc7K6Z!Fl~=qkds&+&YS+6`*%XJ= zoX&qV8{833d}ezbBVM9(R{)zER|@H098gif6!aUH)%A6W_%+Y9wr3ZVN$CQbHtnny zbSQSL!H_xm?^lvA%kfDR$szE;*Wqf1@{{H)*3&tQ(Qt<@pGo0Qxz!IC^9T1&@!{dR z-$sc!iH!|1v{|2%&*6VU%tiw0i)Eu-{Y(bRR)Hz6YZT{f^I1VdcdrkI*geM&vKC&_ zi#d%{oK5nzgek2BX!EF|fV@GYq99q?NYBfXJQg{=>?GXLlmk-!8to;m0uMcFcmAxi z8&w#>vHRW8`zGK(f|c|2>8&}d?Iu5NtN3E)cLueDPxbxs{qC}$&N3W-AG~?qZ+o_Y zNZ@1qf(1N~9gj*^uU9&6b&^Y3Ps`GcS;x(84>5@@k1(xSg}|-`V3A+-)k`aH zzxP}?N6y?)je(=*-A*^}pj1NcAZn^jT)##1)>?xPJLK~@{@f+{h&~zqi~y#xT~rg! zrr1rVt3>+PB~MgQeu+Uff{9;I-1QP&NbNSZwBmod;C{bMao=9YgLNv$W9{Jb;-zoN ztTh~*zO9S>u$>5s{HJR#@ej?b{5eOQLow@3sK#o%V8O3J1u|KDd3DJfaVsx1^~2kC zd0h}|)>_yY)Kc5j=mn{uH>z>=Fxp-gCdWRSot=}PIh4jCwffzWreRC z-uc;L4XY5cUDN9?9n@$u65m{GrEj9Kr=fKgF0$<1_djWT@TgS_ znAvNum1|p*nz}E^S_W*}$$D3U75JC@*c0^SE5W(oIcbY%hLn|Q;IYFK4)C}cq@-$$ zdEVOncg`aCPNUGvtGHE$`~IO#^UrxJ$Cssd7ZxC>sFFG%sY-5gZv?;l!^@qazFso? z{iU+)*s~O1A?+#j_x0E-o^bZeg_;}BUsSw3YDzk{H`gt?+A8R1k~65SxP(;euW#aI z636`FeKq@dkq!$lZ?{SB^eD^t7Av{4s&eXdD$tfWH>u_U7Jx)a2kzaG=bOJA<|2d) zQ80X?p%yAaKJB>zGI(}YnqWa=;=T6|w|EW0`Yxj~(t{)p5$f%a$`yX*YZ(O3WzJ;B ztbDxLJ3u{wQXdC^N*oMVZVJSW!tZU&NxI-&BYZQBGdqXD!}{SCRyM2L{qHa9wed?B zdC#8VeD#(pzaRY+zYv;~bBAztN_xl)uff7L8&-^D+aFxz7n%2w#9%o9yD_%;cl^Oz zJ%KJIoR_kA7mT!9s>y?vvw1q76yNpLKoB>_R}K^-TC!&~dMyE{BB(6uydUY0(5s*? zR#>?emqbw!fTvRDK|_8oiEGDH-{@DQ<71lX$eI0G3*PvdNzjQVPx)#%;B2c;8^UEWwp=8sd<2=QLUoW)sz*4E(3L8@SwXZNJ z8PHi95;3=?%S=jZ#YnyFDK%7CT1=e@P4fX7H1i$* zNAAVu+C>$QX8pPIxxqv|vFwEI@Al^;SADjN;h=?@`$B=!rh)}r9cV|#<+U{R&B(3< zYozLE#Wc@X%b$@pDyXoP#-PQ#BQ@CT5vW6&mE!-NOvT z|9ZQ6=L+laCHG)?`=0L;&qBVC`-^4UQ3x93Pz#6e_x*zc%hoIe=PB6zCh3uS1|+!H zyHgqyn{-BayiT?tN$!ujb8l8^N9$GDB!i}<*+3CKqe&SrS)8e>%}=-bJhg23@B8y@ zo~``7biaDz)hiV?#E4JsxNHJ*+s@NKlQ#x;Ecd@1;SG|^pqr3%6^{e|$R()y&0yp} z@_@g43aFIa4?aiUj+Tvq%n%j(pEM4_zKqBP4#Z#5#n{WQe7KBiYp>C|ZCD&*VP8q* z0M4c?_&Xq2wHI;G^DGB7;j?tuMT=ye-%Nf@i5V~C`J{f@_@vT|y^&4e{~{V|9u8ZT z``i1`!+b=Br1Ye|Ku$x{sM3ssHm&ji3zy)qMqR4J5#eV}19o8!OwI4>umPPb$tEex zelQpNOQU`e1Z!QGJ%gucn3lB1jc-^i!%)R}?bhBb#G^`RK`&xnBlb#A2NdPN8cMt8v2{2=F6C* z1!-1LSg{Oz{n;(aPEVj2IZEWrj88^v!-(;lTR1_|y6^y>W|GuyO+)sGFo|zjM9WTv zpAXc68W`y(j6KQ@gnU!mm!H2d=~&jF)XS~>M?;uOl>iNLM~9Ew+Sz1{c6u%_ZAJpk z%PwOKF{O$97k;> zqOiDQi{|Vw-R3*3R{EQk-j#F-?zpMfjya#kn`7T_@+5W19OnD!viAzULOS#;LEkWq zJ(SPx$)(I`@b(79znjQZAMTxCJIAj<^~a}_49tr6Qu>|Z%$#-xb0nO z*)Q2{Ll5j0NRHyowRE*%xr16q2VdayTZPiNM5V0b(1Yz~eh)H~HtM~Fg=?mZ`-8!& zsrCh-oW?G&$x)ZEq7WJ(IMVtkh>J4_?DC;)KX`zcd=i{x@y9bzWw2z+oo)-#AxG>7 z10VXKjxYSpdCW~da%yTU90^Rc-Vg;W1H!v1-$!6}ce>ny=21<*Of{?SqeNem4v0{X zIj{yxwC(0zHHX^U-kgXJCz$L}M%XO>>Vr_2vwChhn#Z#qtGqqPwRXA8*t04Nq$zc| zaSG>iNPav5R!da7x0A9xQCBd1tgB?ovi#7QLyC5gxJ12Q5GClb*Zri*VAc*WJ-F$Bw3_|O^mkVxXKaURe=iG|@I;_}uO+|gY&1N8 zq1ui+{wLn58RLN!i)-cOMYe=P*Kz4ZS_B~UPp!^P{wv3fh2F`K`EC6$Nc*vjwlSc(Hxu1z;=NcM1T> z+SrB2L*JHh)}{cXVC8|yfiBNr)xR;%`fR-^-8WGCjFR4XYgK2Mg7%mu(BM%COb zFw`$<-ZfygfuhgU`FXLni((HAQce6ENv8KP+B@7-)?hQ7+cBnpBH6_ zb%7UnUB_RB3^C(L>Ycw_*-luSRj$z)7JN8m>*R30pKHBnWFKKi$<3`Pyg-?1$#D?x z8Q})Bf$?buye1Klrhr$?ecx7}k-1a8ttEU8e zkJ=O&Elgduh%f%dQ&BaPw54jkQPNdbY%gqXz_qiaiAe1!hWyg+rzFn69`R7z@IG?+ z*q8bq-2S+~(K0}KV*3yhc6XFcwZ1dHT)Omkhi&J!y0-UOPHSn)xzf+Cyl!j^l@*`o z0aw4Y2Y6Q6PyUg}y+QLXCz*Z-y82-)Il!UTEZt__@)V;u{E@{YyJ0XWY_A_rks+_5 z8N{YPJWhNpxhl79hRuW6-9%aAd|dGwU#nL#!qw(()kfcU8A8u|j1+f&tld%3biRD& zKAV8i@1*C3TX*uSD5NZ}f~+d2$(hHM9@vo1lMQujj7{2QtxPlW4orqsbA_CZc@OvUEz*S+pMUkv=cjJV71n*3eYcF8{B^9djK z{p_c?0R7sX8#zZU6(`yq@aJT26`*+CIB$=#xB}`~RK|_{BcW+v)QH+~zdZ25wNQaX zXLLjnWo6x#CQztZp~qJB6G0m~lzH^*Mx}Acz9`>Qge!_u)crx8ftHUB4>fZYc-6?% z_juN1w-YcES>oE7%iu-6K+fJFr8F!5v*`)+HNcSTa8Ovh%~c_XYX0QVbLM0kpJj3n zQd8izupB&^`>L7u@Upl=CoSt#IWogS>?@@_OYb35C2YX^?0Z=l8oSXl^XQ4Z!w&Av z*6Y7DWm}u(0K2G_=)*=O&|WRgkynRxW*wPfTjn{|>K{pMVi3@pMKoM6#H@Wx=zYJ# zKav1x6kJM7vbfUdMpL?&5;vnFoNZJ`^%GQTjzLOS1vKuOPM7SwxxL(UZozD8LU5du zDj)i)5yxHE<+|Gv#V~2L%BGg+d=>*vd<93?wIRof0-pqfWVqX2ge#(SwBm4*Q)iTZ ziH^a;CL}{HTt@&OH8K9ZGu$|sb~_&0ygLZ|B=qRgaWUcTGojM^!~4;bixY0F;oTV$ z-}Zw!IA2B-OI9B?8ND;6H~P=9iGd2&=JPsgS4X%OLDm@i+ms|0=*Kh`gjg1oprdNS z0+;J#(mN}5H&YEU!+iV7m4VWhyZ<7CmfE;w!WlJ?TG#6 zlE%>h8BlsD!;~P9Qfw`$Ow9M>1$|yh@X&S88A|vV`Nwh@`8l%8_uT%J4_L+|p68R_ z`e!RU&w$54+sfk`ElH6GC$z5$%4ym0d_{*5y(5lb%<*U~+}b~8gLbO^ph+F{Mga`K zdQL$Jgq5xF_BJ`Xxql>0!EArw6?>~UlYbY#A79p-hC&xCpBMxXLjCv82S$Kh#+GGd z(_6%-=d?qXy#Gg_^#7GUEujHsR_G-z7l>6s_9E8rAIYxHY|@T_+-Q7ZAv%y}+C_gu zbgN58KFi)g5x?;Gva*9V8w@!`(%D>;ll~*QtjoR3sPWVb=FxEWTUiJSf*v|_-aURW zU|QotzQ>ctlVaeVHKYuq!F<%jQ_bY>VOcxf4H(`@?{VsiP@MDv7tAWTO%zOD|W#a)-KECS)t>de&xy)4|41w_5BUfeuBC0NNEVs9T zKY9f+=)-ajZspj%6?1@29=r+QM6b4oXV_+Hc5Ij+xhz%IM1dDU!rVp&jP3tK?X~@iXK~OvX8RHvwtd* zQzP$3rnXa)%v+yTVN(xL!taVkcNI}UYs!;xKSeIi>02r#trHPq)u3j%rjRW@p8tjy z;|-lEz`g{XdlX1fU_M<#`~C^$W})FcJ`4J`fVc0JQ|W%)MBO*;RBp@03>LwA8_B80 z3h8trbWhyZz{eMkVJqN$hsuExTgJ+|#Rp-zFF{|}PVmO|HM5&pTFs(MQM+!B?hJBH zb>yo5@@Ttv>v3HAroLxcorKlSxr zq{qM})vZX63<44dc8IJ{lzwcIj;8S~7oU93G=v8wVm|`QDaDxZv&*+Y*7V_8>6Q~S z3^WXYkSiZ>K6J+x{s|WU5&{{zaa!O-Yw&%`sag?;V%Ro&zT0-+# zQw1nv(37@dq<4Tx+%XBZebnFdEj>0U810I~MKE7d5>|v|y?ChU13O8!&Qr}%y zZlC`-z;9KW-76u}mHNP~kA2~Qyl(Oqc(jltt9X0O_(~x~c>9lA|By+6S(RgdYZowh z$H?YQ@e`Vpt4X1bG7l`Y&F}3f`s2MM;9WP~Bh#@=G~&J5U6bvjP$`WY_-fK=-rMo7 zjg9xCSnu)pmX-u0xy*259&H$A877Gc-H2fIS6+k70W4m5TSc)K?E7_a>h%`t?3EK+ znXmHjL}z2YVLjIRgnA{bUkS4t^VDgv)mxSb7mRY$6L~maWmd)sQ zM|z9r6eAtU0|)S{cFF)T;L_#)iECVkHk_@LZGMPlm_-mAPjl& zYfIdsB9+_2sge3H_LtymF4&EKModIX!hGh)ngu@bw9>;+Lr$+*hD|ySMW;OxC=OlT z_6W6o!Fl~7KDKtzivBx(BL}kC;kyTK))d8LwZ`_2VRF2ep|~(jlW!|IT#K9 z@vHa2%U0$Oerxi*E#V+H&L%gJ-)9YiCdGDuH7CA^eQ+H2xH@S=K{1w-q`aad#{D#k zAm_5JfC-M_rYXO?LLw^bLH&h}!JzT@@85n;KrjvthIC&0cYb?@og5lRG=gKQGNOi( zmj~xmKD*?vzSX={F4^vjLzZTPI`jsf5=(-H+3HEb)ZBD{!P3Na$#3?eS4XZvUG0D8 zng|H%8==$wBMc5OavWOIethwm=6^}}X%MYy?TRKU;Qv~@oYVK*!J|v6uPwWDg}_34 zYL&rdKaX-OYqkD{PbWOLdwj@bugOc5%U~IVjEt8PoO`PGyG@3uF4Fa0!{>Q>v_~um z0hoJA(&N2JrG3T}Drz+Y-^MtM?7wx{d#RbT*$xA2!SPaTtiQZ^=ysq%0%CQ-BuEnj*;*f{JDD2FEhzlI*m7-unjaINOMs z(MFEDZQWswhF0~10};Y+Yx8>fHG#jTmA?otEYoRm>)|apV3Fr*IweI=wub`JIjOeE z=T^C}`d;^yhvpvjkZ}!Wtr!}zfhQWu2WG08kTdr1I9qyKCnJlDF>jDvNfjZ%nNQPS zy*+Q5?p2@-?RI}${OafeOY-75oGx*rYruQI`C~0BC!_mPjGtZ7At$j5{JPxHr8x&I z?h90kI?7X#wC)5gf5Au*(;6k=%}PFW>!kv|QR${0aF3dU9`u@-Hb0!oI;gp#ADA`q zu2aAQhW3}*HIjC%8?ROVuaNlm88cV^mPHaKm_BT=uJc{H-rzY_fhMCH2KmKa%X~w_ zfRF@6I7%>k(P2i@n$6<|B7Nw@nxS7)P3iL89tm8fTusX}O+i184D{v_eh{?wIPU@s{d7RA5lE7|^9zZ%WzD++GsbDSGB34>`YW${$7u^i^$=yh)~@lrd|ONYwbAGxa&6;*^vbMFkKe z2@1z_%~u;1SiB}T<-~qy|8p9RZ}xJjKNaQD0iXu(XS#(laKZC~7=LOU-vH&n)*pw< zTA;g7Dasba&_>HX1Et`9-A8Q3_XeVFb7T znfFnet)z&2p1(yTL9v!}V~8H%+(VQ!i>_^2XG8kaupNuWtKm5(=3lRyv@85%u8Kj! zbEA0X@8V;YD-w1emiq7~vy02!1D&4v!j=8JcpA>p5tN&ZI0{l_&3ahP2@<`fDye$O z!#LdJH)0~7>mY{sptPByRHRuPn*k>JRDqMxcPIyufb%*N#7;P}?9dU~ckw`4a7?tv zpSS;XoGZSwT;Cm5tXiHF6)U)?gGiY8l=j3R?x0Bt>3nf><>J3Nnpz-ENY~@7dEA}5 z2o)JGjlj0OZ6^71f390)Symi6!)5R2;z>xQ)pJJ8An0Awg zUaRb+I}zUQ@<_A`Tl-Sb-s!dqovo^5{1|x4e`!@)Ib;HczH|gGJ2?70qO^mijZEeWb8MZ|oH6)4g};4ak!AQV!4Sxp%wyKY!2bnM;41##$eEyxtr@AlM4j>auX#xx~R-MZD{X z3T7hDM{Ijpt+WVzyFNjsRW2SKWF0tHdH=a~wrJ{OgR2rhKB3jLsG&3SHdITYynUA2 z27KRAzB{nEL~koST90$5QUa|hf&DY7KOmJ>G5+%6zI~ZYj0ET;m$KX2P^a5HGjTfB zJx|KJCxEw7%o^K%lRa_h@)q#uN%P zELujNlK~mnS!6e#?TWL*@^cxLxuh^wT>KQ~a|t_UQHx$kJ>ym{TGJq7B!GqjVmNiP zmYQrBH!(mAk`2{}06Z0VNEKdRd3n6qnSiLbWS%fQS}+ePp}ZaC1KE_NJn) zvT!i#6Y)z9Zh}g?SE|IQjAY}I5}}8iSLQ}zKLNE(j`#BCc2lS&<1dCZ{~K!PHj3y}E4eT`iFC4hl)O+ezAyQqhL+p5UQfk5u5I5Mfu2Eu40U}AGwTT&Mk}|o znyXVSntKNPRQZ4P3wHGbj$jZ`12~-}Q#)?o%zOzcb~}vsN0SQg z#6F4oqA6A$N7$&|5CRhhogSpVtS7x$lb^Sqsks>6!^Uot<$i>1;`XLNuj z<^RmxfrK|_jjcX$k0`MZ;kyxV&+dUqxs_&{?eAAG{Scznd>GpOHJaqb9>Bn><436g-1hjP%9eu{MgT=g%PBcNR{7c!UeH&_o@YxWkayKTit+L??h zUu*0(t&Wi<;@S0^>xT>D;xVCb2r4LLAI02EbVi<O0_}i0x|k1_9plUbtkm%_@0g z>NT_+&1ySdyG5H=V9nYw9PfiXQO0=8zflkn=hVw+ymV-X2+G5Zi7^p@_pabmvzl2W z{14|R80H6Ej4ba~${9@vmBzHD-0`csaimRp0b zeA-EKl!Q6d=jF6D{&4L8p}D*yT`_vioxL50W{Xay578xc*C0!g6 z$w^ca(?u7fuH$7Fl{a6Z8`jg%C%2c8%oDK zv}(g#`a1NnfWlO)A)B>Z#&OL^^_Sw?pD-KK&js%204H<2T?UrrZE0Ezn2ODAIX|=t zO^Va(1NTB*mgb^zYM#3Cfr2BQudkrv9&pnaBLK?0m+suJiIPKtqvWMC)rvG~`K^=i z(X?PB;S_!m1>1RaWgw})RQvaFWP5Y_icOxqq}iYcrkk6^9C_ENA>}oNNA^ z5wDRkrRQ}+MTCv!LS2=VyX097+1765fH1|9U94ozhoyEyT-4bqY#R5P--2=I7h&M? zT9{wvqs`T_^)aK?L`D^_HyAFE!&f~Rl;XDbz4mYO1S3pX@`wqXE?yA8N(^$K3AD%( zNW4d139tIHy}y{IFEp%s3Fc#y#%-RxNsTD$Cj=M>W*&N%An7P7_xsN-T@G)%`Fs)x z5!CGpnPAs^%*CvvpkCN^-UCE1Tw4nO+txIZbEd77`FD#v00TSxyXAAu^Mj)3T;Op z-WF1PSG`+*1*pvjf?MI{Oyro$E(RVgz96A>JhcmMald3q z|J^0@kj*tE8RAy|x&<2o)~iqxi;JYT?_FiC{WaKDhP#ilBsZGwx4dNLY%TqR{!-LrrYYU_{T5L>;IWd!dtTY@ZN$I7k~M}@w0%U841FyP9&+^0-R2!w+?8^NU4lXs z5s|f+jXC-(9Gg#Cm!rJVbdPujyAA@fZ$-C0n%H}r{JajPR zv)hIN9yz^MqJsenmR8QZaRF0Q8S3@If6iSl2?48y>6QbH1QtHL_b-JpugPAG-e~){ zq1cesIcoMfkmMqqU)dz%myfo53FcE>;G;0B<*DnMUq~rFZ>6auKk$KIJnIIRV&ef* z<8H3)K=u^JV;sCDmX%C^2a92r&B&&@kNRdb~}q6lMkdl({Foe3uR6_>8iU_=n}<1qipym$Bew>dllgX_Ix!X>f* z3BGBU(1T*8L0uW{k;Eq$oS{lBBc8$VF7*h+xe^OO{vvENh0!jZS2G(J+U7rU`7OQ2 zfof%FrWw5qET`eh4a)4xpkxnVZxM-WW&P|)=RScey-hXAF=50s2K!u$7-@1#tbHcm-NHkZHH)KfsiHt{W4-)7(Y7qp=X!$;cg&qY56^a-uBf# z;Fq3n(r^=Ku^}&nX1Jq#=@*}e^yfJH5$wv+cUUlwmvg>&$MM1e>1lo=8)t3)`MX8f1}5?uAG9g|;!r-z z9>HikCnCC>FTcP(nczalbNlIGU{zVB3ChpUVlI76!P}VkhF$*s;}(ZYyNQ5?&BJU| z7&GI71)5#mC23&xJ*EnDvkMTGOcw7*g{~1AIZrU+w5x z{V))-QtXK5(=FLAo%TIC_4H5dSi@gdmqiUtd_r2IL=;h4gUcAc2?hAVrB78+i#n$o zcAHYyWXR))Ng9?12jys3s9%3Q^6A#w$hrnj_ADN?2vWG*6lGNQ`#WE9*RXkZMH1A>SKL zrfQ#6jHO$6veX*b+!?#3D2s18?$oCq5>4o+SLCY=>d!3npshl`w<(6CH}CQC3S4uC zKVDLXmd4Suj~O#9I=ncQ7B`WftLzbbb>XE`D!GAl(|g`o{a7l>SoK9~$c+}jZ%h)Y zp^X0^B(vV9@+wC1CwsMmnIi20*u$@t`KgKAE*68b$aU#1X?1r4np948 z02nk`Gyhhj7pAcdT_NZ^5aZERvF5nZhIuZ1Z@)El;9EOUF671m2<s@ZZgqfQ)f_C@GsX87#&+NZtXzNJqyAjPxI}I=H7Ai{4e#2}|S@T0MN% zgc1^nzQdMA{tiRovm4wVv|U%eJGx~T=|!|WV1Y(T`>o{&RifghapVUT9=za{4wgl9~FJ>DEkLHL2+_RJn{BzcXm;j-)&Xawwc zy*SMa&gC>~JIaxlXOJ}hYl)tt8rE+seQ`mO(ek8%dHJiIc23Gwu%OfyD=G$3) zSKk6A+36q2>Te%0yL#`uLv{e?hpYOHap;w4f(=Ud{fgw5iMIu(7I-ro-jT{0t|#AL z+ncT%I_vGi*YAxD>v3w6-C}X%c;o)d(zq8_nHyjux_y6jM3KzHINOCVuxPfsr=Hfl zeDC-@^4lnGu^T1uYWMdwMbm`dH3u;xq1xcN@!z?5W(J}UZ4a8Kqo#RPusD75`QY>) z$tl89K|Fs|2a&k29S)AuIQk65T;r|g!I{{^WIA>Pl5(Ahs||G!mGoaQTud;H|FGJLgR`2h#u`6Yu45~< z5h1(%1yi!gY*5>8`C9C6t0@mcTueVb{Lo2^5uZVL7o#e*Y>T+xHvt+Vgfr#}fl+eD z`3rl)zhgE&pB|llbzPNf`j#8A#J9BMyl5>DN(Kz7UgNWPPq*znmQX_}h!5{H4mPtv z0SwI>+iA8MDW4>{1|P=>6nW=XdPH+^Ak=?9>W?`+2Fqv>L3lSYd>4o$Lf0(AjOU?$v83t-R}f=8NDhuGS+ zH31(km%vmh9^%T1}QK0an=W?e~+ys>;iV=Ndc^M>yVx`_enTALFl;Tprr}E8A9VYmtIe z0&k44JWASwr@YZ$n2e}R93YDu3&pFe8V+$yKmX7HIPu07VyLX0ANT16BYudku+z$z zoP{zTL6Z59CKaonkmGVUbCn+TJVbu3(8i&=P_R$`(fMOga$n||$`Tu>t*y{4uPnXo zP2BwuhsesJmXi*zpaScXblVn9(bSZ01Uj#C8P=@szcuDPGhF0){OfHp(wOy)+NH8A zhG_UqhDNswdzXjKrR403W`!>lZn{nG()|GnD&CwN|D|B#zetuYRCW%CFpd%J95(%S z-^VqPZ&|}IFVE3-Bc=QrT=XBA?^vp!tAACXhxKA-M01+%htqSOW1+5obXTFQ-Yp%r zq_2Z5L>#H-B#qvl^O9(xBzO-NTFG7;gZkbUjRvT&5ccDq z{|E)lRlJG&hT2`jywMLIEIR@b$5fWQWob)?&0H@J2LwD@@MEl?PeOX0z%u$+)*2lJ ze5Iy7fQ3@IpP#;enUHx&T9xab?lL4nha2asM`Ig464y5qQBPZHPeFf?FxSHP5@mj@ zP4#=}8d*E%T@#7_?vTH*lKwRpE0bV;)n7JtRzGL&FTNXxxo5>&6LdcOY@u&ENoHV} zr1Q0sNq~HXk1D6y0{@89QU;b6`p8^3@gci7J<WDoIwwL_)#wGFXH-pZ+VtNC*5fa*6Tyan<`(HRIuL8eJ@%U>YX(>5aN4&{ zoKcdMjrWI}e;SXk&`bBf;L1510Pp6@XF%{Tj_YzF;^Pq>qDgW~L6&$^Q*Zipy7*+? zTL-L!o3d_PFS*w#o^hdTD(TAQnN}@xYUXXS2gESC+Ag=#dEa^FSLLZ`2r&$7xAhsM zddO(^eA$B4+QBa1R-2~PU$oFAu{s!tV;z6#41;y##)+%-osMCm=8pEE_V#X_kUOr zq^&8O9T9n$qcNYdx4bVl(Q4(_?!o_U&wD1qx8d9D#;=I~DJHW0b{)puo>Cjyb}AP!$#!@SQ+jAn8~a%(;P5B>Ugh!Z8f@yqO(5>gWyWtR#>tT0N$ z=s;dH@mR;(=;bBIb|=xg{TSW6H=|vfA{$|AY4KSbpEfR0kzB`L&JKRQx4Vwp-dogG z?J1|LCYb!uGdY<}ef5=!Ddar{=MmffZT~g~^^Kz|@LlQW0=fiHtQef~JBHxni|Zg@ z3J}P0M&?I0$hVf4E5e5s%(b+ryZ-GhF>Dk_7zaL1Ej!d593|x_HQ;(t(EK$_{h=~q zIcdy6R~$3emMuEswoEG`Tks6=!~5lVt>0}n+7i>g0z}sz>jW27=7h}6vRi`lNpjij zHPysi*P*O8qZz4m_dxfjpYx~BWk>%~hio?pZC-Pn%fmUdwU0U?CC^TCvoy1#>I%QD9nNuj-YgA}ycXcST5}wVfU#0lwSg=*)ep@1KjGBia1#(Rc zGFSb^rB)Ci;HpxV4A*o`OUjo)O|pq!q@VJMbzT|=yD0te?#DEG3!U?h;2+AAeY7_Z zc*)B;bq7{(sOE>1m!1+k&)BzMemrmYyKoN1X6g@}!n>*Z|km+MoTM>`rsMkWJ1FF(~RdHO>u=WBEa*{8~L z^RDG?ybP@7g^|*34bbuUf&f?If;}asL{rg$RZMdO#x1-Bnd`N=X%4Y6$w{*L)OQXC zG9-N02M;Y;32J-65_i?>rS7lXZr7M-^SWgUhDZRPU7DXEjnLH8x1RB?ac5lF-1G8d zSO}(joH)OWyK-^w?;ZLtNLUHY%82sOerg1T-Kd3eS_=#xcmP7FLR52=Yzwl-(TUc+ zuGi}`X2&*zpUZHft4(JpMe$y@?dP+O&nDG@s#UjjE+Evh@#3e_vig{vMkcw2+AM}628{UHb#M}%c8$?U*T`U!sOjmxWl=TtZ*$PGmbm})+|^+W5ftJG*^9A?b89jqlJk8h2< z0WPa0R~U@FG-my2wUjBK%OyUr-li&?0I2}SgRp>wujEYdm|3yFR{ zb=GgqrgnXEHbpa_r-_c6HXYIlm&+oRnKd%}T$db2E~vGJyM_-xhR*u-`+-@F*j%u)DURrp}ou$^DXi@lX-S6D;-(d2GV zSLel0`CH8W+7BG5m07<9-TpezKFqqQy|9~olRx&l;+h2+(Lhd~wN>W3C0(OXcWgcL zlx>CgA3I1AQ&yjWEe~BSe%emAc z?qM_jk(|FL-qLR_YKVHGM)~ravL*~Mr#0Z1eFqn^BdpwMxi6ar@`qFiydI$c`!lzT z+D(zFe8I{|M*Lk!>(S2G(v}qSgT#vIM^{L!jS-eb9WO0$973*+Bp7V4IDhu1_B54e&F&|Ft4z8%yI4Pnn;nxtMphzmX-C^Af zJi6yorh_*s7acpfg+FdPnR&d$sjHISg0#-gt`A$u7GvhuxO^VQc|K<^>kEbj9^(SIa}TjvHvkA6ls2=lZ5$*FNil& zXI-|;>V5qK8FX;u3LG-Oo5H&May2Y0r=+s#zo{T$04t->q2nEknAa-kDO<4{=clW# zg-s&)1{^5q@%DJnvhp2H#2e$`lE42*B4oDoYG%9n&)eDD7N4{WuL6hXCL}*5*q%3_ zM2>|ILH*X}uDNTe^Q3~B-$s3Lt?j70M=QmSzU79Q+cjF4h#H!#Oe1-(^vLdfqw^Qm zh|5mbJDaf`@fN`54ph9iW4Pg{W&dEj`miyxdT0#r$(!tAxEUd~l8G5)b9A$cJ%;-6 zJ=XwGq-ROr=o&97h`>%tpN(YS#kA!xs}zl;W|9B+w9^i$aYb{%%fYL0!Q(+^U5>;E zH(~wT#o_)*tXaMeSt8OB+%|Poizx@ZDhfl)cOEZM&5c>{MBTGP@YI1YtLy=wVL5%e z7kUBd0{f@;9vD?L)AjK4ocr{b5E1$oM8S8Jb7F2B;U)fxH^}A;*ObAuwQabiTxpmw z3s%+Zzh_lJrz-ZS=E)s*(aP%~5nvhd`_qfD4Q{t2tia`G*qafHOM!MTMbkg_NSY8} zEdwM$nY)8rPm$7vl(+b=<_?80qzZ9d>J=Z~+RG&=#hZS_hrP(~$oafgC;US5p-NjtXk_K( zIr=@xW`@cmyRVi_FETFE7VbgH2K9CB=sW2ejsGJl`rDoK>N7}VyF7v7Kh}kpA}K>- zMn$%d0DOI|mN(9{6U(00K#_6&VU-Vu*0pj3lZLK5o#8wKrIKLKuMjKYUiv*qwP8jP zd9=2qhl>Jh$y7!VjKiG}_n;=Vs$unp$Oaovy&GRBf_s$+8<3~lg=kf4@X3A}k(V*b z&H_T%`)WU(N|U?eTF+}m7Jgq8%m^lgWzM?n@zDR3T~uRrnO6s8SOTH|$mKFNeR=b9 zJ_E+IuutXuXG53IbtH%YJ%EoTqoMt_G5`C7RrCouxezhLpOLT{KHBAeFuAcU^jtjX zOJzgi@(1eE1S>%myMoW8ndsO1DyEwa`l7A8k*O@OjDP{&D`Qq&#HXcj?BM72F0Sk` zNPF!}^QOn!n5QpsZMg7%F z`@K&V!!iU0IW@QWilblyQYZDQQ{s4!CMS3@7rO2*tG*mv;>6OL0Y2BGP zQ@lagFOj}o|EwwIU#Lr(gdh6PE8loD&E3dNDZ9h|?FyTSJPt_eC%WBBS(C1a?U0;4 zE}a?Cu8HGRM)WBhu>YkUE^Nn)xFf>W3%kCB8h{Lw4BHG81oap9@byBU+%R3-lQ?cp z69PWDjs>zbWwede&jurBwrQ$1Y2HW?8}`6UjKyy;&S5oU1Cfkdtk3wD(HXt{JI&M= zV85=_ka%kq@w%JUuNR2I_3ys&$cwTP+kqvg)Q8Y{Re%(m*|0LUq>{B?zcKscV`$sZDB{3y+e6Ml{9k{cDD%)d(A5Y9CXrgr6 z(Sb$FttV#Z;ws#fJstCZE%hYVnMSR9qd>RGG@wX}=fGUo@pSs_T$7cZ>G#>Xn&a-` zao^{{dF~IT@hxcsMpeJLOEbE)X!0Z3_)y_&b^yB)mwzOx=Xhk>DDJk zUXW2mmw>P+MXG*o(H=#*4Y}G_^{PVpD-E$skvpm~#+0^eo=FmLsp%=lj6-9PF-sGh zXBNokXfs5H+%N$AZt@k-V1m4#=ryn_mhMj!gxAWS_=F5)8))&ar}TPaJ)cT@-GOzu z7>K`Rd;(Nv%7^`eJ6~!Wk2oDZ)$Krx!7>3v?eJbwO{uE9InhO#KIysu^7Q}RJzkF6 zvf}<$=Qi@Ru0)u-Kr-q{m36$yZ|4I|VW5O((0~jOIxEzt^`M@uYN%M=fSHgOlAW~g zT#EgPCN~AU$MR?OT6ouYvF6U(`dxJ@=`yXuI_r*ymYMu~H{;vvgywS@W<%csv(qPr zHB=&E43&=7t#5%0YVMk0-PXXgBUghPI$CzqP|Fl!8df(A zmLB)XOa>O-o~=Xws4L~mu1iXH+6-W{$Sp^bz)w(GLxH28Jl z{3Q(euD7}2@-Ur~#v{43#`2Zl956F4Xnm2^d!>iM%9+e0HWJG&pRSN1T@rBh_$RS4 zft80tXtj{QME)vG36sC`JtFObuwB}51HWHKH~ZmdZGEzoI=Z^^u%Gj*`>TmpZ|&Z| zpBlx?81$^>CX|XLC7AurZAl%Q7>Qu?$GgX{xa9mJiH>)({}E}b5V5MGE8%{2GLe0K zll@6Ao>|nYDsLwZ5x+5H+g!og5tEDa;IKh?B`zSjQ%zRa^m!)IpV+x~eYP;7+e7qU zE5OJOnZ6V~ovFD!Zr&IS&r|y%7%jZiyF1v7GqvBUZ{ljK&%7%!^{QE44{I*8~Ug#FcQrD{)_ zP)2XE&a)Lih7lKAyE+TAgfNiZTRXzOug}Xv!sC2i?tdf+9du*@=2`AQa6~AT7_pTp zbc#G&JeA!}$vpYR;74Q2`kK2b{cVe9KQ(O7Vat?{DPCWy&W`qgQX-(dVgxq({N(b# z;f?B3II)1+T9O$Ems)DDR!bUyUK84euu;uN z!-Tr8g`{)cIt8WmG}|7vm7i3)tZSS6krH-<`T&%Ed=a0l^GG!8JZo1NUdSOQv)Cj|G80R5rRGn4@NR1+#3Em zH=i~|m&;(pnpNy(C-OO^86Npn#;gjxoL3_*#yu?g(}SPpi1M9A>98KQ0<;nTHHz~a z46)kqes>_`%nyRn%aX2O&+Z<}6Y57U5xN(oWSq>7#j_izMPv-Hs9h#RZ7DGr` z-)qWN|5}e*aMVDBsGf`{Naf8G-16sSc8&AuTWseR)(CiQeNwK2B!`Aa!m{U*Wwq0+g+;G#eZ6wotkbsoGFwguU`k|l-JNH zT-iBca-nR^T^)N<08~mBHYvf+ZFL>B(Lbb4uL-_sokO~L?^ym1J~HL5i==BJ3mW?= z`#1hLNRp+?@Y(>aBp~EiX;r-A&KPhiN0=k*w%@uej=AFxf(|sCc_-<_C==bjGDX1P z<1sYpa5HU}*Sb}2X6psZVRsg+E|-%_WAuv$|MZW1NLl2$ifQj@We0jb`{EjCa_1Qe z(7Xz&$Iz^uBwcLtT{k48-blAhs{Ewhyb2W-RN*~$g~xSo3d8weCk=XhDr}_|rc*-G zk(8Oz>^tMN5pUe$Tg6h%d4U;LR26zDA-L5C=BPZ8508{;c8AhNgM0#ZtJ>E3O0B;D zW(<;>;A2famJFs)ny?`J)9=w@d3x%WSJQ1_?E zgKNBY0MKNxkVCfjwVz$XgERVa?~{opar+0+L`19OGc9Lr3;Xezn7-enfLo*aU=k8?-x?(;E79ER zf|)81kBlU>jz&OsbG$*ewlgMARgHh`PeR$V5MDi)z<|I&T*k6BQhcSu{(9#a1*gjz z1}h#zVm?X5@loT%tt65a;jMkC4k6fu$xy_iZQ_u$-~-F1($F>y~h#WSPy%9-b$=GLEU*NL5gejOkX&*2$(QHD!L{e$p;a5#t^+9U*Yv(EX)Ge$u)k{Xu=Mp* z)Y!1iXey)%YobL2H{in*VXdx&-a)u6V0Zk8s{D=xC)UIg5zZ;O?v5r=tjB3 zJC(HqN%VPdzOdHC+drX*9WHUQroZ$Y5Q)Q$^m}z|GJN-*+xm+c2o@;bor>^r`#wKy zVKO2t&_#r_@}^|~yG}h@GSuU_^%Z!o%v%8}QPOoP_FLqqW_>n0!_g7TSawEFDd6vI_NX1sbf-6zhZXD)f3)r%E z2HXxmN~o`d1`#5(EwX@PT}?u00o=21oO3gyWo6@pOd+2|HH<_Z$DrRE5bQ`x`&Q=u zI7@X2rY|L43yy5dt!P{3@%l}P|5M$$|1;h9aeUn#S?Mk%(j}#&mc(x1D!0R~h@2uZ zI$&2+y3|@5E{A2`?n^}yNo$>$^I^k6NW&f-5OO{iGd0YnksV@R`+nWuKcVZ#>-WzO zpTpzv`8?k5*X#3oVxlls{70X!Cu#Y4Z0QY1k)%H4Ha!}(U7Q!T3Gp>EfLZ7#SJTsm zBf;y*Qr6W+XL%MH#vjM-toJ?`_dIlM*p&TJRjU6BV(weLrw*T4tb984=_tig)1}RL zs`Fr*MNUT;gJ~b(+0psSd8eNGssEAVrk(Ki+e(^jT^A0j@@0wp6z?rBY5Z;tS6mUD zmOcpYmrt9$jW+e~*cs?>iZhTB#J#|v)&;xp$ke!3C2OS{MR!@vy73-Y{)6xLIX5NZ z+5alph0PYK3U^-3zF)NP>5XWI4a#ZKlA)_-0H8hvEqonRf8E-TH#k5Q*ayd2wJ93C z_GrrOC_&fy@8V4zrI3y3nx+|7=d+KO_+DZA_YVnHW2fij^sUv8GHbCGk*NXN+m)Q@ zyWfoLvkYHNHDK)BXr*}~`*Wy{>9o3#I9dG#Vo$w~s!|>M_4hbVWUX^`rkIsB z7E)yWuQ4{AVX-mZce;L}HNr>H5OMF=j8LJgYm{~#1EcrZWOG*FK60EoAr&$TaEu}qYrl;u3fvJRekX)`wQdH5>Pbatbru$cw9Bl`0 zDbMdA9k`;b#eA3%8Y>>460U9w@vAAU4vgXYWEwD;{-QX5X=k%(G3g+PQHk^7FpD)YAU zKsc9V7q@?ucL!GSTK%cR?V*T1L>-{%TE-l~6C=lPKFbn)&>!c9A%fwvc$X?1WDI#4 z^VS*7|H0X#{;D0=aIGb6Lx%R^eDRkfNVmRSMh>yr2AT2-{+kYWCs1BJ1eRRDJ1()p z`M@2X_HvOvyn>S8ns*33{JDaPlMCF5PRH{cUG!%~g09LMT;DzLsKl-L8zH1BU+>f; zE zVYHlFAz!;>Zn+7Yk{u*;>nF!H6Yvdn14d3fBs_JK2y?4iL4qpsI^ay8&&s0q2WQ~$ zU)l&9X--)+*Y`3P=)7)ZU+WOE;Q!bjD==dg8x+(Eji0e~UVGy}5;JCY)b}Fb&Jb_6 zJ~ztrt=G|eC~L}Feoe`upM-_QBE6|s8T9hfH)u8=_pbSTP=Y}Hb^fHZSsJ`>TaK{! zX#5GFpjvT%X@++){CmRDn4Qe|I`IqCC!mpOhHnmvA4ELArQKNq=f@+Ika#ew4=daneWox_o26-6S-Ff)urcHnBq^Q% zS7;>@3v=lluznwK@8XZ5^OxV9cYU+N63yaomI*%~F_q;mCr{&<29)fD63&kyt8M->RLT*C2@Gf(^#<~gelz498U;nF|O1O zsT#IW-+#{C>&JmjvGSxvzJzs)5I7a2>L{LQWwR!2jvw}+8bZo6z^zz}+eQHygK1|? z{FMTC%M+&rffQF`UQAmkF^o#JsS*zj8{;FCXxRh zQKqwP5$F`O&G!A7Jh=hfHTx*1K?>h)a1m*p1QWU-vZEazvC zF|W{@=r)ICmz6U7+LhcKEyttGqUxI*grasvw!6y=8{BAdyjrY_xUkQ&gO6+lM7rfKT=}^ zmNk$2Nk^n?D_nuIqVi+5klXa)oXaMMaOqm~sxX|#l-XD51KF@{D9|(?c-*OC$rbJ! zfOX?vSJM>CJX~!~7kr=7*I_MebgZNl`g>xBLOL#0LiO31-q@5wYp!eHwafT%yE+%J z$Sxg=Fu#zWs24~SHUaXF7)2t?K&L@qt9jiDiiZxRkq`rw{usy#_1%+niFG`pd4kh<@?aVoUq0%Z$-?2Kzl zDXgrIIe~;#0K?+$d(La}E@n7(+Y6S1sdCT+v{FRQY!-80z>EZ~bjox*b>x@EHg<2c zqeAjJq@E9vSTQ6@w6}ORi}31oZDLUraZ4ScR1zF$XQ9&;TJ?rAw6&=CZ@h3nUq)H~ywLtPoVow#sS;K`{U6md{8In` literal 0 HcmV?d00001 diff --git a/resources/projects/coolstore/src/main/resources/META-INF/resources/app/imgs/Quarkus twill cap.jpg b/resources/projects/coolstore/src/main/resources/META-INF/resources/app/imgs/Quarkus twill cap.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7fccefc0815583e14f6601e395b955316022bb0b GIT binary patch literal 112308 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